summaryrefslogtreecommitdiffstats
path: root/docs/release/src
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src')
-rw-r--r--docs/release/src/devices/cpu/m68000/m68kcpu.cpp2764
-rw-r--r--docs/release/src/emu/digfx.h236
-rw-r--r--docs/release/src/emu/emuopts.cpp430
-rw-r--r--docs/release/src/emu/emuopts.h462
-rw-r--r--docs/release/src/emu/gamedrv.h198
-rw-r--r--docs/release/src/emu/validity.cpp2075
-rw-r--r--docs/release/src/emu/video.cpp1365
-rw-r--r--docs/release/src/emu/video.h208
-rw-r--r--docs/release/src/frontend/mame/audit.cpp639
-rw-r--r--docs/release/src/frontend/mame/audit.h182
-rw-r--r--docs/release/src/frontend/mame/info.cpp1640
-rw-r--r--docs/release/src/frontend/mame/mameopts.cpp692
-rw-r--r--docs/release/src/frontend/mame/mameopts.h91
-rw-r--r--docs/release/src/hbmame/bus/neogeo/banked_cart.cpp109
-rw-r--r--docs/release/src/hbmame/bus/neogeo/banked_cart.h40
-rw-r--r--docs/release/src/hbmame/bus/neogeo/prot.cpp3131
-rw-r--r--docs/release/src/hbmame/bus/neogeo/prot.h417
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp221
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h130
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp131
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/dial.h58
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp113
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h57
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp205
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h81
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp171
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h61
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp171
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h75
-rw-r--r--docs/release/src/hbmame/drivers/1942.cpp126
-rw-r--r--docs/release/src/hbmame/drivers/1943.cpp63
-rw-r--r--docs/release/src/hbmame/drivers/arkanoid.cpp73
-rw-r--r--docs/release/src/hbmame/drivers/asteroid.cpp145
-rw-r--r--docs/release/src/hbmame/drivers/astrocde.cpp29
-rw-r--r--docs/release/src/hbmame/drivers/astrof.cpp19
-rw-r--r--docs/release/src/hbmame/drivers/asuka.cpp27
-rw-r--r--docs/release/src/hbmame/drivers/atari_s1.cpp20
-rw-r--r--docs/release/src/hbmame/drivers/atarisy1.cpp33
-rw-r--r--docs/release/src/hbmame/drivers/bagman.cpp53
-rw-r--r--docs/release/src/hbmame/drivers/blktiger.cpp41
-rw-r--r--docs/release/src/hbmame/drivers/bombjack.cpp96
-rw-r--r--docs/release/src/hbmame/drivers/btime.cpp106
-rw-r--r--docs/release/src/hbmame/drivers/bublbobl.cpp289
-rw-r--r--docs/release/src/hbmame/drivers/bwidow.cpp38
-rw-r--r--docs/release/src/hbmame/drivers/cave.cpp93
-rw-r--r--docs/release/src/hbmame/drivers/cball.cpp37
-rw-r--r--docs/release/src/hbmame/drivers/cclimber.cpp182
-rw-r--r--docs/release/src/hbmame/drivers/centiped.cpp165
-rw-r--r--docs/release/src/hbmame/drivers/cinemat.cpp47
-rw-r--r--docs/release/src/hbmame/drivers/commando.cpp78
-rw-r--r--docs/release/src/hbmame/drivers/cps1.cpp12352
-rw-r--r--docs/release/src/hbmame/drivers/cps1mis.cpp6753
-rw-r--r--docs/release/src/hbmame/drivers/cps2.cpp1975
-rw-r--r--docs/release/src/hbmame/drivers/cps3.cpp1305
-rw-r--r--docs/release/src/hbmame/drivers/dec0.cpp106
-rw-r--r--docs/release/src/hbmame/drivers/dkong.cpp284
-rw-r--r--docs/release/src/hbmame/drivers/docastle.cpp32
-rw-r--r--docs/release/src/hbmame/drivers/dotrikun.cpp208
-rw-r--r--docs/release/src/hbmame/drivers/ertictac.cpp53
-rw-r--r--docs/release/src/hbmame/drivers/exerion.cpp66
-rw-r--r--docs/release/src/hbmame/drivers/exidy.cpp71
-rw-r--r--docs/release/src/hbmame/drivers/fcrash.cpp3156
-rw-r--r--docs/release/src/hbmame/drivers/flower.cpp964
-rw-r--r--docs/release/src/hbmame/drivers/galaga.cpp1105
-rw-r--r--docs/release/src/hbmame/drivers/galaxian.cpp856
-rw-r--r--docs/release/src/hbmame/drivers/gauntlet.cpp139
-rw-r--r--docs/release/src/hbmame/drivers/gottlieb.cpp99
-rw-r--r--docs/release/src/hbmame/drivers/ir.cpp547
-rw-r--r--docs/release/src/hbmame/drivers/itech8.cpp22
-rw-r--r--docs/release/src/hbmame/drivers/jrpacman.cpp1212
-rw-r--r--docs/release/src/hbmame/drivers/kaneko16.cpp66
-rw-r--r--docs/release/src/hbmame/drivers/kof2000.cpp1204
-rw-r--r--docs/release/src/hbmame/drivers/kof2001.cpp2260
-rw-r--r--docs/release/src/hbmame/drivers/kof2002.cpp3717
-rw-r--r--docs/release/src/hbmame/drivers/kof2003.cpp753
-rw-r--r--docs/release/src/hbmame/drivers/kof94.cpp476
-rw-r--r--docs/release/src/hbmame/drivers/kof95.cpp369
-rw-r--r--docs/release/src/hbmame/drivers/kof96.cpp1574
-rw-r--r--docs/release/src/hbmame/drivers/kof97.cpp2249
-rw-r--r--docs/release/src/hbmame/drivers/kof98.cpp4028
-rw-r--r--docs/release/src/hbmame/drivers/kof99.cpp3030
-rw-r--r--docs/release/src/hbmame/drivers/kyugo.cpp46
-rw-r--r--docs/release/src/hbmame/drivers/m52.cpp39
-rw-r--r--docs/release/src/hbmame/drivers/maketrax.cpp824
-rw-r--r--docs/release/src/hbmame/drivers/mappy.cpp202
-rw-r--r--docs/release/src/hbmame/drivers/marinedt.cpp699
-rw-r--r--docs/release/src/hbmame/drivers/mario.cpp32
-rw-r--r--docs/release/src/hbmame/drivers/mcr.cpp114
-rw-r--r--docs/release/src/hbmame/drivers/mcr3.cpp26
-rw-r--r--docs/release/src/hbmame/drivers/mgd2.cpp1189
-rw-r--r--docs/release/src/hbmame/drivers/midtunit.cpp323
-rw-r--r--docs/release/src/hbmame/drivers/midwunit.cpp173
-rw-r--r--docs/release/src/hbmame/drivers/midyunit.cpp36
-rw-r--r--docs/release/src/hbmame/drivers/mitchell.cpp24
-rw-r--r--docs/release/src/hbmame/drivers/mmagic.cpp346
-rw-r--r--docs/release/src/hbmame/drivers/model2.cpp53
-rw-r--r--docs/release/src/hbmame/drivers/monaco.cpp2250
-rw-r--r--docs/release/src/hbmame/drivers/mrdo.cpp166
-rw-r--r--docs/release/src/hbmame/drivers/mslug.cpp2747
-rw-r--r--docs/release/src/hbmame/drivers/mspacman.cpp2560
-rw-r--r--docs/release/src/hbmame/drivers/multipac.cpp1940
-rw-r--r--docs/release/src/hbmame/drivers/nemesis.cpp134
-rw-r--r--docs/release/src/hbmame/drivers/neogeo.cpp1391
-rw-r--r--docs/release/src/hbmame/drivers/neogeo0.cpp144
-rw-r--r--docs/release/src/hbmame/drivers/neogeo1.cpp2986
-rw-r--r--docs/release/src/hbmame/drivers/neogeo_noslot.cpp9212
-rw-r--r--docs/release/src/hbmame/drivers/neogeohb.cpp1855
-rw-r--r--docs/release/src/hbmame/drivers/ngdoubledr.cpp285
-rw-r--r--docs/release/src/hbmame/drivers/nggaroup.cpp322
-rw-r--r--docs/release/src/hbmame/drivers/ngkofmisc.cpp947
-rw-r--r--docs/release/src/hbmame/drivers/nglastblade.cpp713
-rw-r--r--docs/release/src/hbmame/drivers/ngrbff.cpp667
-rw-r--r--docs/release/src/hbmame/drivers/ngrotd.cpp591
-rw-r--r--docs/release/src/hbmame/drivers/ngsamsho.cpp1850
-rw-r--r--docs/release/src/hbmame/drivers/ngsengoku.cpp333
-rw-r--r--docs/release/src/hbmame/drivers/ngsvc.cpp795
-rw-r--r--docs/release/src/hbmame/drivers/ngwh.cpp387
-rw-r--r--docs/release/src/hbmame/drivers/nmk16.cpp65
-rw-r--r--docs/release/src/hbmame/drivers/pacland.cpp106
-rw-r--r--docs/release/src/hbmame/drivers/pacman.cpp3676
-rw-r--r--docs/release/src/hbmame/drivers/pcktgal.cpp53
-rw-r--r--docs/release/src/hbmame/drivers/pengo.cpp148
-rw-r--r--docs/release/src/hbmame/drivers/pgm.cpp2194
-rw-r--r--docs/release/src/hbmame/drivers/phoenix.cpp56
-rw-r--r--docs/release/src/hbmame/drivers/playch10.cpp237
-rw-r--r--docs/release/src/hbmame/drivers/powerins.cpp45
-rw-r--r--docs/release/src/hbmame/drivers/psikyosh.cpp54
-rw-r--r--docs/release/src/hbmame/drivers/rallyx.cpp97
-rw-r--r--docs/release/src/hbmame/drivers/rastan.cpp155
-rw-r--r--docs/release/src/hbmame/drivers/retofinv.cpp40
-rw-r--r--docs/release/src/hbmame/drivers/schaser.cpp602
-rw-r--r--docs/release/src/hbmame/drivers/segac2.cpp15
-rw-r--r--docs/release/src/hbmame/drivers/segag80r.cpp38
-rw-r--r--docs/release/src/hbmame/drivers/segaorun.cpp220
-rw-r--r--docs/release/src/hbmame/drivers/segas16b.cpp34
-rw-r--r--docs/release/src/hbmame/drivers/shaolins.cpp27
-rw-r--r--docs/release/src/hbmame/drivers/simple_st0016.cpp11
-rw-r--r--docs/release/src/hbmame/drivers/snk6502.cpp25
-rw-r--r--docs/release/src/hbmame/drivers/spacmiss.cpp486
-rw-r--r--docs/release/src/hbmame/drivers/system1.cpp70
-rw-r--r--docs/release/src/hbmame/drivers/system16.cpp28
-rw-r--r--docs/release/src/hbmame/drivers/taito_b.cpp21
-rw-r--r--docs/release/src/hbmame/drivers/taito_f2.cpp85
-rw-r--r--docs/release/src/hbmame/drivers/taito_f3.cpp223
-rw-r--r--docs/release/src/hbmame/drivers/taito_l.cpp72
-rw-r--r--docs/release/src/hbmame/drivers/tecmo.cpp73
-rw-r--r--docs/release/src/hbmame/drivers/tecmo16.cpp32
-rw-r--r--docs/release/src/hbmame/drivers/tehkanwc.cpp123
-rw-r--r--docs/release/src/hbmame/drivers/tempest.cpp782
-rw-r--r--docs/release/src/hbmame/drivers/terracre.cpp50
-rw-r--r--docs/release/src/hbmame/drivers/timelimit.cpp107
-rw-r--r--docs/release/src/hbmame/drivers/tmnt.cpp33
-rw-r--r--docs/release/src/hbmame/drivers/toaplan2.cpp91
-rw-r--r--docs/release/src/hbmame/drivers/trackfld.cpp75
-rw-r--r--docs/release/src/hbmame/drivers/twincobr.cpp96
-rw-r--r--docs/release/src/hbmame/drivers/volfied.cpp30
-rw-r--r--docs/release/src/hbmame/drivers/vsnes.cpp34
-rw-r--r--docs/release/src/hbmame/drivers/williams.cpp130
-rw-r--r--docs/release/src/hbmame/drivers/yiear.cpp27
-rw-r--r--docs/release/src/hbmame/hbmame.cpp24
-rw-r--r--docs/release/src/hbmame/hbmame.lst2994
-rw-r--r--docs/release/src/hbmame/hbmame.mak62
-rw-r--r--docs/release/src/hbmame/includes/cps1.h483
-rw-r--r--docs/release/src/hbmame/includes/galaga.h21
-rw-r--r--docs/release/src/hbmame/includes/galaxian.h345
-rw-r--r--docs/release/src/hbmame/includes/neogeo.h508
-rw-r--r--docs/release/src/hbmame/includes/pacman.h226
-rw-r--r--docs/release/src/hbmame/layout/monaco.lay92
-rw-r--r--docs/release/src/hbmame/layout/neogeo.lay40
-rw-r--r--docs/release/src/hbmame/layout/spacmissx.lay30
-rw-r--r--docs/release/src/hbmame/machine/arkanoid.cpp634
-rw-r--r--docs/release/src/hbmame/machine/ng_memcard.cpp83
-rw-r--r--docs/release/src/hbmame/machine/ng_memcard.h65
-rw-r--r--docs/release/src/hbmame/osd/windows/hbmame.man10
-rw-r--r--docs/release/src/hbmame/osd/windows/hbmame.rc49
-rw-r--r--docs/release/src/hbmame/osd/windows/hbmame/hbmame.icobin0 -> 4286 bytes
-rw-r--r--docs/release/src/hbmame/osd/windows/hbmame/hbmame.man15
-rw-r--r--docs/release/src/hbmame/osd/windows/hbmame/hbmame.rc11
-rw-r--r--docs/release/src/hbmame/video/cps1.cpp2930
-rw-r--r--docs/release/src/hbmame/video/galaxian.cpp87
-rw-r--r--docs/release/src/hbmame/video/neogeo.cpp279
-rw-r--r--docs/release/src/hbmame/video/neogeo_spr.cpp644
-rw-r--r--docs/release/src/hbmame/video/neogeo_spr.h87
-rw-r--r--docs/release/src/hbmame/video/pacman.cpp360
-rw-r--r--docs/release/src/mame/drivers/jrpacman.cpp446
-rw-r--r--docs/release/src/osd/modules/render/drawd3d.cpp2749
-rw-r--r--docs/release/src/osd/winui/bitmask.cpp146
-rw-r--r--docs/release/src/osd/winui/bitmask.h33
-rw-r--r--docs/release/src/osd/winui/columnedit.cpp439
-rw-r--r--docs/release/src/osd/winui/columnedit.h15
-rw-r--r--docs/release/src/osd/winui/datamap.cpp782
-rw-r--r--docs/release/src/osd/winui/datamap.h73
-rw-r--r--docs/release/src/osd/winui/dialogs.cpp864
-rw-r--r--docs/release/src/osd/winui/dialogs.h18
-rw-r--r--docs/release/src/osd/winui/dijoystick.cpp629
-rw-r--r--docs/release/src/osd/winui/dijoystick.h63
-rw-r--r--docs/release/src/osd/winui/directdraw.cpp382
-rw-r--r--docs/release/src/osd/winui/directdraw.h36
-rw-r--r--docs/release/src/osd/winui/directinput.cpp149
-rw-r--r--docs/release/src/osd/winui/directinput.h23
-rw-r--r--docs/release/src/osd/winui/directories.cpp753
-rw-r--r--docs/release/src/osd/winui/directories.h72
-rw-r--r--docs/release/src/osd/winui/dirwatch.cpp362
-rw-r--r--docs/release/src/osd/winui/dirwatch.h13
-rw-r--r--docs/release/src/osd/winui/dxdecode.cpp194
-rw-r--r--docs/release/src/osd/winui/dxdecode.h13
-rw-r--r--docs/release/src/osd/winui/game_opts.h166
-rw-r--r--docs/release/src/osd/winui/hbmame.rc20
-rw-r--r--docs/release/src/osd/winui/hbmameui.rc1457
-rw-r--r--docs/release/src/osd/winui/help.cpp107
-rw-r--r--docs/release/src/osd/winui/help.h47
-rw-r--r--docs/release/src/osd/winui/help/cntx_help.txt220
-rw-r--r--docs/release/src/osd/winui/help/docs/Command Line Settings.htm1377
-rw-r--r--docs/release/src/osd/winui/help/docs/Mame License.htm57
-rw-r--r--docs/release/src/osd/winui/help/docs/Mame Statement of Purpose.htm79
-rw-r--r--docs/release/src/osd/winui/help/docs/whatsnew.txt511
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_art.htm139
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_changes.txt2132
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_credits.htm141
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_download.htm62
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_filemenu.htm625
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_help.htm86
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_installprocedures.htm176
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_optionsmenu.htm639
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_overview.htm529
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_playing.htm136
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_properties.htm1034
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_settings.htm96
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_support.htm739
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_systemreq.htm82
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_viewmenu.htm160
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_visual_elements.htm155
-rw-r--r--docs/release/src/osd/winui/help/html/mameui_whatsnew32.htm2058
-rw-r--r--docs/release/src/osd/winui/help/images/1.jpgbin0 -> 33410 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/2.jpgbin0 -> 30360 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/3.jpgbin0 -> 27190 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/4.jpgbin0 -> 22673 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/5.jpgbin0 -> 26135 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/6.jpgbin0 -> 27544 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/7.jpgbin0 -> 27304 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/8.jpgbin0 -> 20064 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/bkground.gifbin0 -> 22558 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/folder.gifbin0 -> 4741 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/int.jpgbin0 -> 72956 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/mame321.gifbin0 -> 917 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/statusbar.gifbin0 -> 1388 bytes
-rw-r--r--docs/release/src/osd/winui/help/images/toolbar.gifbin0 -> 1548 bytes
-rw-r--r--docs/release/src/osd/winui/help/mameui.hhc122
-rw-r--r--docs/release/src/osd/winui/help/mameui.hhk9
-rw-r--r--docs/release/src/osd/winui/help/mameui.hhp24
-rw-r--r--docs/release/src/osd/winui/help/mameui.hm135
-rw-r--r--docs/release/src/osd/winui/help/reshelp.h4
-rw-r--r--docs/release/src/osd/winui/help/stoplist.stp88
-rw-r--r--docs/release/src/osd/winui/helpids.cpp125
-rw-r--r--docs/release/src/osd/winui/history.cpp982
-rw-r--r--docs/release/src/osd/winui/history.h12
-rw-r--r--docs/release/src/osd/winui/layout.cpp265
-rw-r--r--docs/release/src/osd/winui/mameui.rc1467
-rw-r--r--docs/release/src/osd/winui/messui.rc1394
-rw-r--r--docs/release/src/osd/winui/mkhelp.cpp152
-rw-r--r--docs/release/src/osd/winui/mui_audit.cpp497
-rw-r--r--docs/release/src/osd/winui/mui_audit.h21
-rw-r--r--docs/release/src/osd/winui/mui_main.cpp22
-rw-r--r--docs/release/src/osd/winui/mui_opts.cpp2807
-rw-r--r--docs/release/src/osd/winui/mui_opts.h510
-rw-r--r--docs/release/src/osd/winui/mui_util.cpp760
-rw-r--r--docs/release/src/osd/winui/mui_util.h101
-rw-r--r--docs/release/src/osd/winui/newui.cpp3364
-rw-r--r--docs/release/src/osd/winui/newui.h38
-rw-r--r--docs/release/src/osd/winui/newuires.h64
-rw-r--r--docs/release/src/osd/winui/picker.cpp1681
-rw-r--r--docs/release/src/osd/winui/picker.h88
-rw-r--r--docs/release/src/osd/winui/properties.cpp3354
-rw-r--r--docs/release/src/osd/winui/properties.h58
-rw-r--r--docs/release/src/osd/winui/res/about.bmpbin0 -> 93054 bytes
-rw-r--r--docs/release/src/osd/winui/res/bkgnd16.bmpbin0 -> 5362 bytes
-rw-r--r--docs/release/src/osd/winui/res/bkground.bmpbin0 -> 10124 bytes
-rw-r--r--docs/release/src/osd/winui/res/checkmark.icobin0 -> 6518 bytes
-rw-r--r--docs/release/src/osd/winui/res/controller.icobin0 -> 2238 bytes
-rw-r--r--docs/release/src/osd/winui/res/cpu.icobin0 -> 6006 bytes
-rw-r--r--docs/release/src/osd/winui/res/custom.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/display.icobin0 -> 6518 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldavail.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/folder.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldmanu.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldopen.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldsrc.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldunav.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/foldyear.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/harddisk.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/hbmame.icobin0 -> 4286 bytes
-rw-r--r--docs/release/src/osd/winui/res/hbmameui.icobin0 -> 4286 bytes
-rw-r--r--docs/release/src/osd/winui/res/header_down.icobin0 -> 502 bytes
-rw-r--r--docs/release/src/osd/winui/res/header_up.icobin0 -> 502 bytes
-rw-r--r--docs/release/src/osd/winui/res/horz.icobin0 -> 3262 bytes
-rw-r--r--docs/release/src/osd/winui/res/icon_asc.icobin0 -> 4846 bytes
-rw-r--r--docs/release/src/osd/winui/res/icon_des.icobin0 -> 4846 bytes
-rw-r--r--docs/release/src/osd/winui/res/icon_snd.icobin0 -> 4846 bytes
-rw-r--r--docs/release/src/osd/winui/res/icon_sndn.icobin0 -> 4846 bytes
-rw-r--r--docs/release/src/osd/winui/res/joystick.icobin0 -> 6518 bytes
-rw-r--r--docs/release/src/osd/winui/res/keyboard.icobin0 -> 6518 bytes
-rw-r--r--docs/release/src/osd/winui/res/mameui.manifest10
-rw-r--r--docs/release/src/osd/winui/res/manufact.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/nonwork.icobin0 -> 1406 bytes
-rw-r--r--docs/release/src/osd/winui/res/samples.icobin0 -> 1406 bytes
-rw-r--r--docs/release/src/osd/winui/res/sound.icobin0 -> 6518 bytes
-rw-r--r--docs/release/src/osd/winui/res/source.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/splith.curbin0 -> 518 bytes
-rw-r--r--docs/release/src/osd/winui/res/toolbar.bmpbin0 -> 1198 bytes
-rw-r--r--docs/release/src/osd/winui/res/vert.icobin0 -> 3262 bytes
-rw-r--r--docs/release/src/osd/winui/res/win_clone.icobin0 -> 6006 bytes
-rw-r--r--docs/release/src/osd/winui/res/win_noro.icobin0 -> 2238 bytes
-rw-r--r--docs/release/src/osd/winui/res/win_redx.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/win_roms.icobin0 -> 6006 bytes
-rw-r--r--docs/release/src/osd/winui/res/win_unkn.icobin0 -> 2238 bytes
-rw-r--r--docs/release/src/osd/winui/res/working.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/res/year.icobin0 -> 3638 bytes
-rw-r--r--docs/release/src/osd/winui/resource.h453
-rw-r--r--docs/release/src/osd/winui/resource.hm122
-rw-r--r--docs/release/src/osd/winui/screenshot.cpp663
-rw-r--r--docs/release/src/osd/winui/screenshot.h26
-rw-r--r--docs/release/src/osd/winui/splitters.cpp379
-rw-r--r--docs/release/src/osd/winui/splitters.h81
-rw-r--r--docs/release/src/osd/winui/tabview.cpp335
-rw-r--r--docs/release/src/osd/winui/tabview.h44
-rw-r--r--docs/release/src/osd/winui/treeview.cpp2441
-rw-r--r--docs/release/src/osd/winui/treeview.h210
-rw-r--r--docs/release/src/osd/winui/winui.cpp6683
-rw-r--r--docs/release/src/osd/winui/winui.h110
-rw-r--r--docs/release/src/version.cpp22
330 files changed, 176997 insertions, 0 deletions
diff --git a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
new file mode 100644
index 00000000000..f73a10923c4
--- /dev/null
+++ b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
@@ -0,0 +1,2764 @@
+// license:BSD-3-Clause
+// copyright-holders:Karl Stenerud
+/* ======================================================================== */
+/* ========================= LICENSING & COPYRIGHT ======================== */
+/* ======================================================================== */
+
+#if 0
+static const char copyright_notice[] =
+"MUSASHI\n"
+"Version 4.95 (2012-02-19)\n"
+"A portable Motorola M68xxx/CPU32/ColdFire processor emulation engine.\n"
+"Copyright Karl Stenerud. All rights reserved.\n"
+;
+#endif
+
+
+/* ======================================================================== */
+/* ================================= NOTES ================================ */
+/* ======================================================================== */
+
+
+
+/* ======================================================================== */
+/* ================================ INCLUDES ============================== */
+/* ======================================================================== */
+
+#include "emu.h"
+#include "debugger.h"
+#include "m68kcpu.h"
+#include "m68kops.h"
+
+#include "m68kfpu.hxx"
+#include "m68kmmu.h"
+
+extern void m68040_fpu_op0(m68000_base_device *m68k);
+extern void m68040_fpu_op1(m68000_base_device *m68k);
+extern void m68881_mmu_ops(m68000_base_device *m68k);
+
+/* ======================================================================== */
+/* ================================= DATA ================================= */
+/* ======================================================================== */
+
+/* Used by shift & rotate instructions */
+const uint8_t m68ki_shift_8_table[65] =
+{
+ 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff
+};
+const uint16_t m68ki_shift_16_table[65] =
+{
+ 0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00,
+ 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff
+};
+const uint32_t m68ki_shift_32_table[65] =
+{
+ 0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000,
+ 0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000,
+ 0xfff00000, 0xfff80000, 0xfffc0000, 0xfffe0000, 0xffff0000, 0xffff8000,
+ 0xffffc000, 0xffffe000, 0xfffff000, 0xfffff800, 0xfffffc00, 0xfffffe00,
+ 0xffffff00, 0xffffff80, 0xffffffc0, 0xffffffe0, 0xfffffff0, 0xfffffff8,
+ 0xfffffffc, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
+};
+
+
+/* Number of clock cycles to use for exception processing.
+ * I used 4 for any vectors that are undocumented for processing times.
+ */
+const uint8_t m68ki_exception_cycle_table[7][256] =
+{
+ { /* 000 */
+ 40, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 34, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 34, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 34, /* 9: Trace */
+ 4, /* 10: 1010 */
+ 4, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 44, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 44, /* 24: Spurious Interrupt */
+ 44, /* 25: Level 1 Interrupt Autovector */
+ 44, /* 26: Level 2 Interrupt Autovector */
+ 44, /* 27: Level 3 Interrupt Autovector */
+ 44, /* 28: Level 4 Interrupt Autovector */
+ 44, /* 29: Level 5 Interrupt Autovector */
+ 44, /* 30: Level 6 Interrupt Autovector */
+ 44, /* 31: Level 7 Interrupt Autovector */
+ 34, /* 32: TRAP #0 */
+ 34, /* 33: TRAP #1 */
+ 34, /* 34: TRAP #2 */
+ 34, /* 35: TRAP #3 */
+ 34, /* 36: TRAP #4 */
+ 34, /* 37: TRAP #5 */
+ 34, /* 38: TRAP #6 */
+ 34, /* 39: TRAP #7 */
+ 34, /* 40: TRAP #8 */
+ 34, /* 41: TRAP #9 */
+ 34, /* 42: TRAP #10 */
+ 34, /* 43: TRAP #11 */
+ 34, /* 44: TRAP #12 */
+ 34, /* 45: TRAP #13 */
+ 34, /* 46: TRAP #14 */
+ 34, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* 010 */
+ 40, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 126, /* 2: Bus Error (unemulated) */
+ 126, /* 3: Address Error (unemulated) */
+ 38, /* 4: Illegal Instruction */
+ 44, /* 5: Divide by Zero */
+ 44, /* 6: CHK */
+ 34, /* 7: TRAPV */
+ 38, /* 8: Privilege Violation */
+ 38, /* 9: Trace */
+ 4, /* 10: 1010 */
+ 4, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 44, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 46, /* 24: Spurious Interrupt */
+ 46, /* 25: Level 1 Interrupt Autovector */
+ 46, /* 26: Level 2 Interrupt Autovector */
+ 46, /* 27: Level 3 Interrupt Autovector */
+ 46, /* 28: Level 4 Interrupt Autovector */
+ 46, /* 29: Level 5 Interrupt Autovector */
+ 46, /* 30: Level 6 Interrupt Autovector */
+ 46, /* 31: Level 7 Interrupt Autovector */
+ 38, /* 32: TRAP #0 */
+ 38, /* 33: TRAP #1 */
+ 38, /* 34: TRAP #2 */
+ 38, /* 35: TRAP #3 */
+ 38, /* 36: TRAP #4 */
+ 38, /* 37: TRAP #5 */
+ 38, /* 38: TRAP #6 */
+ 38, /* 39: TRAP #7 */
+ 38, /* 40: TRAP #8 */
+ 38, /* 41: TRAP #9 */
+ 38, /* 42: TRAP #10 */
+ 38, /* 43: TRAP #11 */
+ 38, /* 44: TRAP #12 */
+ 38, /* 45: TRAP #13 */
+ 38, /* 46: TRAP #14 */
+ 38, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* 020 */
+ 4, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 20, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 20, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 25, /* 9: Trace */
+ 20, /* 10: 1010 */
+ 20, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 30, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 30, /* 24: Spurious Interrupt */
+ 30, /* 25: Level 1 Interrupt Autovector */
+ 30, /* 26: Level 2 Interrupt Autovector */
+ 30, /* 27: Level 3 Interrupt Autovector */
+ 30, /* 28: Level 4 Interrupt Autovector */
+ 30, /* 29: Level 5 Interrupt Autovector */
+ 30, /* 30: Level 6 Interrupt Autovector */
+ 30, /* 31: Level 7 Interrupt Autovector */
+ 20, /* 32: TRAP #0 */
+ 20, /* 33: TRAP #1 */
+ 20, /* 34: TRAP #2 */
+ 20, /* 35: TRAP #3 */
+ 20, /* 36: TRAP #4 */
+ 20, /* 37: TRAP #5 */
+ 20, /* 38: TRAP #6 */
+ 20, /* 39: TRAP #7 */
+ 20, /* 40: TRAP #8 */
+ 20, /* 41: TRAP #9 */
+ 20, /* 42: TRAP #10 */
+ 20, /* 43: TRAP #11 */
+ 20, /* 44: TRAP #12 */
+ 20, /* 45: TRAP #13 */
+ 20, /* 46: TRAP #14 */
+ 20, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* 030 - not correct */
+ 4, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 20, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 20, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 25, /* 9: Trace */
+ 20, /* 10: 1010 */
+ 20, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 30, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 30, /* 24: Spurious Interrupt */
+ 30, /* 25: Level 1 Interrupt Autovector */
+ 30, /* 26: Level 2 Interrupt Autovector */
+ 30, /* 27: Level 3 Interrupt Autovector */
+ 30, /* 28: Level 4 Interrupt Autovector */
+ 30, /* 29: Level 5 Interrupt Autovector */
+ 30, /* 30: Level 6 Interrupt Autovector */
+ 30, /* 31: Level 7 Interrupt Autovector */
+ 20, /* 32: TRAP #0 */
+ 20, /* 33: TRAP #1 */
+ 20, /* 34: TRAP #2 */
+ 20, /* 35: TRAP #3 */
+ 20, /* 36: TRAP #4 */
+ 20, /* 37: TRAP #5 */
+ 20, /* 38: TRAP #6 */
+ 20, /* 39: TRAP #7 */
+ 20, /* 40: TRAP #8 */
+ 20, /* 41: TRAP #9 */
+ 20, /* 42: TRAP #10 */
+ 20, /* 43: TRAP #11 */
+ 20, /* 44: TRAP #12 */
+ 20, /* 45: TRAP #13 */
+ 20, /* 46: TRAP #14 */
+ 20, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* 040 */ // TODO: these values are not correct
+ 4, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 20, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 20, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 25, /* 9: Trace */
+ 20, /* 10: 1010 */
+ 20, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 30, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 30, /* 24: Spurious Interrupt */
+ 30, /* 25: Level 1 Interrupt Autovector */
+ 30, /* 26: Level 2 Interrupt Autovector */
+ 30, /* 27: Level 3 Interrupt Autovector */
+ 30, /* 28: Level 4 Interrupt Autovector */
+ 30, /* 29: Level 5 Interrupt Autovector */
+ 30, /* 30: Level 6 Interrupt Autovector */
+ 30, /* 31: Level 7 Interrupt Autovector */
+ 20, /* 32: TRAP #0 */
+ 20, /* 33: TRAP #1 */
+ 20, /* 34: TRAP #2 */
+ 20, /* 35: TRAP #3 */
+ 20, /* 36: TRAP #4 */
+ 20, /* 37: TRAP #5 */
+ 20, /* 38: TRAP #6 */
+ 20, /* 39: TRAP #7 */
+ 20, /* 40: TRAP #8 */
+ 20, /* 41: TRAP #9 */
+ 20, /* 42: TRAP #10 */
+ 20, /* 43: TRAP #11 */
+ 20, /* 44: TRAP #12 */
+ 20, /* 45: TRAP #13 */
+ 20, /* 46: TRAP #14 */
+ 20, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* CPU32 */
+ 4, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 20, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 20, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 25, /* 9: Trace */
+ 20, /* 10: 1010 */
+ 20, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 30, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 30, /* 24: Spurious Interrupt */
+ 30, /* 25: Level 1 Interrupt Autovector */
+ 30, /* 26: Level 2 Interrupt Autovector */
+ 30, /* 27: Level 3 Interrupt Autovector */
+ 30, /* 28: Level 4 Interrupt Autovector */
+ 30, /* 29: Level 5 Interrupt Autovector */
+ 30, /* 30: Level 6 Interrupt Autovector */
+ 30, /* 31: Level 7 Interrupt Autovector */
+ 20, /* 32: TRAP #0 */
+ 20, /* 33: TRAP #1 */
+ 20, /* 34: TRAP #2 */
+ 20, /* 35: TRAP #3 */
+ 20, /* 36: TRAP #4 */
+ 20, /* 37: TRAP #5 */
+ 20, /* 38: TRAP #6 */
+ 20, /* 39: TRAP #7 */
+ 20, /* 40: TRAP #8 */
+ 20, /* 41: TRAP #9 */
+ 20, /* 42: TRAP #10 */
+ 20, /* 43: TRAP #11 */
+ 20, /* 44: TRAP #12 */
+ 20, /* 45: TRAP #13 */
+ 20, /* 46: TRAP #14 */
+ 20, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+ { /* ColdFire - not correct */
+ 4, /* 0: Reset - Initial Stack Pointer */
+ 4, /* 1: Reset - Initial Program Counter */
+ 50, /* 2: Bus Error (unemulated) */
+ 50, /* 3: Address Error (unemulated) */
+ 20, /* 4: Illegal Instruction */
+ 38, /* 5: Divide by Zero */
+ 40, /* 6: CHK */
+ 20, /* 7: TRAPV */
+ 34, /* 8: Privilege Violation */
+ 25, /* 9: Trace */
+ 20, /* 10: 1010 */
+ 20, /* 11: 1111 */
+ 4, /* 12: RESERVED */
+ 4, /* 13: Coprocessor Protocol Violation (unemulated) */
+ 4, /* 14: Format Error */
+ 30, /* 15: Uninitialized Interrupt */
+ 4, /* 16: RESERVED */
+ 4, /* 17: RESERVED */
+ 4, /* 18: RESERVED */
+ 4, /* 19: RESERVED */
+ 4, /* 20: RESERVED */
+ 4, /* 21: RESERVED */
+ 4, /* 22: RESERVED */
+ 4, /* 23: RESERVED */
+ 30, /* 24: Spurious Interrupt */
+ 30, /* 25: Level 1 Interrupt Autovector */
+ 30, /* 26: Level 2 Interrupt Autovector */
+ 30, /* 27: Level 3 Interrupt Autovector */
+ 30, /* 28: Level 4 Interrupt Autovector */
+ 30, /* 29: Level 5 Interrupt Autovector */
+ 30, /* 30: Level 6 Interrupt Autovector */
+ 30, /* 31: Level 7 Interrupt Autovector */
+ 20, /* 32: TRAP #0 */
+ 20, /* 33: TRAP #1 */
+ 20, /* 34: TRAP #2 */
+ 20, /* 35: TRAP #3 */
+ 20, /* 36: TRAP #4 */
+ 20, /* 37: TRAP #5 */
+ 20, /* 38: TRAP #6 */
+ 20, /* 39: TRAP #7 */
+ 20, /* 40: TRAP #8 */
+ 20, /* 41: TRAP #9 */
+ 20, /* 42: TRAP #10 */
+ 20, /* 43: TRAP #11 */
+ 20, /* 44: TRAP #12 */
+ 20, /* 45: TRAP #13 */
+ 20, /* 46: TRAP #14 */
+ 20, /* 47: TRAP #15 */
+ 4, /* 48: FP Branch or Set on Unknown Condition (unemulated) */
+ 4, /* 49: FP Inexact Result (unemulated) */
+ 4, /* 50: FP Divide by Zero (unemulated) */
+ 4, /* 51: FP Underflow (unemulated) */
+ 4, /* 52: FP Operand Error (unemulated) */
+ 4, /* 53: FP Overflow (unemulated) */
+ 4, /* 54: FP Signaling NAN (unemulated) */
+ 4, /* 55: FP Unimplemented Data Type (unemulated) */
+ 4, /* 56: MMU Configuration Error (unemulated) */
+ 4, /* 57: MMU Illegal Operation Error (unemulated) */
+ 4, /* 58: MMU Access Level Violation Error (unemulated) */
+ 4, /* 59: RESERVED */
+ 4, /* 60: RESERVED */
+ 4, /* 61: RESERVED */
+ 4, /* 62: RESERVED */
+ 4, /* 63: RESERVED */
+ /* 64-255: User Defined */
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
+ },
+};
+
+const uint8_t m68ki_ea_idx_cycle_table[64] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, /* ..01.000 no memory indirect, base nullptr */
+ 5, /* ..01..01 memory indirect, base nullptr, outer nullptr */
+ 7, /* ..01..10 memory indirect, base nullptr, outer 16 */
+ 7, /* ..01..11 memory indirect, base nullptr, outer 32 */
+ 0, 5, 7, 7, 0, 5, 7, 7, 0, 5, 7, 7,
+ 2, /* ..10.000 no memory indirect, base 16 */
+ 7, /* ..10..01 memory indirect, base 16, outer nullptr */
+ 9, /* ..10..10 memory indirect, base 16, outer 16 */
+ 9, /* ..10..11 memory indirect, base 16, outer 32 */
+ 0, 7, 9, 9, 0, 7, 9, 9, 0, 7, 9, 9,
+ 6, /* ..11.000 no memory indirect, base 32 */
+ 11, /* ..11..01 memory indirect, base 32, outer nullptr */
+ 13, /* ..11..10 memory indirect, base 32, outer 16 */
+ 13, /* ..11..11 memory indirect, base 32, outer 32 */
+ 0, 11, 13, 13, 0, 11, 13, 13, 0, 11, 13, 13
+};
+
+
+
+/***************************************************************************
+ CPU STATE DESCRIPTION
+***************************************************************************/
+
+#define MASK_ALL (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010 | CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_EC030 | CPU_TYPE_030 | CPU_TYPE_EC040 | CPU_TYPE_040 | CPU_TYPE_FSCPU32 )
+#define MASK_24BIT_SPACE (CPU_TYPE_000 | CPU_TYPE_008 | CPU_TYPE_010 | CPU_TYPE_EC020)
+#define MASK_32BIT_SPACE (CPU_TYPE_020 | CPU_TYPE_EC030 | CPU_TYPE_030 | CPU_TYPE_EC040 | CPU_TYPE_040 | CPU_TYPE_FSCPU32 )
+#define MASK_010_OR_LATER (CPU_TYPE_010 | CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040 | CPU_TYPE_FSCPU32 )
+#define MASK_020_OR_LATER (CPU_TYPE_EC020 | CPU_TYPE_020 | CPU_TYPE_EC030 | CPU_TYPE_030 | CPU_TYPE_EC040 | CPU_TYPE_040 | CPU_TYPE_FSCPU32 )
+#define MASK_030_OR_LATER (CPU_TYPE_030 | CPU_TYPE_EC030 | CPU_TYPE_040 | CPU_TYPE_EC040)
+#define MASK_040_OR_LATER (CPU_TYPE_040 | CPU_TYPE_EC040)
+
+
+
+/* ======================================================================== */
+/* ================================= API ================================== */
+/* ======================================================================== */
+
+static void set_irq_line(m68000_base_device *m68k, int irqline, int state)
+{
+ uint32_t old_level = m68k->int_level;
+ uint32_t vstate = m68k->virq_state;
+ uint32_t blevel;
+
+ if(state == ASSERT_LINE)
+ vstate |= 1 << irqline;
+ else
+ vstate &= ~(1 << irqline);
+ m68k->virq_state = vstate;
+
+ for(blevel = 7; blevel > 0; blevel--)
+ if(vstate & (1 << blevel))
+ break;
+
+ m68k->int_level = blevel << 8;
+
+ /* A transition from < 7 to 7 always interrupts (NMI) */
+ /* Note: Level 7 can also level trigger like a normal IRQ */
+ if(old_level != 0x0700 && m68k->int_level == 0x0700)
+ m68k->nmi_pending = true;
+}
+
+void m68000_base_device::presave()
+{
+ save_sr = m68ki_get_sr(this);
+ save_stopped = (stopped & STOP_LEVEL_STOP) != 0;
+ save_halted = (stopped & STOP_LEVEL_HALT) != 0;
+}
+
+void m68000_base_device::postload()
+{
+ m68ki_set_sr_noint_nosp(this, save_sr);
+ //fprintf(stderr, "Reloaded, pc=%x\n", REG_PC(m68k));
+ stopped = (save_stopped ? STOP_LEVEL_STOP : 0) | (save_halted ? STOP_LEVEL_HALT : 0);
+ m68ki_jump(this, REG_PC(this));
+}
+
+static void m68k_cause_bus_error(m68000_base_device *m68k)
+{
+ uint32_t sr;
+
+ sr = m68ki_init_exception(m68k);
+
+ m68k->run_mode = RUN_MODE_BERR_AERR_RESET;
+
+ if (!CPU_TYPE_IS_010_PLUS(m68k->cpu_type))
+ {
+ /* Note: This is implemented for 68000 only! */
+ m68ki_stack_frame_buserr(m68k, sr);
+ }
+ else if (CPU_TYPE_IS_010(m68k->cpu_type))
+ {
+ /* only the 68010 throws this unique type-1000 frame */
+ m68ki_stack_frame_1000(m68k, REG_PPC(m68k), sr, EXCEPTION_BUS_ERROR);
+ }
+ else if (m68k->mmu_tmp_buserror_address == REG_PPC(m68k))
+ {
+ m68ki_stack_frame_1010(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ }
+ else
+ {
+ m68ki_stack_frame_1011(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address);
+ }
+
+ m68ki_jump_vector(m68k, EXCEPTION_BUS_ERROR);
+}
+
+bool m68000_base_device::memory_translate(address_spacenum space, int intention, offs_t &address)
+{
+ /* only applies to the program address space and only does something if the MMU's enabled */
+ {
+ /* 68040 needs to call the MMU even when disabled so transparent translation works */
+ if ((space == AS_PROGRAM) && ((pmmu_enabled) || (CPU_TYPE_IS_040_PLUS(cpu_type))))
+ {
+ // FIXME: mmu_tmp_sr will be overwritten in pmmu_translate_addr_with_fc
+ uint16_t temp_mmu_tmp_sr = mmu_tmp_sr;
+ int mode = s_flag ? FUNCTION_CODE_SUPERVISOR_PROGRAM : FUNCTION_CODE_USER_PROGRAM;
+// uint32_t va=address;
+
+ if (CPU_TYPE_IS_040_PLUS(cpu_type))
+ {
+ address = pmmu_translate_addr_with_fc_040(this, address, mode, 1);
+ }
+ else
+ {
+ address = pmmu_translate_addr_with_fc(this, address, mode, 1);
+ }
+
+ if ((mmu_tmp_sr & M68K_MMU_SR_INVALID) != 0) {
+// logerror("cpu_translate_m68k failed with mmu_sr=%04x va=%08x pa=%08x\n",mmu_tmp_sr,va ,address);
+ address = 0;
+ }
+
+ mmu_tmp_sr = temp_mmu_tmp_sr;
+ }
+ }
+ return true;
+}
+
+
+
+
+
+
+
+
+
+inline void m68000_base_device::cpu_execute(void)
+{
+ initial_cycles = remaining_cycles;
+
+ /* eat up any reset cycles */
+ if (reset_cycles) {
+ int rc = reset_cycles;
+ reset_cycles = 0;
+ remaining_cycles -= rc;
+
+ if (remaining_cycles <= 0) return;
+ }
+
+ /* See if interrupts came in */
+ m68ki_check_interrupts(this);
+
+ /* Make sure we're not stopped */
+ if(!stopped)
+ {
+ /* Return point if we had an address error */
+ check_address_error:
+// HBMAME temp hack, to see if this allows us to run chinese hacks
+#if 0
+ if (m_address_error==1)
+ {
+ m_address_error = 0;
+ try {
+ m68ki_exception_address_error(this);
+ }
+ catch(int error)
+ {
+ if (error==10)
+ {
+ m_address_error = 1;
+ REG_PPC(this) = REG_PC(this);
+ goto check_address_error;
+ }
+ else
+ throw;
+ }
+ if(stopped)
+ {
+ if (remaining_cycles > 0)
+ remaining_cycles = 0;
+ return;
+ }
+ }
+#endif
+
+ /* Main loop. Keep going until we run out of clock cycles */
+ while (remaining_cycles > 0)
+ {
+ /* Set tracing accodring to T1. (T0 is done inside instruction) */
+ m68ki_trace_t1(this); /* auto-disable (see m68kcpu.h) */
+
+ /* Record previous program counter */
+ REG_PPC(this) = REG_PC(this);
+
+ /* Call external hook to peek at CPU */
+ debugger_instruction_hook(this, REG_PC(this));
+
+ /* call external instruction hook (independent of debug mode) */
+ if (!instruction_hook.isnull())
+ instruction_hook(*program, REG_PC(this), 0xffffffff);
+
+ try
+ {
+ if (!pmmu_enabled)
+ {
+ run_mode = RUN_MODE_NORMAL;
+ /* Read an instruction and call its handler */
+ ir = m68ki_read_imm_16(this);
+ jump_table[ir](this);
+ remaining_cycles -= cyc_instruction[ir];
+ }
+ else
+ {
+ run_mode = RUN_MODE_NORMAL;
+ // save CPU address registers values at start of instruction
+ int i;
+ uint32_t tmp_dar[16];
+
+ for (i = 15; i >= 0; i--)
+ {
+ tmp_dar[i] = REG_DA(this)[i];
+ }
+
+ mmu_tmp_buserror_occurred = 0;
+
+ /* Read an instruction and call its handler */
+ ir = m68ki_read_imm_16(this);
+
+ if (!mmu_tmp_buserror_occurred)
+ {
+ jump_table[ir](this);
+ remaining_cycles -= cyc_instruction[ir];
+ }
+
+ if (mmu_tmp_buserror_occurred)
+ {
+ uint32_t sr;
+
+ mmu_tmp_buserror_occurred = 0;
+
+ // restore cpu address registers to value at start of instruction
+ for (i = 15; i >= 0; i--)
+ {
+ if (REG_DA(this)[i] != tmp_dar[i])
+ {
+// logerror("PMMU: pc=%08x sp=%08x bus error: fixed %s[%d]: %08x -> %08x\n",
+// REG_PPC(this), REG_A(this)[7], i < 8 ? "D" : "A", i & 7, REG_DA(this)[i], tmp_dar[i]);
+ REG_DA(this)[i] = tmp_dar[i];
+ }
+ }
+
+ sr = m68ki_init_exception(this);
+
+ run_mode = RUN_MODE_BERR_AERR_RESET;
+
+ if (!CPU_TYPE_IS_020_PLUS(cpu_type))
+ {
+ /* Note: This is implemented for 68000 only! */
+ m68ki_stack_frame_buserr(this, sr);
+ }
+ else if(!CPU_TYPE_IS_040_PLUS(cpu_type)) {
+ if (mmu_tmp_buserror_address == REG_PPC(this))
+ {
+ m68ki_stack_frame_1010(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address);
+ }
+ else
+ {
+ m68ki_stack_frame_1011(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address);
+ }
+ }
+ else
+ {
+ m68ki_stack_frame_0111(this, sr, EXCEPTION_BUS_ERROR, REG_PPC(this), mmu_tmp_buserror_address, true);
+ }
+
+ m68ki_jump_vector(this, EXCEPTION_BUS_ERROR);
+
+ // TODO:
+ /* Use up some clock cycles and undo the instruction's cycles */
+ // remaining_cycles -= cyc_exception[EXCEPTION_BUS_ERROR] - cyc_instruction[ir];
+ }
+ }
+ }
+ catch (int error)
+ {
+ if (error==10)
+ {
+ m_address_error = 1;
+ goto check_address_error;
+ }
+ else
+ throw;
+ }
+
+
+ /* Trace m68k_exception, if necessary */
+ m68ki_exception_if_trace(this); /* auto-disable (see m68kcpu.h) */
+ }
+
+ /* set previous PC to current PC for the next entry into the loop */
+ REG_PPC(this) = REG_PC(this);
+ }
+ else if (remaining_cycles > 0)
+ remaining_cycles = 0;
+}
+
+
+
+void m68000_base_device::init_cpu_common(void)
+{
+ static uint32_t emulation_initialized = 0;
+
+ //this = device;//deviceparam;
+ program = &space(AS_PROGRAM);
+ oprogram = has_space(AS_DECRYPTED_OPCODES) ? &space(AS_DECRYPTED_OPCODES) : program;
+ int_ack_callback = device_irq_acknowledge_delegate(FUNC(m68000_base_device::standard_irq_callback_member), this);
+
+ /* disable all MMUs */
+ has_pmmu = 0;
+ has_hmmu = 0;
+ pmmu_enabled = 0;
+ hmmu_enabled = 0;
+
+ /* The first call to this function initializes the opcode handler jump table */
+ if(!emulation_initialized)
+ {
+ m68ki_build_opcode_table();
+ emulation_initialized = 1;
+ }
+
+ /* Note, D covers A because the dar array is common, REG_A(m68k)=REG_D(m68k)+8 */
+ save_item(NAME(REG_D(this)));
+ save_item(NAME(REG_PPC(this)));
+ save_item(NAME(REG_PC(this)));
+ save_item(NAME(REG_USP(this)));
+ save_item(NAME(REG_ISP(this)));
+ save_item(NAME(REG_MSP(this)));
+ save_item(NAME(vbr));
+ save_item(NAME(sfc));
+ save_item(NAME(dfc));
+ save_item(NAME(cacr));
+ save_item(NAME(caar));
+ save_item(NAME(save_sr));
+ save_item(NAME(int_level));
+ save_item(NAME(save_stopped));
+ save_item(NAME(save_halted));
+ save_item(NAME(pref_addr));
+ save_item(NAME(pref_data));
+ save_item(NAME(reset_cycles));
+ save_item(NAME(virq_state));
+ save_item(NAME(nmi_pending));
+ save_item(NAME(has_pmmu));
+ save_item(NAME(has_hmmu));
+ save_item(NAME(pmmu_enabled));
+ save_item(NAME(hmmu_enabled));
+
+ save_item(NAME(mmu_crp_aptr));
+ save_item(NAME(mmu_crp_limit));
+ save_item(NAME(mmu_srp_aptr));
+ save_item(NAME(mmu_srp_limit));
+ save_item(NAME(mmu_urp_aptr));
+ save_item(NAME(mmu_tc));
+ save_item(NAME(mmu_sr));
+ save_item(NAME(mmu_sr_040));
+ save_item(NAME(mmu_atc_rr));
+ save_item(NAME(mmu_tt0));
+ save_item(NAME(mmu_tt1));
+ save_item(NAME(mmu_itt0));
+ save_item(NAME(mmu_itt1));
+ save_item(NAME(mmu_dtt0));
+ save_item(NAME(mmu_dtt1));
+ save_item(NAME(mmu_acr0));
+ save_item(NAME(mmu_acr1));
+ save_item(NAME(mmu_acr2));
+ save_item(NAME(mmu_acr3));
+ save_item(NAME(mmu_last_page_entry));
+ save_item(NAME(mmu_last_page_entry_addr));
+
+ for (int i=0; i<MMU_ATC_ENTRIES;i++) {
+ save_item(NAME(mmu_atc_tag[i]), i);
+ save_item(NAME(mmu_atc_data[i]), i);
+ }
+
+ machine().save().register_presave(save_prepost_delegate(FUNC(m68000_base_device::presave), this));
+ machine().save().register_postload(save_prepost_delegate(FUNC(m68000_base_device::postload), this));
+
+ m_icountptr = &remaining_cycles;
+ remaining_cycles = 0;
+
+}
+
+void m68000_base_device::reset_cpu(void)
+{
+ /* Disable the PMMU/HMMU on reset, if any */
+ pmmu_enabled = 0;
+ hmmu_enabled = 0;
+
+ mmu_tc = 0;
+ mmu_tt0 = 0;
+ mmu_tt1 = 0;
+
+ /* Clear all stop levels and eat up all remaining cycles */
+ stopped = 0;
+ if (remaining_cycles > 0)
+ remaining_cycles = 0;
+
+ run_mode = RUN_MODE_BERR_AERR_RESET;
+
+ /* Turn off tracing */
+ t1_flag = t0_flag = 0;
+ m68ki_clear_trace(this);
+ /* Interrupt mask to level 7 */
+ int_mask = 0x0700;
+ int_level = 0;
+ virq_state = 0;
+ /* Reset VBR */
+ vbr = 0;
+ /* Go to supervisor mode */
+ m68ki_set_sm_flag(this, SFLAG_SET | MFLAG_CLEAR);
+
+ /* Invalidate the prefetch queue */
+ /* Set to arbitrary number since our first fetch is from 0 */
+ pref_addr = 0x1000;
+
+ /* Read the initial stack pointer and program counter */
+ m68ki_jump(this, 0);
+ REG_SP(this) = m68ki_read_imm_32(this);
+ REG_PC(this) = m68ki_read_imm_32(this);
+ m68ki_jump(this, REG_PC(this));
+
+ run_mode = RUN_MODE_NORMAL;
+
+ reset_cycles = cyc_exception[EXCEPTION_RESET];
+
+ /* flush the MMU's cache */
+ pmmu_atc_flush(this);
+
+ if(CPU_TYPE_IS_EC020_PLUS(cpu_type))
+ {
+ // clear instruction cache
+ m68ki_ic_clear(this);
+ }
+}
+
+
+
+/**************************************************************************
+ * STATE IMPORT/EXPORT
+ **************************************************************************/
+
+void m68000_base_device::state_import(const device_state_entry &entry)
+{
+ switch (entry.index())
+ {
+ case STATE_GENPC:
+ ppc = pc;
+ break;
+
+ case STATE_GENPCBASE:
+ pc = ppc;
+ break;
+
+ case M68K_SR:
+ case STATE_GENFLAGS:
+ m68ki_set_sr(this, iotemp);
+ break;
+
+ case M68K_ISP:
+ if (s_flag && !m_flag)
+ REG_SP(this) = iotemp;
+ else
+ REG_ISP(this) = iotemp;
+ break;
+
+ case M68K_USP:
+ if (!s_flag)
+ REG_SP(this) = iotemp;
+ else
+ REG_USP(this) = iotemp;
+ break;
+
+ case M68K_MSP:
+ if (s_flag && m_flag)
+ REG_SP(this) = iotemp;
+ else
+ REG_MSP(this) = iotemp;
+ break;
+
+ default:
+ fatalerror("CPU_IMPORT_STATE(this) called for unexpected value\n");
+ }
+
+}
+
+
+
+void m68000_base_device::state_export(const device_state_entry &entry)
+{
+ switch (entry.index())
+ {
+ case M68K_SR:
+ case STATE_GENFLAGS:
+ iotemp = m68ki_get_sr(this);
+ break;
+
+ case M68K_ISP:
+ iotemp = (s_flag && !m_flag) ? REG_SP(this) : REG_ISP(this);
+ break;
+
+ case M68K_USP:
+ iotemp = (!s_flag) ? REG_SP(this) : REG_USP(this);
+ break;
+
+ case M68K_MSP:
+ iotemp = (s_flag && m_flag) ? REG_SP(this) : REG_MSP(this);
+ break;
+
+ case M68K_FP0:
+ case M68K_FP1:
+ case M68K_FP2:
+ case M68K_FP3:
+ case M68K_FP4:
+ case M68K_FP5:
+ case M68K_FP6:
+ case M68K_FP7:
+ break;
+
+ default:
+ fatalerror("CPU_EXPORT_STATE(this) called for unexpected value\n");
+ }
+}
+
+void m68000_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
+{
+ uint16_t sr;
+
+ switch (entry.index())
+ {
+ case M68K_FP0:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[0]));
+ break;
+
+ case M68K_FP1:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[1]));
+ break;
+
+ case M68K_FP2:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[2]));
+ break;
+
+ case M68K_FP3:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[3]));
+ break;
+
+ case M68K_FP4:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[4]));
+ break;
+
+ case M68K_FP5:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[5]));
+ break;
+
+ case M68K_FP6:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[6]));
+ break;
+
+ case M68K_FP7:
+ str = string_format("%f", fx80_to_double(REG_FP(this)[7]));
+ break;
+
+ case STATE_GENFLAGS:
+ sr = m68ki_get_sr(this);
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ sr & 0x8000 ? 'T':'.',
+ sr & 0x4000 ? 't':'.',
+ sr & 0x2000 ? 'S':'.',
+ sr & 0x1000 ? 'M':'.',
+ sr & 0x0800 ? '?':'.',
+ sr & 0x0400 ? 'I':'.',
+ sr & 0x0200 ? 'I':'.',
+ sr & 0x0100 ? 'I':'.',
+ sr & 0x0080 ? '?':'.',
+ sr & 0x0040 ? '?':'.',
+ sr & 0x0020 ? '?':'.',
+ sr & 0x0010 ? 'X':'.',
+ sr & 0x0008 ? 'N':'.',
+ sr & 0x0004 ? 'Z':'.',
+ sr & 0x0002 ? 'V':'.',
+ sr & 0x0001 ? 'C':'.');
+ break;
+ }
+
+}
+
+
+/* global access */
+
+void m68000_base_device::set_hmmu_enable(int enable)
+{
+ hmmu_enabled = enable;
+}
+
+void m68000_base_device::set_fpu_enable(int enable)
+{
+ has_fpu = enable;
+}
+
+int m68000_base_device::get_fpu_enable()
+{
+ return has_fpu;
+}
+
+void m68000_base_device::set_instruction_hook(read32_delegate ihook)
+{
+ instruction_hook = ihook;
+}
+
+/****************************************************************************
+ * 8-bit data memory interface
+ ****************************************************************************/
+
+uint16_t m68000_base_device::m68008_read_immediate_16(offs_t address)
+{
+ return (m_odirect->read_byte(address) << 8) | (m_odirect->read_byte(address + 1));
+}
+
+void m68000_base_device::init8(address_space &space, address_space &ospace)
+{
+ m_space = &space;
+ m_direct = &space.direct();
+ m_ospace = &ospace;
+ m_odirect = &ospace.direct();
+// m_cpustate = this;
+ opcode_xor = 0;
+
+ readimm16 = m68k_readimm16_delegate(&m68000_base_device::m68008_read_immediate_16, this);
+ read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ read16 = m68k_read16_delegate(&address_space::read_word, &space);
+ read32 = m68k_read32_delegate(&address_space::read_dword, &space);
+ write8 = m68k_write8_delegate(&address_space::write_byte, &space);
+ write16 = m68k_write16_delegate(&address_space::write_word, &space);
+ write32 = m68k_write32_delegate(&address_space::write_dword, &space);
+}
+
+/****************************************************************************
+ * 16-bit data memory interface
+ ****************************************************************************/
+
+uint16_t m68000_base_device::read_immediate_16(offs_t address)
+{
+ return m_odirect->read_word((address), opcode_xor);
+}
+
+uint16_t m68000_base_device::simple_read_immediate_16(offs_t address)
+{
+ return m_odirect->read_word(address);
+}
+
+void m68000_base_device::m68000_write_byte(offs_t address, uint8_t data)
+{
+ static const uint16_t masks[] = {0xff00, 0x00ff};
+
+ m_space->write_word(address & ~1, data | (data << 8), masks[address & 1]);
+}
+
+void m68000_base_device::init16(address_space &space, address_space &ospace)
+{
+ m_space = &space;
+ m_direct = &space.direct();
+ m_ospace = &ospace;
+ m_odirect = &ospace.direct();
+
+ opcode_xor = 0;
+
+ readimm16 = m68k_readimm16_delegate(&m68000_base_device::simple_read_immediate_16, this);
+ read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ read16 = m68k_read16_delegate(&address_space::read_word, &space);
+ read32 = m68k_read32_delegate(&address_space::read_dword, &space);
+ write8 = m68k_write8_delegate(&m68000_base_device::m68000_write_byte, this);
+ write16 = m68k_write16_delegate(&address_space::write_word, &space);
+ write32 = m68k_write32_delegate(&address_space::write_dword, &space);
+}
+
+
+
+
+
+/****************************************************************************
+ * 32-bit data memory interface
+ ****************************************************************************/
+
+/* interface for 32-bit data bus (68EC020, 68020) */
+void m68000_base_device::init32(address_space &space, address_space &ospace)
+{
+ m_space = &space;
+ m_direct = &space.direct();
+ m_ospace = &ospace;
+ m_odirect = &ospace.direct();
+ opcode_xor = WORD_XOR_BE(0);
+
+ readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16, this);
+ read8 = m68k_read8_delegate(&address_space::read_byte, &space);
+ read16 = m68k_read16_delegate(&address_space::read_word_unaligned, &space);
+ read32 = m68k_read32_delegate(&address_space::read_dword_unaligned, &space);
+ write8 = m68k_write8_delegate(&address_space::write_byte, &space);
+ write16 = m68k_write16_delegate(&address_space::write_word_unaligned, &space);
+ write32 = m68k_write32_delegate(&address_space::write_dword_unaligned, &space);
+}
+
+/* interface for 32-bit data bus with PMMU (68EC020, 68020) */
+uint8_t m68000_base_device::read_byte_32_mmu(offs_t address)
+{
+ if (pmmu_enabled)
+ {
+ address = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ }
+ }
+
+ return m_space->read_byte(address);
+}
+
+void m68000_base_device::write_byte_32_mmu(offs_t address, uint8_t data)
+{
+ if (pmmu_enabled)
+ {
+ address = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ }
+ }
+
+ m_space->write_byte(address, data);
+}
+
+uint16_t m68000_base_device::read_immediate_16_mmu(offs_t address)
+{
+ if (pmmu_enabled)
+ {
+ address = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ }
+ }
+
+ return m_odirect->read_word((address), opcode_xor);
+}
+
+/* potentially misaligned 16-bit reads with a 32-bit data bus (and 24-bit address bus) */
+uint16_t m68000_base_device::readword_d32_mmu(offs_t address)
+{
+ uint16_t result;
+
+ if (pmmu_enabled)
+ {
+ uint32_t address0 = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ } else if (WORD_ALIGNED(address)) {
+ return m_space->read_word(address0);
+ } else {
+ uint32_t address1 = pmmu_translate_addr(this, address + 1);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ } else {
+ result = m_space->read_byte(address0) << 8;
+ return result | m_space->read_byte(address1);
+ }
+ }
+ }
+
+ if (WORD_ALIGNED(address))
+ return m_space->read_word(address);
+ result = m_space->read_byte(address) << 8;
+ return result | m_space->read_byte(address + 1);
+}
+
+/* potentially misaligned 16-bit writes with a 32-bit data bus (and 24-bit address bus) */
+void m68000_base_device::writeword_d32_mmu(offs_t address, uint16_t data)
+{
+ if (pmmu_enabled)
+ {
+ uint32_t address0 = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ } else if (WORD_ALIGNED(address)) {
+ m_space->write_word(address0, data);
+ return;
+ } else {
+ uint32_t address1 = pmmu_translate_addr(this, address + 1);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ } else {
+ m_space->write_byte(address0, data >> 8);
+ m_space->write_byte(address1, data);
+ return;
+ }
+ }
+ }
+
+ if (WORD_ALIGNED(address))
+ {
+ m_space->write_word(address, data);
+ return;
+ }
+ m_space->write_byte(address, data >> 8);
+ m_space->write_byte(address + 1, data);
+}
+
+/* potentially misaligned 32-bit reads with a 32-bit data bus (and 24-bit address bus) */
+uint32_t m68000_base_device::readlong_d32_mmu(offs_t address)
+{
+ uint32_t result;
+
+ if (pmmu_enabled)
+ {
+ uint32_t address0 = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ } else if ((address +3) & 0xfc) {
+ // not at page boundary; use default code
+ address = address0;
+ } else if (DWORD_ALIGNED(address)) { // 0
+ return m_space->read_dword(address0);
+ } else {
+ uint32_t address2 = pmmu_translate_addr(this, address+2);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ } else if (WORD_ALIGNED(address)) { // 2
+ result = m_space->read_word(address0) << 16;
+ return result | m_space->read_word(address2);
+ } else {
+ uint32_t address1 = pmmu_translate_addr(this, address+1);
+ uint32_t address3 = pmmu_translate_addr(this, address+3);
+ if (mmu_tmp_buserror_occurred) {
+ return ~0;
+ } else {
+ result = m_space->read_byte(address0) << 24;
+ result |= m_space->read_word(address1) << 8;
+ return result | m_space->read_byte(address3);
+ }
+ }
+ }
+ }
+
+ if (DWORD_ALIGNED(address))
+ return m_space->read_dword(address);
+ else if (WORD_ALIGNED(address))
+ {
+ result = m_space->read_word(address) << 16;
+ return result | m_space->read_word(address + 2);
+ }
+ result = m_space->read_byte(address) << 24;
+ result |= m_space->read_word(address + 1) << 8;
+ return result | m_space->read_byte(address + 3);
+}
+
+/* potentially misaligned 32-bit writes with a 32-bit data bus (and 24-bit address bus) */
+void m68000_base_device::writelong_d32_mmu(offs_t address, uint32_t data)
+{
+ if (pmmu_enabled)
+ {
+ uint32_t address0 = pmmu_translate_addr(this, address);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ } else if ((address +3) & 0xfc) {
+ // not at page boundary; use default code
+ address = address0;
+ } else if (DWORD_ALIGNED(address)) { // 0
+ m_space->write_dword(address0, data);
+ return;
+ } else {
+ uint32_t address2 = pmmu_translate_addr(this, address+2);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ } else if (WORD_ALIGNED(address)) { // 2
+ m_space->write_word(address0, data >> 16);
+ m_space->write_word(address2, data);
+ return;
+ } else {
+ uint32_t address1 = pmmu_translate_addr(this, address+1);
+ uint32_t address3 = pmmu_translate_addr(this, address+3);
+ if (mmu_tmp_buserror_occurred) {
+ return;
+ } else {
+ m_space->write_byte(address0, data >> 24);
+ m_space->write_word(address1, data >> 8);
+ m_space->write_byte(address3, data);
+ return;
+ }
+ }
+ }
+ }
+
+ if (DWORD_ALIGNED(address))
+ {
+ m_space->write_dword(address, data);
+ return;
+ }
+ else if (WORD_ALIGNED(address))
+ {
+ m_space->write_word(address, data >> 16);
+ m_space->write_word(address + 2, data);
+ return;
+ }
+ m_space->write_byte(address, data >> 24);
+ m_space->write_word(address + 1, data >> 8);
+ m_space->write_byte(address + 3, data);
+}
+
+void m68000_base_device::init32mmu(address_space &space, address_space &ospace)
+{
+ m_space = &space;
+ m_direct = &space.direct();
+ m_ospace = &ospace;
+ m_odirect = &ospace.direct();
+ opcode_xor = WORD_XOR_BE(0);
+
+ readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_mmu, this);
+ read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_mmu, this);
+ read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_mmu, this);
+ read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_mmu, this);
+ write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_mmu, this);
+ write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_mmu, this);
+ write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_mmu, this);
+}
+
+
+/* interface for 32-bit data bus with PMMU (68EC020, 68020) */
+uint8_t m68000_base_device::read_byte_32_hmmu(offs_t address)
+{
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ return m_space->read_byte(address);
+}
+
+void m68000_base_device::write_byte_32_hmmu(offs_t address, uint8_t data)
+{
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ m_space->write_byte(address, data);
+}
+
+uint16_t m68000_base_device::read_immediate_16_hmmu(offs_t address)
+{
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ return m_odirect->read_word((address), opcode_xor);
+}
+
+/* potentially misaligned 16-bit reads with a 32-bit data bus (and 24-bit address bus) */
+uint16_t m68000_base_device::readword_d32_hmmu(offs_t address)
+{
+ uint16_t result;
+
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ if (WORD_ALIGNED(address))
+ return m_space->read_word(address);
+ result = m_space->read_byte(address) << 8;
+ return result | m_space->read_byte(address + 1);
+}
+
+/* potentially misaligned 16-bit writes with a 32-bit data bus (and 24-bit address bus) */
+void m68000_base_device::writeword_d32_hmmu(offs_t address, uint16_t data)
+{
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ if (WORD_ALIGNED(address))
+ {
+ m_space->write_word(address, data);
+ return;
+ }
+ m_space->write_byte(address, data >> 8);
+ m_space->write_byte(address + 1, data);
+}
+
+/* potentially misaligned 32-bit reads with a 32-bit data bus (and 24-bit address bus) */
+uint32_t m68000_base_device::readlong_d32_hmmu(offs_t address)
+{
+ uint32_t result;
+
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ if (DWORD_ALIGNED(address))
+ return m_space->read_dword(address);
+ else if (WORD_ALIGNED(address))
+ {
+ result = m_space->read_word(address) << 16;
+ return result | m_space->read_word(address + 2);
+ }
+ result = m_space->read_byte(address) << 24;
+ result |= m_space->read_word(address + 1) << 8;
+ return result | m_space->read_byte(address + 3);
+}
+
+/* potentially misaligned 32-bit writes with a 32-bit data bus (and 24-bit address bus) */
+void m68000_base_device::writelong_d32_hmmu(offs_t address, uint32_t data)
+{
+ if (hmmu_enabled)
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+
+ if (DWORD_ALIGNED(address))
+ {
+ m_space->write_dword(address, data);
+ return;
+ }
+ else if (WORD_ALIGNED(address))
+ {
+ m_space->write_word(address, data >> 16);
+ m_space->write_word(address + 2, data);
+ return;
+ }
+ m_space->write_byte(address, data >> 24);
+ m_space->write_word(address + 1, data >> 8);
+ m_space->write_byte(address + 3, data);
+}
+
+void m68000_base_device::init32hmmu(address_space &space, address_space &ospace)
+{
+ m_space = &space;
+ m_direct = &space.direct();
+ m_ospace = &ospace;
+ m_odirect = &ospace.direct();
+ opcode_xor = WORD_XOR_BE(0);
+
+ readimm16 = m68k_readimm16_delegate(&m68000_base_device::read_immediate_16_hmmu, this);
+ read8 = m68k_read8_delegate(&m68000_base_device::read_byte_32_hmmu, this);
+ read16 = m68k_read16_delegate(&m68000_base_device::readword_d32_hmmu, this);
+ read32 = m68k_read32_delegate(&m68000_base_device::readlong_d32_hmmu, this);
+ write8 = m68k_write8_delegate(&m68000_base_device::write_byte_32_hmmu, this);
+ write16 = m68k_write16_delegate(&m68000_base_device::writeword_d32_hmmu, this);
+ write32 = m68k_write32_delegate(&m68000_base_device::writelong_d32_hmmu, this);
+}
+
+void m68000_base_device::set_reset_callback(write_line_delegate callback)
+{
+ reset_instr_callback = callback;
+}
+
+// fault_addr = address to indicate fault at
+// rw = 0 for read, 1 for write
+// fc = 3-bit function code of access (usually you'd just put what m68k_get_fc() returns here)
+void m68000_base_device::set_buserror_details(uint32_t fault_addr, uint8_t rw, uint8_t fc)
+{
+ aerr_address = fault_addr;
+ aerr_write_mode = rw;
+ aerr_fc = fc;
+}
+
+void m68000_base_device::set_cmpild_callback(write32_delegate callback)
+{
+ cmpild_instr_callback = callback;
+}
+
+void m68000_base_device::set_rte_callback(write_line_delegate callback)
+{
+ rte_instr_callback = callback;
+}
+
+void m68000_base_device::set_tas_write_callback(write8_delegate callback)
+{
+ tas_write_callback = callback;
+}
+
+uint16_t m68000_base_device::get_fc()
+{
+ return mmu_tmp_fc;
+}
+
+/****************************************************************************
+ * State definition
+ ****************************************************************************/
+
+void m68000_base_device::define_state(void)
+{
+ uint32_t addrmask = (cpu_type & MASK_24BIT_SPACE) ? 0xffffff : 0xffffffff;
+
+ state_add(STATE_GENPC, "PC", pc).mask(addrmask).callimport();
+ state_add(STATE_GENPCBASE, "CURPC", ppc).mask(addrmask).callimport().noshow();
+ state_add(M68K_SP, "SP", dar[15]);
+ state_add(STATE_GENSP, "GENSP", dar[15]).noshow();
+ state_add(STATE_GENFLAGS, "GENFLAGS", iotemp).noshow().callimport().callexport().formatstr("%16s");
+ state_add(M68K_ISP, "ISP", iotemp).callimport().callexport();
+ state_add(M68K_USP, "USP", iotemp).callimport().callexport();
+ if (cpu_type & MASK_020_OR_LATER)
+ state_add(M68K_MSP, "MSP", iotemp).callimport().callexport();
+
+ for (int regnum = 0; regnum < 8; regnum++) {
+ state_add(M68K_D0 + regnum, string_format("D%d", regnum).c_str(), dar[regnum]);
+ }
+ for (int regnum = 0; regnum < 8; regnum++) {
+ state_add(M68K_A0 + regnum, string_format("A%d", regnum).c_str(), dar[8 + regnum]);
+ }
+
+ state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask);
+ state_add(M68K_PREF_DATA, "PREF_DATA", pref_data);
+
+ if (cpu_type & MASK_010_OR_LATER)
+ {
+ state_add(M68K_SFC, "SFC", sfc).mask(0x7);
+ state_add(M68K_DFC, "DFC", dfc).mask(0x7);
+ state_add(M68K_VBR, "VBR", vbr);
+ }
+
+ if (cpu_type & MASK_020_OR_LATER)
+ {
+ state_add(M68K_CACR, "CACR", cacr);
+ state_add(M68K_CAAR, "CAAR", caar);
+ }
+
+ if (cpu_type & MASK_030_OR_LATER)
+ {
+ for (int regnum = 0; regnum < 8; regnum++) {
+ state_add(M68K_FP0 + regnum, string_format("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s");
+ }
+ state_add(M68K_FPSR, "FPSR", fpsr);
+ state_add(M68K_FPCR, "FPCR", fpcr);
+ }
+}
+
+
+
+/****************
+ CPU Inits
+****************/
+
+
+void m68000_base_device::init_cpu_m68000(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_000;
+// dasm_type = M68K_CPU_TYPE_68000;
+
+ init16(*program, *oprogram);
+ sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[0];
+ cyc_instruction = m68ki_cycles[0];
+ cyc_exception = m68ki_exception_cycle_table[0];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 2;
+ cyc_dbcc_f_noexp = -2;
+ cyc_dbcc_f_exp = 2;
+ cyc_scc_r_true = 2;
+ cyc_movem_w = 2;
+ cyc_movem_l = 3;
+ cyc_shift = 1;
+ cyc_reset = 132;
+ has_pmmu = 0;
+ has_hmmu = 0;
+ has_fpu = 0;
+
+ define_state();
+
+}
+
+
+void m68000_base_device::init_cpu_m68008(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_008;
+// dasm_type = M68K_CPU_TYPE_68008;
+
+ init8(*program, *oprogram);
+ sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[0];
+ cyc_instruction = m68ki_cycles[0];
+ cyc_exception = m68ki_exception_cycle_table[0];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 2;
+ cyc_dbcc_f_noexp = -2;
+ cyc_dbcc_f_exp = 2;
+ cyc_scc_r_true = 2;
+ cyc_movem_w = 2;
+ cyc_movem_l = 3;
+ cyc_shift = 1;
+ cyc_reset = 132;
+ has_pmmu = 0;
+ has_fpu = 0;
+
+ define_state();
+
+}
+
+
+void m68000_base_device::init_cpu_m68010(void)
+{
+ init_cpu_common();
+ cpu_type = CPU_TYPE_010;
+// dasm_type = M68K_CPU_TYPE_68010;
+
+ init16(*program, *oprogram);
+ sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[1];
+ cyc_instruction = m68ki_cycles[1];
+ cyc_exception = m68ki_exception_cycle_table[1];
+ cyc_bcc_notake_b = -4;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 6;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 3;
+ cyc_shift = 1;
+ cyc_reset = 130;
+ has_pmmu = 0;
+ has_fpu = 0;
+
+ define_state();
+}
+
+
+void m68000_base_device::init_cpu_m68020(void)
+{
+ init_cpu_common();
+ cpu_type = CPU_TYPE_020;
+// dasm_type = M68K_CPU_TYPE_68020;
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[2];
+ cyc_instruction = m68ki_cycles[2];
+ cyc_exception = m68ki_exception_cycle_table[2];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+
+ define_state();
+}
+
+void m68000_base_device::init_cpu_m68020fpu(void)
+{
+ init_cpu_m68020();
+
+ has_fpu = 1;
+}
+
+void m68000_base_device::init_cpu_m68020pmmu(void)
+{
+ init_cpu_m68020();
+
+ has_pmmu = 1;
+ has_fpu = 1;
+
+
+ init32mmu(*program, *oprogram);
+}
+
+
+
+void m68000_base_device::init_cpu_m68020hmmu(void)
+{
+ init_cpu_m68020();
+
+ has_hmmu = 1;
+ has_fpu = 1;
+
+
+ init32hmmu(*program, *oprogram);
+}
+
+void m68000_base_device::init_cpu_m68ec020(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_EC020;
+// dasm_type = M68K_CPU_TYPE_68EC020;
+
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[2];
+ cyc_instruction = m68ki_cycles[2];
+ cyc_exception = m68ki_exception_cycle_table[2];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 0;
+ has_fpu = 0;
+
+ define_state();
+}
+
+
+void m68000_base_device::init_cpu_m68030(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_030;
+// dasm_type = M68K_CPU_TYPE_68030;
+
+
+ init32mmu(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[3];
+ cyc_instruction = m68ki_cycles[3];
+ cyc_exception = m68ki_exception_cycle_table[3];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 1;
+ has_fpu = 1;
+
+ define_state();
+}
+
+
+
+void m68000_base_device::init_cpu_m68ec030(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_EC030;
+// dasm_type = M68K_CPU_TYPE_68EC030;
+
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[3];
+ cyc_instruction = m68ki_cycles[3];
+ cyc_exception = m68ki_exception_cycle_table[3];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 0; /* EC030 lacks the PMMU and is effectively a die-shrink 68020 */
+ has_fpu = 1;
+
+ define_state();
+}
+
+
+
+void m68000_base_device::init_cpu_m68040(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_040;
+// dasm_type = M68K_CPU_TYPE_68040;
+
+
+ init32mmu(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[4];
+ cyc_instruction = m68ki_cycles[4];
+ cyc_exception = m68ki_exception_cycle_table[4];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 1;
+ has_fpu = 1;
+
+ define_state();
+}
+
+
+void m68000_base_device::init_cpu_m68ec040(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_EC040;
+// dasm_type = M68K_CPU_TYPE_68EC040;
+
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[4];
+ cyc_instruction = m68ki_cycles[4];
+ cyc_exception = m68ki_exception_cycle_table[4];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 0;
+ has_fpu = 0;
+
+ define_state();
+}
+
+
+void m68000_base_device::init_cpu_m68lc040(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_LC040;
+// dasm_type = M68K_CPU_TYPE_68LC040;
+
+
+ init32mmu(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[4];
+ cyc_instruction = m68ki_cycles[4];
+ cyc_exception = m68ki_exception_cycle_table[4];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+ has_pmmu = 1;
+ has_fpu = 0;
+
+ define_state();
+}
+
+
+void m68000_base_device::init_cpu_scc68070(void)
+{
+ init_cpu_m68010();
+ cpu_type = CPU_TYPE_SCC070;
+}
+
+
+void m68000_base_device::init_cpu_fscpu32(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_FSCPU32;
+// dasm_type = M68K_CPU_TYPE_FSCPU32;
+
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[5];
+ cyc_instruction = m68ki_cycles[5];
+ cyc_exception = m68ki_exception_cycle_table[5];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+
+ define_state();
+}
+
+
+
+void m68000_base_device::init_cpu_coldfire(void)
+{
+ init_cpu_common();
+
+ cpu_type = CPU_TYPE_COLDFIRE;
+// dasm_type = M68K_CPU_TYPE_COLDFIRE;
+
+
+ init32(*program, *oprogram);
+ sr_mask = 0xf71f; /* T1 T0 S M -- I2 I1 I0 -- -- -- X N Z V C */
+ jump_table = m68ki_instruction_jump_table[6];
+ cyc_instruction = m68ki_cycles[6];
+ cyc_exception = m68ki_exception_cycle_table[6];
+ cyc_bcc_notake_b = -2;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 4;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 2;
+ cyc_movem_l = 2;
+ cyc_shift = 0;
+ cyc_reset = 518;
+
+ define_state();
+}
+
+CPU_DISASSEMBLE( dasm_m68000 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68000);
+}
+
+CPU_DISASSEMBLE( dasm_m68008 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68008);
+}
+
+CPU_DISASSEMBLE( dasm_m68010 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68010);
+}
+
+CPU_DISASSEMBLE( dasm_m68020 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68020);
+}
+
+CPU_DISASSEMBLE( dasm_m68030 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68030);
+}
+
+CPU_DISASSEMBLE( dasm_m68ec030 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68EC030);
+}
+
+CPU_DISASSEMBLE( dasm_m68040 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68040);
+}
+
+CPU_DISASSEMBLE( dasm_m68ec040 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68EC040);
+}
+
+CPU_DISASSEMBLE( dasm_m68lc040 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_68LC040);
+}
+
+CPU_DISASSEMBLE( dasm_fscpu32 )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_FSCPU32);
+}
+
+CPU_DISASSEMBLE( dasm_coldfire )
+{
+ return m68k_disassemble_raw(stream, pc, oprom, opram, M68K_CPU_TYPE_COLDFIRE);
+}
+
+offs_t m68000_base_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); }
+offs_t m68000_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); }
+offs_t m68301_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); }
+offs_t m68008_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, stream, pc, oprom, opram, options); }
+offs_t m68008plcc_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68008)(this, stream, pc, oprom, opram, options); }
+offs_t m68010_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68010)(this, stream, pc, oprom, opram, options); }
+offs_t m68ec020_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); }
+offs_t m68020_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); }
+offs_t m68020fpu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); }
+offs_t m68020pmmu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); }
+offs_t m68020hmmu_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68020)(this, stream, pc, oprom, opram, options); }
+offs_t m68ec030_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec030)(this, stream, pc, oprom, opram, options); }
+offs_t m68030_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68030)(this, stream, pc, oprom, opram, options); }
+offs_t m68ec040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68ec040)(this, stream, pc, oprom, opram, options); }
+offs_t m68lc040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68lc040)(this, stream, pc, oprom, opram, options); }
+offs_t m68040_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68040)(this, stream, pc, oprom, opram, options); }
+offs_t scc68070_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_m68000)(this, stream, pc, oprom, opram, options); }
+offs_t fscpu32_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_fscpu32)(this, stream, pc, oprom, opram, options); }
+offs_t mcf5206e_device::disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) { return CPU_DISASSEMBLE_NAME(dasm_coldfire)(this, stream, pc, oprom, opram, options); }
+
+
+/* Service an interrupt request and start exception processing */
+void m68000_base_device::m68ki_exception_interrupt(m68000_base_device *m68k, uint32_t int_level)
+{
+ uint32_t vector;
+ uint32_t sr;
+ uint32_t new_pc;
+
+ if(CPU_TYPE_IS_000(cpu_type))
+ {
+ instr_mode = INSTRUCTION_NO;
+ }
+
+ /* Turn off the stopped state */
+ stopped &= ~STOP_LEVEL_STOP;
+
+ /* If we are halted, don't do anything */
+ if(stopped)
+ return;
+
+ /* Acknowledge the interrupt */
+ vector = int_ack_callback(*this, int_level);
+
+ /* Get the interrupt vector */
+ if(vector == M68K_INT_ACK_AUTOVECTOR)
+ /* Use the autovectors. This is the most commonly used implementation */
+ vector = EXCEPTION_INTERRUPT_AUTOVECTOR+int_level;
+ else if(vector == M68K_INT_ACK_SPURIOUS)
+ /* Called if no devices respond to the interrupt acknowledge */
+ vector = EXCEPTION_SPURIOUS_INTERRUPT;
+ else if(vector > 255)
+ return;
+
+ /* Start exception processing */
+ sr = m68ki_init_exception(m68k);
+
+ /* Set the interrupt mask to the level of the one being serviced */
+ int_mask = int_level<<8;
+
+ /* Get the new PC */
+ new_pc = m68ki_read_data_32(this, (vector<<2) + vbr);
+
+ /* If vector is uninitialized, call the uninitialized interrupt vector */
+ if(new_pc == 0)
+ new_pc = m68ki_read_data_32(this, (EXCEPTION_UNINITIALIZED_INTERRUPT<<2) + vbr);
+
+ /* Generate a stack frame */
+ m68ki_stack_frame_0000(this, REG_PC(m68k), sr, vector);
+ if(m_flag && CPU_TYPE_IS_EC020_PLUS(cpu_type))
+ {
+ /* Create throwaway frame */
+ m68ki_set_sm_flag(this, s_flag); /* clear M */
+ sr |= 0x2000; /* Same as SR in master stack frame except S is forced high */
+ m68ki_stack_frame_0001(this, REG_PC(m68k), sr, vector);
+ }
+
+ m68ki_jump(this, new_pc);
+
+ /* Defer cycle counting until later */
+ remaining_cycles -= cyc_exception[vector];
+}
+
+
+const device_type M68K = device_creator<m68000_base_device>;
+
+//-------------------------------------------------
+// h6280_device - constructor
+//-------------------------------------------------
+
+m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : cpu_device(mconfig, M68K, "M68K", tag, owner, clock, "m68k", __FILE__),
+ m_program_config("program", ENDIANNESS_BIG, 16, 24),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 16, 24)
+{
+ clear_all();
+}
+
+
+
+
+m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
+ : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map)
+{
+ clear_all();
+}
+
+
+m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, const char *shortname, const char *source)
+ : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits)
+{
+ clear_all();
+}
+
+void m68000_base_device::clear_all()
+{
+ cpu_type= 0;
+// dasm_type= 0;
+ for (auto & elem : dar)
+ elem= 0;
+ ppc= 0;
+ pc= 0;
+ for (auto & elem : sp)
+ elem= 0;
+ vbr= 0;
+ sfc= 0;
+ dfc= 0;
+ cacr= 0;
+ caar= 0;
+ ir= 0;
+// for (int i=0;i<8;i++)
+// fpr[i]= 0;
+ fpiar= 0;
+ fpsr= 0;
+ fpcr= 0;
+ t1_flag= 0;
+ t0_flag= 0;
+ s_flag= 0;
+ m_flag= 0;
+ x_flag= 0;
+ n_flag= 0;
+ not_z_flag= 0;
+ v_flag= 0;
+ c_flag= 0;
+ int_mask= 0;
+ int_level= 0;
+ stopped= 0;
+ pref_addr= 0;
+ pref_data= 0;
+ sr_mask= 0;
+ instr_mode= 0;
+ run_mode= 0;
+ has_pmmu= 0;
+ has_hmmu= 0;
+ pmmu_enabled= 0;
+ hmmu_enabled= 0;
+ has_fpu= 0;
+ fpu_just_reset= 0;
+
+ cyc_bcc_notake_b = 0;
+ cyc_bcc_notake_w = 0;
+ cyc_dbcc_f_noexp = 0;
+ cyc_dbcc_f_exp = 0;
+ cyc_scc_r_true = 0;
+ cyc_movem_w = 0;
+ cyc_movem_l = 0;
+ cyc_shift = 0;
+ cyc_reset = 0;
+
+ initial_cycles = 0;
+ remaining_cycles = 0;
+ reset_cycles = 0;
+ tracing = 0;
+
+ m_address_error = 0;
+
+ aerr_address = 0;
+ aerr_write_mode = 0;
+ aerr_fc = 0;
+
+ virq_state = 0;
+ nmi_pending = 0;
+
+ cyc_instruction = nullptr;
+ cyc_exception = nullptr;
+
+ int_ack_callback = device_irq_acknowledge_delegate();
+ program = nullptr;
+
+ opcode_xor = 0;
+// readimm16 = 0;
+// read8 = 0;
+// read16 = 0;
+// read32 = 0;
+// write8 = 0;
+// write16 = 0;
+// write32 = 0;
+
+ m_space = nullptr;
+ m_direct = nullptr;
+
+
+ iotemp = 0;
+
+ save_sr = 0;
+ save_stopped = 0;
+ save_halted = 0;
+
+
+ mmu_crp_aptr = mmu_crp_limit = 0;
+ mmu_srp_aptr = mmu_srp_limit = 0;
+ mmu_urp_aptr = 0;
+ mmu_tc = 0;
+ mmu_sr = 0;
+ mmu_sr_040 = 0;
+
+ for (int i=0; i<MMU_ATC_ENTRIES;i++)
+ mmu_atc_tag[i] = mmu_atc_data[i] = 0;
+
+ mmu_atc_rr = 0;
+ mmu_tt0 = mmu_tt1 = 0;
+ mmu_itt0 = mmu_itt1 = mmu_dtt0 = mmu_dtt1 = 0;
+ mmu_acr0= mmu_acr1 = mmu_acr2 = mmu_acr3 = 0;
+ mmu_tmp_sr = 0;
+ mmu_tmp_fc = 0;
+ mmu_tmp_rw = 0;
+ mmu_tmp_buserror_address = 0;
+ mmu_tmp_buserror_occurred = 0;
+ mmu_tmp_buserror_fc = 0;
+ mmu_tmp_buserror_rw = 0;
+
+ for (int i=0;i<M68K_IC_SIZE;i++)
+ {
+ ic_address[i] = 0;
+ ic_data[i] = 0;
+ ic_valid[i] = false;
+ }
+
+ internal = nullptr;
+}
+
+
+void m68000_base_device::execute_run()
+{
+ cpu_execute();
+}
+
+void m68000_base_device::device_start()
+{
+}
+
+void m68000_base_device::device_reset()
+{
+ reset_cpu();
+}
+
+void m68000_base_device::device_stop()
+{
+}
+
+
+
+
+void m68000_base_device::execute_set_input(int inputnum, int state)
+{
+ switch (inputnum)
+ {
+ /* --- the following bits of info are set as 64-bit signed integers --- */
+ case M68K_IRQ_NONE:
+ case M68K_IRQ_1:
+ case M68K_IRQ_2:
+ case M68K_IRQ_3:
+ case M68K_IRQ_4:
+ case M68K_IRQ_5:
+ case M68K_IRQ_6:
+ case M68K_IRQ_7:
+ case INPUT_LINE_NMI:
+ set_irq_line(this, inputnum, state);
+ break;
+
+ case M68K_LINE_BUSERROR:
+ if (state == ASSERT_LINE)
+ {
+ m68k_cause_bus_error(this);
+ }
+ break;
+ }
+}
+
+
+const address_space_config *m68000_base_device::memory_space_config(address_spacenum spacenum) const
+{
+ switch(spacenum)
+ {
+ case AS_PROGRAM: return &m_program_config;
+ case AS_DECRYPTED_OPCODES: return has_configured_map(AS_DECRYPTED_OPCODES) ? &m_oprogram_config : nullptr;
+ default: return nullptr;
+ }
+}
+
+
+
+const device_type M68000 = device_creator<m68000_device>;
+const device_type M68301 = device_creator<m68301_device>;
+const device_type M68008 = device_creator<m68008_device>;
+const device_type M68008PLCC = device_creator<m68008plcc_device>;
+const device_type M68010 = device_creator<m68010_device>;
+const device_type M68EC020 = device_creator<m68ec020_device>;
+const device_type M68020 = device_creator<m68020_device>;
+const device_type M68020FPU = device_creator<m68020fpu_device>;
+const device_type M68020PMMU = device_creator<m68020pmmu_device>;
+const device_type M68020HMMU = device_creator<m68020hmmu_device>;
+const device_type M68EC030 = device_creator<m68ec030_device>;
+const device_type M68030 = device_creator<m68030_device>;
+const device_type M68EC040 = device_creator<m68ec040_device>;
+const device_type M68LC040 = device_creator<m68lc040_device>;
+const device_type M68040 = device_creator<m68040_device>;
+const device_type SCC68070 = device_creator<scc68070_device>;
+const device_type FSCPU32 = device_creator<fscpu32_device>;
+const device_type MCF5206E = device_creator<mcf5206e_device>;
+
+m68000_device::m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68000", tag, owner, clock, M68000, 16,24, "m68000", __FILE__)
+{
+}
+
+m68000_device::m68000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
+ : m68000_base_device(mconfig, "M68000", tag, owner, clock, M68000, 16,24, shortname, source)
+{
+}
+
+m68000_device::m68000_device(const machine_config &mconfig, const device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
+ : m68000_base_device(mconfig, name, tag, owner, clock, type, 16,24, shortname, source)
+{
+}
+
+void m68000_device::device_start()
+{
+ init_cpu_m68000();
+}
+
+m68000_device::m68000_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
+ : m68000_base_device(mconfig, name, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map, shortname, source)
+{
+}
+
+
+
+
+
+m68301_device::m68301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68301", tag, owner, clock, M68301, 16,24, "m68301", __FILE__)
+{
+}
+
+
+void m68301_device::device_start()
+{
+ init_cpu_m68000();
+}
+
+
+
+
+
+
+/* m68008_device */
+
+m68008_device::m68008_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68008", tag, owner, clock, M68008, 8,20, "m68008", __FILE__)
+{
+}
+
+void m68008_device::device_start()
+{
+ init_cpu_m68008();
+}
+
+
+m68008plcc_device::m68008plcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68008PLCC", tag, owner, clock, M68008PLCC, 8,22, "m68008plcc", __FILE__)
+{
+}
+
+void m68008plcc_device::device_start()
+{
+ init_cpu_m68008();
+}
+
+
+
+m68010_device::m68010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68010", tag, owner, clock, M68010, 16,24, "m68010", __FILE__)
+{
+}
+
+void m68010_device::device_start()
+{
+ init_cpu_m68010();
+}
+
+
+
+m68020_device::m68020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68020", tag, owner, clock, M68020, 32,32, "m68020", __FILE__)
+{
+}
+
+void m68020_device::device_start()
+{
+ init_cpu_m68020();
+}
+
+
+m68020fpu_device::m68020fpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68020FPU", tag, owner, clock, M68020FPU, 32,32, "m68020fpu", __FILE__)
+{
+}
+
+void m68020fpu_device::device_start()
+{
+ init_cpu_m68020fpu();
+}
+
+// 68020 with 68851 PMMU
+m68020pmmu_device::m68020pmmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68020PMMU", tag, owner, clock, M68020PMMU, 32,32, "m68020pmmu", __FILE__)
+{
+}
+
+void m68020pmmu_device::device_start()
+{
+ init_cpu_m68020pmmu();
+}
+
+bool m68020hmmu_device::memory_translate(address_spacenum space, int intention, offs_t &address)
+{
+ /* only applies to the program address space and only does something if the MMU's enabled */
+ {
+ if ((space == AS_PROGRAM) && (hmmu_enabled))
+ {
+ address = hmmu_translate_addr(this, address);
+ }
+ }
+ return true;
+}
+
+
+// 68020 with Apple HMMU & 68881 FPU
+// case CPUINFO_FCT_TRANSLATE: info->translate = CPU_TRANSLATE_NAME(m68khmmu); break;
+m68020hmmu_device::m68020hmmu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68020HMMU", tag, owner, clock, M68020HMMU, 32,32, "m68020hmmu", __FILE__)
+{
+}
+
+void m68020hmmu_device::device_start()
+{
+ init_cpu_m68020hmmu();
+}
+
+
+m68ec020_device::m68ec020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68EC020", tag, owner, clock, M68EC020, 32,24, "m68ec020", __FILE__)
+{
+}
+
+void m68ec020_device::device_start()
+{
+ init_cpu_m68ec020();
+}
+
+m68030_device::m68030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68030", tag, owner, clock, M68030, 32,32, "m68030", __FILE__)
+{
+}
+
+void m68030_device::device_start()
+{
+ init_cpu_m68030();
+}
+
+m68ec030_device::m68ec030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68EC030", tag, owner, clock, M68EC030, 32,32, "m68ec030", __FILE__)
+{
+}
+
+void m68ec030_device::device_start()
+{
+ init_cpu_m68ec030();
+}
+
+m68040_device::m68040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68040", tag, owner, clock, M68040, 32,32, "m68040", __FILE__)
+{
+}
+
+
+void m68040_device::device_start()
+{
+ init_cpu_m68040();
+}
+
+
+
+m68ec040_device::m68ec040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68EC040", tag, owner, clock, M68EC040, 32,32, "m68ec040", __FILE__)
+{
+}
+
+void m68ec040_device::device_start()
+{
+ init_cpu_m68ec040();
+}
+
+
+
+m68lc040_device::m68lc040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "M68LC040", tag, owner, clock, M68LC040, 32,32, "m68lc040", __FILE__)
+{
+}
+
+void m68lc040_device::device_start()
+{
+ init_cpu_m68lc040();
+}
+
+
+scc68070_device::scc68070_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "SCC68070", tag, owner, clock, SCC68070, 16,32, "scc68070", __FILE__)
+{
+}
+
+void scc68070_device::device_start()
+{
+ init_cpu_scc68070();
+}
+
+
+fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "Freescale CPU32 Core", tag, owner, clock, FSCPU32, 32,32, "fscpu32", __FILE__)
+{
+}
+
+fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, uint32_t clock,
+ const device_type type, uint32_t prg_data_width, uint32_t prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
+ : m68000_base_device(mconfig, name, tag, owner, clock, type, prg_data_width, prg_address_bits, internal_map, shortname, source)
+{
+}
+
+
+void fscpu32_device::device_start()
+{
+ init_cpu_fscpu32();
+}
+
+
+
+mcf5206e_device::mcf5206e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : m68000_base_device(mconfig, "MCF5206E", tag, owner, clock, MCF5206E, 32,32, "mcf5206e", __FILE__)
+{
+}
+
+void mcf5206e_device::device_start()
+{
+ init_cpu_coldfire();
+}
diff --git a/docs/release/src/emu/digfx.h b/docs/release/src/emu/digfx.h
new file mode 100644
index 00000000000..3908103eb55
--- /dev/null
+++ b/docs/release/src/emu/digfx.h
@@ -0,0 +1,236 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria, Aaron Giles, Alex W. Jackson
+/***************************************************************************
+
+ digfx.h
+
+ Device graphics interfaces.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef MAME_EMU_DIGFX_H
+#define MAME_EMU_DIGFX_H
+
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+constexpr u8 MAX_GFX_ELEMENTS = 32;
+constexpr u16 MAX_GFX_PLANES = 8;
+// HBMAME - needed by monaco
+constexpr u16 MAX_GFX_SIZE = 64;
+
+
+
+//**************************************************************************
+// GRAPHICS LAYOUT MACROS
+//**************************************************************************
+
+#define EXTENDED_XOFFS { 0 }
+#define EXTENDED_YOFFS { 0 }
+
+#define GFX_RAW 0x12345678
+#define GFXLAYOUT_RAW( name, width, height, linemod, charmod ) \
+const gfx_layout name = { width, height, RGN_FRAC(1,1), 8, { GFX_RAW }, { 0 }, { linemod }, charmod };
+// When planeoffset[0] is set to GFX_RAW, the gfx data is left as-is, with no conversion.
+// No buffer is allocated for the decoded data, and gfxdata is set to point to the source
+// data.
+// yoffset[0] is the line modulo (*8) and charincrement the char modulo (*8). They are *8
+// for consistency with the usual behaviour, but the bottom 3 bits are not used.
+//
+// This special mode can be used for graphics that are already in 8bpp linear format,
+// or for unusual formats that don't fit our generic model and need to be decoded using
+// custom code. See blend_gfx() in atarigen.c for an example of the latter usage.
+
+
+// these macros describe gfx_layouts in terms of fractions of a region
+// they can be used for total, planeoffset, xoffset, yoffset
+#define RGN_FRAC(num,den) (0x80000000 | (((num) & 0x0f) << 27) | (((den) & 0x0f) << 23))
+#define IS_FRAC(offset) ((offset) & 0x80000000)
+#define FRAC_NUM(offset) (((offset) >> 27) & 0x0f)
+#define FRAC_DEN(offset) (((offset) >> 23) & 0x0f)
+#define FRAC_OFFSET(offset) ((offset) & 0x007fffff)
+
+// these macros are useful in gfx_layouts
+#define STEP2(START,STEP) (START),(START)+(STEP)
+#define STEP4(START,STEP) STEP2(START,STEP),STEP2((START)+2*(STEP),STEP)
+#define STEP8(START,STEP) STEP4(START,STEP),STEP4((START)+4*(STEP),STEP)
+#define STEP16(START,STEP) STEP8(START,STEP),STEP8((START)+8*(STEP),STEP)
+#define STEP32(START,STEP) STEP16(START,STEP),STEP16((START)+16*(STEP),STEP)
+#define STEP64(START,STEP) STEP32(START,STEP),STEP32((START)+32*(STEP),STEP)
+#define STEP128(START,STEP) STEP64(START,STEP),STEP64((START)+64*(STEP),STEP)
+#define STEP256(START,STEP) STEP128(START,STEP),STEP128((START)+128*(STEP),STEP)
+#define STEP512(START,STEP) STEP256(START,STEP),STEP256((START)+256*(STEP),STEP)
+#define STEP1024(START,STEP) STEP512(START,STEP),STEP512((START)+512*(STEP),STEP)
+#define STEP2048(START,STEP) STEP1024(START,STEP),STEP1024((START)+1024*(STEP),STEP)
+
+#define STEP2_INV(START,STEP) (START)+(STEP),(START)
+#define STEP4_INV(START,STEP) STEP2_INV(START+2*STEP,STEP),STEP2_INV(START,STEP)
+
+//**************************************************************************
+// GRAPHICS INFO MACROS
+//**************************************************************************
+
+// optional horizontal and vertical scaling factors
+#define GFXENTRY_XSCALEMASK 0x000000ff
+#define GFXENTRY_YSCALEMASK 0x0000ff00
+#define GFXENTRY_XSCALE(x) ((((x)-1) << 0) & GFXENTRY_XSCALEMASK)
+#define GFXENTRY_YSCALE(x) ((((x)-1) << 8) & GFXENTRY_YSCALEMASK)
+#define GFXENTRY_GETXSCALE(x) ((((x) & GFXENTRY_XSCALEMASK) >> 0) + 1)
+#define GFXENTRY_GETYSCALE(x) ((((x) & GFXENTRY_YSCALEMASK) >> 8) + 1)
+
+// GFXENTRY_RAM means region tag refers to a RAM share instead of a ROM region
+#define GFXENTRY_ROM 0x00000000
+#define GFXENTRY_RAM 0x00010000
+#define GFXENTRY_ISROM(x) (((x) & GFXENTRY_RAM) == 0)
+#define GFXENTRY_ISRAM(x) (((x) & GFXENTRY_RAM) != 0)
+
+// GFXENTRY_DEVICE means region tag is relative to this device instead of its owner
+#define GFXENTRY_DEVICE 0x00020000
+#define GFXENTRY_ISDEVICE(x) (((x) & GFXENTRY_DEVICE) != 0)
+
+// GFXENTRY_REVERSE reverses the bit order in the layout (0-7 = LSB-MSB instead of MSB-LSB)
+#define GFXENTRY_REVERSE 0x00040000
+#define GFXENTRY_ISREVERSE(x) (((x) & GFXENTRY_REVERSE) != 0)
+
+
+// these macros are used for declaring gfx_decode_entry info arrays
+#define GFXDECODE_NAME( name ) gfxdecodeinfo_##name
+#define GFXDECODE_EXTERN( name ) extern const gfx_decode_entry GFXDECODE_NAME(name)[]
+#define GFXDECODE_START( name ) const gfx_decode_entry GFXDECODE_NAME(name)[] = {
+#define GFXDECODE_END { 0 } };
+
+// use these to declare a gfx_decode_entry array as a member of a device class
+#define DECLARE_GFXDECODE_MEMBER( name ) static const gfx_decode_entry name[]
+#define GFXDECODE_MEMBER( name ) const gfx_decode_entry name[] = {
+// common gfx_decode_entry macros
+#define GFXDECODE_ENTRYX(region,offset,layout,start,colors,flags) { region, offset, &layout, start, colors, flags },
+#define GFXDECODE_ENTRY(region,offset,layout,start,colors) { region, offset, &layout, start, colors, 0 },
+
+// specialized gfx_decode_entry macros
+#define GFXDECODE_RAM(region,offset,layout,start,colors) { region, offset, &layout, start, colors, GFXENTRY_RAM },
+#define GFXDECODE_DEVICE(region,offset,layout,start,colors) { region, offset, &layout, start, colors, GFXENTRY_DEVICE },
+#define GFXDECODE_DEVICE_RAM(region,offset,layout,start,colors) { region, offset, &layout, start, colors, GFXENTRY_DEVICE | GFXENTRY_RAM },
+#define GFXDECODE_SCALE(region,offset,layout,start,colors,x,y) { region, offset, &layout, start, colors, GFXENTRY_XSCALE(x) | GFXENTRY_YSCALE(y) },
+#define GFXDECODE_REVERSEBITS(region,offset,layout,start,colors) { region, offset, &layout, start, colors, GFXENTRY_REVERSE },
+
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_GFX_PALETTE(_palette_tag) \
+ device_gfx_interface::static_set_palette(*device, _palette_tag);
+
+#define MCFG_GFX_INFO(_info) \
+ device_gfx_interface::static_set_info(*device, GFXDECODE_NAME(_info));
+
+
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_GFXDECODE_ADD(_tag, _palette_tag, _info) \
+ MCFG_DEVICE_ADD(_tag, GFXDECODE, 0) \
+ MCFG_GFX_PALETTE(_palette_tag) \
+ MCFG_GFX_INFO(_info)
+
+#define MCFG_GFXDECODE_MODIFY(_tag, _info) \
+ MCFG_DEVICE_MODIFY(_tag) \
+ MCFG_GFX_INFO(_info)
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// forward declarations
+class gfx_element;
+class device_palette_interface;
+
+struct gfx_layout
+{
+ u32 xoffs(int x) const { return (extxoffs != nullptr) ? extxoffs[x] : xoffset[x]; }
+ u32 yoffs(int y) const { return (extyoffs != nullptr) ? extyoffs[y] : yoffset[y]; }
+
+ u16 width; // pixel width of each element
+ u16 height; // pixel height of each element
+ u32 total; // total number of elements, or RGN_FRAC()
+ u16 planes; // number of bitplanes
+ u32 planeoffset[MAX_GFX_PLANES]; // bit offset of each bitplane
+ u32 xoffset[MAX_GFX_SIZE]; // bit offset of each horizontal pixel
+ u32 yoffset[MAX_GFX_SIZE]; // bit offset of each vertical pixel
+ u32 charincrement; // distance between two consecutive elements (in bits)
+ const u32 * extxoffs; // extended X offset array for really big layouts
+ const u32 * extyoffs; // extended Y offset array for really big layouts
+};
+
+struct gfx_decode_entry
+{
+ const char * memory_region; // memory region where the data resides
+ u32 start; // offset of beginning of data to decode
+ const gfx_layout *gfxlayout; // pointer to gfx_layout describing the layout; nullptr marks the end of the array
+ u16 color_codes_start; // offset in the color lookup table where color codes start
+ u16 total_color_codes; // total number of color codes
+ u32 flags; // flags and optional scaling factors
+};
+
+// ======================> device_gfx_interface
+
+class device_gfx_interface : public device_interface
+{
+public:
+ // construction/destruction
+ device_gfx_interface(const machine_config &mconfig, device_t &device,
+ const gfx_decode_entry *gfxinfo = nullptr, const char *palette_tag = nullptr);
+ virtual ~device_gfx_interface();
+
+ // static configuration
+ static void static_set_info(device_t &device, const gfx_decode_entry *gfxinfo);
+ static void static_set_palette(device_t &device, const char *tag);
+
+ // getters
+ device_palette_interface &palette() const { assert(m_palette != nullptr); return *m_palette; }
+ gfx_element *gfx(u8 index) const { assert(index < MAX_GFX_ELEMENTS); return m_gfx[index].get(); }
+
+ // decoding
+ void decode_gfx(const gfx_decode_entry *gfxdecodeinfo);
+ void decode_gfx() { decode_gfx(m_gfxdecodeinfo); }
+
+ void set_gfx(u8 index, std::unique_ptr<gfx_element> &&element) { assert(index < MAX_GFX_ELEMENTS); m_gfx[index] = std::move(element); }
+
+protected:
+ // interface-level overrides
+ virtual void interface_validity_check(validity_checker &valid) const override;
+ virtual void interface_pre_start() override;
+ virtual void interface_post_start() override;
+
+private:
+ device_palette_interface * m_palette; // pointer to the palette device interface
+ std::unique_ptr<gfx_element> m_gfx[MAX_GFX_ELEMENTS]; // array of pointers to graphic sets
+
+ // configuration
+ const gfx_decode_entry * m_gfxdecodeinfo; // pointer to array of gfx decode information
+ const char * m_palette_tag; // configured tag for palette device
+ bool m_palette_is_sibling; // is palette a sibling or a subdevice?
+
+ // internal state
+ bool m_decoded; // have we processed our decode info yet?
+};
+
+// iterator
+typedef device_interface_iterator<device_gfx_interface> gfx_interface_iterator;
+
+
+#endif /* MAME_EMU_DIGFX_H */
diff --git a/docs/release/src/emu/emuopts.cpp b/docs/release/src/emu/emuopts.cpp
new file mode 100644
index 00000000000..462b4f92413
--- /dev/null
+++ b/docs/release/src/emu/emuopts.cpp
@@ -0,0 +1,430 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ emuopts.cpp
+
+ Options file and command line management.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+
+
+//**************************************************************************
+// CORE EMULATOR OPTIONS
+//**************************************************************************
+
+const options_entry emu_options::s_option_entries[] =
+{
+ // unadorned options - only a single one supported at the moment
+ { OPTION_SYSTEMNAME, nullptr, OPTION_STRING, nullptr },
+ { OPTION_SOFTWARENAME, nullptr, OPTION_STRING, nullptr },
+
+ // config options
+ { nullptr, nullptr, OPTION_HEADER, "CORE CONFIGURATION OPTIONS" },
+ { OPTION_READCONFIG ";rc", "1", OPTION_BOOLEAN, "enable loading of configuration files" },
+ { OPTION_WRITECONFIG ";wc", "0", OPTION_BOOLEAN, "writes configuration to (driver).ini on exit" },
+
+ // search path options
+ { nullptr, nullptr, OPTION_HEADER, "CORE SEARCH PATH OPTIONS" },
+ { OPTION_HOMEPATH, ".", OPTION_STRING, "path to home directory (read/write) location" },
+ { OPTION_MEDIAPATH ";rp;biospath;bp", "roms", OPTION_STRING, "path to ROMsets and hard disk images" },
+ { OPTION_HASHPATH ";hash_directory;hash", "hash", OPTION_STRING, "path to hash files" },
+ { OPTION_SAMPLEPATH ";sp", "samples", OPTION_STRING, "path to samplesets" },
+ { OPTION_ARTPATH, "artwork", OPTION_STRING, "path to artwork files" },
+ { OPTION_CTRLRPATH, "ctrlr", OPTION_STRING, "path to controller definitions" },
+ { OPTION_INIPATH, ".", OPTION_STRING, "path to ini files" }, // MESSUI
+ { OPTION_FONTPATH, ".", OPTION_STRING, "path to font files" },
+ { OPTION_CHEATPATH, "cheat", OPTION_STRING, "path to cheat files" },
+ { OPTION_CROSSHAIRPATH, "crosshair", OPTION_STRING, "path to crosshair files" },
+ { OPTION_PLUGINSPATH, "plugins", OPTION_STRING, "path to plugin files" },
+ { OPTION_LANGUAGEPATH, "language", OPTION_STRING, "path to language files" },
+ { OPTION_SWPATH, "software", OPTION_STRING, "path to loose software" },
+
+ // output directory options
+ { nullptr, nullptr, OPTION_HEADER, "CORE OUTPUT DIRECTORY OPTIONS" },
+ { OPTION_CFG_DIRECTORY, "cfg", OPTION_STRING, "directory to save configurations" },
+ { OPTION_NVRAM_DIRECTORY, "nvram", OPTION_STRING, "directory to save nvram contents" },
+ { OPTION_INPUT_DIRECTORY, "inp", OPTION_STRING, "directory to save input device logs" },
+ { OPTION_STATE_DIRECTORY, "sta", OPTION_STRING, "directory to save states" },
+ { OPTION_SNAPSHOT_DIRECTORY, "snap", OPTION_STRING, "directory to save/load screenshots" },
+ { OPTION_DIFF_DIRECTORY, "diff", OPTION_STRING, "directory to save hard drive image difference files" },
+ { OPTION_COMMENT_DIRECTORY, "comments", OPTION_STRING, "directory to save debugger comments" },
+
+ // state/playback options
+ { nullptr, nullptr, OPTION_HEADER, "CORE STATE/PLAYBACK OPTIONS" },
+ { OPTION_STATE, nullptr, OPTION_STRING, "saved state to load" },
+ { OPTION_AUTOSAVE, "0", OPTION_BOOLEAN, "enable automatic restore at startup, and automatic save at exit time" },
+ { OPTION_PLAYBACK ";pb", nullptr, OPTION_STRING, "playback an input file" },
+ { OPTION_RECORD ";rec", nullptr, OPTION_STRING, "record an input file" },
+ { OPTION_RECORD_TIMECODE, "0", OPTION_BOOLEAN, "record an input timecode file (requires -record option)" },
+ { OPTION_EXIT_AFTER_PLAYBACK, "0", OPTION_BOOLEAN, "close the program at the end of playback" },
+
+ { OPTION_MNGWRITE, nullptr, OPTION_STRING, "optional filename to write a MNG movie of the current session" },
+ { OPTION_AVIWRITE, nullptr, OPTION_STRING, "optional filename to write an AVI movie of the current session" },
+ { OPTION_WAVWRITE, nullptr, OPTION_STRING, "optional filename to write a WAV file of the current session" },
+ { OPTION_SNAPNAME, "%g/%i", OPTION_STRING, "override of the default snapshot/movie naming; %g == gamename, %i == index" },
+ { OPTION_SNAPSIZE, "auto", OPTION_STRING, "specify snapshot/movie resolution (<width>x<height>) or 'auto' to use minimal size " },
+ { OPTION_SNAPVIEW, "internal", OPTION_STRING, "specify snapshot/movie view or 'internal' to use internal pixel-aspect views" },
+ { OPTION_SNAPBILINEAR, "1", OPTION_BOOLEAN, "specify if the snapshot/movie should have bilinear filtering applied" },
+ { OPTION_STATENAME, "%g", OPTION_STRING, "override of the default state subfolder naming; %g == gamename" },
+ { OPTION_BURNIN, "0", OPTION_BOOLEAN, "create burn-in snapshots for each screen" },
+
+ // performance options
+ { nullptr, nullptr, OPTION_HEADER, "CORE PERFORMANCE OPTIONS" },
+ { OPTION_AUTOFRAMESKIP ";afs", "0", OPTION_BOOLEAN, "enable automatic frameskip selection" },
+ { OPTION_FRAMESKIP ";fs(0-10)", "0", OPTION_INTEGER, "set frameskip to fixed value, 0-10 (autoframeskip must be disabled)" },
+ { OPTION_SECONDS_TO_RUN ";str", "0", OPTION_INTEGER, "number of emulated seconds to run before automatically exiting" },
+ { OPTION_THROTTLE, "1", OPTION_BOOLEAN, "enable throttling to keep game running in sync with real time" },
+ { OPTION_SLEEP, "1", OPTION_BOOLEAN, "enable sleeping, which gives time back to other applications when idle" },
+ { OPTION_SPEED "(0.01-100)", "1.0", OPTION_FLOAT, "controls the speed of gameplay, relative to realtime; smaller numbers are slower" },
+ { OPTION_REFRESHSPEED ";rs", "0", OPTION_BOOLEAN, "automatically adjusts the speed of gameplay to keep the refresh rate lower than the screen" },
+
+ // render options
+ { nullptr, nullptr, OPTION_HEADER, "CORE RENDER OPTIONS" },
+ { OPTION_KEEPASPECT ";ka", "1", OPTION_BOOLEAN, "constrain to the proper aspect ratio" },
+ { OPTION_UNEVENSTRETCH ";ues", "1", OPTION_BOOLEAN, "allow non-integer stretch factors" },
+ { OPTION_UNEVENSTRETCHX ";uesx", "0", OPTION_BOOLEAN, "allow non-integer stretch factors only on horizontal axis"},
+ { OPTION_UNEVENSTRETCHY ";uesy", "0", OPTION_BOOLEAN, "allow non-integer stretch factors only on vertical axis"},
+ { OPTION_AUTOSTRETCHXY ";asxy", "0", OPTION_BOOLEAN, "automatically apply -unevenstretchx/y based on source native orientation"},
+ { OPTION_INTOVERSCAN ";ios", "0", OPTION_BOOLEAN, "allow overscan on integer scaled targets"},
+ { OPTION_INTSCALEX ";sx", "0", OPTION_INTEGER, "set horizontal integer scale factor."},
+ { OPTION_INTSCALEY ";sy", "0", OPTION_INTEGER, "set vertical integer scale."},
+
+ // rotation options
+ { nullptr, nullptr, OPTION_HEADER, "CORE ROTATION OPTIONS" },
+ { OPTION_ROTATE, "1", OPTION_BOOLEAN, "rotate the game screen according to the game's orientation needs it" },
+ { OPTION_ROR, "0", OPTION_BOOLEAN, "rotate screen clockwise 90 degrees" },
+ { OPTION_ROL, "0", OPTION_BOOLEAN, "rotate screen counterclockwise 90 degrees" },
+ { OPTION_AUTOROR, "0", OPTION_BOOLEAN, "automatically rotate screen clockwise 90 degrees if vertical" },
+ { OPTION_AUTOROL, "0", OPTION_BOOLEAN, "automatically rotate screen counterclockwise 90 degrees if vertical" },
+ { OPTION_FLIPX, "0", OPTION_BOOLEAN, "flip screen left-right" },
+ { OPTION_FLIPY, "0", OPTION_BOOLEAN, "flip screen upside-down" },
+
+ // artwork options
+ { nullptr, nullptr, OPTION_HEADER, "CORE ARTWORK OPTIONS" },
+ { OPTION_ARTWORK_CROP ";artcrop", "0", OPTION_BOOLEAN, "crop artwork to game screen size" },
+ { OPTION_USE_BACKDROPS ";backdrop", "1", OPTION_BOOLEAN, "enable backdrops if artwork is enabled and available" },
+ { OPTION_USE_OVERLAYS ";overlay", "1", OPTION_BOOLEAN, "enable overlays if artwork is enabled and available" },
+ { OPTION_USE_BEZELS ";bezel", "1", OPTION_BOOLEAN, "enable bezels if artwork is enabled and available" },
+ { OPTION_USE_CPANELS ";cpanel", "1", OPTION_BOOLEAN, "enable cpanels if artwork is enabled and available" },
+ { OPTION_USE_MARQUEES ";marquee", "1", OPTION_BOOLEAN, "enable marquees if artwork is enabled and available" },
+
+ // screen options
+ { nullptr, nullptr, OPTION_HEADER, "CORE SCREEN OPTIONS" },
+ { OPTION_BRIGHTNESS "(0.1-2.0)", "1.0", OPTION_FLOAT, "default game screen brightness correction" },
+ { OPTION_CONTRAST "(0.1-2.0)", "1.0", OPTION_FLOAT, "default game screen contrast correction" },
+ { OPTION_GAMMA "(0.1-3.0)", "1.0", OPTION_FLOAT, "default game screen gamma correction" },
+ { OPTION_PAUSE_BRIGHTNESS "(0.0-1.0)", "0.65", OPTION_FLOAT, "amount to scale the screen brightness when paused" },
+ { OPTION_EFFECT, "none", OPTION_STRING, "name of a PNG file to use for visual effects, or 'none'" },
+
+ // vector options
+ { nullptr, nullptr, OPTION_HEADER, "CORE VECTOR OPTIONS" },
+ { OPTION_BEAM_WIDTH_MIN, "1.0", OPTION_FLOAT, "set vector beam width minimum" },
+ { OPTION_BEAM_WIDTH_MAX, "1.0", OPTION_FLOAT, "set vector beam width maximum" },
+ { OPTION_BEAM_INTENSITY_WEIGHT, "0", OPTION_FLOAT, "set vector beam intensity weight " },
+ { OPTION_FLICKER, "0", OPTION_FLOAT, "set vector flicker effect" },
+
+ // sound options
+ { nullptr, nullptr, OPTION_HEADER, "CORE SOUND OPTIONS" },
+ { OPTION_SAMPLERATE ";sr(1000-1000000)", "48000", OPTION_INTEGER, "set sound output sample rate" },
+ { OPTION_SAMPLES, "1", OPTION_BOOLEAN, "enable the use of external samples if available" },
+ { OPTION_VOLUME ";vol", "0", OPTION_INTEGER, "sound volume in decibels (-32 min, 0 max)" },
+
+ // input options
+ { nullptr, nullptr, OPTION_HEADER, "CORE INPUT OPTIONS" },
+ { OPTION_COIN_LOCKOUT ";coinlock", "1", OPTION_BOOLEAN, "enable coin lockouts to actually lock out coins" },
+ { OPTION_CTRLR, nullptr, OPTION_STRING, "preconfigure for specified controller" },
+ { OPTION_MOUSE, "0", OPTION_BOOLEAN, "enable mouse input" },
+ { OPTION_JOYSTICK ";joy", "1", OPTION_BOOLEAN, "enable joystick input" },
+ { OPTION_LIGHTGUN ";gun", "0", OPTION_BOOLEAN, "enable lightgun input" },
+ { OPTION_MULTIKEYBOARD ";multikey", "0", OPTION_BOOLEAN, "enable separate input from each keyboard device (if present)" },
+ { OPTION_MULTIMOUSE, "0", OPTION_BOOLEAN, "enable separate input from each mouse device (if present)" },
+ { OPTION_STEADYKEY ";steady", "0", OPTION_BOOLEAN, "enable steadykey support" },
+ { OPTION_UI_ACTIVE, "0", OPTION_BOOLEAN, "enable user interface on top of emulated keyboard (if present)" },
+ { OPTION_OFFSCREEN_RELOAD ";reload", "0", OPTION_BOOLEAN, "convert lightgun button 2 into offscreen reload" },
+ { OPTION_JOYSTICK_MAP ";joymap", "auto", OPTION_STRING, "explicit joystick map, or auto to auto-select" },
+ { OPTION_JOYSTICK_DEADZONE ";joy_deadzone;jdz(0.00-1)", "0.3", OPTION_FLOAT, "center deadzone range for joystick where change is ignored (0.0 center, 1.0 end)" },
+ { OPTION_JOYSTICK_SATURATION ";joy_saturation;jsat(0.00-1)", "0.85", OPTION_FLOAT, "end of axis saturation range for joystick where change is ignored (0.0 center, 1.0 end)" },
+ { OPTION_NATURAL_KEYBOARD ";nat", "0", OPTION_BOOLEAN, "specifies whether to use a natural keyboard or not" },
+ { OPTION_JOYSTICK_CONTRADICTORY ";joy_contradictory","0", OPTION_BOOLEAN, "enable contradictory direction digital joystick input at the same time" },
+ { OPTION_COIN_IMPULSE, "0", OPTION_INTEGER, "set coin impulse time (n<0 disable impulse, n==0 obey driver, 0<n set time n)" },
+
+ // input autoenable options
+ { nullptr, nullptr, OPTION_HEADER, "CORE INPUT AUTOMATIC ENABLE OPTIONS" },
+ { OPTION_PADDLE_DEVICE ";paddle", "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a paddle control is present" },
+ { OPTION_ADSTICK_DEVICE ";adstick", "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if an analog joystick control is present" },
+ { OPTION_PEDAL_DEVICE ";pedal", "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a pedal control is present" },
+ { OPTION_DIAL_DEVICE ";dial", "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a dial control is present" },
+ { OPTION_TRACKBALL_DEVICE ";trackball", "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a trackball control is present" },
+ { OPTION_LIGHTGUN_DEVICE, "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a lightgun control is present" },
+ { OPTION_POSITIONAL_DEVICE, "keyboard", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a positional control is present" },
+ { OPTION_MOUSE_DEVICE, "mouse", OPTION_STRING, "enable (none|keyboard|mouse|lightgun|joystick) if a mouse control is present" },
+
+ // debugging options
+ { nullptr, nullptr, OPTION_HEADER, "CORE DEBUGGING OPTIONS" },
+ { OPTION_VERBOSE ";v", "0", OPTION_BOOLEAN, "display additional diagnostic information" },
+ { OPTION_LOG, "0", OPTION_BOOLEAN, "generate an error.log file" },
+ { OPTION_OSLOG, "0", OPTION_BOOLEAN, "output error.log data to the system debugger" },
+ { OPTION_DEBUG ";d", "0", OPTION_BOOLEAN, "enable/disable debugger" },
+ { OPTION_UPDATEINPAUSE, "0", OPTION_BOOLEAN, "keep calling video updates while in pause" },
+ { OPTION_DEBUGSCRIPT, nullptr, OPTION_STRING, "script for debugger" },
+
+ // comm options
+ { nullptr, nullptr, OPTION_HEADER, "CORE COMM OPTIONS" },
+ { OPTION_COMM_LOCAL_HOST, "0.0.0.0", OPTION_STRING, "local address to bind to" },
+ { OPTION_COMM_LOCAL_PORT, "15112", OPTION_STRING, "local port to bind to" },
+ { OPTION_COMM_REMOTE_HOST, "127.0.0.1", OPTION_STRING, "remote address to connect to" },
+ { OPTION_COMM_REMOTE_PORT, "15112", OPTION_STRING, "remote port to connect to" },
+
+ // misc options
+ { nullptr, nullptr, OPTION_HEADER, "CORE MISC OPTIONS" },
+ { OPTION_DRC, "1", OPTION_BOOLEAN, "enable DRC cpu core if available" },
+ { OPTION_DRC_USE_C, "0", OPTION_BOOLEAN, "force DRC use C backend" },
+ { OPTION_DRC_LOG_UML, "0", OPTION_BOOLEAN, "write DRC UML disassembly log" },
+ { OPTION_DRC_LOG_NATIVE, "0", OPTION_BOOLEAN, "write DRC native disassembly log" },
+ { OPTION_BIOS, nullptr, OPTION_STRING, "select the system BIOS to use" },
+ { OPTION_CHEAT ";c", "0", OPTION_BOOLEAN, "enable cheat subsystem" },
+ { OPTION_SKIP_GAMEINFO, "0", OPTION_BOOLEAN, "skip displaying the information screen at startup" },
+ { OPTION_UI_FONT, "default", OPTION_STRING, "specify a font to use" },
+ { OPTION_UI, "cabinet", OPTION_STRING, "type of UI (simple|cabinet)" },
+ { OPTION_RAMSIZE ";ram", nullptr, OPTION_STRING, "size of RAM (if supported by driver)" },
+ { OPTION_CONFIRM_QUIT, "0", OPTION_BOOLEAN, "display confirm quit screen on exit" },
+ { OPTION_UI_MOUSE, "1", OPTION_BOOLEAN, "display ui mouse cursor" },
+ { OPTION_AUTOBOOT_COMMAND ";ab", nullptr, OPTION_STRING, "command to execute after machine boot" },
+ { OPTION_AUTOBOOT_DELAY, "0", OPTION_INTEGER, "timer delay in sec to trigger command execution on autoboot" },
+ { OPTION_AUTOBOOT_SCRIPT ";script", nullptr, OPTION_STRING, "lua script to execute after machine boot" },
+ { OPTION_CONSOLE, "0", OPTION_BOOLEAN, "enable emulator LUA console" },
+ { OPTION_PLUGINS, "1", OPTION_BOOLEAN, "enable LUA plugin support" },
+ { OPTION_PLUGIN, nullptr, OPTION_STRING, "list of plugins to enable" },
+ { OPTION_NO_PLUGIN, nullptr, OPTION_STRING, "list of plugins to disable" },
+ { OPTION_LANGUAGE ";lang", "English", OPTION_STRING, "display language" },
+
+ { nullptr, nullptr, OPTION_HEADER, "HTTP SERVER OPTIONS" },
+ { OPTION_HTTP, "0", OPTION_BOOLEAN, "HTTP server enable" },
+ { OPTION_HTTP_PORT, "8080", OPTION_INTEGER, "HTTP server port" },
+ { OPTION_HTTP_ROOT, "web", OPTION_STRING, "HTTP server document root" },
+
+ { nullptr }
+};
+
+
+
+//**************************************************************************
+// EMU OPTIONS
+//**************************************************************************
+
+//-------------------------------------------------
+// emu_options - constructor
+//-------------------------------------------------
+
+emu_options::emu_options()
+: core_options()
+, m_coin_impulse(0)
+, m_joystick_contradictory(false)
+, m_sleep(true)
+, m_refresh_speed(false)
+, m_ui(UI_CABINET)
+{
+ add_entries(emu_options::s_option_entries);
+}
+
+
+//-------------------------------------------------
+// value_changed - to prevent tagmap
+// lookups keep copies of frequently requested
+// options in member variables.
+//-------------------------------------------------
+
+void emu_options::value_changed(const std::string &name, const std::string &value)
+{
+ if (name == OPTION_COIN_IMPULSE)
+ {
+ m_coin_impulse = int_value(OPTION_COIN_IMPULSE);
+ }
+ else if (name == OPTION_JOYSTICK_CONTRADICTORY)
+ {
+ m_joystick_contradictory = bool_value(OPTION_JOYSTICK_CONTRADICTORY);
+ }
+ else if (name == OPTION_SLEEP)
+ {
+ m_sleep = bool_value(OPTION_SLEEP);
+ }
+ else if (name == OPTION_REFRESHSPEED)
+ {
+ m_refresh_speed = bool_value(OPTION_REFRESHSPEED);
+ }
+ else if (name == OPTION_UI)
+ {
+ if (value == "simple")
+ m_ui = UI_SIMPLE;
+ else
+ m_ui = UI_CABINET;
+ }
+}
+
+
+//-------------------------------------------------
+// override_get_value - when saving to an INI, we
+// need to hook into that process so we can write
+// out image/slot options
+//-------------------------------------------------
+
+core_options::override_get_value_result emu_options::override_get_value(const char *name, std::string &value) const
+{
+ if (name)
+ {
+ auto slotiter = m_slot_options.find(name);
+ if (slotiter != m_slot_options.end())
+ {
+ value = slotiter->second.specified_value();
+ return slotiter->second.specified()
+ ? override_get_value_result::OVERRIDE
+ : override_get_value_result::SKIP;
+ }
+
+ auto imageiter = m_image_options.find(name);
+ if (imageiter != m_image_options.end())
+ {
+ value = imageiter->second;
+ return override_get_value_result::OVERRIDE;
+ }
+ }
+
+ return override_get_value_result::NONE;
+}
+
+
+//-------------------------------------------------
+// override_set_value - when parsing an INI, we
+// need to hook into into it so we can do the same
+// crazy slot logic done in mameopt
+//-------------------------------------------------
+
+bool emu_options::override_set_value(const char *name, const std::string &value)
+{
+ auto slotiter = m_slot_options.find(name);
+ if (slotiter != m_slot_options.end())
+ {
+ slotiter->second.specify(std::string(value));
+ return true;
+ }
+
+ auto imageiter = m_image_options.find(name);
+ if (imageiter != m_image_options.end())
+ {
+ // We've found a potential image slot for this value. However, we're only going to specify it
+ // if the current image option is empty. This is because if there is an image option already
+ // present, it is almost certain that this was because something was specified at the command
+ // line and we're parsing an INI. Because INIs have less priority than the command line, this
+ // should be ignored
+ //
+ // Obviously, this ignores that INIs themselves have their own prioritization, so this should be
+ // considered to be a hack. Instead of having image options being just a straight map of std::string
+ // it should really be a structure where the priority can be recorded
+ if (imageiter->second.empty())
+ imageiter->second = value;
+ return true;
+ }
+
+ return false;
+}
+
+
+//-------------------------------------------------
+// slot_option ctor
+//-------------------------------------------------
+
+slot_option::slot_option(const char *default_value)
+ : m_specified(false)
+ , m_default_value(default_value ? default_value : "")
+{
+}
+
+
+//-------------------------------------------------
+// slot_option::value
+//-------------------------------------------------
+
+const std::string &slot_option::value() const
+{
+ // There are a number of ways that the value can be determined; there
+ // is a specific order of precedence:
+ //
+ // 1. Highest priority is whatever may have been specified by the user (whether it
+ // was specified at the command line, an INI file, or in the UI). We keep track
+ // of whether these values were specified this way
+ //
+ // Take note that slots have a notion of being "selectable". Slots that are not
+ // marked as selectable cannot be specified with this technique
+ //
+ // 2. Next highest is what is returned from get_default_card_software()
+ //
+ // 3. Last in priority is what was specified as the slot default. This comes from
+ // device setup
+ if (m_specified)
+ return m_specified_value;
+ else if (!m_default_card_software.empty())
+ return m_default_card_software;
+ else
+ return m_default_value;
+}
+
+
+//-------------------------------------------------
+// slot_option::specified_value
+//-------------------------------------------------
+
+std::string slot_option::specified_value() const
+{
+ std::string result;
+ if (m_specified)
+ {
+ result = m_specified_bios.empty()
+ ? m_specified_value
+ : util::string_format("%s,bios=%s", m_specified_value, m_specified_bios);
+ }
+ return result;
+}
+
+
+//-------------------------------------------------
+// slot_option::specify
+//-------------------------------------------------
+
+void slot_option::specify(std::string &&text)
+{
+ // we need to do some elementary parsing here
+ const char *bios_arg = ",bios=";
+
+ size_t pos = text.find(bios_arg);
+ if (pos != std::string::npos)
+ {
+ m_specified = true;
+ m_specified_value = text.substr(0, pos);
+ m_specified_bios = text.substr(pos + strlen(bios_arg));
+ }
+ else
+ {
+ m_specified = true;
+ m_specified_value = std::move(text);
+ m_specified_bios = "";
+ }
+}
+
+
+//-------------------------------------------------
+// slot_option::set_bios
+//-------------------------------------------------
+
+void slot_option::set_bios(std::string &&text)
+{
+ if (!m_specified)
+ {
+ m_specified = true;
+ m_specified_value = value();
+ }
+ m_specified_bios = std::move(text);
+}
diff --git a/docs/release/src/emu/emuopts.h b/docs/release/src/emu/emuopts.h
new file mode 100644
index 00000000000..e592d04d6e3
--- /dev/null
+++ b/docs/release/src/emu/emuopts.h
@@ -0,0 +1,462 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ emuopts.h
+
+ Options file and command line management.
+
+***************************************************************************/
+
+#ifndef MAME_EMU_EMUOPTS_H
+#define MAME_EMU_EMUOPTS_H
+
+#pragma once
+
+#include "options.h"
+
+#define OPTION_PRIORITY_CMDLINE OPTION_PRIORITY_HIGH + 1
+// core options
+#define OPTION_SYSTEMNAME core_options::unadorned(0)
+#define OPTION_SOFTWARENAME core_options::unadorned(1)
+
+// core configuration options
+#define OPTION_READCONFIG "readconfig"
+#define OPTION_WRITECONFIG "writeconfig"
+
+// core search path options
+#define OPTION_HOMEPATH "homepath"
+#define OPTION_MEDIAPATH "rompath"
+#define OPTION_HASHPATH "hashpath"
+#define OPTION_SAMPLEPATH "samplepath"
+#define OPTION_ARTPATH "artpath"
+#define OPTION_CTRLRPATH "ctrlrpath"
+#define OPTION_INIPATH "inipath"
+#define OPTION_FONTPATH "fontpath"
+#define OPTION_CHEATPATH "cheatpath"
+#define OPTION_CROSSHAIRPATH "crosshairpath"
+#define OPTION_PLUGINSPATH "pluginspath"
+#define OPTION_LANGUAGEPATH "languagepath"
+#define OPTION_SWPATH "swpath"
+
+// core directory options
+#define OPTION_CFG_DIRECTORY "cfg_directory"
+#define OPTION_NVRAM_DIRECTORY "nvram_directory"
+#define OPTION_INPUT_DIRECTORY "input_directory"
+#define OPTION_STATE_DIRECTORY "state_directory"
+#define OPTION_SNAPSHOT_DIRECTORY "snapshot_directory"
+#define OPTION_DIFF_DIRECTORY "diff_directory"
+#define OPTION_COMMENT_DIRECTORY "comment_directory"
+
+// core state/playback options
+#define OPTION_STATE "state"
+#define OPTION_AUTOSAVE "autosave"
+#define OPTION_PLAYBACK "playback"
+#define OPTION_RECORD "record"
+#define OPTION_RECORD_TIMECODE "record_timecode"
+#define OPTION_EXIT_AFTER_PLAYBACK "exit_after_playback"
+#define OPTION_MNGWRITE "mngwrite"
+#define OPTION_AVIWRITE "aviwrite"
+#define OPTION_WAVWRITE "wavwrite"
+#define OPTION_SNAPNAME "snapname"
+#define OPTION_SNAPSIZE "snapsize"
+#define OPTION_SNAPVIEW "snapview"
+#define OPTION_SNAPBILINEAR "snapbilinear"
+#define OPTION_STATENAME "statename"
+#define OPTION_BURNIN "burnin"
+
+// core performance options
+#define OPTION_AUTOFRAMESKIP "autoframeskip"
+#define OPTION_FRAMESKIP "frameskip"
+#define OPTION_SECONDS_TO_RUN "seconds_to_run"
+#define OPTION_THROTTLE "throttle"
+#define OPTION_SLEEP "sleep"
+#define OPTION_SPEED "speed"
+#define OPTION_REFRESHSPEED "refreshspeed"
+
+// core render options
+#define OPTION_KEEPASPECT "keepaspect"
+#define OPTION_UNEVENSTRETCH "unevenstretch"
+#define OPTION_UNEVENSTRETCHX "unevenstretchx"
+#define OPTION_UNEVENSTRETCHY "unevenstretchy"
+#define OPTION_AUTOSTRETCHXY "autostretchxy"
+#define OPTION_INTOVERSCAN "intoverscan"
+#define OPTION_INTSCALEX "intscalex"
+#define OPTION_INTSCALEY "intscaley"
+
+// core rotation options
+#define OPTION_ROTATE "rotate"
+#define OPTION_ROR "ror"
+#define OPTION_ROL "rol"
+#define OPTION_AUTOROR "autoror"
+#define OPTION_AUTOROL "autorol"
+#define OPTION_FLIPX "flipx"
+#define OPTION_FLIPY "flipy"
+
+// core artwork options
+#define OPTION_ARTWORK_CROP "artwork_crop"
+#define OPTION_USE_BACKDROPS "use_backdrops"
+#define OPTION_USE_OVERLAYS "use_overlays"
+#define OPTION_USE_BEZELS "use_bezels"
+#define OPTION_USE_CPANELS "use_cpanels"
+#define OPTION_USE_MARQUEES "use_marquees"
+
+// core screen options
+#define OPTION_BRIGHTNESS "brightness"
+#define OPTION_CONTRAST "contrast"
+#define OPTION_GAMMA "gamma"
+#define OPTION_PAUSE_BRIGHTNESS "pause_brightness"
+#define OPTION_EFFECT "effect"
+
+// core vector options
+#define OPTION_BEAM_WIDTH_MIN "beam_width_min"
+#define OPTION_BEAM_WIDTH_MAX "beam_width_max"
+#define OPTION_BEAM_INTENSITY_WEIGHT "beam_intensity_weight"
+#define OPTION_FLICKER "flicker"
+
+// core sound options
+#define OPTION_SAMPLERATE "samplerate"
+#define OPTION_SAMPLES "samples"
+#define OPTION_VOLUME "volume"
+
+// core input options
+#define OPTION_COIN_LOCKOUT "coin_lockout"
+#define OPTION_CTRLR "ctrlr"
+#define OPTION_MOUSE "mouse"
+#define OPTION_JOYSTICK "joystick"
+#define OPTION_LIGHTGUN "lightgun"
+#define OPTION_MULTIKEYBOARD "multikeyboard"
+#define OPTION_MULTIMOUSE "multimouse"
+#define OPTION_STEADYKEY "steadykey"
+#define OPTION_UI_ACTIVE "ui_active"
+#define OPTION_OFFSCREEN_RELOAD "offscreen_reload"
+#define OPTION_JOYSTICK_MAP "joystick_map"
+#define OPTION_JOYSTICK_DEADZONE "joystick_deadzone"
+#define OPTION_JOYSTICK_SATURATION "joystick_saturation"
+#define OPTION_NATURAL_KEYBOARD "natural"
+#define OPTION_JOYSTICK_CONTRADICTORY "joystick_contradictory"
+#define OPTION_COIN_IMPULSE "coin_impulse"
+
+// input autoenable options
+#define OPTION_PADDLE_DEVICE "paddle_device"
+#define OPTION_ADSTICK_DEVICE "adstick_device"
+#define OPTION_PEDAL_DEVICE "pedal_device"
+#define OPTION_DIAL_DEVICE "dial_device"
+#define OPTION_TRACKBALL_DEVICE "trackball_device"
+#define OPTION_LIGHTGUN_DEVICE "lightgun_device"
+#define OPTION_POSITIONAL_DEVICE "positional_device"
+#define OPTION_MOUSE_DEVICE "mouse_device"
+
+// core debugging options
+#define OPTION_LOG "log"
+#define OPTION_DEBUG "debug"
+#define OPTION_VERBOSE "verbose"
+#define OPTION_OSLOG "oslog"
+#define OPTION_UPDATEINPAUSE "update_in_pause"
+#define OPTION_DEBUGSCRIPT "debugscript"
+
+// core misc options
+#define OPTION_DRC "drc"
+#define OPTION_DRC_USE_C "drc_use_c"
+#define OPTION_DRC_LOG_UML "drc_log_uml"
+#define OPTION_DRC_LOG_NATIVE "drc_log_native"
+#define OPTION_BIOS "bios"
+#define OPTION_CHEAT "cheat"
+#define OPTION_SKIP_GAMEINFO "skip_gameinfo"
+#define OPTION_UI_FONT "uifont"
+#define OPTION_UI "ui"
+#define OPTION_RAMSIZE "ramsize"
+
+// core comm options
+#define OPTION_COMM_LOCAL_HOST "comm_localhost"
+#define OPTION_COMM_LOCAL_PORT "comm_localport"
+#define OPTION_COMM_REMOTE_HOST "comm_remotehost"
+#define OPTION_COMM_REMOTE_PORT "comm_remoteport"
+
+#define OPTION_CONFIRM_QUIT "confirm_quit"
+#define OPTION_UI_MOUSE "ui_mouse"
+
+#define OPTION_AUTOBOOT_COMMAND "autoboot_command"
+#define OPTION_AUTOBOOT_DELAY "autoboot_delay"
+#define OPTION_AUTOBOOT_SCRIPT "autoboot_script"
+
+#define OPTION_CONSOLE "console"
+#define OPTION_PLUGINS "plugins"
+#define OPTION_PLUGIN "plugin"
+#define OPTION_NO_PLUGIN "noplugin"
+
+#define OPTION_LANGUAGE "language"
+
+#define OPTION_HTTP "http"
+#define OPTION_HTTP_PORT "http_port"
+#define OPTION_HTTP_ROOT "http_root"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class slot_option
+{
+public:
+ slot_option(const char *default_value = nullptr);
+ slot_option(const slot_option &that) = default;
+ slot_option(slot_option &&that) = default;
+
+ const slot_option &operator=(const slot_option &that)
+ {
+ m_specified = that.m_specified;
+ m_specified_value = that.m_specified_value;
+ m_specified_bios = that.m_specified_bios;
+ m_default_card_software = that.m_default_card_software;
+ m_default_value = that.m_default_value;
+ return *this;
+ }
+
+ const slot_option &operator=(slot_option &&that)
+ {
+ m_specified = that.m_specified;
+ m_specified_value = std::move(that.m_specified_value);
+ m_specified_bios = std::move(that.m_specified_bios);
+ m_default_card_software = std::move(that.m_default_card_software);
+ m_default_value = std::move(that.m_default_value);
+ return *this;
+ }
+
+ // accessors
+ const std::string &value() const;
+ std::string specified_value() const;
+ const std::string &bios() const { return m_specified_bios; }
+ const std::string &default_card_software() const { return m_default_card_software; }
+ bool specified() const { return m_specified; }
+
+ // seters
+ void specify(std::string &&text);
+ void set_bios(std::string &&text);
+ void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); }
+
+private:
+ bool m_specified;
+ std::string m_specified_value;
+ std::string m_specified_bios;
+ std::string m_default_card_software;
+ std::string m_default_value;
+};
+
+
+class emu_options : public core_options
+{
+public:
+ enum ui_option
+ {
+ UI_CABINET,
+ UI_SIMPLE
+ };
+
+ // construction/destruction
+ emu_options();
+
+ // core options
+ const char *system_name() const { return value(OPTION_SYSTEMNAME); }
+ const char *software_name() const { return value(OPTION_SOFTWARENAME); }
+
+ // core configuration options
+ bool read_config() const { return bool_value(OPTION_READCONFIG); }
+ bool write_config() const { return bool_value(OPTION_WRITECONFIG); }
+
+ // core search path options
+ const char *home_path() const { return value(OPTION_HOMEPATH); }
+ const char *media_path() const { return value(OPTION_MEDIAPATH); }
+ const char *hash_path() const { return value(OPTION_HASHPATH); }
+ const char *sample_path() const { return value(OPTION_SAMPLEPATH); }
+ const char *art_path() const { return value(OPTION_ARTPATH); }
+ const char *ctrlr_path() const { return value(OPTION_CTRLRPATH); }
+ const char *ini_path() const { return value(OPTION_INIPATH); }
+ const char *font_path() const { return value(OPTION_FONTPATH); }
+ const char *cheat_path() const { return value(OPTION_CHEATPATH); }
+ const char *crosshair_path() const { return value(OPTION_CROSSHAIRPATH); }
+ const char *plugins_path() const { return value(OPTION_PLUGINSPATH); }
+ const char *language_path() const { return value(OPTION_LANGUAGEPATH); }
+ const char *sw_path() const { return value(OPTION_SWPATH); }
+
+ // core directory options
+ const char *cfg_directory() const { return value(OPTION_CFG_DIRECTORY); }
+ const char *nvram_directory() const { return value(OPTION_NVRAM_DIRECTORY); }
+ const char *input_directory() const { return value(OPTION_INPUT_DIRECTORY); }
+ const char *state_directory() const { return value(OPTION_STATE_DIRECTORY); }
+ const char *snapshot_directory() const { return value(OPTION_SNAPSHOT_DIRECTORY); }
+ const char *diff_directory() const { return value(OPTION_DIFF_DIRECTORY); }
+ const char *comment_directory() const { return value(OPTION_COMMENT_DIRECTORY); }
+
+ // core state/playback options
+ const char *state() const { return value(OPTION_STATE); }
+ bool autosave() const { return bool_value(OPTION_AUTOSAVE); }
+ const char *playback() const { return value(OPTION_PLAYBACK); }
+ const char *record() const { return value(OPTION_RECORD); }
+ bool record_timecode() const { return bool_value(OPTION_RECORD_TIMECODE); }
+ bool exit_after_playback() const { return bool_value(OPTION_EXIT_AFTER_PLAYBACK); }
+ const char *mng_write() const { return value(OPTION_MNGWRITE); }
+ const char *avi_write() const { return value(OPTION_AVIWRITE); }
+ const char *wav_write() const { return value(OPTION_WAVWRITE); }
+ const char *snap_name() const { return value(OPTION_SNAPNAME); }
+ const char *snap_size() const { return value(OPTION_SNAPSIZE); }
+ const char *snap_view() const { return value(OPTION_SNAPVIEW); }
+ bool snap_bilinear() const { return bool_value(OPTION_SNAPBILINEAR); }
+ const char *state_name() const { return value(OPTION_STATENAME); }
+ bool burnin() const { return bool_value(OPTION_BURNIN); }
+
+ // core performance options
+ bool auto_frameskip() const { return bool_value(OPTION_AUTOFRAMESKIP); }
+ int frameskip() const { return int_value(OPTION_FRAMESKIP); }
+ int seconds_to_run() const { return int_value(OPTION_SECONDS_TO_RUN); }
+ bool throttle() const { return bool_value(OPTION_THROTTLE); }
+ bool sleep() const { return m_sleep; }
+ float speed() const { return float_value(OPTION_SPEED); }
+ bool refresh_speed() const { return m_refresh_speed; }
+
+ // core render options
+ bool keep_aspect() const { return bool_value(OPTION_KEEPASPECT); }
+ bool uneven_stretch() const { return bool_value(OPTION_UNEVENSTRETCH); }
+ bool uneven_stretch_x() const { return bool_value(OPTION_UNEVENSTRETCHX); }
+ bool uneven_stretch_y() const { return bool_value(OPTION_UNEVENSTRETCHY); }
+ bool auto_stretch_xy() const { return bool_value(OPTION_AUTOSTRETCHXY); }
+ bool int_overscan() const { return bool_value(OPTION_INTOVERSCAN); }
+ int int_scale_x() const { return int_value(OPTION_INTSCALEX); }
+ int int_scale_y() const { return int_value(OPTION_INTSCALEY); }
+
+ // core rotation options
+ bool rotate() const { return bool_value(OPTION_ROTATE); }
+ bool ror() const { return bool_value(OPTION_ROR); }
+ bool rol() const { return bool_value(OPTION_ROL); }
+ bool auto_ror() const { return bool_value(OPTION_AUTOROR); }
+ bool auto_rol() const { return bool_value(OPTION_AUTOROL); }
+ bool flipx() const { return bool_value(OPTION_FLIPX); }
+ bool flipy() const { return bool_value(OPTION_FLIPY); }
+
+ // core artwork options
+ bool artwork_crop() const { return bool_value(OPTION_ARTWORK_CROP); }
+ bool use_backdrops() const { return bool_value(OPTION_USE_BACKDROPS); }
+ bool use_overlays() const { return bool_value(OPTION_USE_OVERLAYS); }
+ bool use_bezels() const { return bool_value(OPTION_USE_BEZELS); }
+ bool use_cpanels() const { return bool_value(OPTION_USE_CPANELS); }
+ bool use_marquees() const { return bool_value(OPTION_USE_MARQUEES); }
+
+ // core screen options
+ float brightness() const { return float_value(OPTION_BRIGHTNESS); }
+ float contrast() const { return float_value(OPTION_CONTRAST); }
+ float gamma() const { return float_value(OPTION_GAMMA); }
+ float pause_brightness() const { return float_value(OPTION_PAUSE_BRIGHTNESS); }
+ const char *effect() const { return value(OPTION_EFFECT); }
+
+ // core vector options
+ float beam_width_min() const { return float_value(OPTION_BEAM_WIDTH_MIN); }
+ float beam_width_max() const { return float_value(OPTION_BEAM_WIDTH_MAX); }
+ float beam_intensity_weight() const { return float_value(OPTION_BEAM_INTENSITY_WEIGHT); }
+ float flicker() const { return float_value(OPTION_FLICKER); }
+
+ // core sound options
+ int sample_rate() const { return int_value(OPTION_SAMPLERATE); }
+ bool samples() const { return bool_value(OPTION_SAMPLES); }
+ int volume() const { return int_value(OPTION_VOLUME); }
+
+ // core input options
+ bool coin_lockout() const { return bool_value(OPTION_COIN_LOCKOUT); }
+ const char *ctrlr() const { return value(OPTION_CTRLR); }
+ bool mouse() const { return bool_value(OPTION_MOUSE); }
+ bool joystick() const { return bool_value(OPTION_JOYSTICK); }
+ bool lightgun() const { return bool_value(OPTION_LIGHTGUN); }
+ bool multi_keyboard() const { return bool_value(OPTION_MULTIKEYBOARD); }
+ bool multi_mouse() const { return bool_value(OPTION_MULTIMOUSE); }
+ const char *paddle_device() const { return value(OPTION_PADDLE_DEVICE); }
+ const char *adstick_device() const { return value(OPTION_ADSTICK_DEVICE); }
+ const char *pedal_device() const { return value(OPTION_PEDAL_DEVICE); }
+ const char *dial_device() const { return value(OPTION_DIAL_DEVICE); }
+ const char *trackball_device() const { return value(OPTION_TRACKBALL_DEVICE); }
+ const char *lightgun_device() const { return value(OPTION_LIGHTGUN_DEVICE); }
+ const char *positional_device() const { return value(OPTION_POSITIONAL_DEVICE); }
+ const char *mouse_device() const { return value(OPTION_MOUSE_DEVICE); }
+ const char *joystick_map() const { return value(OPTION_JOYSTICK_MAP); }
+ float joystick_deadzone() const { return float_value(OPTION_JOYSTICK_DEADZONE); }
+ float joystick_saturation() const { return float_value(OPTION_JOYSTICK_SATURATION); }
+ bool steadykey() const { return bool_value(OPTION_STEADYKEY); }
+ bool ui_active() const { return bool_value(OPTION_UI_ACTIVE); }
+ bool offscreen_reload() const { return bool_value(OPTION_OFFSCREEN_RELOAD); }
+ bool natural_keyboard() const { return bool_value(OPTION_NATURAL_KEYBOARD); }
+ bool joystick_contradictory() const { return m_joystick_contradictory; }
+ int coin_impulse() const { return m_coin_impulse; }
+
+ // core debugging options
+ bool log() const { return bool_value(OPTION_LOG); }
+ bool debug() const { return bool_value(OPTION_DEBUG); }
+ bool verbose() const { return bool_value(OPTION_VERBOSE); }
+ bool oslog() const { return bool_value(OPTION_OSLOG); }
+ const char *debug_script() const { return value(OPTION_DEBUGSCRIPT); }
+ bool update_in_pause() const { return bool_value(OPTION_UPDATEINPAUSE); }
+
+ // core misc options
+ bool drc() const { return bool_value(OPTION_DRC); }
+ bool drc_use_c() const { return bool_value(OPTION_DRC_USE_C); }
+ bool drc_log_uml() const { return bool_value(OPTION_DRC_LOG_UML); }
+ bool drc_log_native() const { return bool_value(OPTION_DRC_LOG_NATIVE); }
+ const char *bios() const { return value(OPTION_BIOS); }
+ bool cheat() const { return bool_value(OPTION_CHEAT); }
+ bool skip_gameinfo() const { return bool_value(OPTION_SKIP_GAMEINFO); }
+ const char *ui_font() const { return value(OPTION_UI_FONT); }
+ ui_option ui() const { return m_ui; }
+ const char *ram_size() const { return value(OPTION_RAMSIZE); }
+
+ // core comm options
+ const char *comm_localhost() const { return value(OPTION_COMM_LOCAL_HOST); }
+ const char *comm_localport() const { return value(OPTION_COMM_LOCAL_PORT); }
+ const char *comm_remotehost() const { return value(OPTION_COMM_REMOTE_HOST); }
+ const char *comm_remoteport() const { return value(OPTION_COMM_REMOTE_PORT); }
+
+
+ bool confirm_quit() const { return bool_value(OPTION_CONFIRM_QUIT); }
+ bool ui_mouse() const { return bool_value(OPTION_UI_MOUSE); }
+
+ const char *autoboot_command() const { return value(OPTION_AUTOBOOT_COMMAND); }
+ int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
+ const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
+
+ bool console() const { return bool_value(OPTION_CONSOLE); }
+
+ bool plugins() const { return bool_value(OPTION_PLUGINS); }
+
+ const char *plugin() const { return value(OPTION_PLUGIN); }
+ const char *no_plugin() const { return value(OPTION_NO_PLUGIN); }
+
+ const char *language() const { return value(OPTION_LANGUAGE); }
+
+ // Web server specific optopns
+ bool http() const { return bool_value(OPTION_HTTP); }
+ short http_port() const { return int_value(OPTION_HTTP_PORT); }
+ const char *http_root() const { return value(OPTION_HTTP_ROOT); }
+
+ // slots and devices - the values for these are stored outside of the core_options
+ // structure
+ std::map<std::string, slot_option> &slot_options() { return m_slot_options; }
+ const std::map<std::string, slot_option> &slot_options() const { return m_slot_options; }
+ std::map<std::string, std::string> &image_options() { return m_image_options; }
+ const std::map<std::string, std::string> &image_options() const { return m_image_options; }
+
+protected:
+ virtual void value_changed(const std::string &name, const std::string &value) override;
+ virtual override_get_value_result override_get_value(const char *name, std::string &value) const override;
+ virtual bool override_set_value(const char *name, const std::string &value) override;
+
+private:
+ static const options_entry s_option_entries[];
+
+ // slots and devices
+ std::map<std::string, slot_option> m_slot_options;
+ std::map<std::string, std::string> m_image_options;
+
+ // cached options, for scenarios where parsing core_options is too slow
+ int m_coin_impulse;
+ bool m_joystick_contradictory;
+ bool m_sleep;
+ bool m_refresh_speed;
+ ui_option m_ui;
+};
+
+#endif // MAME_EMU_EMUOPTS_H
diff --git a/docs/release/src/emu/gamedrv.h b/docs/release/src/emu/gamedrv.h
new file mode 100644
index 00000000000..44db809f7c9
--- /dev/null
+++ b/docs/release/src/emu/gamedrv.h
@@ -0,0 +1,198 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ gamedrv.h
+
+ Definitions for game drivers.
+
+***************************************************************************/
+
+#ifndef MAME_EMU_GAMEDRV_H
+#define MAME_EMU_GAMEDRV_H
+
+#pragma once
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+// maxima
+constexpr int MAX_DRIVER_NAME_CHARS = 16;
+
+// flags for game drivers
+constexpr u32 ORIENTATION_MASK = 0x00000007;
+constexpr u32 MACHINE_NOT_WORKING = 0x00000008;
+constexpr u32 MACHINE_UNEMULATED_PROTECTION = 0x00000010; // game's protection not fully emulated
+constexpr u32 MACHINE_WRONG_COLORS = 0x00000020; // colors are totally wrong
+constexpr u32 MACHINE_IMPERFECT_COLORS = 0x00000040; // colors are not 100% accurate, but close
+constexpr u32 MACHINE_IMPERFECT_GRAPHICS = 0x00000080; // graphics are wrong/incomplete
+constexpr u32 MACHINE_NO_COCKTAIL = 0x00000100; // screen flip support is missing
+constexpr u32 MACHINE_NO_SOUND = 0x00000200; // sound is missing
+constexpr u32 MACHINE_IMPERFECT_SOUND = 0x00000400; // sound is known to be wrong
+constexpr u32 MACHINE_SUPPORTS_SAVE = 0x00000800; // game supports save states
+constexpr u32 MACHINE_IS_BIOS_ROOT = 0x00001000; // this driver entry is a BIOS root
+constexpr u32 MACHINE_NO_STANDALONE = 0x00002000; // this driver cannot stand alone
+constexpr u32 MACHINE_REQUIRES_ARTWORK = 0x00004000; // the driver requires external artwork for key elements of the game
+constexpr u32 MACHINE_UNOFFICIAL = 0x00008000; // unofficial hardware change
+constexpr u32 MACHINE_NO_SOUND_HW = 0x00010000; // sound hardware not available
+constexpr u32 MACHINE_MECHANICAL = 0x00020000; // contains mechanical parts (pinball, redemption games,...)
+constexpr u32 MACHINE_TYPE_ARCADE = 0x00040000; // arcade machine (coin operated machines)
+constexpr u32 MACHINE_TYPE_CONSOLE = 0x00080000; // console system
+constexpr u32 MACHINE_TYPE_COMPUTER = 0x00100000; // any kind of computer including home computers, minis, calcs,...
+constexpr u32 MACHINE_TYPE_OTHER = 0x00200000; // any other emulated system that doesn't fit above (ex. clock, satellite receiver,...)
+constexpr u32 MACHINE_IMPERFECT_KEYBOARD = 0x00400000; // keyboard is known to be wrong
+constexpr u32 MACHINE_CLICKABLE_ARTWORK = 0x00800000; // marking that artwork is clickable and require mouse cursor
+constexpr u32 MACHINE_IS_INCOMPLETE = 0x01000000; // any official game/system with blatantly incomplete HW or SW should be marked with this
+constexpr u32 MACHINE_NODEVICE_MICROPHONE = 0x02000000; // any game/system that has unemulated recording voice device peripheral
+constexpr u32 MACHINE_NODEVICE_CAMERA = 0x04000000; // any game/system that has unemulated capturing image device peripheral
+constexpr u32 MACHINE_NODEVICE_PRINTER = 0x08000000; // any game/system that has unemulated grabbing of screen content device
+constexpr u32 MACHINE_NODEVICE_LAN = 0x10000000; // any game/system that has unemulated multi-linking capability
+constexpr u32 MACHINE_NODEVICE_WAN = 0x20000000; // any game/system that has unemulated networking capability
+
+// useful combinations of flags
+constexpr u32 MACHINE_IS_SKELETON = MACHINE_NO_SOUND | MACHINE_NOT_WORKING; // mask for skelly games
+constexpr u32 MACHINE_IS_SKELETON_MECHANICAL = MACHINE_IS_SKELETON | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK; // mask for skelly mechanical games
+constexpr u32 MACHINE_FATAL_FLAGS = MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL; // red disclaimer
+constexpr u32 MACHINE_WARNING_FLAGS = MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_MICROPHONE | MACHINE_NODEVICE_CAMERA | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_LAN | MACHINE_NODEVICE_WAN; // yellow disclaimer
+constexpr u32 MACHINE_BTANB_FLAGS = MACHINE_IS_INCOMPLETE; // HBMAME // | MACHINE_NO_SOUND_HW; // default disclaimer
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// static driver initialization callback
+typedef void (*driver_init_func)(running_machine &machine);
+
+// static POD structure describing each game driver entry
+struct game_driver
+{
+ const char * source_file; // set this to __FILE__
+ const char * parent; // if this is a clone, the name of the parent
+ const char * description; // full name of the game
+ const char * year; // year the game was released
+ const char * manufacturer; // manufacturer of the game
+ machine_config_constructor machine_config; // machine driver tokens
+ ioport_constructor ipt; // pointer to constructor for input ports
+ driver_init_func driver_init; // DRIVER_INIT callback
+ const tiny_rom_entry * rom; // pointer to list of ROMs for the game
+ const char * compatible_with;
+ const internal_layout * default_layout; // default internally defined layout
+ u32 flags; // orientation and other flags; see defines above
+ char name[MAX_DRIVER_NAME_CHARS + 1]; // short name of the game
+};
+
+
+//**************************************************************************
+// MACROS
+//**************************************************************************
+
+// wrappers for the DRIVER_INIT callback
+#define DRIVER_INIT_NAME(name) init_##name
+#define DECLARE_DRIVER_INIT(name) void DRIVER_INIT_NAME(name)() ATTR_COLD
+#define DRIVER_INIT_MEMBER(cls, name) void cls::DRIVER_INIT_NAME(name)()
+#define DRIVER_INIT_CALL(name) DRIVER_INIT_NAME(name)()
+
+// wrappers for declaring and defining game drivers
+#define GAME_NAME(name) driver_##name
+#define GAME_EXTERN(name) extern game_driver const GAME_NAME(name)
+
+// standard GAME() macro
+#define GAME(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS) \
+extern game_driver const GAME_NAME(NAME) \
+{ \
+ __FILE__, \
+ #PARENT, \
+ FULLNAME, \
+ #YEAR, \
+ COMPANY, \
+ MACHINE_CONFIG_NAME(MACHINE), \
+ INPUT_PORTS_NAME(INPUT), \
+ &driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
+ ROM_NAME(NAME), \
+ nullptr, \
+ nullptr, \
+ (MONITOR) | (FLAGS) | MACHINE_TYPE_ARCADE, \
+ #NAME \
+};
+
+// standard macro with additional layout
+#define GAMEL(YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS,LAYOUT) \
+extern game_driver const GAME_NAME(NAME) \
+{ \
+ __FILE__, \
+ #PARENT, \
+ FULLNAME, \
+ #YEAR, \
+ COMPANY, \
+ MACHINE_CONFIG_NAME(MACHINE), \
+ INPUT_PORTS_NAME(INPUT), \
+ &driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
+ ROM_NAME(NAME), \
+ nullptr, \
+ &LAYOUT, \
+ (MONITOR) | (FLAGS) | MACHINE_TYPE_ARCADE, \
+ #NAME \
+};
+
+
+// standard console definition macro
+#define CONS(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \
+extern game_driver const GAME_NAME(NAME) \
+{ \
+ __FILE__, \
+ #PARENT, \
+ FULLNAME, \
+ #YEAR, \
+ COMPANY, \
+ MACHINE_CONFIG_NAME(MACHINE), \
+ INPUT_PORTS_NAME(INPUT), \
+ &driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
+ ROM_NAME(NAME), \
+ #COMPAT, \
+ nullptr, \
+ ROT0 | (FLAGS) | MACHINE_TYPE_CONSOLE, \
+ #NAME \
+};
+
+// standard computer definition macro
+#define COMP(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \
+extern game_driver const GAME_NAME(NAME) \
+{ \
+ __FILE__, \
+ #PARENT, \
+ FULLNAME, \
+ #YEAR, \
+ COMPANY, \
+ MACHINE_CONFIG_NAME(MACHINE), \
+ INPUT_PORTS_NAME(INPUT), \
+ &driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
+ ROM_NAME(NAME), \
+ #COMPAT, \
+ nullptr, \
+ ROT0 | (FLAGS) | MACHINE_TYPE_COMPUTER, \
+ #NAME \
+};
+
+// standard system definition macro
+#define SYST(YEAR,NAME,PARENT,COMPAT,MACHINE,INPUT,CLASS,INIT,COMPANY,FULLNAME,FLAGS) \
+extern game_driver const GAME_NAME(NAME) \
+{ \
+ __FILE__, \
+ #PARENT, \
+ FULLNAME, \
+ #YEAR, \
+ COMPANY, \
+ MACHINE_CONFIG_NAME(MACHINE), \
+ INPUT_PORTS_NAME(INPUT), \
+ &driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
+ ROM_NAME(NAME), \
+ #COMPAT, \
+ nullptr, \
+ ROT0 | (FLAGS) | MACHINE_TYPE_OTHER, \
+ #NAME \
+};
+
+
+#endif // MAME_EMU_GAMEDRV_H
diff --git a/docs/release/src/emu/validity.cpp b/docs/release/src/emu/validity.cpp
new file mode 100644
index 00000000000..9e3996d9c9f
--- /dev/null
+++ b/docs/release/src/emu/validity.cpp
@@ -0,0 +1,2075 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Paul Priest
+/***************************************************************************
+
+ validity.cpp
+
+ Validity checks on internal data structures.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "validity.h"
+
+#include "emuopts.h"
+#include "video/rgbutil.h"
+
+#include <ctype.h>
+#include <type_traits>
+#include <typeindex>
+#include <typeinfo>
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+//**************************************************************************
+// INLINE FUNCTIONS
+//**************************************************************************
+
+//-------------------------------------------------
+// ioport_string_from_index - return an indexed
+// string from the I/O port system
+//-------------------------------------------------
+
+inline const char *validity_checker::ioport_string_from_index(u32 index)
+{
+ return ioport_configurer::string_from_token((const char *)(uintptr_t)index);
+}
+
+
+//-------------------------------------------------
+// get_defstr_index - return the index of the
+// string assuming it is one of the default
+// strings
+//-------------------------------------------------
+
+inline int validity_checker::get_defstr_index(const char *string, bool suppress_error)
+{
+ // check for strings that should be DEF_STR
+ auto strindex = m_defstr_map.find(string);
+ if (!suppress_error && strindex != m_defstr_map.end() && string != ioport_string_from_index(strindex->second))
+ osd_printf_error("Must use DEF_STR( %s )\n", string);
+ return (strindex != m_defstr_map.end()) ? strindex->second : 0;
+}
+
+
+//-------------------------------------------------
+// random_u64
+// random_s64
+// random_u32
+// random_s32
+//-------------------------------------------------
+#undef rand
+inline s32 validity_checker::random_i32() { return s32(random_u32()); }
+inline u32 validity_checker::random_u32() { return rand() ^ (rand() << 15); }
+inline s64 validity_checker::random_i64() { return s64(random_u64()); }
+inline u64 validity_checker::random_u64() { return u64(random_u32()) ^ (u64(random_u32()) << 30); }
+
+
+
+//-------------------------------------------------
+// validate_tag - ensure that the given tag
+// meets the general requirements
+//-------------------------------------------------
+
+void validity_checker::validate_tag(const char *tag)
+{
+ // some common names that are now deprecated
+ if (strcmp(tag, "main") == 0 || strcmp(tag, "audio") == 0 || strcmp(tag, "sound") == 0 || strcmp(tag, "left") == 0 || strcmp(tag, "right") == 0)
+ osd_printf_error("Invalid generic tag '%s' used\n", tag);
+
+ // scan for invalid characters
+ static const char *validchars = "abcdefghijklmnopqrstuvwxyz0123456789_.:^$";
+ for (const char *p = tag; *p != 0; p++)
+ {
+ // only lower-case permitted
+ if (*p != tolower(u8(*p)))
+ {
+ osd_printf_error("Tag '%s' contains upper-case characters\n", tag);
+ break;
+ }
+ if (*p == ' ')
+ {
+ osd_printf_error("Tag '%s' contains spaces\n", tag);
+ break;
+ }
+ if (strchr(validchars, *p) == nullptr)
+ {
+ osd_printf_error("Tag '%s' contains invalid character '%c'\n", tag, *p);
+ break;
+ }
+ }
+
+ // find the start of the final tag
+ const char *begin = strrchr(tag, ':');
+ if (begin == nullptr)
+ begin = tag;
+ else
+ begin += 1;
+
+ // 0-length = bad
+ if (*begin == 0)
+ osd_printf_error("Found 0-length tag\n");
+
+ // too short/too long = bad
+ if (strlen(begin) < MIN_TAG_LENGTH)
+ osd_printf_error("Tag '%s' is too short (must be at least %d characters)\n", tag, MIN_TAG_LENGTH);
+}
+
+
+
+//**************************************************************************
+// VALIDATION FUNCTIONS
+//**************************************************************************
+
+//-------------------------------------------------
+// validity_checker - constructor
+//-------------------------------------------------
+
+validity_checker::validity_checker(emu_options &options)
+ : m_drivlist(options)
+ , m_errors(0)
+ , m_warnings(0)
+ , m_print_verbose(options.verbose())
+ , m_current_driver(nullptr)
+ , m_current_config(nullptr)
+ , m_current_device(nullptr)
+ , m_current_ioport(nullptr)
+ , m_validate_all(false)
+{
+ // pre-populate the defstr map with all the default strings
+ for (int strnum = 1; strnum < INPUT_STRING_COUNT; strnum++)
+ {
+ const char *string = ioport_string_from_index(strnum);
+ if (string != nullptr)
+ m_defstr_map.insert(std::make_pair(string, strnum));
+ }
+}
+
+//-------------------------------------------------
+// validity_checker - destructor
+//-------------------------------------------------
+
+validity_checker::~validity_checker()
+{
+ validate_end();
+}
+
+//-------------------------------------------------
+// check_driver - check a single driver
+//-------------------------------------------------
+
+void validity_checker::check_driver(const game_driver &driver)
+{
+ // simply validate the one driver
+ validate_begin();
+ validate_one(driver);
+ validate_end();
+}
+
+
+//-------------------------------------------------
+// check_shared_source - check all drivers that
+// share the same source file as the given driver
+//-------------------------------------------------
+
+void validity_checker::check_shared_source(const game_driver &driver)
+{
+ // initialize
+ validate_begin();
+
+ // then iterate over all drivers and check the ones that share the same source file
+ m_drivlist.reset();
+ while (m_drivlist.next())
+ if (strcmp(driver.source_file, m_drivlist.driver().source_file) == 0)
+ validate_one(m_drivlist.driver());
+
+ // cleanup
+ validate_end();
+}
+
+
+//-------------------------------------------------
+// check_all_matching - check all drivers whose
+// names match the given string
+//-------------------------------------------------
+
+bool validity_checker::check_all_matching(const char *string)
+{
+ // start by checking core stuff
+ validate_begin();
+ validate_core();
+ validate_inlines();
+ validate_rgb();
+
+ // if we had warnings or errors, output
+ if (m_errors > 0 || m_warnings > 0 || !m_verbose_text.empty())
+ {
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Core: %d errors, %d warnings\n", m_errors, m_warnings);
+ if (m_errors > 0)
+ output_indented_errors(m_error_text, "Errors");
+ if (m_warnings > 0)
+ output_indented_errors(m_warning_text, "Warnings");
+ if (!m_verbose_text.empty())
+ output_indented_errors(m_verbose_text, "Messages");
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n");
+ }
+
+ // then iterate over all drivers and check them
+ m_drivlist.reset();
+ while (m_drivlist.next())
+ if (m_drivlist.matches(string, m_drivlist.driver().name))
+ validate_one(m_drivlist.driver());
+
+ // validate devices
+ if (!string)
+ validate_device_types();
+
+ // cleanup
+ validate_end();
+
+ return !(m_errors > 0 || m_warnings > 0);
+}
+
+
+//-------------------------------------------------
+// validate_begin - prepare for validation by
+// taking over the output callbacks and resetting
+// our internal state
+//-------------------------------------------------
+
+void validity_checker::validate_begin()
+{
+ // take over error and warning outputs
+ osd_output::push(this);
+
+ // reset all our maps
+ m_names_map.clear();
+ m_descriptions_map.clear();
+ m_roms_map.clear();
+ m_defstr_map.clear();
+ m_region_map.clear();
+
+ // reset internal state
+ m_errors = 0;
+ m_warnings = 0;
+ m_already_checked.clear();
+}
+
+
+//-------------------------------------------------
+// validate_end - restore output callbacks and
+// clean up
+//-------------------------------------------------
+
+void validity_checker::validate_end()
+{
+ // restore the original output callbacks
+ osd_output::pop(this);
+}
+
+
+//-------------------------------------------------
+// validate_drivers - master validity checker
+//-------------------------------------------------
+
+void validity_checker::validate_one(const game_driver &driver)
+{
+ // help verbose validation detect configuration-related crashes
+ if (m_print_verbose)
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Validating driver %s (%s)...\n", driver.name, core_filename_extract_base(driver.source_file).c_str());
+
+ // set the current driver
+ m_current_driver = &driver;
+ m_current_config = nullptr;
+ m_current_device = nullptr;
+ m_current_ioport = nullptr;
+ m_region_map.clear();
+
+ // reset error/warning state
+ int start_errors = m_errors;
+ int start_warnings = m_warnings;
+ m_error_text.clear();
+ m_warning_text.clear();
+ m_verbose_text.clear();
+
+ // wrap in try/except to catch fatalerrors
+ try
+ {
+ machine_config config(driver, m_blank_options);
+ m_current_config = &config;
+ validate_driver();
+ validate_roms();
+ validate_inputs();
+ validate_devices();
+ m_current_config = nullptr;
+ }
+ catch (emu_fatalerror &err)
+ {
+ osd_printf_error("Fatal error %s", err.string());
+ }
+
+ // if we had warnings or errors, output
+ if (m_errors > start_errors || m_warnings > start_warnings || !m_verbose_text.empty())
+ {
+ if (!m_print_verbose)
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): ", driver.name, core_filename_extract_base(driver.source_file).c_str());
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "%d errors, %d warnings\n", m_errors - start_errors, m_warnings - start_warnings);
+ if (m_errors > start_errors)
+ output_indented_errors(m_error_text, "Errors");
+ if (m_warnings > start_warnings)
+ output_indented_errors(m_warning_text, "Warnings");
+ if (!m_verbose_text.empty())
+ output_indented_errors(m_verbose_text, "Messages");
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n");
+ }
+
+ // reset the driver/device
+ m_current_driver = nullptr;
+ m_current_config = nullptr;
+ m_current_device = nullptr;
+ m_current_ioport = nullptr;
+}
+
+
+//-------------------------------------------------
+// validate_core - validate core internal systems
+//-------------------------------------------------
+
+void validity_checker::validate_core()
+{
+ // basic system checks
+ if (~0 != -1) osd_printf_error("Machine must be two's complement\n");
+
+ u8 a = 0xff;
+ u8 b = a + 1;
+ if (b > a) osd_printf_error("u8 must be 8 bits\n");
+
+ // check size of core integer types
+ if (sizeof(s8) != 1) osd_printf_error("s8 must be 8 bits\n");
+ if (sizeof(u8) != 1) osd_printf_error("u8 must be 8 bits\n");
+ if (sizeof(s16) != 2) osd_printf_error("s16 must be 16 bits\n");
+ if (sizeof(u16) != 2) osd_printf_error("u16 must be 16 bits\n");
+ if (sizeof(s32) != 4) osd_printf_error("s32 must be 32 bits\n");
+ if (sizeof(u32) != 4) osd_printf_error("u32 must be 32 bits\n");
+ if (sizeof(s64) != 8) osd_printf_error("s64 must be 64 bits\n");
+ if (sizeof(u64) != 8) osd_printf_error("u64 must be 64 bits\n");
+
+ // check signed right shift
+ s8 a8 = -3;
+ s16 a16 = -3;
+ s32 a32 = -3;
+ s64 a64 = -3;
+ if (a8 >> 1 != -2) osd_printf_error("s8 right shift must be arithmetic\n");
+ if (a16 >> 1 != -2) osd_printf_error("s16 right shift must be arithmetic\n");
+ if (a32 >> 1 != -2) osd_printf_error("s32 right shift must be arithmetic\n");
+ if (a64 >> 1 != -2) osd_printf_error("s64 right shift must be arithmetic\n");
+
+ // check pointer size
+#ifdef PTR64
+ static_assert(sizeof(void *) == 8, "PTR64 flag enabled, but was compiled for 32-bit target\n");
+#else
+ static_assert(sizeof(void *) == 4, "PTR64 flag not enabled, but was compiled for 64-bit target\n");
+#endif
+
+ // TODO: check if this is actually working
+ // check endianness definition
+ u16 lsbtest = 0;
+ *(u8 *)&lsbtest = 0xff;
+#ifdef LSB_FIRST
+ if (lsbtest == 0xff00) osd_printf_error("LSB_FIRST specified, but running on a big-endian machine\n");
+#else
+ if (lsbtest == 0x00ff) osd_printf_error("LSB_FIRST not specified, but running on a little-endian machine\n");
+#endif
+}
+
+
+//-------------------------------------------------
+// validate_inlines - validate inline function
+// behaviors
+//-------------------------------------------------
+
+void validity_checker::validate_inlines()
+{
+ volatile u64 testu64a = random_u64();
+ volatile s64 testi64a = random_i64();
+ volatile u32 testu32a = random_u32();
+ volatile u32 testu32b = random_u32();
+ volatile s32 testi32a = random_i32();
+ volatile s32 testi32b = random_i32();
+ s32 resulti32, expectedi32;
+ u32 resultu32, expectedu32;
+ s64 resulti64, expectedi64;
+ u64 resultu64, expectedu64;
+ s32 remainder, expremainder;
+ u32 uremainder, expuremainder, bigu32 = 0xffffffff;
+
+ // use only non-zero, positive numbers
+ if (testu64a == 0) testu64a++;
+ if (testi64a == 0) testi64a++;
+ else if (testi64a < 0) testi64a = -testi64a;
+ if (testu32a == 0) testu32a++;
+ if (testu32b == 0) testu32b++;
+ if (testi32a == 0) testi32a++;
+ else if (testi32a < 0) testi32a = -testi32a;
+ if (testi32b == 0) testi32b++;
+ else if (testi32b < 0) testi32b = -testi32b;
+
+ resulti64 = mul_32x32(testi32a, testi32b);
+ expectedi64 = s64(testi32a) * s64(testi32b);
+ if (resulti64 != expectedi64)
+ osd_printf_error("Error testing mul_32x32 (%08X x %08X) = %08X%08X (expected %08X%08X)\n", testi32a, testi32b, u32(resulti64 >> 32), u32(resulti64), u32(expectedi64 >> 32), u32(expectedi64));
+
+ resultu64 = mulu_32x32(testu32a, testu32b);
+ expectedu64 = u64(testu32a) * u64(testu32b);
+ if (resultu64 != expectedu64)
+ osd_printf_error("Error testing mulu_32x32 (%08X x %08X) = %08X%08X (expected %08X%08X)\n", testu32a, testu32b, u32(resultu64 >> 32), u32(resultu64), u32(expectedu64 >> 32), u32(expectedu64));
+
+ resulti32 = mul_32x32_hi(testi32a, testi32b);
+ expectedi32 = (s64(testi32a) * s64(testi32b)) >> 32;
+ if (resulti32 != expectedi32)
+ osd_printf_error("Error testing mul_32x32_hi (%08X x %08X) = %08X (expected %08X)\n", testi32a, testi32b, resulti32, expectedi32);
+
+ resultu32 = mulu_32x32_hi(testu32a, testu32b);
+ expectedu32 = (s64(testu32a) * s64(testu32b)) >> 32;
+ if (resultu32 != expectedu32)
+ osd_printf_error("Error testing mulu_32x32_hi (%08X x %08X) = %08X (expected %08X)\n", testu32a, testu32b, resultu32, expectedu32);
+
+ resulti32 = mul_32x32_shift(testi32a, testi32b, 7);
+ expectedi32 = (s64(testi32a) * s64(testi32b)) >> 7;
+ if (resulti32 != expectedi32)
+ osd_printf_error("Error testing mul_32x32_shift (%08X x %08X) >> 7 = %08X (expected %08X)\n", testi32a, testi32b, resulti32, expectedi32);
+
+ resultu32 = mulu_32x32_shift(testu32a, testu32b, 7);
+ expectedu32 = (s64(testu32a) * s64(testu32b)) >> 7;
+ if (resultu32 != expectedu32)
+ osd_printf_error("Error testing mulu_32x32_shift (%08X x %08X) >> 7 = %08X (expected %08X)\n", testu32a, testu32b, resultu32, expectedu32);
+
+ while (s64(testi32a) * s64(0x7fffffff) < testi64a)
+ testi64a /= 2;
+ while (u64(testu32a) * u64(bigu32) < testu64a)
+ testu64a /= 2;
+
+ resulti32 = div_64x32(testi64a, testi32a);
+ expectedi32 = testi64a / s64(testi32a);
+ if (resulti32 != expectedi32)
+ osd_printf_error("Error testing div_64x32 (%08X%08X / %08X) = %08X (expected %08X)\n", u32(testi64a >> 32), u32(testi64a), testi32a, resulti32, expectedi32);
+
+ resultu32 = divu_64x32(testu64a, testu32a);
+ expectedu32 = testu64a / u64(testu32a);
+ if (resultu32 != expectedu32)
+ osd_printf_error("Error testing divu_64x32 (%08X%08X / %08X) = %08X (expected %08X)\n", u32(testu64a >> 32), u32(testu64a), testu32a, resultu32, expectedu32);
+
+ resulti32 = div_64x32_rem(testi64a, testi32a, &remainder);
+ expectedi32 = testi64a / s64(testi32a);
+ expremainder = testi64a % s64(testi32a);
+ if (resulti32 != expectedi32 || remainder != expremainder)
+ osd_printf_error("Error testing div_64x32_rem (%08X%08X / %08X) = %08X,%08X (expected %08X,%08X)\n", u32(testi64a >> 32), u32(testi64a), testi32a, resulti32, remainder, expectedi32, expremainder);
+
+ resultu32 = divu_64x32_rem(testu64a, testu32a, &uremainder);
+ expectedu32 = testu64a / u64(testu32a);
+ expuremainder = testu64a % u64(testu32a);
+ if (resultu32 != expectedu32 || uremainder != expuremainder)
+ osd_printf_error("Error testing divu_64x32_rem (%08X%08X / %08X) = %08X,%08X (expected %08X,%08X)\n", u32(testu64a >> 32), u32(testu64a), testu32a, resultu32, uremainder, expectedu32, expuremainder);
+
+ resulti32 = mod_64x32(testi64a, testi32a);
+ expectedi32 = testi64a % s64(testi32a);
+ if (resulti32 != expectedi32)
+ osd_printf_error("Error testing mod_64x32 (%08X%08X / %08X) = %08X (expected %08X)\n", u32(testi64a >> 32), u32(testi64a), testi32a, resulti32, expectedi32);
+
+ resultu32 = modu_64x32(testu64a, testu32a);
+ expectedu32 = testu64a % u64(testu32a);
+ if (resultu32 != expectedu32)
+ osd_printf_error("Error testing modu_64x32 (%08X%08X / %08X) = %08X (expected %08X)\n", u32(testu64a >> 32), u32(testu64a), testu32a, resultu32, expectedu32);
+
+ while (s64(testi32a) * s64(0x7fffffff) < (s32(testi64a) << 3))
+ testi64a /= 2;
+ while (u64(testu32a) * u64(0xffffffff) < (u32(testu64a) << 3))
+ testu64a /= 2;
+
+ resulti32 = div_32x32_shift(s32(testi64a), testi32a, 3);
+ expectedi32 = (s64(s32(testi64a)) << 3) / s64(testi32a);
+ if (resulti32 != expectedi32)
+ osd_printf_error("Error testing div_32x32_shift (%08X << 3) / %08X = %08X (expected %08X)\n", s32(testi64a), testi32a, resulti32, expectedi32);
+
+ resultu32 = divu_32x32_shift(u32(testu64a), testu32a, 3);
+ expectedu32 = (u64(u32(testu64a)) << 3) / u64(testu32a);
+ if (resultu32 != expectedu32)
+ osd_printf_error("Error testing divu_32x32_shift (%08X << 3) / %08X = %08X (expected %08X)\n", u32(testu64a), testu32a, resultu32, expectedu32);
+
+ if (fabsf(recip_approx(100.0f) - 0.01f) > 0.0001f)
+ osd_printf_error("Error testing recip_approx\n");
+
+ testi32a = (testi32a & 0x0000ffff) | 0x400000;
+ if (count_leading_zeros(testi32a) != 9)
+ osd_printf_error("Error testing count_leading_zeros\n");
+ testi32a = (testi32a | 0xffff0000) & ~0x400000;
+ if (count_leading_ones(testi32a) != 9)
+ osd_printf_error("Error testing count_leading_ones\n");
+}
+
+
+//-------------------------------------------------
+// validate_rgb - validate optimised RGB utility
+// class
+//-------------------------------------------------
+
+void validity_checker::validate_rgb()
+{
+ /*
+ This performs cursory tests of most of the vector-optimised RGB
+ utilities, concentrating on the low-level maths. It uses random
+ values most of the time for a quick go/no-go indication rather
+ than trying to exercise edge cases. It doesn't matter too much
+ if the compiler optimises out some of the operations since it's
+ really intended to check for logic bugs in the vector code. If
+ the compiler can work out that the code produces the expected
+ result, that's good enough.
+
+ The tests for bitwise logical operations are ordered to minimise
+ the chance of all-zero or all-one patterns producing a
+ misleading good result.
+
+ The following functions are not tested yet:
+ rgbaint_t()
+ clamp_and_clear(const u32)
+ sign_extend(const u32, const u32)
+ min(const s32)
+ max(const s32)
+ blend(const rgbaint_t&, u8)
+ scale_and_clamp(const rgbaint_t&)
+ scale_imm_and_clamp(const s32)
+ scale2_add_and_clamp(const rgbaint_t&, const rgbaint_t&, const rgbaint_t&)
+ scale_add_and_clamp(const rgbaint_t&, const rgbaint_t&);
+ scale_imm_add_and_clamp(const s32, const rgbaint_t&);
+ static bilinear_filter(u32, u32, u32, u32, u8, u8)
+ bilinear_filter_rgbaint(u32, u32, u32, u32, u8, u8)
+ */
+
+ auto random_i32_nolimit = [this]
+ {
+ s32 result;
+ do { result = random_i32(); } while ((result == std::numeric_limits<s32>::min()) || (result == std::numeric_limits<s32>::max()));
+ return result;
+ };
+
+ volatile s32 expected_a, expected_r, expected_g, expected_b;
+ volatile s32 actual_a, actual_r, actual_g, actual_b;
+ volatile s32 imm;
+ rgbaint_t rgb, other;
+ rgb_t packed;
+ auto check_expected = [&] (const char *desc)
+ {
+ const volatile s32 a = rgb.get_a32();
+ const volatile s32 r = rgb.get_r32();
+ const volatile s32 g = rgb.get_g32();
+ const volatile s32 b = rgb.get_b32();
+ if (a != expected_a) osd_printf_error("Error testing %s get_a32() = %d (expected %d)\n", desc, a, expected_a);
+ if (r != expected_r) osd_printf_error("Error testing %s get_r32() = %d (expected %d)\n", desc, r, expected_r);
+ if (g != expected_g) osd_printf_error("Error testing %s get_g32() = %d (expected %d)\n", desc, g, expected_g);
+ if (b != expected_b) osd_printf_error("Error testing %s get_b32() = %d (expected %d)\n", desc, b, expected_b);
+ };
+
+ // check set/get
+ expected_a = random_i32();
+ expected_r = random_i32();
+ expected_g = random_i32();
+ expected_b = random_i32();
+ rgb.set(expected_a, expected_r, expected_g, expected_b);
+ check_expected("rgbaint_t::set(a, r, g, b)");
+
+ // check construct/set
+ expected_a = random_i32();
+ expected_r = random_i32();
+ expected_g = random_i32();
+ expected_b = random_i32();
+ rgb.set(rgbaint_t(expected_a, expected_r, expected_g, expected_b));
+ check_expected("rgbaint_t::set(rgbaint_t)");
+
+ // check construct/assign
+ expected_a = random_i32();
+ expected_r = random_i32();
+ expected_g = random_i32();
+ expected_b = random_i32();
+ rgb = rgbaint_t(expected_a, expected_r, expected_g, expected_b);
+ check_expected("rgbaint_t assignment");
+
+ // check piecewise set
+ rgb.set_a(expected_a = random_i32());
+ check_expected("rgbaint_t::set_a");
+ rgb.set_r(expected_r = random_i32());
+ check_expected("rgbaint_t::set_r");
+ rgb.set_g(expected_g = random_i32());
+ check_expected("rgbaint_t::set_g");
+ rgb.set_b(expected_b = random_i32());
+ check_expected("rgbaint_t::set_b");
+
+ // test merge_alpha
+ expected_a = rand();
+ rgb.merge_alpha(rgbaint_t(expected_a, rand(), rand(), rand()));
+ check_expected("rgbaint_t::merge_alpha");
+
+ // test RGB addition (method)
+ expected_a += actual_a = random_i32();
+ expected_r += actual_r = random_i32();
+ expected_g += actual_g = random_i32();
+ expected_b += actual_b = random_i32();
+ rgb.add(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::add");
+
+ // test RGB addition (operator)
+ expected_a += actual_a = random_i32();
+ expected_r += actual_r = random_i32();
+ expected_g += actual_g = random_i32();
+ expected_b += actual_b = random_i32();
+ rgb += rgbaint_t(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::operator+=");
+
+ // test offset addition (method)
+ imm = random_i32();
+ expected_a += imm;
+ expected_r += imm;
+ expected_g += imm;
+ expected_b += imm;
+ rgb.add_imm(imm);
+ check_expected("rgbaint_t::add_imm");
+
+ // test offset addition (operator)
+ imm = random_i32();
+ expected_a += imm;
+ expected_r += imm;
+ expected_g += imm;
+ expected_b += imm;
+ rgb += imm;
+ check_expected("rgbaint_t::operator+=");
+
+ // test immediate RGB addition
+ expected_a += actual_a = random_i32();
+ expected_r += actual_r = random_i32();
+ expected_g += actual_g = random_i32();
+ expected_b += actual_b = random_i32();
+ rgb.add_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::add_imm_rgba");
+
+ // test RGB subtraction (method)
+ expected_a -= actual_a = random_i32();
+ expected_r -= actual_r = random_i32();
+ expected_g -= actual_g = random_i32();
+ expected_b -= actual_b = random_i32();
+ rgb.sub(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::sub");
+
+ // test RGB subtraction (operator)
+ expected_a -= actual_a = random_i32();
+ expected_r -= actual_r = random_i32();
+ expected_g -= actual_g = random_i32();
+ expected_b -= actual_b = random_i32();
+ rgb -= rgbaint_t(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::operator-=");
+
+ // test offset subtraction
+ imm = random_i32();
+ expected_a -= imm;
+ expected_r -= imm;
+ expected_g -= imm;
+ expected_b -= imm;
+ rgb.sub_imm(imm);
+ check_expected("rgbaint_t::sub_imm");
+
+ // test immediate RGB subtraction
+ expected_a -= actual_a = random_i32();
+ expected_r -= actual_r = random_i32();
+ expected_g -= actual_g = random_i32();
+ expected_b -= actual_b = random_i32();
+ rgb.sub_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::sub_imm_rgba");
+
+ // test reversed RGB subtraction
+ expected_a = (actual_a = random_i32()) - expected_a;
+ expected_r = (actual_r = random_i32()) - expected_r;
+ expected_g = (actual_g = random_i32()) - expected_g;
+ expected_b = (actual_b = random_i32()) - expected_b;
+ rgb.subr(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::subr");
+
+ // test reversed offset subtraction
+ imm = random_i32();
+ expected_a = imm - expected_a;
+ expected_r = imm - expected_r;
+ expected_g = imm - expected_g;
+ expected_b = imm - expected_b;
+ rgb.subr_imm(imm);
+ check_expected("rgbaint_t::subr_imm");
+
+ // test reversed immediate RGB subtraction
+ expected_a = (actual_a = random_i32()) - expected_a;
+ expected_r = (actual_r = random_i32()) - expected_r;
+ expected_g = (actual_g = random_i32()) - expected_g;
+ expected_b = (actual_b = random_i32()) - expected_b;
+ rgb.subr_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::subr_imm_rgba");
+
+ // test RGB multiplication (method)
+ expected_a *= actual_a = random_i32();
+ expected_r *= actual_r = random_i32();
+ expected_g *= actual_g = random_i32();
+ expected_b *= actual_b = random_i32();
+ rgb.mul(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::mul");
+
+ // test RGB multiplication (operator)
+ expected_a *= actual_a = random_i32();
+ expected_r *= actual_r = random_i32();
+ expected_g *= actual_g = random_i32();
+ expected_b *= actual_b = random_i32();
+ rgb *= rgbaint_t(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::operator*=");
+
+ // test factor multiplication (method)
+ imm = random_i32();
+ expected_a *= imm;
+ expected_r *= imm;
+ expected_g *= imm;
+ expected_b *= imm;
+ rgb.mul_imm(imm);
+ check_expected("rgbaint_t::mul_imm");
+
+ // test factor multiplication (operator)
+ imm = random_i32();
+ expected_a *= imm;
+ expected_r *= imm;
+ expected_g *= imm;
+ expected_b *= imm;
+ rgb *= imm;
+ check_expected("rgbaint_t::operator*=");
+
+ // test immediate RGB multiplication
+ expected_a *= actual_a = random_i32();
+ expected_r *= actual_r = random_i32();
+ expected_g *= actual_g = random_i32();
+ expected_b *= actual_b = random_i32();
+ rgb.mul_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::mul_imm_rgba");
+
+ // test RGB and not
+ expected_a &= ~(actual_a = random_i32());
+ expected_r &= ~(actual_r = random_i32());
+ expected_g &= ~(actual_g = random_i32());
+ expected_b &= ~(actual_b = random_i32());
+ rgb.andnot_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::andnot_reg");
+
+ // test RGB or
+ expected_a |= actual_a = random_i32();
+ expected_r |= actual_r = random_i32();
+ expected_g |= actual_g = random_i32();
+ expected_b |= actual_b = random_i32();
+ rgb.or_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::or_reg");
+
+ // test RGB and
+ expected_a &= actual_a = random_i32();
+ expected_r &= actual_r = random_i32();
+ expected_g &= actual_g = random_i32();
+ expected_b &= actual_b = random_i32();
+ rgb.and_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::and_reg");
+
+ // test RGB xor
+ expected_a ^= actual_a = random_i32();
+ expected_r ^= actual_r = random_i32();
+ expected_g ^= actual_g = random_i32();
+ expected_b ^= actual_b = random_i32();
+ rgb.xor_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b));
+ check_expected("rgbaint_t::xor_reg");
+
+ // test uniform or
+ imm = random_i32();
+ expected_a |= imm;
+ expected_r |= imm;
+ expected_g |= imm;
+ expected_b |= imm;
+ rgb.or_imm(imm);
+ check_expected("rgbaint_t::or_imm");
+
+ // test uniform and
+ imm = random_i32();
+ expected_a &= imm;
+ expected_r &= imm;
+ expected_g &= imm;
+ expected_b &= imm;
+ rgb.and_imm(imm);
+ check_expected("rgbaint_t::and_imm");
+
+ // test uniform xor
+ imm = random_i32();
+ expected_a ^= imm;
+ expected_r ^= imm;
+ expected_g ^= imm;
+ expected_b ^= imm;
+ rgb.xor_imm(imm);
+ check_expected("rgbaint_t::xor_imm");
+
+ // test immediate RGB or
+ expected_a |= actual_a = random_i32();
+ expected_r |= actual_r = random_i32();
+ expected_g |= actual_g = random_i32();
+ expected_b |= actual_b = random_i32();
+ rgb.or_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::or_imm_rgba");
+
+ // test immediate RGB and
+ expected_a &= actual_a = random_i32();
+ expected_r &= actual_r = random_i32();
+ expected_g &= actual_g = random_i32();
+ expected_b &= actual_b = random_i32();
+ rgb.and_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::and_imm_rgba");
+
+ // test immediate RGB xor
+ expected_a ^= actual_a = random_i32();
+ expected_r ^= actual_r = random_i32();
+ expected_g ^= actual_g = random_i32();
+ expected_b ^= actual_b = random_i32();
+ rgb.xor_imm_rgba(actual_a, actual_r, actual_g, actual_b);
+ check_expected("rgbaint_t::xor_imm_rgba");
+
+ // test 8-bit get
+ expected_a = s32(u32(expected_a) & 0x00ff);
+ expected_r = s32(u32(expected_r) & 0x00ff);
+ expected_g = s32(u32(expected_g) & 0x00ff);
+ expected_b = s32(u32(expected_b) & 0x00ff);
+ actual_a = s32(u32(rgb.get_a()));
+ actual_r = s32(u32(rgb.get_r()));
+ actual_g = s32(u32(rgb.get_g()));
+ actual_b = s32(u32(rgb.get_b()));
+ if (actual_a != expected_a) osd_printf_error("Error testing rgbaint_t::get_a() = %d (expected %d)\n", actual_a, expected_a);
+ if (actual_r != expected_r) osd_printf_error("Error testing rgbaint_t::get_r() = %d (expected %d)\n", actual_r, expected_r);
+ if (actual_g != expected_g) osd_printf_error("Error testing rgbaint_t::get_g() = %d (expected %d)\n", actual_g, expected_g);
+ if (actual_b != expected_b) osd_printf_error("Error testing rgbaint_t::get_b() = %d (expected %d)\n", actual_b, expected_b);
+
+ // test set from packed RGBA
+ imm = random_i32();
+ expected_a = s32((u32(imm) >> 24) & 0x00ff);
+ expected_r = s32((u32(imm) >> 16) & 0x00ff);
+ expected_g = s32((u32(imm) >> 8) & 0x00ff);
+ expected_b = s32((u32(imm) >> 0) & 0x00ff);
+ rgb.set(u32(imm));
+ check_expected("rgbaint_t::set(u32)");
+
+ // while we have a value loaded that we know doesn't exceed 8-bit range, check the non-clamping convert-to-rgba
+ packed = rgb.to_rgba();
+ if (u32(imm) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba() = %08x (expected %08x)\n", u32(packed), u32(imm));
+
+ // test construct from packed RGBA and assign
+ imm = random_i32();
+ expected_a = s32((u32(imm) >> 24) & 0x00ff);
+ expected_r = s32((u32(imm) >> 16) & 0x00ff);
+ expected_g = s32((u32(imm) >> 8) & 0x00ff);
+ expected_b = s32((u32(imm) >> 0) & 0x00ff);
+ rgb = rgbaint_t(u32(imm));
+ check_expected("rgbaint_t(u32)");
+
+ // while we have a value loaded that we know doesn't exceed 8-bit range, check the non-clamping convert-to-rgba
+ packed = rgb.to_rgba();
+ if (u32(imm) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba() = %08x (expected %08x)\n", u32(packed), u32(imm));
+
+ // test set with rgb_t
+ packed = random_u32();
+ expected_a = s32(u32(packed.a()));
+ expected_r = s32(u32(packed.r()));
+ expected_g = s32(u32(packed.g()));
+ expected_b = s32(u32(packed.b()));
+ rgb.set(packed);
+ check_expected("rgbaint_t::set(rgba_t)");
+
+ // test construct with rgb_t
+ packed = random_u32();
+ expected_a = s32(u32(packed.a()));
+ expected_r = s32(u32(packed.r()));
+ expected_g = s32(u32(packed.g()));
+ expected_b = s32(u32(packed.b()));
+ rgb = rgbaint_t(packed);
+ check_expected("rgbaint_t::set(rgba_t)");
+
+ // test clamping convert-to-rgba with hand-crafted values to catch edge cases
+ rgb.set(std::numeric_limits<s32>::min(), -1, 0, 1);
+ packed = rgb.to_rgba_clamp();
+ if (u32(0x00000001) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0x00000001)\n", u32(packed));
+ rgb.set(254, 255, 256, std::numeric_limits<s32>::max());
+ packed = rgb.to_rgba_clamp();
+ if (u32(0xfeffffff) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0xfeffffff)\n", u32(packed));
+ rgb.set(std::numeric_limits<s32>::max(), std::numeric_limits<s32>::min(), 256, -1);
+ packed = rgb.to_rgba_clamp();
+ if (u32(0xff00ff00) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0xff00ff00)\n", u32(packed));
+ rgb.set(0, 255, 1, 254);
+ packed = rgb.to_rgba_clamp();
+ if (u32(0x00ff01fe) != u32(packed))
+ osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0x00ff01fe)\n", u32(packed));
+
+ // test in-place clamping with hand-crafted values to catch edge cases
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 1;
+ rgb.set(std::numeric_limits<s32>::min(), -1, 0, 1);
+ rgb.clamp_to_uint8();
+ check_expected("rgbaint_t::clamp_to_uint8");
+ expected_a = 254;
+ expected_r = 255;
+ expected_g = 255;
+ expected_b = 255;
+ rgb.set(254, 255, 256, std::numeric_limits<s32>::max());
+ rgb.clamp_to_uint8();
+ check_expected("rgbaint_t::clamp_to_uint8");
+ expected_a = 255;
+ expected_r = 0;
+ expected_g = 255;
+ expected_b = 0;
+ rgb.set(std::numeric_limits<s32>::max(), std::numeric_limits<s32>::min(), 256, -1);
+ rgb.clamp_to_uint8();
+ check_expected("rgbaint_t::clamp_to_uint8");
+ expected_a = 0;
+ expected_r = 255;
+ expected_g = 1;
+ expected_b = 254;
+ rgb.set(0, 255, 1, 254);
+ rgb.clamp_to_uint8();
+ check_expected("rgbaint_t::clamp_to_uint8");
+
+ // test shift left
+ expected_a = (actual_a = random_i32()) << 19;
+ expected_r = (actual_r = random_i32()) << 3;
+ expected_g = (actual_g = random_i32()) << 21;
+ expected_b = (actual_b = random_i32()) << 6;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shl(rgbaint_t(19, 3, 21, 6));
+ check_expected("rgbaint_t::shl");
+
+ // test shift left immediate
+ expected_a = (actual_a = random_i32()) << 7;
+ expected_r = (actual_r = random_i32()) << 7;
+ expected_g = (actual_g = random_i32()) << 7;
+ expected_b = (actual_b = random_i32()) << 7;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shl_imm(7);
+ check_expected("rgbaint_t::shl_imm");
+
+ // test logical shift right
+ expected_a = s32(u32(actual_a = random_i32()) >> 8);
+ expected_r = s32(u32(actual_r = random_i32()) >> 18);
+ expected_g = s32(u32(actual_g = random_i32()) >> 26);
+ expected_b = s32(u32(actual_b = random_i32()) >> 4);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shr(rgbaint_t(8, 18, 26, 4));
+ check_expected("rgbaint_t::shr");
+
+ // test logical shift right with opposite signs
+ expected_a = s32(u32(actual_a = -actual_a) >> 21);
+ expected_r = s32(u32(actual_r = -actual_r) >> 13);
+ expected_g = s32(u32(actual_g = -actual_g) >> 11);
+ expected_b = s32(u32(actual_b = -actual_b) >> 17);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shr(rgbaint_t(21, 13, 11, 17));
+ check_expected("rgbaint_t::shr");
+
+ // test logical shift right immediate
+ expected_a = s32(u32(actual_a = random_i32()) >> 5);
+ expected_r = s32(u32(actual_r = random_i32()) >> 5);
+ expected_g = s32(u32(actual_g = random_i32()) >> 5);
+ expected_b = s32(u32(actual_b = random_i32()) >> 5);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shr_imm(5);
+ check_expected("rgbaint_t::shr_imm");
+
+ // test logical shift right immediate with opposite signs
+ expected_a = s32(u32(actual_a = -actual_a) >> 15);
+ expected_r = s32(u32(actual_r = -actual_r) >> 15);
+ expected_g = s32(u32(actual_g = -actual_g) >> 15);
+ expected_b = s32(u32(actual_b = -actual_b) >> 15);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.shr_imm(15);
+ check_expected("rgbaint_t::shr_imm");
+
+ // test arithmetic shift right
+ expected_a = (actual_a = random_i32()) >> 16;
+ expected_r = (actual_r = random_i32()) >> 20;
+ expected_g = (actual_g = random_i32()) >> 14;
+ expected_b = (actual_b = random_i32()) >> 2;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.sra(rgbaint_t(16, 20, 14, 2));
+ check_expected("rgbaint_t::sra");
+
+ // test arithmetic shift right with opposite signs
+ expected_a = (actual_a = -actual_a) >> 1;
+ expected_r = (actual_r = -actual_r) >> 29;
+ expected_g = (actual_g = -actual_g) >> 10;
+ expected_b = (actual_b = -actual_b) >> 22;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.sra(rgbaint_t(1, 29, 10, 22));
+ check_expected("rgbaint_t::sra");
+
+ // test arithmetic shift right immediate (method)
+ expected_a = (actual_a = random_i32()) >> 12;
+ expected_r = (actual_r = random_i32()) >> 12;
+ expected_g = (actual_g = random_i32()) >> 12;
+ expected_b = (actual_b = random_i32()) >> 12;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.sra_imm(12);
+ check_expected("rgbaint_t::sra_imm");
+
+ // test arithmetic shift right immediate with opposite signs (method)
+ expected_a = (actual_a = -actual_a) >> 9;
+ expected_r = (actual_r = -actual_r) >> 9;
+ expected_g = (actual_g = -actual_g) >> 9;
+ expected_b = (actual_b = -actual_b) >> 9;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.sra_imm(9);
+ check_expected("rgbaint_t::sra_imm");
+
+ // test arithmetic shift right immediate (operator)
+ expected_a = (actual_a = random_i32()) >> 7;
+ expected_r = (actual_r = random_i32()) >> 7;
+ expected_g = (actual_g = random_i32()) >> 7;
+ expected_b = (actual_b = random_i32()) >> 7;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb >>= 7;
+ check_expected("rgbaint_t::operator>>=");
+
+ // test arithmetic shift right immediate with opposite signs (operator)
+ expected_a = (actual_a = -actual_a) >> 11;
+ expected_r = (actual_r = -actual_r) >> 11;
+ expected_g = (actual_g = -actual_g) >> 11;
+ expected_b = (actual_b = -actual_b) >> 11;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb >>= 11;
+ check_expected("rgbaint_t::operator>>=");
+
+ // test RGB equality comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = ~s32(0);
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<s32>::min()));
+ check_expected("rgbaint_t::cmpeq");
+ expected_a = 0;
+ expected_r = ~s32(0);
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq(rgbaint_t(std::numeric_limits<s32>::max(), actual_r, actual_g - 1, actual_b + 1));
+ check_expected("rgbaint_t::cmpeq");
+
+ // test immediate equality comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = ~s32(0);
+ expected_r = (actual_r == actual_a) ? ~s32(0) : 0;
+ expected_g = (actual_g == actual_a) ? ~s32(0) : 0;
+ expected_b = (actual_b == actual_a) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(actual_a);
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = (actual_a == actual_r) ? ~s32(0) : 0;
+ expected_r = ~s32(0);
+ expected_g = (actual_g == actual_r) ? ~s32(0) : 0;
+ expected_b = (actual_b == actual_r) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(actual_r);
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = (actual_a == actual_g) ? ~s32(0) : 0;
+ expected_r = (actual_r == actual_g) ? ~s32(0) : 0;
+ expected_g = ~s32(0);
+ expected_b = (actual_b == actual_g) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(actual_g);
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = (actual_a == actual_b) ? ~s32(0) : 0;
+ expected_r = (actual_r == actual_b) ? ~s32(0) : 0;
+ expected_g = (actual_g == actual_b) ? ~s32(0) : 0;
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(actual_b);
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(std::numeric_limits<s32>::min());
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = !actual_a ? ~s32(0) : 0;
+ expected_r = !actual_r ? ~s32(0) : 0;
+ expected_g = !actual_g ? ~s32(0) : 0;
+ expected_b = !actual_b ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(0);
+ check_expected("rgbaint_t::cmpeq_imm");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm(std::numeric_limits<s32>::max());
+ check_expected("rgbaint_t::cmpeq_imm");
+
+ // test immediate RGB equality comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = ~s32(0);
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm_rgba(std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_g, actual_b - 1);
+ check_expected("rgbaint_t::cmpeq_imm_rgba");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpeq_imm_rgba(actual_a + 1, std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_b);
+ check_expected("rgbaint_t::cmpeq_imm_rgba");
+
+ // test RGB greater than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = ~s32(0);
+ expected_g = 0;
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<s32>::min()));
+ check_expected("rgbaint_t::cmpgt");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = ~s32(0);
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt(rgbaint_t(std::numeric_limits<s32>::max(), actual_r, actual_g - 1, actual_b + 1));
+ check_expected("rgbaint_t::cmpgt");
+
+ // test immediate greater than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = (actual_r > actual_a) ? ~s32(0) : 0;
+ expected_g = (actual_g > actual_a) ? ~s32(0) : 0;
+ expected_b = (actual_b > actual_a) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(actual_a);
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = (actual_a > actual_r) ? ~s32(0) : 0;
+ expected_r = 0;
+ expected_g = (actual_g > actual_r) ? ~s32(0) : 0;
+ expected_b = (actual_b > actual_r) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(actual_r);
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = (actual_a > actual_g) ? ~s32(0) : 0;
+ expected_r = (actual_r > actual_g) ? ~s32(0) : 0;
+ expected_g =0;
+ expected_b = (actual_b > actual_g) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(actual_g);
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = (actual_a > actual_b) ? ~s32(0) : 0;
+ expected_r = (actual_r > actual_b) ? ~s32(0) : 0;
+ expected_g = (actual_g > actual_b) ? ~s32(0) : 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(actual_b);
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = ~s32(0);
+ expected_r = ~s32(0);
+ expected_g = ~s32(0);
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(std::numeric_limits<s32>::min());
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = (actual_a > 0) ? ~s32(0) : 0;
+ expected_r = (actual_r > 0) ? ~s32(0) : 0;
+ expected_g = (actual_g > 0) ? ~s32(0) : 0;
+ expected_b = (actual_b > 0) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(0);
+ check_expected("rgbaint_t::cmpgt_imm");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm(std::numeric_limits<s32>::max());
+ check_expected("rgbaint_t::cmpgt_imm");
+
+ // test immediate RGB greater than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = ~s32(0);
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm_rgba(std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_g, actual_b - 1);
+ check_expected("rgbaint_t::cmpgt_imm_rgba");
+ expected_a = 0;
+ expected_r = ~s32(0);
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmpgt_imm_rgba(actual_a + 1, std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_b);
+ check_expected("rgbaint_t::cmpgt_imm_rgba");
+
+ // test RGB less than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = ~s32(0);
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<s32>::min()));
+ check_expected("rgbaint_t::cmplt");
+ expected_a = ~s32(0);
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt(rgbaint_t(std::numeric_limits<s32>::max(), actual_r, actual_g - 1, actual_b + 1));
+ check_expected("rgbaint_t::cmplt");
+
+ // test immediate less than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = (actual_r < actual_a) ? ~s32(0) : 0;
+ expected_g = (actual_g < actual_a) ? ~s32(0) : 0;
+ expected_b = (actual_b < actual_a) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(actual_a);
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = (actual_a < actual_r) ? ~s32(0) : 0;
+ expected_r = 0;
+ expected_g = (actual_g < actual_r) ? ~s32(0) : 0;
+ expected_b = (actual_b < actual_r) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(actual_r);
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = (actual_a < actual_g) ? ~s32(0) : 0;
+ expected_r = (actual_r < actual_g) ? ~s32(0) : 0;
+ expected_g =0;
+ expected_b = (actual_b < actual_g) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(actual_g);
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = (actual_a < actual_b) ? ~s32(0) : 0;
+ expected_r = (actual_r < actual_b) ? ~s32(0) : 0;
+ expected_g = (actual_g < actual_b) ? ~s32(0) : 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(actual_b);
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = 0;
+ expected_r = 0;
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(std::numeric_limits<s32>::min());
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = (actual_a < 0) ? ~s32(0) : 0;
+ expected_r = (actual_r < 0) ? ~s32(0) : 0;
+ expected_g = (actual_g < 0) ? ~s32(0) : 0;
+ expected_b = (actual_b < 0) ? ~s32(0) : 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(0);
+ check_expected("rgbaint_t::cmplt_imm");
+ expected_a = ~s32(0);
+ expected_r = ~s32(0);
+ expected_g = ~s32(0);
+ expected_b = ~s32(0);
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm(std::numeric_limits<s32>::max());
+ check_expected("rgbaint_t::cmplt_imm");
+
+ // test immediate RGB less than comparison
+ actual_a = random_i32_nolimit();
+ actual_r = random_i32_nolimit();
+ actual_g = random_i32_nolimit();
+ actual_b = random_i32_nolimit();
+ expected_a = 0;
+ expected_r = ~s32(0);
+ expected_g = 0;
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm_rgba(std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_g, actual_b - 1);
+ check_expected("rgbaint_t::cmplt_imm_rgba");
+ expected_a = ~s32(0);
+ expected_r = 0;
+ expected_g = ~s32(0);
+ expected_b = 0;
+ rgb.set(actual_a, actual_r, actual_g, actual_b);
+ rgb.cmplt_imm_rgba(actual_a + 1, std::numeric_limits<s32>::min(), std::numeric_limits<s32>::max(), actual_b);
+ check_expected("rgbaint_t::cmplt_imm_rgba");
+}
+
+
+//-------------------------------------------------
+// validate_driver - validate basic driver
+// information
+//-------------------------------------------------
+
+void validity_checker::validate_driver()
+{
+ // check for duplicate names
+ if (!m_names_map.insert(std::make_pair(m_current_driver->name, m_current_driver)).second)
+ {
+ const game_driver *match = m_names_map.find(m_current_driver->name)->second;
+ osd_printf_error("Driver name is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name);
+ }
+
+ // check for duplicate descriptions
+ if (!m_descriptions_map.insert(std::make_pair(m_current_driver->description, m_current_driver)).second)
+ {
+ const game_driver *match = m_descriptions_map.find(m_current_driver->description)->second;
+ osd_printf_error("Driver description is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name);
+ }
+
+ // determine if we are a clone
+ bool is_clone = (strcmp(m_current_driver->parent, "0") != 0);
+ int clone_of = m_drivlist.clone(*m_current_driver);
+ if (clone_of != -1 && (m_drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT))
+ is_clone = false;
+
+ // if we have at least 100 drivers, validate the clone
+ // (100 is arbitrary, but tries to avoid tiny.mak dependencies)
+ if (driver_list::total() > 100 && clone_of == -1 && is_clone)
+ osd_printf_error("Driver is a clone of nonexistent driver %s\n", m_current_driver->parent);
+
+ // look for recursive cloning
+ if (clone_of != -1 && &m_drivlist.driver(clone_of) == m_current_driver)
+ osd_printf_error("Driver is a clone of itself\n");
+
+ // look for clones that are too deep
+ if (clone_of != -1 && (clone_of = m_drivlist.non_bios_clone(clone_of)) != -1)
+ osd_printf_error("Driver is a clone of a clone\n");
+
+ // make sure the driver name is not too long
+ if (!is_clone && strlen(m_current_driver->name) > 16)
+ osd_printf_error("Parent driver name must be 16 characters or less\n");
+ if (is_clone && strlen(m_current_driver->name) > 16)
+ osd_printf_error("Clone driver name must be 16 characters or less\n");
+
+ // make sure the driver name doesn't contain invalid characters
+ for (const char *s = m_current_driver->name; *s != 0; s++)
+ if (((*s < '0') || (*s > '9')) && ((*s < 'a') || (*s > 'z')) && (*s != '_'))
+ {
+ osd_printf_error("Driver name contains invalid characters\n");
+ break;
+ }
+
+ // make sure the year is only digits, '?' or '+'
+ for (const char *s = m_current_driver->year; *s != 0; s++)
+ if (!isdigit(u8(*s)) && *s != '?' && *s != '+')
+ {
+ osd_printf_error("Driver has an invalid year '%s'\n", m_current_driver->year);
+ break;
+ }
+
+ // normalize driver->compatible_with
+ const char *compatible_with = m_current_driver->compatible_with;
+ if (compatible_with != nullptr && strcmp(compatible_with, "0") == 0)
+ compatible_with = nullptr;
+
+ // check for this driver being compatible with a non-existant driver
+ if (compatible_with != nullptr && m_drivlist.find(m_current_driver->compatible_with) == -1)
+ osd_printf_error("Driver is listed as compatible with nonexistent driver %s\n", m_current_driver->compatible_with);
+
+ // check for clone_of and compatible_with being specified at the same time
+ if (m_drivlist.clone(*m_current_driver) != -1 && compatible_with != nullptr)
+ osd_printf_error("Driver cannot be both a clone and listed as compatible with another system\n");
+
+ // find any recursive dependencies on the current driver
+ for (int other_drv = m_drivlist.compatible_with(*m_current_driver); other_drv != -1; other_drv = m_drivlist.compatible_with(other_drv))
+ if (m_current_driver == &m_drivlist.driver(other_drv))
+ {
+ osd_printf_error("Driver is recursively compatible with itself\n");
+ break;
+ }
+
+ // make sure sound-less drivers are flagged
+ sound_interface_iterator iter(m_current_config->root_device());
+ if ((m_current_driver->flags & MACHINE_IS_BIOS_ROOT) == 0 && iter.first() == nullptr && (m_current_driver->flags & MACHINE_NO_SOUND) == 0 && (m_current_driver->flags & MACHINE_NO_SOUND_HW) == 0)
+ osd_printf_error("Driver is missing MACHINE_NO_SOUND flag\n");
+}
+
+
+//-------------------------------------------------
+// validate_roms - validate ROM definitions
+//-------------------------------------------------
+
+void validity_checker::validate_roms()
+{
+ // iterate, starting with the driver's ROMs and continuing with device ROMs
+ for (device_t &device : device_iterator(m_current_config->root_device()))
+ {
+ // track the current device
+ m_current_device = &device;
+
+ // scan the ROM entries for this device
+ const char *last_region_name = "???";
+ const char *last_name = "???";
+ u32 current_length = 0;
+ int items_since_region = 1;
+ int last_bios = 0;
+ int total_files = 0;
+ for (const rom_entry *romp = rom_first_region(device); romp != nullptr && !ROMENTRY_ISEND(romp); romp++)
+ {
+ // if this is a region, make sure it's valid, and record the length
+ if (ROMENTRY_ISREGION(romp))
+ {
+ // if we haven't seen any items since the last region, print a warning
+ if (items_since_region == 0)
+ osd_printf_warning("Empty ROM region '%s' (warning)\n", last_region_name);
+
+ // reset our region tracking states
+ const char *basetag = ROMREGION_GETTAG(romp);
+ items_since_region = (ROMREGION_ISERASE(romp) || ROMREGION_ISDISKDATA(romp)) ? 1 : 0;
+ last_region_name = basetag;
+
+ // check for a valid tag
+ if (basetag == nullptr)
+ {
+ osd_printf_error("ROM_REGION tag with nullptr name\n");
+ continue;
+ }
+
+ // validate the base tag
+ validate_tag(basetag);
+
+ // generate the full tag
+ std::string fulltag = rom_region_name(device, romp);
+
+ // attempt to add it to the map, reporting duplicates as errors
+ current_length = ROMREGION_GETLENGTH(romp);
+ if (!m_region_map.insert(std::make_pair(fulltag, current_length)).second)
+ osd_printf_error("Multiple ROM_REGIONs with the same tag '%s' defined\n", fulltag.c_str());
+ }
+
+ // If this is a system bios, make sure it is using the next available bios number
+ else if (ROMENTRY_ISSYSTEM_BIOS(romp))
+ {
+ int bios_flags = ROM_GETBIOSFLAGS(romp);
+ if (bios_flags != last_bios + 1)
+ osd_printf_error("Non-sequential bios %s (specified as %d, expected to be %d)\n", ROM_GETNAME(romp), bios_flags, last_bios + 1);
+ last_bios = bios_flags;
+ }
+
+ // if this is a file, make sure it is properly formatted
+ else if (ROMENTRY_ISFILE(romp))
+ {
+ // track the last filename we found
+ last_name = ROM_GETNAME(romp);
+ total_files++;
+
+ // make sure the hash is valid
+ util::hash_collection hashes;
+ if (!hashes.from_internal_string(ROM_GETHASHDATA(romp)))
+ osd_printf_error("ROM '%s' has an invalid hash string '%s'\n", last_name, ROM_GETHASHDATA(romp));
+ }
+
+ // for any non-region ending entries, make sure they don't extend past the end
+ if (!ROMENTRY_ISREGIONEND(romp) && current_length > 0 && !ROMENTRY_ISIGNORE(romp)) // HBMAME
+ {
+ items_since_region++;
+ if (ROM_GETOFFSET(romp) + ROM_GETLENGTH(romp) > current_length)
+ osd_printf_error("ROM '%s' extends past the defined memory region\n", last_name);
+ }
+ }
+
+ // final check for empty regions
+ if (items_since_region == 0)
+ osd_printf_warning("Empty ROM region '%s' (warning)\n", last_region_name);
+
+
+ // reset the current device
+ m_current_device = nullptr;
+ }
+}
+
+
+//-------------------------------------------------
+// validate_analog_input_field - validate an
+// analog input field
+//-------------------------------------------------
+
+void validity_checker::validate_analog_input_field(ioport_field &field)
+{
+ // analog ports must have a valid sensitivity
+ if (field.sensitivity() == 0)
+ osd_printf_error("Analog port with zero sensitivity\n");
+
+ // check that the default falls in the bitmask range
+ if (field.defvalue() & ~field.mask())
+ osd_printf_error("Analog port with a default value (%X) out of the bitmask range (%X)\n", field.defvalue(), field.mask());
+
+ // tests for positional devices
+ if (field.type() == IPT_POSITIONAL || field.type() == IPT_POSITIONAL_V)
+ {
+ int shift;
+ for (shift = 0; shift <= 31 && (~field.mask() & (1 << shift)) != 0; shift++) { }
+
+ // convert the positional max value to be in the bitmask for testing
+ //s32 analog_max = field.maxval();
+ //analog_max = (analog_max - 1) << shift;
+
+ // positional port size must fit in bits used
+ if ((field.mask() >> shift) + 1 < field.maxval())
+ osd_printf_error("Analog port with a positional port size bigger then the mask size\n");
+ }
+
+ // tests for absolute devices
+ else if (field.type() > IPT_ANALOG_ABSOLUTE_FIRST && field.type() < IPT_ANALOG_ABSOLUTE_LAST)
+ {
+ // adjust for signed values
+ s32 default_value = field.defvalue();
+ s32 analog_min = field.minval();
+ s32 analog_max = field.maxval();
+ if (analog_min > analog_max)
+ {
+ analog_min = -analog_min;
+ if (default_value > analog_max)
+ default_value = -default_value;
+ }
+
+ // check that the default falls in the MINMAX range
+ if (default_value < analog_min || default_value > analog_max)
+ osd_printf_error("Analog port with a default value (%X) out of PORT_MINMAX range (%X-%X)\n", field.defvalue(), field.minval(), field.maxval());
+
+ // check that the MINMAX falls in the bitmask range
+ // we use the unadjusted min for testing
+ if (field.minval() & ~field.mask() || analog_max & ~field.mask())
+ osd_printf_error("Analog port with a PORT_MINMAX (%X-%X) value out of the bitmask range (%X)\n", field.minval(), field.maxval(), field.mask());
+
+ // absolute analog ports do not use PORT_RESET
+ if (field.analog_reset())
+ osd_printf_error("Absolute analog port using PORT_RESET\n");
+
+ // absolute analog ports do not use PORT_WRAPS
+ if (field.analog_wraps())
+ osd_printf_error("Absolute analog port using PORT_WRAPS\n");
+ }
+
+ // tests for non IPT_POSITIONAL relative devices
+ else
+ {
+ // relative devices do not use PORT_MINMAX
+ if (field.minval() != 0 || field.maxval() != field.mask())
+ osd_printf_error("Relative port using PORT_MINMAX\n");
+
+ // relative devices do not use a default value
+ // the counter is at 0 on power up
+ if (field.defvalue() != 0)
+ osd_printf_error("Relative port using non-0 default value\n");
+
+ // relative analog ports do not use PORT_WRAPS
+ if (field.analog_wraps())
+ osd_printf_error("Absolute analog port using PORT_WRAPS\n");
+ }
+}
+
+
+//-------------------------------------------------
+// validate_dip_settings - validate a DIP switch
+// setting
+//-------------------------------------------------
+
+void validity_checker::validate_dip_settings(ioport_field &field)
+{
+ const char *demo_sounds = ioport_string_from_index(INPUT_STRING_Demo_Sounds);
+ const char *flipscreen = ioport_string_from_index(INPUT_STRING_Flip_Screen);
+ u8 coin_list[__input_string_coinage_end + 1 - __input_string_coinage_start] = { 0 };
+ bool coin_error = false;
+
+ // iterate through the settings
+ for (ioport_setting &setting : field.settings())
+ {
+ // note any coinage strings
+ int strindex = get_defstr_index(setting.name());
+ if (strindex >= __input_string_coinage_start && strindex <= __input_string_coinage_end)
+ coin_list[strindex - __input_string_coinage_start] = 1;
+
+ // make sure demo sounds default to on
+ if (field.name() == demo_sounds && strindex == INPUT_STRING_On && field.defvalue() != setting.value())
+ osd_printf_error("Demo Sounds must default to On\n");
+
+ // check for bad demo sounds options
+ if (field.name() == demo_sounds && (strindex == INPUT_STRING_Yes || strindex == INPUT_STRING_No))
+ osd_printf_error("Demo Sounds option must be Off/On, not %s\n", setting.name());
+
+ // check for bad flip screen options
+ if (field.name() == flipscreen && (strindex == INPUT_STRING_Yes || strindex == INPUT_STRING_No))
+ osd_printf_error("Flip Screen option must be Off/On, not %s\n", setting.name());
+
+ // if we have a neighbor, compare ourselves to him
+ if (setting.next() != nullptr)
+ {
+ // check for inverted off/on dispswitch order
+ int next_strindex = get_defstr_index(setting.next()->name(), true);
+ if (strindex == INPUT_STRING_On && next_strindex == INPUT_STRING_Off)
+ osd_printf_error("%s option must have Off/On options in the order: Off, On\n", field.name());
+
+ // check for inverted yes/no dispswitch order
+ else if (strindex == INPUT_STRING_Yes && next_strindex == INPUT_STRING_No)
+ osd_printf_error("%s option must have Yes/No options in the order: No, Yes\n", field.name());
+
+ // check for inverted upright/cocktail dispswitch order
+ else if (strindex == INPUT_STRING_Cocktail && next_strindex == INPUT_STRING_Upright)
+ osd_printf_error("%s option must have Upright/Cocktail options in the order: Upright, Cocktail\n", field.name());
+
+ // check for proper coin ordering
+ else if (strindex >= __input_string_coinage_start && strindex <= __input_string_coinage_end && next_strindex >= __input_string_coinage_start && next_strindex <= __input_string_coinage_end &&
+ strindex >= next_strindex && setting.condition() == setting.next()->condition())
+ {
+ osd_printf_error("%s option has unsorted coinage %s > %s\n", field.name(), setting.name(), setting.next()->name());
+ coin_error = true;
+ }
+ }
+ }
+
+ // if we have a coin error, demonstrate the correct way
+ if (coin_error)
+ {
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, " Note proper coin sort order should be:\n");
+ for (int entry = 0; entry < ARRAY_LENGTH(coin_list); entry++)
+ if (coin_list[entry])
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, " %s\n", ioport_string_from_index(__input_string_coinage_start + entry));
+ }
+}
+
+
+//-------------------------------------------------
+// validate_condition - validate a condition
+// stored within an ioport field or setting
+//-------------------------------------------------
+
+void validity_checker::validate_condition(ioport_condition &condition, device_t &device, std::unordered_set<std::string> &port_map)
+{
+ // resolve the tag
+ // then find a matching port
+ if (port_map.find(device.subtag(condition.tag())) == port_map.end())
+ osd_printf_error("Condition referencing non-existent ioport tag '%s'\n", condition.tag());
+}
+
+
+//-------------------------------------------------
+// validate_inputs - validate input configuration
+//-------------------------------------------------
+
+void validity_checker::validate_inputs()
+{
+ std::unordered_set<std::string> port_map;
+
+ // iterate over devices
+ for (device_t &device : device_iterator(m_current_config->root_device()))
+ {
+ // see if this device has ports; if not continue
+ if (device.input_ports() == nullptr)
+ continue;
+
+ // track the current device
+ m_current_device = &device;
+
+ // allocate the input ports
+ ioport_list portlist;
+ std::string errorbuf;
+ portlist.append(device, errorbuf);
+
+ // report any errors during construction
+ if (!errorbuf.empty())
+ osd_printf_error("I/O port error during construction:\n%s\n", errorbuf.c_str());
+
+ // do a first pass over ports to add their names and find duplicates
+ for (auto &port : portlist)
+ if (!port_map.insert(port.second->tag()).second)
+ osd_printf_error("Multiple I/O ports with the same tag '%s' defined\n", port.second->tag());
+
+ // iterate over ports
+ for (auto &port : portlist)
+ {
+ m_current_ioport = port.second->tag();
+
+ // iterate through the fields on this port
+ for (ioport_field &field : port.second->fields())
+ {
+ // verify analog inputs
+ if (field.is_analog())
+ validate_analog_input_field(field);
+
+ // look for invalid (0) types which should be mapped to IPT_OTHER
+ if (field.type() == IPT_INVALID)
+ osd_printf_error("Field has an invalid type (0); use IPT_OTHER instead\n");
+
+ // verify dip switches
+ if (field.type() == IPT_DIPSWITCH)
+ {
+ // dip switch fields must have a specific name
+ if (field.specific_name() == nullptr)
+ osd_printf_error("DIP switch has no specific name\n");
+
+ // verify the settings list
+ validate_dip_settings(field);
+ }
+
+ // verify config settings
+ if (field.type() == IPT_CONFIG)
+ {
+ // config fields must have a specific name
+ if (field.specific_name() == nullptr)
+ osd_printf_error("Config switch has no specific name\n");
+ }
+
+ // verify names
+ const char *name = field.specific_name();
+ if (name != nullptr)
+ {
+ // check for empty string
+ if (name[0] == 0)
+ osd_printf_error("Field name is an empty string\n");
+
+ // check for trailing spaces
+ if (name[0] != 0 && name[strlen(name) - 1] == ' ')
+ osd_printf_error("Field '%s' has trailing spaces\n", name);
+
+ // check for invalid UTF-8
+ if (!utf8_is_valid_string(name))
+ osd_printf_error("Field '%s' has invalid characters\n", name);
+
+ // look up the string and print an error if default strings are not used
+ /*strindex =get_defstr_index(defstr_map, name, driver, &error);*/
+ }
+
+ // verify conditions on the field
+ if (!field.condition().none())
+ validate_condition(field.condition(), device, port_map);
+
+ // verify conditions on the settings
+ for (ioport_setting &setting : field.settings())
+ if (!setting.condition().none())
+ validate_condition(setting.condition(), device, port_map);
+ }
+
+ // done with this port
+ m_current_ioport = nullptr;
+ }
+
+ // done with this device
+ m_current_device = nullptr;
+ }
+}
+
+
+//-------------------------------------------------
+// validate_devices - run per-device validity
+// checks
+//-------------------------------------------------
+
+void validity_checker::validate_devices()
+{
+ std::unordered_set<std::string> device_map;
+
+ for (device_t &device : device_iterator(m_current_config->root_device()))
+ {
+ // track the current device
+ m_current_device = &device;
+
+ // validate auto-finders
+ device.findit(true);
+
+ // validate the device tag
+ validate_tag(device.basetag());
+
+ // look for duplicates
+ if (!device_map.insert(device.tag()).second)
+ osd_printf_error("Multiple devices with the same tag '%s' defined\n", device.tag());
+
+ // all devices must have a shortname
+ if (strcmp(device.shortname(), "") == 0)
+ osd_printf_error("Device does not have short name defined\n");
+
+ // all devices must have a source file defined
+ if (strcmp(device.source(), "") == 0)
+ osd_printf_error("Device does not have source file location defined\n");
+
+ // check for device-specific validity check
+ device.validity_check(*this);
+
+ // done with this device
+ m_current_device = nullptr;
+ }
+
+ // if device is slot cart device, we must have a shortname
+ std::unordered_set<std::string> slot_device_map;
+ for (const device_slot_interface &slot : slot_interface_iterator(m_current_config->root_device()))
+ {
+ for (auto &option : slot.option_list())
+ {
+ std::string temptag("_");
+ temptag.append(option.second->name());
+ device_t *dev = const_cast<machine_config &>(*m_current_config).device_add(&m_current_config->root_device(), temptag.c_str(), option.second->devtype(), 0);
+
+ // notify this device and all its subdevices that they are now configured
+ for (device_t &device : device_iterator(*dev))
+ if (!device.configured())
+ device.config_complete();
+
+ if (strcmp(dev->shortname(), "") == 0) {
+ if (slot_device_map.insert(dev->name()).second)
+ osd_printf_error("Device '%s' is slot cart device but does not have short name defined\n", dev->name());
+ }
+
+ const_cast<machine_config &>(*m_current_config).device_remove(&m_current_config->root_device(), temptag.c_str());
+ }
+ }
+
+}
+
+
+//-------------------------------------------------
+// validate_devices_types - check validity of
+// registered device types
+//-------------------------------------------------
+
+void validity_checker::validate_device_types()
+{
+ // reset error/warning state
+ int start_errors = m_errors;
+ int start_warnings = m_warnings;
+ m_error_text.clear();
+ m_warning_text.clear();
+ m_verbose_text.clear();
+
+ std::unordered_map<std::string, std::add_pointer_t<device_type> > device_name_map, device_shortname_map;
+ std::unordered_set<std::type_index> device_types;
+ machine_config config(GAME_NAME(___empty), m_drivlist.options());
+ for (device_type type : registered_device_types)
+ {
+ if (!device_types.emplace(type.type()).second)
+ {
+ osd_printf_error("Device class '%s' registered multiple times\n", type.type().name());
+ }
+ else
+ {
+ device_t *const dev = config.device_add(&config.root_device(), "_tmp", type, 0);
+
+ char const *name((dev->shortname() && *dev->shortname()) ? dev->shortname() : type.type().name());
+ std::string const description((dev->source() && *dev->source()) ? util::string_format("%s(%s)", core_filename_extract_base(dev->source()).c_str(), name) : name);
+
+ // ensure shortname exists
+ if (!dev->shortname() || !*dev->shortname())
+ {
+ osd_printf_error("Device %s does not have short name defined\n", description.c_str());
+ }
+ else
+ {
+ // check for invalid characters in shortname
+ for (char const *s = dev->shortname(); *s; ++s)
+ {
+ if (((*s < '0') || (*s > '9')) && ((*s < 'a') || (*s > 'z')) && (*s != '_'))
+ {
+ osd_printf_error("Device %s short name contains invalid characters\n", description.c_str());
+ break;
+ }
+ }
+
+ // check for name conflicts
+ auto const drvname(m_names_map.find(dev->shortname()));
+ auto const devname(device_shortname_map.emplace(dev->shortname(), &type));
+ if (m_names_map.end() != drvname)
+ {
+ game_driver const &dup(*drvname->second);
+ osd_printf_error("Device %s short name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup.source_file).c_str(), dup.name);
+ }
+ else if (!devname.second)
+ {
+ device_t *const dup = config.device_add(&config.root_device(), "_dup", *devname.first->second, 0);
+ osd_printf_error("Device %s short name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup->source()).c_str(), dup->shortname());
+ config.device_remove(&config.root_device(), "_dup");
+ }
+ }
+
+ // ensure name exists
+ if (!dev->name() || !*dev->name())
+ {
+ osd_printf_error("Device %s does not have name defined\n", description.c_str());
+ }
+ else
+ {
+ // check for description conflicts
+ auto const drvdesc(m_descriptions_map.find(dev->name()));
+ auto const devdesc(device_name_map.emplace(dev->name(), &type));
+ if (m_names_map.end() != drvdesc)
+ {
+ game_driver const &dup(*drvdesc->second);
+ osd_printf_error("Device %s name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup.source_file).c_str(), dup.name);
+ }
+ else if (!devdesc.second)
+ {
+ device_t *const dup = config.device_add(&config.root_device(), "_dup", *devdesc.first->second, 0);
+ osd_printf_error("Device %s name is a duplicate of %s(%s)\n", description.c_str(), core_filename_extract_base(dup->source()).c_str(), dup->shortname());
+ config.device_remove(&config.root_device(), "_dup");
+ }
+ }
+
+ // ensure source exists
+ if (!dev->source() || !*dev->source())
+ osd_printf_error("Device %s does not have source defined\n", description.c_str());
+
+ // check that reported type matches supplied type
+ if (dev->type().type() != type.type())
+ osd_printf_error("Device %s reports type '%s' (created with '%s')\n", description.c_str(), dev->type().type().name(), type.type().name());
+
+ config.device_remove(&config.root_device(), "_tmp");
+ }
+ }
+
+ // if we had warnings or errors, output
+ if (m_errors > start_errors || m_warnings > start_warnings || !m_verbose_text.empty())
+ {
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "%d errors, %d warnings\n", m_errors - start_errors, m_warnings - start_warnings);
+ if (m_errors > start_errors)
+ output_indented_errors(m_error_text, "Errors");
+ if (m_warnings > start_warnings)
+ output_indented_errors(m_warning_text, "Warnings");
+ if (!m_verbose_text.empty())
+ output_indented_errors(m_verbose_text, "Messages");
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n");
+ }
+}
+
+
+//-------------------------------------------------
+// build_output_prefix - create a prefix
+// indicating the current source file, driver,
+// and device
+//-------------------------------------------------
+
+void validity_checker::build_output_prefix(std::string &str)
+{
+ // start empty
+ str.clear();
+
+ // if we have a current (non-root) device, indicate that
+ if (m_current_device != nullptr && m_current_device->owner() != nullptr)
+ str.append(m_current_device->name()).append(" device '").append(m_current_device->tag() + 1).append("': ");
+
+ // if we have a current port, indicate that as well
+ if (m_current_ioport != nullptr)
+ str.append("ioport '").append(m_current_ioport).append("': ");
+}
+
+
+//-------------------------------------------------
+// error_output - error message output override
+//-------------------------------------------------
+
+void validity_checker::output_callback(osd_output_channel channel, const char *msg, va_list args)
+{
+ std::string output;
+ switch (channel)
+ {
+ case OSD_OUTPUT_CHANNEL_ERROR:
+ // count the error
+ m_errors++;
+
+ // output the source(driver) device 'tag'
+ build_output_prefix(output);
+
+ // generate the string
+ strcatvprintf(output, msg, args);
+ m_error_text.append(output);
+ break;
+
+ case OSD_OUTPUT_CHANNEL_WARNING:
+ // count the error
+ m_warnings++;
+
+ // output the source(driver) device 'tag'
+ build_output_prefix(output);
+
+ // generate the string and output to the original target
+ strcatvprintf(output, msg, args);
+ m_warning_text.append(output);
+ break;
+
+ case OSD_OUTPUT_CHANNEL_VERBOSE:
+ // if we're not verbose, skip it
+ if (!m_print_verbose) break;
+
+ // output the source(driver) device 'tag'
+ build_output_prefix(output);
+
+ // generate the string and output to the original target
+ strcatvprintf(output, msg, args);
+ m_verbose_text.append(output);
+ break;
+
+ default:
+ chain_output(channel, msg, args);
+ break;
+ }
+}
+
+//-------------------------------------------------
+// output_via_delegate - helper to output a
+// message via a varargs string, so the argptr
+// can be forwarded onto the given delegate
+//-------------------------------------------------
+
+void validity_checker::output_via_delegate(osd_output_channel channel, const char *format, ...)
+{
+ va_list argptr;
+
+ // call through to the delegate with the proper parameters
+ va_start(argptr, format);
+ chain_output(channel, format, argptr);
+ va_end(argptr);
+}
+
+//-------------------------------------------------
+// output_indented_errors - helper to output error
+// and warning messages with header and indents
+//-------------------------------------------------
+void validity_checker::output_indented_errors(std::string &text, const char *header)
+{
+ // remove trailing newline
+ if (text[text.size()-1] == '\n')
+ text.erase(text.size()-1, 1);
+ strreplace(text, "\n", "\n ");
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "%s:\n %s\n", header, text.c_str());
+}
diff --git a/docs/release/src/emu/video.cpp b/docs/release/src/emu/video.cpp
new file mode 100644
index 00000000000..46a2cbfd9d8
--- /dev/null
+++ b/docs/release/src/emu/video.cpp
@@ -0,0 +1,1365 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ video.cpp
+
+ Core MAME video routines.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+#include "png.h"
+#include "debugger.h"
+#include "ui/uimain.h"
+#include "aviio.h"
+#include "crsshair.h"
+#include "rendersw.hxx"
+#include "output.h"
+
+#include "snap.lh"
+
+#include "osdepend.h"
+
+//**************************************************************************
+// DEBUGGING
+//**************************************************************************
+
+#define LOG_THROTTLE (0)
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// frameskipping tables
+const bool video_manager::s_skiptable[FRAMESKIP_LEVELS][FRAMESKIP_LEVELS] =
+{
+ { false, false, false, false, false, false, false, false, false, false, false, false },
+ { false, false, false, false, false, false, false, false, false, false, false, true },
+ { false, false, false, false, false, true , false, false, false, false, false, true },
+ { false, false, false, true , false, false, false, true , false, false, false, true },
+ { false, false, true , false, false, true , false, false, true , false, false, true },
+ { false, true , false, false, true , false, true , false, false, true , false, true },
+ { false, true , false, true , false, true , false, true , false, true , false, true },
+ { false, true , false, true , true , false, true , false, true , true , false, true },
+ { false, true , true , false, true , true , false, true , true , false, true , true },
+ { false, true , true , true , false, true , true , true , false, true , true , true },
+ { false, true , true , true , true , true , false, true , true , true , true , true },
+ { false, true , true , true , true , true , true , true , true , true , true , true }
+};
+
+
+
+//**************************************************************************
+// VIDEO MANAGER
+//**************************************************************************
+
+static void video_notifier_callback(const char *outname, s32 value, void *param)
+{
+ video_manager *vm = (video_manager *)param;
+
+ vm->set_output_changed();
+}
+
+
+//-------------------------------------------------
+// video_manager - constructor
+//-------------------------------------------------
+
+video_manager::video_manager(running_machine &machine)
+ : m_machine(machine),
+ m_screenless_frame_timer(nullptr),
+ m_output_changed(false),
+ m_throttle_last_ticks(0),
+ m_throttle_realtime(attotime::zero),
+ m_throttle_emutime(attotime::zero),
+ m_throttle_history(0),
+ m_speed_last_realtime(0),
+ m_speed_last_emutime(attotime::zero),
+ m_speed_percent(1.0),
+ m_overall_real_seconds(0),
+ m_overall_real_ticks(0),
+ m_overall_emutime(attotime::zero),
+ m_overall_valid_counter(0),
+ m_throttled(machine.options().throttle()),
+ m_throttle_rate(1.0f),
+ m_fastforward(false),
+ m_seconds_to_run(machine.options().seconds_to_run()),
+ m_auto_frameskip(machine.options().auto_frameskip()),
+ m_speed(original_speed_setting()),
+ m_empty_skip_count(0),
+ m_frameskip_level(machine.options().frameskip()),
+ m_frameskip_counter(0),
+ m_frameskip_adjust(0),
+ m_skipping_this_frame(false),
+ m_average_oversleep(0),
+ m_snap_target(nullptr),
+ m_snap_native(true),
+ m_snap_width(0),
+ m_snap_height(0),
+ m_mng_frame_period(attotime::zero),
+ m_mng_next_frame_time(attotime::zero),
+ m_mng_frame(0),
+ m_avi_file(nullptr),
+ m_avi_frame_period(attotime::zero),
+ m_avi_next_frame_time(attotime::zero),
+ m_avi_frame(0),
+ m_timecode_enabled(false),
+ m_timecode_write(false),
+ m_timecode_text(""),
+ m_timecode_start(attotime::zero),
+ m_timecode_total(attotime::zero)
+
+{
+ // request a callback upon exiting
+ machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&video_manager::exit, this));
+ machine.save().register_postload(save_prepost_delegate(FUNC(video_manager::postload), this));
+
+ // extract initial execution state from global configuration settings
+ update_refresh_speed();
+
+ // create a render target for snapshots
+ const char *viewname = machine.options().snap_view();
+ m_snap_native = (machine.first_screen() != nullptr && (viewname[0] == 0 || strcmp(viewname, "native") == 0));
+
+ // the native target is hard-coded to our internal layout and has all options disabled
+ if (m_snap_native)
+ {
+ m_snap_target = machine.render().target_alloc(&layout_snap, RENDER_CREATE_SINGLE_FILE | RENDER_CREATE_HIDDEN);
+ m_snap_target->set_backdrops_enabled(false);
+ m_snap_target->set_overlays_enabled(false);
+ m_snap_target->set_bezels_enabled(false);
+ m_snap_target->set_cpanels_enabled(false);
+ m_snap_target->set_marquees_enabled(false);
+ m_snap_target->set_screen_overlay_enabled(false);
+ m_snap_target->set_zoom_to_screen(false);
+ }
+
+ // other targets select the specified view and turn off effects
+ else
+ {
+ m_snap_target = machine.render().target_alloc(nullptr, RENDER_CREATE_HIDDEN);
+ m_snap_target->set_view(m_snap_target->configured_view(viewname, 0, 1));
+ m_snap_target->set_screen_overlay_enabled(false);
+ }
+
+ // extract snap resolution if present
+ if (sscanf(machine.options().snap_size(), "%dx%d", &m_snap_width, &m_snap_height) != 2)
+ m_snap_width = m_snap_height = 0;
+
+ // start recording movie if specified
+ const char *filename = machine.options().mng_write();
+ if (filename[0] != 0)
+ begin_recording(filename, MF_MNG);
+
+ filename = machine.options().avi_write();
+ if (filename[0] != 0)
+ begin_recording(filename, MF_AVI);
+
+ // if no screens, create a periodic timer to drive updates
+ if (machine.first_screen() == nullptr)
+ {
+ m_screenless_frame_timer = machine.scheduler().timer_alloc(timer_expired_delegate(FUNC(video_manager::screenless_update_callback), this));
+ m_screenless_frame_timer->adjust(screen_device::DEFAULT_FRAME_PERIOD, 0, screen_device::DEFAULT_FRAME_PERIOD);
+ machine.output().set_notifier(nullptr, video_notifier_callback, this);
+ }
+}
+
+
+//-------------------------------------------------
+// set_frameskip - set the current actual
+// frameskip (-1 means autoframeskip)
+//-------------------------------------------------
+
+void video_manager::set_frameskip(int frameskip)
+{
+ // -1 means autoframeskip
+ if (frameskip == -1)
+ {
+ m_auto_frameskip = true;
+ m_frameskip_level = 0;
+ }
+
+ // any other level is a direct control
+ else if (frameskip >= 0 && frameskip <= MAX_FRAMESKIP)
+ {
+ m_auto_frameskip = false;
+ m_frameskip_level = frameskip;
+ }
+}
+
+
+//-------------------------------------------------
+// frame_update - handle frameskipping and UI,
+// plus updating the screen during normal
+// operations
+//-------------------------------------------------
+
+void video_manager::frame_update(bool from_debugger)
+{
+ // only render sound and video if we're in the running phase
+ int phase = machine().phase();
+ bool skipped_it = m_skipping_this_frame;
+ if (phase == MACHINE_PHASE_RUNNING && (!machine().paused() || machine().options().update_in_pause()))
+ {
+ bool anything_changed = finish_screen_updates();
+
+ // if none of the screens changed and we haven't skipped too many frames in a row,
+ // mark this frame as skipped to prevent throttling; this helps for games that
+ // don't update their screen at the monitor refresh rate
+ if (!anything_changed && !m_auto_frameskip && m_frameskip_level == 0 && m_empty_skip_count++ < 3)
+ skipped_it = true;
+ else
+ m_empty_skip_count = 0;
+ }
+
+ // draw the user interface
+ emulator_info::draw_user_interface(machine());
+
+ // if we're throttling, synchronize before rendering
+ attotime current_time = machine().time();
+ if (!from_debugger && !skipped_it && effective_throttle())
+ update_throttle(current_time);
+
+ // ask the OSD to update
+ g_profiler.start(PROFILER_BLIT);
+ machine().osd().update(!from_debugger && skipped_it);
+ g_profiler.stop();
+
+ emulator_info::periodic_check();
+
+ // perform tasks for this frame
+ if (!from_debugger)
+ machine().call_notifiers(MACHINE_NOTIFY_FRAME);
+
+ // update frameskipping
+ if (!from_debugger)
+ update_frameskip();
+
+ // update speed computations
+ if (!from_debugger && !skipped_it)
+ recompute_speed(current_time);
+
+ // call the end-of-frame callback
+ if (phase == MACHINE_PHASE_RUNNING)
+ {
+ // reset partial updates if we're paused or if the debugger is active
+ screen_device *const screen = machine().first_screen();
+ bool const debugger_enabled = machine().debug_flags & DEBUG_FLAG_ENABLED;
+ bool const within_instruction_hook = debugger_enabled && machine().debugger().within_instruction_hook();
+ if (screen && (machine().paused() || from_debugger || within_instruction_hook))
+ screen->reset_partial_updates();
+ }
+}
+
+
+//-------------------------------------------------
+// speed_text - print the text to be displayed
+// into a string buffer
+//-------------------------------------------------
+
+std::string video_manager::speed_text()
+{
+ std::ostringstream str;
+
+ // if we're paused, just display Paused
+ bool paused = machine().paused();
+ if (paused)
+ str << "paused";
+
+ // if we're fast forwarding, just display Fast-forward
+ else if (m_fastforward)
+ str << "fast ";
+
+ // if we're auto frameskipping, display that plus the level
+ else if (effective_autoframeskip())
+ util::stream_format(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP);
+
+ // otherwise, just display the frameskip plus the level
+ else
+ util::stream_format(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP);
+
+ // append the speed for all cases except paused
+ if (!paused)
+ util::stream_format(str, "%4d%%", (int)(100 * m_speed_percent + 0.5));
+
+ // display the number of partial updates as well
+ int partials = 0;
+ for (screen_device &screen : screen_device_iterator(machine().root_device()))
+ partials += screen.partial_updates();
+ if (partials > 1)
+ util::stream_format(str, "\n%d partial updates", partials);
+
+ return str.str();
+}
+
+
+//-------------------------------------------------
+// save_snapshot - save a snapshot to the given
+// file handle
+//-------------------------------------------------
+
+void video_manager::save_snapshot(screen_device *screen, emu_file &file)
+{
+ // validate
+ assert(!m_snap_native || screen != nullptr);
+
+ // create the bitmap to pass in
+ create_snapshot_bitmap(screen);
+
+ // add two text entries describing the image
+ std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(emulator_info::get_build_version());
+ std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description);
+ png_info pnginfo = { nullptr };
+ png_add_text(&pnginfo, "Software", text1.c_str());
+ png_add_text(&pnginfo, "System", text2.c_str());
+
+ // now do the actual work
+ const rgb_t *palette = (screen != nullptr && screen->has_palette()) ? screen->palette().palette()->entry_list_adjusted() : nullptr;
+ int entries = (screen != nullptr && screen->has_palette()) ? screen->palette().entries() : 0;
+ png_error error = png_write_bitmap(file, &pnginfo, m_snap_bitmap, entries, palette);
+ if (error != PNGERR_NONE)
+ osd_printf_error("Error generating PNG for snapshot: png_error = %d\n", error);
+
+ // free any data allocated
+ png_free(&pnginfo);
+}
+
+
+//-------------------------------------------------
+// save_active_screen_snapshots - save a
+// snapshot of all active screens
+//-------------------------------------------------
+
+void video_manager::save_active_screen_snapshots()
+{
+ // if we're native, then write one snapshot per visible screen
+ if (m_snap_native)
+ {
+ // write one snapshot per visible screen
+ for (screen_device &screen : screen_device_iterator(machine().root_device()))
+ if (machine().render().is_live(screen))
+ {
+ emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ osd_file::error filerr = open_next(file, "png");
+ if (filerr == osd_file::error::NONE)
+ save_snapshot(&screen, file);
+ }
+ }
+
+ // otherwise, just write a single snapshot
+ else
+ {
+ emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ osd_file::error filerr = open_next(file, "png");
+ if (filerr == osd_file::error::NONE)
+ save_snapshot(nullptr, file);
+ }
+}
+
+
+//-------------------------------------------------
+// save_input_timecode - add a line of current
+// timestamp to inp.timecode file
+//-------------------------------------------------
+
+void video_manager::save_input_timecode()
+{
+ // if record timecode input is not active, do nothing
+ if (!m_timecode_enabled) {
+ return;
+ }
+ m_timecode_write = true;
+}
+
+std::string &video_manager::timecode_text(std::string &str)
+{
+ attotime elapsed_time = machine().time() - m_timecode_start;
+ str = string_format(" %s%s%02d:%02d %s",
+ m_timecode_text,
+ m_timecode_text.empty() ? "" : " ",
+ (elapsed_time.m_seconds / 60) % 60,
+ elapsed_time.m_seconds % 60,
+ machine().paused() ? "[paused] " : "");
+ return str;
+}
+
+std::string &video_manager::timecode_total_text(std::string &str)
+{
+ attotime elapsed_time = m_timecode_total;
+ if (machine().ui().show_timecode_counter()) {
+ elapsed_time += machine().time() - m_timecode_start;
+ }
+ str = string_format("TOTAL %02d:%02d ",
+ (elapsed_time.m_seconds / 60) % 60,
+ elapsed_time.m_seconds % 60);
+ return str;
+}
+
+
+
+//-------------------------------------------------
+// begin_recording - begin recording of a movie
+//-------------------------------------------------
+
+void video_manager::begin_recording(const char *name, movie_format format)
+{
+ // create a snapshot bitmap so we know what the target size is
+ create_snapshot_bitmap(nullptr);
+
+ // start up an AVI recording
+ if (format == MF_AVI)
+ {
+ // stop any existing recording
+ end_recording(format);
+
+ // reset the state
+ m_avi_frame = 0;
+ m_avi_next_frame_time = machine().time();
+
+ // build up information about this new movie
+ screen_device *screen = machine().first_screen();
+ avi_file::movie_info info;
+ info.video_format = 0;
+ info.video_timescale = 1000 * ((screen != nullptr) ? ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE);
+ info.video_sampletime = 1000;
+ info.video_numsamples = 0;
+ info.video_width = m_snap_bitmap.width();
+ info.video_height = m_snap_bitmap.height();
+ info.video_depth = 24;
+
+ info.audio_format = 0;
+ info.audio_timescale = machine().sample_rate();
+ info.audio_sampletime = 1;
+ info.audio_numsamples = 0;
+ info.audio_channels = 2;
+ info.audio_samplebits = 16;
+ info.audio_samplerate = machine().sample_rate();
+
+ // create a new temporary movie file
+ osd_file::error filerr;
+ std::string fullpath;
+ {
+ emu_file tempfile(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ if (name != nullptr)
+ filerr = tempfile.open(name);
+ else
+ filerr = open_next(tempfile, "avi");
+
+ // if we succeeded, make a copy of the name and create the real file over top
+ if (filerr == osd_file::error::NONE)
+ fullpath = tempfile.fullpath();
+ }
+
+ if (filerr == osd_file::error::NONE)
+ {
+ // compute the frame time
+ m_avi_frame_period = attotime::from_seconds(1000) / info.video_timescale;
+
+ // create the file and free the string
+ avi_file::error avierr = avi_file::create(fullpath, info, m_avi_file);
+ if (avierr != avi_file::error::NONE)
+ {
+ osd_printf_error("Error creating AVI: %s\n", avi_file::error_string(avierr));
+ return end_recording(format);
+ }
+ }
+ }
+
+ // start up a MNG recording
+ else if (format == MF_MNG)
+ {
+ // stop any existing recording
+ end_recording(format);
+
+ // reset the state
+ m_mng_frame = 0;
+ m_mng_next_frame_time = machine().time();
+
+ // create a new movie file and start recording
+ m_mng_file = std::make_unique<emu_file>(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ osd_file::error filerr;
+ if (name != nullptr)
+ filerr = m_mng_file->open(name);
+ else
+ filerr = open_next(*m_mng_file, "mng");
+
+ if (filerr == osd_file::error::NONE)
+ {
+ // start the capture
+ screen_device *screen = machine().first_screen();
+ int rate = (screen != nullptr) ? ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE;
+ png_error pngerr = mng_capture_start(*m_mng_file, m_snap_bitmap, rate);
+ if (pngerr != PNGERR_NONE)
+ {
+ osd_printf_error("Error capturing MNG, png_error=%d\n", pngerr);
+ return end_recording(format);
+ }
+
+ // compute the frame time
+ m_mng_frame_period = attotime::from_hz(rate);
+ }
+ else
+ {
+ osd_printf_error("Error creating MNG, osd_file::error=%d\n", int(filerr));
+ m_mng_file.reset();
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// end_recording - stop recording of a movie
+//-------------------------------------------------
+
+void video_manager::end_recording(movie_format format)
+{
+ if (format == MF_AVI)
+ {
+ // close the file if it exists
+ if (m_avi_file)
+ {
+ m_avi_file.reset();
+
+ // reset the state
+ m_avi_frame = 0;
+ }
+ }
+ else if (format == MF_MNG)
+ {
+ // close the file if it exists
+ if (m_mng_file != nullptr)
+ {
+ mng_capture_stop(*m_mng_file);
+ m_mng_file.reset();
+
+ // reset the state
+ m_mng_frame = 0;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// add_sound_to_recording - add sound to a movie
+// recording
+//-------------------------------------------------
+
+void video_manager::add_sound_to_recording(const s16 *sound, int numsamples)
+{
+ // only record if we have a file
+ if (m_avi_file != nullptr)
+ {
+ g_profiler.start(PROFILER_MOVIE_REC);
+
+ // write the next frame
+ avi_file::error avierr = m_avi_file->append_sound_samples(0, sound + 0, numsamples, 1);
+ if (avierr == avi_file::error::NONE)
+ avierr = m_avi_file->append_sound_samples(1, sound + 1, numsamples, 1);
+ if (avierr != avi_file::error::NONE)
+ end_recording(MF_AVI);
+
+ g_profiler.stop();
+ }
+}
+
+
+
+//-------------------------------------------------
+// video_exit - close down the video system
+//-------------------------------------------------
+
+void video_manager::exit()
+{
+ // stop recording any movie
+ end_recording(MF_AVI);
+ end_recording(MF_MNG);
+
+ // free the snapshot target
+ machine().render().target_free(m_snap_target);
+ m_snap_bitmap.reset();
+
+ // print a final result if we have at least 2 seconds' worth of data
+ if (!emulator_info::standalone() && m_overall_emutime.seconds() >= 1)
+ {
+ osd_ticks_t tps = osd_ticks_per_second();
+ double final_real_time = (double)m_overall_real_seconds + (double)m_overall_real_ticks / (double)tps;
+ double final_emu_time = m_overall_emutime.as_double();
+ osd_printf_info("Average speed: %.2f%% (%d seconds)\n", 100 * final_emu_time / final_real_time, (m_overall_emutime + attotime(0, ATTOSECONDS_PER_SECOND / 2)).seconds());
+ }
+}
+
+
+//-------------------------------------------------
+// screenless_update_callback - update generator
+// when there are no screens to drive it
+//-------------------------------------------------
+
+void video_manager::screenless_update_callback(void *ptr, int param)
+{
+ // force an update
+ frame_update(false);
+}
+
+
+//-------------------------------------------------
+// postload - callback for resetting things after
+// state has been loaded
+//-------------------------------------------------
+
+void video_manager::postload()
+{
+ m_avi_next_frame_time = machine().time();
+ m_mng_next_frame_time = machine().time();
+}
+
+
+//-------------------------------------------------
+// effective_autoframeskip - return the effective
+// autoframeskip value, accounting for fast
+// forward
+//-------------------------------------------------
+
+inline bool video_manager::effective_autoframeskip() const
+{
+ // if we're fast forwarding or paused, autoframeskip is disabled
+ if (m_fastforward || machine().paused())
+ return false;
+
+ // otherwise, it's up to the user
+ return m_auto_frameskip;
+}
+
+
+//-------------------------------------------------
+// effective_frameskip - return the effective
+// frameskip value, accounting for fast
+// forward
+//-------------------------------------------------
+
+inline int video_manager::effective_frameskip() const
+{
+ // if we're fast forwarding, use the maximum frameskip
+ if (m_fastforward)
+ return FRAMESKIP_LEVELS - 1;
+
+ // otherwise, it's up to the user
+ return m_frameskip_level;
+}
+
+
+//-------------------------------------------------
+// effective_throttle - return the effective
+// throttle value, accounting for fast
+// forward and user interface
+//-------------------------------------------------
+
+inline bool video_manager::effective_throttle() const
+{
+ // if we're paused, or if the UI is active, we always throttle
+ if (machine().paused()) //|| machine().ui().is_menu_active())
+ return true;
+
+ // if we're fast forwarding, we don't throttle
+ if (m_fastforward)
+ return false;
+
+ // otherwise, it's up to the user
+ return throttled();
+}
+
+
+//-------------------------------------------------
+// original_speed_setting - return the original
+// speed setting
+//-------------------------------------------------
+
+inline int video_manager::original_speed_setting() const
+{
+ return machine().options().speed() * 1000.0f + 0.5f;
+}
+
+
+//-------------------------------------------------
+// finish_screen_updates - finish updating all
+// the screens
+//-------------------------------------------------
+
+bool video_manager::finish_screen_updates()
+{
+ // finish updating the screens
+ screen_device_iterator iter(machine().root_device());
+
+ for (screen_device &screen : iter)
+ screen.update_partial(screen.visible_area().max_y);
+
+ // now add the quads for all the screens
+ bool anything_changed = m_output_changed;
+ m_output_changed = false;
+ for (screen_device &screen : iter)
+ if (screen.update_quads())
+ anything_changed = true;
+
+ // draw HUD from LUA callback (if any)
+ anything_changed |= emulator_info::frame_hook();
+
+ // update our movie recording and burn-in state
+ if (!machine().paused())
+ {
+ record_frame();
+
+ // iterate over screens and update the burnin for the ones that care
+ for (screen_device &screen : iter)
+ screen.update_burnin();
+ }
+
+ // draw any crosshairs
+ for (screen_device &screen : iter)
+ machine().crosshair().render(screen);
+
+ return anything_changed;
+}
+
+
+
+//-------------------------------------------------
+// update_throttle - throttle to the game's
+// natural speed
+//-------------------------------------------------
+
+void video_manager::update_throttle(attotime emutime)
+{
+/*
+
+ Throttling theory:
+
+ This routine is called periodically with an up-to-date emulated time.
+ The idea is to synchronize real time with emulated time. We do this
+ by "throttling", or waiting for real time to catch up with emulated
+ time.
+
+ In an ideal world, it will take less real time to emulate and render
+ each frame than the emulated time, so we need to slow things down to
+ get both times in sync.
+
+ There are many complications to this model:
+
+ * some games run too slow, so each frame we get further and
+ further behind real time; our only choice here is to not
+ throttle
+
+ * some games have very uneven frame rates; one frame will take
+ a long time to emulate, and the next frame may be very fast
+
+ * we run on top of multitasking OSes; sometimes execution time
+ is taken away from us, and this means we may not get enough
+ time to emulate one frame
+
+ * we may be paused, and emulated time may not be marching
+ forward
+
+ * emulated time could jump due to resetting the machine or
+ restoring from a saved state
+
+*/
+ static const u8 popcount[256] =
+ {
+ 0,1,1,2,1,2,2,3, 1,2,2,3,2,3,3,4, 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5,
+ 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5, 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6,
+ 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5, 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6,
+ 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6, 3,4,4,5,4,5,5,6, 4,5,5,6,5,6,6,7,
+ 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5, 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6,
+ 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6, 3,4,4,5,4,5,5,6, 4,5,5,6,5,6,6,7,
+ 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6, 3,4,4,5,4,5,5,6, 4,5,5,6,5,6,6,7,
+ 3,4,4,5,4,5,5,6, 4,5,5,6,5,6,6,7, 4,5,5,6,5,6,6,7, 5,6,6,7,6,7,7,8
+ };
+
+ // outer scope so we can break out in case of a resync
+ while (1)
+ {
+ // apply speed factor to emu time
+ if (m_speed != 0 && m_speed != 1000)
+ {
+ // multiply emutime by 1000, then divide by the global speed factor
+ emutime = (emutime * 1000) / m_speed;
+ }
+
+ // compute conversion factors up front
+ osd_ticks_t ticks_per_second = osd_ticks_per_second();
+ attoseconds_t attoseconds_per_tick = ATTOSECONDS_PER_SECOND / ticks_per_second * m_throttle_rate;
+
+ // if we're paused, emutime will not advance; instead, we subtract a fixed
+ // amount of time (1/60th of a second) from the emulated time that was passed in,
+ // and explicitly reset our tracked real and emulated timers to that value ...
+ // this means we pretend that the last update was exactly 1/60th of a second
+ // ago, and was in sync in both real and emulated time
+ if (machine().paused())
+ {
+ m_throttle_emutime = emutime - attotime(0, ATTOSECONDS_PER_SECOND / PAUSED_REFRESH_RATE);
+ m_throttle_realtime = m_throttle_emutime;
+ }
+
+ // attempt to detect anomalies in the emulated time by subtracting the previously
+ // reported value from our current value; this should be a small value somewhere
+ // between 0 and 1/10th of a second ... anything outside of this range is obviously
+ // wrong and requires a resync
+ attoseconds_t emu_delta_attoseconds = (emutime - m_throttle_emutime).as_attoseconds();
+ if (emu_delta_attoseconds < 0 || emu_delta_attoseconds > ATTOSECONDS_PER_SECOND / 10)
+ {
+ if (LOG_THROTTLE)
+ machine().logerror("Resync due to weird emutime delta: %s\n", attotime(0, emu_delta_attoseconds).as_string(18));
+ break;
+ }
+
+ // now determine the current real time in OSD-specified ticks; we have to be careful
+ // here because counters can wrap, so we only use the difference between the last
+ // read value and the current value in our computations
+ osd_ticks_t diff_ticks = osd_ticks() - m_throttle_last_ticks;
+ m_throttle_last_ticks += diff_ticks;
+
+ // if it has been more than a full second of real time since the last call to this
+ // function, we just need to resynchronize
+ if (diff_ticks >= ticks_per_second)
+ {
+ if (LOG_THROTTLE)
+ machine().logerror("Resync due to real time advancing by more than 1 second\n");
+ break;
+ }
+
+ // convert this value into attoseconds for easier comparison
+ attoseconds_t real_delta_attoseconds = diff_ticks * attoseconds_per_tick;
+
+ // now update our real and emulated timers with the current values
+ m_throttle_emutime = emutime;
+ m_throttle_realtime += attotime(0, real_delta_attoseconds);
+
+ // keep a history of whether or not emulated time beat real time over the last few
+ // updates; this can be used for future heuristics
+ m_throttle_history = (m_throttle_history << 1) | (emu_delta_attoseconds > real_delta_attoseconds);
+
+ // determine how far ahead real time is versus emulated time; note that we use the
+ // accumulated times for this instead of the deltas for the current update because
+ // we want to track time over a longer duration than a single update
+ attoseconds_t real_is_ahead_attoseconds = (m_throttle_emutime - m_throttle_realtime).as_attoseconds();
+
+ // if we're more than 1/10th of a second out, or if we are behind at all and emulation
+ // is taking longer than the real frame, we just need to resync
+ if (real_is_ahead_attoseconds < -ATTOSECONDS_PER_SECOND / 10 ||
+ (real_is_ahead_attoseconds < 0 && popcount[m_throttle_history & 0xff] < 6))
+ {
+ if (LOG_THROTTLE)
+ machine().logerror("Resync due to being behind: %s (history=%08X)\n", attotime(0, -real_is_ahead_attoseconds).as_string(18), m_throttle_history);
+ break;
+ }
+
+ // if we're behind, it's time to just get out
+ if (real_is_ahead_attoseconds < 0)
+ return;
+
+ // compute the target real time, in ticks, where we want to be
+ osd_ticks_t target_ticks = m_throttle_last_ticks + real_is_ahead_attoseconds / attoseconds_per_tick;
+
+ // throttle until we read the target, and update real time to match the final time
+ diff_ticks = throttle_until_ticks(target_ticks) - m_throttle_last_ticks;
+ m_throttle_last_ticks += diff_ticks;
+ m_throttle_realtime += attotime(0, diff_ticks * attoseconds_per_tick);
+ return;
+ }
+
+ // reset realtime and emutime to the same value
+ m_throttle_realtime = m_throttle_emutime = emutime;
+}
+
+
+//-------------------------------------------------
+// throttle_until_ticks - spin until the
+// specified target time, calling the OSD code
+// to sleep if possible
+//-------------------------------------------------
+
+osd_ticks_t video_manager::throttle_until_ticks(osd_ticks_t target_ticks)
+{
+ // we're allowed to sleep via the OSD code only if we're configured to do so
+ // and we're not frameskipping due to autoframeskip, or if we're paused
+ bool allowed_to_sleep = false;
+ if (machine().options().sleep() && (!effective_autoframeskip() || effective_frameskip() == 0))
+ allowed_to_sleep = true;
+ if (machine().paused())
+ allowed_to_sleep = true;
+
+ // loop until we reach our target
+ g_profiler.start(PROFILER_IDLE);
+ osd_ticks_t minimum_sleep = osd_ticks_per_second() / 1000;
+ osd_ticks_t current_ticks = osd_ticks();
+ while (current_ticks < target_ticks)
+ {
+ // compute how much time to sleep for, taking into account the average oversleep
+ osd_ticks_t delta = (target_ticks - current_ticks) * 1000 / (1000 + m_average_oversleep);
+
+ // see if we can sleep
+ bool slept = false;
+ if (allowed_to_sleep && delta >= minimum_sleep)
+ {
+ osd_sleep(delta);
+ slept = true;
+ }
+
+ // read the new value
+ osd_ticks_t new_ticks = osd_ticks();
+
+ // keep some metrics on the sleeping patterns of the OSD layer
+ if (slept)
+ {
+ // if we overslept, keep an average of the amount
+ osd_ticks_t actual_ticks = new_ticks - current_ticks;
+ if (actual_ticks > delta)
+ {
+ // take 90% of the previous average plus 10% of the new value
+ osd_ticks_t oversleep_milliticks = 1000 * (actual_ticks - delta) / delta;
+ m_average_oversleep = (m_average_oversleep * 99 + oversleep_milliticks) / 100;
+
+ if (LOG_THROTTLE)
+ machine().logerror("Slept for %d ticks, got %d ticks, avgover = %d\n", (int)delta, (int)actual_ticks, (int)m_average_oversleep);
+ }
+ }
+ current_ticks = new_ticks;
+ }
+ g_profiler.stop();
+
+ return current_ticks;
+}
+
+
+//-------------------------------------------------
+// update_frameskip - update frameskipping
+// counters and periodically update autoframeskip
+//-------------------------------------------------
+
+void video_manager::update_frameskip()
+{
+ // if we're throttling and autoframeskip is on, adjust
+ if (effective_throttle() && effective_autoframeskip() && m_frameskip_counter == 0)
+ {
+ // calibrate the "adjusted speed" based on the target
+ double adjusted_speed_percent = m_speed_percent / (double) m_throttle_rate;
+
+ // if we're too fast, attempt to increase the frameskip
+ double speed = m_speed * 0.001;
+ if (adjusted_speed_percent >= 0.995 * speed)
+ {
+ // but only after 3 consecutive frames where we are too fast
+ if (++m_frameskip_adjust >= 3)
+ {
+ m_frameskip_adjust = 0;
+ if (m_frameskip_level > 0)
+ m_frameskip_level--;
+ }
+ }
+
+ // if we're too slow, attempt to increase the frameskip
+ else
+ {
+ // if below 80% speed, be more aggressive
+ if (adjusted_speed_percent < 0.80 * speed)
+ m_frameskip_adjust -= (0.90 * speed - m_speed_percent) / 0.05;
+
+ // if we're close, only force it up to frameskip 8
+ else if (m_frameskip_level < 8)
+ m_frameskip_adjust--;
+
+ // perform the adjustment
+ while (m_frameskip_adjust <= -2)
+ {
+ m_frameskip_adjust += 2;
+ if (m_frameskip_level < MAX_FRAMESKIP)
+ m_frameskip_level++;
+ }
+ }
+ }
+
+ // increment the frameskip counter and determine if we will skip the next frame
+ m_frameskip_counter = (m_frameskip_counter + 1) % FRAMESKIP_LEVELS;
+ m_skipping_this_frame = s_skiptable[effective_frameskip()][m_frameskip_counter];
+}
+
+
+//-------------------------------------------------
+// update_refresh_speed - update the m_speed
+// based on the maximum refresh rate supported
+//-------------------------------------------------
+
+void video_manager::update_refresh_speed()
+{
+ // only do this if the refreshspeed option is used
+ if (machine().options().refresh_speed())
+ {
+ double minrefresh = machine().render().max_update_rate();
+ if (minrefresh != 0)
+ {
+ // find the screen with the shortest frame period (max refresh rate)
+ // note that we first check the token since this can get called before all screens are created
+ attoseconds_t min_frame_period = ATTOSECONDS_PER_SECOND;
+ for (screen_device &screen : screen_device_iterator(machine().root_device()))
+ {
+ attoseconds_t period = screen.frame_period().attoseconds();
+ if (period != 0)
+ min_frame_period = std::min(min_frame_period, period);
+ }
+
+ // compute a target speed as an integral percentage
+ // note that we lop 0.25Hz off of the minrefresh when doing the computation to allow for
+ // the fact that most refresh rates are not accurate to 10 digits...
+ u32 target_speed = floor((minrefresh - 0.25) * 1000.0 / ATTOSECONDS_TO_HZ(min_frame_period));
+ u32 original_speed = original_speed_setting();
+ target_speed = std::min(target_speed, original_speed);
+
+ // if we changed, log that verbosely
+ if (target_speed != m_speed)
+ {
+ osd_printf_verbose("Adjusting target speed to %.1f%% (hw=%.2fHz, game=%.2fHz, adjusted=%.2fHz)\n", target_speed / 10.0, minrefresh, ATTOSECONDS_TO_HZ(min_frame_period), ATTOSECONDS_TO_HZ(min_frame_period * 1000.0 / target_speed));
+ m_speed = target_speed;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// recompute_speed - recompute the current
+// overall speed; we assume this is called only
+// if we did not skip a frame
+//-------------------------------------------------
+
+void video_manager::recompute_speed(const attotime &emutime)
+{
+ // if we don't have a starting time yet, or if we're paused, reset our starting point
+ if (m_speed_last_realtime == 0 || machine().paused())
+ {
+ m_speed_last_realtime = osd_ticks();
+ m_speed_last_emutime = emutime;
+ }
+
+ // if it has been more than the update interval, update the time
+ attotime delta_emutime = emutime - m_speed_last_emutime;
+ if (delta_emutime > attotime(0, ATTOSECONDS_PER_SPEED_UPDATE))
+ {
+ // convert from ticks to attoseconds
+ osd_ticks_t realtime = osd_ticks();
+ osd_ticks_t delta_realtime = realtime - m_speed_last_realtime;
+ osd_ticks_t tps = osd_ticks_per_second();
+ m_speed_percent = delta_emutime.as_double() * (double)tps / (double)delta_realtime;
+
+ // remember the last times
+ m_speed_last_realtime = realtime;
+ m_speed_last_emutime = emutime;
+
+ // if we're throttled, this time period counts for overall speed; otherwise, we reset the counter
+ if (!m_fastforward)
+ m_overall_valid_counter++;
+ else
+ m_overall_valid_counter = 0;
+
+ // if we've had at least 4 consecutive valid periods, accumulate stats
+ if (m_overall_valid_counter >= 4)
+ {
+ m_overall_real_ticks += delta_realtime;
+ while (m_overall_real_ticks >= tps)
+ {
+ m_overall_real_ticks -= tps;
+ m_overall_real_seconds++;
+ }
+ m_overall_emutime += delta_emutime;
+ }
+ }
+
+ // if we're past the "time-to-execute" requested, signal an exit
+ if (m_seconds_to_run != 0 && emutime.seconds() >= m_seconds_to_run)
+ {
+ // create a final screenshot
+ emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ osd_file::error filerr = file.open(machine().basename(), PATH_SEPARATOR "final.png");
+ if (filerr == osd_file::error::NONE)
+ save_snapshot(nullptr, file);
+
+ //printf("Scheduled exit at %f\n", emutime.as_double());
+ // schedule our demise
+ machine().schedule_exit();
+ }
+}
+
+
+//-------------------------------------------------
+// create_snapshot_bitmap - creates a
+// bitmap containing the screenshot for the
+// given screen
+//-------------------------------------------------
+
+typedef software_renderer<u32, 0,0,0, 16,8,0, false, true> snap_renderer_bilinear;
+typedef software_renderer<u32, 0,0,0, 16,8,0, false, false> snap_renderer;
+
+void video_manager::create_snapshot_bitmap(screen_device *screen)
+{
+ // select the appropriate view in our dummy target
+ if (m_snap_native && screen != nullptr)
+ {
+ screen_device_iterator iter(machine().root_device());
+ int view_index = iter.indexof(*screen);
+ assert(view_index != -1);
+ m_snap_target->set_view(view_index);
+ }
+
+ // get the minimum width/height and set it on the target
+ s32 width = m_snap_width;
+ s32 height = m_snap_height;
+ if (width == 0 || height == 0)
+ m_snap_target->compute_minimum_size(width, height);
+ m_snap_target->set_bounds(width, height);
+
+ // if we don't have a bitmap, or if it's not the right size, allocate a new one
+ if (!m_snap_bitmap.valid() || width != m_snap_bitmap.width() || height != m_snap_bitmap.height())
+ m_snap_bitmap.allocate(width, height);
+
+ // render the screen there
+ render_primitive_list &primlist = m_snap_target->get_primitives();
+ primlist.acquire_lock();
+ if (machine().options().snap_bilinear())
+ snap_renderer_bilinear::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
+ else
+ snap_renderer::draw_primitives(primlist, &m_snap_bitmap.pix32(0), width, height, m_snap_bitmap.rowpixels());
+ primlist.release_lock();
+}
+
+
+//-------------------------------------------------
+// open_next - open the next non-existing file of
+// type filetype according to our numbering
+// scheme
+//-------------------------------------------------
+
+osd_file::error video_manager::open_next(emu_file &file, const char *extension)
+{
+ u32 origflags = file.openflags();
+
+ // handle defaults
+ const char *snapname = machine().options().snap_name();
+
+ if (snapname == nullptr || snapname[0] == 0)
+ snapname = "%g/%i";
+ std::string snapstr(snapname);
+
+ // strip any extension in the provided name
+ int index = snapstr.find_last_of('.');
+ if (index != -1)
+ snapstr = snapstr.substr(0, index);
+
+ // handle %d in the template (for image devices)
+ std::string snapdev("%d_");
+ int pos = snapstr.find(snapdev);
+
+ if (pos != -1)
+ {
+ // if more %d are found, revert to default and ignore them all
+ if (snapstr.find(snapdev.c_str(), pos + 3) != -1)
+ snapstr.assign("%g/%i");
+ // else if there is a single %d, try to create the correct snapname
+ else
+ {
+ int name_found = 0;
+
+ // find length of the device name
+ int end1 = snapstr.find("/", pos + 3);
+ int end2 = snapstr.find("%", pos + 3);
+ int end;
+
+ if ((end1 != -1) && (end2 != -1))
+ end = std::min(end1, end2);
+ else if (end1 != -1)
+ end = end1;
+ else if (end2 != -1)
+ end = end2;
+ else
+ end = snapstr.length();
+
+ if (end - pos < 3)
+ fatalerror("Something very wrong is going on!!!\n");
+
+ // copy the device name to an std::string
+ std::string snapdevname;
+ snapdevname.assign(snapstr.substr(pos + 3, end - pos - 3));
+ //printf("check template: %s\n", snapdevname.c_str());
+
+ // verify that there is such a device for this system
+ for (device_image_interface &image : image_interface_iterator(machine().root_device()))
+ {
+ // get the device name
+ std::string tempdevname(image.brief_instance_name());
+ //printf("check device: %s\n", tempdevname.c_str());
+
+ if (snapdevname.compare(tempdevname) == 0)
+ {
+ // verify that such a device has an image mounted
+ if (image.basename() != nullptr)
+ {
+ std::string filename(image.basename());
+
+ // strip extension
+ filename = filename.substr(0, filename.find_last_of('.'));
+
+ // setup snapname and remove the %d_
+ strreplace(snapstr, snapdevname.c_str(), filename.c_str());
+ snapstr.erase(pos, 3);
+ //printf("check image: %s\n", filename.c_str());
+
+ name_found = 1;
+ }
+ }
+ }
+
+ // or fallback to default
+ if (name_found == 0)
+ snapstr.assign("%g/%i");
+ }
+ }
+
+ // add our own extension
+ snapstr.append(".").append(extension);
+
+ // substitute path and gamename up front
+ strreplace(snapstr, "/", PATH_SEPARATOR);
+ strreplace(snapstr, "%g", machine().basename());
+
+ // determine if the template has an index; if not, we always use the same name
+ std::string fname;
+ if (snapstr.find("%i") == -1)
+ fname.assign(snapstr);
+
+ // otherwise, we scan for the next available filename
+ else
+ {
+ // try until we succeed
+ file.set_openflags(OPEN_FLAG_READ);
+ for (int seq = 0; ; seq++)
+ {
+ // build up the filename
+ fname.assign(snapstr);
+ strreplace(fname, "%i", string_format("%04d", seq).c_str());
+
+ // try to open the file; stop when we fail
+ osd_file::error filerr = file.open(fname.c_str());
+ if (filerr != osd_file::error::NONE)
+ break;
+ }
+ }
+
+ // create the final file
+ file.set_openflags(origflags);
+ return file.open(fname.c_str());
+}
+
+
+//-------------------------------------------------
+// record_frame - record a frame of a movie
+//-------------------------------------------------
+
+void video_manager::record_frame()
+{
+ // ignore if nothing to do
+ if (m_mng_file == nullptr && m_avi_file == nullptr)
+ return;
+
+ // start the profiler and get the current time
+ g_profiler.start(PROFILER_MOVIE_REC);
+ attotime curtime = machine().time();
+
+ // create the bitmap
+ create_snapshot_bitmap(nullptr);
+
+ // handle an AVI recording
+ if (m_avi_file != nullptr)
+ {
+ // loop until we hit the right time
+ while (m_avi_next_frame_time <= curtime)
+ {
+ // write the next frame
+ avi_file::error avierr = m_avi_file->append_video_frame(m_snap_bitmap);
+ if (avierr != avi_file::error::NONE)
+ {
+ g_profiler.stop();
+ end_recording(MF_AVI);
+ break;
+ }
+
+ // advance time
+ m_avi_next_frame_time += m_avi_frame_period;
+ m_avi_frame++;
+ }
+ }
+
+ // handle a MNG recording
+ if (m_mng_file != nullptr)
+ {
+ // loop until we hit the right time
+ while (m_mng_next_frame_time <= curtime)
+ {
+ // set up the text fields in the movie info
+ png_info pnginfo = { nullptr };
+ if (m_mng_frame == 0)
+ {
+ std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(emulator_info::get_build_version());
+ std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description);
+ png_add_text(&pnginfo, "Software", text1.c_str());
+ png_add_text(&pnginfo, "System", text2.c_str());
+ }
+
+ // write the next frame
+ screen_device *screen = machine().first_screen();
+ const rgb_t *palette = (screen != nullptr && screen->has_palette()) ? screen->palette().palette()->entry_list_adjusted() : nullptr;
+ int entries = (screen != nullptr && screen->has_palette()) ? screen->palette().entries() : 0;
+ png_error error = mng_capture_frame(*m_mng_file, &pnginfo, m_snap_bitmap, entries, palette);
+ png_free(&pnginfo);
+ if (error != PNGERR_NONE)
+ {
+ g_profiler.stop();
+ end_recording(MF_MNG);
+ break;
+ }
+
+ // advance time
+ m_mng_next_frame_time += m_mng_frame_period;
+ m_mng_frame++;
+ }
+ }
+
+ g_profiler.stop();
+}
+
+//-------------------------------------------------
+// toggle_throttle
+//-------------------------------------------------
+
+void video_manager::toggle_throttle()
+{
+ set_throttled(!throttled());
+}
+
+
+//-------------------------------------------------
+// toggle_record_movie
+//-------------------------------------------------
+
+void video_manager::toggle_record_movie()
+{
+ if (!is_recording())
+ {
+ begin_recording(nullptr, MF_MNG);
+ machine().popmessage("REC START");
+ }
+ else
+ {
+ end_recording(MF_MNG);
+ machine().popmessage("REC STOP");
+ }
+}
diff --git a/docs/release/src/emu/video.h b/docs/release/src/emu/video.h
new file mode 100644
index 00000000000..b7b9e4b1fa0
--- /dev/null
+++ b/docs/release/src/emu/video.h
@@ -0,0 +1,208 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ video.h
+
+ Core MAME video routines.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef MAME_EMU_VIDEO_H
+#define MAME_EMU_VIDEO_H
+
+#include "aviio.h"
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+// number of levels of frameskipping supported
+const int FRAMESKIP_LEVELS = 12;
+const int MAX_FRAMESKIP = FRAMESKIP_LEVELS - 2;
+
+#define LCD_FRAMES_PER_SECOND 30
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// forward references
+class render_target;
+class screen_device;
+class avi_file;
+
+
+
+// ======================> video_manager
+
+class video_manager
+{
+ friend class screen_device;
+
+public:
+ // movie format options
+ enum movie_format
+ {
+ MF_MNG,
+ MF_AVI
+ };
+
+ // construction/destruction
+ video_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+ bool skip_this_frame() const { return m_skipping_this_frame; }
+ int speed_factor() const { return m_speed; }
+ int frameskip() const { return m_auto_frameskip ? -1 : m_frameskip_level; }
+ bool throttled() const { return m_throttled; }
+ float throttle_rate() const { return m_throttle_rate; }
+ bool fastforward() const { return m_fastforward; }
+ bool is_recording() const { return (m_mng_file || m_avi_file); }
+
+ // setters
+ void set_speed_factor(int speed) { m_speed = speed; } // MESSUI
+ void set_frameskip(int frameskip);
+ void set_throttled(bool throttled = true) { m_throttled = throttled; }
+ void set_throttle_rate(float throttle_rate) { m_throttle_rate = throttle_rate; }
+ void set_fastforward(bool ffwd = true) { m_fastforward = ffwd; }
+ void set_output_changed() { m_output_changed = true; }
+
+ // misc
+ void toggle_throttle();
+ void toggle_record_movie();
+ osd_file::error open_next(emu_file &file, const char *extension);
+
+ // render a frame
+ void frame_update(bool from_debugger = false);
+
+ // current speed helpers
+ std::string speed_text();
+ double speed_percent() const { return m_speed_percent; }
+
+ // snapshots
+ void save_snapshot(screen_device *screen, emu_file &file);
+ void save_active_screen_snapshots();
+ void save_input_timecode();
+
+ // movies
+ void begin_recording(const char *name, movie_format format);
+ void end_recording(movie_format format);
+ void add_sound_to_recording(const s16 *sound, int numsamples);
+
+ void set_timecode_enabled(bool value) { m_timecode_enabled = value; }
+ bool get_timecode_enabled() { return m_timecode_enabled; }
+ bool get_timecode_write() { return m_timecode_write; }
+ void set_timecode_write(bool value) { m_timecode_write = value; }
+ void set_timecode_text(std::string &str) { m_timecode_text = str; }
+ void set_timecode_start(attotime time) { m_timecode_start = time; }
+ void add_to_total_time(attotime time) { m_timecode_total += time; }
+ std::string &timecode_text(std::string &str);
+ std::string &timecode_total_text(std::string &str);
+
+
+private:
+ // internal helpers
+ void exit();
+ void screenless_update_callback(void *ptr, int param);
+ void postload();
+
+ // effective value helpers
+ bool effective_autoframeskip() const;
+ int effective_frameskip() const;
+ bool effective_throttle() const;
+
+ // speed and throttling helpers
+ int original_speed_setting() const;
+ bool finish_screen_updates();
+ void update_throttle(attotime emutime);
+ osd_ticks_t throttle_until_ticks(osd_ticks_t target_ticks);
+ void update_frameskip();
+ void update_refresh_speed();
+ void recompute_speed(const attotime &emutime);
+
+ // snapshot/movie helpers
+ void create_snapshot_bitmap(screen_device *screen);
+ void record_frame();
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+
+ // screenless systems
+ emu_timer * m_screenless_frame_timer; // timer to signal VBLANK start
+ bool m_output_changed; // did an output element change?
+
+ // throttling calculations
+ osd_ticks_t m_throttle_last_ticks; // osd_ticks the last call to throttle
+ attotime m_throttle_realtime; // real time the last call to throttle
+ attotime m_throttle_emutime; // emulated time the last call to throttle
+ u32 m_throttle_history; // history of frames where we were fast enough
+
+ // dynamic speed computation
+ osd_ticks_t m_speed_last_realtime; // real time at the last speed calculation
+ attotime m_speed_last_emutime; // emulated time at the last speed calculation
+ double m_speed_percent; // most recent speed percentage
+
+ // overall speed computation
+ u32 m_overall_real_seconds; // accumulated real seconds at normal speed
+ osd_ticks_t m_overall_real_ticks; // accumulated real ticks at normal speed
+ attotime m_overall_emutime; // accumulated emulated time at normal speed
+ u32 m_overall_valid_counter; // number of consecutive valid time periods
+
+ // configuration
+ bool m_throttled; // flag: true if we're currently throttled
+ float m_throttle_rate; // target rate for throttling
+ bool m_fastforward; // flag: true if we're currently fast-forwarding
+ u32 m_seconds_to_run; // number of seconds to run before quitting
+ bool m_auto_frameskip; // flag: true if we're automatically frameskipping
+ u32 m_speed; // overall speed (*1000)
+
+ // frameskipping
+ u8 m_empty_skip_count; // number of empty frames we have skipped
+ u8 m_frameskip_level; // current frameskip level
+ u8 m_frameskip_counter; // counter that counts through the frameskip steps
+ s8 m_frameskip_adjust;
+ bool m_skipping_this_frame; // flag: true if we are skipping the current frame
+ osd_ticks_t m_average_oversleep; // average number of ticks the OSD oversleeps
+
+ // snapshot stuff
+ render_target * m_snap_target; // screen shapshot target
+ bitmap_rgb32 m_snap_bitmap; // screen snapshot bitmap
+ bool m_snap_native; // are we using native per-screen layouts?
+ s32 m_snap_width; // width of snapshots (0 == auto)
+ s32 m_snap_height; // height of snapshots (0 == auto)
+
+ // movie recording - MNG
+ std::unique_ptr<emu_file> m_mng_file; // handle to the open movie file
+ attotime m_mng_frame_period; // period of a single movie frame
+ attotime m_mng_next_frame_time; // time of next frame
+ u32 m_mng_frame; // current movie frame number
+
+ // movie recording - AVI
+ avi_file::ptr m_avi_file; // handle to the open movie file
+ attotime m_avi_frame_period; // period of a single movie frame
+ attotime m_avi_next_frame_time; // time of next frame
+ u32 m_avi_frame; // current movie frame number
+
+ static const bool s_skiptable[FRAMESKIP_LEVELS][FRAMESKIP_LEVELS];
+
+ static const attoseconds_t ATTOSECONDS_PER_SPEED_UPDATE = ATTOSECONDS_PER_SECOND / 4;
+ static const int PAUSED_REFRESH_RATE = 30;
+
+ bool m_timecode_enabled; // inp.timecode record enabled
+ bool m_timecode_write; // Show/hide timer at right (partial time)
+ std::string m_timecode_text; // Message for that video part (intro, gameplay, extra)
+ attotime m_timecode_start; // Starting timer for that video part (intro, gameplay, extra)
+ attotime m_timecode_total; // Show/hide timer at left (total elapsed on resulting video preview)
+
+};
+
+#endif // MAME_EMU_VIDEO_H
diff --git a/docs/release/src/frontend/mame/audit.cpp b/docs/release/src/frontend/mame/audit.cpp
new file mode 100644
index 00000000000..d3f9790a4e0
--- /dev/null
+++ b/docs/release/src/frontend/mame/audit.cpp
@@ -0,0 +1,639 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ audit.cpp
+
+ ROM set auditing functions.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+#include "audit.h"
+#include "chd.h"
+#include "drivenum.h"
+#include "sound/samples.h"
+#include "softlist_dev.h"
+
+
+//**************************************************************************
+// CORE FUNCTIONS
+//**************************************************************************
+
+//-------------------------------------------------
+// media_auditor - constructor
+//-------------------------------------------------
+
+media_auditor::media_auditor(const driver_enumerator &enumerator)
+ : m_enumerator(enumerator)
+ , m_validation(AUDIT_VALIDATE_FULL)
+ , m_searchpath(nullptr)
+{
+}
+
+
+//-------------------------------------------------
+// audit_media - audit the media described by the
+// currently-enumerated driver
+//-------------------------------------------------
+
+media_auditor::summary media_auditor::audit_media(const char *validation)
+{
+ // start fresh
+ m_record_list.clear();
+
+ // store validation for later
+ m_validation = validation;
+
+// temporary hack until romload is update: get the driver path and support it for
+// all searches
+const char *driverpath = m_enumerator.config()->root_device().searchpath();
+
+ std::size_t found = 0;
+ std::size_t required = 0;
+ std::size_t shared_found = 0;
+ std::size_t shared_required = 0;
+
+ // iterate over devices and regions
+ for (device_t &device : device_iterator(m_enumerator.config()->root_device()))
+ {
+ // determine the search path for this source and iterate through the regions
+ m_searchpath = device.searchpath();
+
+ // now iterate over regions and ROMs within
+ for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region))
+ {
+// temporary hack: add the driver path & region name
+std::string combinedpath = util::string_format("%s;%s", device.searchpath(), driverpath);
+if (device.shortname())
+ combinedpath.append(";").append(device.shortname());
+m_searchpath = combinedpath.c_str();
+
+ for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ char const *const name(ROM_GETNAME(rom));
+ util::hash_collection const hashes(ROM_GETHASHDATA(rom));
+ device_t *const shared_device(find_shared_device(device, name, hashes, ROM_GETLENGTH(rom)));
+
+ // count the number of files with hashes
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
+ {
+ required++;
+ if (shared_device)
+ shared_required++;
+ }
+
+ audit_record *record = nullptr;
+ if (ROMREGION_ISROMDATA(region))
+ record = &audit_one_rom(rom);
+ else if (ROMREGION_ISDISKDATA(region))
+ record = &audit_one_disk(rom, nullptr);
+
+ if (record)
+ {
+ // count the number of files that are found.
+ if ((record->status() == audit_status::GOOD) || ((record->status() == audit_status::FOUND_INVALID) && !find_shared_device(device, name, record->actual_hashes(), record->actual_length())))
+ {
+ found++;
+ if (shared_device)
+ shared_found++;
+ }
+
+ record->set_shared_device(shared_device);
+ }
+ }
+ }
+ }
+
+ // if we only find files that are in the parent & either the set has no unique files or the parent is not found, then assume we don't have the set at all
+ if ((found == shared_found) && (required > 0) && ((required != shared_required) || (shared_found == 0)))
+ {
+ m_record_list.clear();
+ return NOTFOUND;
+ }
+
+ // return a summary
+ return summarize(m_enumerator.driver().name);
+}
+
+
+//-------------------------------------------------
+// audit_device - audit the device
+//-------------------------------------------------
+
+media_auditor::summary media_auditor::audit_device(device_t &device, const char *validation)
+{
+ // start fresh
+ m_record_list.clear();
+
+ // store validation for later
+ m_validation = validation;
+ m_searchpath = device.shortname();
+
+ std::size_t found = 0;
+ std::size_t required = 0;
+
+ audit_regions(rom_first_region(device), nullptr, found, required);
+
+ if ((found == 0) && (required > 0))
+ {
+ m_record_list.clear();
+ return NOTFOUND;
+ }
+
+ // return a summary
+ return summarize(device.shortname());
+}
+
+
+//-------------------------------------------------
+// audit_software
+//-------------------------------------------------
+media_auditor::summary media_auditor::audit_software(const std::string &list_name, const software_info *swinfo, const char *validation)
+{
+ // start fresh
+ m_record_list.clear();
+
+ // store validation for later
+ m_validation = validation;
+
+ std::string combinedpath(util::string_format("%s;%s%s%s", swinfo->shortname(), list_name, PATH_SEPARATOR, swinfo->shortname()));
+ std::string locationtag(util::string_format("%s%%%s%%", list_name, swinfo->shortname()));
+ if (!swinfo->parentname().empty())
+ {
+ locationtag.append(swinfo->parentname());
+ combinedpath.append(util::string_format(";%s;%s%s%s", swinfo->parentname(), list_name, PATH_SEPARATOR, swinfo->parentname()));
+ }
+ m_searchpath = combinedpath.c_str();
+
+ std::size_t found = 0;
+ std::size_t required = 0;
+
+ // now iterate over software parts
+ for (const software_part &part : swinfo->parts())
+ audit_regions(part.romdata().data(), locationtag.c_str(), found, required);
+
+ if ((found == 0) && (required > 0))
+ {
+ m_record_list.clear();
+ return NOTFOUND;
+ }
+
+ // return a summary
+ return summarize(list_name.c_str());
+}
+
+
+//-------------------------------------------------
+// audit_samples - validate the samples for the
+// currently-enumerated driver
+//-------------------------------------------------
+
+media_auditor::summary media_auditor::audit_samples()
+{
+ // start fresh
+ m_record_list.clear();
+
+ std::size_t required = 0;
+ std::size_t found = 0;
+
+ // iterate over sample entries
+ for (samples_device &device : samples_device_iterator(m_enumerator.config()->root_device()))
+ {
+ // by default we just search using the driver name
+ std::string searchpath(m_enumerator.driver().name);
+
+ // add the alternate path if present
+ samples_iterator iter(device);
+ if (iter.altbasename() != nullptr)
+ searchpath.append(";").append(iter.altbasename());
+
+ // iterate over samples in this entry
+ for (const char *samplename = iter.first(); samplename; samplename = iter.next())
+ {
+ required++;
+
+ // create a new record
+ audit_record &record = *m_record_list.emplace(m_record_list.end(), samplename, media_type::SAMPLE);
+
+ // look for the files
+ emu_file file(m_enumerator.options().sample_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD);
+ path_iterator path(searchpath.c_str());
+ std::string curpath;
+ while (path.next(curpath, samplename))
+ {
+ // attempt to access the file (.flac) or (.wav)
+ osd_file::error filerr = file.open(curpath.c_str(), ".flac");
+ if (filerr != osd_file::error::NONE)
+ filerr = file.open(curpath.c_str(), ".wav");
+
+ if (filerr == osd_file::error::NONE)
+ {
+ record.set_status(audit_status::GOOD, audit_substatus::GOOD);
+ found++;
+ }
+ else
+ {
+ record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND);
+ }
+ }
+ }
+ }
+
+ if ((found == 0) && (required > 0))
+ {
+ m_record_list.clear();
+ return NOTFOUND;
+ }
+
+ // return a summary
+ return summarize(m_enumerator.driver().name);
+}
+
+
+//-------------------------------------------------
+// summary - generate a summary, with an optional
+// string format
+//-------------------------------------------------
+
+media_auditor::summary media_auditor::summarize(const char *name, std::ostream *output) const
+{
+ if (m_record_list.empty())
+ return NONE_NEEDED;
+
+ // loop over records
+ summary overall_status = CORRECT;
+ for (audit_record const &record : m_record_list)
+ {
+ // skip anything that's fine
+ if (record.substatus() == audit_substatus::GOOD)
+ continue;
+
+ // output the game name, file name, and length (if applicable)
+ if (output)
+ {
+ util::stream_format(*output, "%-12s: %s", name, record.name());
+ if (record.expected_length() > 0)
+ util::stream_format(*output, " (%d bytes)", record.expected_length());
+ *output << " - ";
+ }
+
+ // use the substatus for finer details
+ summary best_new_status = INCORRECT;
+ switch (record.substatus())
+ {
+ case audit_substatus::GOOD_NEEDS_REDUMP:
+ if (output) *output << "NEEDS REDUMP\n";
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ case audit_substatus::FOUND_NODUMP:
+ if (output) *output << "NO GOOD DUMP KNOWN\n";
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ case audit_substatus::FOUND_BAD_CHECKSUM:
+ if (output)
+ {
+ util::stream_format(*output, "INCORRECT CHECKSUM:\n");
+ util::stream_format(*output, "EXPECTED: %s\n", record.expected_hashes().macro_string());
+ util::stream_format(*output, " FOUND: %s\n", record.actual_hashes().macro_string());
+ }
+ break;
+
+ case audit_substatus::FOUND_WRONG_LENGTH:
+ if (output) util::stream_format(*output, "INCORRECT LENGTH: %d bytes\n", record.actual_length());
+ break;
+
+ case audit_substatus::NOT_FOUND:
+ if (output)
+ {
+ device_t *const shared_device = record.shared_device();
+ if (shared_device)
+ util::stream_format(*output, "NOT FOUND (%s)\n", shared_device->shortname());
+ else
+ util::stream_format(*output, "NOT FOUND\n");
+ }
+ break;
+
+ case audit_substatus::NOT_FOUND_NODUMP:
+ if (output) *output << "NOT FOUND - NO GOOD DUMP KNOWN\n";
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ case audit_substatus::NOT_FOUND_OPTIONAL:
+ if (output) *output << "NOT FOUND BUT OPTIONAL\n";
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ default:
+ assert(false);
+ }
+
+ // downgrade the overall status if necessary
+ overall_status = (std::max)(overall_status, best_new_status);
+ }
+ return overall_status;
+}
+
+
+//-------------------------------------------------
+// audit_regions - validate/count for regions
+//-------------------------------------------------
+
+void media_auditor::audit_regions(const rom_entry *region, const char *locationtag, std::size_t &found, std::size_t &required)
+{
+ // now iterate over regions
+ for ( ; region; region = rom_next_region(region))
+ {
+ // now iterate over rom definitions
+ for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ util::hash_collection const hashes(ROM_GETHASHDATA(rom));
+
+ // count the number of files with hashes
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom))
+ required++;
+
+ audit_record const *record = nullptr;
+ if (ROMREGION_ISROMDATA(region))
+ record = &audit_one_rom(rom);
+ else if (ROMREGION_ISDISKDATA(region))
+ record = &audit_one_disk(rom, locationtag);
+
+ // count the number of files that are found.
+ if (record && ((record->status() == audit_status::GOOD) || (record->status() == audit_status::FOUND_INVALID)))
+ found++;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// audit_one_rom - validate a single ROM entry
+//-------------------------------------------------
+
+media_auditor::audit_record &media_auditor::audit_one_rom(const rom_entry *rom)
+{
+ // allocate and append a new record
+ audit_record &record = *m_record_list.emplace(m_record_list.end(), *rom, media_type::ROM);
+
+ // see if we have a CRC and extract it if so
+ uint32_t crc = 0;
+ bool const has_crc = record.expected_hashes().crc(crc);
+
+ // find the file and checksum it, getting the file length along the way
+ emu_file file(m_enumerator.options().media_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD);
+ file.set_restrict_to_mediapath(true);
+ path_iterator path(m_searchpath);
+ std::string curpath;
+ while (path.next(curpath, record.name()))
+ {
+ // open the file if we can
+ osd_file::error filerr;
+ if (has_crc)
+ filerr = file.open(curpath.c_str(), crc);
+ else
+ filerr = file.open(curpath.c_str());
+
+ // if it worked, get the actual length and hashes, then stop
+ if (filerr == osd_file::error::NONE)
+ {
+ record.set_actual(file.hashes(m_validation), file.size());
+ break;
+ }
+ }
+
+ // compute the final status
+ compute_status(record, rom, record.actual_length() != 0);
+ return record;
+}
+
+
+//-------------------------------------------------
+// audit_one_disk - validate a single disk entry
+//-------------------------------------------------
+
+media_auditor::audit_record &media_auditor::audit_one_disk(const rom_entry *rom, const char *locationtag)
+{
+ // allocate and append a new record
+ audit_record &record = *m_record_list.emplace(m_record_list.end(), *rom, media_type::DISK);
+
+ // open the disk
+ chd_file source;
+ chd_error err = chd_error(open_disk_image(m_enumerator.options(), &m_enumerator.driver(), rom, source, locationtag));
+
+ // if we succeeded, get the hashes
+ if (err == CHDERR_NONE)
+ {
+ util::hash_collection hashes;
+
+ // if there's a SHA1 hash, add them to the output hash
+ if (source.sha1() != util::sha1_t::null)
+ hashes.add_sha1(source.sha1());
+
+ // update the actual values
+ record.set_actual(hashes);
+ }
+
+ // compute the final status
+ compute_status(record, rom, err == CHDERR_NONE);
+ return record;
+}
+
+
+//-------------------------------------------------
+// compute_status - compute a detailed status
+// based on the information we have
+//-------------------------------------------------
+
+void media_auditor::compute_status(audit_record &record, const rom_entry *rom, bool found)
+{
+ // if not found, provide more details
+ if (!found)
+ {
+ if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP))
+ record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_NODUMP);
+ else if (ROM_ISOPTIONAL(rom))
+ record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_OPTIONAL);
+ else
+ record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND);
+ }
+ else
+ {
+ if (record.expected_length() != record.actual_length())
+ record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_WRONG_LENGTH);
+ else if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP))
+ record.set_status(audit_status::GOOD, audit_substatus::FOUND_NODUMP);
+ else if (record.expected_hashes() != record.actual_hashes())
+ record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_BAD_CHECKSUM);
+ else if (record.expected_hashes().flag(util::hash_collection::FLAG_BAD_DUMP))
+ record.set_status(audit_status::GOOD, audit_substatus::GOOD_NEEDS_REDUMP);
+ else
+ record.set_status(audit_status::GOOD, audit_substatus::GOOD);
+ }
+}
+
+
+//-------------------------------------------------
+// find_shared_device - return the source that
+// shares a media entry with the same hashes
+//-------------------------------------------------
+
+device_t *media_auditor::find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, uint64_t romlength)
+{
+ bool const dumped = !romhashes.flag(util::hash_collection::FLAG_NO_DUMP);
+
+ // special case for non-root devices
+ device_t *highest_device = nullptr;
+ if (device.owner())
+ {
+ for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region))
+ {
+ for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ if (ROM_GETLENGTH(rom) == romlength)
+ {
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name))
+ highest_device = &device;
+ }
+ }
+ }
+ }
+ else
+ {
+ // iterate up the parent chain
+ for (auto drvindex = m_enumerator.find(m_enumerator.driver().parent); drvindex >= 0; drvindex = m_enumerator.find(m_enumerator.driver(drvindex).parent))
+ {
+ for (device_t &scandevice : device_iterator(m_enumerator.config(drvindex)->root_device()))
+ {
+ for (const rom_entry *region = rom_first_region(scandevice); region; region = rom_next_region(region))
+ {
+ for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ if (ROM_GETLENGTH(rom) == romlength)
+ {
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name))
+ highest_device = &scandevice;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return highest_device;
+}
+
+
+//-------------------------------------------------
+// audit_record - constructor
+//-------------------------------------------------
+
+media_auditor::audit_record::audit_record(const rom_entry &media, media_type type)
+ : m_type(type)
+ , m_status(audit_status::UNVERIFIED)
+ , m_substatus(audit_substatus::UNVERIFIED)
+ , m_name(ROM_GETNAME(&media))
+ , m_explength(rom_file_size(&media))
+ , m_length(0)
+ , m_exphashes()
+ , m_hashes()
+ , m_shared_device(nullptr)
+{
+ m_exphashes.from_internal_string(ROM_GETHASHDATA(&media));
+}
+
+media_auditor::audit_record::audit_record(const char *name, media_type type)
+ : m_type(type)
+ , m_status(audit_status::UNVERIFIED)
+ , m_substatus(audit_substatus::UNVERIFIED)
+ , m_name(name)
+ , m_explength(0)
+ , m_length(0)
+ , m_exphashes()
+ , m_hashes()
+ , m_shared_device(nullptr)
+{
+}
+
+
+
+// MESSUI - only report problems that the user can fix
+media_auditor::summary media_auditor::winui_summarize(const char *name, std::string *output)
+{
+ if (m_record_list.empty())
+ return NONE_NEEDED;
+
+ // loop over records
+ summary overall_status = CORRECT;
+ for (audit_record const &record : m_record_list)
+ {
+ summary best_new_status = INCORRECT;
+
+ // skip anything that's fine
+ if ( (record.substatus() == audit_substatus::GOOD)
+ || (record.substatus() == audit_substatus::GOOD_NEEDS_REDUMP)
+ || (record.substatus() == audit_substatus::NOT_FOUND_NODUMP)
+ || (record.substatus() == audit_substatus::FOUND_NODUMP)
+ )
+ continue;
+
+ // output the game name, file name, and length (if applicable)
+ //if (output)
+ {
+ output->append(string_format("%-12s: %s", name, record.name()));
+ if (record.expected_length() > 0)
+ output->append(string_format(" (%d bytes)", record.expected_length()));
+ output->append(" - ");
+ }
+
+ // use the substatus for finer details
+ switch (record.substatus())
+ {
+ case audit_substatus::FOUND_NODUMP:
+ if (output) output->append("NO GOOD DUMP KNOWN\n");
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ case audit_substatus::FOUND_BAD_CHECKSUM:
+ if (output)
+ {
+ output->append("INCORRECT CHECKSUM:\n");
+ output->append(string_format("EXPECTED: %s\n", record.expected_hashes().macro_string().c_str()));
+ output->append(string_format(" FOUND: %s\n", record.actual_hashes().macro_string().c_str()));
+ }
+ break;
+
+ case audit_substatus::FOUND_WRONG_LENGTH:
+ if (output) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record.actual_length()));
+ break;
+
+ case audit_substatus::NOT_FOUND:
+ if (output)
+ {
+ device_t *shared_device = record.shared_device();
+ if (shared_device == NULL)
+ output->append("NOT FOUND\n");
+ else
+ output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname()));
+ }
+ break;
+
+ case audit_substatus::NOT_FOUND_OPTIONAL:
+ if (output) output->append("NOT FOUND BUT OPTIONAL\n");
+ best_new_status = BEST_AVAILABLE;
+ break;
+
+ default:
+ break;
+ }
+
+ // downgrade the overall status if necessary
+ overall_status = (std::max)(overall_status, best_new_status);
+ }
+ return overall_status;
+}
diff --git a/docs/release/src/frontend/mame/audit.h b/docs/release/src/frontend/mame/audit.h
new file mode 100644
index 00000000000..c017651842f
--- /dev/null
+++ b/docs/release/src/frontend/mame/audit.h
@@ -0,0 +1,182 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ audit.h
+
+ ROM, disk, and sample auditing functions.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef MAME_FRONTEND_AUDIT_H
+#define MAME_FRONTEND_AUDIT_H
+
+#include "hash.h"
+
+#include <iosfwd>
+#include <list>
+#include <utility>
+
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+// hashes to use for validation
+#define AUDIT_VALIDATE_FAST "R" /* CRC only */
+#define AUDIT_VALIDATE_FULL "RS" /* CRC + SHA1 */
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+
+// forward declarations
+class driver_enumerator;
+
+
+
+// ======================> media_auditor
+
+// class which manages auditing of items
+class media_auditor
+{
+public:
+ enum class media_type
+ {
+ ROM = 0,
+ DISK,
+ SAMPLE
+ };
+
+ // status values
+ enum class audit_status
+ {
+ GOOD = 0,
+ FOUND_INVALID,
+ NOT_FOUND,
+ UNVERIFIED = 100
+ };
+
+ // substatus values
+ enum class audit_substatus
+ {
+ GOOD = 0,
+ GOOD_NEEDS_REDUMP,
+ FOUND_NODUMP,
+ FOUND_BAD_CHECKSUM,
+ FOUND_WRONG_LENGTH,
+ NOT_FOUND,
+ NOT_FOUND_NODUMP,
+ NOT_FOUND_OPTIONAL,
+ UNVERIFIED = 100
+ };
+
+ // summary values
+ enum summary
+ {
+ CORRECT = 0,
+ NONE_NEEDED,
+ BEST_AVAILABLE,
+ INCORRECT,
+ NOTFOUND
+ };
+
+ // holds the result of auditing a single item
+ class audit_record
+ {
+ public:
+ // media types
+ // construction/destruction
+ audit_record(const rom_entry &media, media_type type);
+ audit_record(const char *name, media_type type);
+ audit_record(const audit_record &) = default;
+ audit_record(audit_record &&) = default;
+ audit_record &operator=(const audit_record &) = default;
+ audit_record &operator=(audit_record &&) = default;
+
+ // getters
+ media_type type() const { return m_type; }
+ audit_status status() const { return m_status; }
+ audit_substatus substatus() const { return m_substatus; }
+ const char *name() const { return m_name; }
+ uint64_t expected_length() const { return m_explength; }
+ uint64_t actual_length() const { return m_length; }
+ const util::hash_collection &expected_hashes() const { return m_exphashes; }
+ const util::hash_collection &actual_hashes() const { return m_hashes; }
+ device_t *shared_device() const { return m_shared_device; }
+
+ // setters
+ void set_status(audit_status status, audit_substatus substatus)
+ {
+ m_status = status;
+ m_substatus = substatus;
+ }
+
+ void set_actual(const util::hash_collection &hashes, uint64_t length = 0)
+ {
+ m_hashes = hashes;
+ m_length = length;
+ }
+
+ void set_actual(util::hash_collection &&hashes, uint64_t length = 0)
+ {
+ m_hashes = std::move(hashes);
+ m_length = length;
+ }
+
+ void set_shared_device(device_t *shared_device)
+ {
+ m_shared_device = shared_device;
+ }
+
+ private:
+ // internal state
+ media_type m_type; // type of item that was audited
+ audit_status m_status; // status of audit on this item
+ audit_substatus m_substatus; // finer-detail status
+ const char * m_name; // name of item
+ uint64_t m_explength; // expected length of item
+ uint64_t m_length; // actual length of item
+ util::hash_collection m_exphashes; // expected hash data
+ util::hash_collection m_hashes; // actual hash information
+ device_t * m_shared_device; // device that shares the rom
+ };
+ using record_list = std::list<audit_record>;
+
+ // construction/destruction
+ media_auditor(const driver_enumerator &enumerator);
+
+ // getters
+ const record_list &records() const { return m_record_list; }
+
+ // audit operations
+ summary audit_media(const char *validation = AUDIT_VALIDATE_FULL);
+ summary audit_device(device_t &device, const char *validation = AUDIT_VALIDATE_FULL);
+ summary audit_software(const std::string &list_name, const software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL);
+ summary audit_samples();
+ summary summarize(const char *name, std::ostream *output = nullptr) const;
+ summary winui_summarize(const char *name, std::string *output = nullptr); //WINUI - only report problems that the user can fix
+
+private:
+ // internal helpers
+ void audit_regions(const rom_entry *region, const char *locationtag, std::size_t &found, std::size_t &required);
+ audit_record &audit_one_rom(const rom_entry *rom);
+ audit_record &audit_one_disk(const rom_entry *rom, const char *locationtag);
+ void compute_status(audit_record &record, const rom_entry *rom, bool found);
+ device_t *find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, uint64_t romlength);
+
+ // internal state
+ record_list m_record_list;
+ const driver_enumerator & m_enumerator;
+ const char * m_validation;
+ const char * m_searchpath;
+};
+
+
+#endif // MAME_FRONTEND_AUDIT_H
diff --git a/docs/release/src/frontend/mame/info.cpp b/docs/release/src/frontend/mame/info.cpp
new file mode 100644
index 00000000000..fa742dfe2f4
--- /dev/null
+++ b/docs/release/src/frontend/mame/info.cpp
@@ -0,0 +1,1640 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles,Paul Priest
+/***************************************************************************
+
+ info.c
+
+ Dumps the MAME internal data as an XML file.
+
+***************************************************************************/
+
+#include "emu.h"
+
+#include "info.h"
+#include "mameopts.h"
+
+#include "machine/ram.h"
+#include "sound/samples.h"
+
+#include "config.h"
+#include "drivenum.h"
+#include "screen.h"
+#include "softlist_dev.h"
+#include "speaker.h"
+
+#include "xmlfile.h"
+
+#include <ctype.h>
+
+
+#define XML_ROOT "mame"
+#define XML_TOP "machine"
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// DTD string describing the data
+const char info_xml_creator::s_dtd_string[] =
+"<!DOCTYPE __XML_ROOT__ [\n"
+"<!ELEMENT __XML_ROOT__ (__XML_TOP__+)>\n"
+"\t<!ATTLIST __XML_ROOT__ build CDATA #IMPLIED>\n"
+"\t<!ATTLIST __XML_ROOT__ debug (yes|no) \"no\">\n"
+"\t<!ATTLIST __XML_ROOT__ mameconfig CDATA #REQUIRED>\n"
+"\t<!ELEMENT __XML_TOP__ (description, year?, manufacturer?, biosset*, rom*, disk*, device_ref*, sample*, chip*, display*, sound?, input?, dipswitch*, configuration*, port*, adjuster*, driver?, device*, slot*, softwarelist*, ramoption*)>\n"
+"\t\t<!ATTLIST __XML_TOP__ name CDATA #REQUIRED>\n"
+"\t\t<!ATTLIST __XML_TOP__ sourcefile CDATA #IMPLIED>\n"
+"\t\t<!ATTLIST __XML_TOP__ isbios (yes|no) \"no\">\n"
+"\t\t<!ATTLIST __XML_TOP__ isdevice (yes|no) \"no\">\n"
+"\t\t<!ATTLIST __XML_TOP__ ismechanical (yes|no) \"no\">\n"
+"\t\t<!ATTLIST __XML_TOP__ runnable (yes|no) \"yes\">\n"
+"\t\t<!ATTLIST __XML_TOP__ cloneof CDATA #IMPLIED>\n"
+"\t\t<!ATTLIST __XML_TOP__ romof CDATA #IMPLIED>\n"
+"\t\t<!ATTLIST __XML_TOP__ sampleof CDATA #IMPLIED>\n"
+"\t\t<!ELEMENT description (#PCDATA)>\n"
+"\t\t<!ELEMENT year (#PCDATA)>\n"
+"\t\t<!ELEMENT manufacturer (#PCDATA)>\n"
+"\t\t<!ELEMENT biosset EMPTY>\n"
+"\t\t\t<!ATTLIST biosset name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST biosset description CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST biosset default (yes|no) \"no\">\n"
+"\t\t<!ELEMENT rom EMPTY>\n"
+"\t\t\t<!ATTLIST rom name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST rom bios CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom size CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST rom crc CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom sha1 CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom merge CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom region CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom offset CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST rom status (baddump|nodump|good) \"good\">\n"
+"\t\t\t<!ATTLIST rom optional (yes|no) \"no\">\n"
+"\t\t<!ELEMENT disk EMPTY>\n"
+"\t\t\t<!ATTLIST disk name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST disk sha1 CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST disk merge CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST disk region CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST disk index CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST disk writable (yes|no) \"no\">\n"
+"\t\t\t<!ATTLIST disk status (baddump|nodump|good) \"good\">\n"
+"\t\t\t<!ATTLIST disk optional (yes|no) \"no\">\n"
+"\t\t<!ELEMENT device_ref EMPTY>\n"
+"\t\t\t<!ATTLIST device_ref name CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT sample EMPTY>\n"
+"\t\t\t<!ATTLIST sample name CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT chip EMPTY>\n"
+"\t\t\t<!ATTLIST chip name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST chip tag CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST chip type (cpu|audio) #REQUIRED>\n"
+"\t\t\t<!ATTLIST chip clock CDATA #IMPLIED>\n"
+"\t\t<!ELEMENT display EMPTY>\n"
+"\t\t\t<!ATTLIST display tag CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display type (raster|vector|lcd|unknown) #REQUIRED>\n"
+"\t\t\t<!ATTLIST display rotate (0|90|180|270) #IMPLIED>\n"
+"\t\t\t<!ATTLIST display flipx (yes|no) \"no\">\n"
+"\t\t\t<!ATTLIST display width CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display height CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display refresh CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST display pixclock CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display htotal CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display hbend CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display hbstart CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display vtotal CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display vbend CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST display vbstart CDATA #IMPLIED>\n"
+"\t\t<!ELEMENT sound EMPTY>\n"
+"\t\t\t<!ATTLIST sound channels CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT input (control*)>\n"
+"\t\t\t<!ATTLIST input service (yes|no) \"no\">\n"
+"\t\t\t<!ATTLIST input tilt (yes|no) \"no\">\n"
+"\t\t\t<!ATTLIST input players CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST input coins CDATA #IMPLIED>\n"
+"\t\t\t<!ELEMENT control EMPTY>\n"
+"\t\t\t\t<!ATTLIST control type CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST control player CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control buttons CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control reqbuttons CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control minimum CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control maximum CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control sensitivity CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control keydelta CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control reverse (yes|no) \"no\">\n"
+"\t\t\t\t<!ATTLIST control ways CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control ways2 CDATA #IMPLIED>\n"
+"\t\t\t\t<!ATTLIST control ways3 CDATA #IMPLIED>\n"
+"\t\t<!ELEMENT dipswitch (dipvalue*)>\n"
+"\t\t\t<!ATTLIST dipswitch name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST dipswitch tag CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST dipswitch mask CDATA #REQUIRED>\n"
+"\t\t\t<!ELEMENT dipvalue EMPTY>\n"
+"\t\t\t\t<!ATTLIST dipvalue name CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST dipvalue value CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST dipvalue default (yes|no) \"no\">\n"
+"\t\t<!ELEMENT configuration (confsetting*)>\n"
+"\t\t\t<!ATTLIST configuration name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST configuration tag CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST configuration mask CDATA #REQUIRED>\n"
+"\t\t\t<!ELEMENT confsetting EMPTY>\n"
+"\t\t\t\t<!ATTLIST confsetting name CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST confsetting value CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST confsetting default (yes|no) \"no\">\n"
+"\t\t<!ELEMENT port (analog*)>\n"
+"\t\t\t<!ATTLIST port tag CDATA #REQUIRED>\n"
+"\t\t\t<!ELEMENT analog EMPTY>\n"
+"\t\t\t\t<!ATTLIST analog mask CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT adjuster EMPTY>\n"
+"\t\t\t<!ATTLIST adjuster name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST adjuster default CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT driver EMPTY>\n"
+"\t\t\t<!ATTLIST driver status (good|imperfect|preliminary) #REQUIRED>\n"
+"\t\t\t<!ATTLIST driver emulation (good|imperfect|preliminary) #REQUIRED>\n"
+"\t\t\t<!ATTLIST driver color (good|imperfect|preliminary) #REQUIRED>\n"
+"\t\t\t<!ATTLIST driver sound (good|imperfect|preliminary) #REQUIRED>\n"
+"\t\t\t<!ATTLIST driver graphic (good|imperfect|preliminary) #REQUIRED>\n"
+"\t\t\t<!ATTLIST driver cocktail (good|imperfect|preliminary) #IMPLIED>\n"
+"\t\t\t<!ATTLIST driver protection (good|imperfect|preliminary) #IMPLIED>\n"
+"\t\t\t<!ATTLIST driver savestate (supported|unsupported) #REQUIRED>\n"
+"\t\t<!ELEMENT device (instance*, extension*)>\n"
+"\t\t\t<!ATTLIST device type CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST device tag CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST device fixed_image CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST device mandatory CDATA #IMPLIED>\n"
+"\t\t\t<!ATTLIST device interface CDATA #IMPLIED>\n"
+"\t\t\t<!ELEMENT instance EMPTY>\n"
+"\t\t\t\t<!ATTLIST instance name CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST instance briefname CDATA #REQUIRED>\n"
+"\t\t\t<!ELEMENT extension EMPTY>\n"
+"\t\t\t\t<!ATTLIST extension name CDATA #REQUIRED>\n"
+"\t\t<!ELEMENT slot (slotoption*)>\n"
+"\t\t\t<!ATTLIST slot name CDATA #REQUIRED>\n"
+"\t\t\t<!ELEMENT slotoption EMPTY>\n"
+"\t\t\t\t<!ATTLIST slotoption name CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST slotoption devname CDATA #REQUIRED>\n"
+"\t\t\t\t<!ATTLIST slotoption default (yes|no) \"no\">\n"
+"\t\t<!ELEMENT softwarelist EMPTY>\n"
+"\t\t\t<!ATTLIST softwarelist name CDATA #REQUIRED>\n"
+"\t\t\t<!ATTLIST softwarelist status (original|compatible) #REQUIRED>\n"
+"\t\t\t<!ATTLIST softwarelist filter CDATA #IMPLIED>\n"
+"\t\t<!ELEMENT ramoption (#PCDATA)>\n"
+"\t\t\t<!ATTLIST ramoption default CDATA #IMPLIED>\n"
+"]>";
+
+
+//**************************************************************************
+// INFO XML CREATOR
+//**************************************************************************
+
+//-------------------------------------------------
+// info_xml_creator - constructor
+//-------------------------------------------------
+
+info_xml_creator::info_xml_creator(driver_enumerator &drivlist, bool filter_devices)
+ : m_output(nullptr)
+ , m_drivlist(drivlist)
+ , m_filter_devices(filter_devices)
+ , m_lookup_options(m_drivlist.options())
+{
+ mame_options::remove_device_options(m_lookup_options);
+}
+
+
+//-------------------------------------------------
+// output_mame_xml - print the XML information
+// for all known games
+//-------------------------------------------------
+
+void info_xml_creator::output(FILE *out, bool nodevices)
+{
+ m_output = out;
+
+ // output the DTD
+ fprintf(m_output, "<?xml version=\"1.0\"?>\n");
+ std::string dtd(s_dtd_string);
+ strreplace(dtd, "__XML_ROOT__", XML_ROOT);
+ strreplace(dtd, "__XML_TOP__", XML_TOP);
+
+ fprintf(m_output, "%s\n\n", dtd.c_str());
+
+ // top-level tag
+ fprintf(m_output, "<%s build=\"%s\" debug=\""
+#ifdef MAME_DEBUG
+ "yes"
+#else
+ "no"
+#endif
+ "\" mameconfig=\"%d\">\n",
+ XML_ROOT,
+ util::xml::normalize_string(emulator_info::get_build_version()),
+ CONFIG_VERSION
+ );
+
+ std::unique_ptr<device_type_set> devfilter((m_filter_devices && !nodevices) ? new device_type_set : nullptr);
+
+ // iterate through the drivers, outputting one at a time
+ while (m_drivlist.next())
+ output_one(devfilter.get());
+
+ // output devices (both devices with roms and slot devices)
+ if (!nodevices)
+ output_devices(devfilter.get());
+
+ // close the top level tag
+ fprintf(m_output, "</%s>\n",XML_ROOT);
+}
+
+
+//-------------------------------------------------
+// output_one - print the XML information
+// for one particular game driver
+//-------------------------------------------------
+
+void info_xml_creator::output_one(device_type_set *devtypes)
+{
+ // no action if not a game
+ const game_driver &driver = m_drivlist.driver();
+ if (driver.flags & MACHINE_NO_STANDALONE)
+ return;
+
+ std::shared_ptr<machine_config> const config(m_drivlist.config());
+ device_iterator iter(config->root_device());
+
+ // allocate input ports
+ ioport_list portlist;
+ std::string errors;
+ for (device_t &device : iter)
+ {
+ portlist.append(device, errors);
+
+ if (devtypes && device.owner() && device.shortname() && *device.shortname())
+ devtypes->insert(&device.type());
+ }
+
+ // renumber player numbers for controller ports
+ int player_offset = 0;
+ // but treat keyboard count separately from players' number
+ int kbd_offset = 0;
+ for (device_t &device : iter)
+ {
+ int nplayers = 0;
+ bool new_kbd = false;
+ for (auto &port : portlist)
+ if (&port.second->device() == &device)
+ for (ioport_field &field : port.second->fields())
+ if (field.type() >= IPT_START && field.type() < IPT_ANALOG_LAST)
+ {
+ if (field.type() == IPT_KEYBOARD)
+ {
+ if (!new_kbd) new_kbd = true;
+ field.set_player(field.player() + kbd_offset);
+ }
+ else
+ {
+ nplayers = std::max(nplayers, field.player() + 1);
+ field.set_player(field.player() + player_offset);
+ }
+ }
+ player_offset += nplayers;
+ if (new_kbd) kbd_offset++;
+ }
+
+ // print the header and the machine name
+ fprintf(m_output, "\t<%s",XML_TOP);
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(driver.name));
+
+ // strip away any path information from the source_file and output it
+ const char *start = strrchr(driver.source_file, '/');
+ if (!start)
+ start = strrchr(driver.source_file, '\\');
+ start = start ? (start + 1) : driver.source_file;
+ fprintf(m_output, " sourcefile=\"%s\"", util::xml::normalize_string(start));
+
+ // append bios and runnable flags
+ if (driver.flags & MACHINE_IS_BIOS_ROOT)
+ fprintf(m_output, " isbios=\"yes\"");
+ if (driver.flags & MACHINE_NO_STANDALONE)
+ fprintf(m_output, " runnable=\"no\"");
+ if (driver.flags & MACHINE_MECHANICAL)
+ fprintf(m_output, " ismechanical=\"yes\"");
+
+ // display clone information
+ int clone_of = m_drivlist.find(driver.parent);
+ if (clone_of != -1 && !(m_drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT))
+ fprintf(m_output, " cloneof=\"%s\"", util::xml::normalize_string(m_drivlist.driver(clone_of).name));
+ if (clone_of != -1)
+ fprintf(m_output, " romof=\"%s\"", util::xml::normalize_string(m_drivlist.driver(clone_of).name));
+
+ // display sample information and close the game tag
+ output_sampleof(config->root_device());
+ fprintf(m_output, ">\n");
+
+ // output game description
+ if (driver.description != nullptr)
+ fprintf(m_output, "\t\t<description>%s</description>\n", util::xml::normalize_string(driver.description));
+
+ // print the year only if is a number or another allowed character (? or +)
+ if (driver.year != nullptr && strspn(driver.year, "0123456789?+") == strlen(driver.year))
+ fprintf(m_output, "\t\t<year>%s</year>\n", util::xml::normalize_string(driver.year));
+
+ // print the manufacturer information
+ if (driver.manufacturer != nullptr)
+ fprintf(m_output, "\t\t<manufacturer>%s</manufacturer>\n", util::xml::normalize_string(driver.manufacturer));
+
+ // now print various additional information
+ output_bios();
+ output_rom(config->root_device());
+ output_device_roms();
+ output_sample(config->root_device());
+ output_chips(config->root_device(), "");
+ output_display(config->root_device(), &m_drivlist.driver().flags, "");
+ output_sound(config->root_device());
+ output_input(portlist);
+ output_switches(portlist, "", IPT_DIPSWITCH, "dipswitch", "dipvalue");
+ output_switches(portlist, "", IPT_CONFIG, "configuration", "confsetting");
+ output_ports(portlist);
+ output_adjusters(portlist);
+ output_driver();
+ output_images(config->root_device(), "");
+ output_slots(*config, config->root_device(), "", devtypes);
+ output_software_list();
+ output_ramoptions();
+
+ // close the topmost tag
+ fprintf(m_output, "\t</%s>\n",XML_TOP);
+}
+
+
+//-------------------------------------------------
+// output_one_device - print the XML info for
+// a single device
+//-------------------------------------------------
+
+void info_xml_creator::output_one_device(machine_config &config, device_t &device, const char *devtag)
+{
+ bool has_speaker = false, has_input = false;
+ // check if the device adds speakers to the system
+ sound_interface_iterator snditer(device);
+ if (snditer.first() != nullptr)
+ has_speaker = true;
+ // generate input list
+ ioport_list portlist;
+ std::string errors;
+ for (device_t &dev : device_iterator(device))
+ portlist.append(dev, errors);
+ // check if the device adds player inputs (other than dsw and configs) to the system
+ for (auto &port : portlist)
+ for (ioport_field &field : port.second->fields())
+ if (field.type() >= IPT_START1 && field.type() < IPT_UI_FIRST)
+ {
+ has_input = true;
+ break;
+ }
+
+ // start to output info
+ fprintf(m_output, "\t<%s", XML_TOP);
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(device.shortname()));
+ std::string src(device.source());
+ strreplace(src,"../", "");
+ fprintf(m_output, " sourcefile=\"%s\"", util::xml::normalize_string(src.c_str()));
+ fprintf(m_output, " isdevice=\"yes\"");
+ fprintf(m_output, " runnable=\"no\"");
+ output_sampleof(device);
+ fprintf(m_output, ">\n");
+ fprintf(m_output, "\t\t<description>%s</description>\n", util::xml::normalize_string(device.name()));
+
+ output_rom(device);
+
+ if (device.type().type() != typeid(samples_device)) // ignore samples_device itself
+ output_sample(device);
+
+ output_chips(device, devtag);
+ output_display(device, nullptr, devtag);
+ if (has_speaker)
+ output_sound(device);
+ if (has_input)
+ output_input(portlist);
+ output_switches(portlist, devtag, IPT_DIPSWITCH, "dipswitch", "dipvalue");
+ output_switches(portlist, devtag, IPT_CONFIG, "configuration", "confsetting");
+ output_adjusters(portlist);
+ output_images(device, devtag);
+ output_slots(config, device, devtag, nullptr);
+ fprintf(m_output, "\t</%s>\n", XML_TOP);
+}
+
+
+//-------------------------------------------------
+// output_devices - print the XML info for devices
+// with roms and for devices that can be mounted
+// in slots
+// The current solution works to some extent, but
+// it is limited by the fact that devices are only
+// acknowledged when attached to a driver (so that
+// for instance sub-sub-devices could never appear
+// in the xml input if they are not also attached
+// directly to a driver as device or sub-device)
+//-------------------------------------------------
+
+void info_xml_creator::output_devices(device_type_set const *filter)
+{
+ // get config for empty machine
+ machine_config config(GAME_NAME(___empty), m_lookup_options);
+
+ auto const action = [this, &config] (device_type type)
+ {
+ // add it at the root of the machine config
+ device_t *const dev = config.device_add(&config.root_device(), "_tmp", type, 0);
+
+ // notify this device and all its subdevices that they are now configured
+ for (device_t &device : device_iterator(*dev))
+ if (!device.configured())
+ device.config_complete();
+
+ // print details and remove it
+ output_one_device(config, *dev, dev->tag());
+ config.device_remove(&config.root_device(), "_tmp");
+ };
+
+ // run through devices
+ if (filter)
+ {
+ for (std::add_pointer_t<device_type> type : *filter) action(*type);
+ }
+ else
+ {
+ for (device_type type : registered_device_types) action(type);
+ }
+}
+
+
+//------------------------------------------------
+// output_device_roms - when a driver uses roms
+// included in a device set, print a reference
+//-------------------------------------------------
+
+void info_xml_creator::output_device_roms()
+{
+ for (device_t &device : device_iterator(m_drivlist.config()->root_device()))
+ if (device.owner() != nullptr && device.shortname() != nullptr && device.shortname()[0] != '\0')
+ fprintf(m_output, "\t\t<device_ref name=\"%s\"/>\n", util::xml::normalize_string(device.shortname()));
+}
+
+
+//------------------------------------------------
+// output_sampleof - print the 'sampleof'
+// attribute, if appropriate
+//-------------------------------------------------
+
+void info_xml_creator::output_sampleof(device_t &device)
+{
+ // iterate over sample devices
+ for (samples_device &samples : samples_device_iterator(device))
+ {
+ samples_iterator sampiter(samples);
+ if (sampiter.altbasename() != nullptr)
+ {
+ fprintf(m_output, " sampleof=\"%s\"", util::xml::normalize_string(sampiter.altbasename()));
+
+ // must stop here, as there can only be one attribute of the same name
+ return;
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_bios - print the BIOS set for a
+// game
+//-------------------------------------------------
+
+void info_xml_creator::output_bios()
+{
+ // skip if no ROMs
+ if (m_drivlist.driver().rom == nullptr)
+ return;
+
+ auto rom_entries = rom_build_entries(m_drivlist.driver().rom);
+
+ // first determine the default BIOS name
+ std::string defaultname;
+ for (const rom_entry &rom : rom_entries)
+ if (ROMENTRY_ISDEFAULT_BIOS(&rom))
+ defaultname = ROM_GETNAME(&rom);
+
+ // iterate over ROM entries and look for BIOSes
+ for (const rom_entry &rom : rom_entries)
+ if (ROMENTRY_ISSYSTEM_BIOS(&rom))
+ {
+ // output extracted name and descriptions
+ fprintf(m_output, "\t\t<biosset");
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(ROM_GETNAME(&rom)));
+ fprintf(m_output, " description=\"%s\"", util::xml::normalize_string(ROM_GETHASHDATA(&rom)));
+ if (defaultname == ROM_GETNAME(&rom))
+ fprintf(m_output, " default=\"yes\"");
+ fprintf(m_output, "/>\n");
+ }
+}
+
+
+//-------------------------------------------------
+// output_rom - print the roms section of
+// the XML output
+//-------------------------------------------------
+
+void info_xml_creator::output_rom(device_t &device)
+{
+ // iterate over 3 different ROM "types": BIOS, ROMs, DISKs
+ for (int rom_type = 0; rom_type < 3; rom_type++)
+ for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region))
+ {
+ bool is_disk = ROMREGION_ISDISKDATA(region);
+
+ // disk regions only work for disks
+ if ((is_disk && rom_type != 2) || (!is_disk && rom_type == 2))
+ continue;
+
+ // iterate through ROM entries
+ for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
+ {
+ bool is_bios = ROM_GETBIOSFLAGS(rom);
+ const char *name = ROM_GETNAME(rom);
+ int offset = ROM_GETOFFSET(rom);
+ const char *merge_name = nullptr;
+ char bios_name[100];
+
+ // BIOS ROMs only apply to bioses
+ if ((is_bios && rom_type != 0) || (!is_bios && rom_type == 0))
+ continue;
+
+ // if we have a valid ROM and we are a clone, see if we can find the parent ROM
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (dynamic_cast<driver_device *>(&device) &&!hashes.flag(util::hash_collection::FLAG_NO_DUMP))
+ merge_name = get_merge_name(hashes);
+
+ // scan for a BIOS name
+ bios_name[0] = 0;
+ if (!is_disk && is_bios)
+ {
+ // scan backwards through the ROM entries
+ for (const rom_entry *brom = rom - 1; brom != device.rom_region(); brom--)
+ if (ROMENTRY_ISSYSTEM_BIOS(brom))
+ {
+ strcpy(bios_name, ROM_GETNAME(brom));
+ break;
+ }
+ }
+
+ std::ostringstream output;
+
+ // opening tag
+ if (!is_disk)
+ output << "\t\t<rom";
+ else
+ output << "\t\t<disk";
+
+ // add name, merge, bios, and size tags */
+ if (name != nullptr && name[0] != 0)
+ util::stream_format(output, " name=\"%s\"", util::xml::normalize_string(name));
+ if (merge_name != nullptr)
+ util::stream_format(output, " merge=\"%s\"", util::xml::normalize_string(merge_name));
+ if (bios_name[0] != 0)
+ util::stream_format(output, " bios=\"%s\"", util::xml::normalize_string(bios_name));
+ if (!is_disk)
+ util::stream_format(output, " size=\"%u\"", rom_file_size(rom));
+
+ // dump checksum information only if there is a known dump
+ if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP))
+ {
+ // iterate over hash function types and print m_output their values
+ output << " " << hashes.attribute_string();
+ }
+ else
+ output << " status=\"nodump\"";
+
+ // append a region name
+ util::stream_format(output, " region=\"%s\"", ROMREGION_GETTAG(region));
+
+ // for non-disk entries, print offset
+ if (!is_disk)
+ util::stream_format(output, " offset=\"%x\"", offset);
+
+ // for disk entries, add the disk index
+ else
+ {
+ util::stream_format(output, " index=\"%x\"", DISK_GETINDEX(rom));
+ util::stream_format(output, " writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes");
+ }
+
+ // add optional flag
+ if (ROM_ISOPTIONAL(rom))
+ output << " optional=\"yes\"";
+
+ output << "/>\n";
+
+ fprintf(m_output, "%s", output.str().c_str());
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_sample - print a list of all
+// samples referenced by a game_driver
+//-------------------------------------------------
+
+void info_xml_creator::output_sample(device_t &device)
+{
+ // iterate over sample devices
+ for (samples_device &samples : samples_device_iterator(device))
+ {
+ samples_iterator iter(samples);
+ std::unordered_set<std::string> already_printed;
+ for (const char *samplename = iter.first(); samplename != nullptr; samplename = iter.next())
+ {
+ // filter out duplicates
+ if (!already_printed.insert(samplename).second)
+ continue;
+
+ // output the sample name
+ fprintf(m_output, "\t\t<sample name=\"%s\"/>\n", util::xml::normalize_string(samplename));
+ }
+ }
+}
+
+
+/*-------------------------------------------------
+ output_chips - print a list of CPU and
+ sound chips used by a game
+-------------------------------------------------*/
+
+void info_xml_creator::output_chips(device_t &device, const char *root_tag)
+{
+ // iterate over executable devices
+ for (device_execute_interface &exec : execute_interface_iterator(device))
+ {
+ if (strcmp(exec.device().tag(), device.tag()))
+ {
+ std::string newtag(exec.device().tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ fprintf(m_output, "\t\t<chip");
+ fprintf(m_output, " type=\"cpu\"");
+ fprintf(m_output, " tag=\"%s\"", util::xml::normalize_string(newtag.c_str()));
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(exec.device().name()));
+ fprintf(m_output, " clock=\"%d\"", exec.device().clock());
+ fprintf(m_output, "/>\n");
+ }
+ }
+
+ // iterate over sound devices
+ for (device_sound_interface &sound : sound_interface_iterator(device))
+ {
+ if (strcmp(sound.device().tag(), device.tag()) != 0 && sound.issound())
+ {
+ std::string newtag(sound.device().tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ fprintf(m_output, "\t\t<chip");
+ fprintf(m_output, " type=\"audio\"");
+ fprintf(m_output, " tag=\"%s\"", util::xml::normalize_string(newtag.c_str()));
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(sound.device().name()));
+ if (sound.device().clock() != 0)
+ fprintf(m_output, " clock=\"%d\"", sound.device().clock());
+ fprintf(m_output, "/>\n");
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_display - print a list of all the
+// displays
+//-------------------------------------------------
+
+void info_xml_creator::output_display(device_t &device, u32 const *flags, const char *root_tag)
+{
+ // iterate over screens
+ for (const screen_device &screendev : screen_device_iterator(device))
+ {
+ if (strcmp(screendev.tag(), device.tag()))
+ {
+ std::string newtag(screendev.tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ fprintf(m_output, "\t\t<display");
+ fprintf(m_output, " tag=\"%s\"", util::xml::normalize_string(newtag.c_str()));
+
+ switch (screendev.screen_type())
+ {
+ case SCREEN_TYPE_RASTER: fprintf(m_output, " type=\"raster\""); break;
+ case SCREEN_TYPE_VECTOR: fprintf(m_output, " type=\"vector\""); break;
+ case SCREEN_TYPE_LCD: fprintf(m_output, " type=\"lcd\""); break;
+ default: fprintf(m_output, " type=\"unknown\""); break;
+ }
+
+ // output the orientation as a string
+ if (flags)
+ {
+ switch (*flags & ORIENTATION_MASK)
+ {
+ case ORIENTATION_FLIP_X:
+ fprintf(m_output, " rotate=\"0\" flipx=\"yes\"");
+ break;
+ case ORIENTATION_FLIP_Y:
+ fprintf(m_output, " rotate=\"180\" flipx=\"yes\"");
+ break;
+ case ORIENTATION_FLIP_X|ORIENTATION_FLIP_Y:
+ fprintf(m_output, " rotate=\"180\"");
+ break;
+ case ORIENTATION_SWAP_XY:
+ fprintf(m_output, " rotate=\"90\" flipx=\"yes\"");
+ break;
+ case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_X:
+ fprintf(m_output, " rotate=\"90\"");
+ break;
+ case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_Y:
+ fprintf(m_output, " rotate=\"270\"");
+ break;
+ case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_X|ORIENTATION_FLIP_Y:
+ fprintf(m_output, " rotate=\"270\" flipx=\"yes\"");
+ break;
+ default:
+ fprintf(m_output, " rotate=\"0\"");
+ break;
+ }
+ }
+
+ // output width and height only for games that are not vector
+ if (screendev.screen_type() != SCREEN_TYPE_VECTOR)
+ {
+ const rectangle &visarea = screendev.visible_area();
+ fprintf(m_output, " width=\"%d\"", visarea.width());
+ fprintf(m_output, " height=\"%d\"", visarea.height());
+ }
+
+ // output refresh rate
+ fprintf(m_output, " refresh=\"%f\"", ATTOSECONDS_TO_HZ(screendev.refresh_attoseconds()));
+
+ // output raw video parameters only for games that are not vector
+ // and had raw parameters specified
+ if (screendev.screen_type() != SCREEN_TYPE_VECTOR && !screendev.oldstyle_vblank_supplied())
+ {
+ int pixclock = screendev.width() * screendev.height() * ATTOSECONDS_TO_HZ(screendev.refresh_attoseconds());
+
+ fprintf(m_output, " pixclock=\"%d\"", pixclock);
+ fprintf(m_output, " htotal=\"%d\"", screendev.width());
+ fprintf(m_output, " hbend=\"%d\"", screendev.visible_area().min_x);
+ fprintf(m_output, " hbstart=\"%d\"", screendev.visible_area().max_x+1);
+ fprintf(m_output, " vtotal=\"%d\"", screendev.height());
+ fprintf(m_output, " vbend=\"%d\"", screendev.visible_area().min_y);
+ fprintf(m_output, " vbstart=\"%d\"", screendev.visible_area().max_y+1);
+ }
+ fprintf(m_output, " />\n");
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_sound - print a list of all the
+// speakers
+//------------------------------------------------
+
+void info_xml_creator::output_sound(device_t &device)
+{
+ speaker_device_iterator spkiter(device);
+ int speakers = spkiter.count();
+
+ // if we have no sound, zero m_output the speaker count
+ sound_interface_iterator snditer(device);
+ if (snditer.first() == nullptr)
+ speakers = 0;
+
+ fprintf(m_output, "\t\t<sound channels=\"%d\"/>\n", speakers);
+}
+
+
+//-------------------------------------------------
+// output_input - print a summary of a game's
+// input
+//-------------------------------------------------
+
+void info_xml_creator::output_input(const ioport_list &portlist)
+{
+ // enumerated list of control types
+ // NOTE: the order is chosen so that 'spare' button inputs are assigned to the
+ // most-likely-correct input device when info is output (you can think of it as
+ // a sort of likelihood order of having buttons)
+ enum
+ {
+ CTRL_DIGITAL_BUTTONS,
+ CTRL_DIGITAL_JOYSTICK,
+ CTRL_ANALOG_JOYSTICK,
+ CTRL_ANALOG_LIGHTGUN,
+ CTRL_ANALOG_DIAL,
+ CTRL_ANALOG_POSITIONAL,
+ CTRL_ANALOG_TRACKBALL,
+ CTRL_ANALOG_MOUSE,
+ CTRL_ANALOG_PADDLE,
+ CTRL_ANALOG_PEDAL,
+ CTRL_DIGITAL_KEYPAD,
+ CTRL_DIGITAL_KEYBOARD,
+ CTRL_DIGITAL_MAHJONG,
+ CTRL_DIGITAL_HANAFUDA,
+ CTRL_DIGITAL_GAMBLING,
+ CTRL_COUNT
+ };
+
+ enum
+ {
+ CTRL_P1,
+ CTRL_P2,
+ CTRL_P3,
+ CTRL_P4,
+ CTRL_P5,
+ CTRL_P6,
+ CTRL_P7,
+ CTRL_P8,
+ CTRL_P9,
+ CTRL_P10,
+ CTRL_PCOUNT
+ };
+
+ // directions
+ const uint8_t DIR_UP = 0x01;
+ const uint8_t DIR_DOWN = 0x02;
+ const uint8_t DIR_LEFT = 0x04;
+ const uint8_t DIR_RIGHT = 0x08;
+
+ // initialize the list of control types
+ struct
+ {
+ const char * type; // general type of input
+ int player; // player which the input belongs to
+ int nbuttons; // total number of buttons
+ int reqbuttons; // total number of non-optional buttons
+ int maxbuttons; // max index of buttons (using IPT_BUTTONn) [probably to be removed soonish]
+ int ways; // directions for joystick
+ bool analog; // is analog input?
+ uint8_t helper[3]; // for dual joysticks [possibly to be removed soonish]
+ int32_t min; // analog minimum value
+ int32_t max; // analog maximum value
+ int32_t sensitivity; // default analog sensitivity
+ int32_t keydelta; // default analog keydelta
+ bool reverse; // default analog reverse setting
+ } control_info[CTRL_COUNT * CTRL_PCOUNT];
+
+ memset(&control_info, 0, sizeof(control_info));
+
+ // tracking info as we iterate
+ int nplayer = 0;
+ int ncoin = 0;
+ bool service = false;
+ bool tilt = false;
+
+ // iterate over the ports
+ for (auto &port : portlist)
+ {
+ int ctrl_type = CTRL_DIGITAL_BUTTONS;
+ bool ctrl_analog = false;
+ for (ioport_field &field : port.second->fields())
+ {
+ // track the highest player number
+ if (nplayer < field.player() + 1)
+ nplayer = field.player() + 1;
+
+ // switch off of the type
+ switch (field.type())
+ {
+ // map joysticks
+ case IPT_JOYSTICK_UP:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_UP;
+ break;
+ case IPT_JOYSTICK_DOWN:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_DOWN;
+ break;
+ case IPT_JOYSTICK_LEFT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_LEFT;
+ break;
+ case IPT_JOYSTICK_RIGHT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_RIGHT;
+ break;
+
+ case IPT_JOYSTICKLEFT_UP:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_UP;
+ break;
+ case IPT_JOYSTICKLEFT_DOWN:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_DOWN;
+ break;
+ case IPT_JOYSTICKLEFT_LEFT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_LEFT;
+ break;
+ case IPT_JOYSTICKLEFT_RIGHT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_RIGHT;
+ break;
+
+ case IPT_JOYSTICKRIGHT_UP:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_UP;
+ break;
+ case IPT_JOYSTICKRIGHT_DOWN:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_DOWN;
+ break;
+ case IPT_JOYSTICKRIGHT_LEFT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_LEFT;
+ break;
+ case IPT_JOYSTICKRIGHT_RIGHT:
+ ctrl_type = CTRL_DIGITAL_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way();
+ control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_RIGHT;
+ break;
+
+ // map analog inputs
+ case IPT_AD_STICK_X:
+ case IPT_AD_STICK_Y:
+ case IPT_AD_STICK_Z:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_JOYSTICK;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "stick";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_PADDLE:
+ case IPT_PADDLE_V:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_PADDLE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "paddle";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_PEDAL:
+ case IPT_PEDAL2:
+ case IPT_PEDAL3:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_PEDAL;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "pedal";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_LIGHTGUN_X:
+ case IPT_LIGHTGUN_Y:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_LIGHTGUN;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "lightgun";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_POSITIONAL:
+ case IPT_POSITIONAL_V:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_POSITIONAL;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "positional";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_DIAL:
+ case IPT_DIAL_V:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_DIAL;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "dial";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_TRACKBALL_X:
+ case IPT_TRACKBALL_Y:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_TRACKBALL;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "trackball";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ case IPT_MOUSE_X:
+ case IPT_MOUSE_Y:
+ ctrl_analog = true;
+ ctrl_type = CTRL_ANALOG_MOUSE;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "mouse";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true;
+ break;
+
+ // map buttons
+ case IPT_BUTTON1:
+ case IPT_BUTTON2:
+ case IPT_BUTTON3:
+ case IPT_BUTTON4:
+ case IPT_BUTTON5:
+ case IPT_BUTTON6:
+ case IPT_BUTTON7:
+ case IPT_BUTTON8:
+ case IPT_BUTTON9:
+ case IPT_BUTTON10:
+ case IPT_BUTTON11:
+ case IPT_BUTTON12:
+ case IPT_BUTTON13:
+ case IPT_BUTTON14:
+ case IPT_BUTTON15:
+ case IPT_BUTTON16:
+ ctrl_analog = false;
+ if (control_info[field.player() * CTRL_COUNT + ctrl_type].type == nullptr)
+ {
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "only_buttons";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].analog = false;
+ }
+ control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons = std::max(control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons, field.type() - IPT_BUTTON1 + 1);
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ break;
+
+ // track maximum coin index
+ case IPT_COIN1:
+ case IPT_COIN2:
+ case IPT_COIN3:
+ case IPT_COIN4:
+ case IPT_COIN5:
+ case IPT_COIN6:
+ case IPT_COIN7:
+ case IPT_COIN8:
+ case IPT_COIN9:
+ case IPT_COIN10:
+ case IPT_COIN11:
+ case IPT_COIN12:
+ ncoin = std::max(ncoin, field.type() - IPT_COIN1 + 1);
+ break;
+
+ // track presence of keypads and keyboards
+ case IPT_KEYPAD:
+ ctrl_type = CTRL_DIGITAL_KEYPAD;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "keypad";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ break;
+
+ case IPT_KEYBOARD:
+ ctrl_type = CTRL_DIGITAL_KEYBOARD;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "keyboard";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ break;
+
+ // additional types
+ case IPT_SERVICE:
+ service = true;
+ break;
+
+ case IPT_TILT:
+ tilt = true;
+ break;
+
+ default:
+ if (field.type() > IPT_MAHJONG_FIRST && field.type() < IPT_MAHJONG_LAST)
+ {
+ ctrl_type = CTRL_DIGITAL_MAHJONG;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "mahjong";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ }
+ else if (field.type() > IPT_HANAFUDA_FIRST && field.type() < IPT_HANAFUDA_LAST)
+ {
+ ctrl_type = CTRL_DIGITAL_HANAFUDA;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "hanafuda";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ }
+ else if (field.type() > IPT_GAMBLING_FIRST && field.type() < IPT_GAMBLING_LAST)
+ {
+ ctrl_type = CTRL_DIGITAL_GAMBLING;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].type = "gambling";
+ control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1;
+ control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++;
+ if (!field.optional())
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++;
+ }
+ break;
+ }
+
+ if (ctrl_analog)
+ {
+ // get the analog stats
+ if (field.minval() != 0)
+ control_info[field.player() * CTRL_COUNT + ctrl_type].min = field.minval();
+ if (field.maxval() != 0)
+ control_info[field.player() * CTRL_COUNT + ctrl_type].max = field.maxval();
+ if (field.sensitivity() != 0)
+ control_info[field.player() * CTRL_COUNT + ctrl_type].sensitivity = field.sensitivity();
+ if (field.delta() != 0)
+ control_info[field.player() * CTRL_COUNT + ctrl_type].keydelta = field.delta();
+ if (field.analog_reverse() != 0)
+ control_info[field.player() * CTRL_COUNT + ctrl_type].reverse = true;
+ }
+ }
+ }
+
+ // Clean-up those entries, if any, where buttons were defined in a separate port than the actual controller they belong to.
+ // This is quite often the case, especially for arcades where controls can be easily mapped to separate input ports on PCB.
+ // If such situation would only happen for joystick, it would be possible to work it around by initializing differently
+ // ctrl_type above, but it is quite common among analog inputs as well (for instance, this is the tipical situation
+ // for lightguns) and therefore we really need this separate loop.
+ for (int i = 0; i < CTRL_PCOUNT; i++)
+ {
+ bool fix_done = false;
+ for (int j = 1; j < CTRL_COUNT; j++)
+ if (control_info[i * CTRL_COUNT].type != nullptr && control_info[i * CTRL_COUNT + j].type != nullptr && !fix_done)
+ {
+ control_info[i * CTRL_COUNT + j].nbuttons += control_info[i * CTRL_COUNT].nbuttons;
+ control_info[i * CTRL_COUNT + j].reqbuttons += control_info[i * CTRL_COUNT].reqbuttons;
+ control_info[i * CTRL_COUNT + j].maxbuttons = std::max(control_info[i * CTRL_COUNT + j].maxbuttons, control_info[i * CTRL_COUNT].maxbuttons);
+
+ memset(&control_info[i * CTRL_COUNT], 0, sizeof(control_info[0]));
+ fix_done = true;
+ }
+ }
+
+ // Output the input info
+ // First basic info
+ fprintf(m_output, "\t\t<input");
+ fprintf(m_output, " players=\"%d\"", nplayer);
+ if (ncoin != 0)
+ fprintf(m_output, " coins=\"%d\"", ncoin);
+ if (service)
+ fprintf(m_output, " service=\"yes\"");
+ if (tilt)
+ fprintf(m_output, " tilt=\"yes\"");
+ fprintf(m_output, ">\n");
+
+ // Then controller specific ones
+ for (auto & elem : control_info)
+ if (elem.type != nullptr)
+ {
+ //printf("type %s - player %d - buttons %d\n", elem.type, elem.player, elem.nbuttons);
+ if (elem.analog)
+ {
+ fprintf(m_output, "\t\t\t<control type=\"%s\"", util::xml::normalize_string(elem.type));
+ if (nplayer > 1)
+ fprintf(m_output, " player=\"%d\"", elem.player);
+ if (elem.nbuttons > 0)
+ {
+ fprintf(m_output, " buttons=\"%d\"", strcmp(elem.type, "stick") ? elem.nbuttons : elem.maxbuttons);
+ if (elem.reqbuttons < elem.nbuttons)
+ fprintf(m_output, " reqbuttons=\"%d\"", elem.reqbuttons);
+ }
+ if (elem.min != 0 || elem.max != 0)
+ {
+ fprintf(m_output, " minimum=\"%d\"", elem.min);
+ fprintf(m_output, " maximum=\"%d\"", elem.max);
+ }
+ if (elem.sensitivity != 0)
+ fprintf(m_output, " sensitivity=\"%d\"", elem.sensitivity);
+ if (elem.keydelta != 0)
+ fprintf(m_output, " keydelta=\"%d\"", elem.keydelta);
+ if (elem.reverse)
+ fprintf(m_output, " reverse=\"yes\"");
+
+ fprintf(m_output, "/>\n");
+ }
+ else
+ {
+ if (elem.helper[1] == 0 && elem.helper[2] != 0) { elem.helper[1] = elem.helper[2]; elem.helper[2] = 0; }
+ if (elem.helper[0] == 0 && elem.helper[1] != 0) { elem.helper[0] = elem.helper[1]; elem.helper[1] = 0; }
+ if (elem.helper[1] == 0 && elem.helper[2] != 0) { elem.helper[1] = elem.helper[2]; elem.helper[2] = 0; }
+ const char *joys = (elem.helper[2] != 0) ? "triple" : (elem.helper[1] != 0) ? "double" : "";
+ fprintf(m_output, "\t\t\t<control type=\"%s%s\"", joys, util::xml::normalize_string(elem.type));
+ if (nplayer > 1)
+ fprintf(m_output, " player=\"%d\"", elem.player);
+ if (elem.nbuttons > 0)
+ {
+ fprintf(m_output, " buttons=\"%d\"", strcmp(elem.type, "joy") ? elem.nbuttons : elem.maxbuttons);
+ if (elem.reqbuttons < elem.nbuttons)
+ fprintf(m_output, " reqbuttons=\"%d\"", elem.reqbuttons);
+ }
+ for (int lp = 0; lp < 3 && elem.helper[lp] != 0; lp++)
+ {
+ const char *plural = (lp==2) ? "3" : (lp==1) ? "2" : "";
+ const char *ways;
+ std::string helper;
+ switch (elem.helper[lp] & (DIR_UP | DIR_DOWN | DIR_LEFT | DIR_RIGHT))
+ {
+ case DIR_UP | DIR_DOWN | DIR_LEFT | DIR_RIGHT:
+ helper = string_format("%d", (elem.ways == 0) ? 8 : elem.ways);
+ ways = helper.c_str();
+ break;
+ case DIR_LEFT | DIR_RIGHT:
+ ways = "2";
+ break;
+ case DIR_UP | DIR_DOWN:
+ ways = "vertical2";
+ break;
+ case DIR_UP:
+ case DIR_DOWN:
+ case DIR_LEFT:
+ case DIR_RIGHT:
+ ways = "1";
+ break;
+ case DIR_UP | DIR_DOWN | DIR_LEFT:
+ case DIR_UP | DIR_DOWN | DIR_RIGHT:
+ case DIR_UP | DIR_LEFT | DIR_RIGHT:
+ case DIR_DOWN | DIR_LEFT | DIR_RIGHT:
+ ways = (elem.ways == 4) ? "3 (half4)" : "5 (half8)";
+ break;
+ default:
+ ways = "strange2";
+ break;
+ }
+ fprintf(m_output, " ways%s=\"%s\"", plural, ways);
+ }
+ fprintf(m_output, "/>\n");
+ }
+ }
+
+ fprintf(m_output, "\t\t</input>\n");
+}
+
+
+//-------------------------------------------------
+// output_switches - print the configurations or
+// DIP switch settings
+//-------------------------------------------------
+
+void info_xml_creator::output_switches(const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *innertag)
+{
+ // iterate looking for DIP switches
+ for (auto &port : portlist)
+ for (ioport_field &field : port.second->fields())
+ if (field.type() == type)
+ {
+ std::ostringstream output;
+
+ std::string newtag(port.second->tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ // output the switch name information
+ std::string normalized_field_name(util::xml::normalize_string(field.name()));
+ std::string normalized_newtag(util::xml::normalize_string(newtag.c_str()));
+ util::stream_format(output,"\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field.mask());
+
+ // loop over settings
+ for (ioport_setting &setting : field.settings())
+ {
+ util::stream_format(output,"\t\t\t<%s name=\"%s\" value=\"%u\"%s/>\n", innertag, util::xml::normalize_string(setting.name()), setting.value(), setting.value() == field.defvalue() ? " default=\"yes\"" : "");
+ }
+
+ // terminate the switch entry
+ util::stream_format(output,"\t\t</%s>\n", outertag);
+
+ fprintf(m_output, "%s", output.str().c_str());
+ }
+}
+
+//-------------------------------------------------
+// output_ports - print the structure of input
+// ports in the driver
+//-------------------------------------------------
+void info_xml_creator::output_ports(const ioport_list &portlist)
+{
+ // cycle through ports
+ for (auto &port : portlist)
+ {
+ fprintf(m_output,"\t\t<port tag=\"%s\">\n", util::xml::normalize_string(port.second->tag()));
+ for (ioport_field &field : port.second->fields())
+ {
+ if(field.is_analog())
+ fprintf(m_output,"\t\t\t<analog mask=\"%u\"/>\n", field.mask());
+ }
+ // close element
+ fprintf(m_output,"\t\t</port>\n");
+ }
+
+}
+
+//-------------------------------------------------
+// output_adjusters - print the Analog
+// Adjusters for a game
+//-------------------------------------------------
+
+void info_xml_creator::output_adjusters(const ioport_list &portlist)
+{
+ // iterate looking for Adjusters
+ for (auto &port : portlist)
+ for (ioport_field &field : port.second->fields())
+ if (field.type() == IPT_ADJUSTER)
+ fprintf(m_output, "\t\t<adjuster name=\"%s\" default=\"%d\"/>\n", util::xml::normalize_string(field.name()), field.defvalue());
+}
+
+
+//-------------------------------------------------
+// output_driver - print driver status
+//-------------------------------------------------
+
+void info_xml_creator::output_driver()
+{
+ fprintf(m_output, "\t\t<driver");
+
+ /* The status entry is an hint for frontend authors */
+ /* to select working and not working games without */
+ /* the need to know all the other status entries. */
+ /* Games marked as status=good are perfectly emulated, games */
+ /* marked as status=imperfect are emulated with only */
+ /* some minor issues, games marked as status=preliminary */
+ /* don't work or have major emulation problems. */
+
+ u32 const flags = m_drivlist.driver().flags;
+ if (flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_MECHANICAL))
+ fprintf(m_output, " status=\"preliminary\"");
+ else if (flags & (MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS))
+ fprintf(m_output, " status=\"imperfect\"");
+ else
+ fprintf(m_output, " status=\"good\"");
+
+ if (flags & MACHINE_NOT_WORKING)
+ fprintf(m_output, " emulation=\"preliminary\"");
+ else
+ fprintf(m_output, " emulation=\"good\"");
+
+ if (flags & MACHINE_WRONG_COLORS)
+ fprintf(m_output, " color=\"preliminary\"");
+ else if (flags & MACHINE_IMPERFECT_COLORS)
+ fprintf(m_output, " color=\"imperfect\"");
+ else
+ fprintf(m_output, " color=\"good\"");
+
+ if (flags & MACHINE_NO_SOUND)
+ fprintf(m_output, " sound=\"preliminary\"");
+ else if (flags & MACHINE_IMPERFECT_SOUND)
+ fprintf(m_output, " sound=\"imperfect\"");
+ else
+ fprintf(m_output, " sound=\"good\"");
+
+ if (flags & MACHINE_IMPERFECT_GRAPHICS)
+ fprintf(m_output, " graphic=\"imperfect\"");
+ else
+ fprintf(m_output, " graphic=\"good\"");
+
+ if (flags & MACHINE_NO_COCKTAIL)
+ fprintf(m_output, " cocktail=\"preliminary\"");
+
+ if (flags & MACHINE_UNEMULATED_PROTECTION)
+ fprintf(m_output, " protection=\"preliminary\"");
+
+ if (flags & MACHINE_SUPPORTS_SAVE)
+ fprintf(m_output, " savestate=\"supported\"");
+ else
+ fprintf(m_output, " savestate=\"unsupported\"");
+
+ fprintf(m_output, "/>\n");
+}
+
+
+//-------------------------------------------------
+// output_images - prints m_output all info on
+// image devices
+//-------------------------------------------------
+
+void info_xml_creator::output_images(device_t &device, const char *root_tag)
+{
+ for (const device_image_interface &imagedev : image_interface_iterator(device))
+ {
+ if (strcmp(imagedev.device().tag(), device.tag()))
+ {
+ bool loadable = imagedev.user_loadable();
+ std::string newtag(imagedev.device().tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ // print m_output device type
+ fprintf(m_output, "\t\t<device type=\"%s\"", util::xml::normalize_string(imagedev.image_type_name()));
+
+ // does this device have a tag?
+ if (imagedev.device().tag())
+ fprintf(m_output, " tag=\"%s\"", util::xml::normalize_string(newtag.c_str()));
+
+ // is this device available as media switch?
+ if (!loadable)
+ fprintf(m_output, " fixed_image=\"1\"");
+
+ // is this device mandatory?
+ if (imagedev.must_be_loaded())
+ fprintf(m_output, " mandatory=\"1\"");
+
+ if (imagedev.image_interface() && imagedev.image_interface()[0])
+ fprintf(m_output, " interface=\"%s\"", util::xml::normalize_string(imagedev.image_interface()));
+
+ // close the XML tag
+ fprintf(m_output, ">\n");
+
+ if (loadable)
+ {
+ const char *name = imagedev.instance_name().c_str();
+ const char *shortname = imagedev.brief_instance_name().c_str();
+
+ fprintf(m_output, "\t\t\t<instance");
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(name));
+ fprintf(m_output, " briefname=\"%s\"", util::xml::normalize_string(shortname));
+ fprintf(m_output, "/>\n");
+
+ std::string extensions(imagedev.file_extensions());
+
+ char *ext = strtok((char *)extensions.c_str(), ",");
+ while (ext != nullptr)
+ {
+ fprintf(m_output, "\t\t\t<extension");
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(ext));
+ fprintf(m_output, "/>\n");
+ ext = strtok(nullptr, ",");
+ }
+ }
+ fprintf(m_output, "\t\t</device>\n");
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_images - prints all info about slots
+//-------------------------------------------------
+
+void info_xml_creator::output_slots(machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes)
+{
+ for (const device_slot_interface &slot : slot_interface_iterator(device))
+ {
+ // shall we list fixed slots as non-configurable?
+ bool const listed(!slot.fixed() && strcmp(slot.device().tag(), device.tag()));
+
+ if (devtypes || listed)
+ {
+ std::string newtag(slot.device().tag()), oldtag(":");
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
+
+ // print m_output device type
+ if (listed)
+ fprintf(m_output, "\t\t<slot name=\"%s\">\n", util::xml::normalize_string(newtag.c_str()));
+
+ /*
+ if (listed && slot.slot_interface()[0])
+ fprintf(m_output, " interface=\"%s\"", util::xml::normalize_string(slot.slot_interface()));
+ */
+
+ for (auto &option : slot.option_list())
+ {
+ if (devtypes || (listed && option.second->selectable()))
+ {
+ device_t *const dev = config.device_add(&device, "_dummy", option.second->devtype(), 0);
+ if (!dev->configured())
+ dev->config_complete();
+
+ if (devtypes)
+ for (device_t &device : device_iterator(*dev)) devtypes->insert(&device.type());
+
+ if (listed && option.second->selectable())
+ {
+ fprintf(m_output, "\t\t\t<slotoption");
+ fprintf(m_output, " name=\"%s\"", util::xml::normalize_string(option.second->name()));
+ fprintf(m_output, " devname=\"%s\"", util::xml::normalize_string(dev->shortname()));
+ if (slot.default_option() != nullptr && strcmp(slot.default_option(), option.second->name())==0)
+ fprintf(m_output, " default=\"yes\"");
+ fprintf(m_output, "/>\n");
+ }
+
+ config.device_remove(&device, "_dummy");
+ }
+ }
+
+ if (listed)
+ fprintf(m_output, "\t\t</slot>\n");
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// output_software_list - print the information
+// for all known software lists for this system
+//-------------------------------------------------
+
+void info_xml_creator::output_software_list()
+{
+ for (const software_list_device &swlist : software_list_device_iterator(m_drivlist.config()->root_device()))
+ {
+ fprintf(m_output, "\t\t<softwarelist name=\"%s\" ", swlist.list_name().c_str());
+ fprintf(m_output, "status=\"%s\" ", (swlist.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) ? "original" : "compatible");
+ if (swlist.filter())
+ fprintf(m_output, "filter=\"%s\" ", swlist.filter());
+ fprintf(m_output, "/>\n");
+ }
+}
+
+
+
+//-------------------------------------------------
+// output_ramoptions - prints m_output all RAM
+// options for this system
+//-------------------------------------------------
+
+void info_xml_creator::output_ramoptions()
+{
+ for (const ram_device &ram : ram_device_iterator(m_drivlist.config()->root_device()))
+ {
+ fprintf(m_output, "\t\t<ramoption default=\"1\">%u</ramoption>\n", ram.default_size());
+
+ if (ram.extra_options() != nullptr)
+ {
+ std::string options(ram.extra_options());
+ for (int start = 0, end = options.find_first_of(',');; start = end + 1, end = options.find_first_of(',', start))
+ {
+ std::string option;
+ option.assign(options.substr(start, (end == -1) ? -1 : end - start));
+ fprintf(m_output, "\t\t<ramoption>%u</ramoption>\n", ram_device::parse_string(option.c_str()));
+ if (end == -1)
+ break;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// get_merge_name - get the rom name from a
+// parent set
+//-------------------------------------------------
+
+const char *info_xml_creator::get_merge_name(const util::hash_collection &romhashes)
+{
+ // walk the parent chain
+ const char *merge_name = nullptr;
+ for (int clone_of = m_drivlist.find(m_drivlist.driver().parent); clone_of != -1; clone_of = m_drivlist.find(m_drivlist.driver(clone_of).parent))
+ {
+ // look in the parent's ROMs
+ device_t *device = &m_drivlist.config(clone_of, m_lookup_options)->root_device();
+ for (const rom_entry *pregion = rom_first_region(*device); pregion != nullptr; pregion = rom_next_region(pregion))
+ for (const rom_entry *prom = rom_first_file(pregion); prom != nullptr; prom = rom_next_file(prom))
+ {
+ util::hash_collection phashes(ROM_GETHASHDATA(prom));
+ if (!phashes.flag(util::hash_collection::FLAG_NO_DUMP) && romhashes == phashes)
+ {
+ // stop when we find a match
+ merge_name = ROM_GETNAME(prom);
+ break;
+ }
+ }
+ }
+
+ return merge_name;
+}
diff --git a/docs/release/src/frontend/mame/mameopts.cpp b/docs/release/src/frontend/mame/mameopts.cpp
new file mode 100644
index 00000000000..8cb8cff09fa
--- /dev/null
+++ b/docs/release/src/frontend/mame/mameopts.cpp
@@ -0,0 +1,692 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ mameopts.cpp
+
+ Options file and command line management.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "mameopts.h"
+
+#include "drivenum.h"
+#include "screen.h"
+#include "softlist_dev.h"
+#include "zippath.h"
+#include "hashfile.h"
+
+#include <ctype.h>
+#include <stack>
+
+
+int mame_options::m_slot_options = 0;
+int mame_options::m_device_options = 0;
+
+//-------------------------------------------------
+// add_slot_options - add all of the slot
+// options for the configured system
+//-------------------------------------------------
+
+bool mame_options::add_slot_options(emu_options &options, value_specifier_func value_specifier)
+{
+ // look up the system configured by name; if no match, do nothing
+ const game_driver *cursystem = system(options);
+ if (cursystem == nullptr)
+ return false;
+
+ // create the configuration
+ machine_config config(*cursystem, options);
+
+ // iterate through all slot devices
+ int starting_count = options.options_count();
+ for (const device_slot_interface &slot : slot_interface_iterator(config.root_device()))
+ {
+ // skip fixed slots
+ if (slot.fixed())
+ continue;
+
+ // retrieve info about the device instance
+ const char *name = slot.device().tag() + 1;
+ if (!options.exists(name))
+ {
+ // first device? add the header as to be pretty
+ if (m_slot_options++ == 0)
+ options.add_entry(nullptr, "SLOT DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE);
+
+ // add the option
+ options.add_entry(name, nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, slot.default_option(), true);
+ options.slot_options()[name] = slot_option(slot.default_option());
+
+ // allow opportunity to specify this value
+ if (value_specifier)
+ {
+ std::string specified_value = value_specifier(name);
+ if (specified_value != value_specifier_invalid_value())
+ options.slot_options()[name].specify(std::move(specified_value));
+ }
+ }
+ }
+ return (options.options_count() != starting_count);
+}
+
+
+//-------------------------------------------------
+// update_slot_options - update slot values
+// depending of image mounted
+//-------------------------------------------------
+
+void mame_options::update_slot_options(emu_options &options, const software_part *swpart)
+{
+ // look up the system configured by name; if no match, do nothing
+ const game_driver *cursystem = system(options);
+ if (cursystem == nullptr)
+ return;
+ machine_config config(*cursystem, options);
+
+ // iterate through all slot devices
+ for (device_slot_interface &slot : slot_interface_iterator(config.root_device()))
+ {
+ // retrieve info about the device instance
+ const char *name = slot.device().tag() + 1;
+ if (options.exists(name) && !slot.option_list().empty())
+ {
+ std::string defvalue = get_default_card_software(slot, options);
+ if (defvalue.empty())
+ {
+ // keep any non-default setting
+ if (options.priority(name) > OPTION_PRIORITY_DEFAULT)
+ continue;
+
+ // reinstate the actual default value as configured
+ if (slot.default_option() != nullptr)
+ defvalue.assign(slot.default_option());
+ }
+
+ // set the value and hide the option if not selectable
+ options.set_default_value(name, defvalue.c_str());
+ const device_slot_option *option = slot.option(defvalue.c_str());
+ options.set_flag(name, ~OPTION_FLAG_INTERNAL, (option != nullptr && !option->selectable()) ? OPTION_FLAG_INTERNAL : 0);
+ }
+ }
+ add_device_options(options);
+}
+
+
+//-------------------------------------------------
+// get_default_card_software
+//-------------------------------------------------
+
+std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options)
+{
+ std::string image_path;
+ std::function<bool(util::core_file &, std::string&)> get_hashfile_extrainfo;
+
+ // figure out if an image option has been specified, and if so, get the image path out of the options
+ device_image_interface *image = dynamic_cast<device_image_interface *>(&slot);
+ if (image)
+ {
+ auto iter = options.image_options().find(image->instance_name());
+ if (iter != options.image_options().end())
+ image_path = iter->second;
+
+ get_hashfile_extrainfo = [image, &options](util::core_file &file, std::string &extrainfo)
+ {
+ util::hash_collection hashes = image->calculate_hash_on_file(file);
+
+ return hashfile_extrainfo(
+ options.hash_path(),
+ image->device().mconfig().gamedrv(),
+ hashes,
+ extrainfo);
+ };
+ }
+
+ // create the hook
+ get_default_card_software_hook hook(image_path, std::move(get_hashfile_extrainfo));
+
+ // and invoke the slot's implementation of get_default_card_software()
+ return slot.get_default_card_software(hook);
+}
+
+
+//-------------------------------------------------
+// add_device_options - add all of the device
+// options for the configured system
+//-------------------------------------------------
+
+void mame_options::add_device_options(emu_options &options, value_specifier_func value_specifier)
+{
+ // look up the system configured by name; if no match, do nothing
+ const game_driver *cursystem = system(options);
+ if (cursystem == nullptr)
+ return;
+ machine_config config(*cursystem, options);
+
+ // iterate through all image devices
+ for (device_image_interface &image : image_interface_iterator(config.root_device()))
+ {
+ if (!image.user_loadable())
+ continue;
+
+ // add the option
+ if (!options.exists(image.instance_name().c_str()))
+ {
+ // first device? add the header as to be pretty
+ if (m_device_options++ == 0)
+ options.add_entry(nullptr, "IMAGE DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE);
+
+ // add the option
+ std::string option_name = get_full_option_name(image);
+ options.add_entry(option_name.c_str(), nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, nullptr, true);
+ options.image_options()[image.instance_name()] = "";
+
+ // allow opportunity to specify this value
+ if (value_specifier)
+ {
+ std::string value = value_specifier(image.instance_name());
+ if (value != value_specifier_invalid_value())
+ options.image_options()[image.instance_name()] = std::move(value);
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// remove_device_options - remove device options
+//-------------------------------------------------
+
+std::string mame_options::get_full_option_name(const device_image_interface &image)
+{
+ std::ostringstream option_name;
+ util::stream_format(option_name, "%s;%s", image.instance_name(), image.brief_instance_name());
+ if (strcmp(image.device_typename(image.image_type()), image.instance_name().c_str()) == 0)
+ util::stream_format(option_name, ";%s1;%s1", image.instance_name(), image.brief_instance_name());
+ return option_name.str();
+}
+
+
+//-------------------------------------------------
+// remove_device_options - remove device options
+//-------------------------------------------------
+
+void mame_options::remove_device_options(emu_options &options)
+{
+ // iterate through options and remove interesting ones
+ core_options::entry *nextentry;
+ for (auto *curentry = options.first(); curentry != nullptr; curentry = nextentry)
+ {
+ // pre-fetch the next entry in case we delete this one
+ nextentry = curentry->next();
+
+ // if this is a device option, nuke it
+ if ((curentry->flags() & OPTION_FLAG_DEVICE) != 0)
+ options.remove_entry(*curentry);
+ }
+
+ // take also care of ramsize options
+ options.set_default_value(OPTION_RAMSIZE, "");
+
+ // reset counters
+ m_slot_options = 0;
+ m_device_options = 0;
+}
+
+
+//-------------------------------------------------
+// parse_slot_devices - parse the command line
+// and update slot and image devices
+//-------------------------------------------------
+
+void mame_options::parse_slot_devices(emu_options &options, value_specifier_func value_specifier)
+{
+ bool still_adding = true;
+ while (still_adding)
+ {
+ // keep adding slot options until we stop seeing new stuff
+ still_adding = false;
+ while (add_slot_options(options, value_specifier))
+ still_adding = true;
+
+ // add device options
+ add_device_options(options, value_specifier);
+
+ if (reevaluate_slot_options(options))
+ still_adding = true;
+ }
+}
+
+
+//-------------------------------------------------
+// reevaluate_slot_options - based on recent changes
+// in what images are mounted, give drivers a chance
+// to specify new default slot options
+//-------------------------------------------------
+
+bool mame_options::reevaluate_slot_options(emu_options &options)
+{
+ bool result = false;
+
+ // look up the system configured by name; if no match, do nothing
+ const game_driver *cursystem = system(options);
+ if (cursystem == nullptr)
+ return result;
+ machine_config config(*cursystem, options);
+
+ // iterate through all slot devices
+ for (device_slot_interface &slot : slot_interface_iterator(config.root_device()))
+ {
+ // retrieve info about the device instance
+ const char *name = slot.device().tag() + 1;
+ if (options.exists(name) && !slot.option_list().empty())
+ {
+ // device_slot_interface::get_default_card_software() is essentially a hook
+ // that lets devices provide a feedback loop to force a specified software
+ // list entry to be loaded
+ //
+ // In the repeated cycle of adding slots and slot devices, this gives a chance
+ // for devices to "plug in" default software list items. Of course, the fact
+ // that this is all shuffling options is brittle and roundabout, but such is
+ // the nature of software lists.
+ //
+ // In reality, having some sort of hook into the pipeline of slot/device evaluation
+ // makes sense, but the fact that it is joined at the hip to device_image_interface
+ // and device_slot_interface is unfortunate
+ std::string default_card_software = get_default_card_software(slot, options);
+ if (!default_card_software.empty())
+ {
+ // we have default card software - is this resulting in the slot option being mutated?
+ if (options.slot_options()[name].default_card_software() != default_card_software)
+ {
+ options.slot_options()[name].set_default_card_software(std::move(default_card_software));
+ result = true;
+ }
+ }
+ }
+ }
+ return result;
+}
+
+
+//-------------------------------------------------
+// parse_command_line - parse the command line
+// and update the devices
+//-------------------------------------------------
+
+bool mame_options::parse_command_line(emu_options &options, std::vector<std::string> &args, std::string &error_string)
+{
+ // parse the command line
+ if (!options.parse_command_line(args, OPTION_PRIORITY_CMDLINE, error_string))
+ return false;
+
+ // identify any options as a result of softlists
+ auto softlist_opts = evaluate_initial_softlist_options(options);
+
+ // assemble a "value specifier" that will be used to specify options set up as a consequence
+ // of slot and device setup
+ auto value_specifier = [&options, &softlist_opts, &args, &error_string](const std::string &arg)
+ {
+ // first find within the command line
+ std::string arg_value;
+ bool success = options.pluck_from_command_line(args, arg, arg_value);
+
+ // next try to find within softlist-specified options
+ if (!success)
+ {
+ auto iter = softlist_opts.find(arg);
+ if (iter != softlist_opts.end())
+ {
+ arg_value = iter->second;
+ success = true;
+ }
+ }
+
+ // did we find something?
+ return success
+ ? arg_value
+ : value_specifier_invalid_value();
+ };
+
+ // parse the slot devices
+ parse_slot_devices(options, value_specifier);
+
+ // at this point, we should have handled all arguments; the only argument that shouldn't have
+ // been handled is the file name
+ if (args.size() > 1)
+ {
+ error_string.append(string_format("Error: unknown option: %s\n", args[1]));
+ return false;
+ }
+
+ return true;
+}
+
+
+//-------------------------------------------------
+// evaluate_initial_softlist_options
+//-------------------------------------------------
+
+std::map<std::string, std::string> mame_options::evaluate_initial_softlist_options(emu_options &options)
+{
+ std::map<std::string, std::string> results;
+
+ // load software specified at the command line (if any of course)
+ std::string software_identifier = options.software_name();
+ if (!software_identifier.empty())
+ {
+ // we have software; first identify the proper game_driver
+ const game_driver *system = mame_options::system(options);
+ if (system == nullptr && *(options.system_name()) != 0)
+ throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "Unknown system '%s'", options.system_name());
+
+ // and set up a configuration
+ machine_config config(*system, options);
+ software_list_device_iterator iter(config.root_device());
+ if (iter.count() == 0)
+ throw emu_fatalerror(EMU_ERR_FATALERROR, "Error: unknown option: %s\n", options.software_name());
+
+ // and finally set up the stack
+ std::stack<std::string> software_identifier_stack;
+ software_identifier_stack.push(software_identifier);
+
+ // we need to keep evaluating softlist identifiers until the stack is empty
+ while (!software_identifier_stack.empty())
+ {
+ // pop the identifier
+ software_identifier = std::move(software_identifier_stack.top());
+ software_identifier_stack.pop();
+
+ // and parse it
+ std::string list_name, software_name;
+ auto colon_pos = software_identifier.find_first_of(':');
+ if (colon_pos != std::string::npos)
+ {
+ list_name = software_identifier.substr(0, colon_pos);
+ software_name = software_identifier.substr(colon_pos + 1);
+ }
+ else
+ {
+ software_name = software_identifier;
+ }
+
+ // loop through all softlist devices, and try to find one capable of handling the requested software
+ bool found = false;
+ bool compatible = false;
+ for (software_list_device &swlistdev : iter)
+ {
+ if (list_name.empty() || (list_name == swlistdev.list_name()))
+ {
+ const software_info *swinfo = swlistdev.find(software_name);
+ if (swinfo != nullptr)
+ {
+ // loop through all parts
+ for (const software_part &swpart : swinfo->parts())
+ {
+ // only load compatible software this way
+ if (swlistdev.is_compatible(swpart) == SOFTWARE_IS_COMPATIBLE)
+ {
+ // we need to find a mountable image slot, but we need to ensure it is a slot
+ // for which we have not already distributed a part to
+ device_image_interface *image = software_list_device::find_mountable_image(
+ config,
+ swpart,
+ [&results](const device_image_interface &candidate) { return results.count(candidate.instance_name()) == 0; });
+
+ // did we find a slot to put this part into?
+ if (image != nullptr)
+ {
+ // we've resolved this software
+ results[image->instance_name()] = string_format("%s:%s:%s", swlistdev.list_name(), software_name, swpart.name());
+
+ // does this software part have a requirement on another part?
+ const char *requirement = swpart.feature("requirement");
+ if (requirement)
+ software_identifier_stack.push(requirement);
+ }
+ compatible = true;
+ }
+ found = true;
+ }
+
+ // identify other shared features specified as '<<slot name>>_default'
+ //
+ // example from SMS:
+ //
+ // <software name = "alexbmx">
+ // ...
+ // <sharedfeat name = "ctrl1_default" value = "paddle" />
+ // </software>
+ for (const feature_list_item &fi : swinfo->shared_info())
+ {
+ const std::string default_suffix = "_default";
+ if (fi.name().size() > default_suffix.size()
+ && fi.name().compare(fi.name().size() - default_suffix.size(), default_suffix.size(), default_suffix) == 0)
+ {
+ std::string slot_name = fi.name().substr(0, fi.name().size() - default_suffix.size());
+ results[slot_name] = fi.value();
+ }
+ }
+ }
+ }
+ if (compatible)
+ break;
+ }
+
+ if (!compatible)
+ {
+ software_list_device::display_matches(config, nullptr, software_name);
+ if (!found)
+ throw emu_fatalerror(EMU_ERR_FATALERROR, nullptr);
+ else
+ throw emu_fatalerror(EMU_ERR_FATALERROR, "Software '%s' is incompatible with system '%s'\n", software_name.c_str(), options.system_name());
+ }
+ }
+ }
+ return results;
+}
+
+
+//-------------------------------------------------
+// parse_standard_inis - parse the standard set
+// of INI files
+//-------------------------------------------------
+
+void mame_options::parse_standard_inis(emu_options &options, std::string &error_string, const game_driver *driver)
+{
+ // start with an empty string
+ error_string.clear();
+
+ // parse the INI file defined by the platform (e.g., "mame.ini")
+ // we do this twice so that the first file can change the INI path
+ parse_one_ini(options,emulator_info::get_configname(), OPTION_PRIORITY_MAME_INI);
+ parse_one_ini(options,emulator_info::get_configname(), OPTION_PRIORITY_MAME_INI, &error_string);
+
+ // debug mode: parse "debug.ini" as well
+ if (options.debug())
+ parse_one_ini(options,"debug", OPTION_PRIORITY_DEBUG_INI, &error_string);
+
+ // if we have a valid system driver, parse system-specific INI files
+ const game_driver *cursystem = (driver == nullptr) ? system(options) : driver;
+ if (cursystem == nullptr)
+ return;
+
+ // parse "vertical.ini" or "horizont.ini"
+ if (cursystem->flags & ORIENTATION_SWAP_XY)
+ parse_one_ini(options,"vertical", OPTION_PRIORITY_ORIENTATION_INI, &error_string);
+ else
+ parse_one_ini(options,"horizont", OPTION_PRIORITY_ORIENTATION_INI, &error_string);
+
+ if (cursystem->flags & MACHINE_TYPE_ARCADE)
+ parse_one_ini(options,"arcade", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
+ else if (cursystem->flags & MACHINE_TYPE_CONSOLE)
+ parse_one_ini(options,"console", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
+ else if (cursystem->flags & MACHINE_TYPE_COMPUTER)
+ parse_one_ini(options,"computer", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
+ else if (cursystem->flags & MACHINE_TYPE_OTHER)
+ parse_one_ini(options,"othersys", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
+
+ machine_config config(*cursystem, options);
+ for (const screen_device &device : screen_device_iterator(config.root_device()))
+ {
+ // parse "raster.ini" for raster games
+ if (device.screen_type() == SCREEN_TYPE_RASTER)
+ {
+ parse_one_ini(options,"raster", OPTION_PRIORITY_SCREEN_INI, &error_string);
+ break;
+ }
+ // parse "vector.ini" for vector games
+ if (device.screen_type() == SCREEN_TYPE_VECTOR)
+ {
+ parse_one_ini(options,"vector", OPTION_PRIORITY_SCREEN_INI, &error_string);
+ break;
+ }
+ // parse "lcd.ini" for lcd games
+ if (device.screen_type() == SCREEN_TYPE_LCD)
+ {
+ parse_one_ini(options,"lcd", OPTION_PRIORITY_SCREEN_INI, &error_string);
+ break;
+ }
+ }
+
+ // next parse "source/<sourcefile>.ini"
+ std::string sourcename = core_filename_extract_base(cursystem->source_file, true).insert(0, "source" PATH_SEPARATOR);
+ parse_one_ini(options,sourcename.c_str(), OPTION_PRIORITY_SOURCE_INI, &error_string);
+
+ // then parse the grandparent, parent, and system-specific INIs
+ int parent = driver_list::clone(*cursystem);
+ int gparent = (parent != -1) ? driver_list::clone(parent) : -1;
+ if (gparent != -1)
+ parse_one_ini(options,driver_list::driver(gparent).name, OPTION_PRIORITY_GPARENT_INI, &error_string);
+ if (parent != -1)
+ parse_one_ini(options,driver_list::driver(parent).name, OPTION_PRIORITY_PARENT_INI, &error_string);
+ parse_one_ini(options,cursystem->name, OPTION_PRIORITY_DRIVER_INI, &error_string);
+}
+
+
+//-------------------------------------------------
+// system - return a pointer to the specified
+// system driver, or nullptr if no match
+//-------------------------------------------------
+
+const game_driver *mame_options::system(const emu_options &options)
+{
+ int index = driver_list::find(core_filename_extract_base(options.system_name(), true).c_str());
+ return (index != -1) ? &driver_list::driver(index) : nullptr;
+}
+
+
+//-------------------------------------------------
+// set_system_name - set a new system name
+//-------------------------------------------------
+
+void mame_options::set_system_name(emu_options &options, const char *name)
+{
+ // remember the original system name
+ std::string old_system_name(options.system_name());
+ bool new_system = old_system_name.compare(name) != 0;
+
+ // if the system name changed, fix up the device options
+ if (new_system)
+ {
+ // first set the new name
+ std::string error;
+ options.set_value(OPTION_SYSTEMNAME, name, OPTION_PRIORITY_CMDLINE, error);
+ assert(error.empty());
+
+ // remove any existing device options
+ remove_device_options(options);
+ }
+ else
+ {
+ // revert device options set for the old software
+ options.revert(OPTION_PRIORITY_SUBCMD, OPTION_PRIORITY_SUBCMD);
+ }
+
+ // get the new system
+ const game_driver *cursystem = system(options);
+ if (cursystem == nullptr)
+ return;
+
+ if (*options.software_name() != 0)
+ {
+ std::string sw_load(options.software_name());
+ std::string sw_list, sw_name, sw_part, sw_instance, error_string;
+ int left = sw_load.find_first_of(':');
+ int middle = sw_load.find_first_of(':', left + 1);
+ int right = sw_load.find_last_of(':');
+
+ sw_list = sw_load.substr(0, left);
+ sw_name = sw_load.substr(left + 1, middle - left - 1);
+ sw_part = sw_load.substr(middle + 1, right - middle - 1);
+ sw_instance = sw_load.substr(right + 1);
+ sw_load.assign(sw_load.substr(0, right));
+
+ // look up the software part
+ machine_config config(*cursystem, options);
+ software_list_device *swlist = software_list_device::find_by_name(config, sw_list.c_str());
+ const software_info *swinfo = swlist != nullptr ? swlist->find(sw_name.c_str()) : nullptr;
+ const software_part *swpart = swinfo != nullptr ? swinfo->find_part(sw_part.c_str()) : nullptr;
+ if (swpart == nullptr)
+ osd_printf_warning("Could not find %s in software list\n", options.software_name());
+
+ // then add the options
+ if (new_system)
+ {
+ while (add_slot_options(options)) {}
+ add_device_options(options);
+ }
+
+ options.set_value(OPTION_SOFTWARENAME, sw_name.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ if (options.exists(sw_instance.c_str()))
+ options.set_value(sw_instance.c_str(), sw_load.c_str(), OPTION_PRIORITY_SUBCMD, error_string);
+
+ int num;
+ do {
+ num = options.options_count();
+ update_slot_options(options,swpart);
+ } while (num != options.options_count());
+ }
+ else if (new_system)
+ {
+ // add the options afresh
+ while (add_slot_options(options)) {}
+ add_device_options(options);
+ int num;
+ do {
+ num = options.options_count();
+ update_slot_options(options);
+ } while (num != options.options_count());
+ }
+}
+
+//-------------------------------------------------
+// parse_one_ini - parse a single INI file
+//-------------------------------------------------
+
+bool mame_options::parse_one_ini(emu_options &options, const char *basename, int priority, std::string *error_string)
+{
+ // don't parse if it has been disabled
+ if (!options.read_config())
+ return false;
+
+ // open the file; if we fail, that's ok
+ emu_file file(options.ini_path(), OPEN_FLAG_READ);
+ osd_printf_verbose("Attempting load of %s.ini\n", basename);
+ osd_file::error filerr = file.open(basename, ".ini");
+ if (filerr != osd_file::error::NONE)
+ return false;
+
+ // parse the file
+ osd_printf_verbose("Parsing %s.ini\n", basename);
+ std::string error;
+ bool result = options.parse_ini_file((util::core_file&)file, priority, OPTION_PRIORITY_DRIVER_INI, error);
+
+ // append errors if requested
+ if (!error.empty() && error_string)
+ error_string->append(string_format("While parsing %s:\n%s\n", file.fullpath(), error));
+
+ return result;
+}
+
diff --git a/docs/release/src/frontend/mame/mameopts.h b/docs/release/src/frontend/mame/mameopts.h
new file mode 100644
index 00000000000..3c543e65c66
--- /dev/null
+++ b/docs/release/src/frontend/mame/mameopts.h
@@ -0,0 +1,91 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ mameopts.h
+
+ Options file and command line management.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __MAMEOPTS_H__
+#define __MAMEOPTS_H__
+
+#include "emuopts.h"
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+#undef OPTION_PRIORITY_CMDLINE
+
+// option priorities
+enum
+{
+ // command-line options are HIGH priority
+ OPTION_PRIORITY_SUBCMD = OPTION_PRIORITY_HIGH,
+ OPTION_PRIORITY_CMDLINE,
+
+ // INI-based options are NORMAL priority, in increasing order:
+ OPTION_PRIORITY_MAME_INI = OPTION_PRIORITY_NORMAL + 1,
+ OPTION_PRIORITY_DEBUG_INI,
+ OPTION_PRIORITY_ORIENTATION_INI,
+ OPTION_PRIORITY_SYSTYPE_INI,
+ OPTION_PRIORITY_SCREEN_INI,
+ OPTION_PRIORITY_SOURCE_INI,
+ OPTION_PRIORITY_GPARENT_INI,
+ OPTION_PRIORITY_PARENT_INI,
+ OPTION_PRIORITY_DRIVER_INI,
+ OPTION_PRIORITY_INI,
+};
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// forward references
+struct game_driver;
+class software_part;
+
+class mame_options
+{
+ static const uint32_t OPTION_FLAG_DEVICE = 0x80000000;
+
+public:
+ typedef std::function<std::string (const std::string &)> value_specifier_func;
+
+ // parsing wrappers
+ static bool parse_command_line(emu_options &options, std::vector<std::string> &args, std::string &error_string);
+ static void parse_standard_inis(emu_options &options, std::string &error_string, const game_driver *driver = nullptr);
+ // FIXME: Couriersud: This should be in image_device_exit
+ static void remove_device_options(emu_options &options);
+
+ static const game_driver *system(const emu_options &options);
+ static void set_system_name(emu_options &options, const char *name);
+ static bool add_slot_options(emu_options &options, value_specifier_func value_specifier = nullptr);
+ static bool reevaluate_slot_options(emu_options &options);
+
+private:
+ // device-specific option handling
+ static void add_device_options(emu_options &options, value_specifier_func value_specifier = nullptr);
+ static void update_slot_options(emu_options &options, const software_part *swpart = nullptr);
+ static void parse_slot_devices(emu_options &options, value_specifier_func value_specifier);
+ static std::string get_full_option_name(const device_image_interface &image);
+ static std::string get_default_card_software(device_slot_interface &slot, const emu_options &options);
+
+ // INI parsing helper
+ static bool parse_one_ini(emu_options &options, const char *basename, int priority, std::string *error_string = nullptr);
+
+ // softlist handling
+ static std::map<std::string, std::string> evaluate_initial_softlist_options(emu_options &options);
+
+ // represents an "invalid" value (an empty string is valid so we can't use that; what I
+ // really want to return is std::optional<std::string> but C++17 isn't here yet)
+ static std::string value_specifier_invalid_value() { return std::string("\x01\x02\x03"); }
+
+ static int m_slot_options;
+ static int m_device_options;
+};
+
+#endif /* __MAMEOPTS_H__ */
diff --git a/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp
new file mode 100644
index 00000000000..a1ea684c5eb
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp
@@ -0,0 +1,109 @@
+// license:BSD-3-Clause
+// copyright-holders:S. Smith,David Haywood
+#include "emu.h"
+#include "banked_cart.h"
+
+
+
+const device_type NEOGEO_BANKED_CART = device_creator<neogeo_banked_cart_device>;
+
+
+neogeo_banked_cart_device::neogeo_banked_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NEOGEO_BANKED_CART, "NeoGeo Banked Cartridge", tag, owner, clock, "neogeo_banked_cart", __FILE__),
+ m_bank_cartridge(nullptr),
+ m_main_cpu_bank_address(0),
+ m_region(nullptr),
+ m_region_size(0)
+
+{
+}
+
+void neogeo_banked_cart_device::postload()
+{
+ _set_main_cpu_bank_address();
+}
+
+void neogeo_banked_cart_device::device_start()
+{
+ save_item(NAME(m_main_cpu_bank_address));
+ machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_banked_cart_device::postload), this));
+}
+
+void neogeo_banked_cart_device::device_reset()
+{
+}
+
+
+
+
+
+
+/*************************************
+ *
+ * Main CPU banking
+ *
+ *************************************/
+
+void neogeo_banked_cart_device::_set_main_cpu_bank_address(void)
+{
+ if (!m_region)
+ printf("region is null\n");
+
+ if (!m_bank_cartridge)
+ printf("bank_cartridge is null\n");
+
+ if (m_region && m_bank_cartridge) m_bank_cartridge->set_base(m_region + m_main_cpu_bank_address);
+}
+
+
+void neogeo_banked_cart_device::neogeo_set_main_cpu_bank_address( uint32_t bank_address )
+{
+// if (LOG_MAIN_CPU_BANKING) logerror("MAIN CPU PC %06x: neogeo_set_main_cpu_bank_address %06x\n", m_maincpu->pc(), bank_address);
+
+ m_main_cpu_bank_address = bank_address;
+
+ _set_main_cpu_bank_address();
+}
+
+
+WRITE16_MEMBER(neogeo_banked_cart_device::main_cpu_bank_select_w)
+{
+ uint32_t bank_address;
+ uint32_t len = m_region_size;
+
+ if ((len <= 0x100000) && (data & 0x07))
+ logerror("PC %06x: warning: bankswitch to %02x but no banks available\n", space.device().safe_pc(), data);
+ else
+ {
+ bank_address = ((data & 0x07) + 1) * 0x100000;
+
+ if (bank_address >= len)
+ {
+ logerror("PC %06x: warning: bankswitch to empty bank %02x\n", space.device().safe_pc(), data);
+ bank_address = 0x100000;
+ }
+
+ neogeo_set_main_cpu_bank_address(bank_address);
+ }
+}
+
+void neogeo_banked_cart_device::init_banks(void)
+{
+ /* set initial main CPU bank */
+ if (m_region_size > 0x100000)
+ neogeo_set_main_cpu_bank_address(0x100000);
+ else
+ neogeo_set_main_cpu_bank_address(0x000000);
+}
+
+void neogeo_banked_cart_device::install_banks(running_machine& machine, cpu_device* maincpu, uint8_t* region, uint32_t region_size)
+{
+ maincpu->space(AS_PROGRAM).install_read_bank(0x200000, 0x2fffff, "cartridge");
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(neogeo_banked_cart_device::main_cpu_bank_select_w),this));
+
+ m_bank_cartridge = machine.root_device().membank("cartridge");
+ m_region = region;
+ m_region_size = region_size;
+
+ init_banks();
+}
diff --git a/docs/release/src/hbmame/bus/neogeo/banked_cart.h b/docs/release/src/hbmame/bus/neogeo/banked_cart.h
new file mode 100644
index 00000000000..e0210b68d4a
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo/banked_cart.h
@@ -0,0 +1,40 @@
+// license:BSD-3-Clause
+// copyright-holders:S. Smith,David Haywood
+
+
+#pragma once
+
+#ifndef __NEOGEO_BANKED_CART__
+#define __NEOGEO_BANKED_CART__
+
+extern const device_type NEOGEO_BANKED_CART;
+
+#define MCFG_NEOGEO_BANKED_CART_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, NEOGEO_BANKED_CART, 0)
+
+
+class neogeo_banked_cart_device : public device_t
+{
+public:
+ // construction/destruction
+ neogeo_banked_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ memory_bank* m_bank_cartridge;
+ uint32_t m_main_cpu_bank_address;
+ uint8_t* m_region;
+ uint32_t m_region_size;
+
+
+ void install_banks(running_machine& machine, cpu_device* maincpu, uint8_t* region, uint32_t region_size);
+ WRITE16_MEMBER(main_cpu_bank_select_w);
+ void neogeo_set_main_cpu_bank_address(uint32_t bank_address);
+ void _set_main_cpu_bank_address();
+ void init_banks(void);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ void postload();
+};
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo/prot.cpp b/docs/release/src/hbmame/bus/neogeo/prot.cpp
new file mode 100644
index 00000000000..12bca1793f2
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo/prot.cpp
@@ -0,0 +1,3131 @@
+// license:BSD-3-Clause
+// copyright-holders:S. Smith,David Haywood
+#include "neogeo.h"
+
+
+const device_type NGBOOTLEG_PROT = device_creator<ngbootleg_prot_device>;
+
+
+ngbootleg_prot_device::ngbootleg_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NGBOOTLEG_PROT, "NeoGeo Protection (Bootleg)", tag, owner, clock, "ngbootleg_prot", __FILE__)
+ , kof2k3_overlay(0)
+ , m_mainrom(nullptr)
+ , m_fixedrom(nullptr)
+ , m_bankdev(nullptr)
+ { }
+
+
+void ngbootleg_prot_device::device_start()
+{
+ memset(m_cartridge_ram, 0x00, 0x2000);
+
+ save_item(NAME(m_cartridge_ram));
+}
+
+void ngbootleg_prot_device::device_reset() { }
+
+
+/* General Bootleg Functions - used by more than 1 game */
+
+
+void ngbootleg_prot_device::neogeo_bootleg_cx_decrypt(uint8_t*sprrom, uint32_t sprrom_size)
+{
+ int i;
+ int cx_size = sprrom_size;
+ uint8_t *rom = sprrom;
+ std::vector<uint8_t> buf( cx_size );
+
+ memcpy( &buf[0], rom, cx_size );
+
+ for( i = 0; i < cx_size / 0x40; i++ )
+ memcpy( &rom[ i * 0x40 ], &buf[ (i ^ 1) * 0x40 ], 0x40 );
+}
+
+
+void ngbootleg_prot_device::neogeo_bootleg_sx_decrypt(uint8_t* fixed, uint32_t fixed_size, int value )
+{
+ int sx_size = fixed_size;
+ uint8_t *rom = fixed;
+ int i;
+
+ if (value == 1)
+ {
+ std::vector<uint8_t> buf( sx_size );
+ memcpy( &buf[0], rom, sx_size );
+
+ for( i = 0; i < sx_size; i += 0x10 )
+ {
+ memcpy( &rom[ i ], &buf[ i + 8 ], 8 );
+ memcpy( &rom[ i + 8 ], &buf[ i ], 8 );
+ }
+ }
+ else if (value == 2)
+ {
+ for( i = 0; i < sx_size; i++ )
+ rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
+ }
+}
+
+
+
+/* The King of Fighters '97 Oroshi Plus 2003 (bootleg) */
+
+void ngbootleg_prot_device::kof97oro_px_decode(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i;
+ std::vector<uint16_t> tmp( 0x500000 );
+ uint16_t *src = (uint16_t*)cpurom;
+
+ for (i = 0; i < 0x500000/2; i++)
+ tmp[i] = src[i ^ 0x7ffef];
+
+ memcpy (src, &tmp[0], 0x500000);
+}
+
+
+/* The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg) */
+
+
+/* this uses RAM based tiles for the text layer, however the implementation
+ is incomplete, at the moment the S data is copied from the program rom on
+ start-up instead */
+
+void ngbootleg_prot_device::kof10thBankswitch(address_space &space, uint16_t nBank)
+{
+ uint32_t bank = 0x100000 + ((nBank & 7) << 20);
+ if (bank >= 0x700000)
+ bank = 0x100000;
+ m_bankdev->neogeo_set_main_cpu_bank_address(bank);
+}
+
+READ16_MEMBER( ngbootleg_prot_device::kof10th_RAMB_r )
+{
+ return m_cartridge_ram[offset];
+}
+
+READ16_MEMBER(ngbootleg_prot_device::kof10th_RAM2_r)
+{
+// printf("kof10th_RAM2_r\n");
+ return m_cartridge_ram2[offset];
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::kof10th_custom_w )
+{
+ if (!m_cartridge_ram[0xFFE]) { // Write to RAM bank A
+ //uint16_t *prom = (uint16_t*)m_mainrom;
+ COMBINE_DATA(&m_cartridge_ram2[(0x00000/2) + (offset & 0xFFFF)]);
+ }
+ else
+ { // Write S data on-the-fly
+ m_fixedrom[offset] = BITSWAP8(data,7,6,0,4,3,2,1,5);
+ }
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::kof10th_bankswitch_w )
+{
+ if (offset >= 0x5F000) {
+ if (offset == 0x5FFF8)
+ { // Standard bankswitch
+ kof10thBankswitch(space, data);
+ }
+ else
+ if (offset == 0x5FFFC && m_cartridge_ram[0xFFC] != data)
+ { // Special bankswitch
+ uint8_t *src = m_mainrom;
+ memcpy (src + 0x10000, src + ((data & 1) ? 0x810000 : 0x710000), 0xcffff);
+ }
+ COMBINE_DATA(&m_cartridge_ram[offset & 0xFFF]);
+ }
+}
+
+void ngbootleg_prot_device::install_kof10th_protection (cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size, uint8_t* fixedrom, uint32_t fixedrom_size)
+{
+ m_mainrom = cpurom;
+ m_fixedrom = fixedrom;
+ m_bankdev = bankdev;
+
+ maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAM2_r),this));
+
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAMB_r),this));
+ maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x23ffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_custom_w),this));
+ maincpu->space(AS_PROGRAM).install_write_handler(0x240000, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_bankswitch_w),this));
+ memcpy(m_cartridge_ram2, cpurom + 0xe0000, 0x20000);
+
+ // HACK: only save this at device_start (not allowed later)
+ if (machine().phase() <= MACHINE_PHASE_INIT)
+ save_pointer(NAME(m_fixedrom), 0x40000);
+}
+
+void ngbootleg_prot_device::decrypt_kof10th(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i, j;
+ std::vector<uint8_t> dst(0x900000);
+ uint8_t *src = cpurom;
+
+ memcpy(&dst[0x000000], src + 0x700000, 0x100000); // Correct (Verified in Uni-bios)
+ memcpy(&dst[0x100000], src + 0x000000, 0x800000);
+
+ for (i = 0; i < 0x900000; i++)
+ {
+ j = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,2,9,8,7,1,5,4,3,10,6,0);
+ src[j] = dst[i];
+ }
+
+ // Altera protection chip patches these over P ROM
+ ((uint16_t*)src)[0x0124/2] = 0x000d; // Enables XOR for RAM moves, forces SoftDIPs, and USA region
+ ((uint16_t*)src)[0x0126/2] = 0xf7a8;
+ ((uint16_t*)src)[0x8bf4/2] = 0x4ef9; // Run code to change "S" data
+ ((uint16_t*)src)[0x8bf6/2] = 0x000d;
+ ((uint16_t*)src)[0x8bf8/2] = 0xf980;
+}
+
+
+/* The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg) */
+
+
+void ngbootleg_prot_device::kf10thep_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ uint16_t *rom = (uint16_t*)cpurom;
+ std::vector<uint16_t> buf(0x100000/2);
+
+ memcpy(&buf[0x000000/2], &rom[0x060000/2], 0x20000);
+ memcpy(&buf[0x020000/2], &rom[0x100000/2], 0x20000);
+ memcpy(&buf[0x040000/2], &rom[0x0e0000/2], 0x20000);
+ memcpy(&buf[0x060000/2], &rom[0x180000/2], 0x20000);
+ memcpy(&buf[0x080000/2], &rom[0x020000/2], 0x20000);
+ memcpy(&buf[0x0a0000/2], &rom[0x140000/2], 0x20000);
+ memcpy(&buf[0x0c0000/2], &rom[0x0c0000/2], 0x20000);
+ memcpy(&buf[0x0e0000/2], &rom[0x1a0000/2], 0x20000);
+ memcpy(&buf[0x0002e0/2], &rom[0x0402e0/2], 0x6a); // copy banked code to a new memory region
+ memcpy(&buf[0x0f92bc/2], &rom[0x0492bc/2], 0xb9e); // copy banked code to a new memory region
+ memcpy(rom, &buf[0], 0x100000);
+
+ for (int i = 0xf92bc/2; i < 0xf9e58/2; i++)
+ {
+ if (rom[i+0] == 0x4eb9 && rom[i+1] == 0x0000) rom[i+1] = 0x000F; // correct JSR in moved code
+ if (rom[i+0] == 0x4ef9 && rom[i+1] == 0x0000) rom[i+1] = 0x000F; // correct JMP in moved code
+ }
+ rom[0x00342/2] = 0x000f;
+
+ memmove(&rom[0x100000/2], &rom[0x200000/2], 0x600000);
+}
+
+
+/* The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg) */
+
+
+void ngbootleg_prot_device::kf2k5uni_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i, j, ofst;
+ uint8_t *src = cpurom;
+ uint8_t dst[0x80];
+
+ for (i = 0; i < 0x800000; i+=0x80)
+ {
+ for (j = 0; j < 0x80; j+=2)
+ {
+ ofst = BITSWAP8(j, 0, 3, 4, 5, 6, 1, 2, 7);
+ memcpy(&dst[j], src + i + ofst, 2);
+ }
+ memcpy(src + i, &dst[0], 0x80);
+ }
+
+ memcpy(src, src + 0x600000, 0x100000); // Seems to be the same as kof10th
+}
+
+void ngbootleg_prot_device::kf2k5uni_sx_decrypt(uint8_t* fixedrom, uint32_t fixedrom_size)
+{
+ int i;
+ uint8_t *srom = fixedrom;
+
+ for (i = 0; i < 0x20000; i++)
+ srom[i] = BITSWAP8(srom[i], 4, 5, 6, 7, 0, 1, 2, 3);
+}
+
+void ngbootleg_prot_device::kf2k5uni_mx_decrypt(uint8_t* audiorom, uint32_t audiorom_size)
+{
+ int i;
+ uint8_t *mrom = audiorom;
+
+ for (i = 0; i < 0x30000; i++)
+ mrom[i] = BITSWAP8(mrom[i], 4, 5, 6, 7, 0, 1, 2, 3);
+}
+
+void ngbootleg_prot_device::decrypt_kf2k5uni(uint8_t* cpurom, uint32_t cpurom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size)
+{
+ kf2k5uni_px_decrypt(cpurom, cpurom_size);
+ kf2k5uni_sx_decrypt(fixedrom, fixedrom_size);
+ kf2k5uni_mx_decrypt(audiorom, audiorom_size);
+}
+
+
+/* The King of Fighters 2002 (bootleg) */
+
+
+void ngbootleg_prot_device::kof2002b_gfx_decrypt(uint8_t *src, int size)
+{
+ int i, j;
+ static const uint8_t t[ 8 ][ 6 ] =
+ {
+ { 0, 8, 7, 6, 2, 1 },
+ { 1, 0, 8, 7, 6, 2 },
+ { 2, 1, 0, 8, 7, 6 },
+ { 6, 2, 1, 0, 8, 7 },
+ { 7, 6, 2, 1, 0, 8 },
+ { 0, 1, 2, 6, 7, 8 },
+ { 2, 1, 0, 6, 7, 8 },
+ { 8, 0, 7, 6, 2, 1 },
+ };
+
+ std::vector<uint8_t> dst( 0x10000 );
+
+ for ( i = 0; i < size; i+=0x10000 )
+ {
+ memcpy( &dst[0], src+i, 0x10000 );
+
+ for ( j = 0; j < 0x200; j++ )
+ {
+ int n = (j & 0x38) >> 3;
+ int ofst = BITSWAP16(j, 15, 14, 13, 12, 11, 10, 9, t[n][0], t[n][1], t[n][2], 5, 4, 3, t[n][3], t[n][4], t[n][5]);
+ memcpy( src+i+ofst*128, &dst[j*128], 128 );
+ }
+ }
+}
+
+
+/* The King of Fighters 2002 Magic Plus (bootleg) */
+
+
+void ngbootleg_prot_device::kf2k2mp_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i,j;
+
+ uint8_t *src = cpurom;
+ uint8_t dst[0x80];
+
+ memmove(src, src + 0x300000, 0x500000);
+
+ for (i = 0; i < 0x800000; i+=0x80)
+ {
+ for (j = 0; j < 0x80 / 2; j++)
+ {
+ int ofst = BITSWAP8( j, 6, 7, 2, 3, 4, 5, 0, 1 );
+ memcpy(dst + j * 2, src + i + ofst * 2, 2);
+ }
+ memcpy(src + i, dst, 0x80);
+ }
+}
+
+
+/* The King of Fighters 2002 Magic Plus II (bootleg) */
+
+
+void ngbootleg_prot_device::kf2k2mp2_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst(0x600000);
+
+ memcpy (&dst[0x000000], &src[0x1C0000], 0x040000);
+ memcpy (&dst[0x040000], &src[0x140000], 0x080000);
+ memcpy (&dst[0x0C0000], &src[0x100000], 0x040000);
+ memcpy (&dst[0x100000], &src[0x200000], 0x400000);
+ memcpy (&src[0x000000], &dst[0x000000], 0x600000);
+}
+
+
+/* Crouching Tiger Hidden Dragon 2003 (bootleg of King of Fighters 2001) */
+
+
+/* descrambling information from razoola */
+void ngbootleg_prot_device::cthd2003_neogeo_gfx_address_fix_do(uint8_t* sprrom, uint32_t sprrom_size, int start, int end, int bit3shift, int bit2shift, int bit1shift, int bit0shift)
+{
+ int i,j;
+ int tilesize=128;
+
+ std::vector<uint8_t> rom(16*tilesize); // 16 tiles buffer
+ uint8_t* realrom = sprrom + start*tilesize;
+
+ for (i = 0; i < (end-start)/16; i++)
+ {
+ for (j = 0; j < 16; j++)
+ {
+ int offset = (((j&1)>>0)<<bit0shift) +(((j&2)>>1)<<bit1shift) +(((j&4)>>2)<<bit2shift) +(((j&8)>>3)<<bit3shift);
+
+ memcpy(&rom[j*tilesize], realrom+offset*tilesize, tilesize);
+ }
+ memcpy(realrom,&rom[0],tilesize*16);
+ realrom += 16*tilesize;
+ }
+}
+
+void ngbootleg_prot_device::cthd2003_neogeo_gfx_address_fix(uint8_t* sprrom, uint32_t sprrom_size, int start, int end)
+{
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*0, end+512*0, 0,3,2,1);
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*1, end+512*1, 1,0,3,2);
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*2, end+512*2, 2,1,0,3);
+ // skip 3 & 4
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*5, end+512*5, 0,1,2,3);
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*6, end+512*6, 0,1,2,3);
+ cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*7, end+512*7, 0,2,3,1);
+}
+
+void ngbootleg_prot_device::cthd2003_c(uint8_t* sprrom, uint32_t sprrom_size, int pow)
+{
+ int i;
+
+ for (i=0; i<=192; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+
+ for (i=200; i<=392; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+
+ for (i=400; i<=592; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+
+ for (i=600; i<=792; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+
+ for (i=800; i<=992; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+
+ for (i=1000; i<=1016; i+=8)
+ cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512);
+}
+
+void ngbootleg_prot_device::decrypt_cthd2003(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size)
+{
+ uint8_t *romdata = fixedrom;
+ std::vector<uint8_t> tmp(8*128*128);
+
+ memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128);
+ memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128);
+ memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128);
+ memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128);
+ memcpy(romdata, &tmp[0], 8*128*128);
+
+ romdata = audiorom+0x10000;
+ memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128);
+ memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128);
+ memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128);
+ memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128);
+ memcpy(romdata, &tmp[0], 8*128*128);
+
+ memcpy(romdata-0x10000,romdata,0x10000);
+
+ cthd2003_c(sprrom, sprrom_size, 0);
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::cthd2003_bankswitch_w )
+{
+ int bankaddress;
+ static const int cthd2003_banks[8] = { 1,0,1,0,1,0,3,2 };
+ if (offset == 0)
+ {
+ bankaddress = 0x100000 + cthd2003_banks[data&7] * 0x100000;
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+ }
+}
+
+void ngbootleg_prot_device::patch_cthd2003(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size)
+{
+ /* patches thanks to razoola */
+ int i;
+ uint16_t *mem16 = (uint16_t *)cpurom;
+
+ /* special ROM banking handler */
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::cthd2003_bankswitch_w),this));
+ m_bankdev = bankdev;
+
+ // theres still a problem on the character select screen but it seems to be related to cpu core timing issues,
+ // overclocking the 68k prevents it.
+
+ // fix garbage on s1 layer over everything
+ mem16[0xf415a/2] = 0x4ef9;
+ mem16[0xf415c/2] = 0x000f;
+ mem16[0xf415e/2] = 0x4cf2;
+ // Fix corruption in attract mode before title screen
+ for (i=0x1ae290/2;i < 0x1ae8d0/2; i=i+1)
+ mem16[i] = 0x0000;
+
+ // Fix for title page
+ for (i=0x1f8ef0/2;i < 0x1fa1f0/2; i=i+2)
+ {
+ mem16[i] -= 0x7000;
+ mem16[i+1] -= 0x0010;
+ }
+
+ // Fix for green dots on title page
+ for (i=0xac500/2;i < 0xac520/2; i=i+1)
+ mem16[i] = 0xFFFF;
+
+ // Fix for blanks as screen change level end clear
+ mem16[0x991d0/2] = 0xdd03;
+ mem16[0x99306/2] = 0xdd03;
+ mem16[0x99354/2] = 0xdd03;
+ mem16[0x9943e/2] = 0xdd03;
+}
+
+
+/* Crouching Tiger Hidden Dragon 2003 Super Plus (bootleg of King of Fighters 2001) */
+
+
+void ngbootleg_prot_device::ct2k3sp_sx_decrypt( uint8_t* fixedrom, uint32_t fixedrom_size )
+{
+ int rom_size = fixedrom_size;
+ uint8_t *rom = fixedrom;
+ std::vector<uint8_t> buf( rom_size );
+ int i;
+ int ofst;
+
+ memcpy( &buf[0], rom, rom_size );
+
+ for( i = 0; i < rom_size; i++ ){
+ ofst = BITSWAP24( (i & 0x1ffff), 23, 22, 21, 20, 19, 18, 17, 3, 0, 1, 4, 2, 13, 14, 16, 15, 5, 6, 11, 10, 9, 8, 7, 12 );
+
+ ofst += (i >> 17) << 17;
+
+ rom[ i ] = buf[ ofst ];
+ }
+
+ memcpy( &buf[0], rom, rom_size );
+
+ memcpy( &rom[ 0x08000 ], &buf[ 0x10000 ], 0x8000 );
+ memcpy( &rom[ 0x10000 ], &buf[ 0x08000 ], 0x8000 );
+ memcpy( &rom[ 0x28000 ], &buf[ 0x30000 ], 0x8000 );
+ memcpy( &rom[ 0x30000 ], &buf[ 0x28000 ], 0x8000 );
+}
+
+void ngbootleg_prot_device::decrypt_ct2k3sp(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size)
+{
+ uint8_t *romdata = audiorom + 0x10000;
+ std::vector<uint8_t> tmp(8*128*128);
+ memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128);
+ memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128);
+ memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128);
+ memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128);
+ memcpy(romdata, &tmp[0], 8*128*128);
+ memcpy(romdata - 0x10000, romdata, 0x10000);
+ ct2k3sp_sx_decrypt(fixedrom, fixedrom_size);
+ cthd2003_c(sprrom, sprrom_size, 0);
+}
+
+
+/* Crouching Tiger Hidden Dragon 2003 Super Plus alternate (bootleg of King of Fighters 2001) */
+
+
+void ngbootleg_prot_device::decrypt_ct2k3sa(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size )
+{
+ uint8_t *romdata = audiorom + 0x10000;
+ std::vector<uint8_t> tmp(8*128*128);
+ memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128);
+ memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128);
+ memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128);
+ memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128);
+ memcpy(romdata, &tmp[0], 8*128*128);
+
+ memcpy(romdata - 0x10000, romdata, 0x10000);
+ cthd2003_c(sprrom, sprrom_size, 0);
+}
+
+void ngbootleg_prot_device::patch_ct2k3sa(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ /* patches thanks to razoola - same as for cthd2003*/
+ int i;
+ uint16_t *mem16 = (uint16_t *)cpurom;
+
+ // theres still a problem on the character select screen but it seems to be related to cpu core timing issues,
+ // overclocking the 68k prevents it.
+
+ // fix garbage on s1 layer over everything
+ mem16[0xf415a/2] = 0x4ef9;
+ mem16[0xf415c/2] = 0x000f;
+ mem16[0xf415e/2] = 0x4cf2;
+
+ // Fix corruption in attract mode before title screen
+ for (i=0x1ae290/2;i < 0x1ae8d0/2; i=i+1)
+ mem16[i] = 0x0000;
+
+ // Fix for title page
+ for (i=0x1f8ef0/2;i < 0x1fa1f0/2; i=i+2)
+ {
+ mem16[i] -= 0x7000;
+ mem16[i+1] -= 0x0010;
+ }
+
+ // Fix for green dots on title page
+ for (i=0xac500/2;i < 0xac520/2; i=i+1)
+ mem16[i] = 0xFFFF;
+
+ // Fix for blanks as screen change level end clear
+ mem16[0x991d0/2] = 0xdd03;
+ mem16[0x99306/2] = 0xdd03;
+ mem16[0x99354/2] = 0xdd03;
+ mem16[0x9943e/2] = 0xdd03;
+}
+
+
+/* King of Fighters Special Edition 2004 (bootleg of King of Fighters 2002) */
+
+
+void ngbootleg_prot_device::decrypt_kof2k4se_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ uint8_t *src = cpurom+0x100000;
+ std::vector<uint8_t> dst(0x400000);
+ static const int sec[] = {0x300000, 0x200000, 0x100000, 0x000000};
+ memcpy(&dst[0], src, 0x400000);
+
+ for(uint8_t i = 0; i < 4; ++i)
+ memcpy(src + i*0x100000, &dst[sec[i]], 0x100000);
+}
+
+
+/* Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg) */
+
+
+void ngbootleg_prot_device::lans2004_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndrom_size)
+{
+ uint8_t *rom = ymsndrom;
+ for (uint8_t i = 0; i < 0xA00000; i++)
+ rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
+}
+
+void ngbootleg_prot_device::lans2004_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ /* Descrambling P ROMs - Thanks to Razoola for the info */
+ int i;
+ uint8_t *src = cpurom;
+ uint16_t *rom = (uint16_t*)cpurom;
+
+ static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };
+ std::vector<uint8_t> dst(0x600000);
+
+ for (i = 0; i < 8; i++)
+ memcpy (&dst[i * 0x20000], src + sec[i] * 0x20000, 0x20000);
+
+ memcpy (&dst[0x0BBB00], src + 0x045B00, 0x001710);
+ memcpy (&dst[0x02FFF0], src + 0x1A92BE, 0x000010);
+ memcpy (&dst[0x100000], src + 0x200000, 0x400000);
+ memcpy (src, &dst[0], 0x600000);
+
+ for (i = 0xBBB00/2; i < 0xBE000/2; i++)
+ {
+ if ((((rom[i]&0xFFBF)==0x4EB9) || ((rom[i]&0xFFBF)==0x43B9)) && (rom[i+1]==0x0000))
+ {
+ rom[i + 1] = 0x000B;
+ rom[i + 2] += 0x6000;
+ }
+ }
+
+ /* Patched by protection chip (Altera) ? */
+ rom[0x2D15C/2] = 0x000B;
+ rom[0x2D15E/2] = 0xBB00;
+ rom[0x2D1E4/2] = 0x6002;
+ rom[0x2EA7E/2] = 0x6002;
+ rom[0xBBCD0/2] = 0x6002;
+ rom[0xBBDF2/2] = 0x6002;
+ rom[0xBBE42/2] = 0x6002;
+}
+
+
+/* Metal Slug 5 Plus (bootleg) */
+
+
+READ16_MEMBER( ngbootleg_prot_device::mslug5_prot_r )
+{
+ logerror("PC %06x: access protected\n",space.device().safe_pc());
+ return 0xa0;
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::ms5plus_bankswitch_w )
+{
+ int bankaddress;
+ logerror("offset: %06x PC %06x: set banking %04x\n",offset,space.device().safe_pc(),data);
+ if ((offset == 0)&&(data == 0xa0))
+ {
+ bankaddress=0xa0;
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+ logerror("offset: %06x PC %06x: set banking %04x\n\n",offset,space.device().safe_pc(),bankaddress);
+ }
+ else if(offset == 2)
+ {
+ data=data>>4;
+ //data=data&7;
+ bankaddress=data*0x100000;
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+ logerror("offset: %06x PC %06x: set banking %04x\n\n",offset,space.device().safe_pc(),bankaddress);
+ }
+}
+
+void ngbootleg_prot_device::install_ms5plus_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ // special ROM banking handler / additional protection
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2ffff0, 0x2fffff,
+ read16_delegate(FUNC(ngbootleg_prot_device::mslug5_prot_r),this),
+ write16_delegate(FUNC(ngbootleg_prot_device::ms5plus_bankswitch_w),this));
+ m_bankdev = bankdev;
+}
+
+
+/* SNK vs. CAPCOM SVC CHAOS (bootleg) */
+
+
+void ngbootleg_prot_device::svcboot_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const uint8_t sec[] = { 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 };
+ int i;
+ int size = cpurom_size;
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst( size );
+ int ofst;
+ for( i = 0; i < size / 0x100000; i++ )
+ memcpy( &dst[ i * 0x100000 ], &src[ sec[ i ] * 0x100000 ], 0x100000 );
+
+ for( i = 0; i < size / 2; i++ )
+ {
+ ofst = BITSWAP8( (i & 0x0000ff), 7, 6, 1, 0, 3, 2, 5, 4 );
+ ofst += (i & 0xffff00);
+ memcpy( &src[ i * 2 ], &dst[ ofst * 2 ], 0x02 );
+ }
+}
+
+void ngbootleg_prot_device::svcboot_cx_decrypt(uint8_t*sprrom, uint32_t sprrom_size)
+{
+ static const uint8_t idx_tbl[ 0x10 ] = { 0, 1, 0, 1, 2, 3, 2, 3, 3, 4, 3, 4, 4, 5, 4, 5 };
+ static const uint8_t bitswap4_tbl[ 6 ][ 4 ] = { { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }, { 0, 1, 2, 3 }, { 3, 2, 1, 0 }, { 3, 0, 2, 1 } };
+ int i;
+ int size = sprrom_size;
+ uint8_t *src = sprrom;
+ std::vector<uint8_t> dst( size );
+ int ofst;
+ memcpy( &dst[0], src, size );
+ for( i = 0; i < size / 0x80; i++ )
+ {
+ int idx = idx_tbl[ (i & 0xf00) >> 8 ];
+ int bit0 = bitswap4_tbl[ idx ][ 0 ];
+ int bit1 = bitswap4_tbl[ idx ][ 1 ];
+ int bit2 = bitswap4_tbl[ idx ][ 2 ];
+ int bit3 = bitswap4_tbl[ idx ][ 3 ];
+ ofst = BITSWAP8( (i & 0x0000ff), 7, 6, 5, 4, bit3, bit2, bit1, bit0 );
+ ofst += (i & 0xfffff00);
+ memcpy( &src[ i * 0x80 ], &dst[ ofst * 0x80 ], 0x80 );
+ }
+}
+
+
+/* SNK vs. CAPCOM SVC CHAOS Plus (bootleg set 1) */
+
+
+void ngbootleg_prot_device::svcplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[] = { 0x00, 0x03, 0x02, 0x05, 0x04, 0x01 };
+ int i, ofst, size = cpurom_size;
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst( size );
+ memcpy( &dst[0], src, size );
+ for( i = 0; i < size / 2; i++ )
+ {
+ ofst = BITSWAP24( (i & 0xfffff), 0x17, 0x16, 0x15, 0x14, 0x13, 0x00, 0x01, 0x02, 0x0f, 0x0e, 0x0d, 0x0c,
+ 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x10, 0x11, 0x12 );
+ ofst ^= 0x0f0007;
+ ofst += (i & 0xff00000);
+ memcpy( &src[ i * 0x02 ], &dst[ ofst * 0x02 ], 0x02 );
+ }
+ memcpy( &dst[0], src, size );
+ for( i = 0; i < 6; i++ )
+ memcpy( &src[ i * 0x100000 ], &dst[ sec[ i ] * 0x100000 ], 0x100000 );
+}
+
+void ngbootleg_prot_device::svcplus_px_hack(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ /* patched by the protection chip? */
+ uint16_t *mem16 = (uint16_t *)cpurom;
+ mem16[0x0f8016/2] = 0x33c1;
+}
+
+
+/* SNK vs. CAPCOM SVC CHAOS Plus (bootleg set 2) */
+
+
+void ngbootleg_prot_device::svcplusa_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i;
+ static const int sec[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 };
+ int size = cpurom_size;
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst( size );
+ memcpy( &dst[0], src, size );
+ for( i = 0; i < 6; i++ )
+ memcpy( &src[ i * 0x100000 ], &dst[ sec[ i ] * 0x100000 ], 0x100000 );
+}
+
+
+/* SNK vs. CAPCOM SVC CHAOS Super Plus (bootleg) */
+
+
+void ngbootleg_prot_device::svcsplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[] = { 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 };
+ int i, ofst, size = cpurom_size;
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst( size );
+ memcpy( &dst[0], src, size );
+ for( i = 0; i < size / 2; i++ )
+ {
+ ofst = BITSWAP16( (i & 0x007fff), 0x0f, 0x00, 0x08, 0x09, 0x0b, 0x0a, 0x0c, 0x0d, 0x04, 0x03, 0x01, 0x07, 0x06, 0x02, 0x05, 0x0e );
+ ofst += (i & 0x078000);
+ ofst += sec[ (i & 0xf80000) >> 19 ] << 19;
+ memcpy( &src[ i * 2 ], &dst[ ofst * 2 ], 0x02 );
+ }
+}
+
+void ngbootleg_prot_device::svcsplus_px_hack(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ /* patched by the protection chip? */
+ uint16_t *mem16 = (uint16_t *)cpurom;
+ mem16[0x9e90/2] = 0x000f;
+ mem16[0x9e92/2] = 0xc9c0;
+ mem16[0xa10c/2] = 0x4eb9;
+ mem16[0xa10e/2] = 0x000e;
+ mem16[0xa110/2] = 0x9750;
+}
+
+
+/* The King of Fighters 2003 (bootleg set 1) */
+
+
+READ16_MEMBER( ngbootleg_prot_device::kof2003_r)
+{
+ return m_cartridge_ram[offset];
+}
+
+READ16_MEMBER(ngbootleg_prot_device::kof2003_overlay_r) // hack?
+{
+ return kof2k3_overlay;
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::kof2003_w )
+{
+ data = COMBINE_DATA(&m_cartridge_ram[offset]);
+ if (offset == 0x1ff0/2 || offset == 0x1ff2/2)
+ {
+ uint8_t* cr = (uint8_t *)m_cartridge_ram;
+ uint32_t address = (cr[BYTE_XOR_LE(0x1ff3)]<<16)|(cr[BYTE_XOR_LE(0x1ff2)]<<8)|cr[BYTE_XOR_LE(0x1ff1)];
+ uint8_t prt = cr[BYTE_XOR_LE(0x1ff2)];
+
+ cr[BYTE_XOR_LE(0x1ff0)] = 0xa0;
+ cr[BYTE_XOR_LE(0x1ff1)] &= 0xfe;
+ cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f;
+ m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000);
+
+ kof2k3_overlay = (prt & 0x00ff) | (kof2k3_overlay & 0xff00);
+ }
+}
+
+WRITE16_MEMBER( ngbootleg_prot_device::kof2003p_w )
+{
+ data = COMBINE_DATA(&m_cartridge_ram[offset]);
+ if (offset == 0x1ff0/2 || offset == 0x1ff2/2)
+ {
+ uint8_t* cr = (uint8_t *)m_cartridge_ram;
+ uint32_t address = (cr[BYTE_XOR_LE(0x1ff3)]<<16)|(cr[BYTE_XOR_LE(0x1ff2)]<<8)|cr[BYTE_XOR_LE(0x1ff0)];
+ uint8_t prt = cr[BYTE_XOR_LE(0x1ff2)];
+
+ cr[BYTE_XOR_LE(0x1ff0)] &= 0xfe;
+ cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f;
+ m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000);
+
+ kof2k3_overlay = (prt & 0x00ff) | (kof2k3_overlay & 0xff00);
+ }
+}
+
+void ngbootleg_prot_device::kf2k3bl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const uint8_t sec[] = { 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
+
+ int rom_size = 0x800000;
+ uint8_t *rom = cpurom;
+ std::vector<uint8_t> buf( rom_size );
+ memcpy( &buf[0], rom, rom_size );
+
+ for( int i = 0; i < rom_size / 0x100000; i++ )
+ memcpy( &rom[ i * 0x100000 ], &buf[ sec[ i ] * 0x100000 ], 0x100000 );
+}
+
+void ngbootleg_prot_device::kf2k3bl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size)
+{
+ m_mainrom = cpurom;
+
+ maincpu->space(AS_PROGRAM).install_read_handler(0x58196, 0x58197, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_overlay_r),this) );
+
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this), write16_delegate(FUNC(ngbootleg_prot_device::kof2003_w),this) );
+ m_bankdev = bankdev;
+}
+
+
+/* The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg) */
+
+
+void ngbootleg_prot_device::kf2k3pl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ std::vector<uint16_t> tmp(0x100000/2);
+ uint16_t*rom16 = (uint16_t*)cpurom;
+ int i, j;
+
+ for (i = 0;i < 0x700000/2;i+=0x100000/2)
+ {
+ memcpy(&tmp[0], &rom16[i], 0x100000);
+ for (j = 0; j < 0x100000/2; j++)
+ rom16[i+j] = tmp[BITSWAP24(j,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)];
+ }
+
+ /* patched by Altera protection chip on PCB */
+ rom16[0xf38ac/2] = 0x4e75;
+
+ kof2k3_overlay = rom16[0x58196 / 2];
+}
+
+void ngbootleg_prot_device::kf2k3pl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size)
+{
+ m_mainrom = cpurom;
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff,
+ read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this),
+ write16_delegate(FUNC(ngbootleg_prot_device::kof2003p_w),this) );
+ m_bankdev = bankdev;
+}
+
+
+/* The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg) */
+
+
+void ngbootleg_prot_device::kf2k3upl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ {
+ uint8_t *src = cpurom;
+ memmove(src+0x100000, src, 0x600000);
+ memmove(src, src+0x700000, 0x100000);
+ }
+
+ {
+ int i, ofst;
+ uint8_t *rom = cpurom + 0xfe000;
+ uint8_t *buf = cpurom + 0xd0610;
+
+ for( i = 0; i < 0x2000 / 2; i++ )
+ {
+ ofst = (i & 0xff00) + BITSWAP8( (i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5 );
+ memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 2 );
+ }
+ }
+
+ uint16_t*rom16 = (uint16_t*)cpurom;
+ kof2k3_overlay = rom16[0x58196 / 2];
+}
+
+
+/* Samurai Shodown V / Samurai Spirits Zero (bootleg) */
+
+
+void ngbootleg_prot_device::samsho5b_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ int i, ofst, px_size = cpurom_size;
+ uint8_t *rom = cpurom;
+ std::vector<uint8_t> buf( px_size );
+
+ memcpy( &buf[0], rom, px_size );
+
+ for( i = 0; i < px_size / 2; i++ )
+ {
+ ofst = BITSWAP8( (i & 0x000ff), 7, 6, 5, 4, 3, 0, 1, 2 );
+ ofst += (i & 0xfffff00);
+ ofst ^= 0x060005;
+ memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 0x02 );
+ }
+
+ memcpy( &buf[0], rom, px_size );
+
+ memcpy( &rom[ 0x000000 ], &buf[ 0x700000 ], 0x100000 );
+ memcpy( &rom[ 0x100000 ], &buf[ 0x000000 ], 0x700000 );
+}
+
+
+void ngbootleg_prot_device::samsho5b_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndrom_size)
+{
+ int vx_size = ymsndrom_size;
+ uint8_t *rom = ymsndrom;
+
+ for( int i = 0; i < vx_size; i++ )
+ rom[ i ] = BITSWAP8( rom[ i ], 0, 1, 5, 4, 3, 2, 6, 7 );
+}
+
+
+/* Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) */
+
+
+#define MATRIMBLZ80( i ) ( i^(BITSWAP8(i&0x3,4,3,1,2,0,7,6,5)<<8) )
+
+void ngbootleg_prot_device::matrimbl_decrypt(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size)
+{
+ /* decrypt Z80 */
+ uint8_t *rom = audiorom+0x10000;
+ std::vector<uint8_t> buf( 0x20000 );
+ int i, j;
+ memcpy( &buf[0], rom, 0x20000 );
+ for( i=0x00000; i<0x20000; i++ )
+ {
+ if ( i&0x10000 )
+ {
+ if ( i&0x800 )
+ {
+ j=MATRIMBLZ80( i );
+ j=j^0x10000;
+ }
+ else
+ {
+ j=MATRIMBLZ80(( i^0x01 ));
+ }
+ }
+ else
+ {
+ if ( i&0x800 )
+ {
+ j=MATRIMBLZ80(( i^0x01 ));
+ j=j^0x10000;
+ }
+ else
+ {
+ j=MATRIMBLZ80( i );
+ }
+ }
+ rom[ j ]=buf[ i ];
+ }
+ memcpy( rom-0x10000, rom, 0x10000 );
+
+ /* decrypt gfx */
+ cthd2003_c(sprrom,sprrom_size, 0 );
+}
+
+/***********************************************************************************************************************************/
+
+const device_type KOG_PROT = device_creator<kog_prot_device>;
+
+
+kog_prot_device::kog_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, KOG_PROT, "NeoGeo Protection (King of Gladiator)", tag, owner, clock, "kog_prot", __FILE__)
+ , m_jumper(*this, "JUMPER")
+ { }
+
+
+void kog_prot_device::device_start() { }
+void kog_prot_device::device_reset() { }
+
+READ16_MEMBER(kog_prot_device::read_jumper)
+{
+ return ioport("JUMPER")->read();
+}
+
+void kog_prot_device::kog_install_protection(cpu_device* maincpu)
+{
+ /* overlay cartridge ROM */
+ maincpu->space(AS_PROGRAM).install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(FUNC(kog_prot_device::read_jumper), this));
+}
+
+
+void kog_prot_device::kog_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst( 0x600000 );
+ uint16_t *rom = (uint16_t *)cpurom;
+ int i;
+ static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };
+
+ for (i = 0; i < 8; i++)
+ memcpy (&dst[i * 0x20000], src + sec[i] * 0x20000, 0x20000);
+
+ memcpy (&dst[0x0007A6], src + 0x0407A6, 0x000006);
+ memcpy (&dst[0x0007C6], src + 0x0407C6, 0x000006);
+ memcpy (&dst[0x0007E6], src + 0x0407E6, 0x000006);
+ memcpy (&dst[0x090000], src + 0x040000, 0x004000);
+ memcpy (&dst[0x100000], src + 0x200000, 0x400000);
+ memcpy (src, &dst[0], 0x600000);
+
+ for (i = 0x90000/2; i < 0x94000/2; i++)
+ {
+ if (((rom[i]&0xFFBF) == 0x4EB9 || rom[i] == 0x43F9) && !rom[i + 1])
+ rom[i + 1] = 0x0009;
+
+ if (rom[i] == 0x4EB8)
+ rom[i] = 0x6100;
+ }
+
+ rom[0x007A8/2] = 0x0009;
+ rom[0x007C8/2] = 0x0009;
+ rom[0x007E8/2] = 0x0009;
+ rom[0x93408/2] = 0xF168;
+ rom[0x9340C/2] = 0xFB7A;
+ rom[0x924AC/2] = 0x0009;
+ rom[0x9251C/2] = 0x0009;
+ rom[0x93966/2] = 0xFFDA;
+ rom[0x93974/2] = 0xFFCC;
+ rom[0x93982/2] = 0xFFBE;
+ rom[0x93990/2] = 0xFFB0;
+ rom[0x9399E/2] = 0xFFA2;
+ rom[0x939AC/2] = 0xFF94;
+ rom[0x939BA/2] = 0xFF86;
+ rom[0x939C8/2] = 0xFF78;
+ rom[0x939D4/2] = 0xFA5C;
+ rom[0x939E0/2] = 0xFA50;
+ rom[0x939EC/2] = 0xFA44;
+ rom[0x939F8/2] = 0xFA38;
+ rom[0x93A04/2] = 0xFA2C;
+ rom[0x93A10/2] = 0xFA20;
+ rom[0x93A1C/2] = 0xFA14;
+ rom[0x93A28/2] = 0xFA08;
+ rom[0x93A34/2] = 0xF9FC;
+ rom[0x93A40/2] = 0xF9F0;
+ rom[0x93A4C/2] = 0xFD14;
+ rom[0x93A58/2] = 0xFD08;
+ rom[0x93A66/2] = 0xF9CA;
+ rom[0x93A72/2] = 0xF9BE;
+}
+
+
+static INPUT_PORTS_START( kog )
+ /* a jumper on the pcb overlays a ROM address, very strange but that's how it works. */
+ PORT_START("JUMPER")
+ PORT_DIPNAME( 0x0001, 0x0001, "Title Language" ) PORT_DIPLOCATION("CART-JUMPER:1")
+ PORT_DIPSETTING( 0x0001, DEF_STR( English ) )
+ PORT_DIPSETTING( 0x0000, "Non-English" )
+ PORT_BIT( 0x00fe, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+ioport_constructor kog_prot_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( kog );
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type CMC_PROT = device_creator<cmc_prot_device>;
+
+
+cmc_prot_device::cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, CMC_PROT, "NeoGeo Protection (CMC)", tag, owner, clock, "cmc_prot", __FILE__)
+ , type0_t03(nullptr)
+ , type0_t12(nullptr)
+ , type1_t03(nullptr)
+ , type1_t12(nullptr)
+ , address_8_15_xor1(nullptr)
+ , address_8_15_xor2(nullptr)
+ , address_16_23_xor1(nullptr)
+ , address_16_23_xor2(nullptr)
+ , address_0_7_xor(nullptr)
+ { }
+
+
+void cmc_prot_device::device_start() { }
+void cmc_prot_device::device_reset() { }
+
+static const uint8_t kof99_type0_t03[256] =
+{
+ 0xfb, 0x86, 0x9d, 0xf1, 0xbf, 0x80, 0xd5, 0x43, 0xab, 0xb3, 0x9f, 0x6a, 0x33, 0xd9, 0xdb, 0xb6,
+ 0x66, 0x08, 0x69, 0x88, 0xcc, 0xb7, 0xde, 0x49, 0x97, 0x64, 0x1f, 0xa6, 0xc0, 0x2f, 0x52, 0x42,
+ 0x44, 0x5a, 0xf2, 0x28, 0x98, 0x87, 0x96, 0x8a, 0x83, 0x0b, 0x03, 0x61, 0x71, 0x99, 0x6b, 0xb5,
+ 0x1a, 0x8e, 0xfe, 0x04, 0xe1, 0xf7, 0x7d, 0xdd, 0xed, 0xca, 0x37, 0xfc, 0xef, 0x39, 0x72, 0xda,
+ 0xb8, 0xbe, 0xee, 0x7f, 0xe5, 0x31, 0x78, 0xf3, 0x91, 0x9a, 0xd2, 0x11, 0x19, 0xb9, 0x09, 0x4c,
+ 0xfd, 0x6d, 0x2a, 0x4d, 0x65, 0xa1, 0x89, 0xc7, 0x75, 0x50, 0x21, 0xfa, 0x16, 0x00, 0xe9, 0x12,
+ 0x74, 0x2b, 0x1e, 0x4f, 0x14, 0x01, 0x70, 0x3a, 0x4e, 0x3f, 0xf5, 0xf4, 0x1d, 0x3d, 0x15, 0x27,
+ 0xa7, 0xff, 0x45, 0xe0, 0x6e, 0xf9, 0x54, 0xc8, 0x48, 0xad, 0xa5, 0x0a, 0xf6, 0x2d, 0x2c, 0xe2,
+ 0x68, 0x67, 0xd6, 0x85, 0xb4, 0xc3, 0x34, 0xbc, 0x62, 0xd3, 0x5f, 0x84, 0x06, 0x5b, 0x0d, 0x95,
+ 0xea, 0x5e, 0x9e, 0xd4, 0xeb, 0x90, 0x7a, 0x05, 0x81, 0x57, 0xe8, 0x60, 0x2e, 0x20, 0x25, 0x7c,
+ 0x46, 0x0c, 0x93, 0xcb, 0xbd, 0x17, 0x7e, 0xec, 0x79, 0xb2, 0xc2, 0x22, 0x41, 0xb1, 0x10, 0xac,
+ 0xa8, 0xbb, 0x9b, 0x82, 0x4b, 0x9c, 0x8b, 0x07, 0x47, 0x35, 0x24, 0x56, 0x8d, 0xaf, 0xe6, 0x26,
+ 0x40, 0x38, 0xc4, 0x5d, 0x1b, 0xc5, 0xd1, 0x0f, 0x6c, 0x7b, 0xb0, 0xe3, 0xa3, 0x23, 0x6f, 0x58,
+ 0xc1, 0xba, 0xcf, 0xd7, 0xa2, 0xe7, 0xd0, 0x63, 0x5c, 0xf8, 0x73, 0xa0, 0x13, 0xdc, 0x29, 0xcd,
+ 0xc9, 0x76, 0xae, 0x8f, 0xe4, 0x59, 0x30, 0xaa, 0x94, 0x1c, 0x3c, 0x0e, 0x55, 0x92, 0x77, 0x32,
+ 0xc6, 0xce, 0x18, 0x36, 0xdf, 0xa9, 0x8c, 0xd8, 0xa4, 0xf0, 0x3b, 0x51, 0x4a, 0x02, 0x3e, 0x53,
+};
+
+
+static const uint8_t kof99_type0_t12[256] =
+{
+ 0x1f, 0xac, 0x4d, 0xcd, 0xca, 0x70, 0x02, 0x6b, 0x18, 0x40, 0x62, 0xb2, 0x3f, 0x9b, 0x5b, 0xef,
+ 0x69, 0x68, 0x71, 0x3b, 0xcb, 0xd4, 0x30, 0xbc, 0x47, 0x72, 0x74, 0x5e, 0x84, 0x4c, 0x1b, 0xdb,
+ 0x6a, 0x35, 0x1d, 0xf5, 0xa1, 0xb3, 0x87, 0x5d, 0x57, 0x28, 0x2f, 0xc4, 0xfd, 0x24, 0x26, 0x36,
+ 0xad, 0xbe, 0x61, 0x63, 0x73, 0xaa, 0x82, 0xee, 0x29, 0xd0, 0xdf, 0x8c, 0x15, 0xb5, 0x96, 0xf3,
+ 0xdd, 0x7e, 0x3a, 0x37, 0x58, 0x7f, 0x0c, 0xfc, 0x0b, 0x07, 0xe8, 0xf7, 0xf4, 0x14, 0xb8, 0x81,
+ 0xb6, 0xd7, 0x1e, 0xc8, 0x85, 0xe6, 0x9d, 0x33, 0x60, 0xc5, 0x95, 0xd5, 0x55, 0x00, 0xa3, 0xb7,
+ 0x7d, 0x50, 0x0d, 0xd2, 0xc1, 0x12, 0xe5, 0xed, 0xd8, 0xa4, 0x9c, 0x8f, 0x2a, 0x4f, 0xa8, 0x01,
+ 0x52, 0x83, 0x65, 0xea, 0x9a, 0x6c, 0x44, 0x4a, 0xe2, 0xa5, 0x2b, 0x46, 0xe1, 0x34, 0x25, 0xf8,
+ 0xc3, 0xda, 0xc7, 0x6e, 0x48, 0x38, 0x7c, 0x78, 0x06, 0x53, 0x64, 0x16, 0x98, 0x3c, 0x91, 0x42,
+ 0x39, 0xcc, 0xb0, 0xf1, 0xeb, 0x13, 0xbb, 0x05, 0x32, 0x86, 0x0e, 0xa2, 0x0a, 0x9e, 0xfa, 0x66,
+ 0x54, 0x8e, 0xd3, 0xe7, 0x19, 0x20, 0x77, 0xec, 0xff, 0xbd, 0x6d, 0x43, 0x23, 0x03, 0xab, 0x75,
+ 0x3d, 0xcf, 0xd1, 0xde, 0x92, 0x31, 0xa7, 0x45, 0x4b, 0xc2, 0x97, 0xf9, 0x7a, 0x88, 0xd9, 0x1c,
+ 0xe9, 0xe4, 0x10, 0xc9, 0x22, 0x2d, 0x90, 0x76, 0x17, 0x79, 0x04, 0x51, 0x1a, 0x5a, 0x5f, 0x2c,
+ 0x21, 0x6f, 0x3e, 0xe0, 0xf0, 0xbf, 0xd6, 0x94, 0x0f, 0x80, 0x11, 0xa0, 0x5c, 0xa9, 0x49, 0x2e,
+ 0xce, 0xaf, 0xa6, 0x9f, 0x7b, 0x99, 0xb9, 0xb4, 0xe3, 0xfb, 0xf6, 0x27, 0xf2, 0x93, 0xfe, 0x08,
+ 0x67, 0xae, 0x09, 0x89, 0xdc, 0x4e, 0xc6, 0xc0, 0x8a, 0xb1, 0x59, 0x8b, 0x41, 0x56, 0x8d, 0xba,
+};
+
+
+static const uint8_t kof99_type1_t03[256] =
+{
+ 0xa9, 0x17, 0xaf, 0x0d, 0x34, 0x6e, 0x53, 0xb6, 0x7f, 0x58, 0xe9, 0x14, 0x5f, 0x55, 0xdb, 0xd4,
+ 0x42, 0x80, 0x99, 0x59, 0xa8, 0x3a, 0x57, 0x5d, 0xd5, 0x6f, 0x4c, 0x68, 0x35, 0x46, 0xa6, 0xe7,
+ 0x7b, 0x71, 0xe0, 0x93, 0xa2, 0x1f, 0x64, 0x21, 0xe3, 0xb1, 0x98, 0x26, 0xab, 0xad, 0xee, 0xe5,
+ 0xbb, 0xd9, 0x1e, 0x2e, 0x95, 0x36, 0xef, 0x23, 0x79, 0x45, 0x04, 0xed, 0x13, 0x1d, 0xf4, 0x85,
+ 0x96, 0xec, 0xc2, 0x32, 0xaa, 0x7c, 0x15, 0xd8, 0xda, 0x92, 0x90, 0x9d, 0xb7, 0x56, 0x6a, 0x66,
+ 0x41, 0xfc, 0x00, 0xf6, 0x50, 0x24, 0xcf, 0xfb, 0x11, 0xfe, 0x82, 0x48, 0x9b, 0x27, 0x1b, 0x67,
+ 0x4e, 0x84, 0x69, 0x97, 0x6d, 0x8c, 0xd2, 0xba, 0x74, 0xf9, 0x8f, 0xa5, 0x54, 0x5c, 0xcd, 0x73,
+ 0x07, 0xd1, 0x01, 0x09, 0xf1, 0x19, 0x3b, 0x5e, 0x87, 0x30, 0x76, 0xcc, 0xc0, 0x5a, 0xa7, 0x49,
+ 0x22, 0xfa, 0x16, 0x02, 0xdf, 0xa4, 0xff, 0xb3, 0x75, 0x33, 0xbd, 0x88, 0x2f, 0xcb, 0x2a, 0x44,
+ 0xb8, 0xbf, 0x1c, 0x0f, 0x81, 0x10, 0x43, 0xb4, 0xc8, 0x7e, 0x9a, 0x25, 0xea, 0x83, 0x4b, 0x38,
+ 0x7a, 0xd7, 0x3d, 0x1a, 0x4f, 0x62, 0x51, 0xc9, 0x47, 0x0e, 0xce, 0x3f, 0xc7, 0x4d, 0x2c, 0xa1,
+ 0x86, 0xb9, 0xc5, 0xca, 0xdd, 0x6b, 0x70, 0x6c, 0x91, 0x9c, 0xbe, 0x0a, 0x9f, 0xf5, 0x94, 0xbc,
+ 0x18, 0x2b, 0x60, 0x20, 0x29, 0xf7, 0xf2, 0x28, 0xc4, 0xa0, 0x0b, 0x65, 0xde, 0x8d, 0x78, 0x12,
+ 0x3e, 0xd0, 0x77, 0x08, 0x8b, 0xae, 0x05, 0x31, 0x3c, 0xd6, 0xa3, 0x89, 0x06, 0xdc, 0x52, 0x72,
+ 0xb0, 0xb5, 0x37, 0xd3, 0xc3, 0x8a, 0xc6, 0xf0, 0xc1, 0x61, 0xfd, 0x4a, 0x5b, 0x7d, 0x9e, 0xf3,
+ 0x63, 0x40, 0x2d, 0xe8, 0xb2, 0xe6, 0x39, 0x03, 0xeb, 0x8e, 0xe1, 0x0c, 0xe4, 0xe2, 0xf8, 0xac,
+};
+
+
+static const uint8_t kof99_type1_t12[256] =
+{
+ 0xea, 0xe6, 0x5e, 0xa7, 0x8e, 0xac, 0x34, 0x03, 0x30, 0x97, 0x52, 0x53, 0x76, 0xf2, 0x62, 0x0b,
+ 0x0a, 0xfc, 0x94, 0xb8, 0x67, 0x36, 0x11, 0xbc, 0xae, 0xca, 0xfa, 0x15, 0x04, 0x2b, 0x17, 0xc4,
+ 0x3e, 0x5b, 0x59, 0x01, 0x57, 0xe2, 0xba, 0xb7, 0xd1, 0x3f, 0xf0, 0x6a, 0x9c, 0x2a, 0xcb, 0xa9,
+ 0xe3, 0x2c, 0xc0, 0x0f, 0x46, 0x91, 0x8a, 0xd0, 0x98, 0xc5, 0xa6, 0x1b, 0x96, 0x29, 0x12, 0x09,
+ 0x63, 0xed, 0xe0, 0xa2, 0x86, 0x77, 0xbe, 0xe5, 0x65, 0xdb, 0xbd, 0x50, 0xb3, 0x9d, 0x1a, 0x4e,
+ 0x79, 0x0c, 0x00, 0x43, 0xdf, 0x3d, 0x54, 0x33, 0x8f, 0x89, 0xa8, 0x7b, 0xf9, 0xd5, 0x27, 0x82,
+ 0xbb, 0xc2, 0x8c, 0x47, 0x88, 0x6b, 0xb4, 0xc3, 0xf8, 0xaa, 0x06, 0x1e, 0x83, 0x7d, 0x05, 0x78,
+ 0x85, 0xf6, 0x6e, 0x2e, 0xec, 0x5a, 0x31, 0x45, 0x38, 0x14, 0x16, 0x8b, 0x02, 0xe4, 0x4f, 0xb0,
+ 0xbf, 0xab, 0xa4, 0x9e, 0x48, 0x60, 0x19, 0x35, 0x08, 0xde, 0xdd, 0x66, 0x90, 0x51, 0xcc, 0xa3,
+ 0xaf, 0x70, 0x9b, 0x75, 0x95, 0x49, 0x6c, 0x64, 0x72, 0x7e, 0x44, 0xa0, 0x73, 0x25, 0x68, 0x55,
+ 0x1f, 0x40, 0x7a, 0x74, 0x0e, 0x8d, 0xdc, 0x1c, 0x71, 0xc8, 0xcf, 0xd7, 0xe8, 0xce, 0xeb, 0x32,
+ 0x3a, 0xee, 0x07, 0x61, 0x4d, 0xfe, 0x5c, 0x7c, 0x56, 0x2f, 0x2d, 0x5f, 0x6f, 0x9f, 0x81, 0x22,
+ 0x58, 0x4b, 0xad, 0xda, 0xb9, 0x10, 0x18, 0x23, 0xe1, 0xf3, 0x6d, 0xe7, 0xe9, 0x28, 0xd6, 0xd8,
+ 0xf4, 0x4c, 0x39, 0x21, 0xb2, 0x84, 0xc1, 0x24, 0x26, 0xf1, 0x93, 0x37, 0xc6, 0x4a, 0xcd, 0x20,
+ 0xc9, 0xd9, 0xc7, 0xb1, 0xff, 0x99, 0xd4, 0x5d, 0xb5, 0xa1, 0x87, 0x0d, 0x69, 0x92, 0x13, 0x80,
+ 0xd2, 0xd3, 0xfd, 0x1d, 0xf5, 0x3b, 0xa5, 0x7f, 0xef, 0x9a, 0xb6, 0x42, 0xfb, 0x3c, 0xf7, 0x41,
+};
+
+
+/* underlined values are wrong (not enough evidence, FF fill in kof99 and garou) */
+/* they correspond to tiles 7d000-7efff */
+static const uint8_t kof99_address_8_15_xor1[256] =
+{
+ 0x00, 0xb1, 0x1e, 0xc5, 0x3d, 0x40, 0x45, 0x5e, 0xf2, 0xf8, 0x04, 0x63, 0x36, 0x87, 0x88, 0xbf,
+ 0xab, 0xcc, 0x78, 0x08, 0xdd, 0x20, 0xd4, 0x35, 0x09, 0x8e, 0x44, 0xae, 0x33, 0xa9, 0x9e, 0xcd,
+ 0xb3, 0xe5, 0xad, 0x41, 0xda, 0xbe, 0xf4, 0x16, 0x57, 0x2e, 0x53, 0x67, 0xaf, 0xdb, 0x8a, 0xd8,
+ 0x34, 0x17, 0x3c, 0x01, 0x55, 0x73, 0xcf, 0xe3, 0xe8, 0xc7, 0x0d, 0xe9, 0xa3, 0x13, 0x0c, 0xf6,
+ 0x90, 0x4e, 0xfb, 0x97, 0x6d, 0x5f, 0xa8, 0x71, 0x11, 0xfc, 0xd1, 0x95, 0x81, 0xba, 0x8c, 0x1b,
+ 0x39, 0xfe, 0xa2, 0x15, 0xa6, 0x52, 0x4d, 0x5b, 0x59, 0xa5, 0xe0, 0x96, 0xd9, 0x8f, 0x7b, 0xed,
+ 0x29, 0xd3, 0x1f, 0x0e, 0xec, 0x23, 0x0f, 0xb8, 0x6c, 0x6f, 0x7d, 0x18, 0x46, 0xd6, 0xe4, 0xb5,
+ 0x9a, 0x79, 0x02, 0xf5, 0x03, 0xc0, 0x60, 0x66, 0x5c, 0x2f, 0x76, 0x85, 0x9d, 0x54, 0x1a, 0x6a,
+ 0x28, 0xce, 0x7f, 0x7c, 0x91, 0x99, 0x4c, 0x83, 0x3e, 0xb4, 0x1d, 0x05, 0xc1, 0xc3, 0xd7, 0x47,
+ 0xde, 0xbc, 0x62, 0x6e, 0x86, 0x14, 0x80, 0x77, 0xeb, 0xf3, 0x07, 0x31, 0x56, 0xd2, 0xc2, 0xc6,
+ 0x6b, 0xdc, 0xfd, 0x22, 0x92, 0xf0, 0x06, 0x51, 0x2d, 0x38, 0xe6, 0xa0, 0x25, 0xdf, 0xd5, 0x2c,
+ 0x1c, 0x94, 0x12, 0x9c, 0xb0, 0x9b, 0xc4, 0x0b, 0xc8, 0xd0, 0xf7, 0x30, 0xcb, 0x27, 0xfa, 0x7a,
+ 0x10, 0x61, 0xaa, 0xa4, 0x70, 0xb7, 0x2a, 0x5a, 0xc9, 0xf1, 0x0a, 0x49, 0x65, 0xee, 0x69, 0x4b,
+ 0x3a, 0x8d, 0x32, 0x5d, 0x68, 0xb9, 0x9f, 0x75, 0x19, 0x3f, 0xac, 0x37, 0x4f, 0xe7, 0x93, 0x89,
+ 0x7e, 0x4a, 0x3b, 0xea, 0x74, 0x72, 0x43, 0xbd, 0x24, 0xef, 0xb6, 0xff, 0x64, 0x58, 0x84, 0x8b,
+ 0xa7, 0xbb, 0xb2, 0xe1, 0x26, 0x2b, 0x50, 0xca, 0x21, 0xf9, 0x98, 0xa1, 0xe2, 0x42, 0x82, 0x48,
+// ^^^^ ^^^^ ^^^^ ^^^^
+};
+
+
+static const uint8_t kof99_address_8_15_xor2[256] =
+{
+ 0x9b, 0x9d, 0xc1, 0x3d, 0xa9, 0xb8, 0xf4, 0x6f, 0xf6, 0x25, 0xc7, 0x47, 0xd5, 0x97, 0xdf, 0x6b,
+ 0xeb, 0x90, 0xa4, 0xb2, 0x5d, 0xf5, 0x66, 0xb0, 0xb9, 0x8b, 0x93, 0x64, 0xec, 0x7b, 0x65, 0x8c,
+ 0xf1, 0x43, 0x42, 0x6e, 0x45, 0x9f, 0xb3, 0x35, 0x06, 0x71, 0x96, 0xdb, 0xa0, 0xfb, 0x0b, 0x3a,
+ 0x1f, 0xf8, 0x8e, 0x69, 0xcd, 0x26, 0xab, 0x86, 0xa2, 0x0c, 0xbd, 0x63, 0xa5, 0x7a, 0xe7, 0x6a,
+ 0x5f, 0x18, 0x9e, 0xbf, 0xad, 0x55, 0xb1, 0x1c, 0x5c, 0x03, 0x30, 0xc6, 0x37, 0x20, 0xe3, 0xc9,
+ 0x52, 0xe8, 0xee, 0x4f, 0x01, 0x70, 0xc4, 0x77, 0x29, 0x2a, 0xba, 0x53, 0x12, 0x04, 0x7d, 0xaf,
+ 0x33, 0x8f, 0xa8, 0x4d, 0xaa, 0x5b, 0xb4, 0x0f, 0x92, 0xbb, 0xed, 0xe1, 0x2f, 0x50, 0x6c, 0xd2,
+ 0x2c, 0x95, 0xd9, 0xf9, 0x98, 0xc3, 0x76, 0x4c, 0xf2, 0xe4, 0xe5, 0x2b, 0xef, 0x9c, 0x49, 0xb6,
+ 0x31, 0x3b, 0xbc, 0xa1, 0xca, 0xde, 0x62, 0x74, 0xea, 0x81, 0x00, 0xdd, 0xa6, 0x46, 0x88, 0x3f,
+ 0x39, 0xd6, 0x23, 0x54, 0x24, 0x4a, 0xd8, 0xdc, 0xd7, 0xd1, 0xcc, 0xbe, 0x57, 0x7c, 0xda, 0x44,
+ 0x61, 0xce, 0xd3, 0xd4, 0xe9, 0x28, 0x80, 0xe0, 0x56, 0x8a, 0x09, 0x05, 0x9a, 0x89, 0x1b, 0xf7,
+ 0xf3, 0x99, 0x6d, 0x5e, 0x48, 0x91, 0xc0, 0xd0, 0xc5, 0x79, 0x78, 0x41, 0x59, 0x21, 0x2e, 0xff,
+ 0xc2, 0x4b, 0x38, 0x83, 0x32, 0xe6, 0xe2, 0x7f, 0x1e, 0x17, 0x58, 0x1d, 0x1a, 0xfa, 0x85, 0x82,
+ 0x94, 0xc8, 0x72, 0x7e, 0xb7, 0xac, 0x0e, 0xfc, 0xfd, 0x16, 0x27, 0x75, 0x8d, 0xcb, 0x08, 0xfe,
+ 0x0a, 0x02, 0x0d, 0x36, 0x11, 0x22, 0x84, 0x40, 0x34, 0x3e, 0x2d, 0x68, 0x5a, 0xa7, 0x67, 0xae,
+ 0x87, 0x07, 0x10, 0x60, 0x14, 0x73, 0x3c, 0x51, 0x19, 0xa3, 0xb5, 0xcf, 0x13, 0xf0, 0x15, 0x4e,
+};
+
+
+static const uint8_t kof99_address_16_23_xor1[256] =
+{
+ 0x00, 0x5f, 0x03, 0x52, 0xce, 0xe3, 0x7d, 0x8f, 0x6b, 0xf8, 0x20, 0xde, 0x7b, 0x7e, 0x39, 0xbe,
+ 0xf5, 0x94, 0x18, 0x78, 0x80, 0xc9, 0x7f, 0x7a, 0x3e, 0x63, 0xf2, 0xe0, 0x4e, 0xf7, 0x87, 0x27,
+ 0x69, 0x6c, 0xa4, 0x1d, 0x85, 0x5b, 0xe6, 0x44, 0x25, 0x0c, 0x98, 0xc7, 0x01, 0x02, 0xa3, 0x26,
+ 0x09, 0x38, 0xdb, 0xc3, 0x1e, 0xcf, 0x23, 0x45, 0x68, 0x76, 0xd6, 0x22, 0x5d, 0x5a, 0xae, 0x16,
+ 0x9f, 0xa2, 0xb5, 0xcd, 0x81, 0xea, 0x5e, 0xb8, 0xb9, 0x9d, 0x9c, 0x1a, 0x0f, 0xff, 0xe1, 0xe7,
+ 0x74, 0xaa, 0xd4, 0xaf, 0xfc, 0xc6, 0x33, 0x29, 0x5c, 0xab, 0x95, 0xf0, 0x19, 0x47, 0x59, 0x67,
+ 0xf3, 0x96, 0x60, 0x1f, 0x62, 0x92, 0xbd, 0x89, 0xee, 0x28, 0x13, 0x06, 0xfe, 0xfa, 0x32, 0x6d,
+ 0x57, 0x3c, 0x54, 0x50, 0x2c, 0x58, 0x49, 0xfb, 0x17, 0xcc, 0xef, 0xb2, 0xb4, 0xf9, 0x07, 0x70,
+ 0xc5, 0xa9, 0xdf, 0xd5, 0x3b, 0x86, 0x2b, 0x0d, 0x6e, 0x4d, 0x0a, 0x90, 0x43, 0x31, 0xc1, 0xf6,
+ 0x88, 0x0b, 0xda, 0x53, 0x14, 0xdc, 0x75, 0x8e, 0xb0, 0xeb, 0x99, 0x46, 0xa1, 0x15, 0x71, 0xc8,
+ 0xe9, 0x3f, 0x4a, 0xd9, 0x73, 0xe5, 0x7c, 0x30, 0x77, 0xd3, 0xb3, 0x4b, 0x37, 0x72, 0xc2, 0x04,
+ 0x97, 0x08, 0x36, 0xb1, 0x3a, 0x61, 0xec, 0xe2, 0x1c, 0x9a, 0x8b, 0xd1, 0x1b, 0x2e, 0x9e, 0x8a,
+ 0xd8, 0x41, 0xe4, 0xc4, 0x40, 0x2f, 0xad, 0xc0, 0xb6, 0x84, 0x51, 0x66, 0xbb, 0x12, 0xe8, 0xdd,
+ 0xcb, 0xbc, 0x6f, 0xd0, 0x11, 0x83, 0x56, 0x4c, 0xca, 0xbf, 0x05, 0x10, 0xd7, 0xba, 0xfd, 0xed,
+ 0x8c, 0x0e, 0x4f, 0x3d, 0x35, 0x91, 0xb7, 0xac, 0x34, 0x64, 0x2a, 0xf1, 0x79, 0x6a, 0x9b, 0x2d,
+ 0x65, 0xf4, 0x42, 0xa0, 0x8d, 0xa7, 0x48, 0x55, 0x21, 0x93, 0x24, 0xd2, 0xa6, 0xa5, 0xa8, 0x82,
+};
+
+
+static const uint8_t kof99_address_16_23_xor2[256] =
+{
+ 0x29, 0x97, 0x1a, 0x2c, 0x0b, 0x94, 0x3e, 0x75, 0x01, 0x0d, 0x1b, 0xe1, 0x4d, 0x38, 0x39, 0x8f,
+ 0xe7, 0xd0, 0x60, 0x90, 0xb2, 0x0f, 0xbb, 0x70, 0x1f, 0xe6, 0x5b, 0x87, 0xb4, 0x43, 0xfd, 0xf5,
+ 0xf6, 0xf9, 0xad, 0xc0, 0x98, 0x17, 0x9f, 0x91, 0x15, 0x51, 0x55, 0x64, 0x6c, 0x18, 0x61, 0x0e,
+ 0xd9, 0x93, 0xab, 0xd6, 0x24, 0x2f, 0x6a, 0x3a, 0x22, 0xb1, 0x4f, 0xaa, 0x23, 0x48, 0xed, 0xb9,
+ 0x88, 0x8b, 0xa3, 0x6b, 0x26, 0x4c, 0xe8, 0x2d, 0x1c, 0x99, 0xbd, 0x5c, 0x58, 0x08, 0x50, 0xf2,
+ 0x2a, 0x62, 0xc1, 0x72, 0x66, 0x04, 0x10, 0x37, 0x6e, 0xfc, 0x44, 0xa9, 0xdf, 0xd4, 0x20, 0xdd,
+ 0xee, 0x41, 0xdb, 0x73, 0xde, 0x54, 0xec, 0xc9, 0xf3, 0x4b, 0x2e, 0xae, 0x5a, 0x4a, 0x5e, 0x47,
+ 0x07, 0x2b, 0x76, 0xa4, 0xe3, 0x28, 0xfe, 0xb0, 0xf0, 0x02, 0x06, 0xd1, 0xaf, 0x42, 0xc2, 0xa5,
+ 0xe0, 0x67, 0xbf, 0x16, 0x8e, 0x35, 0xce, 0x8a, 0xe5, 0x3d, 0x7b, 0x96, 0xd7, 0x79, 0x52, 0x1e,
+ 0xa1, 0xfb, 0x9b, 0xbe, 0x21, 0x9c, 0xe9, 0x56, 0x14, 0x7f, 0xa0, 0xe4, 0xc3, 0xc4, 0x46, 0xea,
+ 0xf7, 0xd2, 0x1d, 0x31, 0x0a, 0x5f, 0xeb, 0xa2, 0x68, 0x8d, 0xb5, 0xc5, 0x74, 0x0c, 0xdc, 0x82,
+ 0x80, 0x09, 0x19, 0x95, 0x71, 0x9a, 0x11, 0x57, 0x77, 0x4e, 0xc6, 0xff, 0x12, 0x03, 0xa7, 0xc7,
+ 0xf4, 0xc8, 0xb6, 0x7a, 0x59, 0x36, 0x3c, 0x53, 0xe2, 0x69, 0x8c, 0x25, 0x05, 0x45, 0x63, 0xf8,
+ 0x34, 0x89, 0x33, 0x3f, 0x85, 0x27, 0xbc, 0x65, 0xfa, 0xa8, 0x6d, 0x84, 0x5d, 0xba, 0x40, 0x32,
+ 0x30, 0xef, 0x83, 0x13, 0xa6, 0x78, 0xcc, 0x81, 0x9e, 0xda, 0xca, 0xd3, 0x7e, 0x9d, 0x6f, 0xcd,
+ 0xb7, 0xb3, 0xd8, 0xcf, 0x3b, 0x00, 0x92, 0xb8, 0x86, 0xac, 0x49, 0x7c, 0xf1, 0xd5, 0xcb, 0x7d,
+};
+
+
+static const uint8_t kof99_address_0_7_xor[256] =
+{
+ 0x74, 0xad, 0x5d, 0x1d, 0x9e, 0xc3, 0xfa, 0x4e, 0xf7, 0xdb, 0xca, 0xa2, 0x64, 0x36, 0x56, 0x0c,
+ 0x4f, 0xcf, 0x43, 0x66, 0x1e, 0x91, 0xe3, 0xa5, 0x58, 0xc2, 0xc1, 0xd4, 0xb9, 0xdd, 0x76, 0x16,
+ 0xce, 0x61, 0x75, 0x01, 0x2b, 0x22, 0x38, 0x55, 0x50, 0xef, 0x6c, 0x99, 0x05, 0xe9, 0xe8, 0xe0,
+ 0x2d, 0xa4, 0x4b, 0x4a, 0x42, 0xae, 0xba, 0x8c, 0x6f, 0x93, 0x14, 0xbd, 0x71, 0x21, 0xb0, 0x02,
+ 0x15, 0xc4, 0xe6, 0x60, 0xd7, 0x44, 0xfd, 0x85, 0x7e, 0x78, 0x8f, 0x00, 0x81, 0xf1, 0xa7, 0x3b,
+ 0xa0, 0x10, 0xf4, 0x9f, 0x39, 0x88, 0x35, 0x62, 0xcb, 0x19, 0x31, 0x11, 0x51, 0xfb, 0x2a, 0x20,
+ 0x45, 0xd3, 0x7d, 0x92, 0x1b, 0xf2, 0x09, 0x0d, 0x97, 0xa9, 0xb5, 0x3c, 0xee, 0x5c, 0xaf, 0x7b,
+ 0xd2, 0x3a, 0x49, 0x8e, 0xb6, 0xcd, 0xd9, 0xde, 0x8a, 0x29, 0x6e, 0xd8, 0x0b, 0xe1, 0x69, 0x87,
+ 0x1a, 0x96, 0x18, 0xcc, 0xdf, 0xe7, 0xc5, 0xc7, 0xf8, 0x52, 0xc9, 0xf0, 0xb7, 0xe5, 0x33, 0xda,
+ 0x67, 0x9d, 0xa3, 0x03, 0x0e, 0x72, 0x26, 0x79, 0xe2, 0xb8, 0xfc, 0xaa, 0xfe, 0xb4, 0x86, 0xc8,
+ 0xd1, 0xbc, 0x12, 0x08, 0x77, 0xeb, 0x40, 0x8d, 0x04, 0x25, 0x4d, 0x5a, 0x6a, 0x7a, 0x2e, 0x41,
+ 0x65, 0x1c, 0x13, 0x94, 0xb2, 0x63, 0x28, 0x59, 0x5e, 0x9a, 0x30, 0x07, 0xc6, 0xbf, 0x17, 0xf5,
+ 0x0f, 0x89, 0xf3, 0x1f, 0xea, 0x6d, 0xb3, 0xc0, 0x70, 0x47, 0xf9, 0x53, 0xf6, 0xd6, 0x54, 0xed,
+ 0x6b, 0x4c, 0xe4, 0x8b, 0x83, 0x24, 0x90, 0xb1, 0x7c, 0xbb, 0x73, 0xab, 0xd5, 0x2f, 0x5f, 0xec,
+ 0x9c, 0x2c, 0xa8, 0x34, 0x46, 0x37, 0x27, 0xa1, 0x0a, 0x06, 0x80, 0x68, 0x82, 0x32, 0x84, 0xff,
+ 0x48, 0xac, 0x7f, 0x3f, 0x95, 0xdc, 0x98, 0x9b, 0xbe, 0x23, 0x57, 0x3e, 0x5b, 0xd0, 0x3d, 0xa6,
+};
+
+
+static const uint8_t kof2000_type0_t03[256] =
+{
+ 0x10, 0x61, 0xf1, 0x78, 0x85, 0x52, 0x68, 0xe3, 0x12, 0x0d, 0xfa, 0xf0, 0xc9, 0x36, 0x5e, 0x3d,
+ 0xf9, 0xa6, 0x01, 0x2e, 0xc7, 0x84, 0xea, 0x2b, 0x6d, 0x14, 0x38, 0x4f, 0x55, 0x1c, 0x9d, 0xa7,
+ 0x7a, 0xc6, 0xf8, 0x9a, 0xe6, 0x42, 0xb5, 0xed, 0x7d, 0x3a, 0xb1, 0x05, 0x43, 0x4a, 0x22, 0xfd,
+ 0xac, 0xa4, 0x31, 0xc3, 0x32, 0x76, 0x95, 0x9e, 0x7e, 0x88, 0x8e, 0xa2, 0x97, 0x18, 0xbe, 0x2a,
+ 0xf5, 0xd6, 0xca, 0xcc, 0x72, 0x3b, 0x87, 0x6c, 0xde, 0x75, 0xd7, 0x21, 0xcb, 0x0b, 0xdd, 0xe7,
+ 0xe1, 0x65, 0xaa, 0xb9, 0x44, 0xfb, 0x66, 0x15, 0x1a, 0x3c, 0x98, 0xcf, 0x8a, 0xdf, 0x37, 0xa5,
+ 0x2f, 0x67, 0xd2, 0x83, 0xb6, 0x6b, 0xfc, 0xe0, 0xb4, 0x7c, 0x08, 0xdc, 0x93, 0x30, 0xab, 0xe4,
+ 0x19, 0xc2, 0x8b, 0xeb, 0xa0, 0x0a, 0xc8, 0x03, 0xc0, 0x4b, 0x64, 0x71, 0x86, 0x9c, 0x9b, 0x16,
+ 0x79, 0xff, 0x70, 0x09, 0x8c, 0xd0, 0xf6, 0x53, 0x07, 0x73, 0xd4, 0x89, 0xb3, 0x00, 0xe9, 0xfe,
+ 0xec, 0x8f, 0xbc, 0xb2, 0x1e, 0x5d, 0x11, 0x35, 0xa9, 0x06, 0x59, 0x9f, 0xc1, 0xd3, 0x7b, 0xf2,
+ 0xc5, 0x77, 0x4e, 0x39, 0x20, 0xd5, 0x6a, 0x82, 0xda, 0x45, 0xf3, 0x33, 0x81, 0x23, 0xba, 0xe2,
+ 0x1d, 0x5f, 0x5c, 0x51, 0x49, 0xae, 0x8d, 0xc4, 0xa8, 0xf7, 0x1f, 0x0f, 0x34, 0x28, 0xa1, 0xd9,
+ 0x27, 0xd8, 0x4c, 0x2c, 0xbf, 0x91, 0x3e, 0x69, 0x57, 0x41, 0x25, 0x0c, 0x5a, 0x90, 0x92, 0xb0,
+ 0x63, 0x6f, 0x40, 0xaf, 0x74, 0xb8, 0x2d, 0x80, 0xbb, 0x46, 0x94, 0xe5, 0x29, 0xee, 0xb7, 0x1b,
+ 0x96, 0xad, 0x13, 0x0e, 0x58, 0x99, 0x60, 0x4d, 0x17, 0x26, 0xce, 0xe8, 0xdb, 0xef, 0x24, 0xa3,
+ 0x6e, 0x7f, 0x54, 0x3f, 0x02, 0xd1, 0x5b, 0x50, 0x56, 0x48, 0xf4, 0xbd, 0x62, 0x47, 0x04, 0xcd,
+};
+
+
+static const uint8_t kof2000_type0_t12[256] =
+{
+ 0xf4, 0x28, 0xb4, 0x8f, 0xfa, 0xeb, 0x8e, 0x54, 0x2b, 0x49, 0xd1, 0x76, 0x71, 0x47, 0x8b, 0x57,
+ 0x92, 0x85, 0x7c, 0xb8, 0x5c, 0x22, 0xf9, 0x26, 0xbc, 0x5b, 0x6d, 0x67, 0xae, 0x5f, 0x6f, 0xf5,
+ 0x9f, 0x48, 0x66, 0x40, 0x0d, 0x11, 0x4e, 0xb2, 0x6b, 0x35, 0x15, 0x0f, 0x18, 0x25, 0x1d, 0xba,
+ 0xd3, 0x69, 0x79, 0xec, 0xa8, 0x8c, 0xc9, 0x7f, 0x4b, 0xdb, 0x51, 0xaf, 0xca, 0xe2, 0xb3, 0x81,
+ 0x12, 0x5e, 0x7e, 0x38, 0xc8, 0x95, 0x01, 0xff, 0xfd, 0xfb, 0xf2, 0x74, 0x62, 0x14, 0xa5, 0x98,
+ 0xa6, 0xda, 0x80, 0x53, 0xe8, 0x56, 0xac, 0x1b, 0x52, 0xd0, 0xf1, 0x45, 0x42, 0xb6, 0x1a, 0x4a,
+ 0x3a, 0x99, 0xfc, 0xd2, 0x9c, 0xcf, 0x31, 0x2d, 0xdd, 0x86, 0x2f, 0x29, 0xe1, 0x03, 0x19, 0xa2,
+ 0x41, 0x33, 0x83, 0x90, 0xc1, 0xbf, 0x0b, 0x08, 0x3d, 0xd8, 0x8d, 0x6c, 0x39, 0xa0, 0xe3, 0x55,
+ 0x02, 0x50, 0x46, 0xe6, 0xc3, 0x82, 0x36, 0x13, 0x75, 0xab, 0x27, 0xd7, 0x1f, 0x0a, 0xd4, 0x89,
+ 0x59, 0x4f, 0xc0, 0x5d, 0xc6, 0xf7, 0x88, 0xbd, 0x3c, 0x00, 0xef, 0xcd, 0x05, 0x1c, 0xaa, 0x9b,
+ 0xed, 0x7a, 0x61, 0x17, 0x93, 0xfe, 0x23, 0xb9, 0xf3, 0x68, 0x78, 0xf6, 0x5a, 0x7b, 0xe0, 0xe4,
+ 0xa3, 0xee, 0x16, 0x72, 0xc7, 0x3b, 0x8a, 0x37, 0x2a, 0x70, 0xa9, 0x2c, 0x21, 0xf8, 0x24, 0x09,
+ 0xce, 0x20, 0x9e, 0x06, 0x87, 0xc5, 0x04, 0x64, 0x43, 0x7d, 0x4d, 0x10, 0xd6, 0xa4, 0x94, 0x4c,
+ 0x60, 0xde, 0xdf, 0x58, 0xb1, 0x44, 0x3f, 0xb0, 0xd9, 0xe5, 0xcb, 0xbb, 0xbe, 0xea, 0x07, 0x34,
+ 0x73, 0x6a, 0x77, 0xf0, 0x9d, 0x0c, 0x2e, 0x0e, 0x91, 0x9a, 0xcc, 0xc2, 0xb7, 0x63, 0x97, 0xd5,
+ 0xdc, 0xc4, 0x32, 0xe7, 0x84, 0x3e, 0x30, 0xa1, 0x1e, 0xb5, 0x6e, 0x65, 0xe9, 0xad, 0xa7, 0x96,
+};
+
+
+static const uint8_t kof2000_type1_t03[256] =
+{
+ 0x9a, 0x2f, 0xcc, 0x4e, 0x40, 0x69, 0xac, 0xca, 0xa5, 0x7b, 0x0a, 0x61, 0x91, 0x0d, 0x55, 0x74,
+ 0xcd, 0x8b, 0x0b, 0x80, 0x09, 0x5e, 0x38, 0xc7, 0xda, 0xbf, 0xf5, 0x37, 0x23, 0x31, 0x33, 0xe9,
+ 0xae, 0x87, 0xe5, 0xfa, 0x6e, 0x5c, 0xad, 0xf4, 0x76, 0x62, 0x9f, 0x2e, 0x01, 0xe2, 0xf6, 0x47,
+ 0x8c, 0x7c, 0xaa, 0x98, 0xb5, 0x92, 0x51, 0xec, 0x5f, 0x07, 0x5d, 0x6f, 0x16, 0xa1, 0x1d, 0xa9,
+ 0x48, 0x45, 0xf0, 0x6a, 0x9c, 0x1e, 0x11, 0xa0, 0x06, 0x46, 0xd5, 0xf1, 0x73, 0xed, 0x94, 0xf7,
+ 0xc3, 0x57, 0x1b, 0xe0, 0x97, 0xb1, 0xa4, 0xa7, 0x24, 0xe7, 0x2b, 0x05, 0x5b, 0x34, 0x0c, 0xb8,
+ 0x0f, 0x9b, 0xc8, 0x4d, 0x5a, 0xa6, 0x86, 0x3e, 0x14, 0x29, 0x84, 0x58, 0x90, 0xdb, 0x2d, 0x54,
+ 0x9d, 0x82, 0xd4, 0x7d, 0xc6, 0x67, 0x41, 0x89, 0xc1, 0x13, 0xb0, 0x9e, 0x81, 0x6d, 0xa8, 0x59,
+ 0xbd, 0x39, 0x8e, 0xe6, 0x25, 0x8f, 0xd9, 0xa2, 0xe4, 0x53, 0xc5, 0x72, 0x7e, 0x36, 0x4a, 0x4f,
+ 0x52, 0xc2, 0x22, 0x2a, 0xce, 0x3c, 0x21, 0x2c, 0x00, 0xd7, 0x75, 0x8a, 0x27, 0xee, 0x43, 0xfe,
+ 0xcb, 0x6b, 0xb9, 0xa3, 0x78, 0xb7, 0x85, 0x02, 0x20, 0xd0, 0x83, 0xc4, 0x12, 0xf9, 0xfd, 0xd8,
+ 0x79, 0x64, 0x3a, 0x49, 0x03, 0xb4, 0xc0, 0xf2, 0xdf, 0x15, 0x93, 0x08, 0x35, 0xff, 0x70, 0xdd,
+ 0x28, 0x6c, 0x0e, 0x04, 0xde, 0x7a, 0x65, 0xd2, 0xab, 0x42, 0x95, 0xe1, 0x3f, 0x3b, 0x7f, 0x66,
+ 0xd1, 0x8d, 0xe3, 0xbb, 0x1c, 0xfc, 0x77, 0x1a, 0x88, 0x18, 0x19, 0x68, 0x1f, 0x56, 0xd6, 0xe8,
+ 0xb6, 0xbc, 0xd3, 0xea, 0x3d, 0x26, 0xb3, 0xc9, 0x44, 0xdc, 0xf3, 0x32, 0x30, 0xef, 0x96, 0x4c,
+ 0xaf, 0x17, 0xf8, 0xfb, 0x60, 0x50, 0xeb, 0x4b, 0x99, 0x63, 0xba, 0xb2, 0x71, 0xcf, 0x10, 0xbe,
+};
+
+
+static const uint8_t kof2000_type1_t12[256] =
+{
+ 0xda, 0xa7, 0xd6, 0x6e, 0x2f, 0x5e, 0xf0, 0x3f, 0xa4, 0xce, 0xd3, 0xfd, 0x46, 0x2a, 0xac, 0xc9,
+ 0xbe, 0xeb, 0x9f, 0xd5, 0x3c, 0x61, 0x96, 0x11, 0xd0, 0x38, 0xca, 0x06, 0xed, 0x1b, 0x65, 0xe7,
+ 0x23, 0xdd, 0xd9, 0x05, 0xbf, 0x5b, 0x5d, 0xa5, 0x95, 0x00, 0xec, 0xf1, 0x01, 0xa9, 0xa6, 0xfc,
+ 0xbb, 0x54, 0xe3, 0x2e, 0x92, 0x58, 0x0a, 0x7b, 0xb6, 0xcc, 0xb1, 0x5f, 0x14, 0x35, 0x72, 0xff,
+ 0xe6, 0x52, 0xd7, 0x8c, 0xf3, 0x43, 0xaf, 0x9c, 0xc0, 0x4f, 0x0c, 0x42, 0x8e, 0xef, 0x80, 0xcd,
+ 0x1d, 0x7e, 0x88, 0x3b, 0x98, 0xa1, 0xad, 0xe4, 0x9d, 0x8d, 0x2b, 0x56, 0xb5, 0x50, 0xdf, 0x66,
+ 0x6d, 0xd4, 0x60, 0x09, 0xe1, 0xee, 0x4a, 0x47, 0xf9, 0xfe, 0x73, 0x07, 0x89, 0xa8, 0x39, 0xea,
+ 0x82, 0x9e, 0xcf, 0x26, 0xb2, 0x4e, 0xc3, 0x59, 0xf2, 0x3d, 0x9a, 0xb0, 0x69, 0xf7, 0xbc, 0x34,
+ 0xe5, 0x36, 0x22, 0xfb, 0x57, 0x71, 0x99, 0x6c, 0x83, 0x30, 0x55, 0xc2, 0xbd, 0xf4, 0x77, 0xe9,
+ 0x76, 0x97, 0xa0, 0xe0, 0xb9, 0x86, 0x6b, 0xa3, 0x84, 0x67, 0x1a, 0x70, 0x02, 0x5a, 0x41, 0x5c,
+ 0x25, 0x81, 0xaa, 0x28, 0x78, 0x4b, 0xc6, 0x64, 0x53, 0x16, 0x4d, 0x8b, 0x20, 0x93, 0xae, 0x0f,
+ 0x94, 0x2c, 0x3a, 0xc7, 0x62, 0xe8, 0xc4, 0xdb, 0x04, 0xc5, 0xfa, 0x29, 0x48, 0xd1, 0x08, 0x24,
+ 0x0d, 0xe2, 0xd8, 0x10, 0xb4, 0x91, 0x8a, 0x13, 0x0e, 0xdc, 0xd2, 0x79, 0xb8, 0xf8, 0xba, 0x2d,
+ 0xcb, 0xf5, 0x7d, 0x37, 0x51, 0x40, 0x31, 0xa2, 0x0b, 0x18, 0x63, 0x7f, 0xb3, 0xab, 0x9b, 0x87,
+ 0xf6, 0x90, 0xde, 0xc8, 0x27, 0x45, 0x7c, 0x1c, 0x85, 0x68, 0x33, 0x19, 0x03, 0x75, 0x15, 0x7a,
+ 0x1f, 0x49, 0x8f, 0x4c, 0xc1, 0x44, 0x17, 0x12, 0x6f, 0x32, 0xb7, 0x3e, 0x74, 0x1e, 0x21, 0x6a,
+};
+
+
+static const uint8_t kof2000_address_8_15_xor1[256] =
+{
+ 0xfc, 0x9b, 0x1c, 0x35, 0x72, 0x53, 0xd6, 0x7d, 0x84, 0xa4, 0xc5, 0x93, 0x7b, 0xe7, 0x47, 0xd5,
+ 0x24, 0xa2, 0xfa, 0x19, 0x0c, 0xb1, 0x8c, 0xb9, 0x9d, 0xd8, 0x59, 0x4f, 0x3c, 0xb2, 0x78, 0x4a,
+ 0x2a, 0x96, 0x9a, 0xf1, 0x1f, 0x22, 0xa8, 0x5b, 0x67, 0xa3, 0x0f, 0x00, 0xfb, 0xdf, 0xeb, 0x0a,
+ 0x57, 0xb8, 0x25, 0xd7, 0xf0, 0x6b, 0x0b, 0x31, 0x95, 0x23, 0x2d, 0x5c, 0x27, 0xc7, 0xf4, 0x55,
+ 0x1a, 0xf7, 0x74, 0xbe, 0xd3, 0xac, 0x3d, 0xc1, 0x7f, 0xbd, 0x28, 0x01, 0x10, 0xe5, 0x09, 0x37,
+ 0x1e, 0x58, 0xaf, 0x17, 0xf2, 0x16, 0x30, 0x92, 0x36, 0x68, 0xe6, 0xd4, 0xea, 0xb7, 0x75, 0x54,
+ 0x77, 0x41, 0xb4, 0x8d, 0xe0, 0xf3, 0x51, 0x03, 0xa9, 0xe8, 0x66, 0xab, 0x29, 0xa5, 0xed, 0xcb,
+ 0xd1, 0xaa, 0xf5, 0xdb, 0x4c, 0x42, 0x97, 0x8a, 0xae, 0xc9, 0x6e, 0x04, 0x33, 0x85, 0xdd, 0x2b,
+ 0x6f, 0xef, 0x12, 0x21, 0x7a, 0xa1, 0x5a, 0x91, 0xc8, 0xcc, 0xc0, 0xa7, 0x60, 0x3e, 0x56, 0x2f,
+ 0xe4, 0x71, 0x99, 0xc2, 0xa0, 0x45, 0x80, 0x65, 0xbb, 0x87, 0x69, 0x81, 0x73, 0xca, 0xf6, 0x46,
+ 0x43, 0xda, 0x26, 0x7e, 0x8f, 0xe1, 0x8b, 0xfd, 0x50, 0x79, 0xba, 0xc6, 0x63, 0x4b, 0xb3, 0x8e,
+ 0x34, 0xe2, 0x48, 0x14, 0xcd, 0xe3, 0xc4, 0x05, 0x13, 0x40, 0x06, 0x6c, 0x88, 0xb0, 0xe9, 0x1b,
+ 0x4d, 0xf8, 0x76, 0x02, 0x44, 0x94, 0xcf, 0x32, 0xfe, 0xce, 0x3b, 0x5d, 0x2c, 0x89, 0x5f, 0xdc,
+ 0xd2, 0x9c, 0x6a, 0xec, 0x18, 0x6d, 0x0e, 0x86, 0xff, 0x5e, 0x9e, 0xee, 0x11, 0xd0, 0x49, 0x52,
+ 0x4e, 0x61, 0x90, 0x0d, 0xc3, 0x39, 0x15, 0x83, 0xb5, 0x62, 0x3f, 0x70, 0x7c, 0xad, 0x20, 0xbf,
+ 0x2e, 0x08, 0x1d, 0xf9, 0xb6, 0xa6, 0x64, 0x07, 0x82, 0x38, 0x98, 0x3a, 0x9f, 0xde, 0xbc, 0xd9,
+};
+
+
+static const uint8_t kof2000_address_8_15_xor2[256] =
+{
+ 0x00, 0xbe, 0x06, 0x5a, 0xfa, 0x42, 0x15, 0xf2, 0x3f, 0x0a, 0x84, 0x93, 0x4e, 0x78, 0x3b, 0x89,
+ 0x32, 0x98, 0xa2, 0x87, 0x73, 0xdd, 0x26, 0xe5, 0x05, 0x71, 0x08, 0x6e, 0x9b, 0xe0, 0xdf, 0x9e,
+ 0xfc, 0x83, 0x81, 0xef, 0xb2, 0xc0, 0xc3, 0xbf, 0xa7, 0x6d, 0x1b, 0x95, 0xed, 0xb9, 0x3e, 0x13,
+ 0xb0, 0x47, 0x9c, 0x7a, 0x24, 0x41, 0x68, 0xd0, 0x36, 0x0b, 0xb5, 0xc2, 0x67, 0xf7, 0x54, 0x92,
+ 0x1e, 0x44, 0x86, 0x2b, 0x94, 0xcc, 0xba, 0x23, 0x0d, 0xca, 0x6b, 0x4c, 0x2a, 0x9a, 0x2d, 0x8b,
+ 0xe3, 0x52, 0x29, 0xf0, 0x21, 0xbd, 0xbb, 0x1f, 0xa3, 0xab, 0xf8, 0x46, 0xb7, 0x45, 0x82, 0x5e,
+ 0xdb, 0x07, 0x5d, 0xe9, 0x9d, 0x1a, 0x48, 0xce, 0x91, 0x12, 0xd4, 0xee, 0xa9, 0x39, 0xf1, 0x18,
+ 0x2c, 0x22, 0x8a, 0x7e, 0x34, 0x4a, 0x8c, 0xc1, 0x14, 0xf3, 0x20, 0x35, 0xd9, 0x96, 0x33, 0x77,
+ 0x9f, 0x76, 0x7c, 0x90, 0xc6, 0xd5, 0xa1, 0x5b, 0xac, 0x75, 0xc7, 0x0c, 0xb3, 0x17, 0xd6, 0x99,
+ 0x56, 0xa6, 0x3d, 0x1d, 0xb1, 0x2e, 0xd8, 0xbc, 0x2f, 0xde, 0x60, 0x55, 0x6c, 0x40, 0xcd, 0x43,
+ 0xff, 0xad, 0x38, 0x79, 0x51, 0xc8, 0x0e, 0x5f, 0xc4, 0x66, 0xcb, 0xa8, 0x7d, 0xa4, 0x3a, 0xea,
+ 0x27, 0x7b, 0x70, 0x8e, 0x5c, 0x19, 0x0f, 0x80, 0x6f, 0x8f, 0x10, 0xf9, 0x49, 0x85, 0x69, 0x7f,
+ 0xeb, 0x1c, 0x01, 0x65, 0x37, 0xa5, 0x28, 0xe4, 0x6a, 0x03, 0x04, 0xd1, 0x31, 0x11, 0x30, 0xfb,
+ 0x88, 0x97, 0xd3, 0xf6, 0xc5, 0x4d, 0xf5, 0x3c, 0xe8, 0x61, 0xdc, 0xd2, 0xb4, 0xb8, 0xa0, 0xae,
+ 0x16, 0x25, 0x02, 0x09, 0xfe, 0xcf, 0x53, 0x63, 0xaf, 0x59, 0xf4, 0xe1, 0xec, 0xd7, 0xe7, 0x50,
+ 0xe2, 0xc9, 0xaa, 0x4b, 0x8d, 0x4f, 0xe6, 0x64, 0xda, 0x74, 0xb6, 0x72, 0x57, 0x62, 0xfd, 0x58,
+};
+
+
+static const uint8_t kof2000_address_16_23_xor1[256] =
+{
+ 0x45, 0x9f, 0x6e, 0x2f, 0x28, 0xbc, 0x5e, 0x6d, 0xda, 0xb5, 0x0d, 0xb8, 0xc0, 0x8e, 0xa2, 0x32,
+ 0xee, 0xcd, 0x8d, 0x48, 0x8c, 0x27, 0x14, 0xeb, 0x65, 0xd7, 0xf2, 0x93, 0x99, 0x90, 0x91, 0xfc,
+ 0x5f, 0xcb, 0xfa, 0x75, 0x3f, 0x26, 0xde, 0x72, 0x33, 0x39, 0xc7, 0x1f, 0x88, 0x79, 0x73, 0xab,
+ 0x4e, 0x36, 0x5d, 0x44, 0xd2, 0x41, 0xa0, 0x7e, 0xa7, 0x8b, 0xa6, 0xbf, 0x03, 0xd8, 0x86, 0xdc,
+ 0x2c, 0xaa, 0x70, 0x3d, 0x46, 0x07, 0x80, 0x58, 0x0b, 0x2b, 0xe2, 0xf0, 0xb1, 0xfe, 0x42, 0xf3,
+ 0xe9, 0xa3, 0x85, 0x78, 0xc3, 0xd0, 0x5a, 0xdb, 0x1a, 0xfb, 0x9d, 0x8a, 0xa5, 0x12, 0x0e, 0x54,
+ 0x8f, 0xc5, 0x6c, 0xae, 0x25, 0x5b, 0x4b, 0x17, 0x02, 0x9c, 0x4a, 0x24, 0x40, 0xe5, 0x9e, 0x22,
+ 0xc6, 0x49, 0x62, 0xb6, 0x6b, 0xbb, 0xa8, 0xcc, 0xe8, 0x81, 0x50, 0x47, 0xc8, 0xbe, 0x5c, 0xa4,
+ 0xd6, 0x94, 0x4f, 0x7b, 0x9a, 0xcf, 0xe4, 0x59, 0x7a, 0xa1, 0xea, 0x31, 0x37, 0x13, 0x2d, 0xaf,
+ 0x21, 0x69, 0x19, 0x1d, 0x6f, 0x16, 0x98, 0x1e, 0x08, 0xe3, 0xb2, 0x4d, 0x9b, 0x7f, 0xa9, 0x77,
+ 0xed, 0xbd, 0xd4, 0xd9, 0x34, 0xd3, 0xca, 0x09, 0x18, 0x60, 0xc9, 0x6a, 0x01, 0xf4, 0xf6, 0x64,
+ 0xb4, 0x3a, 0x15, 0xac, 0x89, 0x52, 0x68, 0x71, 0xe7, 0x82, 0xc1, 0x0c, 0x92, 0xf7, 0x30, 0xe6,
+ 0x1c, 0x3e, 0x0f, 0x0a, 0x67, 0x35, 0xba, 0x61, 0xdd, 0x29, 0xc2, 0xf8, 0x97, 0x95, 0xb7, 0x3b,
+ 0xe0, 0xce, 0xf9, 0xd5, 0x06, 0x76, 0xb3, 0x05, 0x4c, 0x04, 0x84, 0x3c, 0x87, 0x23, 0x63, 0x7c,
+ 0x53, 0x56, 0xe1, 0x7d, 0x96, 0x1b, 0xd1, 0xec, 0x2a, 0x66, 0xf1, 0x11, 0x10, 0xff, 0x43, 0x2e,
+ 0xdf, 0x83, 0x74, 0xf5, 0x38, 0x20, 0xfd, 0xad, 0xc4, 0xb9, 0x55, 0x51, 0xb0, 0xef, 0x00, 0x57,
+};
+
+
+static const uint8_t kof2000_address_16_23_xor2[256] =
+{
+ 0x00, 0xb8, 0xf0, 0x34, 0xca, 0x21, 0x3c, 0xf9, 0x01, 0x8e, 0x75, 0x70, 0xec, 0x13, 0x27, 0x96,
+ 0xf4, 0x5b, 0x88, 0x1f, 0xeb, 0x4a, 0x7d, 0x9d, 0xbe, 0x02, 0x14, 0xaf, 0xa2, 0x06, 0xc6, 0xdb,
+ 0x35, 0x6b, 0x74, 0x45, 0x7b, 0x29, 0xd2, 0xfe, 0xb6, 0x15, 0xd0, 0x8a, 0xa9, 0x2d, 0x19, 0xf6,
+ 0x5e, 0x5a, 0x90, 0xe9, 0x11, 0x33, 0xc2, 0x47, 0x37, 0x4c, 0x4f, 0x59, 0xc3, 0x04, 0x57, 0x1d,
+ 0xf2, 0x63, 0x6d, 0x6e, 0x31, 0x95, 0xcb, 0x3e, 0x67, 0xb2, 0xe3, 0x98, 0xed, 0x8d, 0xe6, 0xfb,
+ 0xf8, 0xba, 0x5d, 0xd4, 0x2a, 0xf5, 0x3b, 0x82, 0x05, 0x16, 0x44, 0xef, 0x4d, 0xe7, 0x93, 0xda,
+ 0x9f, 0xbb, 0x61, 0xc9, 0x53, 0xbd, 0x76, 0x78, 0x52, 0x36, 0x0c, 0x66, 0xc1, 0x10, 0xdd, 0x7a,
+ 0x84, 0x69, 0xcd, 0xfd, 0x58, 0x0d, 0x6c, 0x89, 0x68, 0xad, 0x3a, 0xb0, 0x4b, 0x46, 0xc5, 0x03,
+ 0xb4, 0xf7, 0x30, 0x8c, 0x4e, 0x60, 0x73, 0xa1, 0x8b, 0xb1, 0x62, 0xcc, 0xd1, 0x08, 0xfc, 0x77,
+ 0x7e, 0xcf, 0x56, 0x51, 0x07, 0xa6, 0x80, 0x92, 0xdc, 0x0b, 0xa4, 0xc7, 0xe8, 0xe1, 0xb5, 0x71,
+ 0xea, 0xb3, 0x2f, 0x94, 0x18, 0xe2, 0x3d, 0x49, 0x65, 0xaa, 0xf1, 0x91, 0xc8, 0x99, 0x55, 0x79,
+ 0x86, 0xa7, 0x26, 0xa0, 0xac, 0x5f, 0xce, 0x6a, 0x5c, 0xf3, 0x87, 0x8f, 0x12, 0x1c, 0xd8, 0xe4,
+ 0x9b, 0x64, 0x2e, 0x1e, 0xd7, 0xc0, 0x17, 0xbc, 0xa3, 0xa8, 0x9a, 0x0e, 0x25, 0x40, 0x41, 0x50,
+ 0xb9, 0xbf, 0x28, 0xdf, 0x32, 0x54, 0x9e, 0x48, 0xd5, 0x2b, 0x42, 0xfa, 0x9c, 0x7f, 0xd3, 0x85,
+ 0x43, 0xde, 0x81, 0x0f, 0x24, 0xc4, 0x38, 0xae, 0x83, 0x1b, 0x6f, 0x7c, 0xe5, 0xff, 0x1a, 0xd9,
+ 0x3f, 0xb7, 0x22, 0x97, 0x09, 0xe0, 0xa5, 0x20, 0x23, 0x2c, 0x72, 0xd6, 0x39, 0xab, 0x0a, 0xee,
+};
+
+
+static const uint8_t kof2000_address_0_7_xor[256] =
+{
+ 0x26, 0x48, 0x06, 0x9b, 0x21, 0xa9, 0x1b, 0x76, 0xc9, 0xf8, 0xb4, 0x67, 0xe4, 0xff, 0x99, 0xf7,
+ 0x15, 0x9e, 0x62, 0x00, 0x72, 0x4d, 0xa0, 0x4f, 0x02, 0xf1, 0xea, 0xef, 0x0b, 0xf3, 0xeb, 0xa6,
+ 0x93, 0x78, 0x6f, 0x7c, 0xda, 0xd4, 0x7b, 0x05, 0xe9, 0xc6, 0xd6, 0xdb, 0x50, 0xce, 0xd2, 0x01,
+ 0xb5, 0xe8, 0xe0, 0x2a, 0x08, 0x1a, 0xb8, 0xe3, 0xf9, 0xb1, 0xf4, 0x8b, 0x39, 0x2d, 0x85, 0x9c,
+ 0x55, 0x73, 0x63, 0x40, 0x38, 0x96, 0xdc, 0xa3, 0xa2, 0xa1, 0x25, 0x66, 0x6d, 0x56, 0x8e, 0x10,
+ 0x0f, 0x31, 0x1c, 0xf5, 0x28, 0x77, 0x0a, 0xd1, 0x75, 0x34, 0xa4, 0xfe, 0x7d, 0x07, 0x51, 0x79,
+ 0x41, 0x90, 0x22, 0x35, 0x12, 0xbb, 0xc4, 0xca, 0xb2, 0x1f, 0xcb, 0xc8, 0xac, 0xdd, 0xd0, 0x0d,
+ 0xfc, 0xc5, 0x9d, 0x14, 0xbc, 0x83, 0xd9, 0x58, 0xc2, 0x30, 0x9a, 0x6a, 0xc0, 0x0c, 0xad, 0xf6,
+ 0x5d, 0x74, 0x7f, 0x2f, 0xbd, 0x1d, 0x47, 0xd5, 0xe6, 0x89, 0xcf, 0xb7, 0xd3, 0x59, 0x36, 0x98,
+ 0xf0, 0xfb, 0x3c, 0xf2, 0x3f, 0xa7, 0x18, 0x82, 0x42, 0x5c, 0xab, 0xba, 0xde, 0x52, 0x09, 0x91,
+ 0xaa, 0x61, 0xec, 0xd7, 0x95, 0x23, 0xcd, 0x80, 0xa5, 0x68, 0x60, 0x27, 0x71, 0xe1, 0x2c, 0x2e,
+ 0x8d, 0x2b, 0x57, 0x65, 0xbf, 0xc1, 0x19, 0xc7, 0x49, 0x64, 0x88, 0x4a, 0xcc, 0x20, 0x4e, 0xd8,
+ 0x3b, 0x4c, 0x13, 0x5f, 0x9f, 0xbe, 0x5e, 0x6e, 0xfd, 0xe2, 0xfa, 0x54, 0x37, 0x0e, 0x16, 0x7a,
+ 0x6c, 0x33, 0xb3, 0x70, 0x84, 0x7e, 0xc3, 0x04, 0xb0, 0xae, 0xb9, 0x81, 0x03, 0x29, 0xdf, 0x46,
+ 0xe5, 0x69, 0xe7, 0x24, 0x92, 0x5a, 0x4b, 0x5b, 0x94, 0x11, 0x3a, 0x3d, 0x87, 0xed, 0x97, 0xb6,
+ 0x32, 0x3e, 0x45, 0xaf, 0x1e, 0x43, 0x44, 0x8c, 0x53, 0x86, 0x6b, 0xee, 0xa8, 0x8a, 0x8f, 0x17,
+};
+
+
+
+void cmc_prot_device::decrypt(uint8_t *r0, uint8_t *r1, uint8_t c0, uint8_t c1, const uint8_t *table0hi, const uint8_t *table0lo, const uint8_t *table1, int base, int invert)
+{
+ uint8_t tmp,xor0,xor1;
+
+ tmp = table1[(base & 0xff) ^ address_0_7_xor[(base >> 8) & 0xff]];
+ xor0 = (table0hi[(base >> 8) & 0xff] & 0xfe) | (tmp & 0x01);
+ xor1 = (tmp & 0xfe) | (table0lo[(base >> 8) & 0xff] & 0x01);
+
+ if (invert)
+ {
+ *r0 = c1 ^ xor0;
+ *r1 = c0 ^ xor1;
+ }
+ else
+ {
+ *r0 = c0 ^ xor0;
+ *r1 = c1 ^ xor1;
+ }
+}
+
+
+void cmc_prot_device::neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor)
+{
+ int rpos;
+ std::vector<uint8_t> buf(rom_size);
+
+ // Data xor
+ for (rpos = 0;rpos < rom_size/4;rpos++)
+ {
+ decrypt(&buf[4*rpos+0], &buf[4*rpos+3], rom[4*rpos+0], rom[4*rpos+3], type0_t03, type0_t12, type1_t03, rpos, (rpos>>8) & 1);
+ decrypt(&buf[4*rpos+1], &buf[4*rpos+2], rom[4*rpos+1], rom[4*rpos+2], type0_t12, type0_t03, type1_t12, rpos, ((rpos>>16) ^ address_16_23_xor2[(rpos>>8) & 0xff]) & 1);
+ }
+
+ // Address xor
+ for (rpos = 0;rpos < rom_size/4;rpos++)
+ {
+ int baser = rpos ^ extra_xor;
+ baser ^= address_8_15_xor1[(baser >> 16) & 0xff] << 8;
+ baser ^= address_8_15_xor2[baser & 0xff] << 8;
+ baser ^= address_16_23_xor1[baser & 0xff] << 16;
+ baser ^= address_16_23_xor2[(baser >> 8) & 0xff] << 16;
+ baser ^= address_0_7_xor[(baser >> 8) & 0xff];
+
+ if (rom_size == 0x3000000) /* special handling for preisle2 */
+ {
+ if (rpos < 0x2000000/4)
+ baser &= (0x2000000/4)-1;
+ else
+ baser = 0x2000000/4 + (baser & ((0x1000000/4)-1));
+ }
+ else if (rom_size == 0x6000000) /* special handling for kf2k3pcb */
+ {
+ if (rpos < 0x4000000/4)
+ baser &= (0x4000000/4)-1;
+ else
+ baser = 0x4000000/4 + (baser & ((0x1000000/4)-1));
+ }
+ else /* Clamp to the real rom size */
+ baser &= (rom_size/4)-1;
+
+ rom[4*rpos+0] = buf[4*baser+0];
+ rom[4*rpos+1] = buf[4*baser+1];
+ rom[4*rpos+2] = buf[4*baser+2];
+ rom[4*rpos+3] = buf[4*baser+3];
+ }
+}
+
+
+/* the S data comes from the end of the C data */
+void cmc_prot_device::neogeo_sfix_decrypt(uint8_t* rom, uint32_t rom_size, uint8_t* fixed, uint32_t fixed_size)
+{
+ int i;
+ int tx_size = fixed_size;
+ uint8_t *src = rom+rom_size-tx_size;
+ uint8_t *dst = fixed;
+
+ for (i = 0;i < tx_size;i++)
+ dst[i] = src[(i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
+}
+
+
+/* CMC42 protection chip */
+void cmc_prot_device::cmc42_neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor)
+{
+ type0_t03 = kof99_type0_t03;
+ type0_t12 = kof99_type0_t12;
+ type1_t03 = kof99_type1_t03;
+ type1_t12 = kof99_type1_t12;
+ address_8_15_xor1 = kof99_address_8_15_xor1;
+ address_8_15_xor2 = kof99_address_8_15_xor2;
+ address_16_23_xor1 = kof99_address_16_23_xor1;
+ address_16_23_xor2 = kof99_address_16_23_xor2;
+ address_0_7_xor = kof99_address_0_7_xor;
+ neogeo_gfx_decrypt(rom, rom_size, extra_xor);
+}
+
+
+/* CMC50 protection chip */
+void cmc_prot_device::cmc50_neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor)
+{
+ type0_t03 = kof2000_type0_t03;
+ type0_t12 = kof2000_type0_t12;
+ type1_t03 = kof2000_type1_t03;
+ type1_t12 = kof2000_type1_t12;
+ address_8_15_xor1 = kof2000_address_8_15_xor1;
+ address_8_15_xor2 = kof2000_address_8_15_xor2;
+ address_16_23_xor1 = kof2000_address_16_23_xor1;
+ address_16_23_xor2 = kof2000_address_16_23_xor2;
+ address_0_7_xor = kof2000_address_0_7_xor;
+ neogeo_gfx_decrypt(rom, rom_size, extra_xor);
+}
+
+
+
+/***************************************************************************
+
+NeoGeo 'M' ROM encryption
+ CMC50 protection chip
+
+***************************************************************************/
+
+
+static const uint8_t m1_address_8_15_xor[256] =
+{
+ 0x0a, 0x72, 0xb7, 0xaf, 0x67, 0xde, 0x1d, 0xb1, 0x78, 0xc4, 0x4f, 0xb5, 0x4b, 0x18, 0x76, 0xdd,
+ 0x11, 0xe2, 0x36, 0xa1, 0x82, 0x03, 0x98, 0xa0, 0x10, 0x5f, 0x3f, 0xd6, 0x1f, 0x90, 0x6a, 0x0b,
+ 0x70, 0xe0, 0x64, 0xcb, 0x9f, 0x38, 0x8b, 0x53, 0x04, 0xca, 0xf8, 0xd0, 0x07, 0x68, 0x56, 0x32,
+ 0xae, 0x1c, 0x2e, 0x48, 0x63, 0x92, 0x9a, 0x9c, 0x44, 0x85, 0x41, 0x40, 0x09, 0xc0, 0xc8, 0xbf,
+ 0xea, 0xbb, 0xf7, 0x2d, 0x99, 0x21, 0xf6, 0xba, 0x15, 0xce, 0xab, 0xb0, 0x2a, 0x60, 0xbc, 0xf1,
+ 0xf0, 0x9e, 0xd5, 0x97, 0xd8, 0x4e, 0x14, 0x9d, 0x42, 0x4d, 0x2c, 0x5c, 0x2b, 0xa6, 0xe1, 0xa7,
+ 0xef, 0x25, 0x33, 0x7a, 0xeb, 0xe7, 0x1b, 0x6d, 0x4c, 0x52, 0x26, 0x62, 0xb6, 0x35, 0xbe, 0x80,
+ 0x01, 0xbd, 0xfd, 0x37, 0xf9, 0x47, 0x55, 0x71, 0xb4, 0xf2, 0xff, 0x27, 0xfa, 0x23, 0xc9, 0x83,
+ 0x17, 0x39, 0x13, 0x0d, 0xc7, 0x86, 0x16, 0xec, 0x49, 0x6f, 0xfe, 0x34, 0x05, 0x8f, 0x00, 0xe6,
+ 0xa4, 0xda, 0x7b, 0xc1, 0xf3, 0xf4, 0xd9, 0x75, 0x28, 0x66, 0x87, 0xa8, 0x45, 0x6c, 0x20, 0xe9,
+ 0x77, 0x93, 0x7e, 0x3c, 0x1e, 0x74, 0xf5, 0x8c, 0x3e, 0x94, 0xd4, 0xc2, 0x5a, 0x06, 0x0e, 0xe8,
+ 0x3d, 0xa9, 0xb2, 0xe3, 0xe4, 0x22, 0xcf, 0x24, 0x8e, 0x6b, 0x8a, 0x8d, 0x84, 0x4a, 0xd2, 0x91,
+ 0x88, 0x79, 0x57, 0xa5, 0x0f, 0xcd, 0xb9, 0xac, 0x3b, 0xaa, 0xb3, 0xd1, 0xee, 0x31, 0x81, 0x7c,
+ 0xd7, 0x89, 0xd3, 0x96, 0x43, 0xc5, 0xc6, 0xc3, 0x69, 0x7f, 0x46, 0xdf, 0x30, 0x5b, 0x6e, 0xe5,
+ 0x08, 0x95, 0x9b, 0xfb, 0xb8, 0x58, 0x0c, 0x61, 0x50, 0x5d, 0x3a, 0xa2, 0x29, 0x12, 0xfc, 0x51,
+ 0x7d, 0x1a, 0x02, 0x65, 0x54, 0x5e, 0x19, 0xcc, 0xdc, 0xdb, 0x73, 0xed, 0xad, 0x59, 0x2f, 0xa3,
+};
+
+static const uint8_t m1_address_0_7_xor[256] =
+{
+ 0xf4, 0xbc, 0x02, 0xf7, 0x2c, 0x3d, 0xe8, 0xd9, 0x50, 0x62, 0xec, 0xbd, 0x53, 0x73, 0x79, 0x61,
+ 0x00, 0x34, 0xcf, 0xa2, 0x63, 0x28, 0x90, 0xaf, 0x44, 0x3b, 0xc5, 0x8d, 0x3a, 0x46, 0x07, 0x70,
+ 0x66, 0xbe, 0xd8, 0x8b, 0xe9, 0xa0, 0x4b, 0x98, 0xdc, 0xdf, 0xe2, 0x16, 0x74, 0xf1, 0x37, 0xf5,
+ 0xb7, 0x21, 0x81, 0x01, 0x1c, 0x1b, 0x94, 0x36, 0x09, 0xa1, 0x4a, 0x91, 0x30, 0x92, 0x9b, 0x9a,
+ 0x29, 0xb1, 0x38, 0x4d, 0x55, 0xf2, 0x56, 0x18, 0x24, 0x47, 0x9d, 0x3f, 0x80, 0x1f, 0x22, 0xa4,
+ 0x11, 0x54, 0x84, 0x0d, 0x25, 0x48, 0xee, 0xc6, 0x59, 0x15, 0x03, 0x7a, 0xfd, 0x6c, 0xc3, 0x33,
+ 0x5b, 0xc4, 0x7b, 0x5a, 0x05, 0x7f, 0xa6, 0x40, 0xa9, 0x5d, 0x41, 0x8a, 0x96, 0x52, 0xd3, 0xf0,
+ 0xab, 0x72, 0x10, 0x88, 0x6f, 0x95, 0x7c, 0xa8, 0xcd, 0x9c, 0x5f, 0x32, 0xae, 0x85, 0x39, 0xac,
+ 0xe5, 0xd7, 0xfb, 0xd4, 0x08, 0x23, 0x19, 0x65, 0x6b, 0xa7, 0x93, 0xbb, 0x2b, 0xbf, 0xb8, 0x35,
+ 0xd0, 0x06, 0x26, 0x68, 0x3e, 0xdd, 0xb9, 0x69, 0x2a, 0xb2, 0xde, 0x87, 0x45, 0x58, 0xff, 0x3c,
+ 0x9e, 0x7d, 0xda, 0xed, 0x49, 0x8c, 0x14, 0x8e, 0x75, 0x2f, 0xe0, 0x6e, 0x78, 0x6d, 0x20, 0xd2,
+ 0xfa, 0x2d, 0x51, 0xcc, 0xc7, 0xe7, 0x1d, 0x27, 0x97, 0xfc, 0x31, 0xdb, 0xf8, 0x42, 0xe3, 0x99,
+ 0x5e, 0x83, 0x0e, 0xb4, 0x2e, 0xf6, 0xc0, 0x0c, 0x4c, 0x57, 0xb6, 0x64, 0x0a, 0x17, 0xa3, 0xc1,
+ 0x77, 0x12, 0xfe, 0xe6, 0x8f, 0x13, 0x71, 0xe4, 0xf9, 0xad, 0x9f, 0xce, 0xd5, 0x89, 0x7e, 0x0f,
+ 0xc2, 0x86, 0xf3, 0x67, 0xba, 0x60, 0x43, 0xc9, 0x04, 0xb3, 0xb0, 0x1e, 0xb5, 0xc8, 0xeb, 0xa5,
+ 0x76, 0xea, 0x5c, 0x82, 0x1a, 0x4f, 0xaa, 0xca, 0xe1, 0x0b, 0x4e, 0xcb, 0x6a, 0xef, 0xd1, 0xd6,
+};
+
+
+/* The CMC50 hardware does a checksum of the first 64kb of the M1 rom,
+ ,and uses this checksum as the basis of the key with which to decrypt
+ the rom */
+
+uint16_t cmc_prot_device::generate_cs16(uint8_t *rom, int size)
+{
+ uint16_t cs16 = 0;
+ for (int i=0; i<size; i++ )
+ cs16 += rom[i];
+
+ return cs16;
+}
+
+
+int cmc_prot_device::m1_address_scramble(int address, uint16_t key)
+{
+ const int p1[8][16] = {
+ {15,14,10,7,1,2,3,8,0,12,11,13,6,9,5,4},
+ {7,1,8,11,15,9,2,3,5,13,4,14,10,0,6,12},
+ {8,6,14,3,10,7,15,1,4,0,2,5,13,11,12,9},
+ {2,8,15,9,3,4,11,7,13,6,0,10,1,12,14,5},
+ {1,13,6,15,14,3,8,10,9,4,7,12,5,2,0,11},
+ {11,15,3,4,7,0,9,2,6,14,12,1,8,5,10,13},
+ {10,5,13,8,6,15,1,14,11,9,3,0,12,7,4,2},
+ {9,3,7,0,2,12,4,11,14,10,5,8,15,13,1,6},
+ };
+
+ int block = (address>>16)&7;
+ int aux = address&0xffff;
+
+ aux ^= BITSWAP16(key,12,0,2,4,8,15,7,13,10,1,3,6,11,9,14,5);
+ aux = BITSWAP16(aux,
+ p1[block][15],p1[block][14],p1[block][13],p1[block][12],
+ p1[block][11],p1[block][10],p1[block][9],p1[block][8],
+ p1[block][7],p1[block][6],p1[block][5],p1[block][4],
+ p1[block][3],p1[block][2],p1[block][1],p1[block][0]);
+ aux ^= m1_address_0_7_xor[(aux>>8)&0xff];
+ aux ^= m1_address_8_15_xor[aux&0xff]<<8;
+ aux = BITSWAP16(aux, 7,15,14,6,5,13,12,4,11,3,10,2,9,1,8,0);
+
+ return (block<<16)|aux;
+}
+
+
+void cmc_prot_device::neogeo_cmc50_m1_decrypt(uint8_t* romcrypt, uint32_t romcrypt_size, uint8_t* romaudio, uint32_t romaudio_size)
+{
+ uint8_t* rom = romcrypt;
+ size_t rom_size = 0x80000;
+ uint8_t* rom2 = romaudio;
+
+ std::vector<uint8_t> buffer(rom_size);
+
+ uint32_t i;
+
+ uint16_t key=generate_cs16(rom,0x10000);
+
+ //printf("key %04x\n",key);
+
+ for (i=0; i<rom_size; i++)
+ buffer[i] = rom[m1_address_scramble(i, key)];
+
+ memcpy(rom,&buffer[0],rom_size);
+ memcpy(rom2,rom,0x10000);
+ memcpy(rom2+0x10000,rom,0x80000);
+
+#if 0
+ {
+ FILE *fp;
+ const char *gamename = machine().system().name;
+ char filename[256];
+ sprintf(filename, "%s_m1.dump", gamename);
+
+ fp=fopen(filename, "w+b");
+ if (fp)
+ {
+ fwrite(rom, rom_size, 1, fp);
+ fclose(fp);
+ }
+ }
+#endif
+
+
+#if 0
+ {
+ FILE *fp;
+ const char *gamename = machine().system().name;
+ char filename[256];
+ sprintf(filename, "%s_m1extra.dump", gamename);
+
+ fp=fopen(filename, "w+b");
+ if (fp)
+ {
+ fwrite(&rom[0xf800], 0x800, 1, fp);
+ fclose(fp);
+ }
+ }
+#endif
+}
+
+/***********************************************************************************************************************************/
+
+const device_type FATFURY2_PROT = device_creator<fatfury2_prot_device>;
+
+
+fatfury2_prot_device::fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, FATFURY2_PROT, "NeoGeo Protection (Fatal Fury 2)", tag, owner, clock, "fatfury2_prot", __FILE__)
+ , m_bankdev(nullptr)
+ , m_fatfury2_prot_data(0)
+ { }
+
+
+void fatfury2_prot_device::device_start()
+{
+ save_item(NAME(m_fatfury2_prot_data));
+}
+
+void fatfury2_prot_device::device_reset() { }
+
+
+
+/************************ Fatal Fury 2 *************************/
+
+READ16_MEMBER( fatfury2_prot_device::fatfury2_protection_16_r )
+{
+ uint16_t res = m_fatfury2_prot_data >> 24;
+
+ switch (offset)
+ {
+ case 0x55550/2:
+ case 0xffff0/2:
+ case 0x00000/2:
+ case 0xff000/2:
+ case 0x36000/2:
+ case 0x36008/2:
+ return res;
+
+ case 0x36004/2:
+ case 0x3600c/2:
+ return ((res & 0xf0) >> 4) | ((res & 0x0f) << 4);
+
+ default:
+ logerror("unknown protection read at pc %06x, offset %08x\n", space.device().safe_pc(), offset << 1);
+ return 0;
+ }
+}
+
+
+WRITE16_MEMBER( fatfury2_prot_device::fatfury2_protection_16_w )
+{
+ switch (offset)
+ {
+ case 0x11112/2: /* data == 0x1111; expects 0xff000000 back */
+ m_fatfury2_prot_data = 0xff000000;
+ break;
+
+ case 0x33332/2: /* data == 0x3333; expects 0x0000ffff back */
+ m_fatfury2_prot_data = 0x0000ffff;
+ break;
+
+ case 0x44442/2: /* data == 0x4444; expects 0x00ff0000 back */
+ m_fatfury2_prot_data = 0x00ff0000;
+ break;
+
+ case 0x55552/2: /* data == 0x5555; read back from 55550, ffff0, 00000, ff000 */
+ m_fatfury2_prot_data = 0xff00ff00;
+ break;
+
+ case 0x56782/2: /* data == 0x1234; read back from 36000 *or* 36004 */
+ m_fatfury2_prot_data = 0xf05a3601;
+ break;
+
+ case 0x42812/2: /* data == 0x1824; read back from 36008 *or* 3600c */
+ m_fatfury2_prot_data = 0x81422418;
+ break;
+
+ case 0x55550/2:
+ case 0xffff0/2:
+ case 0xff000/2:
+ case 0x36000/2:
+ case 0x36004/2:
+ case 0x36008/2:
+ case 0x3600c/2:
+ m_fatfury2_prot_data <<= 8;
+ break;
+
+ default:
+ logerror("unknown protection write at pc %06x, offset %08x, data %02x\n", space.device().safe_pc(), offset, data);
+ break;
+ }
+}
+
+
+void fatfury2_prot_device::fatfury2_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ /* the protection involves reading and writing addresses in the */
+ /* 0x2xxxxx range. There are several checks all around the code. */
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2fffff,
+ read16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_r),this),
+ write16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_w),this));
+
+ m_bankdev = bankdev;
+ m_fatfury2_prot_data = 0;
+
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type KOF2002_PROT = device_creator<kof2002_prot_device>;
+
+
+kof2002_prot_device::kof2002_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, KOF2002_PROT, "NeoGeo Protection (KOF2002)", tag, owner, clock, "kof2002_prot", __FILE__)
+ { }
+
+
+void kof2002_prot_device::device_start() { }
+
+void kof2002_prot_device::device_reset() { }
+
+
+/* kof2002, matrim, samsho5, samsh5sp have some simple block swapping */
+void kof2002_prot_device::kof2002_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000};
+ uint8_t *src = cpurom+0x100000;
+ std::vector<uint8_t> dst(0x400000);
+ memcpy( &dst[0], src, 0x400000 );
+ for( uint8_t i=0; i<8; ++i )
+ memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 );
+}
+
+
+void kof2002_prot_device::matrim_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000};
+ uint8_t *src = cpurom+0x100000;
+ std::vector<uint8_t> dst(0x400000);
+ memcpy( &dst[0], src, 0x400000);
+ for( uint8_t i=0; i<8; ++i )
+ memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 );
+}
+
+
+void kof2002_prot_device::samsho5_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[]={0x000000,0x080000,0x700000,0x680000,0x500000,0x180000,0x200000,0x480000,0x300000,0x780000,0x600000,0x280000,0x100000,0x580000,0x400000,0x380000};
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst(0x800000);
+ memcpy( &dst[0], src, 0x800000 );
+ for( uint8_t i=0; i<16; ++i )
+ memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 );
+}
+
+
+void kof2002_prot_device::samsh5sp_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ static const int sec[]={0x000000,0x080000,0x500000,0x480000,0x600000,0x580000,0x700000,0x280000,0x100000,0x680000,0x400000,0x780000,0x200000,0x380000,0x300000,0x180000};
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst(0x800000);
+ memcpy( &dst[0], src, 0x800000 );
+ for( uint8_t i=0; i<16; ++i )
+ memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 );
+}
+
+/***********************************************************************************************************************************/
+
+const device_type KOF98_PROT = device_creator<kof98_prot_device>;
+
+
+kof98_prot_device::kof98_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, KOF98_PROT, "NeoGeo Protection (KOF98)", tag, owner, clock, "kof98_prot", __FILE__)
+ , kof98_prot_state(0)
+ { }
+
+
+void kof98_prot_device::device_start() { }
+
+void kof98_prot_device::device_reset()
+{
+ kof98_prot_state = 0;
+}
+
+
+/* Kof98 uses an early encryption, quite different from the others */
+void kof98_prot_device::kof98_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size)
+{
+ uint8_t *src = cpurom;
+ std::vector<uint8_t> dst(0x200000);
+ int i, j, k;
+ static const uint32_t sec[]={0x000000,0x100000,0x000004,0x100004,0x10000a,0x00000a,0x10000e,0x00000e};
+ static const uint32_t pos[]={0x000,0x004,0x00a,0x00e};
+
+ memcpy( &dst[0], src, 0x200000);
+ for( i=0x800; i<0x100000; i+=0x200 )
+ {
+ for( j=0; j<0x100; j+=0x10 )
+ {
+ for( k=0; k<16; k+=2)
+ {
+ memcpy( &src[i+j+k], &dst[ i+j+sec[k/2]+0x100 ], 2 );
+ memcpy( &src[i+j+k+0x100], &dst[ i+j+sec[k/2] ], 2 );
+ }
+ if( i >= 0x080000 && i < 0x0c0000)
+ {
+ for( k=0; k<4; k++ )
+ {
+ memcpy( &src[i+j+pos[k]], &dst[i+j+pos[k]], 2 );
+ memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]+0x100], 2 );
+ }
+ }
+ else if( i >= 0x0c0000 )
+ {
+ for( k=0; k<4; k++ )
+ {
+ memcpy( &src[i+j+pos[k]], &dst[i+j+pos[k]+0x100], 2 );
+ memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]], 2 );
+ }
+ }
+ }
+ memcpy( &src[i+0x000000], &dst[i+0x000000], 2 );
+ memcpy( &src[i+0x000002], &dst[i+0x100000], 2 );
+ memcpy( &src[i+0x000100], &dst[i+0x000100], 2 );
+ memcpy( &src[i+0x000102], &dst[i+0x100100], 2 );
+ }
+ memmove( &src[0x100000], &src[0x200000], 0x400000 );
+
+ uint16_t* mem16 = (uint16_t*)cpurom;
+ m_default_rom[0] = mem16[0x100 / 2];
+ m_default_rom[1] = mem16[0x102 / 2];
+}
+
+
+/************************ King of Fighters 98*******************
+ The encrypted set has a rom overlay feature, checked at
+ various points in the game.
+ Boards used: NEO-MVS PROGSF1 (1998.6.17) / NEO-MVS PROGSF1E (1998.6.18)
+ The boards have an ALTERA chip (EPM7128SQC100-15) which is tied to 242-P1
+***************************************************************/
+
+READ16_MEMBER(kof98_prot_device::kof98_prot_r)
+{
+ if (kof98_prot_state == 1)
+ {
+ if (!offset)
+ return 0x00c2;
+ else
+ return 0x00fd;
+ }
+
+ if (kof98_prot_state == 2)
+ {
+ if (!offset)
+ return 0x4e45;
+ else
+ return 0x4f2d;
+ }
+
+ if (!offset)
+ return m_default_rom[0];
+
+ return m_default_rom[1];
+}
+
+WRITE16_MEMBER( kof98_prot_device::kof98_prot_w )
+{
+ /* info from razoola */
+ switch (data)
+ {
+ case 0x0090:
+ logerror ("%06x kof98 - protection 0x0090x\n", space.device().safe_pc());
+ kof98_prot_state = 1;
+ break;
+
+ case 0x00f0:
+ logerror ("%06x kof98 - protection 0x00f0x\n", space.device().safe_pc());
+ kof98_prot_state = 2;
+ break;
+
+ default: // 00aa is written, but not needed?
+ logerror ("%06x kof98 - unknown protection write %04x\n", space.device().safe_pc(), data);
+ break;
+ }
+}
+
+
+void kof98_prot_device::install_kof98_protection(cpu_device* maincpu)
+{
+ /* when 0x20aaaa contains 0x0090 (word) then 0x100 (normally the neogeo header) should return 0x00c200fd worked out using real hw */
+ maincpu->space(AS_PROGRAM).install_read_handler(0x00100, 0x00103, read16_delegate(FUNC(kof98_prot_device::kof98_prot_r),this));
+ maincpu->space(AS_PROGRAM).install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(FUNC(kof98_prot_device::kof98_prot_w),this));
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type MSLUGX_PROT = device_creator<mslugx_prot_device>;
+
+
+mslugx_prot_device::mslugx_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, MSLUGX_PROT, "NeoGeo Protection (Metal Slug X)", tag, owner, clock, "mslugx_prot", __FILE__)
+ , m_mslugx_counter(0)
+ , m_mslugx_command(0)
+ { }
+
+
+void mslugx_prot_device::device_start()
+{
+ save_item(NAME(m_mslugx_command));
+ save_item(NAME(m_mslugx_counter));
+}
+
+void mslugx_prot_device::device_reset() { }
+
+
+
+
+/************************ Metal Slug X *************************
+ Board used: NEO-MVS PROGEOP (1999.2.2)
+ The board has an ALTERA chip (EPM7128SQC100-15) which is tied to 250-P1
+ Also found is a QFP144 chip labeled with 0103 - function unknown
+***************************************************************/
+
+WRITE16_MEMBER( mslugx_prot_device::mslugx_protection_16_w )
+{
+ switch (offset)
+ {
+ case 0x0/2: // start new read?
+ m_mslugx_command = 0;
+ break;
+
+ case 0x2/2: // command? These are pulsed with data and then 0
+ case 0x4/2:
+ m_mslugx_command |= data;
+ break;
+
+ case 0x6/2: // finished?
+ break;
+
+ case 0xa/2: // init?
+ m_mslugx_counter = 0;
+ m_mslugx_command = 0;
+ break;
+
+ default:
+ logerror("unknown protection write at pc %06x, offset %08x, data %02x\n", space.device().safe_pc(), offset << 1, data);
+ break;
+ }
+}
+
+
+READ16_MEMBER( mslugx_prot_device::mslugx_protection_16_r )
+{
+ uint16_t res = 0;
+
+ switch (m_mslugx_command)
+ {
+ case 0x0001: { // $3bdc(?) and $3c30 (Register D7)
+ res = (space.read_byte(0xdedd2 + ((m_mslugx_counter >> 3) & 0xfff)) >> (~m_mslugx_counter & 0x07)) & 1;
+ m_mslugx_counter++;
+ }
+ break;
+
+ case 0x0fff: { // All other accesses (Register D2)
+ int32_t select = space.read_word(0x10f00a) - 1; // How should this be calculated?
+ res = (space.read_byte(0xdedd2 + ((select >> 3) & 0x0fff)) >> (~select & 0x07)) & 1;
+ }
+ break;
+
+ default:
+ logerror("unknown protection read at pc %06x, offset %08x\n", space.device().safe_pc(), offset << 1);
+ break;
+ }
+
+ return res;
+}
+
+
+void mslugx_prot_device::mslugx_install_protection(cpu_device* maincpu)
+{
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fffe0, 0x2fffef,
+ read16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_r),this),
+ write16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_w),this));
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type PCM2_PROT = device_creator<pcm2_prot_device>;
+
+
+pcm2_prot_device::pcm2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, PCM2_PROT, "NeoGeo Protection (NEOPCM2)", tag, owner, clock, "pcm2_prot", __FILE__)
+ { }
+
+
+void pcm2_prot_device::device_start() { }
+
+void pcm2_prot_device::device_reset() { }
+
+/***************************************************************************
+
+NeoGeo 'V' (PCM) ROM encryption
+ NEOPCM2 chip
+
+***************************************************************************/
+
+/* Neo-Pcm2 Drivers for Encrypted V Roms */
+void pcm2_prot_device::neo_pcm2_snk_1999(uint8_t* ymrom, uint32_t ymsize, int value)
+{ /* thanks to Elsemi for the NEO-PCM2 info */
+ uint16_t *rom = (uint16_t *)ymrom;
+ int size = ymsize;
+ int i, j;
+
+ if (rom)
+ { /* swap address lines on the whole ROMs */
+ std::vector<uint16_t> buffer(value / 2);
+
+ for( i = 0; i < size / 2; i += ( value / 2 ) )
+ {
+ memcpy( &buffer[0], &rom[ i ], value );
+ for( j = 0; j < (value / 2); j++ )
+ rom[ i + j ] = buffer[ j ^ (value/4) ];
+ }
+ }
+}
+
+
+/* the later PCM2 games have additional scrambling */
+void pcm2_prot_device::neo_pcm2_swap(uint8_t* ymrom, uint32_t ymsize, int value)
+{
+ static const uint32_t addrs[7][2]={
+ {0x000000,0xa5000},
+ {0xffce20,0x01000},
+ {0xfe2cf6,0x4e001},
+ {0xffac28,0xc2000},
+ {0xfeb2c0,0x0a000},
+ {0xff14ea,0xa7001},
+ {0xffb440,0x02000}};
+ static const uint8_t xordata[7][8]={
+ {0xf9,0xe0,0x5d,0xf3,0xea,0x92,0xbe,0xef},
+ {0xc4,0x83,0xa8,0x5f,0x21,0x27,0x64,0xaf},
+ {0xc3,0xfd,0x81,0xac,0x6d,0xe7,0xbf,0x9e},
+ {0xc3,0xfd,0x81,0xac,0x6d,0xe7,0xbf,0x9e},
+ {0xcb,0x29,0x7d,0x43,0xd2,0x3a,0xc2,0xb4},
+ {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62},
+ {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}};
+
+ std::vector<uint8_t> buf(0x1000000);
+ int i, j, d;
+ uint8_t* src = ymrom;
+ memcpy(&buf[0], src, 0x1000000);
+ for (i=0; i<0x1000000; i++)
+ {
+ j = BITSWAP24(i,23,22,21,20,19,18,17,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16);
+ j ^= addrs[value][1];
+ d=((i + addrs[value][0]) & 0xffffff);
+ src[j] = buf[d] ^ xordata[value][j & 0x7];
+ }
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type PVC_PROT = device_creator<pvc_prot_device>;
+
+
+pvc_prot_device::pvc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, PVC_PROT, "NeoGeo Protection (PVC)", tag, owner, clock, "pvc_prot", __FILE__)
+ , m_bankdev(nullptr)
+ { }
+
+
+void pvc_prot_device::device_start()
+{
+ save_item(NAME(m_cartridge_ram));
+}
+
+void pvc_prot_device::device_reset() { }
+
+
+
+
+/************************ PVC Protection ***********************
+ mslug5, svcchaos, kof2003
+***************************************************************/
+
+void pvc_prot_device::pvc_write_unpack_color()
+{
+ uint16_t pen = m_cartridge_ram[0xff0];
+
+ uint8_t b = ((pen & 0x000f) << 1) | ((pen & 0x1000) >> 12);
+ uint8_t g = ((pen & 0x00f0) >> 3) | ((pen & 0x2000) >> 13);
+ uint8_t r = ((pen & 0x0f00) >> 7) | ((pen & 0x4000) >> 14);
+ uint8_t s = (pen & 0x8000) >> 15;
+
+ m_cartridge_ram[0xff1] = (g << 8) | b;
+ m_cartridge_ram[0xff2] = (s << 8) | r;
+}
+
+
+void pvc_prot_device::pvc_write_pack_color()
+{
+ uint16_t gb = m_cartridge_ram[0xff4];
+ uint16_t sr = m_cartridge_ram[0xff5];
+
+ m_cartridge_ram[0xff6] = ((gb & 0x001e) >> 1) | ((gb & 0x1e00) >> 5) | ((sr & 0x001e) << 7) |
+ ((gb & 0x0001) << 12) | ((gb & 0x0100) << 5) | ((sr & 0x0001) << 14) | ((sr & 0x0100) << 7);
+}
+
+
+void pvc_prot_device::pvc_write_bankswitch( address_space &space )
+{
+ uint32_t bankaddress = ((m_cartridge_ram[0xff8] >> 8)|(m_cartridge_ram[0xff9] << 8));
+ m_cartridge_ram[0xff8] = (m_cartridge_ram[0xff8] & 0xfe00) | 0x00a0;
+ m_cartridge_ram[0xff9] &= 0x7fff;
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress + 0x100000);
+}
+
+
+READ16_MEMBER( pvc_prot_device::pvc_prot_r )
+{
+ return m_cartridge_ram[offset];
+}
+
+
+WRITE16_MEMBER( pvc_prot_device::pvc_prot_w )
+{
+ COMBINE_DATA(&m_cartridge_ram[offset] );
+ if (offset == 0xff0)
+ pvc_write_unpack_color();
+ else
+ if(offset >= 0xff4 && offset <= 0xff5)
+ pvc_write_pack_color();
+ else
+ if(offset >= 0xff8)
+ pvc_write_bankswitch(space);
+}
+
+
+void pvc_prot_device::install_pvc_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ m_bankdev = bankdev;
+ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff,
+ read16_delegate(FUNC(pvc_prot_device::pvc_prot_r),this),
+ write16_delegate(FUNC(pvc_prot_device::pvc_prot_w),this));
+}
+
+
+
+
+/* kf2k3pcb, kof2003, kof2003h, mslug5 and svc have updated P rom scramble */
+void pvc_prot_device::mslug5_decrypt_68k(uint8_t* rom, uint32_t size)
+{
+ static const uint8_t xor1[ 0x20 ] = { 0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29, 0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03 };
+ static const uint8_t xor2[ 0x20 ] = { 0x36, 0x09, 0xb0, 0x64, 0x95, 0x0f, 0x90, 0x42, 0x6e, 0x0f, 0x30, 0xf6, 0xe5, 0x08, 0x30, 0x64, 0x08, 0x04, 0x00, 0x2f, 0x72, 0x09, 0xa0, 0x13, 0xc9, 0x0b, 0xa0, 0x3e, 0xc2, 0x00, 0x40, 0x2b };
+ int i, ofst, rom_size = 0x800000;
+ std::vector<uint8_t> buf( rom_size );
+
+ for( i = 0; i < 0x100000; i++ )
+ rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i++ )
+ rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x0800000; i += 4 )
+ {
+ uint16_t rom16;
+ rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8;
+ rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 );
+ rom[BYTE_XOR_LE(i+1)] = rom16&0xff;
+ rom[BYTE_XOR_LE(i+2)] = rom16>>8;
+ }
+
+ memcpy( &buf[0], rom, rom_size );
+
+ for( i = 0; i < 0x0100000 / 0x10000; i++ )
+ {
+ ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 );
+ memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 );
+ }
+
+ for( i = 0x100000; i < 0x800000; i += 0x100 )
+ {
+ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (BITSWAP8( ((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2 ) << 12);
+ memcpy( &rom[ i ], &buf[ ofst ], 0x100 );
+ }
+
+ memcpy( &buf[0], rom, rom_size );
+ memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
+ memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );
+}
+
+
+void pvc_prot_device::svc_px_decrypt(uint8_t* rom, uint32_t size)
+{
+ static const uint8_t xor1[ 0x20 ] = { 0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8,
+ 0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f };
+ static const uint8_t xor2[ 0x20 ] = { 0x69, 0x0b, 0x60, 0xd6, 0x4f, 0x01, 0x40, 0x1a, 0x9f, 0x0b, 0xf0, 0x75, 0x58, 0x0e, 0x60, 0xb4,
+ 0x14, 0x04, 0x20, 0xe4, 0xb9, 0x0d, 0x10, 0x89, 0xeb, 0x07, 0x30, 0x90, 0x50, 0x0e, 0x20, 0x26 };
+ int i, ofst, rom_size = 0x800000;
+ std::vector<uint8_t> buf( rom_size );
+
+ for( i = 0; i < 0x100000; i++ )
+ rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i++ )
+ rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x0800000; i += 4 )
+ {
+ uint16_t rom16;
+ rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8;
+ rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 );
+ rom[BYTE_XOR_LE(i+1)] = rom16&0xff;
+ rom[BYTE_XOR_LE(i+2)] = rom16>>8;
+ }
+
+ memcpy( &buf[0], rom, rom_size );
+
+ for( i = 0; i < 0x0100000 / 0x10000; i++ )
+ {
+ ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 2, 3, 0, 1 );
+ memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 );
+ }
+
+ for( i = 0x100000; i < 0x800000; i += 0x100 )
+ {
+ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00a00) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);
+ memcpy( &rom[ i ], &buf[ ofst ], 0x100 );
+ }
+
+ memcpy( &buf[0], rom, rom_size );
+ memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
+ memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );
+}
+
+
+void pvc_prot_device::kf2k3pcb_decrypt_68k(uint8_t* rom, uint32_t size)
+{
+ static const uint8_t xor2[ 0x20 ] = { 0xb4, 0x0f, 0x40, 0x6c, 0x38, 0x07, 0xd0, 0x3f, 0x53, 0x08, 0x80, 0xaa, 0xbe, 0x07, 0xc0, 0xfa,
+ 0xd0, 0x08, 0x10, 0xd2, 0xf1, 0x03, 0x70, 0x7e, 0x87, 0x0b, 0x40, 0xf6, 0x2a, 0x0a, 0xe0, 0xf9 };
+ int i, ofst, rom_size = 0x900000;
+ std::vector<uint8_t> buf( rom_size );
+
+ for (i = 0; i < 0x100000; i++)
+ rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ];
+
+ for( i = 0x100000; i < 0x800000; i++ )
+ rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i += 4 )
+ {
+ uint16_t rom16;
+ rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8;
+ rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0 );
+ rom[BYTE_XOR_LE(i+1)] = rom16&0xff;
+ rom[BYTE_XOR_LE(i+2)] = rom16>>8;
+ }
+
+ for( i = 0; i < 0x0100000 / 0x10000; i++ )
+ {
+ ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 );
+ memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 );
+ }
+
+ for( i = 0x100000; i < 0x900000; i += 0x100 )
+ {
+ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00300) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);
+ memcpy( &buf[ i ], &rom[ ofst ], 0x100 );
+ }
+
+ memcpy (&rom[0x000000], &buf[0x000000], 0x100000);
+ memcpy (&rom[0x100000], &buf[0x800000], 0x100000);
+ memcpy (&rom[0x200000], &buf[0x100000], 0x700000);
+}
+
+
+void pvc_prot_device::kof2003_decrypt_68k(uint8_t* rom, uint32_t size)
+{
+ static const uint8_t xor1[0x20] = { 0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8,
+ 0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f };
+ static const uint8_t xor2[0x20] = { 0x2f, 0x02, 0x60, 0xbb, 0x77, 0x01, 0x30, 0x08, 0xd8, 0x01, 0xa0, 0xdf, 0x37, 0x0a, 0xf0, 0x65,
+ 0x28, 0x03, 0xd0, 0x23, 0xd3, 0x03, 0x70, 0x42, 0xbb, 0x06, 0xf0, 0x28, 0xba, 0x0f, 0xf0, 0x7a };
+ int i, ofst, rom_size = 0x900000;
+ std::vector<uint8_t> buf( rom_size );
+
+ for (i = 0; i < 0x100000; i++)
+ rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ];
+
+ for( i = 0; i < 0x100000; i++)
+ rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i++)
+ rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i += 4)
+ {
+ uint16_t rom16;
+ rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8;
+ rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 5, 4, 7, 6, 9, 8, 11, 10, 3, 2, 1, 0 );
+ rom[BYTE_XOR_LE(i+1)] = rom16&0xff;
+ rom[BYTE_XOR_LE(i+2)] = rom16>>8;
+ }
+
+ for( i = 0; i < 0x0100000 / 0x10000; i++ )
+ {
+ ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 0, 1, 2, 3);
+ memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 );
+ }
+
+ for( i = 0x100000; i < 0x900000; i += 0x100)
+ {
+ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00800) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);
+ memcpy( &buf[ i ], &rom[ ofst ], 0x100 );
+ }
+
+ memcpy (&rom[0x000000], &buf[0x000000], 0x100000);
+ memcpy (&rom[0x100000], &buf[0x800000], 0x100000);
+ memcpy (&rom[0x200000], &buf[0x100000], 0x700000);
+}
+
+
+void pvc_prot_device::kof2003h_decrypt_68k(uint8_t* rom, uint32_t size)
+{
+ static const uint8_t xor1[0x20] = { 0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29,
+ 0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03 };
+ static const uint8_t xor2[0x20] = { 0x2b, 0x09, 0xd0, 0x7f, 0x51, 0x0b, 0x10, 0x4c, 0x5b, 0x07, 0x70, 0x9d, 0x3e, 0x0b, 0xb0, 0xb6,
+ 0x54, 0x09, 0xe0, 0xcc, 0x3d, 0x0d, 0x80, 0x99, 0x87, 0x03, 0x90, 0x82, 0xfe, 0x04, 0x20, 0x18 };
+ int i, ofst, rom_size = 0x900000;
+ std::vector<uint8_t> buf( rom_size );
+
+ for (i = 0; i < 0x100000; i++)
+ rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ];
+
+ for( i = 0; i < 0x100000; i++)
+ rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i++)
+ rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ];
+
+ for( i = 0x100000; i < 0x800000; i += 4)
+ {
+ uint16_t rom16;
+ rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8;
+ rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 );
+ rom[BYTE_XOR_LE(i+1)] = rom16&0xff;
+ rom[BYTE_XOR_LE(i+2)] = rom16>>8;
+ }
+
+ for( i = 0; i < 0x0100000 / 0x10000; i++ )
+ {
+ ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2);
+ memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 );
+ }
+
+ for( i = 0x100000; i < 0x900000; i += 0x100)
+ {
+ ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00400) + (BITSWAP8( ((i & 0x0ff000) >> 12), 6, 7, 4, 5, 0, 1, 2, 3 ) << 12);
+ memcpy( &buf[ i ], &rom[ ofst ], 0x100 );
+ }
+
+ memcpy (&rom[0x000000], &buf[0x000000], 0x100000);
+ memcpy (&rom[0x100000], &buf[0x800000], 0x100000);
+ memcpy (&rom[0x200000], &buf[0x100000], 0x700000);
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type SBP_PROT = device_creator<sbp_prot_device>;
+
+
+sbp_prot_device::sbp_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, SBP_PROT, "NeoGeo Protection (Super Bubble Pop)", tag, owner, clock, "sbp_prot", __FILE__)
+ , m_mainrom(nullptr)
+ { }
+
+void sbp_prot_device::device_start() { }
+void sbp_prot_device::device_reset() { }
+
+READ16_MEMBER( sbp_prot_device::sbp_lowerrom_r )
+{
+ uint16_t* rom = (uint16_t*)m_mainrom;
+ uint16_t origdata = rom[(offset+(0x200/2))];
+ uint16_t data = BITSWAP16(origdata, 11,10,9,8,15,14,13,12,3,2,1,0,7,6,5,4);
+ int realoffset = 0x200+(offset*2);
+ logerror("sbp_lowerrom_r offset %08x data %04x\n", realoffset, data );
+
+ // there is actually data in the rom here already, maybe we should just return it 'as is'
+ if (realoffset==0xd5e) return origdata;
+
+ return data;
+}
+
+WRITE16_MEMBER( sbp_prot_device::sbp_lowerrom_w )
+{
+ int realoffset = 0x200+(offset*2);
+
+ // the actual data written is just pulled from the end of the rom, and unused space
+ // maybe this is just some kind of watchdog for the protection device and it doesn't
+ // matter?
+ if (realoffset == 0x1080)
+ {
+ if (data==0x4e75)
+ return;
+ else
+ if (data==0xffff)
+ return;
+ }
+
+ printf("sbp_lowerrom_w offset %08x data %04x\n", realoffset, data );
+}
+
+
+void sbp_prot_device::sbp_install_protection(cpu_device* maincpu, uint8_t* cpurom, uint32_t cpurom_size)
+{
+ m_mainrom = cpurom;
+
+ // there seems to be a protection device living around here..
+ // if you nibble swap the data in the rom the game will boot
+ // there are also writes to 0x1080..
+ //
+ // other stuff going on as well tho, the main overlay is still missing, and p1 inputs don't work
+ maincpu->space(AS_PROGRAM).install_read_handler(0x00200, 0x001fff, read16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_r), this));
+ maincpu->space(AS_PROGRAM).install_write_handler(0x00200, 0x001fff, write16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_w), this));
+
+ /* the game code clears the text overlay used ingame immediately after writing it.. why? protection? sloppy code that the hw ignores? imperfect emulation? */
+ {
+ uint16_t* rom = (uint16_t*)cpurom;
+
+ rom[0x2a6f8 / 2] = 0x4e71;
+ rom[0x2a6fa / 2] = 0x4e71;
+ rom[0x2a6fc / 2] = 0x4e71;
+ }
+}
+
+/***********************************************************************************************************************************/
+
+
+const device_type SMA_PROT = device_creator<sma_prot_device>;
+
+
+sma_prot_device::sma_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, SMA_PROT, "NeoGeo SMA Cartridge", tag, owner, clock, "sma_prot", __FILE__)
+ , m_bankdev(nullptr)
+ , m_sma_rng(0)
+ { }
+
+
+void sma_prot_device::device_start()
+{
+ save_item(NAME(m_sma_rng));
+}
+
+void sma_prot_device::device_reset()
+{
+ reset_sma_rng();
+}
+
+
+/************************ SMA Protection************************
+ thanks to Razoola
+***************************************************************/
+
+WRITE16_MEMBER( sma_prot_device::kof99_bankswitch_w )
+{
+ static const int bankoffset[64] =
+ {
+ 0x000000, 0x100000, 0x200000, 0x300000,
+ 0x3cc000, 0x4cc000, 0x3f2000, 0x4f2000,
+ 0x407800, 0x507800, 0x40d000, 0x50d000,
+ 0x417800, 0x517800, 0x420800, 0x520800,
+ 0x424800, 0x524800, 0x429000, 0x529000,
+ 0x42e800, 0x52e800, 0x431800, 0x531800,
+ 0x54d000, 0x551000, 0x567000, 0x592800,
+ 0x588800, 0x581800, 0x599800, 0x594800,
+ 0x598000, /* rest not used? */
+ };
+
+ /* unscramble bank number */
+ data = (((data>>14)&1)<<0) + (((data>> 6)&1)<<1) + (((data>> 8)&1)<<2) + (((data>>10)&1)<<3) + (((data>>12)&1)<<4) + (((data>> 5)&1)<<5);
+
+ int bankaddress = 0x100000 + bankoffset[data];
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+}
+
+
+WRITE16_MEMBER( sma_prot_device::garou_bankswitch_w )
+{
+ /* thanks to Razoola and Mr K for the info */
+ static const int bankoffset[64] =
+ {
+ 0x000000, 0x100000, 0x200000, 0x300000, // 00
+ 0x280000, 0x380000, 0x2d0000, 0x3d0000, // 04
+ 0x2f0000, 0x3f0000, 0x400000, 0x500000, // 08
+ 0x420000, 0x520000, 0x440000, 0x540000, // 12
+ 0x498000, 0x598000, 0x4a0000, 0x5a0000, // 16
+ 0x4a8000, 0x5a8000, 0x4b0000, 0x5b0000, // 20
+ 0x4b8000, 0x5b8000, 0x4c0000, 0x5c0000, // 24
+ 0x4c8000, 0x5c8000, 0x4d0000, 0x5d0000, // 28
+ 0x458000, 0x558000, 0x460000, 0x560000, // 32
+ 0x468000, 0x568000, 0x470000, 0x570000, // 36
+ 0x478000, 0x578000, 0x480000, 0x580000, // 40
+ 0x488000, 0x588000, 0x490000, 0x590000, // 44
+ 0x5d0000, 0x5d8000, 0x5e0000, 0x5e8000, // 48
+ 0x5f0000, 0x5f8000, 0x600000, /* rest not used? */
+ };
+
+ /* unscramble bank number */
+ data = (((data>> 5)&1)<<0) + (((data>> 9)&1)<<1) + (((data>> 7)&1)<<2) + (((data>> 6)&1)<<3) + (((data>>14)&1)<<4) + (((data>>12)&1)<<5);
+
+ int bankaddress = 0x100000 + bankoffset[data];
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+}
+
+
+WRITE16_MEMBER( sma_prot_device::garouh_bankswitch_w )
+{
+ /* thanks to Razoola and Mr K for the info */
+ static const int bankoffset[64] =
+ {
+ 0x000000, 0x100000, 0x200000, 0x300000, // 00
+ 0x280000, 0x380000, 0x2d0000, 0x3d0000, // 04
+ 0x2c8000, 0x3c8000, 0x400000, 0x500000, // 08
+ 0x420000, 0x520000, 0x440000, 0x540000, // 12
+ 0x598000, 0x698000, 0x5a0000, 0x6a0000, // 16
+ 0x5a8000, 0x6a8000, 0x5b0000, 0x6b0000, // 20
+ 0x5b8000, 0x6b8000, 0x5c0000, 0x6c0000, // 24
+ 0x5c8000, 0x6c8000, 0x5d0000, 0x6d0000, // 28
+ 0x458000, 0x558000, 0x460000, 0x560000, // 32
+ 0x468000, 0x568000, 0x470000, 0x570000, // 36
+ 0x478000, 0x578000, 0x480000, 0x580000, // 40
+ 0x488000, 0x588000, 0x490000, 0x590000, // 44
+ 0x5d8000, 0x6d8000, 0x5e0000, 0x6e0000, // 48
+ 0x5e8000, 0x6e8000, 0x6e8000, 0x000000, // 52
+ 0x000000, 0x000000, 0x000000, 0x000000, // 56
+ 0x000000, 0x000000, 0x000000, 0x000000, // 60
+ };
+
+ /* unscramble bank number */
+ data = (((data>> 4)&1)<<0) + (((data>> 8)&1)<<1) + (((data>>14)&1)<<2) + (((data>> 2)&1)<<3) + (((data>>11)&1)<<4) + (((data>>13)&1)<<5);
+
+ int bankaddress = 0x100000 + bankoffset[data];
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+}
+
+
+WRITE16_MEMBER( sma_prot_device::mslug3_bankswitch_w )
+{
+ /* thanks to Razoola and Mr K for the info */
+ static const int bankoffset[64] =
+ {
+ 0x000000, 0x020000, 0x040000, 0x060000, // 00
+ 0x070000, 0x090000, 0x0b0000, 0x0d0000, // 04
+ 0x0e0000, 0x0f0000, 0x120000, 0x130000, // 08
+ 0x140000, 0x150000, 0x180000, 0x190000, // 12
+ 0x1a0000, 0x1b0000, 0x1e0000, 0x1f0000, // 16
+ 0x200000, 0x210000, 0x240000, 0x250000, // 20
+ 0x260000, 0x270000, 0x2a0000, 0x2b0000, // 24
+ 0x2c0000, 0x2d0000, 0x300000, 0x310000, // 28
+ 0x320000, 0x330000, 0x360000, 0x370000, // 32
+ 0x380000, 0x390000, 0x3c0000, 0x3d0000, // 36
+ 0x400000, 0x410000, 0x440000, 0x450000, // 40
+ 0x460000, 0x470000, 0x4a0000, 0x4b0000, // 44
+ 0x4c0000, /* rest not used? */
+ };
+
+ /* unscramble bank number */
+ data = (((data>>14)&1)<<0) + (((data>>12)&1)<<1) + (((data>>15)&1)<<2) + (((data>> 6)&1)<<3) + (((data>> 3)&1)<<4) + (((data>> 9)&1)<<5);
+
+ int bankaddress = 0x100000 + bankoffset[data];
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+}
+
+
+WRITE16_MEMBER( sma_prot_device::kof2000_bankswitch_w )
+{
+ /* thanks to Razoola and Mr K for the info */
+ static const int bankoffset[64] =
+ {
+ 0x000000, 0x100000, 0x200000, 0x300000, // 00
+ 0x3f7800, 0x4f7800, 0x3ff800, 0x4ff800, // 04
+ 0x407800, 0x507800, 0x40f800, 0x50f800, // 08
+ 0x416800, 0x516800, 0x41d800, 0x51d800, // 12
+ 0x424000, 0x524000, 0x523800, 0x623800, // 16
+ 0x526000, 0x626000, 0x528000, 0x628000, // 20
+ 0x52a000, 0x62a000, 0x52b800, 0x62b800, // 24
+ 0x52d000, 0x62d000, 0x52e800, 0x62e800, // 28
+ 0x618000, 0x619000, 0x61a000, 0x61a800, // 32
+ };
+
+ /* unscramble bank number */
+ data = (((data>>15)&1)<<0) + (((data>>14)&1)<<1) + (((data>> 7)&1)<<2) + (((data>> 3)&1)<<3) + (((data>>10)&1)<<4) + (((data>> 5)&1)<<5);
+
+ int bankaddress = 0x100000 + bankoffset[data];
+ m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress);
+}
+
+
+READ16_MEMBER( sma_prot_device::prot_9a37_r )
+{
+ return 0x9a37;
+}
+
+
+/* information about the sma random number generator provided by razoola */
+/* this RNG is correct for KOF99, other games might be different */
+
+READ16_MEMBER( sma_prot_device::sma_random_r )
+{
+ uint16_t old = m_sma_rng;
+ uint16_t newbit = ((m_sma_rng >> 2) ^ (m_sma_rng >> 3) ^ (m_sma_rng >> 5) ^ (m_sma_rng >> 6) ^ (m_sma_rng >> 7) ^ (m_sma_rng >>11) ^ (m_sma_rng >>12) ^ (m_sma_rng >>15)) & 1;
+ m_sma_rng = (m_sma_rng << 1) | newbit;
+ return old;
+}
+
+
+void sma_prot_device::reset_sma_rng()
+{
+ m_sma_rng = 0x2345;
+}
+
+
+void sma_prot_device::sma_install_random_read_handler(cpu_device* maincpu, int addr1, int addr2 )
+{
+ maincpu->space(AS_PROGRAM).install_read_handler(addr1, addr1 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(addr2, addr2 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this));
+}
+
+
+void sma_prot_device::kof99_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(FUNC(sma_prot_device::kof99_bankswitch_w),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this));
+ m_bankdev = bankdev;
+
+ sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa);
+}
+
+
+void sma_prot_device::garou_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garou_bankswitch_w),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this));
+ m_bankdev = bankdev;
+
+ sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0);
+}
+
+
+void sma_prot_device::garouh_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garouh_bankswitch_w),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this));
+ m_bankdev = bankdev;
+
+ sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0);
+}
+
+
+void sma_prot_device::mslug3_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(FUNC(sma_prot_device::mslug3_bankswitch_w),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this));
+ m_bankdev = bankdev;
+
+// sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa);
+}
+
+
+void sma_prot_device::kof2000_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev)
+{
+ maincpu->space(AS_PROGRAM).install_write_handler(0x2fffec, 0x2fffed, write16_delegate(FUNC(sma_prot_device::kof2000_bankswitch_w),this));
+ maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this));
+ m_bankdev = bankdev;
+
+ sma_install_random_read_handler(maincpu, 0x2fffd8, 0x2fffda);
+}
+
+
+
+/* kof99, garou, garouh, mslug3 and kof2000 have a SMA chip which contains program code and decrypts the 68k roms */
+void sma_prot_device::kof99_decrypt_68k(uint8_t* base)
+{
+ int i,j;
+ uint16_t *rom = (uint16_t *)(base + 0x100000);
+ /* swap data lines on the whole ROMs */
+ for (i = 0;i < 0x800000/2;i++)
+ rom[i] = BITSWAP16(rom[i],13,7,3,0,9,4,5,6,1,12,8,14,10,11,2,15);
+
+ /* swap address lines for the banked part */
+ for (i = 0;i < 0x600000/2;i+=0x800/2)
+ {
+ uint16_t buffer[0x800/2];
+ memcpy(buffer, &rom[i], 0x800);
+ for (j = 0; j < 0x800/2; j++)
+ rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,6,2,4,9,8,3,1,7,0,5)];
+ }
+
+ /* swap address lines & relocate fixed part */
+ rom = (uint16_t *)base;
+ for (i = 0;i < 0x0c0000/2;i++)
+ rom[i] = rom[0x700000/2 + BITSWAP24(i,23,22,21,20,19,18,11,6,14,17,16,5,8,10,12,0,4,3,2,7,9,15,13,1)];
+}
+
+
+void sma_prot_device::garou_decrypt_68k(uint8_t* base)
+{
+ int i,j;
+
+ /* thanks to Razoola and Mr K for the info */
+ uint16_t *rom = (uint16_t *)(base + 0x100000);
+ /* swap data lines on the whole ROMs */
+ for (i = 0;i < 0x800000/2;i++)
+ rom[i] = BITSWAP16(rom[i],13,12,14,10,8,2,3,1,5,9,11,4,15,0,6,7);
+
+ /* swap address lines & relocate fixed part */
+ rom = (uint16_t *)base;
+ for (i = 0;i < 0x0c0000/2;i++)
+ rom[i] = rom[0x710000/2 + BITSWAP24(i,23,22,21,20,19,18,4,5,16,14,7,9,6,13,17,15,3,1,2,12,11,8,10,0)];
+
+ /* swap address lines for the banked part */
+ rom = (uint16_t *)(base + 0x100000);
+ for (i = 0;i < 0x800000/2;i+=0x8000/2)
+ {
+ uint16_t buffer[0x8000/2];
+ memcpy(buffer,&rom[i],0x8000);
+ for (j = 0;j < 0x8000/2;j++)
+ rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,9,4,8,3,13,6,2,7,0,12,1,11,10,5)];
+ }
+}
+
+
+void sma_prot_device::garouh_decrypt_68k(uint8_t* base)
+{
+ int i,j;
+
+ /* thanks to Razoola and Mr K for the info */
+ uint16_t *rom = (uint16_t *)(base + 0x100000);
+ /* swap data lines on the whole ROMs */
+ for (i = 0;i < 0x800000/2;i++)
+ rom[i] = BITSWAP16(rom[i],14,5,1,11,7,4,10,15,3,12,8,13,0,2,9,6);
+
+ /* swap address lines & relocate fixed part */
+ rom = (uint16_t *)base;
+ for (i = 0;i < 0x0c0000/2;i++)
+ rom[i] = rom[0x7f8000/2 + BITSWAP24(i,23,22,21,20,19,18,5,16,11,2,6,7,17,3,12,8,14,4,0,9,1,10,15,13)];
+
+ /* swap address lines for the banked part */
+ rom = (uint16_t *)(base + 0x100000);
+ for (i = 0;i < 0x800000/2;i+=0x8000/2)
+ {
+ uint16_t buffer[0x8000/2];
+ memcpy(buffer,&rom[i],0x8000);
+ for (j = 0;j < 0x8000/2;j++)
+ rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,12,8,1,7,11,3,13,10,6,9,5,4,0,2)];
+ }
+}
+
+
+void sma_prot_device::mslug3_decrypt_68k(uint8_t* base)
+{
+ int i,j;
+
+ /* thanks to Razoola and Mr K for the info */
+ uint16_t *rom = (uint16_t *)(base + 0x100000);
+ /* swap data lines on the whole ROMs */
+ for (i = 0;i < 0x800000/2;i++)
+ rom[i] = BITSWAP16(rom[i],4,11,14,3,1,13,0,7,2,8,12,15,10,9,5,6);
+
+ /* swap address lines & relocate fixed part */
+ rom = (uint16_t *)base;
+ for (i = 0;i < 0x0c0000/2;i++)
+ rom[i] = rom[0x5d0000/2 + BITSWAP24(i,23,22,21,20,19,18,15,2,1,13,3,0,9,6,16,4,11,5,7,12,17,14,10,8)];
+
+ /* swap address lines for the banked part */
+ rom = (uint16_t *)(base + 0x100000);
+ for (i = 0;i < 0x800000/2;i+=0x10000/2)
+ {
+ uint16_t buffer[0x10000/2];
+ memcpy(buffer,&rom[i],0x10000);
+ for (j = 0;j < 0x10000/2;j++)
+ rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,2,11,0,14,6,4,13,8,9,3,10,7,5,12,1)];
+ }
+}
+
+
+void sma_prot_device::kof2000_decrypt_68k(uint8_t* base)
+{
+ int i,j;
+
+ /* thanks to Razoola and Mr K for the info */
+ uint16_t *rom = (uint16_t *)(base + 0x100000);
+ /* swap data lines on the whole ROMs */
+ for (i = 0;i < 0x800000/2;i++)
+ rom[i] = BITSWAP16(rom[i],12,8,11,3,15,14,7,0,10,13,6,5,9,2,1,4);
+
+ /* swap address lines for the banked part */
+ for (i = 0;i < 0x63a000/2;i+=0x800/2)
+ {
+ uint16_t buffer[0x800/2];
+ memcpy(buffer,&rom[i],0x800);
+ for (j = 0;j < 0x800/2;j++)
+ rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,4,1,3,8,6,2,7,0,9,5)];
+ }
+
+ /* swap address lines & relocate fixed part */
+ rom = (uint16_t *)base;
+ for (i = 0;i < 0x0c0000/2;i++)
+ rom[i] = rom[0x73a000/2 + BITSWAP24(i,23,22,21,20,19,18,8,4,15,13,3,14,16,2,6,17,7,12,10,0,5,11,1,9)];
+}
+
+// From here are not sma decrypts, it's a convenient place to store them **************************************************
+
+
+/* ms5pcb and svcpcb have an additional scramble on top of the standard CMC scrambling */
+void sma_prot_device::svcpcb_gfx_decrypt(uint8_t* rom, uint32_t rom_size)
+{
+ static const uint8_t xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
+ int i, ofst;
+ std::vector<uint8_t> buf( rom_size );
+
+ for( i = 0; i < rom_size; i++ )
+ rom[ i ] ^= xorval[ (i % 4) ];
+
+ for( i = 0; i < rom_size; i += 4 )
+ {
+ uint32_t rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24;
+ rom32 = BITSWAP32( rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12,
+ 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16 );
+ buf[i] = rom32 & 0xff;
+ buf[i+1] = (rom32>>8) & 0xff;
+ buf[i+2] = (rom32>>16) & 0xff;
+ buf[i+3] = (rom32>>24) & 0xff;
+ }
+
+ for( i = 0; i < rom_size / 4; i++ )
+ {
+ ofst = BITSWAP24( (i & 0x1fffff), 0x17, 0x16, 0x15, 0x04, 0x0b, 0x0e, 0x08, 0x0c, 0x10, 0x00, 0x0a, 0x13,
+ 0x03, 0x06, 0x02, 0x07, 0x0d, 0x01, 0x11, 0x09, 0x14, 0x0f, 0x12, 0x05 );
+ ofst ^= 0x0c8923;
+ ofst += (i & 0xffe00000);
+ memcpy( &rom[ i * 4 ], &buf[ ofst * 4 ], 0x04 );
+ }
+}
+
+
+/* and a further swap on the s1 data */
+void sma_prot_device::svcpcb_s1data_decrypt(uint8_t* rom, uint32_t rom_size)
+{
+ for( int i = 0; i < rom_size; i++ ) // Decrypt S
+ rom[ i ] = BITSWAP8( rom[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 );
+}
+
+
+/* kf2k3pcb has an additional scramble on top of the standard CMC scrambling */
+/* Thanks to Razoola & Halrin for the info */
+void sma_prot_device::kf2k3pcb_gfx_decrypt(uint8_t* rom, uint32_t rom_size)
+{
+ const uint8_t xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
+ int i, ofst;
+ std::vector<uint8_t> buf( rom_size );
+
+ for ( i = 0; i < rom_size; i++ )
+ rom[ i ] ^= xorval[ (i % 4) ];
+
+ for ( i = 0; i < rom_size; i +=4 )
+ {
+ uint32_t rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24;
+ rom32 = BITSWAP32( rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12,
+ 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16 );
+ buf[i] = rom32 & 0xff;
+ buf[i+1] = (rom32>>8) & 0xff;
+ buf[i+2] = (rom32>>16) & 0xff;
+ buf[i+3] = (rom32>>24) & 0xff;
+ }
+
+ for ( i = 0; i < rom_size; i+=4 )
+ {
+ ofst = BITSWAP24( (i & 0x7fffff), 0x17, 0x15, 0x0a, 0x14, 0x13, 0x16, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d,
+ 0x0c, 0x0b, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 );
+ ofst += (i & 0xff800000);
+ memcpy( &rom[ ofst ], &buf[ i ], 0x04 );
+ }
+}
+
+
+/* and a further swap on the s1 data */
+void sma_prot_device::kf2k3pcb_decrypt_s1data(uint8_t* rom, uint32_t rom_size, uint8_t* fixed, uint32_t fixed_size)
+{
+ uint8_t *src;
+ uint8_t *dst;
+ int i;
+
+ src = rom + rom_size - 0x1000000 - 0x80000; // Decrypt S
+
+ for( i = 0; i < fixed_size / 2; i++ )
+ fixed[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ];
+
+ src = rom + rom_size - 0x80000;
+ dst = fixed + 0x80000;
+
+ for( i = 0; i < fixed_size / 2; i++ )
+ dst[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ];
+
+ for( i = 0; i < fixed_size; i++ )
+ fixed[ i ] = BITSWAP8( fixed[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 );
+}
+
+
+/***************************************************************************
+
+NeoGeo 'SP1' (BIOS) ROM encryption
+
+***************************************************************************/
+
+
+/* only found on kf2k3pcb */
+void sma_prot_device::kf2k3pcb_sp1_decrypt(uint16_t* rom)
+{
+ static const uint8_t address[0x40] = {
+ 0x04,0x0a,0x04,0x0a,0x04,0x0a,0x04,0x0a,
+ 0x0a,0x04,0x0a,0x04,0x0a,0x04,0x0a,0x04,
+ 0x09,0x07,0x09,0x07,0x09,0x07,0x09,0x07,
+ 0x09,0x09,0x04,0x04,0x09,0x09,0x04,0x04,
+ 0x0b,0x0d,0x0b,0x0d,0x03,0x05,0x03,0x05,
+ 0x0e,0x0e,0x03,0x03,0x0e,0x0e,0x03,0x03,
+ 0x03,0x05,0x0b,0x0d,0x03,0x05,0x0b,0x0d,
+ 0x04,0x00,0x04,0x00,0x0e,0x0a,0x0e,0x0a
+ };
+
+ std::vector<uint16_t> buf(0x80000/2);
+ int i, addr;
+
+ for (i = 0; i < 0x80000/2; i++)
+ {
+ // address xor
+ addr = i ^ 0x0020;
+ if ( i & 0x00020) addr ^= 0x0010;
+ if (~i & 0x00010) addr ^= 0x0040;
+ if (~i & 0x00004) addr ^= 0x0080;
+ if ( i & 0x00200) addr ^= 0x0100;
+ if (~i & 0x02000) addr ^= 0x0400;
+ if (~i & 0x10000) addr ^= 0x1000;
+ if ( i & 0x02000) addr ^= 0x8000;
+ addr ^= address[((i >> 1) & 0x38) | (i & 7)];
+ buf[i] = rom[addr];
+
+ // data xor
+ if (buf[i] & 0x0004) buf[i] ^= 0x0001;
+ if (buf[i] & 0x0010) buf[i] ^= 0x0002;
+ if (buf[i] & 0x0020) buf[i] ^= 0x0008;
+ }
+
+ memcpy(rom, &buf[0], 0x80000);
+}
diff --git a/docs/release/src/hbmame/bus/neogeo/prot.h b/docs/release/src/hbmame/bus/neogeo/prot.h
new file mode 100644
index 00000000000..f883440401f
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo/prot.h
@@ -0,0 +1,417 @@
+// license:BSD-3-Clause
+// copyright-holders:S. Smith,David Haywood
+
+
+#pragma once
+
+#include "banked_cart.h"
+
+#ifndef __NEOGEO_PROT__
+#define __NEOGEO_PROT__
+
+extern const device_type NGBOOTLEG_PROT;
+
+#define MCFG_NGBOOTLEG_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, NGBOOTLEG_PROT, 0)
+
+
+class ngbootleg_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ ngbootleg_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void neogeo_bootleg_cx_decrypt(uint8_t*sprrom, uint32_t sprrom_size);
+ void neogeo_bootleg_sx_decrypt(uint8_t* fixed, uint32_t fixed_size, int value);
+ void kof97oro_px_decode(uint8_t* cpurom, uint32_t cpurom_size);
+ void kof10thBankswitch(address_space &space, uint16_t nBank);
+ DECLARE_READ16_MEMBER(kof10th_RAM2_r);
+ DECLARE_READ16_MEMBER(kof10th_RAMB_r);
+ DECLARE_WRITE16_MEMBER(kof10th_custom_w);
+ DECLARE_WRITE16_MEMBER(kof10th_bankswitch_w);
+ void install_kof10th_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size, uint8_t* fixedrom, uint32_t fixedrom_size);
+ void decrypt_kof10th(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf10thep_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k5uni_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k5uni_sx_decrypt(uint8_t* fixedrom, uint32_t fixedrom_size);
+ void kf2k5uni_mx_decrypt(uint8_t* audiorom, uint32_t audiorom_size);
+ void decrypt_kf2k5uni(uint8_t* cpurom, uint32_t cpurom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size);
+ void kof2002b_gfx_decrypt(uint8_t *src, int size);
+ void kf2k2mp_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k2mp2_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void cthd2003_neogeo_gfx_address_fix_do(uint8_t* sprrom, uint32_t sprrom_size, int start, int end, int bit3shift, int bit2shift, int bit1shift, int bit0shift);
+ void cthd2003_neogeo_gfx_address_fix(uint8_t* sprrom, uint32_t sprrom_size, int start, int end);
+ void cthd2003_c(uint8_t* sprrom, uint32_t sprrom_size, int pow);
+ void decrypt_cthd2003(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size);
+ DECLARE_WRITE16_MEMBER(cthd2003_bankswitch_w);
+ void patch_cthd2003(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size);
+ void ct2k3sp_sx_decrypt(uint8_t* fixedrom, uint32_t fixedrom_size);
+ void decrypt_ct2k3sp(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size, uint8_t* fixedrom, uint32_t fixedrom_size);
+ void decrypt_ct2k3sa(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size);
+ void patch_ct2k3sa(uint8_t* cpurom, uint32_t cpurom_size);
+ void decrypt_kof2k4se_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ void lans2004_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndrom_size);
+ void lans2004_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ DECLARE_READ16_MEMBER(mslug5_prot_r);
+ DECLARE_WRITE16_MEMBER(ms5plus_bankswitch_w);
+ void install_ms5plus_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ void svcboot_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void svcboot_cx_decrypt(uint8_t*sprrom, uint32_t sprrom_size);
+ void svcplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void svcplus_px_hack(uint8_t* cpurom, uint32_t cpurom_size);
+ void svcplusa_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void svcsplus_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void svcsplus_px_hack(uint8_t* cpurom, uint32_t cpurom_size);
+ DECLARE_READ16_MEMBER(kof2003_r);
+ DECLARE_WRITE16_MEMBER(kof2003_w);
+ DECLARE_WRITE16_MEMBER(kof2003p_w);
+ DECLARE_READ16_MEMBER(kof2003_overlay_r);
+ void kf2k3bl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k3bl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k3pl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void kf2k3pl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, uint8_t* cpurom, uint32_t cpurom_size);
+ uint16_t kof2k3_overlay;
+
+ void kf2k3upl_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void samsho5b_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ void samsho5b_vx_decrypt(uint8_t* ymsndrom, uint32_t ymsndrom_size);
+ void matrimbl_decrypt(uint8_t* sprrom, uint32_t sprrom_size, uint8_t* audiorom, uint32_t audiorom_size);
+
+ uint16_t m_cartridge_ram[0x1000]; // bootlegs
+
+ // for kof10th
+ uint8_t* m_mainrom;
+ uint8_t* m_fixedrom;
+ neogeo_banked_cart_device* m_bankdev;
+ uint16_t m_cartridge_ram2[0x10000];
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type KOG_PROT;
+
+#define MCFG_KOG_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, KOG_PROT, 0)
+
+
+class kog_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ kog_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void kog_install_protection(cpu_device* maincpu);
+ void kog_px_decrypt(uint8_t* cpurom, uint32_t cpurom_size);
+ READ16_MEMBER(read_jumper);
+
+ required_ioport m_jumper;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual ioport_constructor device_input_ports() const override;
+};
+
+
+extern const device_type CMC_PROT;
+
+#define MCFG_CMC_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, CMC_PROT, 0)
+
+// cmc42
+#define KOF99_GFX_KEY (0x00)
+#define GAROU_GFX_KEY (0x06)
+#define MSLUG3_GFX_KEY (0xad)
+#define ZUPAPA_GFX_KEY (0xbd)
+#define GANRYU_GFX_KEY (0x07)
+#define S1945P_GFX_KEY (0x05)
+#define PREISLE2_GFX_KEY (0x9f)
+#define BANGBEAD_GFX_KEY (0xf8)
+#define NITD_GFX_KEY (0xff)
+#define SENGOKU3_GFX_KEY (0xfe)
+
+// cmc50
+#define KOF2000_GFX_KEY (0x00)
+#define KOF2001_GFX_KEY (0x1e)
+#define MSLUG4_GFX_KEY (0x31)
+#define ROTD_GFX_KEY (0x3f)
+#define PNYAA_GFX_KEY (0x2e)
+#define KOF2002_GFX_KEY (0xec)
+#define MATRIM_GFX_KEY (0x6a)
+#define SAMSHO5_GFX_KEY (0x0f)
+#define SAMSHO5SP_GFX_KEY (0x0d)
+#define MSLUG5_GFX_KEY (0x19)
+#define SVC_GFX_KEY (0x57)
+#define KOF2003_GFX_KEY (0x9d)
+#define JOCKEYGP_GFX_KEY (0xac)
+
+
+class cmc_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void decrypt(uint8_t *r0, uint8_t *r1,
+ uint8_t c0, uint8_t c1,
+ const uint8_t *table0hi,
+ const uint8_t *table0lo,
+ const uint8_t *table1,
+ int base,
+ int invert);
+
+ void neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor);
+ void neogeo_sfix_decrypt(uint8_t* rom, uint32_t rom_size, uint8_t* fixed, uint32_t fixed_size);
+ void cmc42_neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor);
+ void cmc50_neogeo_gfx_decrypt(uint8_t* rom, uint32_t rom_size, int extra_xor);
+
+ uint16_t generate_cs16(uint8_t *rom, int size);
+ int m1_address_scramble(int address, uint16_t key);
+ void neogeo_cmc50_m1_decrypt(uint8_t* romcrypt, uint32_t romcrypt_size, uint8_t* romaudio, uint32_t romaudio_size);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ const uint8_t *type0_t03;
+ const uint8_t *type0_t12;
+ const uint8_t *type1_t03;
+ const uint8_t *type1_t12;
+ const uint8_t *address_8_15_xor1;
+ const uint8_t *address_8_15_xor2;
+ const uint8_t *address_16_23_xor1;
+ const uint8_t *address_16_23_xor2;
+ const uint8_t *address_0_7_xor;
+};
+
+
+extern const device_type FATFURY2_PROT;
+
+#define MCFG_FATFURY2_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, FATFURY2_PROT, 0)
+
+
+class fatfury2_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ DECLARE_READ16_MEMBER( fatfury2_protection_16_r );
+ DECLARE_WRITE16_MEMBER( fatfury2_protection_16_w );
+ void fatfury2_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+
+
+ neogeo_banked_cart_device* m_bankdev;
+ uint32_t m_fatfury2_prot_data;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type KOF2002_PROT;
+
+#define MCFG_KOF2002_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, KOF2002_PROT, 0)
+
+
+class kof2002_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ kof2002_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void kof2002_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ void matrim_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ void samsho5_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ void samsh5sp_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type KOF98_PROT;
+
+#define MCFG_KOF98_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, KOF98_PROT, 0)
+
+
+class kof98_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ kof98_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void kof98_decrypt_68k(uint8_t* cpurom, uint32_t cpurom_size);
+ void install_kof98_protection(cpu_device* maincpu);
+ DECLARE_WRITE16_MEMBER(kof98_prot_w);
+ DECLARE_READ16_MEMBER(kof98_prot_r);
+ int kof98_prot_state;
+ uint16_t m_default_rom[2];
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type MSLUGX_PROT;
+
+#define MCFG_MSLUGX_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, MSLUGX_PROT, 0)
+
+
+class mslugx_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ mslugx_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+
+ DECLARE_WRITE16_MEMBER( mslugx_protection_16_w );
+ DECLARE_READ16_MEMBER( mslugx_protection_16_r );
+ void mslugx_install_protection(cpu_device* maincpu);
+
+ uint16_t m_mslugx_counter;
+ uint16_t m_mslugx_command;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type PCM2_PROT;
+
+#define MCFG_PCM2_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PCM2_PROT, 0)
+
+
+class pcm2_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ pcm2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void neo_pcm2_snk_1999(uint8_t* ymrom, uint32_t ymsize, int value);
+ void neo_pcm2_swap(uint8_t* ymrom, uint32_t ymsize, int value);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type PVC_PROT;
+
+#define MCFG_PVC_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PVC_PROT, 0)
+
+
+class pvc_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ pvc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ void pvc_write_unpack_color();
+ void pvc_write_pack_color();
+ void pvc_write_bankswitch(address_space &space);
+ DECLARE_READ16_MEMBER(pvc_prot_r);
+ DECLARE_WRITE16_MEMBER(pvc_prot_w);
+ void install_pvc_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ neogeo_banked_cart_device* m_bankdev;
+
+ uint16_t m_cartridge_ram[0x1000];
+
+ void mslug5_decrypt_68k(uint8_t* rom, uint32_t size);
+ void svc_px_decrypt(uint8_t* rom, uint32_t size);
+ void kf2k3pcb_decrypt_68k(uint8_t* rom, uint32_t size);
+ void kof2003_decrypt_68k(uint8_t* rom, uint32_t size);
+ void kof2003h_decrypt_68k(uint8_t* rom, uint32_t size);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+
+extern const device_type SBP_PROT;
+
+#define MCFG_SBP_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, SBP_PROT, 0)
+
+
+class sbp_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ sbp_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+
+ uint8_t* m_mainrom;
+
+ void sbp_install_protection(cpu_device* maincpu, uint8_t* cpurom, uint32_t cpurom_size);
+ DECLARE_WRITE16_MEMBER(sbp_lowerrom_w);
+ DECLARE_READ16_MEMBER(sbp_lowerrom_r);
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+extern const device_type SMA_PROT;
+
+#define MCFG_SMA_PROT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, SMA_PROT, 0)
+
+
+class sma_prot_device : public device_t
+{
+public:
+ // construction/destruction
+ sma_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+
+ DECLARE_WRITE16_MEMBER( kof99_bankswitch_w );
+ DECLARE_WRITE16_MEMBER( garou_bankswitch_w );
+ DECLARE_WRITE16_MEMBER( garouh_bankswitch_w );
+ DECLARE_WRITE16_MEMBER( mslug3_bankswitch_w );
+ DECLARE_WRITE16_MEMBER( kof2000_bankswitch_w );
+ DECLARE_READ16_MEMBER( prot_9a37_r );
+ DECLARE_READ16_MEMBER( sma_random_r );
+ void reset_sma_rng();
+ void sma_install_random_read_handler(cpu_device* maincpu, int addr1, int addr2 );
+ void kof99_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ void garou_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ void garouh_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ void mslug3_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ void kof2000_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev);
+ neogeo_banked_cart_device* m_bankdev;
+ void kof99_decrypt_68k(uint8_t* base);
+ void garou_decrypt_68k(uint8_t* base);
+ void garouh_decrypt_68k(uint8_t* base);
+ void mslug3_decrypt_68k(uint8_t* base);
+ void kof2000_decrypt_68k(uint8_t* base);
+
+ // PCB decrypts (not sma)
+ void svcpcb_gfx_decrypt(uint8_t* rom, uint32_t rom_size);
+ void svcpcb_s1data_decrypt(uint8_t* rom, uint32_t rom_size);
+ void kf2k3pcb_gfx_decrypt(uint8_t* rom, uint32_t rom_size);
+ void kf2k3pcb_decrypt_s1data(uint8_t* rom, uint32_t rom_size, uint8_t* fixed, uint32_t fixed_size);
+ void kf2k3pcb_sp1_decrypt(uint16_t* rom);
+
+ uint16_t m_sma_rng;
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+};
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp
new file mode 100644
index 00000000000..0324ff6e9d0
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp
@@ -0,0 +1,221 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Controller Port emulation
+
+ This actually covers two separate piece of hardware of Neo Geo system:
+ - The 15-pin controller ports that are used for controllers in the
+ AES home system and for mahjong controllers in the MVS arcade PCB
+ - The controller part of the main edge connector that is used for
+ joystick inputs in the MVS arcade PCB
+
+ Technically, the latter is not a configurable slot, because it's not
+ a component that arcade operators could simply change with a different
+ controller, but this implementation allows for simpler code.
+
+**********************************************************************/
+
+#include "ctrl.h"
+// slot devices
+#include "joystick.h"
+#include "mahjong.h"
+#include "dial.h"
+#include "irrmaze.h"
+#include "kizuna4p.h"
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type NEOGEO_CONTROL_PORT = device_creator<neogeo_control_port_device>;
+const device_type NEOGEO_CTRL_EDGE_CONNECTOR = device_creator<neogeo_ctrl_edge_port_device>;
+
+
+//**************************************************************************
+// CARD INTERFACE
+//**************************************************************************
+
+//-------------------------------------------------
+// device_neogeo_control_port_interface - constructor
+//-------------------------------------------------
+
+device_neogeo_control_port_interface::device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device)
+ : device_slot_card_interface(mconfig,device)
+{
+ m_port = dynamic_cast<neogeo_control_port_device *>(device.owner());
+}
+
+
+//-------------------------------------------------
+// ~device_neogeo_control_port_interface - destructor
+//-------------------------------------------------
+
+device_neogeo_control_port_interface::~device_neogeo_control_port_interface()
+{
+}
+
+//-------------------------------------------------
+// device_neogeo_ctrl_edge_interface - constructor
+//-------------------------------------------------
+
+device_neogeo_ctrl_edge_interface::device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device)
+ : device_slot_card_interface(mconfig,device)
+{
+ m_port = dynamic_cast<neogeo_ctrl_edge_port_device *>(device.owner());
+}
+
+
+//-------------------------------------------------
+// ~device_neogeo_ctrl_edge_interface - destructor
+//-------------------------------------------------
+
+device_neogeo_ctrl_edge_interface::~device_neogeo_ctrl_edge_interface()
+{
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_control_port_device - constructor
+//-------------------------------------------------
+
+neogeo_control_port_device::neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_CONTROL_PORT, "SNK Neo Geo control port", tag, owner, clock, "neogeo_control_port", __FILE__),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
+{
+}
+
+
+//-------------------------------------------------
+// ~neogeo_control_port_device - destructor
+//-------------------------------------------------
+
+neogeo_control_port_device::~neogeo_control_port_device()
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_control_port_device::device_start()
+{
+ m_device = dynamic_cast<device_neogeo_control_port_interface *>(get_card_device());
+}
+
+
+uint8_t neogeo_control_port_device::read_ctrl()
+{
+ uint8_t data = 0xff;
+ if (m_device)
+ data &= m_device->read_ctrl();
+ return data;
+}
+
+uint8_t neogeo_control_port_device::read_start_sel()
+{
+ uint8_t data = 0xff;
+ if (m_device)
+ data &= m_device->read_start_sel();
+ return data;
+}
+
+
+void neogeo_control_port_device::write_ctrlsel(uint8_t data)
+{
+ if (m_device)
+ m_device->write_ctrlsel(data);
+}
+
+
+//-------------------------------------------------
+// neogeo_ctrl_edge_port_device - constructor
+//-------------------------------------------------
+
+neogeo_ctrl_edge_port_device::neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_CTRL_EDGE_CONNECTOR, "SNK Neo Geo Edge Connector (Controller)", tag, owner, clock, "neogeo_ctrl_edge", __FILE__),
+ device_slot_interface(mconfig, *this), m_device(nullptr)
+{
+}
+
+
+//-------------------------------------------------
+// ~neogeo_ctrl_edge_port_device - destructor
+//-------------------------------------------------
+
+neogeo_ctrl_edge_port_device::~neogeo_ctrl_edge_port_device()
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_ctrl_edge_port_device::device_start()
+{
+ m_device = dynamic_cast<device_neogeo_ctrl_edge_interface *>(get_card_device());
+}
+
+
+READ8_MEMBER(neogeo_ctrl_edge_port_device::in0_r)
+{
+ uint8_t data = 0xff;
+ if (m_device)
+ data &= m_device->in0_r(space, offset, mem_mask);
+ return data;
+}
+
+READ8_MEMBER(neogeo_ctrl_edge_port_device::in1_r)
+{
+ uint8_t data = 0xff;
+ if (m_device)
+ data &= m_device->in1_r(space, offset, mem_mask);
+ return data;
+}
+
+uint8_t neogeo_ctrl_edge_port_device::read_start_sel()
+{
+ uint8_t data = 0xff;
+ if (m_device)
+ data &= m_device->read_start_sel();
+ return data;
+}
+
+void neogeo_ctrl_edge_port_device::write_ctrlsel(uint8_t data)
+{
+ if (m_device)
+ m_device->write_ctrlsel(data);
+}
+
+
+
+//-------------------------------------------------
+// SLOT_INTERFACE( neogeo_control_port_devices )
+//-------------------------------------------------
+
+SLOT_INTERFACE_START( neogeo_controls )
+ SLOT_INTERFACE("joy", NEOGEO_JOY)
+ SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL)
+SLOT_INTERFACE_END
+
+SLOT_INTERFACE_START( neogeo_arc_edge )
+ SLOT_INTERFACE("joy", NEOGEO_JOY_AC)
+SLOT_INTERFACE_END
+
+SLOT_INTERFACE_START( neogeo_arc_edge_fixed )
+ SLOT_INTERFACE("joy", NEOGEO_JOY_AC)
+ SLOT_INTERFACE("dial", NEOGEO_DIAL)
+ SLOT_INTERFACE("irrmaze", NEOGEO_IRRMAZE)
+ SLOT_INTERFACE("kiz4p", NEOGEO_KIZ4P)
+SLOT_INTERFACE_END
+
+SLOT_INTERFACE_START( neogeo_arc_pin15 )
+ SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL)
+SLOT_INTERFACE_END
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h
new file mode 100644
index 00000000000..678e9871cfa
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h
@@ -0,0 +1,130 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo controller port emulation
+
+**********************************************************************/
+
+
+#pragma once
+
+#ifndef __NEOGEO_CONTROL_PORT__
+#define __NEOGEO_CONTROL_PORT__
+
+#include "emu.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class neogeo_control_port_device;
+class neogeo_ctrl_edge_port_device;
+
+// ======================> device_neogeo_control_port_interface
+
+class device_neogeo_control_port_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_neogeo_control_port_interface();
+
+ virtual uint8_t read_ctrl() { return 0xff; };
+ virtual uint8_t read_start_sel() { return 0xff; };
+ virtual void write_ctrlsel(uint8_t data) { };
+
+protected:
+ neogeo_control_port_device *m_port;
+};
+
+// ======================> neogeo_control_port_device
+
+class neogeo_control_port_device : public device_t,
+ public device_slot_interface
+{
+public:
+ // construction/destruction
+ neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~neogeo_control_port_device();
+
+ uint8_t read_ctrl();
+ uint8_t read_start_sel();
+ void write_ctrlsel(uint8_t data);
+ DECLARE_READ8_MEMBER( ctrl_r ) { return read_ctrl(); }
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ device_neogeo_control_port_interface *m_device;
+};
+
+
+// ======================> device_neogeo_ctrl_edge_interface
+
+class device_neogeo_ctrl_edge_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_neogeo_ctrl_edge_interface();
+
+ virtual uint8_t read_start_sel() { return 0xff; }
+ virtual DECLARE_READ8_MEMBER( in0_r ) { return 0xff; }
+ virtual DECLARE_READ8_MEMBER( in1_r ) { return 0xff; }
+ virtual void write_ctrlsel(uint8_t data) { }
+
+protected:
+ neogeo_ctrl_edge_port_device *m_port;
+};
+
+// ======================> neogeo_ctrl_edge_port_device
+
+class neogeo_ctrl_edge_port_device : public device_t,
+ public device_slot_interface
+{
+public:
+ // construction/destruction
+ neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual ~neogeo_ctrl_edge_port_device();
+
+ uint8_t read_start_sel();
+ DECLARE_READ8_MEMBER( in0_r );
+ DECLARE_READ8_MEMBER( in1_r );
+ void write_ctrlsel(uint8_t data);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ device_neogeo_ctrl_edge_interface *m_device;
+};
+
+
+// device type definition
+extern const device_type NEOGEO_CONTROL_PORT;
+extern const device_type NEOGEO_CTRL_EDGE_CONNECTOR;
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_NEOGEO_CONTROL_PORT_ADD(_tag, _slot_intf, _def_slot, _fixed) \
+ MCFG_DEVICE_ADD(_tag, NEOGEO_CONTROL_PORT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed)
+
+#define MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD(_tag, _slot_intf, _def_slot, _fixed) \
+ MCFG_DEVICE_ADD(_tag, NEOGEO_CTRL_EDGE_CONNECTOR, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed)
+
+
+
+SLOT_INTERFACE_EXTERN( neogeo_controls );
+SLOT_INTERFACE_EXTERN( neogeo_arc_edge );
+SLOT_INTERFACE_EXTERN( neogeo_arc_edge_fixed );
+SLOT_INTERFACE_EXTERN( neogeo_arc_pin15 );
+
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp
new file mode 100644
index 00000000000..2193753bb91
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp
@@ -0,0 +1,131 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Dial Controller emulation
+
+**********************************************************************/
+
+#include "dial.h"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_DIAL = device_creator<neogeo_dial_device>;
+
+
+static INPUT_PORTS_START( neogeo_dial )
+ PORT_START("JOY1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* note it needs it from 0x80 when using paddle */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+
+ PORT_START("JOY2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* note it needs it from 0x80 when using paddle */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+
+ PORT_START("DIAL1")
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(1)
+
+ PORT_START("DIAL2")
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_dial_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_dial );
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_dial_device - constructor
+//-------------------------------------------------
+
+neogeo_dial_device::neogeo_dial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_DIAL, "SNK Neo Geo Dial Controller", tag, owner, clock, "neogeo_dial", __FILE__),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2"),
+ m_dial1(*this, "DIAL1"),
+ m_dial2(*this, "DIAL2")
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_dial_device::device_start()
+{
+ save_item(NAME(m_ctrl_sel));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_dial_device::device_reset()
+{
+ m_ctrl_sel = 0;
+}
+
+
+//-------------------------------------------------
+// in0_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_dial_device::in0_r)
+{
+ uint8_t res = 0;
+ if (m_ctrl_sel & 0x01)
+ res = m_joy1->read();
+ else
+ res = m_dial1->read();
+
+ return res;
+}
+
+//-------------------------------------------------
+// in1_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_dial_device::in1_r)
+{
+ uint8_t res = 0;
+ if (m_ctrl_sel & 0x01)
+ res = m_joy2->read();
+ else
+ res = m_dial2->read();
+
+ return res;
+}
+
+//-------------------------------------------------
+// write_ctrlsel
+//-------------------------------------------------
+
+void neogeo_dial_device::write_ctrlsel(uint8_t data)
+{
+ m_ctrl_sel = data;
+}
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h
new file mode 100644
index 00000000000..ff4d9d12dfe
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h
@@ -0,0 +1,58 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Dial controller emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __NEOGEO_DIAL__
+#define __NEOGEO_DIAL__
+
+
+#include "emu.h"
+#include "ctrl.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> neogeo_dial_device
+
+class neogeo_dial_device : public device_t,
+ public device_neogeo_ctrl_edge_interface
+{
+public:
+ // construction/destruction
+ neogeo_dial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_control_port_interface overrides
+ virtual DECLARE_READ8_MEMBER( in0_r ) override;
+ virtual DECLARE_READ8_MEMBER( in1_r ) override;
+ virtual void write_ctrlsel(uint8_t data) override;
+
+private:
+ required_ioport m_joy1;
+ required_ioport m_joy2;
+ required_ioport m_dial1;
+ required_ioport m_dial2;
+ uint8_t m_ctrl_sel;
+};
+
+
+
+// device type definition
+extern const device_type NEOGEO_DIAL;
+
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp
new file mode 100644
index 00000000000..9efbef8f6d0
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp
@@ -0,0 +1,113 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Irritation Maze Analog Controller emulation
+
+**********************************************************************/
+
+#include "irrmaze.h"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_IRRMAZE = device_creator<neogeo_irrmaze_device>;
+
+
+static INPUT_PORTS_START( neogeo_irrmaze )
+ PORT_START("BUTTONS")
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+
+ PORT_START("TRACK_X")
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(20) PORT_REVERSE
+
+ PORT_START("TRACK_Y")
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(10) PORT_KEYDELTA(20) PORT_REVERSE
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_irrmaze_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_irrmaze );
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_irrmaze_device - constructor
+//-------------------------------------------------
+
+neogeo_irrmaze_device::neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_IRRMAZE, "SNK Neo Geo Irritating Maze Analog Controller", tag, owner, clock, "neogeo_irrmaze", __FILE__),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_tx(*this, "TRACK_X"),
+ m_ty(*this, "TRACK_Y"),
+ m_buttons(*this, "BUTTONS")
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_irrmaze_device::device_start()
+{
+ save_item(NAME(m_ctrl_sel));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_irrmaze_device::device_reset()
+{
+ m_ctrl_sel = 0;
+}
+
+
+//-------------------------------------------------
+// in0_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_irrmaze_device::in0_r)
+{
+ uint8_t res = 0;
+ if (m_ctrl_sel & 0x01)
+ res = m_ty->read();
+ else
+ res = m_tx->read();
+
+ return res;
+}
+
+//-------------------------------------------------
+// in1_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_irrmaze_device::in1_r)
+{
+ return m_buttons->read();
+}
+
+//-------------------------------------------------
+// write_ctrlsel
+//-------------------------------------------------
+
+void neogeo_irrmaze_device::write_ctrlsel(uint8_t data)
+{
+ m_ctrl_sel = data;
+}
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h
new file mode 100644
index 00000000000..2ba9c17c13a
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h
@@ -0,0 +1,57 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Dial controller emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __NEOGEO_IRRMAZE__
+#define __NEOGEO_IRRMAZE__
+
+
+#include "emu.h"
+#include "ctrl.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> neogeo_dial_device
+
+class neogeo_irrmaze_device : public device_t,
+ public device_neogeo_ctrl_edge_interface
+{
+public:
+ // construction/destruction
+ neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_control_port_interface overrides
+ virtual DECLARE_READ8_MEMBER( in0_r ) override;
+ virtual DECLARE_READ8_MEMBER( in1_r ) override;
+ virtual void write_ctrlsel(uint8_t data) override;
+
+private:
+ required_ioport m_tx;
+ required_ioport m_ty;
+ required_ioport m_buttons;
+ uint8_t m_ctrl_sel;
+};
+
+
+
+// device type definition
+extern const device_type NEOGEO_IRRMAZE;
+
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp
new file mode 100644
index 00000000000..1ab8a350afc
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp
@@ -0,0 +1,205 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Joystick emulation
+
+**********************************************************************/
+
+#include "joystick.h"
+
+
+
+/**********************************************************************
+
+ Implementation through the 15-pin controller port (used by AES)
+
+ **********************************************************************/
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_JOY = device_creator<neogeo_joystick_device>;
+
+
+static INPUT_PORTS_START( neogeo_joy )
+ PORT_START("JOY")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
+
+ PORT_START("START_SELECT")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_joystick_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_joy );
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_joystick_device - constructor
+//-------------------------------------------------
+
+neogeo_joystick_device::neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_JOY, "SNK Neo Geo Joystick", tag, owner, clock, "neogeo_joy", __FILE__),
+ device_neogeo_control_port_interface(mconfig, *this),
+ m_joy(*this, "JOY"),
+ m_ss(*this, "START_SELECT")
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_joystick_device::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_joystick_device::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// read_ctrl
+//-------------------------------------------------
+
+uint8_t neogeo_joystick_device::read_ctrl()
+{
+ return m_joy->read();
+}
+
+//-------------------------------------------------
+// read_start_sel
+//-------------------------------------------------
+
+uint8_t neogeo_joystick_device::read_start_sel()
+{
+ return m_ss->read();
+}
+
+
+
+/**********************************************************************
+
+ Implementation through the edge connector (used by MVS) and
+ connecting two controllers
+
+ **********************************************************************/
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_JOY_AC = device_creator<neogeo_joy_ac_device>;
+
+
+static INPUT_PORTS_START( neogeo_joy_ac )
+ PORT_START("JOY1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
+
+ PORT_START("JOY2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_joy_ac_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_joy_ac );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_joy_ac_device / neogeo_joystick_device - constructor
+//-------------------------------------------------
+
+neogeo_joy_ac_device::neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_JOY_AC, "SNK Neo Geo Arcade Joystick", tag, owner, clock, "neogeo_joyac", __FILE__),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2")
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_joy_ac_device::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_joy_ac_device::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// in0_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_joy_ac_device::in0_r)
+{
+ return m_joy1->read();
+}
+
+//-------------------------------------------------
+// in1_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_joy_ac_device::in1_r)
+{
+ return m_joy2->read();
+}
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h
new file mode 100644
index 00000000000..c7f571f6d36
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h
@@ -0,0 +1,81 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Joystick emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __NEOGEO_JOYSTICK__
+#define __NEOGEO_JOYSTICK__
+
+
+#include "emu.h"
+#include "ctrl.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> neogeo_joystick_device
+
+class neogeo_joystick_device : public device_t,
+ public device_neogeo_control_port_interface
+{
+public:
+ // construction/destruction
+ neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_control_port_interface overrides
+ virtual uint8_t read_ctrl() override;
+ virtual uint8_t read_start_sel() override;
+
+private:
+ required_ioport m_joy;
+ required_ioport m_ss;
+};
+
+
+// ======================> neogeo_joy_ac_device
+
+class neogeo_joy_ac_device : public device_t,
+ public device_neogeo_ctrl_edge_interface
+{
+public:
+ // construction/destruction
+ neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_ctrl_edge_interface overrides
+ virtual DECLARE_READ8_MEMBER( in0_r ) override;
+ virtual DECLARE_READ8_MEMBER( in1_r ) override;
+
+private:
+ required_ioport m_joy1;
+ required_ioport m_joy2;
+};
+
+
+// device type definition
+extern const device_type NEOGEO_JOY;
+extern const device_type NEOGEO_JOY_AC;
+
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp
new file mode 100644
index 00000000000..ed721ef4516
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp
@@ -0,0 +1,171 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Kizuna 4Players Controller emulation
+
+**********************************************************************/
+
+#include "kizuna4p.h"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_KIZ4P = device_creator<neogeo_kizuna4p_device>;
+
+
+static INPUT_PORTS_START( neogeo_kiz4p )
+ PORT_START("JOY1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
+
+ PORT_START("JOY2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
+
+ PORT_START("JOY3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3)
+
+ PORT_START("JOY4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4)
+
+ PORT_START("START13")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START("START24")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START4 )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_kizuna4p_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_kiz4p );
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_kizuna4p_device - constructor
+//-------------------------------------------------
+
+neogeo_kizuna4p_device::neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, NEOGEO_KIZ4P, "SNK Neo Geo Kizuna 4P Controller", tag, owner, clock, "neogeo_kiz4p", __FILE__),
+ device_neogeo_ctrl_edge_interface(mconfig, *this),
+ m_joy1(*this, "JOY1"),
+ m_joy2(*this, "JOY2"),
+ m_joy3(*this, "JOY3"),
+ m_joy4(*this, "JOY4"),
+ m_ss1(*this, "START13"),
+ m_ss2(*this, "START24")
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_kizuna4p_device::device_start()
+{
+ save_item(NAME(m_ctrl_sel));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_kizuna4p_device::device_reset()
+{
+ m_ctrl_sel = 0;
+}
+
+
+//-------------------------------------------------
+// in0_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_kizuna4p_device::in0_r)
+{
+ uint8_t res = 0;
+ if (m_ctrl_sel & 0x01)
+ res = m_joy3->read();
+ else
+ res = m_joy1->read();
+
+ if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10);
+
+ return res;
+}
+
+//-------------------------------------------------
+// in1_r
+//-------------------------------------------------
+
+READ8_MEMBER(neogeo_kizuna4p_device::in1_r)
+{
+ uint8_t res = 0;
+ if (m_ctrl_sel & 0x01)
+ res = m_joy4->read();
+ else
+ res = m_joy2->read();
+
+ if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10);
+
+ return res;
+}
+
+//-------------------------------------------------
+// read_start_sel
+//-------------------------------------------------
+
+uint8_t neogeo_kizuna4p_device::read_start_sel()
+{
+ return (BIT(m_ss1->read(), m_ctrl_sel & 0x01)) | (BIT(m_ss2->read(), m_ctrl_sel & 0x01) << 2);
+}
+
+
+//-------------------------------------------------
+// write_ctrlsel
+//-------------------------------------------------
+
+void neogeo_kizuna4p_device::write_ctrlsel(uint8_t data)
+{
+ m_ctrl_sel = data;
+}
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h
new file mode 100644
index 00000000000..d35b7d15ca2
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h
@@ -0,0 +1,61 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Kizuna 4Players controller emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __NEOGEO_KIZ4P__
+#define __NEOGEO_KIZ4P__
+
+
+#include "emu.h"
+#include "ctrl.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> neogeo_kizuna4p_device
+
+class neogeo_kizuna4p_device : public device_t,
+ public device_neogeo_ctrl_edge_interface
+{
+public:
+ // construction/destruction
+ neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_control_port_interface overrides
+ virtual DECLARE_READ8_MEMBER( in0_r ) override;
+ virtual DECLARE_READ8_MEMBER( in1_r ) override;
+ virtual uint8_t read_start_sel() override;
+ virtual void write_ctrlsel(uint8_t data) override;
+
+private:
+ required_ioport m_joy1;
+ required_ioport m_joy2;
+ required_ioport m_joy3;
+ required_ioport m_joy4;
+ required_ioport m_ss1;
+ required_ioport m_ss2;
+ uint8_t m_ctrl_sel;
+};
+
+
+
+// device type definition
+extern const device_type NEOGEO_KIZ4P;
+
+
+#endif
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp
new file mode 100644
index 00000000000..bca18ed6bfb
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp
@@ -0,0 +1,171 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Mahjong controller emulation
+
+**********************************************************************/
+
+#include "mahjong.h"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEOGEO_MJCTRL_AC = device_creator<neogeo_mjctrl_ac_device>;
+const device_type NEOGEO_MJCTRL = device_creator<neogeo_mjctrl_device>;
+
+
+static INPUT_PORTS_START( neogeo_mj_ac )
+ PORT_START("MJ.0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_F )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_G )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("MJ.1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_H )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_I )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_M )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_N )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 )
+
+ // is this actually connected?
+ PORT_START("MJ.2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
+
+ PORT_START("MJ.3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( neogeo_mj )
+ PORT_INCLUDE( neogeo_mj_ac )
+
+ PORT_START("START_SELECT")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor neogeo_mjctrl_ac_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_mj_ac );
+}
+
+ioport_constructor neogeo_mjctrl_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( neogeo_mj );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// neogeo_joystick_device - constructor
+//-------------------------------------------------
+
+neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+ , device_neogeo_control_port_interface(mconfig, *this)
+ , m_mjpanel(*this, "MJ.%u", 0)
+{
+}
+
+neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL_AC, "SNK Neo Geo Arcade Mahjong panel", tag, owner, clock, "neogeo_mjac", __FILE__)
+{
+}
+
+neogeo_mjctrl_device::neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL, "SNK Neo Geo Mahjong controller", tag, owner, clock, "neogeo_mjctrl", __FILE__),
+ m_ss(*this, "START_SELECT")
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void neogeo_mjctrl_ac_device::device_start()
+{
+ save_item(NAME(m_ctrl_sel));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void neogeo_mjctrl_ac_device::device_reset()
+{
+ m_ctrl_sel = 0;
+}
+
+
+//-------------------------------------------------
+// read_ctrl
+//-------------------------------------------------
+
+uint8_t neogeo_mjctrl_ac_device::read_ctrl()
+{
+ uint8_t res = 0;
+ switch (m_ctrl_sel)
+ {
+ default:
+ case 0x00: res = 0xff; break;
+ case 0x09: res = m_mjpanel[0]->read(); break;
+ case 0x12: res = m_mjpanel[1]->read(); break;
+ case 0x1b: res = m_mjpanel[2]->read(); break;
+ case 0x24: res = m_mjpanel[3]->read(); break;
+ }
+
+ return res;
+}
+
+//-------------------------------------------------
+// write_ctrlsel
+//-------------------------------------------------
+
+void neogeo_mjctrl_ac_device::write_ctrlsel(uint8_t data)
+{
+ m_ctrl_sel = data;
+}
+
+//-------------------------------------------------
+// read_start_sel
+//-------------------------------------------------
+
+uint8_t neogeo_mjctrl_device::read_start_sel()
+{
+ return m_ss->read();
+}
diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h
new file mode 100644
index 00000000000..d92b974b213
--- /dev/null
+++ b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h
@@ -0,0 +1,75 @@
+// license:BSD-3-Clause
+// copyright-holders:Fabio Priuli
+/**********************************************************************
+
+ SNK Neo Geo Mahjong controller emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __NEOGEO_MJCTRL__
+#define __NEOGEO_MJCTRL__
+
+
+#include "emu.h"
+#include "ctrl.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> neogeo_mjctrl_ac_device
+
+class neogeo_mjctrl_ac_device : public device_t,
+ public device_neogeo_control_port_interface
+{
+public:
+ // construction/destruction
+ neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
+ neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // device_neogeo_control_port_interface overrides
+ virtual uint8_t read_ctrl() override;
+ virtual void write_ctrlsel(uint8_t data) override;
+
+private:
+ required_ioport_array<4> m_mjpanel;
+ uint8_t m_ctrl_sel;
+};
+
+// ======================> neogeo_mjctrl_device
+
+class neogeo_mjctrl_device : public neogeo_mjctrl_ac_device
+{
+public:
+ // construction/destruction
+ neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override;
+
+protected:
+
+ // device_neogeo_control_port_interface overrides
+ virtual uint8_t read_start_sel() override;
+
+private:
+ required_ioport m_ss;
+};
+
+
+// device type definition
+extern const device_type NEOGEO_MJCTRL;
+extern const device_type NEOGEO_MJCTRL_AC;
+
+
+#endif
diff --git a/docs/release/src/hbmame/drivers/1942.cpp b/docs/release/src/hbmame/drivers/1942.cpp
new file mode 100644
index 00000000000..c7e369c78fe
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/1942.cpp
@@ -0,0 +1,126 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/1942.cpp"
+
+ROM_START( 1942c64 )
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "srb-03.m3", 0x00000, 0x4000, CRC(d9dafcc3) SHA1(a089a9bc55fb7d6d0ac53f91b258396d5d62677a) )
+ ROM_LOAD( "srb-04.m4", 0x04000, 0x4000, CRC(da0cf924) SHA1(856fbb302c9a4ec7850a26ab23dab8467f79bba4) )
+ ROM_LOAD( "srb-05.m5", 0x10000, 0x4000, CRC(d102911c) SHA1(35ba1d82bd901940f61d8619273463d02fc0a952) )
+ ROM_LOAD( "srb-06.m6", 0x14000, 0x2000, CRC(466f8248) SHA1(2ccc8fc59962d3001fbc10e8d2f20a254a74f251) )
+ ROM_LOAD( "srb-07.m7", 0x18000, 0x4000, CRC(0d31038c) SHA1(b588eaf6fddd66ecb2d9832dc197f286f1ccd846) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "1942c64.c11", 0x0000, 0x4000, CRC(4ee7ab6b) SHA1(609d2d9124da47d305c15ee034efd64a73adc1c0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) )
+
+ ROM_REGION( 0xc000, "gfx2", 0 )
+ ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) )
+ ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) )
+ ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) )
+ ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) )
+ ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) )
+ ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) )
+ ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) )
+ ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) )
+ ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) )
+
+ ROM_REGION( 0x0a00, "proms", 0 )
+ ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) )
+ ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) )
+ ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) )
+ ROM_LOAD( "sb-0.f1", 0x0300, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) )
+ ROM_LOAD( "sb-4.d6", 0x0400, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) )
+ ROM_LOAD( "sb-8.k3", 0x0500, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) )
+ ROM_LOAD( "sb-2.d1", 0x0600, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) )
+ ROM_LOAD( "sb-3.d2", 0x0700, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) )
+ ROM_LOAD( "sb-1.k6", 0x0800, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) )
+ ROM_LOAD( "sb-9.m11", 0x0900, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) )
+ROM_END
+
+ROM_START( 1942fpa )
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "1942fpa.m3", 0x00000, 0x4000, CRC(dcec86c9) SHA1(73ee4ca2d861eaa5805b4b8ff7db05cd6f06650a) )
+ ROM_LOAD( "1942fpa.m4", 0x04000, 0x4000, CRC(cdd75d78) SHA1(6ee714f9d3dd1a0c9404a8e3c8ca96a74c08e1cf) )
+ ROM_LOAD( "srb-05.m5", 0x10000, 0x4000, CRC(d102911c) SHA1(35ba1d82bd901940f61d8619273463d02fc0a952) )
+ ROM_LOAD( "srb-06.m6", 0x14000, 0x2000, CRC(466f8248) SHA1(2ccc8fc59962d3001fbc10e8d2f20a254a74f251) )
+ ROM_LOAD( "srb-07.m7", 0x18000, 0x4000, CRC(0d31038c) SHA1(b588eaf6fddd66ecb2d9832dc197f286f1ccd846) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sr-02.f2", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) )
+
+ ROM_REGION( 0xc000, "gfx2", 0 )
+ ROM_LOAD( "sr-08.a1", 0x0000, 0x2000, CRC(3884d9eb) SHA1(5cbd9215fa5ba5a61208b383700adc4428521aed) )
+ ROM_LOAD( "sr-09.a2", 0x2000, 0x2000, CRC(999cf6e0) SHA1(5b8b685038ec98b781908b92eb7fb9506db68544) )
+ ROM_LOAD( "sr-10.a3", 0x4000, 0x2000, CRC(8edb273a) SHA1(85fdd4c690ed31e6396e3c16aa02140ee7ea2d61) )
+ ROM_LOAD( "sr-11.a4", 0x6000, 0x2000, CRC(3a2726c3) SHA1(187c92ef591febdcbd1d42ab850e0cbb62c00873) )
+ ROM_LOAD( "sr-12.a5", 0x8000, 0x2000, CRC(1bd3d8bb) SHA1(ef4dce605eb4dc8035985a415315ec61c21419c6) )
+ ROM_LOAD( "sr-13.a6", 0xa000, 0x2000, CRC(658f02c4) SHA1(f087d69e49e38cf3107350cde18fcf85a8fa04f0) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "sr-14.l1", 0x00000, 0x4000, CRC(2528bec6) SHA1(29f7719f18faad6bd1ec6735cc24e69168361470) )
+ ROM_LOAD( "sr-15.l2", 0x04000, 0x4000, CRC(f89287aa) SHA1(136fff6d2a4f48a488fc7c620213761459c3ada0) )
+ ROM_LOAD( "sr-16.n1", 0x08000, 0x4000, CRC(024418f8) SHA1(145b8d5d6c8654cd090955a98f6dd8c8dbafe7c1) )
+ ROM_LOAD( "sr-17.n2", 0x0c000, 0x4000, CRC(e2c7e489) SHA1(d4b5d575c021f58f6966df189df94e08c5b3621c) )
+
+ ROM_REGION( 0x0a00, "proms", 0 )
+ ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) )
+ ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) )
+ ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) )
+ ROM_LOAD( "sb-0.f1", 0x0300, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) )
+ ROM_LOAD( "sb-4.d6", 0x0400, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) )
+ ROM_LOAD( "sb-8.k3", 0x0500, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) )
+ ROM_LOAD( "sb-2.d1", 0x0600, 0x0100, CRC(8bb8b3df) SHA1(49de2819c4c92057fedcb20425282515d85829aa) )
+ ROM_LOAD( "sb-3.d2", 0x0700, 0x0100, CRC(3b0c99af) SHA1(38f30ac1e48632634e409f328ee3051b987de7ad) )
+ ROM_LOAD( "sb-1.k6", 0x0800, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) )
+ ROM_LOAD( "sb-9.m11", 0x0900, 0x0100, CRC(4921635c) SHA1(aee37d6cdc36acf0f11ff5f93e7b16e4b12f6c39) )
+ROM_END
+
+ROM_START( galagax )
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "galagax1.n3", 0x00000, 0x4000, CRC(c78cdc46) SHA1(50ac4ab7a884b8555f15d959dac2b33e317fcd16) )
+ ROM_LOAD( "galagax1.n4", 0x04000, 0x4000, CRC(863f2f49) SHA1(dbe7d13bcaa3919e1be51ba04fbf50f898e5c76e) )
+ ROM_LOAD( "galagax1.n5", 0x10000, 0x4000, CRC(0da115f9) SHA1(0517c60877a8067fb13c61c63a032a3f5ed16a57) )
+ ROM_LOAD( "1-n6.bin", 0x14000, 0x2000, CRC(821c6481) SHA1(06becb6bf8b4bde3a458098498eecad566a87711) )
+ ROM_LOAD( "1-n7.bin", 0x18000, 0x4000, CRC(5df525e1) SHA1(70cd2910e2945db76bd6ebfa0ff09a5efadc2d0b) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "galagax1.f2", 0x00000, 0x2000, CRC(b3e1862b) SHA1(736fbef1ef15892ba6ea87be5366abf520e3d5fd) )
+
+ ROM_REGION( 0xc000, "gfx2", 0 )
+ ROM_LOAD( "galagax2.a1", 0x00000, 0x2000, CRC(21f3fee2) SHA1(2eed32063b808fae27255e9b026fb92209cfc214) )
+ ROM_LOAD( "galagax2.a2", 0x02000, 0x2000, CRC(5542beae) SHA1(f37fad84fbeb2f98092bdb2f2a3bc80804392e07) )
+ ROM_LOAD( "galagax2.a3", 0x04000, 0x2000, CRC(118e87ec) SHA1(0b79eee01bd6aef2e85409de16ff9cb032c457cb) )
+ ROM_LOAD( "galagax2.a4", 0x06000, 0x2000, CRC(fc3db895) SHA1(bc469fd6f5634eca77728a24e4e6d83a2074c780) )
+ ROM_LOAD( "galagax2.a5", 0x08000, 0x2000, CRC(4a336de1) SHA1(8359abb42fc9f774350524a7fbf561e6c8799822) )
+ ROM_LOAD( "galagax2.a6", 0x0a000, 0x2000, CRC(1d4a69c9) SHA1(34d3ea5e7666fee1ecd0ac763f3114d9c8d60806) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "galagax2.l1", 0x00000, 0x4000, CRC(8408b932) SHA1(bea9d62156c566e7a3ae296e3e411d5542b7544b) )
+ ROM_LOAD( "galagax2.l2", 0x04000, 0x4000, CRC(2218cb80) SHA1(5dd05b59a55804bedf637abb339188e9c9e6037a) )
+ ROM_LOAD( "galagax2.n1", 0x08000, 0x4000, CRC(4d5ed5e5) SHA1(a66e979d8a6ed9cae77c8415130c5f17f8149eda) )
+ ROM_LOAD( "galagax2.n2", 0x0c000, 0x4000, CRC(8f4a1688) SHA1(69bab8f167a47eee34dadf56b1727b414f3e6579) )
+
+ ROM_REGION( 0x0600, "proms", 0 )
+ ROM_LOAD( "sb-5.e8", 0x0000, 0x0100, CRC(93ab8153) SHA1(a792f24e5c0c3c4a6b436102e7a98199f878ece1) )
+ ROM_LOAD( "sb-6.e9", 0x0100, 0x0100, CRC(8ab44f7d) SHA1(f74680a6a987d74b3acb32e6396f20e127874149) )
+ ROM_LOAD( "sb-7.e10", 0x0200, 0x0100, CRC(f4ade9a4) SHA1(62ad31d31d183cce213b03168daa035083b2f28e) )
+ ROM_LOAD( "sb-0.f1", 0x0300, 0x0100, CRC(6047d91b) SHA1(1ce025f9524c1033e48c5294ee7d360f8bfebe8d) )
+ ROM_LOAD( "sb-4.d6", 0x0400, 0x0100, CRC(4858968d) SHA1(20b5dbcaa1a4081b3139e7e2332d8fe3c9e55ed6) )
+ ROM_LOAD( "sb-8.k3", 0x0500, 0x0100, CRC(f6fad943) SHA1(b0a24ea7805272e8ebf72a99b08907bc00d5f82f) )
+ROM_END
+
+GAME( 2015, 1942c64, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Minwah", "1942 with C64 music", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, 1942fpa, 1942, 1942, 1942, _1942_state, 1942, ROT270, "cmonkey", "1942 with attract mode in free play", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, galagax, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Jerky and Chris Moore", "Galaga X (1942 hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/1943.cpp b/docs/release/src/hbmame/drivers/1943.cpp
new file mode 100644
index 00000000000..f2d25984e94
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/1943.cpp
@@ -0,0 +1,63 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/1943.cpp"
+
+ROM_START( 1943h )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bme01addontext.12d", 0x00000, 0x08000, CRC(36ab7c07) SHA1(baa9342c6c509b96e3c28a79284300707461a0fc) )
+ ROM_LOAD( "bme02.13d", 0x10000, 0x10000, CRC(073fc57c) SHA1(6824fa387badd3c420f5c9e2b68159ac8a3aaec7) )
+ ROM_LOAD( "bme03.14d", 0x20000, 0x10000, CRC(835822c2) SHA1(2c2fad13f062069efa7721abb9d807fb5a7625b4) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "bm05.4k", 0x00000, 0x8000, CRC(ee2bd2d7) SHA1(4d2d019a9f8452fbbb247e893280568a2e86073e) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "bm.7k", 0x00000, 0x10000 , NO_DUMP )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "bm04.5h", 0x00000, 0x8000, CRC(46cb9d3d) SHA1(96fd0e714b91fe13a2ca0d185ada9e4b4baa0c0b) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "bm15.10f", 0x00000, 0x8000, CRC(6b1a0443) SHA1(32337c840ccd6815fd5844c194365c58d708f6dc) )
+ ROM_LOAD( "bm16.11f", 0x08000, 0x8000, CRC(23c908c2) SHA1(42b83ff5781be9181802a21ff1b23c17ab1bc5a2) )
+ ROM_LOAD( "bm17.12f", 0x10000, 0x8000, CRC(46bcdd07) SHA1(38feda668be25d1adc04aa36afc73b07c1545f89) )
+ ROM_LOAD( "bm18.14f", 0x18000, 0x8000, CRC(e6ae7ba0) SHA1(959c306dc28b9be2adc54b3d46312d26764c7b8b) )
+ ROM_LOAD( "bm19.10j", 0x20000, 0x8000, CRC(868ababc) SHA1(1c7be905f53c63bad25fbbd9b3cf82d2c7749bc3) )
+ ROM_LOAD( "bm20.11j", 0x28000, 0x8000, CRC(0917e5d4) SHA1(62dd277bc1fa54cfe168ae2380bc147bd17f4205) )
+ ROM_LOAD( "bm21.12j", 0x30000, 0x8000, CRC(9bfb0d89) SHA1(f1bae7ec46edcf46c7af84c054e89b322f8c8972) )
+ ROM_LOAD( "bm22.14j", 0x38000, 0x8000, CRC(04f3c274) SHA1(932780c04abe285e1ec67b726b145175f73eafe0) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "bm24.14k", 0x00000, 0x8000, CRC(11134036) SHA1(88da112ab9fc7e0d8f0e901f273715b950ae588c) )
+ ROM_LOAD( "bm25.14l", 0x08000, 0x8000, CRC(092cf9c1) SHA1(19fe3c714b1d52cbb21dea25cdee5af841f525db) )
+
+ ROM_REGION( 0x40000, "gfx4", 0 )
+ ROM_LOAD( "bm06.10a", 0x00000, 0x8000, CRC(97acc8af) SHA1(c9fa07cb61f6905408b355edabfe453fb652ff0d) )
+ ROM_LOAD( "bm07.11a", 0x08000, 0x8000, CRC(d78f7197) SHA1(6367c7e80e80d4a0d33d7840b5c843c63c80123e) )
+ ROM_LOAD( "bm08.12a", 0x10000, 0x8000, CRC(1a626608) SHA1(755c27a07728fd686168e9d9e4dee3d8f274892a) )
+ ROM_LOAD( "bm09.14a", 0x18000, 0x8000, CRC(92408400) SHA1(3ab299bad1ba115efead53ebd92254abe7a092ba) )
+ ROM_LOAD( "bm10.10c", 0x20000, 0x8000, CRC(8438a44a) SHA1(873629b00cf3f6d8976a7fdafe63cd16e47b7491) )
+ ROM_LOAD( "bm11.11c", 0x28000, 0x8000, CRC(6c69351d) SHA1(c213d5c3e76a5749bc32539604716dcef6dcb694) )
+ ROM_LOAD( "bm12.12c", 0x30000, 0x8000, CRC(5e7efdb7) SHA1(fef271a38dc1a9e45a0c6e27e28e713c77c8f8c9) )
+ ROM_LOAD( "bm13.14c", 0x38000, 0x8000, CRC(1143829a) SHA1(2b3a65e354a205c05a87f783e9938b64bc62396f) )
+
+ ROM_REGION( 0x10000, "gfx5", 0 )
+ ROM_LOAD( "bm14.5f", 0x0000, 0x8000, CRC(4d3c6401) SHA1(ce4f6dbf8fa030ad45cbb5afd58df27fed2d4618) )
+ ROM_LOAD( "bm23.8k", 0x8000, 0x8000, CRC(a52aecbd) SHA1(45b0283d84d394c16c35802463ca95d70d1062d4) )
+
+ ROM_REGION( 0x0c00, "proms", 0 )
+ ROM_LOAD( "bm1.12a", 0x0000, 0x0100, CRC(74421f18) SHA1(5b8b59f6f4e5ad358611de50608f47f41a5b0e51) )
+ ROM_LOAD( "bm2.13a", 0x0100, 0x0100, CRC(ac27541f) SHA1(1796c4c9041dfe28e6319576f21df1dbcb8d12bf) )
+ ROM_LOAD( "bm3.14a", 0x0200, 0x0100, CRC(251fb6ff) SHA1(d1118159b3d429d841e4efa938728ebedadd7ec5) )
+ ROM_LOAD( "bm5.7f", 0x0300, 0x0100, CRC(206713d0) SHA1(fa609f6d675af18c379838583505724d28bcff0e) )
+ ROM_LOAD( "bm10.7l", 0x0400, 0x0100, CRC(33c2491c) SHA1(13da924e4b182759c4aae49034f3a7cbe556ea65) )
+ ROM_LOAD( "bm9.6l", 0x0500, 0x0100, CRC(aeea4af7) SHA1(98f4570ee061e9aa58d8ed2d2f8ae59ce2ec5795) )
+ ROM_LOAD( "bm12.12m", 0x0600, 0x0100, CRC(c18aa136) SHA1(684f04d9a5b94ae1db5fb95763e65271f4cf8e01) )
+ ROM_LOAD( "bm11.12l", 0x0700, 0x0100, CRC(405aae37) SHA1(94a06f81b775c4e49d57d42fc064d3072a253bbd) )
+ ROM_LOAD( "bm8.8c", 0x0800, 0x0100, CRC(c2010a9e) SHA1(be9852500209066e2f0ff2770e0c217d1636a0b5) )
+ ROM_LOAD( "bm7.7c", 0x0900, 0x0100, CRC(b56f30c3) SHA1(9f5e6db464d21457a33ec8bdfdff069632b791db) )
+ ROM_LOAD( "bm4.12c", 0x0a00, 0x0100, CRC(91a8a2e1) SHA1(9583c87eff876f04bc2ccf7218cd8081f1bcdb94) )
+ ROM_LOAD( "bm6.4b", 0x0b00, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) )
+ROM_END
+
+GAME( 1987, 1943h, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: The Battle of Midway (US, Rev C) (hacked)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/arkanoid.cpp b/docs/release/src/hbmame/drivers/arkanoid.cpp
new file mode 100644
index 00000000000..c3a6b908018
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/arkanoid.cpp
@@ -0,0 +1,73 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/arkanoid.cpp"
+
+ROM_START( akblc2dx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "akblc2dx.bin", 0x0000, 0x10000, CRC(e8ca9820) SHA1(ac97ebf285d1b8dd216dfc7024f7630fceac50b6) )
+
+ ROM_REGION( 0x18000, "gfx1", 0 )
+ ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
+ ROM_LOAD( "a75-04.ic63", 0x08000, 0x8000, CRC(71fae199) SHA1(5d253c46ccf4cd2976a5fb8b8713f0f345443d06) )
+ ROM_LOAD( "a75-05.ic62", 0x10000, 0x8000, CRC(c76374e2) SHA1(7520dd48de20db60a2038f134dcaa454988e7874) )
+
+ ROM_REGION( 0x0600, "proms", 0 )
+ ROM_LOAD( "a75-07.ic24", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) )
+ ROM_LOAD( "a75-08.ic23", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) )
+ ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) )
+ROM_END
+
+ROM_START( akgcdx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "akgcdx.bin", 0x0000, 0x10000, CRC(6e6ba560) SHA1(477a68caa1a9d0ce6e21f1164f8ec01434011308) )
+
+ ROM_REGION( 0x18000, "gfx1", 0 )
+ ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
+ ROM_LOAD( "a75-04.ic63", 0x08000, 0x8000, CRC(71fae199) SHA1(5d253c46ccf4cd2976a5fb8b8713f0f345443d06) )
+ ROM_LOAD( "a75-05.ic62", 0x10000, 0x8000, CRC(c76374e2) SHA1(7520dd48de20db60a2038f134dcaa454988e7874) )
+
+ ROM_REGION( 0x0600, "proms", 0 )
+ ROM_LOAD( "a75-07.ic24", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) )
+ ROM_LOAD( "a75-08.ic23", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) )
+ ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) )
+ROM_END
+
+ROM_START( aktaytdx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "aktaytdx.bin", 0x0000, 0x10000, CRC(8606f0ee) SHA1(d1edb58a9b29a354023484089d0ca5f32e9985e4) )
+
+ ROM_REGION( 0x18000, "gfx1", 0 )
+ ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
+ ROM_LOAD( "a75-04.ic63", 0x08000, 0x8000, CRC(71fae199) SHA1(5d253c46ccf4cd2976a5fb8b8713f0f345443d06) )
+ ROM_LOAD( "a75-05.ic62", 0x10000, 0x8000, CRC(c76374e2) SHA1(7520dd48de20db60a2038f134dcaa454988e7874) )
+
+ ROM_REGION( 0x0600, "proms", 0 )
+ ROM_LOAD( "a75-07.ic24", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) )
+ ROM_LOAD( "a75-08.ic23", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) )
+ ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) )
+ROM_END
+
+ROM_START( arkll32 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lle_a75_01-1.rom", 0x0000, 0x8000, CRC(8e6d7e7f) SHA1(3682c548c1bc3ceea2ff685fc5b82e61ed0044d2) )
+ ROM_LOAD( "lle_a75_11.rom", 0x8000, 0x8000, CRC(845fa7b0) SHA1(e89ab456281bcb83a61a89b347dc93303928d365) )
+
+ ROM_REGION( 0x0800, "mcu:mcu", 0 )
+ ROM_LOAD( "a75-06__bootleg_68705.ic14", 0x0000, 0x0800, CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) )
+
+ ROM_REGION( 0x18000, "gfx1", 0 )
+ ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
+ ROM_LOAD( "a75-04.ic63", 0x08000, 0x8000, CRC(71fae199) SHA1(5d253c46ccf4cd2976a5fb8b8713f0f345443d06) )
+ ROM_LOAD( "a75-05.ic62", 0x10000, 0x8000, CRC(c76374e2) SHA1(7520dd48de20db60a2038f134dcaa454988e7874) )
+
+ ROM_REGION( 0x0600, "proms", 0 )
+ ROM_LOAD( "a75-07.ic24", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) )
+ ROM_LOAD( "a75-08.ic23", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) )
+ ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) )
+ROM_END
+
+
+GAME( 2000, akblc2dx, arkanoid, bootleg, arkangc, arkanoid_state, arkblock, ROT90, "hack", "Block Deluxe (Game Corporation)", 0 )
+GAME( 2000, akgcdx, arkanoid, bootleg, arkangc, arkanoid_state, arkgcbl, ROT90, "hack", "Arkanoid Deluxe (Game Corporation)", 0 )
+GAME( 2000, aktaytdx, arkanoid, bootleg, arktayt2, driver_device, 0, ROT90, "hack", "Arkanoid Deluxe (Japan, Tayto)", 0 )
+GAME( 2000, arkll32, arkanoid, p3mcu, arkanoidj, driver_device, 0, ROT90, "hack", "Arkanoid LL32", 0 )
diff --git a/docs/release/src/hbmame/drivers/asteroid.cpp b/docs/release/src/hbmame/drivers/asteroid.cpp
new file mode 100644
index 00000000000..79e5165856c
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/asteroid.cpp
@@ -0,0 +1,145 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/asteroid.cpp"
+
+static INPUT_PORTS_START( astdelu4 )
+ PORT_INCLUDE(astdelux)
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) // Coin Left
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) // Coin Center
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) // Coin Right
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON2) // thrust
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CODE(KEYCODE_RIGHT) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) // right
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_LEFT) PORT_CODE(JOYCODE_X_LEFT_SWITCH) // left
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( starslayer ) // This name does not appear anywhere, but it does say Star Destroyer at the end.
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "035145-02.ef2", 0x6800, 0x0800, CRC(0cc75459) SHA1(2af85c9689b878155004da47fedbde5853a18723) )
+ ROM_LOAD( "035144-02.h2", 0x7000, 0x0800, CRC(096ed35c) SHA1(064d680ded7f30c543f93ae5ca85f90d550f73e5) )
+ ROM_LOAD( "035143-02.j2", 0x7800, 0x0800, CRC(312caa02) SHA1(1ce2eac1ab90b972e3f1fc3d250908f26328d6cb) )
+ /* Vector ROM */
+ ROM_LOAD( "035127-02.ss", 0x5000, 0x0800, CRC(edf610a2) SHA1(bbbf62820a3b06488201137c735c0d8c03cf535c) )
+
+ /* DVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
+ROM_END
+
+ROM_START( asteroid6 )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "asteroid6.ef2", 0x6800, 0x0800, CRC(6cdf25a3) SHA1(96e7882e5e144757d3adc51de8bfd5f583c0302e) )
+ ROM_LOAD( "asteroid6.h2", 0x7000, 0x0800, CRC(b4dcfbde) SHA1(447e888c4af704c9f30801b2417617b7caa73921) )
+ ROM_LOAD( "035143-02.j2", 0x7800, 0x0800, CRC(312caa02) SHA1(1ce2eac1ab90b972e3f1fc3d250908f26328d6cb) )
+ /* Vector ROM */
+ ROM_LOAD( "035127-02.np3", 0x5000, 0x0800, CRC(8b71fd9e) SHA1(8cd5005e531eafa361d6b7e9eed159d164776c70) )
+
+ ROM_REGION( 0x0100, "user1", 0 )
+ ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
+ROM_END
+
+ROM_START( astdelux4 )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "036430.02", 0x6000, 0x0800, CRC(cbcfba4f) SHA1(7e0ed90588e47c89182a18a8f5815ad052a42674) )
+ ROM_LOAD( "036431.02", 0x6800, 0x0800, CRC(3249e623) SHA1(7dd7f4531680e4fe2efb14e22466458c2e2ea4e7) )
+ ROM_LOAD( "036432.02", 0x7000, 0x0800, CRC(6d720c41) SHA1(198218cd2f43f8b83e4463b1f3a8aa49da5015e4) )
+ ROM_LOAD( "036433.03", 0x7800, 0x0800, CRC(0dcc0be6) SHA1(bf10ffb0c4870e777d6b509cbede35db8bb6b0b8) )
+ /* Vector ROM */
+ ROM_LOAD( "036800.02", 0x4800, 0x0800, CRC(5c0ca7a6) SHA1(4abbac4a4974c89a0b44e1a92ea0c8b9095d9594) )
+ ROM_LOAD( "036799.01", 0x5000, 0x0800, CRC(7d511572) SHA1(1956a12bccb5d3a84ce0c1cc10c6ad7f64e30b40) )
+ /* DVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
+ROM_END
+
+
+GAME( 1979, asteroid6, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Clay Cowgill", "Asteroids (Six-Bullet Hack)", MACHINE_SUPPORTS_SAVE )
+GAMEL(1980, astdelux4, asteroid, astdelux, astdelu4, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (Unknown Revision) [h]", MACHINE_SUPPORTS_SAVE, layout_astdelux )
+GAME( 1979, starslayer, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Nufekop", "Starslayer (hack of Asteroids (rev 2))", MACHINE_SUPPORTS_SAVE )
+
+
+/*********************************************************************************************************************/
+
+#if 0
+/* Asteroids Multigame
+
+such a confusing pile of roms
+
+*/
+
+class amg_state : public asteroid_state
+{
+public:
+ amg_state(const machine_config &mconfig, device_type type, const char *tag)
+ : asteroid_state(mconfig, type, tag)
+// , m_maincpu(*this, "maincpu")
+// , m_p_ram(*this, "ram")
+ { }
+
+ DECLARE_DRIVER_INIT(amg);
+};
+
+ROM_START( amg )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "035145-02.ef2", 0x6800, 0x0800, CRC(0cc75459) SHA1(2af85c9689b878155004da47fedbde5853a18723) )
+ ROM_LOAD( "035144-02.h2", 0x7000, 0x0800, CRC(096ed35c) SHA1(064d680ded7f30c543f93ae5ca85f90d550f73e5) )
+ ROM_LOAD( "035143-02.j2", 0x7800, 0x0800, CRC(312caa02) SHA1(1ce2eac1ab90b972e3f1fc3d250908f26328d6cb) )
+ /* Vector ROM */
+ ROM_LOAD( "035127.02", 0x5000, 0x0800, CRC(8b71fd9e) SHA1(8cd5005e531eafa361d6b7e9eed159d164776c70) )
+
+ /* DVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
+
+ ROM_REGION( 0x20000, "user2", 0 )
+ ROM_LOAD( "adla-11a.512", 0x0000, 0x10000, CRC(43ad0f95) SHA1(6105926b4d734ec12e23579faa4453b4d5a981f9) )
+ ROM_LOAD( "adlv-11a.256", 0x10000, 0x8000, CRC(a03b957c) SHA1(45819fafdb34b9da0c3100e5ff143ba8e164c9d0) )
+
+ ROM_REGION( 0x20000, "user3", ROMREGION_ERASEFF )
+ROM_END
+
+DRIVER_INIT_MEMBER( amg_state, amg )
+{
+ UINT8 *src = memregion("user2")->base();
+// int len = memregion("user1")->bytes();
+ UINT8 *dest = memregion("user3")->base();
+
+ offs_t i,j;
+
+ for (i = 0; i < 0x10000; i++)
+ src[i] = BITSWAP8(src[i], 3, 4, 5, 6, 7, 1, 2, 0);
+
+ for (i = 0; i < 0x10000; i++)
+ {
+ j = BITSWAP16(i, 15, 5, 4, 7, 0, 10, 1, 11, 6, 2, 12, 3, 9, 8, 13, 14);
+
+ if (!BIT(i, 10))
+ j ^= 0x100;
+
+ dest[j] = src[i];
+ }
+
+ for (i = 0x10000; i < 0x18000; i++)
+ src[i] = BITSWAP8(src[i], 3, 4, 5, 6, 7, 1, 2, 0);
+
+ for (i = 0x10000; i < 0x18000; i++)
+ {
+ j = BITSWAP16(i, 15, 6, 5, 12, 11, 10, 9, 8, 7, 14, 13, 4, 3, 2, 1, 0);
+ dest[j|0x10000] = src[i];
+ }
+}
+
+
+GAME( 2002, amg, asteroid, asteroid, asteroid, amg_state, amg, ROT0, "Braze", "Asteroids Multigame", MACHINE_NOT_WORKING )
+#endif
+
diff --git a/docs/release/src/hbmame/drivers/astrocde.cpp b/docs/release/src/hbmame/drivers/astrocde.cpp
new file mode 100644
index 00000000000..61cd79fe320
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/astrocde.cpp
@@ -0,0 +1,29 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/astrocde.cpp"
+
+
+ROM_START( tst_gorf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gorfmd.bin", 0x0000, 0x1000, CRC(3776a6a1) SHA1(bd6b0a1dd587e8d4b325ef4133b8e3797416d8d2) )
+ROM_END
+
+ROM_START( tst_gor1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gorftest.bin", 0x0000, 0x0627, CRC(676137a2) SHA1(d99192a16add7b188b29db7f9497b6c129d81144) )
+ROM_END
+
+ROM_START( tst_wow2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "wowmd02b.x1", 0x0000, 0x1000, CRC(0af2f2c8) SHA1(e883afe696c2a444c8691041f1b9e0e015dff517) )
+ROM_END
+
+ROM_START( tst_wow3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "wowmd030.x1", 0x0000, 0x1000, CRC(f493ec4d) SHA1(030cd12e7a7e9ac346e8299df83b62480004c954) )
+ROM_END
+
+GAME( 2005, tst_gorf, 0, gorf, gorf, astrocde_state, gorf, ROT270, "David Turner", "Test Rom - Gorf", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, tst_gor1, 0, gorf, gorf, astrocde_state, gorf, ROT270, "Mark Spaeth", "Test Rom - Gorf Complete Memory Diagnostics", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, tst_wow2, 0, wow, wow, astrocde_state, wow, ROT0, "David Turner", "Test Rom - Wizard of Wor (ver 0.2b)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, tst_wow3, 0, wow, wow, astrocde_state, wow, ROT0, "David Turner", "Test Rom - Wizard of Wor (ver 0.3)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/astrof.cpp b/docs/release/src/hbmame/drivers/astrof.cpp
new file mode 100644
index 00000000000..4de0a573083
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/astrof.cpp
@@ -0,0 +1,19 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/astrof.cpp"
+
+ROM_START( astrofbl )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "afii.6", 0xd000, 0x0800, CRC(d6cd13a4) SHA1(359b00b02f4256f1138c8526214c6a34d2e5b47a) )
+ ROM_LOAD( "afii.5", 0xd800, 0x0800, CRC(6fd3c4df) SHA1(73aad03e2588ac9f249d5751eb4a7c7cd12fd3b9) )
+ ROM_LOAD( "afii.4", 0xe000, 0x0800, CRC(9612dae3) SHA1(8ee1797c212e06c381972b7b555f240ff317d75d) )
+ ROM_LOAD( "afii.3", 0xe800, 0x0800, CRC(5a0fef42) SHA1(92a575abdf17bbb5ed6bc67479049523a985aa75) )
+ ROM_LOAD( "afii.2", 0xf000, 0x0800, CRC(69f8a4fc) SHA1(9f9a935f19187640018009ade92f8993912ef6c2) )
+ ROM_LOAD( "afii.1", 0xf800, 0x0800, CRC(322c09d2) SHA1(89723e3d998ff9cb9b174bca4b072b412b290c04) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "astrf_bl.clr", 0x0000, 0x0020, CRC(6be69d4b) SHA1(4197cf9110db08e45b5d18aedb0fde96779491c1) )
+ROM_END
+
+
+GAME( 1979, astrofbl, astrof, astrof, astrof, driver_device, 0, ROT90, "Hack", "Astro Fighter (Black Background)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/asuka.cpp b/docs/release/src/hbmame/drivers/asuka.cpp
new file mode 100644
index 00000000000..11799a90c3f
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/asuka.cpp
@@ -0,0 +1,27 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/asuka.cpp"
+
+ROM_START( asukac )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b68-13c.ic23", 0x00000, 0x20000, CRC(356a3151) SHA1(a2929a30bcd45962a4fc08a980e82d9914078c29) )
+ ROM_LOAD16_BYTE( "b68-12c.ic8", 0x00001, 0x20000, CRC(8bd073d4) SHA1(53453cb0dd4aa606215922ad8363e536524dc0f3) )
+ ROM_LOAD16_WORD( "b68-03c.ic30", 0x80000, 0x80000, CRC(3d0d7798) SHA1(a63d9fc043e8ba0b79a7606c17faac406e0b92ec) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD( "b68-01c.ic3", 0x00000, 0x80000, CRC(d5dec087) SHA1(1f8888c15cb08c1c0d27ce29cb71106360c9c852) )
+
+ ROM_REGION( 0xa0000, "gfx2", 0 )
+ ROM_LOAD ( "b68-02c.ic6", 0x00000, 0x80000, CRC(09927d23) SHA1(b9761286feaa14c4eb6fc87ec35e7245c318d687) )
+ ROM_LOAD16_BYTE( "b68-07.ic5", 0x80000, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
+ ROM_LOAD16_BYTE( "b68-06.ic4", 0x80001, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b68-11.ic27", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
+ ROM_CONTINUE( 0x10000, 0x0c000 )
+
+ ROM_REGION( 0x10000, "ymsnd", 0 )
+ ROM_LOAD( "b68-10.ic24", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
+ROM_END
+
+GAME( 1988, asukac, asuka, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (Chinese)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/atari_s1.cpp b/docs/release/src/hbmame/drivers/atari_s1.cpp
new file mode 100644
index 00000000000..b6ec2ce695d
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/atari_s1.cpp
@@ -0,0 +1,20 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/atari_s1.cpp"
+
+/*-------------------------------------------------------------------
+ The Atarians (working bootleg)
+Game modified to work in emulation from original set (atarians)
+
+Except, it doesn't work.
+-------------------------------------------------------------------*/
+ROM_START(atarianb)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("atarianb.e00", 0x7000, 0x0800, CRC(74fc86e4) SHA1(135d75e5c03feae0929fa84caa3c802353cdd94e))
+ ROM_LOAD("atarian.e0", 0x7800, 0x0800, CRC(45cb0427) SHA1(e286930ca36bdd0f79acefd142d2a5431fa8005b))
+
+ ROM_REGION(0x0200, "proms", 0)
+ ROM_LOAD("82s130.bin", 0x0000, 0x0200, CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b))
+ROM_END
+
+GAME( 2002, atarianb, atarians, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari / Gaston", "The Atarians (modified for emulation)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL)
diff --git a/docs/release/src/hbmame/drivers/atarisy1.cpp b/docs/release/src/hbmame/drivers/atarisy1.cpp
new file mode 100644
index 00000000000..c545f07b559
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/atarisy1.cpp
@@ -0,0 +1,33 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+#include "../mame/drivers/atarisy1.cpp"
+ROM_START( ataris1hw )
+ ROM_REGION( 0x88000, "maincpu", 0 )
+ MOTHERBOARD_BIOS
+ ROM_LOAD16_BYTE( "136036.432", 0x10000, 0x08000, CRC(db3f1d4e) SHA1(58d6a88f73f90c8fe2981e60fbf6f359e0b88ea7) )
+ ROM_LOAD16_BYTE( "136036.431", 0x10001, 0x08000, CRC(e439e2a1) SHA1(4346252c81336c087edfbd2e334d488f13dcaba3) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "136036.153", 0x4000, 0x4000, CRC(95294641) SHA1(00f90a0d49d2c77d5288080036f81a74ad31f8bc) )
+ ROM_LOAD( "136036.154", 0x8000, 0x4000, CRC(cbfc6adb) SHA1(ee132eced924435f1214e2997533e866a3e5364b) )
+ ROM_LOAD( "136036.155", 0xc000, 0x4000, CRC(fd1a6878) SHA1(28e1b2187f58098e5140d9a88bda969965758f26) )
+
+ ROM_REGION( 0x2000, "alpha", 0 )
+ MOTHERBOARD_ALPHA
+
+ ROM_REGION( 0x200000, "tiles", ROMREGION_INVERT | ROMREGION_ERASEFF )
+ ROM_LOAD( "136036.135", 0x000000, 0x08000, CRC(a8fa9870) SHA1(375cb16ccaae62cf429bf1a7d2c6de1829b86877) )
+ ROM_LOAD( "136036.139", 0x010000, 0x08000, CRC(6959604d) SHA1(94f130507981ec01240252ab7b044f6d1e19280e) )
+ ROM_LOAD( "136036.143", 0x020000, 0x08000, CRC(b6b14274) SHA1(441c0447721afe0aadf320e1b0c40ebf97d0e485) )
+ ROM_LOAD( "136036.147", 0x030000, 0x08000, CRC(2de2e834) SHA1(ba7640ea7440250152b1be71e65e3480f782011f) )
+
+ ROM_REGION( 0x400, "proms", 0 )
+ ROM_LOAD( "136036.152", 0x000, 0x200, CRC(4f96e57c) SHA1(271633a0aacd1d1efe2917728b73e90010c64d2c) )
+ ROM_LOAD( "136036.151", 0x200, 0x200, CRC(7daf351f) SHA1(95c13d81a47440f847af7b19632cc032380b9ff4) )
+
+ ROM_REGION( 0x201, "motherbrd_proms", 0)
+ MOTHERBOARD_PROMS
+ROM_END
+
+GAME( 2017, ataris1hw, indytemp, indytemp, indytemp, atarisy1_state, indytemp, ROT0, "Luigi30", "Atari System 1 Hello World", 0 )
diff --git a/docs/release/src/hbmame/drivers/bagman.cpp b/docs/release/src/hbmame/drivers/bagman.cpp
new file mode 100644
index 00000000000..e17370e35aa
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/bagman.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/bagman.cpp"
+
+ROM_START( bagturbo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "bagt_a4_9e.bin", 0x0000, 0x1000, CRC(c070635c) SHA1(98c920f9ab377258d376e62337f14df3e51badaa) )
+ ROM_LOAD( "a5-9f", 0x1000, 0x1000, CRC(2ddf6bb9) SHA1(151068dddc55163bb6f925f68e5d04e347ded6a5) )
+ ROM_LOAD( "a4_9j.bin", 0x2000, 0x1000, CRC(b2da8b77) SHA1(ea36cd6be42c5548a9a91054aeebb4b985ba15c9) )
+ ROM_LOAD( "a5-9k", 0x3000, 0x1000, CRC(f91d617b) SHA1(a3323b51277e08747701cc4e2d3a9c466e96d4c1) )
+ ROM_LOAD( "bagt_a4_9m.bin", 0x4000, 0x1000, CRC(8cb278fe) SHA1(807a4f1d89dcbd7482ef86f4b2e88cc2f64abbf4) )
+ ROM_LOAD( "a5-9n", 0x5000, 0x1000, CRC(68e4b64d) SHA1(55950d7c07c621cafa001d5d3bfec6bbc02712e2) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "a2_1e.bin", 0x0000, 0x1000, CRC(f217ac09) SHA1(a9716674401dff27344a01df8121b6b648688680) )
+ ROM_LOAD( "j1_b04.bin", 0x1000, 0x1000, CRC(c680ef04) SHA1(79406bc786374abfcd9f548268c445b5c8d8858d) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "a2_1c.bin", 0x0000, 0x1000, CRC(f3e11bd7) SHA1(43ee00ff777008c89f619eb183e7c5e63f6c7694) )
+ ROM_LOAD( "a2_1f.bin", 0x1000, 0x1000, CRC(d0f7105b) SHA1(fb382703850a4ded567706e02ebb7f3e22531b7c) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "p3.bin", 0x0000, 0x0020, CRC(2a855523) SHA1(91e032233fee397c90b7c1662934aca9e0671482) )
+ ROM_LOAD( "r3.bin", 0x0020, 0x0020, CRC(ae6f1019) SHA1(fd711882b670380cb4bd909c840ba06277b8fbe3) )
+
+ ROM_REGION( 0x0020, "5110ctrl", 0)
+ ROM_LOAD( "r6.bin", 0x0000, 0x0020, CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) )
+
+ ROM_REGION( 0x2000, "tmsprom", 0 )
+ ROM_LOAD( "r9_b11.bin", 0x0000, 0x1000, CRC(2e0057ff) SHA1(33e3ffa6418f86864eb81e5e9bda4bf540c143a6) )
+ ROM_LOAD( "t9_b12.bin", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) )
+ROM_END
+
+ROM_START( pickinpi )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "9e", 0x0000, 0x1000, CRC(efd0bd43) SHA1(b70a471a809c08286a82934046357fb46556f641) )
+ ROM_LOAD( "9f", 0x1000, 0x1000, CRC(b5785a23) SHA1(9eddda5695981cb0470dfea68d5e2e8e220382b1) )
+ ROM_LOAD( "9j", 0x2000, 0x1000, CRC(65ee9fd4) SHA1(2efa40c19a7b0644ef4f4b2ce6a025b2b880239d) )
+ ROM_LOAD( "9k", 0x3000, 0x1000, CRC(7b23350e) SHA1(dff19602a0e46ca0bcdbdf2a1d61fd2c80ac70e7) )
+ ROM_LOAD( "9m", 0x4000, 0x1000, CRC(935a7248) SHA1(d9af4405d51ce1ff6c4b84709dc85c0db88b1d54) )
+ ROM_LOAD( "9n", 0x5000, 0x1000, CRC(52485d1d) SHA1(c309eec506f978388463f20d56d958e6639c31e8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "1f", 0x0000, 0x1000, CRC(c5e96ac6) SHA1(b2d740b6d07c765e8eb2dce31fe285a15a9fe597) )
+ ROM_LOAD( "1j", 0x1000, 0x1000, CRC(41c4ac1c) SHA1(aac58a9d675a9b70140d82341231bcf6c77c7b41) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "6331-1pi.3p", 0x0000, 0x0020, CRC(b1dd1e68) SHA1(059c5f6c43e62b9381f4a0fa322dbe59c29812f5) )
+ ROM_LOAD( "6331-1pi.3r", 0x0020, 0x0020, CRC(47fadc93) SHA1(3ba46957e664a2ea639a97a0c199a9636861ca50) )
+ROM_END
+
+GAME(1991, bagturbo, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Tim Arcadecollecting", "Bagman Turbo (Stern set 1) [c]", 0 ) // http://www.arcadecollecting.com/hacks/bagman
+GAME(1983, pickinpi, pickin, pickin, pickin, driver_device, 0, ROT270, "Pi", "Pickin' (Color Hack)", 0 )
diff --git a/docs/release/src/hbmame/drivers/blktiger.cpp b/docs/release/src/hbmame/drivers/blktiger.cpp
new file mode 100644
index 00000000000..ad393e29450
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/blktiger.cpp
@@ -0,0 +1,41 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/blktiger.cpp"
+
+ROM_START( blkdrgonk )
+ ROM_REGION( 0x50000, "maincpu", 0 )
+ ROM_LOAD( "blkdrgnk.5e", 0x00000, 0x08000, CRC(e713b486) SHA1(468a75120080f9529f2b56d66c72c767e7ee86df) )
+ ROM_LOAD( "blkdrgon.6e", 0x10000, 0x10000, CRC(7d39c26f) SHA1(562a3f578e109ae020f65e341c876ad7e510a311) )
+ ROM_LOAD( "blkdrgon.8e", 0x20000, 0x10000, CRC(d1bf3757) SHA1(b19f8b986406bde65ac7f0d55d54f87b37f5e42f) )
+ ROM_LOAD( "blkdrgon.9e", 0x30000, 0x10000, CRC(4d1d6680) SHA1(e137624c59392de6aaffeded99b024938360bd25) )
+ ROM_LOAD( "blkdrgon.10e", 0x40000, 0x10000, CRC(c8d0c45e) SHA1(66c2e5a74c5875a2c8e28740fe944bd943246ce5) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "bd-06.1l", 0x0000, 0x8000, CRC(2cf54274) SHA1(87df100c65999ba1e9d358ffd0fe4bba23ae0efb) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "bd.6k", 0x0000, 0x1000, CRC(ac7d14f1) SHA1(46fd6b43f10312e3e8d3c9e0c0fd616af98fdbad) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "blkdrgnk.2n", 0x00000, 0x08000, CRC(3b432217) SHA1(da0b3fe16fb5192f6514bdf5fef85a889c7b2f0a) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "blkdrgon.5b", 0x00000, 0x10000, CRC(22d0a4b0) SHA1(f9402ea9ffedcb280497a63c5eb352de9d4ca3fd) )
+ ROM_LOAD( "blkdrgon.4b", 0x10000, 0x10000, CRC(c8b5fc52) SHA1(621e899285ce6302e5b25d133d9cd52c09b7b202) )
+ ROM_LOAD( "blkdrgon.9b", 0x20000, 0x10000, CRC(9498c378) SHA1(841934ddef724faf04162c4be4aea1684d8d8e0f) )
+ ROM_LOAD( "blkdrgon.8b", 0x30000, 0x10000, CRC(5b0df8ce) SHA1(57d10b48bd61b0224ce21b36bde8d2479e8e5df4) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 )
+ ROM_LOAD( "bd-08.5a", 0x00000, 0x10000, CRC(e2f17438) SHA1(3e5fdae07d40febedc59c7c7c4d9c6f0d72b58b5) )
+ ROM_LOAD( "bd-07.4a", 0x10000, 0x10000, CRC(5fccbd27) SHA1(33c55aa9c12b3121ca5c3b4c39a9b152b6946461) )
+ ROM_LOAD( "bd-10.9a", 0x20000, 0x10000, CRC(fc33ccc6) SHA1(d492626a88565c2626f98ecb1d74535f1ad68e4c) )
+ ROM_LOAD( "bd-09.8a", 0x30000, 0x10000, CRC(f449de01) SHA1(f6b40e9eb2471b89c42ab84f4214295d284db0c3) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "bd01.8j", 0x0000, 0x0100, CRC(29b459e5) SHA1(0034734a533df3dea16b7b48e072485d7f26f850) )
+ ROM_LOAD( "bd02.9j", 0x0100, 0x0100, CRC(8b741e66) SHA1(6c1fda59936a7217b05949f5c54b1f91f4b49dbe) )
+ ROM_LOAD( "bd03.11k", 0x0200, 0x0100, CRC(27201c75) SHA1(c54d87f06bfe0b0908389c005014d97156e272c2) )
+ ROM_LOAD( "bd04.11l", 0x0300, 0x0100, CRC(e5490b68) SHA1(40f9f92efe7dd97b49144aec02eb509834056915) )
+ROM_END
+
+GAME( 1987, blkdrgonk, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "hack", "Black Dragon (Korean)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/bombjack.cpp b/docs/release/src/hbmame/drivers/bombjack.cpp
new file mode 100644
index 00000000000..3816f75d1f8
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/bombjack.cpp
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/bombjack.cpp"
+
+ROM_START( bmbjckgr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "09_j01b.bin", 0x0000, 0x2000, CRC(c668dc30) SHA1(51dd6a2688b42e9f28f0882bd76f75be7ec3222a) )
+ ROM_LOAD( "10_l01b.bin", 0x2000, 0x2000, CRC(52a1e5fb) SHA1(e1cdc4b4efbc6c7a1e4fa65019486617f2acba1b) )
+ ROM_LOAD( "11_m01b.bin", 0x4000, 0x2000, CRC(b68a062a) SHA1(43bae56494ac0202aaa8f1ed5c1ed1bff775b2b8) )
+ ROM_LOAD( "12g_n01b.bin", 0x6000, 0x2000, CRC(b457909f) SHA1(807b30742a89a327721596c4f5d091912f0ab4ec) )
+ ROM_LOAD( "13g.1r", 0xc000, 0x2000, CRC(f8e14e2c) SHA1(a5dff87ad26eff6a07313594d9bce2ea568c8f26) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "01_h03t.bin", 0x0000, 0x2000, CRC(8407917d) SHA1(318face9f7a7ab6c7eeac773995040425e780aaf) )
+
+ ROM_REGION( 0x3000, "chars", 0 )
+ ROM_LOAD( "03g_e08t.bin", 0x0000, 0x1000, CRC(df120e35) SHA1(b389320cd95fe3ac7bfb613098140d169c0485b1) )
+ ROM_LOAD( "04g_h08t.bin", 0x1000, 0x1000, CRC(2af09b2b) SHA1(4ce87353a941c6527c9426e578ed2a6c7286175e) )
+ ROM_LOAD( "05g_k08t.bin", 0x2000, 0x1000, CRC(4362417c) SHA1(680a5c06c938e7cca33880bc18a2b592a4204ec8) )
+
+ ROM_REGION( 0x6000, "tiles", 0 )
+ ROM_LOAD( "06_l08t.bin", 0x0000, 0x2000, CRC(51eebd89) SHA1(515128a3971fcb97b60c5b6bdd2b03026aec1921) )
+ ROM_LOAD( "07_n08t.bin", 0x2000, 0x2000, CRC(9dd98e9d) SHA1(6db6006a6e20ff7c243d88293ca53681c4703ea5) )
+ ROM_LOAD( "08_r08t.bin", 0x4000, 0x2000, CRC(3155ee7d) SHA1(e7897dca4c145f10b7d975b8ef0e4d8aa9354c25) )
+
+ ROM_REGION( 0x6000, "sprites", 0 )
+ ROM_LOAD( "16g_m07b.bin", 0x0000, 0x2000, CRC(e33942bf) SHA1(a9fad16f9b83faf1c0948ad15186959ec17eb448) )
+ ROM_LOAD( "15g_l07b.bin", 0x2000, 0x2000, CRC(1bb8ec79) SHA1(14c8b6ee9f22491330bbf14356fa4ab3c62cb811) )
+ ROM_LOAD( "14g_j07b.bin", 0x4000, 0x2000, CRC(0a9b3106) SHA1(bfd1c430e3e96896ebf4db962f755353a9a57be8) )
+
+ ROM_REGION( 0x1000, "gfx4", 0 )
+ ROM_LOAD( "02_p04t.bin", 0x0000, 0x1000, CRC(398d4a02) SHA1(ac18a8219f99ba9178b96c9564de3978e39c59fd) )
+ROM_END
+
+/* E720 - rom 13 = the old rom11+rom12; rom 14 = the old rom09+rom10+alterations */
+ROM_START( bombjckb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "bombjckb.14", 0x0000, 0x4000, CRC(129f94f7) SHA1(499625812166c5288efe74d75c8fbc7ce8f197eb) )
+ ROM_LOAD( "bombjckb.13", 0x4000, 0x4000, CRC(87fa35ad) SHA1(42d82658609cbc88928fb2fdf579eb117d4b0cbc) )
+ ROM_LOAD( "13.1r", 0xc000, 0x2000, CRC(70e0244d) SHA1(67654155e42821ea78a655f869fb81c8d6387f63) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "01_h03t.bin", 0x0000, 0x2000, CRC(8407917d) SHA1(318face9f7a7ab6c7eeac773995040425e780aaf) )
+
+ ROM_REGION( 0x3000, "chars", 0 )
+ ROM_LOAD( "03_e08t.bin", 0x0000, 0x1000, CRC(9f0470d5) SHA1(94ef52ef47b4399a03528fe3efeac9c1d6983446) )
+ ROM_LOAD( "04_h08t.bin", 0x1000, 0x1000, CRC(81ec12e6) SHA1(e29ba193f21aa898499187603b25d2e226a07c7b) )
+ ROM_LOAD( "05_k08t.bin", 0x2000, 0x1000, CRC(e87ec8b1) SHA1(a66808ef2d62fca2854396898b86bac9be5f17a3) )
+
+ ROM_REGION( 0x6000, "tiles", 0 )
+ ROM_LOAD( "06_l08t.bin", 0x0000, 0x2000, CRC(51eebd89) SHA1(515128a3971fcb97b60c5b6bdd2b03026aec1921) )
+ ROM_LOAD( "07_n08t.bin", 0x2000, 0x2000, CRC(9dd98e9d) SHA1(6db6006a6e20ff7c243d88293ca53681c4703ea5) )
+ ROM_LOAD( "08_r08t.bin", 0x4000, 0x2000, CRC(3155ee7d) SHA1(e7897dca4c145f10b7d975b8ef0e4d8aa9354c25) )
+
+ ROM_REGION( 0x6000, "sprites", 0 )
+ ROM_LOAD( "16_m07b.bin", 0x0000, 0x2000, CRC(94694097) SHA1(de71bcd67f97d05527f2504fc8430be333fb9ec2) )
+ ROM_LOAD( "15_l07b.bin", 0x2000, 0x2000, CRC(013f58f2) SHA1(20c64593ab9fcb04cefbce0cd5d17ce3ff26441b) )
+ ROM_LOAD( "14_j07b.bin", 0x4000, 0x2000, CRC(101c858d) SHA1(ed1746c15cdb04fae888601d940183d5c7702282) )
+
+ ROM_REGION( 0x1000, "gfx4", 0 )
+ ROM_LOAD( "02_p04t.bin", 0x0000, 0x1000, CRC(398d4a02) SHA1(ac18a8219f99ba9178b96c9564de3978e39c59fd) )
+ROM_END
+
+ROM_START( bombjred )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "09_j01b.bin", 0x0000, 0x2000, CRC(c668dc30) SHA1(51dd6a2688b42e9f28f0882bd76f75be7ec3222a) )
+ ROM_LOAD( "10_l01b.bin", 0x2000, 0x2000, CRC(52a1e5fb) SHA1(e1cdc4b4efbc6c7a1e4fa65019486617f2acba1b) )
+ ROM_LOAD( "11_m01b.bin", 0x4000, 0x2000, CRC(b68a062a) SHA1(43bae56494ac0202aaa8f1ed5c1ed1bff775b2b8) )
+ ROM_LOAD( "12_n01b.bin", 0x6000, 0x2000, CRC(1d3ecee5) SHA1(8b3c49e21ea4952cae7042890d1be2115f7d6fda) )
+ ROM_LOAD( "13.1r", 0xc000, 0x2000, CRC(70e0244d) SHA1(67654155e42821ea78a655f869fb81c8d6387f63) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "01_h03t.bin", 0x0000, 0x2000, CRC(8407917d) SHA1(318face9f7a7ab6c7eeac773995040425e780aaf) )
+
+ ROM_REGION( 0x3000, "chars", 0 )
+ ROM_LOAD( "bombjred.03", 0x0000, 0x1000, CRC(8732fa2b) SHA1(e9919bd812a44d6edaf7a08e6cb857cdee2af057) )
+ ROM_LOAD( "bombjred.04", 0x1000, 0x1000, CRC(dc392a25) SHA1(8ace01ef128b92ff04d668fdd3c2be9cb9a25e4d) )
+ ROM_LOAD( "bombjred.05", 0x2000, 0x1000, CRC(ad9d7a8c) SHA1(8ae81bf891544c825115925b38a53c89c1ca2f65) )
+
+ ROM_REGION( 0x6000, "tiles", 0 )
+ ROM_LOAD( "06_l08t.bin", 0x0000, 0x2000, CRC(51eebd89) SHA1(515128a3971fcb97b60c5b6bdd2b03026aec1921) )
+ ROM_LOAD( "07_n08t.bin", 0x2000, 0x2000, CRC(9dd98e9d) SHA1(6db6006a6e20ff7c243d88293ca53681c4703ea5) )
+ ROM_LOAD( "08_r08t.bin", 0x4000, 0x2000, CRC(3155ee7d) SHA1(e7897dca4c145f10b7d975b8ef0e4d8aa9354c25) )
+
+ ROM_REGION( 0x6000, "sprites", 0 )
+ ROM_LOAD( "bombjred.16", 0x0000, 0x2000, CRC(bdabd682) SHA1(3caf238295ba4d033d50b8e2a51e6c2bd0ad6bde) )
+ ROM_LOAD( "bombjred.15", 0x2000, 0x2000, CRC(a213f039) SHA1(67e247c4d3fe2b4791d3c5de9bb242c21f31c84d) )
+ ROM_LOAD( "bombjred.14", 0x4000, 0x2000, CRC(498513fe) SHA1(81851994da287982a67a4e47231404f534b6b9df) )
+
+ ROM_REGION( 0x1000, "gfx4", 0 )
+ ROM_LOAD( "02_p04t.bin", 0x0000, 0x1000, CRC(398d4a02) SHA1(ac18a8219f99ba9178b96c9564de3978e39c59fd) )
+ROM_END
+
+GAME( 1984, bmbjckgr, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "hack", "Bomb Jack (Greek)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bombjckb, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "hack", "Bomb Jack (Bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, bombjred, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "hack", "Bomb Jack Red", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/btime.cpp b/docs/release/src/hbmame/drivers/btime.cpp
new file mode 100644
index 00000000000..e15e6434ad4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/btime.cpp
@@ -0,0 +1,106 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/btime.cpp"
+
+ROM_START( bnjr )
+ ROM_REGION( 2*0x10000, "maincpu", 0 )
+ ROM_LOAD( "bnj12b.bin", 0xa000, 0x2000, CRC(ba3e3801) SHA1(56284076d938c33c1492a07281b936681eb09808) )
+ ROM_LOAD( "bnj12c.bin", 0xc000, 0x2000, CRC(fb3a2cdd) SHA1(4a964389cc8035b9264d4cb133eb6d3826e74b95) )
+ ROM_LOAD( "bnj12d.bin", 0xe000, 0x2000, CRC(b88bc99e) SHA1(08a4ddea4037f9e14d0d9f4262a1746b0a3a140c) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "bnj6c.bin", 0xe000, 0x1000, CRC(8c02f662) SHA1(1279d564e65fd3ccac25b1f9fbb40d910de2b544) )
+
+ ROM_REGION( 0x6000, "gfx1", 0 )
+ ROM_LOAD( "bnjr4e.bin", 0x0000, 0x2000, CRC(876cc672) SHA1(860cfc92752f312ce167fdfb7752fb5e7d7d8817) )
+ ROM_LOAD( "bnjr4f.bin", 0x2000, 0x2000, CRC(e5e95e3f) SHA1(c16e03e29229fa7dcc9ed01b43b645fbcc79cc97) )
+ ROM_LOAD( "bnjr4h.bin", 0x4000, 0x2000, CRC(570ffa46) SHA1(e397fbca0cc7b8173476d34d4e651752937b7569) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "bnjr10e.bin", 0x0000, 0x1000, CRC(9e523e4c) SHA1(4d76696c7594d84d081d17220dc58c0e7e35a14c) )
+ ROM_LOAD( "bnjr10f.bin", 0x1000, 0x1000, CRC(5cf10f28) SHA1(66b2d8cc27ff6dd340054290f6eb2d71c9a1052a) )
+ROM_END
+
+ROM_START( pnc )
+ ROM_REGION( 2*0x10000, "maincpu", 0 )
+ ROM_LOAD( "s3-3d", 0xc000, 0x1000, CRC(1ab4f2c2) SHA1(c5890b768172cd2e3912b84db5f71546969ad7e2) )
+ ROM_LOAD( "s2-3c", 0xd000, 0x1000, CRC(5e46b789) SHA1(00b2510e07eb565cb373db798dd537191b0b7cc8) )
+ ROM_LOAD( "s1-3b", 0xe000, 0x1000, CRC(1308a32e) SHA1(da64fe7b76f5ac8ac35460e6c789ab1e986c78ef) )
+ ROM_LOAD( "s0-3a", 0xf000, 0x1000, CRC(beb4b1fc) SHA1(166a96b5757946231f3619844366218065412935) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "sa-1h", 0xe000, 0x1000, CRC(379387ec) SHA1(29d37f04c64ed53a2573962dfa9c0623b89e0045) )
+
+ ROM_REGION( 0x6000, "gfx1", 0 )
+ ROM_LOAD( "pnc-s4-11l", 0x0000, 0x1000, CRC(38a40f50) SHA1(c5188fc3eeffb9843a22211b95ef6fec656dedb9) )
+ ROM_LOAD( "pnc-s5-11m", 0x1000, 0x1000, CRC(c6c7236a) SHA1(da50b4066c6d39c1c860afdbd353de5576bf9fbf) )
+ ROM_LOAD( "pnc-s6-13l", 0x2000, 0x1000, CRC(20779144) SHA1(f580db44ce870cb5945ef341ef5dd674b170ffc6) )
+ ROM_LOAD( "pnc-s7-13m", 0x3000, 0x1000, CRC(8911a546) SHA1(e78ff510af33789e6a25227afa269008c049b553) )
+ ROM_LOAD( "pnc-s8-15l", 0x4000, 0x1000, CRC(1c8f5112) SHA1(01601dc443e1db13f9fb9b32cc5180d5d19b4c10) )
+ ROM_LOAD( "pnc-s9-15m", 0x5000, 0x1000, CRC(b919e43b) SHA1(1bb22f48a7914afc8b4eb8d90b9c6a4d93ae2b24) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "sc-5m", 0x0000, 0x0020, CRC(2a976ebe) SHA1(f3c1b0d98f431f9cd0d5fa009fafa1115aabe6e5) )
+ ROM_LOAD( "sb-4c", 0x0020, 0x0020, CRC(a29b4204) SHA1(7f15cae5c4aaa29638fb45029782dafd2b3d1484) )
+ROM_END
+
+ROM_START( stictime )
+ ROM_REGION( 2*0x10000, "maincpu", 0 )
+ ROM_LOAD( "aa04.9b", 0xc000, 0x1000, CRC(368a25b5) SHA1(ed3f3712423979dcb351941fa85dce6a0a7bb16b) )
+ ROM_LOAD( "aa06.13b", 0xd000, 0x1000, CRC(b4ba400d) SHA1(8c77397e934907bc47a739f263196a0f2f81ba3d) )
+ ROM_LOAD( "aa05.10b", 0xe000, 0x1000, CRC(8005bffa) SHA1(d0da4e360039f6a8d8142a4e8e05c1f90c0af68a) )
+ ROM_LOAD( "aa07.15b", 0xf000, 0x1000, CRC(086440ad) SHA1(4a32bc92f8ff5fbe112f56e62d2c03da8851a7b9) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ab14.12h", 0xe000, 0x1000, CRC(f55e5211) SHA1(27940026d0c6212d1138d2fd88880df697218627) )
+
+ ROM_REGION( 0x6000, "gfx1", 0 )
+ ROM_LOAD( "stic_aa12.7k", 0x0000, 0x1000, CRC(0550e118) SHA1(74ab46a307ea9d61e38ba0b541bf509436cd9290) )
+ ROM_LOAD( "ab13.9k", 0x1000, 0x1000, CRC(ac01042f) SHA1(e64b6381a9298eaf74e79fa5f1ea8e9596c58a49) )
+ ROM_LOAD( "stic_ab10.10k",0x2000, 0x1000, CRC(ba774d51) SHA1(68806bbe93aeea82d7aefc376b69af66858c6028) )
+ ROM_LOAD( "ab11.12k", 0x3000, 0x1000, CRC(d4848014) SHA1(0a55b091cd4e7f317c35defe13d5051b26042eee) )
+ ROM_LOAD( "stic_aa8.13k", 0x4000, 0x1000, CRC(00a15086) SHA1(e78047ebffdc642583d363b12dd8fbd1368eb3c4) )
+ ROM_LOAD( "ab9.15k", 0x5000, 0x1000, CRC(8dec15e6) SHA1(b72633de6268ce16742bba4dcba835df860d6c2f) )
+
+ ROM_REGION( 0x1800, "gfx2", 0 )
+ ROM_LOAD( "stic_ab00.1b", 0x0000, 0x0800, CRC(4010c652) SHA1(418eae0ef70c62c3f69becf167bd40a4faba176b) )
+ ROM_LOAD( "ab01.3b", 0x0800, 0x0800, CRC(25b49078) SHA1(4abdcbd4f3362c3e4463a1274731289f1a72d2e6) )
+ ROM_LOAD( "stic_ab02.4b", 0x1000, 0x0800, CRC(1def5b40) SHA1(845a6b1105757d4d921a4d1f9378a3731f6460b3) )
+
+ ROM_REGION( 0x0800, "bg_map", 0 )
+ ROM_LOAD( "ab03.6b", 0x0000, 0x0800, CRC(d26bc1f3) SHA1(737af6e264183a1f151f277a07cf250d6abb3fd8) )
+ROM_END
+
+ROM_START( vecbtime )
+ ROM_REGION( 2*0x10000, "maincpu", 0 )
+ ROM_LOAD( "ab05a1.12b", 0xb000, 0x1000, CRC(0a98b230) SHA1(aeee4f6f0aaa27575b80261d03c5453cc6ebd646) )
+ ROM_LOAD( "ab04.9b", 0xc000, 0x1000, CRC(797e5f75) SHA1(35ea5fa4b8f3494adf7774b3946ed2540ac826ff) )
+ ROM_LOAD( "ab06.13b", 0xd000, 0x1000, CRC(c77f3f64) SHA1(f283087fad0a102fe92be7ce80ed18e64dc93b67) )
+ ROM_LOAD( "ab05.10b", 0xe000, 0x1000, CRC(b0d3640f) SHA1(6ba28971714ece6f1c04fa2dbf1f9f216ded7cfa) )
+ ROM_LOAD( "ab07.15b", 0xf000, 0x1000, CRC(a142f862) SHA1(39d7ef172d18874885f1b1542e885cc4287dc344) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ab14.12h", 0xe000, 0x1000, CRC(f55e5211) SHA1(27940026d0c6212d1138d2fd88880df697218627) )
+
+ ROM_REGION( 0x6000, "gfx1", 0 )
+ ROM_LOAD( "vec_ab12.7k", 0x0000, 0x1000, CRC(b02d859c) SHA1(0d506c52dd2a76d62bd980087fbb5c3808aedf56) )
+ ROM_LOAD( "vec_ab13.9k", 0x1000, 0x1000, CRC(d9757010) SHA1(fc70cfbd7bb7c23d0b5880f42ef92df711c6a46d) )
+ ROM_LOAD( "vec_ab10.10k", 0x2000, 0x1000, CRC(2b71a1db) SHA1(424c3fceeeb030c0cf89e8f872957a75d5475cfb) )
+ ROM_LOAD( "vec_ab11.12k", 0x3000, 0x1000, CRC(a98fea41) SHA1(1ddbb8b26bca2b8c6ab4d9b1bfd8b21db2b2d97b) )
+ ROM_LOAD( "vec_ab8.13k", 0x4000, 0x1000, CRC(0ca7828f) SHA1(eb7db2607b10e8276a97a20030bdbeeeb7b6935b) )
+ ROM_LOAD( "vec_ab9.15k", 0x5000, 0x1000, CRC(1e460ff7) SHA1(6ac3ec08e3c79490262324fd4a93a6eb1188554b) )
+
+ ROM_REGION( 0x1800, "gfx2", 0 )
+ ROM_LOAD( "vec_ab00.1b", 0x0000, 0x0800, CRC(03dbe9b6) SHA1(4844d490a767d15ed5230868cbd25dadf70cf1e3) )
+ ROM_LOAD( "vec_ab01.3b", 0x0800, 0x0800, CRC(698089da) SHA1(6b6e61536d1247a8784a4657cdc50e48b002335d) )
+ ROM_LOAD( "vec_ab02.4b", 0x1000, 0x0800, CRC(4464ccef) SHA1(1fa91178c55c1120910be89f724b909a356796e8) )
+
+ ROM_REGION( 0x0800, "bg_map", 0 )
+ ROM_LOAD( "ab03.6b", 0x0000, 0x0800, CRC(d26bc1f3) SHA1(737af6e264183a1f151f277a07cf250d6abb3fd8) )
+ROM_END
+
+
+GAME( 2002, bnjr, brubber, bnj, bnj, btime_state, lnc, ROT270, "DaveC", "Bump 'n' Jump Reverse Mod", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pnc, lnc, lnc, lnc, btime_state, lnc, ROT270, "Marks Hacks", "Pac'n'Chase", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, stictime, btime, btime, btime, btime_state, btime, ROT270, "Marks Hacks", "Mr Sticky Time", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecbtime, btime, btime, btime, btime_state, btime, ROT270, "T-Bone", "Burgertime (Vector sim)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/bublbobl.cpp b/docs/release/src/hbmame/drivers/bublbobl.cpp
new file mode 100644
index 00000000000..41668836f35
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/bublbobl.cpp
@@ -0,0 +1,289 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/bublbobl.cpp"
+
+static INPUT_PORTS_START( bbaladar )
+ PORT_INCLUDE( boblbobl )
+
+ PORT_MODIFY( "DSW1" )
+ PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+ROM_START( bbaladar )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bbaladar.3", 0x00000, 0x8000, CRC(31bfc6fb) SHA1(6a72086d415a69b9e5c003ec6cf7858e8c4b346f) )
+ ROM_LOAD( "bbaladar.5", 0x10000, 0x8000, CRC(16386e9a) SHA1(77fa3f5ecce5c79ba52098c0870482459926b415) )
+ ROM_LOAD( "bbaladar.4", 0x18000, 0x8000, CRC(0c4bcb07) SHA1(3e3f7fa098d6be61d265cab5258dbd0e279bd8ed) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
+ROM_START( bb2bmh )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "a78-06.51", 0x00000, 0x08000, CRC(32c8305b) SHA1(6bf69b3edfbefd33cd670a762b4bf0b39629a220) )
+ ROM_LOAD( "bb2bmh-05.52", 0x10000, 0x10000, CRC(d286f2e9) SHA1(ac293aa5bb3973738c7a48ce78c523154d650ded) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "bb2bmh-08.37", 0x0000, 0x08000, CRC(ebce6c5c) SHA1(bd99a67a044763567c443b174115aae89957a60c) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x0800, "mcu", 0 )
+ ROM_LOAD( "68705.bin", 0x0000, 0x0800, CRC(78caa635) SHA1(a756e45b25b007843ba4f2204cad6081cf7260e9) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+ROM_END
+
+ROM_START( bbhackv1 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "a78-06.51", 0x00000, 0x08000, CRC(32c8305b) SHA1(6bf69b3edfbefd33cd670a762b4bf0b39629a220) )
+ ROM_LOAD( "bbhackv1-05.52", 0x10000, 0x10000, CRC(8da82422) SHA1(385ccd427b101255bc865af0802672b4d8432339) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "bbhackv1-08.37", 0x0000, 0x08000, CRC(419caf60) SHA1(95d680c2be15e813081d3f78f17c5d97eda8b60b) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x0800, "mcu", 0 )
+ ROM_LOAD( "68705.bin", 0x0000, 0x0800, CRC(78caa635) SHA1(a756e45b25b007843ba4f2204cad6081cf7260e9) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+ROM_END
+
+//Press P1+P2 while playing, to advance
+ROM_START( bbredux1 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bb3.1", 0x00000, 0x8000, CRC(b802046d) SHA1(93dba2507c67f3f61eca80908a7a4409d2cd1b75) )
+ ROM_LOAD( "bb5", 0x10000, 0x8000, CRC(d29d3444) SHA1(3db694a6ba2ba2ed85d31c2bc4c7c94911b99b85) )
+ ROM_LOAD( "bb4.1", 0x18000, 0x8000, CRC(19a5a0fa) SHA1(e7fff3643d7922a494ad8118d1a0f74e52443f9f) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
+// When you die for the last time, it momentarily says says press P1. Do so, to continue.
+ROM_START( bbredux2 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bb3.2", 0x00000, 0x8000, CRC(198dc44e) SHA1(de9538b47703c468f85ba318deb8aa0b65174a26) )
+ ROM_LOAD( "bb5", 0x10000, 0x8000, CRC(d29d3444) SHA1(3db694a6ba2ba2ed85d31c2bc4c7c94911b99b85) )
+ ROM_LOAD( "bb4.2", 0x18000, 0x8000, CRC(9b819b62) SHA1(79d7208cb81fa36ed317f4776b1eda3082b1a21c) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
+// High score save is not working as yet
+ROM_START( bbredux3 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bb3.3", 0x00000, 0x8000, CRC(959cafca) SHA1(9c541e45326d27f4d25a1fd9d66f234ce7f969c9) )
+ ROM_LOAD( "bb5", 0x10000, 0x8000, CRC(d29d3444) SHA1(3db694a6ba2ba2ed85d31c2bc4c7c94911b99b85) )
+ ROM_LOAD( "bb4.3", 0x18000, 0x8000, CRC(3f350047) SHA1(7e23d1c9b1a29760d96dcc7f7784ae610ac860d9) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "pal16r4.u36", 0x0000, 0x0104, CRC(22fe26ac) SHA1(bbbfcbe6faded4af7ceec57b800297c054a997da) )
+ ROM_LOAD( "pal16l8.u38", 0x0200, 0x0104, CRC(c02d9663) SHA1(5d23cfd96f072981fd5fcf0dd7e98459da58b662) )
+ ROM_LOAD( "pal16l8.u4", 0x0400, 0x0104, CRC(077d20a8) SHA1(8e568ffd6f66c3dd61708dd0f3be9c2ed488ae4b) )
+ROM_END
+
+ROM_START( sboblboblh )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bb3.u28", 0x00000, 0x08000, CRC(c23cd704) SHA1(a389ecc8d55d1b0c915fd3814d93338b9e402701) )
+ ROM_LOAD( "bb5.s", 0x10000, 0x08000, CRC(13118eb1) SHA1(5a5da40c2cc82420f70bc58ffa32de1088c6c82f) )
+ ROM_LOAD( "bbb-4.rom", 0x18000, 0x08000, CRC(94c75591) SHA1(7698bc4b7d20e554a73a489cd3a15ae61b350e37) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+ROM_END
+
+ROM_START( bublbobf )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "bublbobf-06.51", 0x00000, 0x08000, CRC(9ced3d8f) SHA1(d445f218fca822e7083a9347abd4a4e049b6555b) )
+ ROM_LOAD( "bublbobf-05.52", 0x10000, 0x10000, CRC(56197d88) SHA1(b1b750df33835df012b2550585edcd6ea58db186) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "a78-08.37", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a78-07.46", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "a78-01.17", 0xf000, 0x1000, CRC(b1bfb53d) SHA1(31b8f31acd3aa394acd80db362774749842e1285) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "a78-09.12", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) )
+ ROM_LOAD( "a78-10.13", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "a78-11.14", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "a78-12.15", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "a78-13.16", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "a78-14.17", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ ROM_LOAD( "a78-15.30", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) )
+ ROM_LOAD( "a78-16.31", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "a78-17.32", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "a78-18.33", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "a78-19.34", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "a78-20.35", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) )
+ROM_END
+
+
+GAME( 2012, bbaladar, bublbobl, boblbobl, bbaladar, bublbobl_state, bublbobl, ROT0, "Aladar", "Bubble Bobble Bootleg", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, bb2bmh, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "hack", "Bubble Bobble (Memories Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, bbhackv1, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "hack", "Bubble Bobble (Level Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, bbredux1, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "Punji", "Bobble Bobble Redux (Level Skip)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, bbredux2, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "Punji", "Bobble Bobble Redux (Game Continue)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, bbredux3, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "Punji", "Bobble Bobble Redux (High Score)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, sboblboblh, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "hack", "Super Bobble Bobble (Level Select)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, bublbobf, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Arkatrad", "Bubble Bobble (French)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/bwidow.cpp b/docs/release/src/hbmame/drivers/bwidow.cpp
new file mode 100644
index 00000000000..12b4f9c1f68
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/bwidow.cpp
@@ -0,0 +1,38 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/bwidow.cpp"
+
+/************************************************************************************************
+ *
+ * The only sound in this game is a low continuous growl when a ship is damaged or destroyed
+ *
+ ************************************************************************************************/
+
+
+ROM_START( spacwarp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ /* Vector ROM */
+ ROM_LOAD( "spacwarp.106", 0x2800, 0x0800, CRC(23a25ff9) SHA1(e4117e6c453408079bd4a9e7b30a9b82e7b1712d) )
+ ROM_LOAD( "136006.107", 0x3000, 0x1000, CRC(d8dd0461) SHA1(58060b20b2511d30d2ec06479d21840bdd0b53c6) )
+ /* Program ROM */
+ ROM_LOAD( "spacwarp.201", 0x4000, 0x1000, CRC(0acb38e9) SHA1(dcdeeedc798d7735d03249559556d55b8256abc6) )
+ ROM_LOAD( "spacwarp.102", 0x5000, 0x1000, CRC(75fae2df) SHA1(7510e93781fe444ff10aac92abf4b882a65999aa) )
+ ROM_LOAD( "136006.103", 0x6000, 0x1000, CRC(ee72da63) SHA1(d36d62cdf7fe76ee9cdbfc2e76ac5d90f22986ba) )
+ ROM_LOAD( "spacwarp.104", 0x7000, 0x1000, CRC(aae05ec6) SHA1(14629e8375e1ae12dce96a742f1a0777e5114edb) )
+ ROM_LOAD( "spacwarp.105", 0x8000, 0x1000, CRC(41cddb2d) SHA1(8dcd7f72ca1099b04f3d29730b5071d3cb55888e) )
+ ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
+
+ // patch irq code to acknowledge the interrupt
+ ROM_COPY( "maincpu", 0x4003, 0x5353, 3 ) // move jump
+ ROM_FILL(0x4004, 1, 0x50) // new jump
+ ROM_FILL(0x4005, 1, 0x53)
+ ROM_FILL(0x5350, 1, 0x8D) // ack irq
+ ROM_FILL(0x5351, 1, 0x00)
+ ROM_FILL(0x5352, 1, 0x0E)
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+ROM_END
+
+GAME( 1999, spacwarp, 0, spacduel, spacduel, driver_device, 0, ROT0, "Jeff Hendrix", "Space War (Proto on Space Duel HW)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cave.cpp b/docs/release/src/hbmame/drivers/cave.cpp
new file mode 100644
index 00000000000..55c135b3826
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cave.cpp
@@ -0,0 +1,93 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/cave.cpp"
+
+
+ROM_START( pwrinst2h )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "pwrinst2h.u45", 0x000000, 0x80000, CRC(126af635) SHA1(83222ed11f4f8e7b8bb6b5bc78ff1ef59738124d) )
+ ROM_LOAD16_BYTE( "pwrinst2h.u44", 0x000001, 0x80000, CRC(e4eff14d) SHA1(d60de745c79e53a909905e0769a776d2e2d96a02) )
+ ROM_LOAD16_BYTE( "g02.u43", 0x100000, 0x80000, CRC(178e3d24) SHA1(926234f4196a5d5e3bd1438abbf73355f2c65b06) )
+ ROM_LOAD16_BYTE( "g02.u42", 0x100001, 0x80000, CRC(a0b4ee99) SHA1(c6df4aa2543b04d8bda7683f503e5eb763e506af) )
+
+ ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "g02.u3a", 0x00000, 0x20000, CRC(ebea5e1e) SHA1(4d3af9e5f29d0c1b26563f51250039c9e8bd3735) )
+
+ ROM_REGION( 0x1C00000, "sprites0", 0 )
+ ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) )
+ ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) )
+ ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) )
+ ROM_LOAD( "g02.u64", 0x600000, 0x200000, CRC(b17b9b6e) SHA1(fc6213d8322cda4c7f653e2d7d6d314ce84c97b7) )
+ ROM_LOAD( "g02.u65", 0x800000, 0x200000, CRC(08541878) SHA1(138cf077a49a26440a3da1bdc2c399a208359e57) )
+ ROM_LOAD( "g02.u66", 0xa00000, 0x200000, CRC(becf2a36) SHA1(f8b386d0292b1dc745b7253a3df51d1aa8d5e9db) )
+ ROM_LOAD( "g02.u67", 0xc00000, 0x200000, CRC(52fe2b8b) SHA1(dd50aa62f7db995e28f47de9b3fb749aeeaaa5b0) )
+
+ ROM_REGION( 0x200000, "layer0", 0 )
+ ROM_LOAD( "g02.u78", 0x000000, 0x200000, CRC(1eca63d2) SHA1(538942b43301f950e3d5139461331c54dc90129d) )
+
+ ROM_REGION( 0x100000, "layer1", 0 )
+ ROM_LOAD( "g02.u81", 0x000000, 0x100000, CRC(8a3ff685) SHA1(4a59ec50ec4470453374fe10f76d3e894494b49f) )
+
+ ROM_REGION( 0x100000, "layer2", 0 )
+ ROM_LOAD( "g02.u89", 0x000000, 0x100000, CRC(373e1f73) SHA1(ec1ae9fab37eee41be8e1bc6dad03809b62fdbce) )
+
+ ROM_REGION( 0x080000, "layer3", 0 )
+ ROM_LOAD( "g02.82a", 0x000000, 0x080000, CRC(4b3567d6) SHA1(d3e14783b312d2bea9722a8e3c22bcec81e26166) )
+
+ ROM_REGION( 0x440000, "oki1", 0 )
+ ROM_LOAD( "g02.u53", 0x040000, 0x200000, CRC(c4bdd9e0) SHA1(a938a831e789ddf6f3cc5f3e5f3877ec7bd62d4e) )
+ ROM_LOAD( "g02.u54", 0x240000, 0x200000, CRC(1357d50e) SHA1(433766177ce9d6933f90de85ba91bfc6d8d5d664) )
+
+ ROM_REGION( 0x440000, "oki2", 0 )
+ ROM_LOAD( "g02.u55", 0x040000, 0x200000, CRC(2d102898) SHA1(bd81f4cd2ba100707db0c5bb1419f0b23c998574) )
+ ROM_LOAD( "g02.u56", 0x240000, 0x200000, CRC(9ff50dda) SHA1(1121685e387c20e228032f2b0f5cbb606376fc15) )
+ROM_END
+
+ROM_START( pwrinst2z )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "pwrinst2z.u45", 0x000000, 0x80000, CRC(7b66ff4f) SHA1(ffbc2616197f1fd67dfbb9993018fe51fb12e623) )
+ ROM_IGNORE(0x3d4f47)
+ ROM_LOAD16_BYTE( "pwrinst2z.u44", 0x000001, 0x80000, CRC(b2b19ac4) SHA1(5d846c9e8a69b754bd8e874c3df50a20c0ab009a) )
+ ROM_IGNORE(0x3d4f48)
+ ROM_LOAD16_BYTE( "g02.u43", 0x100000, 0x80000, CRC(178e3d24) SHA1(926234f4196a5d5e3bd1438abbf73355f2c65b06) )
+ ROM_LOAD16_BYTE( "g02.u42", 0x100001, 0x80000, CRC(a0b4ee99) SHA1(c6df4aa2543b04d8bda7683f503e5eb763e506af) )
+
+ ROM_REGION16_BE( 0x100000, "user1", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "g02.u3a", 0x00000, 0x20000, CRC(ebea5e1e) SHA1(4d3af9e5f29d0c1b26563f51250039c9e8bd3735) )
+
+ ROM_REGION( 0x1C00000, "sprites0", 0 )
+ ROM_LOAD( "g02.u61", 0x000000, 0x200000, CRC(91e30398) SHA1(2b59a5e40bed2a988382054fe30d92808dad3348) )
+ ROM_LOAD( "g02.u62", 0x200000, 0x200000, CRC(d9455dd7) SHA1(afa69fe9a540cd78b8cfecf09cffa1401c01141a) )
+ ROM_LOAD( "g02.u63", 0x400000, 0x200000, CRC(4d20560b) SHA1(ceaee8cf0b69cc366b95ddcb689a5594d79e5114) )
+ ROM_LOAD( "g02.u64", 0x600000, 0x200000, CRC(b17b9b6e) SHA1(fc6213d8322cda4c7f653e2d7d6d314ce84c97b7) )
+ ROM_LOAD( "g02.u65", 0x800000, 0x200000, CRC(08541878) SHA1(138cf077a49a26440a3da1bdc2c399a208359e57) )
+ ROM_LOAD( "g02.u66", 0xa00000, 0x200000, CRC(becf2a36) SHA1(f8b386d0292b1dc745b7253a3df51d1aa8d5e9db) )
+ ROM_LOAD( "g02.u67", 0xc00000, 0x200000, CRC(52fe2b8b) SHA1(dd50aa62f7db995e28f47de9b3fb749aeeaaa5b0) )
+
+ ROM_REGION( 0x200000, "layer0", 0 )
+ ROM_LOAD( "g02.u78", 0x000000, 0x200000, CRC(1eca63d2) SHA1(538942b43301f950e3d5139461331c54dc90129d) )
+
+ ROM_REGION( 0x100000, "layer1", 0 )
+ ROM_LOAD( "g02.u81", 0x000000, 0x100000, CRC(8a3ff685) SHA1(4a59ec50ec4470453374fe10f76d3e894494b49f) )
+
+ ROM_REGION( 0x100000, "layer2", 0 )
+ ROM_LOAD( "g02.u89", 0x000000, 0x100000, CRC(373e1f73) SHA1(ec1ae9fab37eee41be8e1bc6dad03809b62fdbce) )
+
+ ROM_REGION( 0x080000, "layer3", 0 )
+ ROM_LOAD( "g02.82a", 0x000000, 0x080000, CRC(4b3567d6) SHA1(d3e14783b312d2bea9722a8e3c22bcec81e26166) )
+
+ ROM_REGION( 0x440000, "oki1", 0 )
+ ROM_LOAD( "g02.u53", 0x040000, 0x200000, CRC(c4bdd9e0) SHA1(a938a831e789ddf6f3cc5f3e5f3877ec7bd62d4e) )
+ ROM_LOAD( "g02.u54", 0x240000, 0x200000, CRC(1357d50e) SHA1(433766177ce9d6933f90de85ba91bfc6d8d5d664) )
+
+ ROM_REGION( 0x440000, "oki2", 0 )
+ ROM_LOAD( "g02.u55", 0x040000, 0x200000, CRC(2d102898) SHA1(bd81f4cd2ba100707db0c5bb1419f0b23c998574) )
+ ROM_LOAD( "g02.u56", 0x240000, 0x200000, CRC(9ff50dda) SHA1(1121685e387c20e228032f2b0f5cbb606376fc15) )
+ROM_END
+
+GAME( 2013, pwrinst2h, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j, ROT0, "TT", "Power Instinct 2 (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pwrinst2z, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j, ROT0, "hack", "Power Instinct 2 (unknown hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cball.cpp b/docs/release/src/hbmame/drivers/cball.cpp
new file mode 100644
index 00000000000..b07d8264370
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cball.cpp
@@ -0,0 +1,37 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/cball.cpp"
+/***************************************************************************
+
+ Atari Cannonball (prototype) driver
+
+ Note: canballmash.6m is an approximate replacement created by MASH.
+
+ The maincpu rom has heaps of illegal '02' opcodes.
+
+***************************************************************************/
+
+
+ROM_START( cballfix )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD_NIB_LOW ( "canball.1e", 0x7400, 0x0400, CRC(0b34823b) SHA1(0db6b9f78f7c07ee7d35f2bf048ba61fe43b1e26) )
+ ROM_LOAD_NIB_HIGH( "canball.1l", 0x7400, 0x0400, CRC(b43ca275) SHA1(a03e03f6366877cfdcec71030a5fb2c5171c8d8a) )
+ ROM_LOAD_NIB_LOW ( "canball.1f", 0x7800, 0x0400, CRC(29b4e1f7) SHA1(8cef944b6e0153c304aa2d4cfdc530b8a4eef021) )
+ ROM_LOAD_NIB_HIGH( "canball.1k", 0x7800, 0x0400, CRC(a4d1cf12) SHA1(99de6470efd16e57d72019e065f55bc740f3c7fc) )
+ ROM_LOAD_NIB_LOW ( "canball.1h", 0x7c00, 0x0400, CRC(13f55937) SHA1(7514c27e60944c4e00992c8ecbc5115f8ff948bb) )
+ ROM_LOAD_NIB_HIGH( "canball.1j", 0x7c00, 0x0400, CRC(5b905d69) SHA1(2408dd6e44c51c0c9bdb82d2d33826c03f8308c4) )
+
+ ROM_REGION( 0x0200, "gfx1", 0 )
+ ROM_LOAD_NIB_LOW ( "canballmash.6m", 0x0000, 0x0200, BAD_DUMP CRC(bec9eb19) SHA1(8d84d783a4615e58fa4138e039658922ce50e967) )
+ ROM_LOAD_NIB_HIGH( "canball.6l", 0x0000, 0x0200, CRC(5b1c9e88) SHA1(6e9630db9907170c53942a21302bcf8b721590a3) )
+
+ ROM_REGION( 0x0200, "gfx2", 0 )
+ ROM_LOAD_NIB_LOW ( "canball.5l", 0x0000, 0x0200, CRC(3d0d1569) SHA1(1dfcf5cf9468d476c4b7d76a261c6fec87a99f93) )
+ ROM_LOAD_NIB_HIGH( "canball.5k", 0x0000, 0x0200, CRC(c5fdd3c8) SHA1(5aae148439683ff1cf0005a810c81fdcbed525c3) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "canball.6h", 0x0000, 0x0100, CRC(b8094b4c) SHA1(82dc6799a19984f3b204ee3aeeb007e55afc8be3) )
+ROM_END
+
+
+GAME( 2004, cballfix, cball, cball, cball, driver_device, 0, ROT0, "MASH", "Cannonball (Atari, prototype) with new rom", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cclimber.cpp b/docs/release/src/hbmame/drivers/cclimber.cpp
new file mode 100644
index 00000000000..a906291974e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cclimber.cpp
@@ -0,0 +1,182 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/cclimber.cpp"
+
+INPUT_PORTS_START( ckonga2 ) /* one less life than normal */
+ PORT_INCLUDE( ckong )
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPSETTING( 0x03, "5" )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( ckonga4 ) /* two less lives than normal */
+ PORT_INCLUDE( ckong )
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x01, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x03, "4" )
+INPUT_PORTS_END
+
+ROM_START( cclimbrm )
+ ROM_REGION( 0x6000, "maincpu", 0 )
+ ROM_LOAD( "cc11m", 0x0000, 0x1000, CRC(a7d58b7e) SHA1(83a21b1a731895c84f1f3604f36b21b172bb144b) )
+ ROM_LOAD( "cc10", 0x1000, 0x1000, CRC(b3c26cef) SHA1(f52cb5482c12a9c5fb56e2e2aec7cab0ed23e5a5) )
+ ROM_LOAD( "cc09", 0x2000, 0x1000, CRC(6db0879c) SHA1(c0ba1976c1dcd6edadd78073173a26851ae8dd4f) )
+ ROM_LOAD( "cc08", 0x3000, 0x1000, CRC(f48c5fe3) SHA1(79072bbbf37387998ffd031afe8eb569a16fa9bd) )
+ ROM_LOAD( "cc07m", 0x4000, 0x1000, CRC(a417e7a3) SHA1(0cc8e306268119e11d8375749147cb7c1a831bd8) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "cc06", 0x0000, 0x0800, CRC(481b64cc) SHA1(3f35c545fc784ed4f969aba2d7be6e13a5ae32b7) )
+ /* empty hole - Crazy Kong has an additional ROM here */
+ ROM_LOAD( "cc04", 0x2000, 0x0800, CRC(332347cb) SHA1(4115ca32af73f1791635b7d9e093bf77088a8222) )
+ /* empty hole - Crazy Kong has an additional ROM here */
+ ROM_LOAD( "cc05", 0x1000, 0x0800, CRC(2c33b760) SHA1(2edea8fe13376fbd51a5586d97aba3b30d78e94b) )
+ /* empty hole - Crazy Kong has an additional ROM here */
+ ROM_LOAD( "cc03", 0x3000, 0x0800, CRC(4e4b3658) SHA1(0d39a8cb5cd6cf06008be60707f9b277a8a32a2d) )
+ /* empty hole - Crazy Kong has an additional ROM here */
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "cc02", 0x0000, 0x0800, CRC(14f3ecc9) SHA1(a1b5121abfbe8f07580eb3fa6384352d239a3d75) )
+ ROM_LOAD( "cc01", 0x0800, 0x0800, CRC(21c0f9fb) SHA1(44fad56d302a439257216ddac9fd62b3666589f1) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "cclimber.pr1", 0x0000, 0x0020, CRC(751c3325) SHA1(edce2bc883996c1d72dc6c1c9f62799b162d415a) )
+ ROM_LOAD( "cclimber.pr2", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
+ ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
+
+ ROM_REGION( 0x2000, "samples", 0 )
+ ROM_LOAD( "cc13", 0x0000, 0x1000, CRC(e0042f75) SHA1(86cb31b110742a0f7ae33052c88f42d00deb5468) )
+ ROM_LOAD( "cc12", 0x1000, 0x1000, CRC(5da13aaa) SHA1(b2d41e69435d09c456648a10e33f5e1fbb0bc64c) )
+ROM_END
+
+/* E376 and E449 are basically the same bootleg of "ckonga". One gfx rom in E376 is changed, and we use it here.
+ Changes: One less life than normal, and gfx corruptions on the stage with the incinerator in the middle. */
+ROM_START( ckonga2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ckonga2.07", 0x0000, 0x1000, CRC(1c21386f) SHA1(ce1a0c469dd09d81485cede6c8fbaf6299a9decf) )
+ ROM_LOAD( "f05-08.bin", 0x1000, 0x1000, CRC(5dc1aaba) SHA1(42b9e5946ffce7c156d114bde68f37c2c34853c4) )
+ ROM_LOAD( "h05-09.bin", 0x2000, 0x1000, CRC(c9054c94) SHA1(1aa08d2501ee620759fd5c111e12f6d432c25294) )
+ ROM_LOAD( "10.dat", 0x3000, 0x1000, CRC(c3beb501) SHA1(14f49c45fc7c91799034c5a51fca310f0a66b1d7) )
+ ROM_LOAD( "l05-11.bin", 0x4000, 0x1000, CRC(ae159192) SHA1(d467256a3a366e246243e7828ff4a45d4c146e2c) )
+ ROM_LOAD( "n05-12.bin", 0x5000, 0x1000, CRC(966bc9ab) SHA1(4434fc620169ffea1b1f227b61674e1daf79b54b) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
+ ROM_LOAD( "falcon5", 0x1000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
+ ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "c11-02.bin", 0x0000, 0x0800, CRC(d1352c31) SHA1(da726a63a8be830d695afeddc1717749af8c9d47) )
+ ROM_LOAD( "a11-01.bin", 0x0800, 0x0800, CRC(a7a2fdbd) SHA1(529865f8bbfbdbbf34ac39c70ef17e6d5bd0f845) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "prom.v6", 0x0000, 0x0020, CRC(b3fc1505) SHA1(5b94adde0428a26b815c7eb9b3f3716470d349c7) )
+ ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
+ ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
+
+ ROM_REGION( 0x2000, "samples", 0 )
+ ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
+ ROM_LOAD( "falcon12", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
+ROM_END
+
+/* E448 and E589 are basically the same bootleg of "ckonga". One prom in E448 is changed, and we use it here.
+ Changes: Two less lives than normal. */
+ROM_START( ckonga3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ckonga4.07", 0x0000, 0x1000, CRC(9b5e7592) SHA1(c2b44765eef7d6a8f9f1fb8a7cefd011ebf2a330) )
+ ROM_LOAD( "f05-08.bin", 0x1000, 0x1000, CRC(5dc1aaba) SHA1(42b9e5946ffce7c156d114bde68f37c2c34853c4) )
+ ROM_LOAD( "h05-09.bin", 0x2000, 0x1000, CRC(c9054c94) SHA1(1aa08d2501ee620759fd5c111e12f6d432c25294) )
+ ROM_LOAD( "10.dat", 0x3000, 0x1000, CRC(c3beb501) SHA1(14f49c45fc7c91799034c5a51fca310f0a66b1d7) )
+ ROM_LOAD( "l05-11.bin", 0x4000, 0x1000, CRC(ae159192) SHA1(d467256a3a366e246243e7828ff4a45d4c146e2c) )
+ ROM_LOAD( "n05-12.bin", 0x5000, 0x1000, CRC(966bc9ab) SHA1(4434fc620169ffea1b1f227b61674e1daf79b54b) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
+ ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "c11-02.bin", 0x0000, 0x0800, CRC(d1352c31) SHA1(da726a63a8be830d695afeddc1717749af8c9d47) )
+ ROM_LOAD( "a11-01.bin", 0x0800, 0x0800, CRC(a7a2fdbd) SHA1(529865f8bbfbdbbf34ac39c70ef17e6d5bd0f845) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "ckonga4.v6", 0x0000, 0x0020, CRC(d3b84067) SHA1(1d025c28c47c4c7508b0dfd534de87e923262630) )
+ ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
+ ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
+
+ ROM_REGION( 0x2000, "samples", 0 )
+ ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
+ ROM_LOAD( "falcon12", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
+ROM_END
+
+ROM_START( ckongfix )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "d05-07.bin", 0x0000, 0x1000, CRC(b27df032) SHA1(57f9be139c610405e3c2fddd7093dfb1277e450e) )
+ ROM_LOAD( "f05-08.bin", 0x1000, 0x1000, CRC(5dc1aaba) SHA1(42b9e5946ffce7c156d114bde68f37c2c34853c4) )
+ ROM_LOAD( "h05-09.bin", 0x2000, 0x1000, CRC(c9054c94) SHA1(1aa08d2501ee620759fd5c111e12f6d432c25294) )
+ ROM_LOAD( "k05-10.bin", 0x3000, 0x1000, CRC(069c4797) SHA1(03be185e6914ec7f3770ce3da4eb49cdb97adc85) )
+ ROM_LOAD( "l05-11.bin", 0x4000, 0x1000, CRC(ae159192) SHA1(d467256a3a366e246243e7828ff4a45d4c146e2c) )
+ ROM_LOAD( "n05-12.bin", 0x5000, 0x1000, CRC(966bc9ab) SHA1(4434fc620169ffea1b1f227b61674e1daf79b54b) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "n11-06.bin", 0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
+ ROM_LOAD( "l11-05.bin", 0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
+ ROM_LOAD( "k11-04.bin", 0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
+ ROM_LOAD( "h11-03.bin", 0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "c11-02f.bin", 0x0000, 0x0800, CRC(881ed76e) SHA1(e516d898b68da7040f7fb8c7dbc47e0526349e4c) )
+ ROM_LOAD( "a11-01f.bin", 0x0800, 0x0800, CRC(d49aa505) SHA1(7dec6d62e874fb23f827ffddb72d85777a5c39f7) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "prom.v6", 0x0000, 0x0020, CRC(b3fc1505) SHA1(5b94adde0428a26b815c7eb9b3f3716470d349c7) )
+ ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
+ ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
+
+ ROM_REGION( 0x2000, "samples", 0 )
+ ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
+ ROM_LOAD( "falcon12", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
+ROM_END
+
+/* This is a gfx hack of monkeyd. Should monkeyd get correct colours, it must be applied here too. */
+ROM_START( tongypac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "falcon7", 0x0000, 0x1000, CRC(2171cac3) SHA1(7b18bfe44c32fb64b675bbbe2136344522c79b09) )
+ ROM_LOAD( "falcon8", 0x1000, 0x1000, CRC(88b83ff7) SHA1(4afc494cc264aaa4614da6aed02ce062d9c20850) )
+ ROM_LOAD( "falcon9", 0x2000, 0x1000, CRC(cff2af47) SHA1(1757428cefad13855a623162101ec01c04006c94) )
+ ROM_LOAD( "ck10.bin", 0x3000, 0x1000, CRC(520fa4de) SHA1(6edbaf727756cd33bde94492d72654aa12dbd7e1) )
+ ROM_LOAD( "md5l.bin", 0x4000, 0x1000, CRC(d1db1bb0) SHA1(fe7d700c7f9eca9c389be3717ebebf3e7dc63aa2) )
+ /* no ROM at 5000 */
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "tpac6.bin", 0x0000, 0x1000, CRC(918e3c52) SHA1(bc630759a525615aba1a06a0781e26a1a5c2c377) )
+ ROM_LOAD( "tpac5.bin", 0x1000, 0x1000, CRC(2bbc69e7) SHA1(5741aa6944e9b936289368d533c2b19d34320260) )
+ ROM_LOAD( "tpac4.bin", 0x2000, 0x1000, CRC(8d5890b6) SHA1(92d48d75084df2e2a3fa9d92a3c6c059f0781d81) )
+ ROM_LOAD( "tpac3.bin", 0x3000, 0x1000, CRC(6b16145b) SHA1(ef17fad07b81c9dae5c6e16a86afc4a8f6a7ff8c) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "falcon2", 0x0000, 0x0800, CRC(f67c80f1) SHA1(d1fbcce1b6242f810e106ff50812636e3168ebc1) )
+ ROM_LOAD( "falcon1", 0x0800, 0x0800, CRC(80eb517d) SHA1(fef4111f656c58b28e7eac5aa5b5cc7e07ccb2fd) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "ck6v.bin", 0x0000, 0x0020, CRC(751c3325) SHA1(edce2bc883996c1d72dc6c1c9f62799b162d415a) )
+ ROM_LOAD( "ck6u.bin", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
+ ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
+
+ ROM_REGION( 0x2000, "samples", 0 )
+ ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
+ ROM_LOAD( "ck12.bin", 0x1000, 0x1000, CRC(2eb23b60) SHA1(c9e7dc584562aceb374193655fbacb7df6c9c731) )
+ROM_END
+
+GAME( 1980, cclimbrm, cclimber, cclimberx, cclimber, cclimber_state, cclimber, ROT0, "Tim Arcadecollecting", "Crazy Climber (US - modded)", MACHINE_SUPPORTS_SAVE ) // http://www.arcadecollecting.com/crazy/cchack
+GAME( 1981, ckonga2, ckong, cclimber, ckonga2, driver_device, 0, ROT270, "bootleg", "Crazy Kong Part II -1", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckonga3, ckong, cclimber, ckonga4, driver_device, 0, ROT270, "bootleg", "Crazy Kong Part II -2", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongfix, ckong, cclimber, ckong, driver_device, 0, ROT270, "Pinny", "Crazy Kong Part II (Graphic Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, tongypac, ckong, cclimber, ckong, driver_device, 0, ROT270, "Grand Master Peter", "Tongy Paccy", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/centiped.cpp b/docs/release/src/hbmame/drivers/centiped.cpp
new file mode 100644
index 00000000000..fba3faa5eb6
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/centiped.cpp
@@ -0,0 +1,165 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/centiped.cpp"
+
+ROM_START( astropd2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "astropd2.211", 0x0000, 0x0800, CRC(7bdb6861) SHA1(38e3f1827687e8a93ad66f69bee5a34f5f553fa4) )
+ ROM_LOAD( "astropd2.212", 0x0800, 0x0800, CRC(043f9810) SHA1(954e55d6cc464f6f992f615b89b43d6cb29d35a9) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+ROM_START( astroped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "astroped.211", 0x0000, 0x0800, CRC(47992235) SHA1(f200c55327edee86abb82a2c33f75a2cf1abbb1f) )
+ ROM_LOAD( "astroped.212", 0x0800, 0x0800, CRC(1f877066) SHA1(7254765394c71bfcca8a1061b0544438f2783218) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+ROM_START( cemescry )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION(0x1000, "gfx1", 0 )
+ ROM_LOAD( "cemescry.211", 0x0000, 0x0800, CRC(dad550a7) SHA1(3a5067dac4d5fc5af01a9778654463f37f793606) )
+ ROM_LOAD( "cemescry.212", 0x0800, 0x0800, CRC(47982803) SHA1(62b3aa80379fd71eb4efc5994b594b1eb69c0468) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+/* E418 - same as centipdb except for 2 roms */
+ROM_START( centipb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "d1", 0x2000, 0x0800, CRC(b17b8e0b) SHA1(01944cf040cf23aeb4c50d4f2e63181e08a07310) )
+ ROM_LOAD( "e1", 0x2800, 0x0800, CRC(7684398e) SHA1(eea8e05506a7af2fec55c2689e3caafc62ea524f) )
+ ROM_LOAD( "h1", 0x3000, 0x0800, CRC(74580fe4) SHA1(35b8a8675e4e020e234e51c3e4bd4ee5c24b79d2) )
+ ROM_LOAD( "centipb.4", 0x3800, 0x0800, CRC(849b1614) SHA1(9060e39ec1d5c66e26c8d28a86818bcc1801c610) )
+ ROM_LOAD( "centipb.5", 0x6000, 0x0800, CRC(9d3ad0e5) SHA1(ad7520b3c95d729bfd022553817f868485e9a191) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "136001-211.f7", 0x0000, 0x0800, CRC(880acfb9) SHA1(6c862352c329776f2f9974a0df9dbe41f9dbc361) )
+ ROM_LOAD( "136001-212.hj7", 0x0800, 0x0800, CRC(b1397029) SHA1(974c03d29aeca672fffa4dfc00a06be6a851aacb) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+ROM_START( killiped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION(0x1000, "gfx1", 0 )
+ ROM_LOAD( "killiped.211", 0x0000, 0x0800, CRC(6115917c) SHA1(ec9d7fc6503647a4bd13894c44584cb308232ecd) )
+ ROM_LOAD( "killiped.212", 0x0800, 0x0800, CRC(3d545e5b) SHA1(098f714084ada6ea1f379da9783581bb6be20d2c) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+/* E626 - This dump has a bad "2" rom. Using the one from magworm for now. The coins aren't always detected. */
+ROM_START( magworm2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "magworm2.k0", 0x2000, 0x0800, CRC(22985495) SHA1(ad477b05d9303a03d99d110ff4546d1e5de165bd) )
+ ROM_LOAD( "magworm2.k1", 0x2800, 0x0800, CRC(981e1ddc) SHA1(b7ba1d522cb45b646d2b26e06d9531196152722e) )
+ ROM_LOAD( "11005-2.k2", 0x3000, 0x0800, CRC(f127f1c3) SHA1(3fddcd6f458ac60eaebacef921b522dd2c7b8141) )
+ ROM_LOAD( "magworm2.k3", 0x3800, 0x0800, CRC(95029f45) SHA1(a341cf1a3bf91f24bf3ae87b2f5950228cc9379d) )
+
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "11005-4.c4", 0x0000, 0x0800, CRC(cea64e1a) SHA1(9022102124e1ad93f912ce8bdf85f8a886b0879b) )
+ ROM_LOAD( "11005-5.c5", 0x0800, 0x0800, CRC(24558ea5) SHA1(8cd7131e19afd7a96191b1b3c3fba7ae9a140f4b) )
+ROM_END
+
+ROM_START( pacipede )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION(0x1000, "gfx1", 0 )
+ ROM_LOAD( "paciped.211", 0x0000, 0x0800, CRC(4d2a94c0) SHA1(6f07f86ec6b8fbd62a63a808b20ced5116765f11) )
+ ROM_LOAD( "paciped.212", 0x0800, 0x0800, CRC(10fac52e) SHA1(80c4f9148b5310b81963960ddc8ad4ec3e26217b) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+ROM_START( silliped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136013-104.mn1", 0x4000, 0x1000, CRC(40711675) SHA1(b595d6a0f5d3c611ade1b83a94c3b909d2124dc4) )
+ ROM_LOAD( "136013-103.l1", 0x5000, 0x1000, CRC(fb01baf2) SHA1(9c1d0bbc20bf25dd21761a311fd1ed80aa029241) )
+ ROM_LOAD( "136013-102.jk1", 0x6000, 0x1000, CRC(62e137e0) SHA1(9fe40db55ba1d20d4f11704f7f5df9ff75b87f30) )
+ ROM_LOAD( "136013-101.h1", 0x7000, 0x1000, CRC(46752c7d) SHA1(ab06b1fd80271849946f90757b3837b617394929) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "silliped.106", 0x0000, 0x0800, CRC(b946599e) SHA1(3bd7360c8b4e4bbda0ffcda6b8d5961430073d5c) )
+ ROM_LOAD( "silliped.107", 0x0800, 0x0800, CRC(89442fbc) SHA1(450bedd9d09300191bbc31c4cc5b5ca0424661ef) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.e7", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) ) /* not used */
+ROM_END
+
+ROM_START( vectiped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION(0x1000, "gfx1", 0 )
+ ROM_LOAD( "vectiped.211", 0x0000, 0x0800, CRC(33eccc59) SHA1(ab456577e4a4392abb35831a20e30e6314502367) )
+ ROM_LOAD( "vectiped.212", 0x0800, 0x0800, CRC(bc71790c) SHA1(b5a69ee0cb5861a0b328f478a49d453716a8703d) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+ROM_START( vectrped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "136001-307.d1", 0x2000, 0x0800, CRC(5ab0d9de) SHA1(8ea6e3304202831aabaf31dbd0f970a7b3bfe421) )
+ ROM_LOAD( "136001-308.e1", 0x2800, 0x0800, CRC(4c07fd3e) SHA1(af4fdbf32c23b1864819d620a874e7f205da3cdb) )
+ ROM_LOAD( "136001-309.fh1", 0x3000, 0x0800, CRC(ff69b424) SHA1(689fa560d40a384dcbcad7c8095bc12e91875580) )
+ ROM_LOAD( "136001-310.j1", 0x3800, 0x0800, CRC(44e40fa4) SHA1(c557db83876afc8ab52047ab1a3c3bfef34d6351) )
+
+ ROM_REGION(0x1000, "gfx1", 0 )
+ ROM_LOAD( "vectrped.211", 0x0000, 0x0800, CRC(e65cd908) SHA1(ceb25e4850e5e7cbe2809c465313610b99321269) )
+ ROM_LOAD( "vectrped.212", 0x0800, 0x0800, CRC(72616fcb) SHA1(c7617be0f28dbeae662738a0d8bba6c2e12a02aa) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "136001-213.p4", 0x0000, 0x0100, CRC(6fa3093a) SHA1(2b7aeca74c1ae4156bf1878453a047330f96f0a8) )
+ROM_END
+
+GAME( 2002, astropd2, centiped, centiped, centiped, driver_device, 0, ROT270, "Twisty", "Astropede II", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, astroped, centiped, centiped, centiped, driver_device, 0, ROT270, "Twisty", "Astropede", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, cemescry, centiped, centiped, centiped, driver_device, 0, ROT270, "NoSync", "Cemescary", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, centipb, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg", "Centipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, killiped, centiped, centiped, centiped, driver_device, 0, ROT270, "The Dog", "Killipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, magworm2, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg", "Magic Worm", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacipede, centiped, centiped, centiped, driver_device, 0, ROT270, "Jeff Coleburn", "Pacipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, silliped, milliped, milliped, milliped, driver_device, 0, ROT270, "Andy", "Sillipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, vectiped, centiped, centiped, centiped, driver_device, 0, ROT270, "The Dog", "Vectipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, vectrped, centiped, centiped, centiped, driver_device, 0, ROT270, "T-Bone", "Vectorpede", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cinemat.cpp b/docs/release/src/hbmame/drivers/cinemat.cpp
new file mode 100644
index 00000000000..b43b81d75cf
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cinemat.cpp
@@ -0,0 +1,47 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/* BBUGTEST NOTES
+
+With no documentation whatsoever, I have compiled what I know to share with you all.
+
+I do not know if the graphics are complete, or if all tests are working.
+
+Use the dipswitches to select a test pattern.
+
+Pressing any player key, or start button will make a slight change to the colours.
+
+If you move your mouse to the left, pressing the keys will alter the numbers across the bottom
+of the screen. Moving the mouse to the right will revert to changing colours again.
+
+*/
+
+
+#include "../mame/drivers/cinemat.cpp"
+
+static MACHINE_CONFIG_DERIVED( bbugtest, cinemat_jmi_32k )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 1024, 0, 788)
+ MCFG_VIDEO_START_OVERRIDE(cinemat_state,cinemat_color)
+MACHINE_CONFIG_END
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+ROM_START( bbugtest )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 16k for code */
+ ROM_LOAD16_BYTE( "bbugtest.t7", 0x0000, 0x1000, CRC(92a460f1) SHA1(eaa8fea38d87f1fd6e2e52b92085fed43498e5ce) )
+ ROM_LOAD16_BYTE( "bbugtest.p7", 0x0001, 0x1000, CRC(06d0bde2) SHA1(b0a224b7a74fa739b293ad7383236ffaa012f3c3) )
+
+ ROM_REGION( 0x1a0, "proms", 0 )
+ ROM_LOAD("prom.f14", 0x000, 0x100, CRC(9edbf536) SHA1(036ad8a231284e05f44b1106d38fc0c7e041b6e8) )
+ ROM_LOAD("prom.e14", 0x100, 0x020, CRC(29dbfb87) SHA1(d8c40ab010b2ea30f29b2c443819e2b69f376c04) )
+ ROM_LOAD("prom.d14", 0x120, 0x020, CRC(9a05afbf) SHA1(5d806a42424942ba5ef0b70a1d629315b37f931b) )
+ ROM_LOAD("prom.c14", 0x140, 0x020, CRC(07492cda) SHA1(32df9148797c23f70db47b840139c40e046dd710) )
+ ROM_LOAD("prom.j14", 0x160, 0x020, CRC(a481ca71) SHA1(ce145d61686f600cc16b77febfd5c783bf8c13b0) )
+ ROM_LOAD("prom.e8", 0x180, 0x020, CRC(791ec9e1) SHA1(6f7fcce4aa3be9020595235568381588adaab88e) )
+ROM_END
+
+GAME(1981, bbugtest, 0, bbugtest, boxingb, cinemat_state, boxingb, ORIENTATION_FLIP_Y, "Test Rom", "Test Rom - Boxing Bugs", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/commando.cpp b/docs/release/src/hbmame/drivers/commando.cpp
new file mode 100644
index 00000000000..0e2bc7dd41d
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/commando.cpp
@@ -0,0 +1,78 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/commando.cpp"
+
+ROM_START( comdelux )
+ ROM_REGION( 2*0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */
+ ROM_LOAD( "cm04.9m", 0x0000, 0x8000, CRC(8438b694) SHA1(e154478d8f1b635355bd777370acabe49cb9d309) )
+ ROM_LOAD( "cm03.8m", 0x8000, 0x4000, CRC(35486542) SHA1(531a85c9e03970ce037be84f2240c2df6f6e3ec1) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "cm02.9f", 0x0000, 0x4000, CRC(f9cc4a74) SHA1(ee8dd73919c6f47f62cc6d999de9510db9f79b8f) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "vt01.5d", 0x0000, 0x4000, CRC(505726e0) SHA1(2435c87c9c9d78a6e703cf0e1f6a0288207fcd4c) ) // characters
+
+ ROM_REGION( 0x18000, "gfx2", 0 )
+ ROM_LOAD( "vt11.5a", 0x00000, 0x4000, CRC(7b2e1b48) SHA1(5d49e1d8146e4ef744445b68f35677302e875a85) ) // SCR X (tiles)
+ ROM_LOAD( "vt12.6a", 0x04000, 0x4000, CRC(81b417d3) SHA1(5ec7e3f0c8069384a5f6eb39232c228b9d7b8c0c) ) // SCR X
+ ROM_LOAD( "vt13.7a", 0x08000, 0x4000, CRC(5612dbd2) SHA1(9e4e1a22b6cbf60607b9a81dae34482ae55f7c47) ) // SCR Y
+ ROM_LOAD( "vt14.8a", 0x0c000, 0x4000, CRC(2b2dee36) SHA1(8792278464fa3da47176582025f6673a15a581e2) ) // SCR Y
+ ROM_LOAD( "vt15.9a", 0x10000, 0x4000, CRC(de70babf) SHA1(6717e23baf55f84d3143fb432140a7c3e102ac26) ) // SCR Z
+ ROM_LOAD( "vt16.10a", 0x14000, 0x4000, CRC(14178237) SHA1(f896e71c7004349c9a46155edfd9f0aaa186065d) ) // SCR Z
+
+ ROM_REGION( 0x18000, "gfx3", 0 )
+ ROM_LOAD( "dx_vt05.7e", 0x00000, 0x4000, CRC(b1839dd4) SHA1(7172718a0a5f5ba1c6785545dea196e03d3c58c3) ) /* sprites */
+ ROM_LOAD( "vt06.8e", 0x04000, 0x4000, CRC(26fee521) SHA1(2fbfc73ee860f72a20229a01d4da9f5cc2e858d3) )
+ ROM_LOAD( "dx_vt07.9e", 0x08000, 0x4000, CRC(4cb1cd67) SHA1(317cfbbff00870b7f7d8023b135d3a96dc0e73fb) )
+ ROM_LOAD( "dx_vt08.7h", 0x0c000, 0x4000, CRC(42ff8a11) SHA1(94d0fdbb98670953e586f75030ec48b5af2138a9) )
+ ROM_LOAD( "vt09.8h", 0x10000, 0x4000, CRC(98703982) SHA1(ba9a9b0dcadd4f52502828408c4a19b0bd518351) )
+ ROM_LOAD( "dx_vt10.9h", 0x14000, 0x4000, CRC(7650a262) SHA1(e4d59c2dda161d49849b1d20782a2126fa0743c7) )
+
+ ROM_REGION( 0x600, "proms", 0 )
+ ROM_LOAD( "vtb1.1d", 0x0000, 0x0100, CRC(3aba15a1) SHA1(8b057f6e26155dd9e48bde182e680fce4519f600) ) /* red */
+ ROM_LOAD( "vtb2.2d", 0x0100, 0x0100, CRC(88865754) SHA1(ca6dddca98baf00a65b2fb70b69cf4704ef8c831) ) /* green */
+ ROM_LOAD( "vtb3.3d", 0x0200, 0x0100, CRC(4c14c3f6) SHA1(644ac17c7413f094ec9a15cba87bbd421b26321f) ) /* blue */
+ ROM_LOAD( "vtb4.1h", 0x0300, 0x0100, CRC(b388c246) SHA1(038f9851699331ad887b6281a9df053dca3db8fd) ) /* palette selector (not used) */
+ ROM_LOAD( "vtb5.6l", 0x0400, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */
+ ROM_LOAD( "vtb6.6e", 0x0500, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ROM_END
+
+ROM_START( comdlux1 )
+ ROM_REGION( 2*0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */
+ ROM_LOAD( "cm04.9m", 0x0000, 0x8000, CRC(8438b694) SHA1(e154478d8f1b635355bd777370acabe49cb9d309) )
+ ROM_LOAD( "cm03.8m", 0x8000, 0x4000, CRC(35486542) SHA1(531a85c9e03970ce037be84f2240c2df6f6e3ec1) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "cm02.9f", 0x0000, 0x4000, CRC(f9cc4a74) SHA1(ee8dd73919c6f47f62cc6d999de9510db9f79b8f) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "vt01.5d", 0x0000, 0x4000, CRC(505726e0) SHA1(2435c87c9c9d78a6e703cf0e1f6a0288207fcd4c) ) // characters
+
+ ROM_REGION( 0x18000, "gfx2", 0 )
+ ROM_LOAD( "vt11.5a", 0x00000, 0x4000, CRC(7b2e1b48) SHA1(5d49e1d8146e4ef744445b68f35677302e875a85) ) // SCR X (tiles)
+ ROM_LOAD( "vt12.6a", 0x04000, 0x4000, CRC(81b417d3) SHA1(5ec7e3f0c8069384a5f6eb39232c228b9d7b8c0c) ) // SCR X
+ ROM_LOAD( "vt13.7a", 0x08000, 0x4000, CRC(5612dbd2) SHA1(9e4e1a22b6cbf60607b9a81dae34482ae55f7c47) ) // SCR Y
+ ROM_LOAD( "vt14.8a", 0x0c000, 0x4000, CRC(2b2dee36) SHA1(8792278464fa3da47176582025f6673a15a581e2) ) // SCR Y
+ ROM_LOAD( "vt15.9a", 0x10000, 0x4000, CRC(de70babf) SHA1(6717e23baf55f84d3143fb432140a7c3e102ac26) ) // SCR Z
+ ROM_LOAD( "vt16.10a", 0x14000, 0x4000, CRC(14178237) SHA1(f896e71c7004349c9a46155edfd9f0aaa186065d) ) // SCR Z
+
+ ROM_REGION( 0x18000, "gfx3", 0 )
+ ROM_LOAD( "dx1_vt05.7e", 0x00000, 0x4000, CRC(91865879) SHA1(151b3202ea16141f53bf7ae96ac2171b70564ee5) ) /* sprites */
+ ROM_LOAD( "vt06.8e", 0x04000, 0x4000, CRC(26fee521) SHA1(2fbfc73ee860f72a20229a01d4da9f5cc2e858d3) )
+ ROM_LOAD( "dx_vt07.9e", 0x08000, 0x4000, CRC(4cb1cd67) SHA1(317cfbbff00870b7f7d8023b135d3a96dc0e73fb) )
+ ROM_LOAD( "dx1_vt08.7h", 0x0c000, 0x4000, CRC(ba3a06f7) SHA1(9ae9fbd490308e27b71bc1dcd54f3e4e420feb3f) )
+ ROM_LOAD( "vt09.8h", 0x10000, 0x4000, CRC(98703982) SHA1(ba9a9b0dcadd4f52502828408c4a19b0bd518351) )
+ ROM_LOAD( "dx_vt10.9h", 0x14000, 0x4000, CRC(7650a262) SHA1(e4d59c2dda161d49849b1d20782a2126fa0743c7) )
+
+ ROM_REGION( 0x600, "proms", 0 )
+ ROM_LOAD( "vtb1.1d", 0x0000, 0x0100, CRC(3aba15a1) SHA1(8b057f6e26155dd9e48bde182e680fce4519f600) ) /* red */
+ ROM_LOAD( "vtb2.2d", 0x0100, 0x0100, CRC(88865754) SHA1(ca6dddca98baf00a65b2fb70b69cf4704ef8c831) ) /* green */
+ ROM_LOAD( "vtb3.3d", 0x0200, 0x0100, CRC(4c14c3f6) SHA1(644ac17c7413f094ec9a15cba87bbd421b26321f) ) /* blue */
+ ROM_LOAD( "vtb4.1h", 0x0300, 0x0100, CRC(b388c246) SHA1(038f9851699331ad887b6281a9df053dca3db8fd) ) /* palette selector (not used) */
+ ROM_LOAD( "vtb5.6l", 0x0400, 0x0100, CRC(712ac508) SHA1(5349d722ab6733afdda65f6e0a98322f0d515e86) ) /* interrupt timing (not used) */
+ ROM_LOAD( "vtb6.6e", 0x0500, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ROM_END
+
+GAME( 2002, comdelux, commando, commando, commandou, commando_state, commando, ROT270, "Twisty", "Commando Deluxe", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comdlux1, commando, commando, commandou, commando_state, commando, ROT270, "Twisty", "Commando Deluxe Again", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cps1.cpp b/docs/release/src/hbmame/drivers/cps1.cpp
new file mode 100644
index 00000000000..356664fe463
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cps1.cpp
@@ -0,0 +1,12352 @@
+// license:BSD-3-Clause
+// copyright-holders:Paul Leaman
+/***************************************************************************
+
+Capcom System 1
+===============
+
+Driver provided by:
+Paul Leaman (paul@vortexcomputing.demon.co.uk)
+
+68000 for game, Z80, YM-2151 and OKIM6295 for sound.
+
+68000 clock speeds are unknown for all games (except where commented)
+
+todo: move the bootleg sets with modified hardware into their own
+ drivers, like fcrash.c
+
+
+Notes
+-----
+- All original PALs are protected. The images loaded in the ROM definitions are
+ logically equivalent replacements with a GAL16V8 target. The actual pld types
+ found on the boards can also be PAL16P8, PAL16L8 etc.
+
+- There are five PALs on the A-Board, they are the same across all A-Board
+ revisions, but their location varies.
+ The A-Boards are interchangeable, so the IC locations are not specified in
+ the ROM definitions and are listed here instead:
+
+ PAL ID 88617A 89626A
+ ------ ------ ------
+ PRG1 12H 9K
+ IOA1 12F 4A
+ BUF1 16H 13K
+ ROM1 15H 14K
+ SOU1 13E 10F
+
+ For Q-Sound games, the A-Board misses the Z80, Oki and amp, which are replaced
+ by the D-Board; the SOU1 PAL is missing as well, while PRG1 is replaced by
+ PRG2. The other PALs are the same.
+
+- The B-board usually has two PALs (later revisions have three). The first PAL
+ is used to map tile codes to the graphics ROMs, and changes from game to game.
+ The other doesn't change from game to game and there are only two versions,
+ called LWIO and IOB1, which are almost identical, the only difference being
+ that outputs o16 and o17 are R/W in IOB1 and Write only in LWIO. Since those
+ outputs are not used anyway except that in Forgotten Worlds, one wonders why
+ they were changed.
+
+ SF2 revision "E" World and USA 910228 maps CPS-B at 8001C0 instead of 800140
+ and seems to be the only one that uses the IOB2 and C632B PALs instead of the
+ IOB1 and C632, while STF29 PAL is confirmed to be the same as the other SF2 sets.
+
+ pin 1 CN2 D9 = /IOCS (i.e. address 8xxxxx)
+ pin 2 CN2 D7 = /RDB
+ pin 3 CN2 C6 = /UDSWR
+ pin 4 CN2 D6 = /LDSWR
+ pin 5 CN2 C19 = A8
+ pin 6 CN2 C20 = A7
+ pin 7 CN2 C21 = A6
+ pin 8 CN2 C22 = A5
+ pin 9 CN2 C23 = A4
+ pin 10 GND
+ pin 11 CN2 C24 = A3
+ pin 12 CN2 C25 = A2
+
+ LWIO:
+ /o19 = /i1 * /i2 * /i5 * /i6 * i7 * i8 * /i9 800060-80006f R not used
+ /o18 = /i1 * /i2 * /i5 * /i6 * i7 * /i8 * i9 800050-80005f R forgotten worlds dial (on 88618B & 88621B B-boards)
+ o17 = /i1 * /i4 * /i5 * /i6 * i7 * /i8 * /i9 * /i11 800040-800047 W forgotten worlds dial (on 88618B & 88621B B-boards)
+ o16 = /i1 * /i4 * /i5 * /i6 * i7 * /i8 * /i9 * i11 800048-80004f W forgotten worlds dial (on 88618B & 88621B B-boards)
+ /o15 = /i1 * i5 * /i6 * i7 800140-80017f R/W CPS-B
+ /o14 = /i1 * /i4 * /i5 * /i6 * /i7 * i8 * i9 * /i11 800030-800037 W not used (overlaps coinctrl on A-board)
+ /o13 = /i1 * /i2 * /i5 * /i6 * /i7 * /i8 * /i9 * i11 800008-80000f R not used
+ /o12 = /i1 * /i2 * /i5 * /i6 * /i7 * /i8 * i9 * i11 800018-80001f R not used (overlaps system/dsw inputs on A-board)
+
+ IOB1:
+ /o19 = /i1 * /i2 * /i5 * /i6 * i7 * i8 * /i9 800060-80006f R not used
+ /o18 = /i1 * /i2 * /i5 * /i6 * i7 * /i8 * i9 800050-80005f R not used
+ o17 = /i1 * /i5 * /i6 * i7 * /i8 * /i9 * /i11 800040-800047 R/W not used
+ o16 = /i1 * /i5 * /i6 * i7 * /i8 * /i9 * i11 800048-80004f R/W not used
+ /o15 = /i1 * i5 * /i6 * i7 800140-80017f R/W CPS-B
+ /o14 = /i1 * /i4 * /i5 * /i6 * /i7 * i8 * i9 * /i11 800030-800037 W not used (overlaps coinctrl on A-board)
+ /o13 = /i1 * /i2 * /i5 * /i6 * /i7 * /i8 * /i9 * i11 800008-80000f R not used
+ /o12 = /i1 * /i2 * /i5 * /i6 * /i7 * /i8 * i9 * i11 800018-80001f R not used (overlaps system/dsw inputs on A-board)
+
+
+
+Stephh's notes (based on the games M68000 code and some tests) :
+
+1) 'forgottn' and clones
+
+ - Keys in the "scroll 1 test" screen :
+ * P1 UP : char code += 0x0200
+ * P1 DOWN : char code -= 0x0200
+ * P1 RIGHT : attribute ^= 0x20 ; also affects Hflip
+ * P1 LEFT : attribute ^= 0x40 ; also affects Vflip
+ * P1 button 1 : (attribute++) & 0x1f ; also affects color
+ * P1 button 2 : (attribute--) & 0x1f ; also affects color
+
+2) 'ghouls' and clones
+
+2a) 'ghouls'
+
+ - NO debug features
+
+2b) 'ghoulsu'
+
+ - How to activate the debug features :
+ * set "Game Mode" Dip Switch to "Game"
+ * set both "Coin A" and "Coin B" Dip Switches to 1C_1C
+ * reset the game (F3 key)
+ * insert a coin
+ * set "Game Mode" Dip Switch to "Test"
+ * set the debug Dip Switches to what you want
+ * start a 1 player game
+ - Some debug features :
+ * "Armor on New Life" is effective at the beginning of a new life
+ Note that even when you start without armor, you need to be hit twice
+ * "Starting Weapon" is effective only when you start a new game
+ or when you continue play
+ * "Starting Level" is effective only when you start a new game
+ (you must NOT continue play !)
+ * "Slow Motion" and "Invulnerability" can be changed at any time
+
+2c) 'daimakai'
+
+ - NO debug features
+ - Different Dip Switches than in 'ghouls'
+
+3) 'strider' and clones
+
+ - TO DO !
+
+4) 'dynwar' and clones
+
+4a) 'dynwar'
+
+ - According to code at 0x0125fa and 0x012634, bits 0 and 1 of DSWC also affect the energy cost
+ (table at 0x012662) when you press button 3 ("tactics" in the manual) :
+
+ bit 0 bit 1 cost possible BCD values (based on kind of "tactics")
+ OFF OFF normal 0x10 (rockslide) 0x08 (ambush) 0x14 (flame) 0x12 (explosion)
+ ON OFF very low 0x03 0x02 0x05 0x04
+ OFF ON low 0x06 0x04 0x10 0x08
+ ON ON high 0x13 0x10 0x19 0x16
+
+ So IMO, there might be an ingame bug at 0x000c7e which should read bits 2 and 3 of DSWC
+ (instead of having them unused) :
+ 000C7E: 0240 0003 andi.w #$3, D0
+ should be
+ 000C7E: 0240 000c andi.w #$c, D0
+ However, only bits 4 to 7 are tested while you are in the "test mode".
+
+ Note that code at 0x000c7e is only executed once when you reset the machine;
+ this means that you can change the "Freeze" and "Turbo Mode" Dip Switches before
+ reseting the game to change the energy cost settings, then put them back to "Off"
+ after the startup routine (when screen is black) so you can play the game.
+ - Both "Coin A" and "Coin B" Dip Switches must be set to "2 Coins/1 Credit" to make
+ this mode available. If only one Dip Switch is set to it, it is the same as 2C_1C.
+
+4b) 'dynwarj'
+
+ - The "energy cost" bug also exists in this version as well as code at 0x000c7e;
+ in fact, only code that reads these settings is at a different address :
+ check code at 0x01267a and 0x0126b4 and table at 0x0126e2.
+ - Both "Coin A" and "Coin B" Dip Switches must be set to "2 Coins/1 Credit" to make
+ this mode available. If only one Dip Switch is set to it, it is the same as 2C_1C.
+
+5) 'willow' and clones
+
+ - How to activate the debug features :
+ * set "Game Mode" Dip Switch to "Game"
+ * set both "Coin A" and "Coin B" Dip Switches to 1C_1C
+ * reset the game (F3 key)
+ * insert a coin
+ * set "Game Mode" Dip Switch to "Test"
+ * set the debug Dip Switches to what you want
+ * start a 1 player game
+ - Some debug features :
+ * "Starting Level" is effective only when you start a new game
+ (you must NOT continue play !)
+ * Once you set "Maximum magic/sword power" to "On", setting it to "Off" won't have
+ any effect until you start a new game (you must NOT continue play !)
+ * "Slow Motion Delay" is effective only when "Slow Motion" is set to "On"
+ * Even if "Freeze" Dip Switch is set to "On" a message will be displayed to its end.
+ * I can't tell what kind of infos are displayed when "Display Debug Infos"
+ Dip Switch is sry to "On" :( Any hint about them are welcome !
+ - Both "Coin A" and "Coin B" Dip Switches must be set to "2 Coins/1 Credit" to make
+ this mode available. If only one Dip Switch is set to it, it is the same as 2C_1C.
+ - When the "Stage Magic Continue" Dip Switch is set to "On", your magic and sword power
+ will be increased at the end of the level if you haven't bought the magic/sword item.
+ But you won't notice this before you use the character again.
+ For example, magic power will be increased at the end of level 1 but you won't notice
+ it before level 3, and sword power will be increased at the end of level 2 but you
+ won't notice it before level 4.
+
+6) 'ganbare'
+
+ - Using the payout setting dip switch results in some occasional hopper errors, if this
+ happens, then the clear ram dip switch needs to be used. This needs to be resolved.
+
+TO DO (2006.09.20) :
+
+ - Check 'strider' and its clones and add debug features
+ - Check other games to see if there are some debug or hidden features
+ - Add addresses from routines with debug features in the notes
+ - Look at what IN2 and IN3 do for the following sets :
+ * 'cworld2j' (IN2 only)
+ * 'qad' and 'qadjr'
+ * 'qtono2j'
+ - Check daimakar dip switches. E.g. changing the number of lives also changes the
+ starting level.
+
+Stephh's log (2006.09.20) :
+
+ - Changed the "readinputport" reads by "readinputportbytag" reads.
+ This way, inputs and Dip Switch can be in any order
+ (and I don't have the nasty conditional Dip Switch bug).
+ BTW, I've slightly changed the read memory map :
+ * one handler for the 3 Dip Switches banks : cps1_dsw_r
+ * one handler for the system inputs (IN0) : cps1_in0_r
+ * one handler for the player inputs (IN1) : cps1_in1_r
+ * renamed cps1_input2_r to cps_in2_r
+ * renamed cps1_input3_r to cps_in3_r
+ - Applied these changes to src/drivers/fcrash.c as well.
+ - Added debug features in the following sets :
+ * 'ghoulsu'
+ * 'willowu', 'willowou' and 'willowj'
+ - Checked sets with no debug features :
+ * 'forgottnua' and 'lostwrld'
+ * 'ghouls' and 'daimakai'
+ * 'dynwar' and 'dynwarj'
+
+2008-07:
+ - replaced input read handler with direct AM_READ_PORT where suitable
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "cpu/pic16c5x/pic16c5x.h"
+#include "cpu/m68000/m68000.h"
+#include "machine/eepromser.h"
+#include "sound/ym2151.h"
+#include "sound/okim6295.h"
+#include "sound/qsound.h"
+#include "machine/kabuki.h"
+#include "includes/cps1.h"
+
+
+
+READ16_MEMBER(cps_state::cps1_dsw_r)
+{
+ static const char *const dswname[] = { "IN0", "DSWA", "DSWB", "DSWC" };
+ int in = ioport(dswname[offset])->read();
+ return (in << 8) | 0xff;
+}
+
+READ16_MEMBER(cps_state::cps1_hack_dsw_r)
+{
+ static const char *const dswname[] = { "IN0", "DSWA", "DSWB", "DSWC" };
+ int in = ioport(dswname[offset])->read();
+ return (in << 8) | in;
+}
+
+READ16_MEMBER(cps_state::cps1_in1_r)
+{
+ int in = ioport("IN1")->read();
+ return (in << 8) | in;
+}
+
+READ16_MEMBER(cps_state::cps1_in2_r)
+{
+ int in = ioport("IN2")->read();
+ return (in << 8) | in;
+}
+
+READ16_MEMBER(cps_state::cps1_in3_r)
+{
+ int in = ioport("IN3")->read();
+ return (in << 8) | in;
+}
+
+READ16_MEMBER(cps_state::forgottn_dial_0_r)
+{
+ return ((ioport("DIAL0")->read() - m_dial[0]) >> (8 * offset)) & 0xff;
+}
+
+READ16_MEMBER(cps_state::forgottn_dial_1_r)
+{
+ return ((ioport("DIAL1")->read() - m_dial[1]) >> (8 * offset)) & 0xff;
+}
+
+WRITE16_MEMBER(cps_state::forgottn_dial_0_reset_w)
+{
+ m_dial[0] = ioport("DIAL0")->read();
+}
+
+WRITE16_MEMBER(cps_state::forgottn_dial_1_reset_w)
+{
+ m_dial[1] = ioport("DIAL1")->read();
+}
+
+
+WRITE8_MEMBER(cps_state::cps1_snd_bankswitch_w)
+{
+ membank("bank1")->set_entry(data & 0x01);
+}
+
+WRITE8_MEMBER(cps_state::cps1_oki_pin7_w)
+{
+ m_oki->set_pin7(data & 1);
+}
+
+WRITE16_MEMBER(cps_state::cps1_soundlatch_w)
+{
+ if (ACCESSING_BITS_0_7)
+ m_soundlatch->write(space, 0, data & 0xff);
+ else
+ m_soundlatch->write(space, 0, data >> 8);
+}
+
+WRITE16_MEMBER(cps_state::cps1_soundlatch2_w)
+{
+ if (ACCESSING_BITS_0_7)
+ m_soundlatch2->write(space, 0, data & 0xff);
+}
+
+WRITE16_MEMBER(cps_state::cps1_coinctrl_w)
+{
+ if (ACCESSING_BITS_8_15)
+ {
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0400);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0800);
+
+ // bit 15 = CPS-A custom reset?
+ }
+}
+
+WRITE16_MEMBER(cps_state::cpsq_coinctrl2_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ machine().bookkeeping().coin_counter_w(2, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(3, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x08);
+ }
+}
+
+INTERRUPT_GEN_MEMBER(cps_state::cps1_interrupt)
+{
+ /* Strider also has a IRQ4 handler. It is input port related, but the game */
+ /* works without it. It is the *only* CPS1 game to have that. */
+ /* ...until we found out that ganbare relies on it, see below */
+ device.execute().set_input_line(2, HOLD_LINE);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(cps_state::ganbare_interrupt)
+{
+ /* not sure on the timing or source of this - the game needs it once per frame, */
+ /* otherwise you get a "HARD ERROR" after boot */
+ if (param == 0)
+ m_maincpu->set_input_line(4, HOLD_LINE);
+}
+
+
+/********************************************************************
+*
+* Q Sound
+* =======
+*
+********************************************************************/
+
+READ16_MEMBER(cps_state::qsound_rom_r)
+{
+ uint8_t *rom = memregion("user1")->base();
+
+ if (rom)
+ return rom[offset] | 0xff00;
+ else
+ {
+ popmessage("%06x: read sound ROM byte %04x", space.device().safe_pc(), offset);
+ return 0;
+ }
+}
+
+READ16_MEMBER(cps_state::qsound_sharedram1_r)
+{
+ return m_qsound_sharedram1[offset] | 0xff00;
+}
+
+WRITE16_MEMBER(cps_state::qsound_sharedram1_w)
+{
+ if (ACCESSING_BITS_0_7)
+ m_qsound_sharedram1[offset] = data;
+}
+
+READ16_MEMBER(cps_state::qsound_sharedram2_r)
+{
+ return m_qsound_sharedram2[offset] | 0xff00;
+}
+
+WRITE16_MEMBER(cps_state::qsound_sharedram2_w)
+{
+ if (ACCESSING_BITS_0_7)
+ m_qsound_sharedram2[offset] = data;
+}
+
+WRITE8_MEMBER(cps_state::qsound_banksw_w)
+{
+ /* Z80 bank register for music note data. It's odd that it isn't encrypted though. */
+ int bank = data & 0x0f;
+ if ((0x10000 + (bank * 0x4000)) >= memregion("audiocpu")->bytes())
+ {
+ logerror("WARNING: Q sound bank overflow (%02x)\n", data);
+ bank = 0;
+ }
+
+ membank("bank1")->set_entry(bank);
+}
+
+
+/********************************************************************
+*
+* EEPROM
+* ======
+*
+* The EEPROM is accessed by a serial protocol using the register
+* 0xf1c006
+*
+********************************************************************/
+
+/*
+PAL PRG1 (16P8B @ 12H):
+
+I0 = AS
+I1 = /BGACKB
+I2 = A23
+I3 = A22
+I4 = A21
+I5 = A20
+I6 = A19
+I7 = A18
+I8 = A17
+I9 = A16
+
+n.c. = pin19 = ( !I0 & I1 )
+n.c. = pin18 = ( !I0 & I1 )
+n.c. = pin17 = ! ( I0 & I1 & (!I2 | !I3 | !I4 | !I5 | !I6 | !I7) )
+n.c. = pin16 = ! ( I2 & I3 & I4 & I5 & I6 & I7 )
+/IOCS = pin15 = ! ( I0 & I1 & I2 & !I3 & !I4 & !I5 )
+/ONE WAIT = pin14 = ! ( I0 & I1 & ( I2 | !I3) )
+/databus = pin13 = ! ( I0 & I1 & (!I2 | !I3 | !I4 | !I5 | !I6 | !I7) )
+/workram = pin12 = ! ( I0 & I1 & I2 & I3 & I4 & I5 & I6 & I7 )
+
+
+In Q-Sound games, PRG1 is replaced by PRG2:
+
+/IOCS = pin 15 = ! ( I0 & I1 & I2 & !I3 & !I4 & !I5 )
+/ONE WAIT = pin 14 = ! ( I0 & I1 & (!I2 | !I3 | !I4 | !I5 | ( I6 & I7 & I8 & I9)) )
+/databus = pin 13 = ! ( I0 & I1 & (!I2 | !I3 | !I4 | !I5 | (!I6 & !I7 & !I8)) )
+/workram = pin 12 = ! ( I0 & I1 & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9 )
+
+
+
+
+
+PAL IOA1 (16P8B @ 12F):
+
+I0 = /IOCS
+I1 = /RDB
+I2 = /UDSWR
+I3 = /LDSWR
+I4 = AB8
+I5 = AB7
+I6 = AB6
+I7 = AB5
+I8 = AB4
+I9 = AB3
+
+player input = pin19 = ! ( !I0 & !I1 & !I4 & !I5 & !I6 & !I7 & !I8 & !I9 )
+system input/dips = pin18 = ! ( !I0 & !I1 & !I4 & !I5 & !I6 & !I7 & I8 & I9 )
+outputs = pin17 = ! ( !I0 & !I2 & !I4 & !I5 & !I6 & I7 & I8 & !I9 )
+sound 1B = pin16 = ! ( !I0 & !I3 & I4 & I5 & !I6 & !I7 & !I8 & I9 )
+sound 0B = pin15 = ! ( !I0 & !I3 & I4 & I5 & !I6 & !I7 & !I8 & !I9 )
+n.c. = pin14 = ( !I1 & !I2 )
+/PPU1 = pin13 = ! ( !I0 & I4 & !I5 & !I6 )
+n.c. = pin12 = ( !I1 & !I2 )
+
+
+PAL BUF1 (16P8B @ 16H):
+
+I0 = A23 (all address lines can come both from 68000 and CPS-A custom)
+I1 = A22
+I2 = A21
+I3 = A20
+I4 = A19
+I5 = A18
+I6 = A17
+I7 = A16
+I8 = ASB
+
+BUF0 = pin19 = ! ( I0 & !I1 & !I2 & I3 & !I4 & !I5 & !I6 & !I7 )
+BUF1 = pin18 = ! ( I0 & !I1 & !I2 & I3 & !I4 & !I5 & !I6 & I7 )
+BUF2 = pin17 = ! ( I0 & !I1 & !I2 & I3 & !I4 & !I5 & I6 & !I7 )
+BUF3 = pin16 = ! ( I0 & !I1 & !I2 & I3 & !I4 & !I5 & I6 & I7 )
+BUF4 = pin15 = ! ( I0 & !I1 & !I2 & I3 & !I4 & I5 & !I6 & !I7 )
+BUF5 = pin14 = ! ( I0 & !I1 & !I2 & I3 & !I4 & I5 & !I6 & I7 )
+BUF6 = pin13 = ! ( I0 & !I1 & !I2 & I3 & !I4 & I5 & I6 & !I7 )
+/RDB = pin12 = ( I0 & !I1 & !I2 & I3 & !I8 )
+
+BUF0-BUF2 are gfxram on A-board. BUF3-BUF6 go to B-board (provision for expansion, never used)
+
+
+PAL ROM1 (16P8B @ 15H):
+
+I0 = A23 (all address lines can come both from 68000 and CPS-A custom)
+I1 = A22
+I2 = A21
+I3 = A20
+I4 = A19
+I5 = A18
+I6 = A17
+I7 = A16
+I8 = ASB
+
+PRG0 = pin17 = ! ( !I8 & !I0 & !I1 & !I2 & !I3 & !I4 & !I5 )
+PRG1 = pin16 = ! ( !I8 & !I0 & !I1 & !I2 & !I3 & !I4 & I5 )
+PRG2 = pin15 = ! ( !I8 & !I0 & !I1 & !I2 & !I3 & I4 & !I5 )
+PRG3 = pin14 = ! ( !I8 & !I0 & !I1 & !I2 & !I3 & I4 & I5 )
+PRG4 = pin19 = ! ( !I8 & !I0 & !I1 & !I2 & I3 & !I4 )
+PRG5 = pin18 = ! ( !I8 & !I0 & !I1 & !I2 & I3 & I4 )
+PRG6 = pin13 = ! ( !I8 & !I0 & !I1 & I2 & !I3 & !I4 )
+/RDB = pin12 = ( !I8 & !I0 & !I1 )
+
+All PRGx go to B-board. Provision for up to 4MB of ROM space, which was never used in full.
+
+*/
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ /* forgottn, willow, cawing, nemo, varth read from 800010. Probably debug input leftover from development */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r) // HBMAME /* System input ports / Dip Switches */
+ AM_RANGE(0x800020, 0x800021) AM_READNOP /* ? Used by Rockman ? not mapped according to PAL */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ /* Forgotten Worlds has dial controls on B-board mapped at 800040-80005f. See DRIVER_INIT */
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ /* CPS-B custom is mapped by the PAL IOB2 on the B-board. SF2 revision "E" World and USA 910228 has it at a different
+ address, see DRIVER_INIT */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ(cps1_in2_r) /* Player 3 controls (later games) HBMAME */
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
+ADDRESS_MAP_END
+
+/*
+PAL SOU1 (16P8 @ 13E):
+
+I0 = /MREQ
+I1 = A15
+I2 = A14
+I3 = A13
+I4 = A12
+I5 = bank latch
+I6 = /RD
+I7 = /WR
+I8 = /BANK
+
+bank latch = pin19 = ! ( !I0 & !I7 & !I8 )
+/SWR = pin18 = ! ( !I0 & !I7 )
+/SRD = pin17 = ! ( !I0 & !I6 )
+ls138 = pin16 = ! ( !I0 & I1 & I2 & I3 & I4 )
+workram = pin15 = ! ( !I0 & I1 & I2 & !I3 & I4 )
+SOUNDA14 = pin14 = ! ( !I0 & ((!I1 & !I2) | ( I1 & !I2 & !I5)) )
+SOUNDA15 = pin13 = ( I1 )
+/SOUNDCE = pin12 = ! ( !I0 & (!I1 | ( I1 & !I2)) )
+*/
+
+static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
+ AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
+ AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */
+ AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( qsound_main_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM // HBMAME for dinoz
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom (mapped by LWIO/IOB1 PAL on B-board) */
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command HBMAME */
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade HBMAME */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */
+ AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */
+ AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
+ AM_RANGE(0xf1c002, 0xf1c003) AM_READ_PORT("IN3") /* Player 4 controls ("Muscle Bombers") */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
+ADDRESS_MAP_END
+
+ADDRESS_MAP_START( qsound_sub_map, AS_PROGRAM, 8, cps_state ) // used by cps2.c too
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked (contains music data) */
+ AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("qsound_ram1")
+ AM_RANGE(0xd000, 0xd002) AM_DEVWRITE("qsound", qsound_device, qsound_w)
+ AM_RANGE(0xd003, 0xd003) AM_WRITE(qsound_banksw_w)
+ AM_RANGE(0xd007, 0xd007) AM_DEVREAD("qsound", qsound_device, qsound_r)
+ AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("qsound_ram2")
+ADDRESS_MAP_END
+
+ADDRESS_MAP_START( qsound_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("decrypted")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2m3_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800010, 0x800011) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800028, 0x80002f) AM_READ(cps1_hack_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x800186, 0x800187) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */
+ AM_RANGE(0x800190, 0x800197) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800198, 0x80019f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x8001a0, 0x8001c3) AM_WRITE(cps1_cps_a_w)
+ AM_RANGE(0x8001c4, 0x8001c5) AM_WRITE(sf2m3_layer_w)
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2m10_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1")
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r)
+ AM_RANGE(0x800020, 0x800021) AM_READNOP
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs")
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w)
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w)
+ AM_RANGE(0x8001a2, 0x8001b3) AM_WRITE(cps1_cps_a_w) // make 8001b2 point at 800110
+ AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // writes FFFF here a lot
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xe00000, 0xefffff) AM_RAM // it writes to the whole range at start
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ(cps1_in2_r)
+ AM_RANGE(0xfeff00, 0xfeffff) AM_RAM // fix stack crash at start
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
+ADDRESS_MAP_END
+
+/***********************************************************
+ INPUT PORTS, DIPs
+***********************************************************/
+
+#define CPS1_COINAGE_1(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) \
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(diploc ":4,5,6") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
+
+#define CPS1_COINAGE_2(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) )
+
+#define CPS1_COINAGE_3(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(diploc ":4,5,6") \
+ PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" ) \
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
+
+#define CPS1_DIFFICULTY_1(diploc) \
+ PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x07, "0 (Easiest)" ) \
+ PORT_DIPSETTING( 0x06, "1" ) \
+ PORT_DIPSETTING( 0x05, "2" ) \
+ PORT_DIPSETTING( 0x04, "3 (Normal)" ) \
+ PORT_DIPSETTING( 0x03, "4" ) \
+ PORT_DIPSETTING( 0x02, "5" ) \
+ PORT_DIPSETTING( 0x01, "6" ) \
+ PORT_DIPSETTING( 0x00, "7 (Hardest)" )
+
+#define CPS1_DIFFICULTY_2(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x04, "1 (Easiest)" ) \
+ PORT_DIPSETTING( 0x05, "2" ) \
+ PORT_DIPSETTING( 0x06, "3" ) \
+ PORT_DIPSETTING( 0x07, "4 (Normal)" ) \
+ PORT_DIPSETTING( 0x03, "5" ) \
+ PORT_DIPSETTING( 0x02, "6" ) \
+ PORT_DIPSETTING( 0x01, "7" ) \
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+
+/* CPS1 games with 2 players and 3 buttons each */
+static INPUT_PORTS_START( cps1_3b )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* CPS1 games with 2 players and 2 buttons each */
+static INPUT_PORTS_START( cps1_2b )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no button 3
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no button 3
+INPUT_PORTS_END
+
+/* CPS1 games with 2 players and 1 button each */
+static INPUT_PORTS_START( cps1_1b )
+ PORT_INCLUDE( cps1_2b )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no button 2
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no button 2
+INPUT_PORTS_END
+
+/* CPS1 games with 3 players and 2 buttons each */
+static INPUT_PORTS_START( cps1_3players )
+ PORT_INCLUDE( cps1_2b )
+
+ PORT_START("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+/* CPS1 games with 4 players and 2 buttons each */
+static INPUT_PORTS_START( cps1_4players )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_START("IN3") /* Player 4 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
+INPUT_PORTS_END
+
+/* CPS1 games with 2 players and 6 buttons each */
+static INPUT_PORTS_START( cps1_6b)
+ PORT_INCLUDE( cps1_3b)
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
+
+ PORT_START("IN2") /* Extra buttons */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* CPS1 quiz games */
+static INPUT_PORTS_START( cps1_quiz )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN1") /* no joystick and 4th button */
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( forgottn )
+ PORT_INCLUDE( cps1_1b )
+
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC") // The manual only mentions two DIP switch banks.
+ PORT_DIPUNUSED( 0x80, 0x80 ) // Is this port brought out to DIP switches or not?
+ PORT_DIPUNKNOWN( 0x40, 0x40 ) // Check code at 0x013c78 (0x013690 in 'lostwrld')
+ PORT_DIPUNUSED( 0x20, 0x20 )
+ PORT_DIPUNUSED( 0x10, 0x10 )
+ PORT_DIPUNUSED( 0x08, 0x08 )
+ PORT_DIPUNUSED( 0x04, 0x04 )
+ PORT_DIPUNUSED( 0x02, 0x02 )
+ PORT_DIPUNUSED( 0x01, 0x01 )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "DIP-B" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "DIP-B:4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "DIP-B:5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIP-B:6" ) // Check code at 0x00111c (0x00112c in 'lostwrld')
+ PORT_SERVICE_DIPLOC( 0x40, IP_ACTIVE_LOW, "DIP-B:7" )
+ PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("DIP-B:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "DIP-A" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DIP-A:7")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DIP-A:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DIAL0")
+ PORT_BIT( 0x0fff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_PLAYER(1)
+
+ PORT_START("DIAL1")
+ PORT_BIT( 0x0fff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ghouls )
+ PORT_INCLUDE( cps1_2b )
+ /* Service1 doesn't give any credit */
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x00, "6" )
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW(C):3" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(C):4" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) // "Demo Sounds" in manual; doesn't work
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("DSWB") /* Manual states default difficulty "B" (2) which differs from the normal macro */
+ PORT_DIPNAME( 0x07, 0x05, DEF_STR( Difficulty ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x04, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x05, "2" )
+ PORT_DIPSETTING( 0x06, "3" )
+ PORT_DIPSETTING( 0x07, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):5,6")
+ PORT_DIPSETTING( 0x20, "10K, 30K and every 30K" )
+ PORT_DIPSETTING( 0x10, "20K, 50K and every 70K" )
+ PORT_DIPSETTING( 0x30, "30K, 60K and every 70K" )
+ PORT_DIPSETTING( 0x00, "40K, 70K and every 80K" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW(A):7,8")
+ PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
+ PORT_DIPSETTING( 0x80, "Upright 2 Players" )
+// PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) // Manual says these are both valid settings
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) // for 2-player cocktail cabinet
+INPUT_PORTS_END
+
+/* Same as 'ghouls' but additional "Freeze" Dip Switch, different "Lives" Dip Switch,
+ and LOTS of "debug" features (read the notes to know how to activate them) */
+static INPUT_PORTS_START( ghoulsu )
+ PORT_INCLUDE( ghouls )
+
+ PORT_MODIFY("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPSETTING( 0x01, "5" )
+
+ PORT_MODIFY("DSWB")
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):5,6")
+ PORT_DIPSETTING( 0x20, "10K, 30K and every 30K" )
+ PORT_DIPSETTING( 0x10, "20K, 50K and every 70K" )
+ PORT_DIPSETTING( 0x30, "30K, 60K and every 70K" )
+ PORT_DIPSETTING( 0x00, "40K, 70K and every 80K" )
+/* Manuals states the following bonus settings
+ PORT_DIPSETTING( 0x20, "20K, 50K and every 70K" )
+ PORT_DIPSETTING( 0x10, "10K, 30K and every 30K" )
+ PORT_DIPSETTING( 0x30, "40K, 70K and every 80K" )
+ PORT_DIPSETTING( 0x00, "30K, 60K and every 70K" )
+*/
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x07, 0x07, "Starting Weapon" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "Spear" )
+ PORT_DIPSETTING( 0x06, "Knife" )
+ PORT_DIPSETTING( 0x05, "Torch" )
+ PORT_DIPSETTING( 0x04, "Sword" )
+ PORT_DIPSETTING( 0x03, "Axe" )
+ PORT_DIPSETTING( 0x02, "Shield" )
+ PORT_DIPSETTING( 0x01, "Super Weapon" )
+// PORT_DIPSETTING( 0x00, "INVALID !" )
+ PORT_DIPNAME( 0x38, 0x30, "Armor on New Life" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):4,5,6")
+// PORT_DIPSETTING( 0x38, "Silver Armor" )
+ PORT_DIPSETTING( 0x18, "Golden Armor" )
+ PORT_DIPSETTING( 0x30, "Silver Armor" )
+ PORT_DIPSETTING( 0x28, "None (young man)" )
+ PORT_DIPSETTING( 0x20, "None (old man)" )
+// PORT_DIPSETTING( 0x10, "INVALID !" )
+// PORT_DIPSETTING( 0x08, "INVALID !" )
+// PORT_DIPSETTING( 0x00, "INVALID !" )
+
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_MODIFY("DSWA")
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(A):1,2,3")
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) )
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(A):4,5,6")
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x0f, 0x0f, "Starting Level" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):1,2,3,4")
+ PORT_DIPSETTING( 0x0f, "Level 1 (1st half)" )
+ PORT_DIPSETTING( 0x0e, "Level 1 (2nd half)" )
+ PORT_DIPSETTING( 0x0d, "Level 2 (1st half)" )
+ PORT_DIPSETTING( 0x0c, "Level 2 (2nd half)" )
+ PORT_DIPSETTING( 0x0b, "Level 3 (1st half)" )
+ PORT_DIPSETTING( 0x0a, "Level 3 (2nd half)" )
+ PORT_DIPSETTING( 0x09, "Level 4 (1st half)" )
+ PORT_DIPSETTING( 0x08, "Level 4 (2nd half)" )
+ PORT_DIPSETTING( 0x07, "Level 5 (1st half)" )
+ PORT_DIPSETTING( 0x06, "Level 5 (2nd half)" )
+ PORT_DIPSETTING( 0x05, "Level 6" )
+// PORT_DIPSETTING( 0x04, "INVALID !" )
+// PORT_DIPSETTING( 0x03, "INVALID !" )
+// PORT_DIPSETTING( 0x02, "INVALID !" )
+// PORT_DIPSETTING( 0x01, "INVALID !" )
+// PORT_DIPSETTING( 0x00, "INVALID !" )
+ PORT_DIPNAME( 0x10, 0x10, "Invulnerability" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Slow Motion" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW(A):7,8")
+ PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
+ PORT_DIPSETTING( 0x80, "Upright 2 Players" )
+// PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) // Manual says these are both valid settings
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) // for 2-player cocktail cabinet
+INPUT_PORTS_END
+
+/* Same as 'ghouls' but additional "Freeze" Dip Switch */
+static INPUT_PORTS_START( daimakai )
+ PORT_INCLUDE(ghouls)
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) // This switch isn't documented in the manual
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+/* "Debug" features to be implemented */
+static INPUT_PORTS_START( strider )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW(A):7,8")
+ PORT_DIPSETTING( 0xc0, "Upright 1 Player" ) // These switches are not documented in the manual
+ PORT_DIPSETTING( 0x80, "Upright 2 Players" )
+// PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START("DSWB") /* Like Ghouls, Strider manual states "B" (or 2) as the recommended difficulty level. */
+ PORT_DIPNAME( 0x07, 0x05, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x04, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x05, "2" )
+ PORT_DIPSETTING( 0x06, "3" )
+ PORT_DIPSETTING( 0x07, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ /* In 'striderj', bit 3 is stored at 0xff8e77 ($e77,A5) via code at 0x000a2a,
+ but this address is never checked again.
+ In 'strider' and 'stridrjr', this code even doesn't exist ! */
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) // Manual says this is 2c start/1c continue but it
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // doesn't work (see comment above)
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):5,6")
+/* These show in test mode */
+ PORT_DIPSETTING( 0x30, "20K, 40K then every 60K" )
+ PORT_DIPSETTING( 0x20, "30K, 50K then every 70K" )
+ PORT_DIPSETTING( 0x10, "20K & 60K only" )
+ PORT_DIPSETTING( 0x00, "30K & 60K only" )
+/* According to manual, these are the proper settings
+ PORT_DIPSETTING( 0x30, "40K, 70K then every 80K" )
+ PORT_DIPSETTING( 0x20, "20K, 50K then every 70K" )
+ PORT_DIPSETTING( 0x10, "10k, 30k then every 30k" )
+ PORT_DIPSETTING( 0x00, "30K, 60k then every 70k" )
+*/
+
+ PORT_DIPNAME( 0xc0, 0x80, "Internal Diff. on Life Loss" ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0xc0, "-3" ) // Check code at 0x00d15a
+// PORT_DIPSETTING( 0x40, "-1" ) // These switches are not documented in the manual
+ PORT_DIPSETTING( 0x00, "-1" )
+ PORT_DIPSETTING( 0x80, "Default" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "2" ) // "6" in the "test mode" and manual
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPNAME( 0x04, 0x04, "Freeze" ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) // To enable the "debug" features
+INPUT_PORTS_END
+
+/* Same as 'strider' but additional "2 Coins to Start, 1 to Continue" Dip Switch */
+/* "Debug" features to be implemented */
+static INPUT_PORTS_START( stridrua )
+ PORT_INCLUDE( strider )
+
+ PORT_MODIFY("DSWB")
+ /* In 'striderj', bit 3 is stored at 0xff8e77 ($e77,A5) via code at 0x000a2a,
+ but this address is never checked again.
+ In 'strider' and 'stridrjr', this code even doesn't exist ! */
+ PORT_DIPNAME( 0x08, 0x08, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) // This works in this revision
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( dynwar )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x01, 0x01, "Freeze" ) PORT_DIPLOCATION("SW(C):1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) // Also affects energy cost - read notes
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // This switch is not documented in the manual
+ PORT_DIPNAME( 0x02, 0x02, "Turbo Mode" ) PORT_DIPLOCATION("SW(C):2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) // Also affects energy cost - read notes
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // This switch is not documented in the manual
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW(C):3" ) // This switch is not documented in the manual
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(C):4" ) // This switch is not documented in the manual
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // "ON" in the "test mode"
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) ) // "OFF" in the "test mode"
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) ) // "ON" in the "test mode"
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) // "OFF" in the "test mode"
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_2( "SW(B)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" ) // These five switches are not documented in the
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" ) // manual
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWA")
+ /* According to the manual, ALL switches 1 to 6 must be ON to have
+ "2 Coins/1 Credit (1 to continue)" for both coin slots */
+ CPS1_COINAGE_3( "SW(A)" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(A):7" ) // This switch is not documented in the manual
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) // This switch is not documented in the manual
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+/* Read the notes to know how to activate the "debug" features */
+static INPUT_PORTS_START( willow )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWC")
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x02, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPNAME( 0x0c, 0x08, "Vitality" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):3,4")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x0c, "3" )
+ PORT_DIPSETTING( 0x08, "4" )
+ PORT_DIPSETTING( 0x04, "5" )
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x01, 0x01, "Turbo Mode" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(C):1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "Freeze" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(C):2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "Slow Motion" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Invulnerability" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x20, 0x20, "Display Debug Infos" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) // To enable the "debug" features
+
+ PORT_START("DSWB")
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x04, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x05, "2" )
+ PORT_DIPSETTING( 0x06, "3" )
+ PORT_DIPSETTING( 0x07, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPNAME( 0x18, 0x18, "Nando Speed" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x10, "Slow" )
+ PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, "Fast" )
+ PORT_DIPSETTING( 0x00, "Very Fast" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Stage Magic Continue" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1e, 0x1e, "Slow Motion Delay" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):2,3,4,5")
+ PORT_DIPSETTING( 0x1e, "2 Frames" )
+ PORT_DIPSETTING( 0x1c, "3 Frames" )
+ PORT_DIPSETTING( 0x1a, "4 Frames" )
+ PORT_DIPSETTING( 0x18, "5 Frames" )
+ PORT_DIPSETTING( 0x16, "6 Frames" )
+ PORT_DIPSETTING( 0x14, "7 Frames" )
+ PORT_DIPSETTING( 0x12, "8 Frames" )
+ PORT_DIPSETTING( 0x10, "9 Frames" )
+ PORT_DIPSETTING( 0x0e, "10 Frames" )
+ PORT_DIPSETTING( 0x0c, "11 Frames" )
+ PORT_DIPSETTING( 0x0a, "12 Frames" )
+ PORT_DIPSETTING( 0x08, "13 Frames" )
+ PORT_DIPSETTING( 0x06, "14 Frames" )
+ PORT_DIPSETTING( 0x04, "15 Frames" )
+ PORT_DIPSETTING( 0x02, "16 Frames" )
+ PORT_DIPSETTING( 0x00, "17 Frames" )
+ PORT_DIPNAME( 0xe0, 0xe0, "Starting Level" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):6,7,8")
+ PORT_DIPSETTING( 0xe0, "Level 1" )
+ PORT_DIPSETTING( 0xc0, "Level 2" )
+ PORT_DIPSETTING( 0xa0, "Level 3" )
+ PORT_DIPSETTING( 0x80, "Level 4" )
+ PORT_DIPSETTING( 0x60, "Level 5" )
+ PORT_DIPSETTING( 0x40, "Level 6" )
+// PORT_DIPSETTING( 0x20, "INVALID !" )
+// PORT_DIPSETTING( 0x00, "INVALID !" )
+
+ PORT_START("DSWA")
+ /* Standard Dip Switches */
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(A):1,2,3")
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" )
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(A):4,5,6")
+ PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" )
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Cabinet ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(A):7,8")
+ PORT_DIPSETTING( 0xc0, "Upright 1 Player" )
+ PORT_DIPSETTING( 0x80, "Upright 2 Players" )
+// PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ /* Debug Dip Switches */
+ PORT_DIPNAME( 0x3f, 0x3f, DEF_STR( Free_Play ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):1,2,3,4,5,6")
+ PORT_DIPSETTING( 0x3f, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x38, DEF_STR( On ) )
+ /* Other values don't give free play */
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, "Upright 1 Player" )
+ PORT_DIPSETTING( 0x00, "Upright 2 Players" )
+ PORT_DIPNAME( 0x80, 0x80, "Maximum magic/sword power" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+/* To enable extra choices in the "test mode", you must press "Coin 1" ('5') AND "Service Mode" ('F2') */
+static INPUT_PORTS_START( unsquad )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_3( "SW(A)" )
+ /* According to the manual, ALL bits 0 to 5 must be ON to have
+ "2 Coins/1 Credit (1 to continue)" for both coin slots */
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(A):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x18, 0x18, "Damage" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x10, "Small" ) // Check code at 0x006f4e
+ PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, "Big" )
+ PORT_DIPSETTING( 0x00, "Biggest" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* To enable other choices in the "test mode", you must press ("P1 Button 1" ('Ctrl')
+ or "P1 Button 2" ('Alt')) when "Service Mode" is ON */
+static INPUT_PORTS_START( ffight )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME ("P1 Button 3 (Cheat)")
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME ("P2 Button 3 (Cheat)")
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty Level 1" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, DEF_STR( Easiest ) ) // "01"
+ PORT_DIPSETTING( 0x06, DEF_STR( Easier ) ) // "02"
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy ) ) // "03"
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) // "04"
+ PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) // "05"
+ PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) // "06"
+ PORT_DIPSETTING( 0x01, DEF_STR( Harder ) ) // "07"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "08"
+ PORT_DIPNAME( 0x18, 0x10, "Difficulty Level 2" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) // "01"
+ PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) // "02"
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) // "03"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "04"
+ PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):6,7")
+ PORT_DIPSETTING( 0x60, "100k" )
+ PORT_DIPSETTING( 0x40, "200k" )
+ PORT_DIPSETTING( 0x20, "100k and every 200k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( 1941 )
+ PORT_INCLUDE( cps1_2b )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x18, 0x18, "Level Up Timer" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, "More Slowly" )
+ PORT_DIPSETTING( 0x10, "Slowly" )
+ PORT_DIPSETTING( 0x08, "Quickly" )
+ PORT_DIPSETTING( 0x00, "More Quickly" )
+ PORT_DIPNAME( 0x60, 0x60, "Bullet's Speed" ) PORT_DIPLOCATION("SW(B):6,7")
+ PORT_DIPSETTING( 0x60, "Very Slow" )
+ PORT_DIPSETTING( 0x40, "Slow" )
+ PORT_DIPSETTING( 0x20, "Fast" )
+ PORT_DIPSETTING( 0x00, "Very Fast" )
+ PORT_DIPNAME( 0x80, 0x80, "Initial Vitality" ) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x80, "3 Bars" )
+ PORT_DIPSETTING( 0x00, "4 Bars" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x01, 0x01, "Throttle Game Speed" ) PORT_DIPLOCATION("SW(C):1")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // turning this off will break the game
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( mercs )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(A):4" ) // These three switches are not documented in
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(A):5" ) // the manual
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) // This switch is not documented in the manual
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x08, 0x08, "Coin Slots" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "3" ) // This setting can't be used in two-player mode
+ PORT_DIPNAME( 0x10, 0x10, "Play Mode" ) PORT_DIPLOCATION("SW(B):5")
+ PORT_DIPSETTING( 0x00, "2 Players" )
+ PORT_DIPSETTING( 0x10, "3 Players" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) // These three switches are not documented in
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" ) // the manual
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" ) // These three switches are not documented in
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" ) // the manual
+ PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW(C):3" )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW(C):8" )
+INPUT_PORTS_END
+
+/* According to code at 0x001c4e ('mtwins') or ('chikij') , ALL bits 0 to 5 of DSWA
+ must be ON to have "2 Coins/1 Credit (1 to continue)" for both coin slots.
+ But according to routine starting at 0x06b27c ('mtwins') or 0x06b4fa ('chikij'),
+ bit 6 of DSWA is tested to have the same "feature" in the "test mode".
+
+ Bits 3 and 4 of DSWB affect the number of lives AND the level of damage when you get hit.
+ When bit 5 of DSWB is ON you ALWAYS have 1 life but more energy (0x38 instead of 0x20).
+ Useful addresses to know :
+ - 0xff147b.b : lives (player 1)
+ - 0xff153b.b : lives (player 2)
+ - 0xff14ab.w : energy (player 1)
+ - 0xff156b.w : energy (player 2)
+*/
+static INPUT_PORTS_START( mtwins )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(A):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x38, 0x18, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):4,5,6")
+// PORT_DIPSETTING( 0x30, "1" ) // 0x38 energy, smallest damage
+// PORT_DIPSETTING( 0x38, "1" ) // 0x38 energy, small damage
+// PORT_DIPSETTING( 0x28, "1" ) // 0x38 energy, big damage
+// PORT_DIPSETTING( 0x20, "1" ) // 0x38 energy, biggest damage
+ PORT_DIPSETTING( 0x10, "1" ) // 0x20 energy, smallest damage
+ PORT_DIPSETTING( 0x18, "2" ) // 0x20 energy, small damage
+ PORT_DIPSETTING( 0x08, "3" ) // 0x20 energy, big damage
+ PORT_DIPSETTING( 0x00, "4" ) // 0x20 energy, biggest damage
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* I guess that bit 8 of DSWB was used for debug purpose :
+ - code at 0x001094 : move players during "attract mode"
+ - code at 0x019b62 ('msword' and 'mswordr1'), 0x019bde ('mswordu') or 0x019c26 ('mswordj') : unknown effect
+ - code at 0x01c322 ('msword' and 'mswordr1'), 0x01c39e ('mswordu') or 0x01c3e0 ('mswordj') : unknown effect
+ These features are not available because of the 'bra' instruction after the test of bit 7. */
+static INPUT_PORTS_START( msword )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Player's vitality consumption" ) PORT_DIPLOCATION("SW(B):1,2,3") // "Level 1"
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" ) // "Easy 3" (-1 every 28 frames)
+ PORT_DIPSETTING( 0x06, "2" ) // "Easy 2" (-1 every 24 frames)
+ PORT_DIPSETTING( 0x05, "3" ) // "Easy 1" (-1 every 20 frames)
+ PORT_DIPSETTING( 0x04, "4 (Normal)" ) // DEF_STR( Normal ) (-1 every 18 frames)
+ PORT_DIPSETTING( 0x03, "5" ) // "Difficult 1" (-1 every 16 frames)
+ PORT_DIPSETTING( 0x02, "6" ) // "Difficult 2" (-1 every 14 frames)
+ PORT_DIPSETTING( 0x01, "7" ) // "Difficult 3" (-1 every 12 frames)
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" ) // "Difficult 4" (-1 every 8 frames)
+ PORT_DIPNAME( 0x38, 0x38, "Enemy's vitality and attacking power" ) PORT_DIPLOCATION("SW(B):4,5,6") // "Level 2"
+ PORT_DIPSETTING( 0x20, "1 (Easiest)" ) // "Easy 3"
+ PORT_DIPSETTING( 0x28, "2" ) // "Easy 2"
+ PORT_DIPSETTING( 0x30, "3" ) // "Easy 1"
+ PORT_DIPSETTING( 0x38, "4 (Normal)" ) // DEF_STR( Normal )
+ PORT_DIPSETTING( 0x18, "5" ) // "Difficult 1"
+ PORT_DIPSETTING( 0x10, "6" ) // "Difficult 2"
+ PORT_DIPSETTING( 0x08, "7" ) // "Difficult 3"
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" ) // "Difficult 4"
+ PORT_DIPNAME( 0x40, 0x00, "Stage Select" ) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, "Vitality Packs" ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "1" ) // 0x0320
+ PORT_DIPSETTING( 0x03, "2" ) // 0x0640
+ PORT_DIPSETTING( 0x02, "3 (2 when continue)" ) // 0x0960 (0x0640 when continue)
+ PORT_DIPSETTING( 0x01, "4 (3 when continue)" ) // 0x0c80 (0x0960 when continue)
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cawing )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) // Overrides all other coinage settings
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // according to manual
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) // This switch is not documented
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty Level (Enemy's Strength)" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x06, "2" )
+ PORT_DIPSETTING( 0x05, "3" )
+ PORT_DIPSETTING( 0x04, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPNAME( 0x18, 0x18, "Difficulty Level (Player's Strength)" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" ) // This switch is not documented
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" ) // This switch is not documented
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* "Debug" features to be implemented */
+static INPUT_PORTS_START( nemo )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x18, 0x18, "Life Bar" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x00, "Minimun" )
+ PORT_DIPSETTING( 0x18, DEF_STR( Medium ) )
+// PORT_DIPSETTING( 0x10, DEF_STR( Medium ) )
+ PORT_DIPSETTING( 0x08, "Maximum" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x02, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) // To enable the "debug" features
+INPUT_PORTS_END
+
+INPUT_PORTS_START( sf2 )
+ PORT_INCLUDE( cps1_6b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( sf2j )
+ PORT_INCLUDE( sf2 )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x08, 0x00, "2 Players Game" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, "1 Credit/No Continue" )
+ PORT_DIPSETTING( 0x00, "2 Credits/Winner Continue" ) //Winner stays, loser pays, in other words.
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sf2hack )
+ PORT_INCLUDE( sf2 )
+
+ PORT_MODIFY("IN2") /* Extra buttons */
+ PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sf2m2 )
+ PORT_INCLUDE( sf2hack )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x10, 0x00, "It needs to be High" ) PORT_DIPLOCATION("SW(B):5")
+ PORT_DIPSETTING( 0x10, DEF_STR ( Low ) )
+ PORT_DIPSETTING( 0x00, DEF_STR ( High ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sf2m4 )
+ PORT_INCLUDE( sf2hack )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x08, 0x00, "2 Players Game" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, "1 Credit/No Continue" )
+ PORT_DIPSETTING( 0x00, "2 Credits/Winner Continue" ) //Winner stays, loser pays, in other words.
+INPUT_PORTS_END
+
+/* SWB.4, SWB.5 and SWB.6 need to be enabled simultaneously for turbo mode */
+static INPUT_PORTS_START( sf2amf )
+ PORT_INCLUDE( sf2hack )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x08, 0x08, "Turbo Mode Switch 1 of 3" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "Turbo Mode Switch 2 of 3" ) PORT_DIPLOCATION("SW(B):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Turbo Mode Switch 3 of 3" ) PORT_DIPLOCATION("SW(B):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( 3wonders )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_CONDITION("DSWA", 0x3f,NOTEQUALS,0x00) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) ) PORT_CONDITION("DSWA", 0x3f, EQUALS, 0x00) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ /* Free Play: ALL bits 0 to 7 must be ON ; 4C_1C, 4C_1C, 2 Coins to Start, 1 to Continue ON */
+ PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x03, 0x02, "Lives (Midnight Wanderers)" ) PORT_DIPLOCATION("SW(B):1,2")
+ PORT_DIPSETTING( 0x03, "1" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x0c, 0x08, "Difficulty (Midnight Wanderers)" ) PORT_DIPLOCATION("SW(B):3,4")
+ PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x30, 0x10, "Lives (Chariot)" ) PORT_DIPLOCATION("SW(B):5,6")
+ PORT_DIPSETTING( 0x30, "1" )
+ PORT_DIPSETTING( 0x20, "2" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0xc0, 0x80, "Difficulty (Chariot)" ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0xc0, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x01, "Lives (Don't Pull)" ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x03, "1" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x0c, 0x08, "Difficulty (Don't Pull)" ) PORT_DIPLOCATION("SW(C):3,4")
+ PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( kod )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPNAME( 0x08, 0x08, "Coin Slots" ) PORT_DIPLOCATION("SW(A):4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPNAME( 0x10, 0x10, "Play Mode" ) PORT_DIPLOCATION("SW(A):5")
+ PORT_DIPSETTING( 0x00, "2 Players" )
+ PORT_DIPSETTING( 0x10, "3 Players" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):4,5,6")
+ PORT_DIPSETTING( 0x30, "1" )
+ PORT_DIPSETTING( 0x38, "2" )
+ PORT_DIPSETTING( 0x28, "3" )
+ PORT_DIPSETTING( 0x20, "4" )
+ PORT_DIPSETTING( 0x18, "5" )
+ PORT_DIPSETTING( 0x10, "6" )
+ PORT_DIPSETTING( 0x08, "7" )
+ PORT_DIPSETTING( 0x00, "8" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0x80, "80k and every 400k" )
+ PORT_DIPSETTING( 0x40, "160k and every 450k" )
+ PORT_DIPSETTING( 0xc0, "200k and every 450k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* Needs further checking
+ Same as kod but different "Bonus_life" values */
+static INPUT_PORTS_START( kodr1 )
+ PORT_INCLUDE( kod )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0x80, "80k and every 400k" )
+ PORT_DIPSETTING( 0xc0, "100k and every 450k" )
+ PORT_DIPSETTING( 0x40, "160k and every 450k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+INPUT_PORTS_END
+
+
+INPUT_PORTS_START( captcomm ) // HBMAME
+ PORT_INCLUDE( cps1_4players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(A):4" ) // The manual says to leave these three
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(A):5" ) // switches off. Does turning them on cause
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" ) // any "undesirable" behaviour?
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) // Unused according to manual
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty 1" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x06, "2" )
+ PORT_DIPSETTING( 0x05, "3" )
+ PORT_DIPSETTING( 0x04, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPNAME( 0x18, 0x10, "Difficulty 2" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) // Manual says to leave this switch off.
+ PORT_DIPNAME( 0xc0, 0xc0, "Play Mode" ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0x40, "1 Players" ) // Actual setting is 4 players
+ PORT_DIPSETTING( 0xc0, "2 Players" )
+ PORT_DIPSETTING( 0x80, "3 Players" )
+ PORT_DIPSETTING( 0x00, "4 Players" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( knights )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(A):4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(A):5" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Enemy's attack frequency" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x06, "2" )
+ PORT_DIPSETTING( 0x05, "3" )
+ PORT_DIPSETTING( 0x04, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPNAME( 0x38, 0x38, "Enemy's attack power" ) PORT_DIPLOCATION("SW(B):4,5,6")
+ PORT_DIPSETTING( 0x00, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPSETTING( 0x38, "4 (Normal)" )
+ PORT_DIPSETTING( 0x30, "5" )
+ PORT_DIPSETTING( 0x28, "6" )
+ PORT_DIPSETTING( 0x20, "7" )
+ PORT_DIPSETTING( 0x18, "8 (Hardest)" )
+ PORT_DIPNAME( 0x40, 0x40, "Coin Slots" ) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x40, "3" )
+ PORT_DIPNAME( 0x80, 0x80, "Play Mode" ) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x00, "2 Players" )
+ PORT_DIPSETTING( 0x80, "3 Players" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( varth )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1( "SW(A)" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x18, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, "600k and every 1.400k" )
+ PORT_DIPSETTING( 0x10, "600k 2.000k and 4500k" )
+ PORT_DIPSETTING( 0x08, "1.200k 3.500k" )
+ PORT_DIPSETTING( 0x00, "2000k only" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x02, "1" )
+ PORT_DIPSETTING( 0x01, "2" )
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( cworld2j )
+ PORT_INCLUDE( cps1_quiz )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(A):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(A):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Extended Test Mode" ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x06, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x06, "0" )
+ PORT_DIPSETTING( 0x05, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPNAME( 0x18, 0x18, "Extend" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, "N" )
+ PORT_DIPSETTING( 0x10, "E" )
+ PORT_DIPSETTING( 0x00, "D" )
+ PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):6,7,8")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x80, "2" )
+ PORT_DIPSETTING( 0xe0, "3" )
+ PORT_DIPSETTING( 0xa0, "4" )
+ PORT_DIPSETTING( 0xc0, "5" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("IN2") /* check code at 0x000614, 0x0008ac and 0x000e36 */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( wof )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN3") /* Player 4 - not used */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+INPUT_PORTS_START( dino )
+ PORT_INCLUDE( cps1_3players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN3") /* Player 4 - not used */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( dinoh )
+ PORT_INCLUDE( dino )
+
+ PORT_MODIFY("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPNAME( 0x08, 0x08, "Coin Slots" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "3" ) // This setting can't be used in two-player mode
+ PORT_DIPNAME( 0x10, 0x10, "Play Mode" ) PORT_DIPLOCATION("SW(B):5")
+ PORT_DIPSETTING( 0x00, "2 Players" )
+ PORT_DIPSETTING( 0x10, "3 Players" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" ) // This switch is not documented in the manual
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) // This switch is not documented in the manual
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty Level 1" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, DEF_STR( Easiest ) ) // "01"
+ PORT_DIPSETTING( 0x06, DEF_STR( Easier ) ) // "02"
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy ) ) // "03"
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) // "04"
+ PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) // "05"
+ PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) // "06"
+ PORT_DIPSETTING( 0x01, DEF_STR( Harder ) ) // "07"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "08"
+ PORT_DIPNAME( 0x18, 0x10, "Difficulty Level 2" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) // "01"
+ PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) // "02"
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) // "03"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "04"
+ PORT_DIPNAME( 0x60, 0x40, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):6,7")
+ PORT_DIPSETTING( 0x60, "300k and 700k" )
+ PORT_DIPSETTING( 0x40, "500k and 1000k" )
+ PORT_DIPSETTING( 0x20, "1000k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_MODIFY("DSWC")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPSETTING( 0x01, "3" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x03, "1" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( punisher )
+ PORT_INCLUDE( cps1_2b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN2") /* Player 3 - not used */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN3") /* Player 4 - not used */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( punisherbz )
+ PORT_INCLUDE( punisher )
+
+ PORT_MODIFY("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPNAME( 0x08, 0x08, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x30, 0x20, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(A):5,6")
+ PORT_DIPSETTING( 0x30, "1" )
+ PORT_DIPSETTING( 0x20, "2" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPNAME( 0x40, 0x40, "Sound" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, "Q Sound" )
+ PORT_DIPSETTING( 0x00, "Monaural" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "Extra Easy" )
+ PORT_DIPSETTING( 0x06, DEF_STR( Very_Easy) )
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal) )
+ PORT_DIPSETTING( 0x03, DEF_STR( Hard) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Very_Hard) )
+ PORT_DIPSETTING( 0x01, "Extra Hard" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest) )
+ PORT_DIPNAME( 0x18, 0x10, "Extend" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, "800000" )
+ PORT_DIPSETTING( 0x10, "1800000" )
+ PORT_DIPSETTING( 0x08, "2800000" )
+ PORT_DIPSETTING( 0x00, "No Extend" )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(B):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_MODIFY("DSWC")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* Needs further checking */
+INPUT_PORTS_START( slammast )
+ PORT_INCLUDE( cps1_4players )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
+
+ PORT_START("DSWA") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( pnickj )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPNAME( 0x08, 0x08, "Coin Slots" ) PORT_DIPLOCATION("SW(A):4")
+ PORT_DIPSETTING( 0x08, "1" )
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(A):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW(A):7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Vs Play Mode" ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0xc0, "1 Game Match" )
+ PORT_DIPSETTING( 0x80, "3 Games Match" )
+ PORT_DIPSETTING( 0x40, "5 Games Match" )
+ PORT_DIPSETTING( 0x00, "7 Games Match" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW(C):3" )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW(C):7" )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( qad )
+ PORT_INCLUDE( cps1_quiz )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(A):4" ) // Manual says these are for coin 2, but they
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(A):5" ) // coin to setting, but they clearly don't do
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(A):6" ) // that.
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+// PORT_DIPSETTING( 0x07, DEF_STR( Easiest ) ) // Controls overall difficulty
+ PORT_DIPSETTING( 0x06, DEF_STR( Easiest ) ) // Manual documents duplicate settings
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Hardest ) )
+// PORT_DIPSETTING( 0x01, DEF_STR( Hardest ) )
+// PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x18, 0x10, "Wisdom (questions to win game)" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) // Controls number of needed questions to finish
+ PORT_DIPSETTING( 0x10, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):6,7,8")
+ PORT_DIPSETTING( 0x60, "1" )
+ PORT_DIPSETTING( 0x80, "2" )
+ PORT_DIPSETTING( 0xa0, "3" )
+ PORT_DIPSETTING( 0xc0, "4" )
+ PORT_DIPSETTING( 0xe0, "5" )
+// PORT_DIPSETTING( 0x40, "1" ) // These three settings are not documented
+// PORT_DIPSETTING( 0x20, "1" )
+// PORT_DIPSETTING( 0x00, "1" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("IN2") /* check code at 0x01d2d2 */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( qadjr )
+ PORT_INCLUDE( qad )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "0" )
+ PORT_DIPSETTING( 0x06, "1" )
+ PORT_DIPSETTING( 0x05, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x03, "4" )
+// PORT_DIPSETTING( 0x02, "4" )
+// PORT_DIPSETTING( 0x01, "4" )
+// PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):6,7,8")
+ PORT_DIPSETTING( 0xa0, "1" )
+ PORT_DIPSETTING( 0xc0, "2" )
+ PORT_DIPSETTING( 0xe0, "3" )
+// PORT_DIPSETTING( 0x00, "1" )
+// PORT_DIPSETTING( 0x20, "1" )
+// PORT_DIPSETTING( 0x80, "1" )
+// PORT_DIPSETTING( 0x40, "2" )
+// PORT_DIPSETTING( 0x60, "3" )
+
+ PORT_MODIFY("IN2") /* check code at 0x000c48 */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN3") /* check code at 0x000c3e */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( qtono2j )
+ PORT_INCLUDE( cps1_quiz )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(A):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(A):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):6,7,8")
+ PORT_DIPSETTING( 0x60, "1" )
+ PORT_DIPSETTING( 0x80, "2" )
+ PORT_DIPSETTING( 0xe0, "3" )
+ PORT_DIPSETTING( 0xa0, "4" )
+ PORT_DIPSETTING( 0xc0, "5" )
+// PORT_DIPSETTING( 0x40, "?" )
+// PORT_DIPSETTING( 0x20, "?" )
+// PORT_DIPSETTING( 0x00, "?" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPNAME( 0x02, 0x02, "Infinite Lives (Cheat)") PORT_DIPLOCATION("SW(C):2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("IN2") /* check code at 0x000f80 */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN3") /* check code at 0x000f76 */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( pang3 )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED( 0x01, 0x01 )
+ PORT_DIPUNUSED( 0x02, 0x02 )
+ PORT_DIPUNUSED( 0x04, 0x04 )
+ PORT_DIPUNUSED( 0x08, 0x08 )
+ PORT_DIPUNUSED( 0x10, 0x10 )
+ PORT_DIPUNUSED( 0x20, 0x20 )
+ PORT_DIPUNUSED( 0x40, 0x40 )
+ PORT_DIPUNUSED( 0x80, 0x80 ) /* doubles up as an extra service switch */
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( pang3b )
+ PORT_INCLUDE( pang3 )
+
+ PORT_MODIFY("DSWC")
+ PORT_DIPUNUSED( 0x01, 0x01 )
+ PORT_DIPUNUSED( 0x02, 0x02 )
+ PORT_DIPUNUSED( 0x04, 0x04 )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED( 0x10, 0x10 )
+ PORT_DIPUNUSED( 0x20, 0x20 )
+ PORT_DIPUNUSED( 0x40, 0x40 )
+ PORT_DIPUNUSED( 0x80, 0x80 )
+INPUT_PORTS_END
+
+/* Needs further checking */
+static INPUT_PORTS_START( megaman )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_MODIFY("IN0")
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+
+ PORT_START("DSWA")
+ PORT_DIPNAME( 0x1f, 0x1f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW(A):1,2,3,4,5")
+ PORT_DIPSETTING( 0x0f, DEF_STR( 9C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 8C_1C ) )
+ PORT_DIPSETTING( 0x11, DEF_STR( 7C_1C ) )
+ PORT_DIPSETTING( 0x12, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0x13, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x14, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x15, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x16, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0e, "2 Coins to Start, 1 to Continue" )
+ PORT_DIPSETTING( 0x1f, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x1e, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x1d, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x1c, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x1b, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x1a, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x19, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_8C ) )
+ PORT_DIPSETTING( 0x17, DEF_STR( 1C_9C ) )
+ PORT_DIPSETTING( 0x0d, DEF_STR( Free_Play ) )
+ /* 0x00 to 0x0c 1 Coin/1 Credit */
+ PORT_DIPNAME( 0x60, 0x60, "Coin slots" ) PORT_DIPLOCATION("SW(A):6,7")
+// PORT_DIPSETTING( 0x00, "Invalid" )
+ PORT_DIPSETTING( 0x20, "1, Common" )
+ PORT_DIPSETTING( 0x60, "2, Common" )
+ PORT_DIPSETTING( 0x40, "2, Individual" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x0c, 0x0c, "Time" ) PORT_DIPLOCATION("SW(B):3,4")
+ PORT_DIPSETTING( 0x0c, "100" )
+ PORT_DIPSETTING( 0x08, "90" )
+ PORT_DIPSETTING( 0x04, "70" )
+ PORT_DIPSETTING( 0x00, "60" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPNAME( 0x40, 0x40, "Voice" ) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(C):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(C):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(C):6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW(C):7" )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+/* Needs further checking */
+/* Same as 'megaman' but no "Voice" Dip Switch */
+static INPUT_PORTS_START( rockmanj )
+ PORT_INCLUDE(megaman)
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW(B):7" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( wofhfh )
+ PORT_INCLUDE( wof )
+
+ PORT_MODIFY("DSWA")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW(A):1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "Extra Easy" )
+ PORT_DIPSETTING( 0x06, DEF_STR( Very_Easy) )
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal) )
+ PORT_DIPSETTING( 0x03, DEF_STR( Hard) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Very_Hard) )
+ PORT_DIPSETTING( 0x01, "Extra Hard" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest) )
+ PORT_DIPNAME( 0x70, 0x60, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):4,5,6")
+ PORT_DIPSETTING( 0x00, "Start 4 Continue 5" )
+ PORT_DIPSETTING( 0x10, "Start 3 Continue 4" )
+ PORT_DIPSETTING( 0x20, "Start 2 Continue 3" )
+ PORT_DIPSETTING( 0x30, "Start 1 Continue 2" )
+ PORT_DIPSETTING( 0x40, "Start 4 Continue 4" )
+ PORT_DIPSETTING( 0x50, "Start 3 Continue 3" )
+ PORT_DIPSETTING( 0x60, "Start 2 Continue 2" )
+ PORT_DIPSETTING( 0x70, "Start 1 Continue 1" )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, "Coin Slots" ) PORT_DIPLOCATION("SW(C):1,2")
+// PORT_DIPSETTING( 0x00, "2 Players 1 Shooter" )
+ PORT_DIPSETTING( 0x01, "2 Players 1 Shooter" )
+ PORT_DIPSETTING( 0x02, "3 Players 1 Shooter" )
+ PORT_DIPSETTING( 0x03, "3 Players 3 Shooters" )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+
+ PORT_MODIFY("IN2") /* Player 3 */
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Coin 3 (P3 Button 3 in-game)")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ganbare )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) /* definitely read here in test mode, coin lock prevents it though */
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ PORT_DIPNAME( 0x01, 0x01, "Medal Setup" ) PORT_DIPLOCATION("SW(A):1")
+ PORT_DIPSETTING( 0x01, "1 Medal 1 Credit" )
+ PORT_DIPSETTING( 0x00, "Don't use" )
+ PORT_DIPNAME( 0x02, 0x02, "Coin Setup" ) PORT_DIPLOCATION("SW(A):2")
+ PORT_DIPSETTING( 0x02, "100 Yen" )
+ PORT_DIPSETTING( 0x00, "10 Yen" )
+ PORT_DIPNAME( 0x1c, 0x1c, "Change Setup" ) PORT_DIPLOCATION("SW(A):3,4,5")
+ PORT_DIPSETTING( 0x04, "12" )
+ PORT_DIPSETTING( 0x00, "11" )
+ PORT_DIPSETTING( 0x1c, "10" )
+ PORT_DIPSETTING( 0x18, "8" )
+ PORT_DIPSETTING( 0x14, "7" )
+ PORT_DIPSETTING( 0x10, "6" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPSETTING( 0x08, "No change" )
+ PORT_DIPNAME( 0x60, 0x60, "10 Yen Setup" ) PORT_DIPLOCATION("SW(A):6,7")
+ PORT_DIPSETTING( 0x60, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x00, "Don't use" )
+ PORT_DIPNAME( 0x80, 0x80, "Payout Setup" ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, "Credit Mode" )
+ PORT_DIPSETTING( 0x00, "Payout Mode" )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x07, "Payout Rate Setup" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x01, "90%" )
+ PORT_DIPSETTING( 0x00, "85%" )
+ PORT_DIPSETTING( 0x07, "80%" )
+ PORT_DIPSETTING( 0x06, "75%" )
+ PORT_DIPSETTING( 0x05, "70%" )
+ PORT_DIPSETTING( 0x04, "65%" )
+ PORT_DIPSETTING( 0x03, "60%" )
+ PORT_DIPSETTING( 0x02, "55%" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( On ) )
+ PORT_DIPSETTING( 0x02, "Every second sound" )
+ PORT_DIPSETTING( 0x01, "Every third sound" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW(C):3" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW(C):4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW(C):5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW(C):6" )
+ PORT_DIPNAME( 0x40, 0x40, "Clear RAM" ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Tes Mode Display" ) PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( sfzch )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME(DEF_STR(Pause)) PORT_CODE(KEYCODE_F1) /* pause */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) /* pause */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(2)
+
+ PORT_START("DSWA")
+ PORT_DIPNAME( 0xff, 0xff, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0xff, 0xff, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0xff, 0xff, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("IN1") /* Player 1 & 2 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1)
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2)
+
+ PORT_START("IN2") /* Read by wofch */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN3") /* Player 4 - not used */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( wofch )
+ PORT_INCLUDE( sfzch )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( pokonyan )
+ PORT_INCLUDE( cps1_3b )
+
+ PORT_START("DSWA")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW(A):1,2")
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(A):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(A):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(A):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(A):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW(A):7") // not listed in service mode, but left/right don't seem to work otherwise? maybe tied to some cabinet sensor?
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(A):8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(B):1,2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, "Every 4" )
+ PORT_DIPSETTING( 0x02, "Every 2" )
+ PORT_DIPSETTING( 0x03, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, "Prize Mode" ) PORT_DIPLOCATION("SW(B):3")
+ PORT_DIPSETTING( 0x00, "Not Used" )
+ PORT_DIPSETTING( 0x04, "Used" )
+ PORT_DIPNAME( 0x08, 0x08, "Credit Mode" ) PORT_DIPLOCATION("SW(B):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "Max Stage" ) PORT_DIPLOCATION("SW(B):5")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPNAME( 0x20, 0x20, "Card Check" ) PORT_DIPLOCATION("SW(B):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(B):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(B):8")
+ PORT_DIPSETTING( 0x00, "1.0 sec" )
+ PORT_DIPSETTING( 0x80, "1.2 sec" )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW(C):1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "Body Check") PORT_DIPLOCATION("SW(C):2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Screen Stop" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW(C):8" )
+INPUT_PORTS_END
+
+/*
+A Final Fight board with mismatched USA and Japan GFX proves that the columns
+of the 8x8 tilemap alternate between sides of the 16x16 tile resulting
+in a corrupt WDUD screen. ffightub is now fixed since a genuine pcb surfaced.
+*/
+
+static const gfx_layout cps1_layout8x8 =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 24, 16, 8, 0 },
+ { STEP8(0, 1) },
+ { STEP8(0, 4*16) },
+ 64*8
+};
+
+static const gfx_layout cps1_layout8x8_2 =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 24, 16, 8, 0 },
+ { STEP8(32, 1) },
+ { STEP8(0, 4*16) },
+ 64*8
+};
+
+static const gfx_layout cps1_layout16x16 =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 24, 16, 8, 0 },
+ { STEP8(0, 1), STEP8(32, 1) },
+ { STEP16(0, 4*16) },
+ 4*16*16
+};
+
+static const gfx_layout cps1_layout32x32 =
+{
+ 32,32,
+ RGN_FRAC(1,1),
+ 4,
+ { 24, 16, 8, 0 },
+ { STEP8(0, 1), STEP8(32, 1), STEP8(64, 1), STEP8(96, 1) },
+ { STEP32(0, 4*32) },
+ 4*32*32
+};
+
+GFXDECODE_START( cps1 )
+ GFXDECODE_ENTRY( "gfx", 0, cps1_layout8x8, 0, 0x100 )
+ GFXDECODE_ENTRY( "gfx", 0, cps1_layout8x8_2, 0, 0x100 )
+ GFXDECODE_ENTRY( "gfx", 0, cps1_layout16x16, 0, 0x100 )
+ GFXDECODE_ENTRY( "gfx", 0, cps1_layout32x32, 0, 0x100 )
+GFXDECODE_END
+
+
+
+/********************************************************************
+*
+* Machine Driver macro
+* ====================
+*
+* Abusing the pre-processor.
+*
+********************************************************************/
+
+MACHINE_START_MEMBER(cps_state,common)
+{
+}
+
+MACHINE_START_MEMBER(cps_state,cps1)
+{
+ MACHINE_START_CALL_MEMBER(common);
+ membank("bank1")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x10000, 0x4000);
+}
+
+MACHINE_START_MEMBER(cps_state,qsound)
+{
+ MACHINE_START_CALL_MEMBER(common);
+ membank("bank1")->configure_entries(0, 6, memregion("audiocpu")->base() + 0x10000, 0x4000);
+}
+
+static MACHINE_CONFIG_START( cps1_10MHz, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz ) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(sub_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,cps1)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
+
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( cps1_12MHz, cps1_10MHz )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_CLOCK( XTAL_12MHz ) /* verified on pcb */
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pang3, cps1_12MHz )
+
+ /* basic machine hardware */
+ MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( ganbare, cps1_10MHz )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, ganbare_interrupt, "screen", 0, 1) // need to investigate more
+
+ MCFG_M48T35_ADD("m48t35")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( qsound, cps1_12MHz )
+
+ /* basic machine hardware */
+ MCFG_CPU_REPLACE("maincpu", M68000, XTAL_12MHz ) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(qsound_main_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_REPLACE("audiocpu", Z80, XTAL_8MHz) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(qsound_sub_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(qsound_decrypted_opcodes_map)
+ MCFG_CPU_PERIODIC_INT_DRIVER(cps_state, irq0_line_hold, 250) // measured (cps2.c)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, qsound)
+
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("mono")
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ //MCFG_DEVICE_REMOVE("soundlatch") // HBMAME
+ //MCFG_DEVICE_REMOVE("soundlatch2") // HBMAME
+ MCFG_DEVICE_REMOVE("2151")
+ MCFG_DEVICE_REMOVE("oki")
+
+ MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( wofhfh, cps1_12MHz )
+
+ /* basic machine hardware */
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sf2m3, cps1_12MHz)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sf2m3_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sf2m10, cps1_12MHz)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sf2m10_map)
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+#define CODE_SIZE 0x400000
+
+/* B-Board 88621B-2 */
+/*
+ There are 4 surface mounted ROMs each on it's own small 88621B-sub satellite board, type HN62404FP-18 package is QFP44.
+ The ROMs on the satellite boards are named and located as follows:
+
+ LW-02 @ 6B
+ LW-08 @ 9B
+ LW-06 @ 9D
+ LW-07 @ 10G
+
+ OTHER:
+ 2 PALs labeled LW621 (near LW_1.2A) and LWI0 (near LW_00.13C)
+ Custom chip - CAPCOM CPS-B-01 (QFP160)
+ NEC D4701AC
+*/
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( forgottn )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw40.12f", 0x00000, 0x20000, CRC(73e920b7) SHA1(2df12fc1a66f488d06b0927db909da81466d7d07) ) /* Higher program numbers indicates a later revision */
+ ROM_LOAD16_BYTE( "lw41.12h", 0x00001, 0x20000, CRC(58210b9e) SHA1(416cb56a81e74fce6f86c2b2519ba620457b785a) ) /* 1 byte difference: 0x66D4 == 0x0C versus 0x04 in lw15.12h below */
+ ROM_LOAD16_BYTE( "lw42.13f", 0x40000, 0x20000, CRC(bea45994) SHA1(c419f65c5e0c11ae7508ec54412bf6b62fac4f72) )
+ ROM_LOAD16_BYTE( "lw43.13h", 0x40001, 0x20000, CRC(539b2339) SHA1(8a9e452ef8ed05e0b956d36990266657d3077470) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.10g", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) ) // == lw-07.13e
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw_2.2b", 0x000000, 0x20000, CRC(4bd75fee) SHA1(c27bfba951a0dc4f493937ceca335c50a1afeddf) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_1.2a", 0x000001, 0x20000, CRC(65f41485) SHA1(fb05dffc87ee2f2b1b6646d54b13671f8eee0429) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw-08.9b", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-08.9f
+ ROMX_LOAD( "lw_18.5e", 0x000004, 0x20000, CRC(b4b6241b) SHA1(92b6b530e18ce27ba8739ebba0d8096b1551026c) , ROM_SKIP(7) )
+ ROMX_LOAD( "lw_17.5c", 0x000005, 0x20000, CRC(c5eea115) SHA1(22fe692eaf9dd00a56a76f46c19fb76bb5e5f0d6) , ROM_SKIP(7) )
+ ROMX_LOAD( "lw_30.8h", 0x000006, 0x20000, CRC(b385954e) SHA1(d33adb5842e7b85d304836bd92a7a96be4ff3694) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_29.8f", 0x000007, 0x20000, CRC(7bda1ac6) SHA1(5b8bd05f52798f98ae16efa2ff61c06e28a4e3a0) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_4.3b", 0x100000, 0x20000, CRC(50cf757f) SHA1(c70d7d34ac2d6671d40dd372e241ccb60bf3bf2b) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_3.3a", 0x100001, 0x20000, CRC(c03ef278) SHA1(ad33b01bd8194025a2ecf7755894d6d638da457a) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_20.7e", 0x100004, 0x20000, CRC(df1a3665) SHA1(7ba9c0edc64d4f9a8563533ce723a0a748352a15) , ROM_SKIP(7) )
+ ROMX_LOAD( "lw_19.7c", 0x100005, 0x20000, CRC(15af8440) SHA1(5afd0e833593f1a78487af489fe4384ab68f52b1) , ROM_SKIP(7) )
+ ROMX_LOAD( "lw_32.9h", 0x100006, 0x20000, CRC(30967a15) SHA1(6f6c6ca2f40aa9beec63ed64f0571bebc7c1aa50) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_31.9f", 0x100007, 0x20000, CRC(c49d37fb) SHA1(ce400261a0f8d5a9b95d3823f8f52de87b8007f1) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw-02.6b", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-02.12d
+ ROMX_LOAD( "lw_14.10b", 0x200002, 0x20000, CRC(82862cce) SHA1(727ca4ee55e076185b071a49afc87533fde9ec27) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_13.10a", 0x200003, 0x20000, CRC(b81c0e96) SHA1(09f4235786b8ff92a57112669c0385b64477eb01) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw-06.9d", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-06.12e
+ ROMX_LOAD( "lw_26.10e", 0x200006, 0x20000, CRC(57bcd032) SHA1(6db0f96fb909ed02fe4b7ee25fe662ea23f884d2) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_25.10c", 0x200007, 0x20000, CRC(bac91554) SHA1(52f5de144193e0f78b9824cc8fd6f934dc19bab0) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_16.11b", 0x300002, 0x20000, CRC(40b26554) SHA1(b4b27573d6c329bc2bc4c64fd857475bf2a10877) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_15.11a", 0x300003, 0x20000, CRC(1b7d2e07) SHA1(0edf4d4b314fd9c29e7915d5d1adef6f9617f921) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_28.11e", 0x300006, 0x20000, CRC(a805ad30) SHA1(baded4ab5fe4e87d53233b5df88edc693c292fc4) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_27.11c", 0x300007, 0x20000, CRC(103c1bd2) SHA1(fc7ce74e108c30554139e55651c5348b11e9e3bd) , ROM_SKIP(7) ) // == lw-13.12g
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_37.13c", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.13c
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.12e", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) ) // == lw-03u.14c
+ ROM_LOAD( "lw-04u.13e", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) ) // == lw-04u.13c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lw621.1a", 0x0000, 0x0117, CRC(5eec6ce9) SHA1(5ec8b60f1f1bdba865b1fa2387987ce99ff4093a) )
+ ROM_LOAD( "lwio.12b", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88621B-2 */
+/*
+ These ROMs read from a dead and very unique top board. All EPROMs are type 27C1000, except LW_00.13C which is a 27C512.
+ There are 5 surface mounted ROMs each on it's own small 88621B-sub satellite board, type HN62404FP-18 package is QFP44.
+ The ROMs on the satellite boards are named and located as follows:
+
+ LW-02 @ 6B
+ LW-05 @ 6D (instead of LW_17.5C, LW_18.5E, LW_19.7C & LW_20.7E as above)
+ LW-08 @ 9B
+ LW-06 @ 9D
+ LW-07 @ 10G
+
+ Also known to have LW-13 @ 10D instead of LW_25.10C, LW_26.10E, LW_27.11C & LW_28.11E
+
+ OTHER:
+ 2 PALs labeled LW621 (near LW_1.2A) and LWI0 (near LW_00.13C)
+ Custom chip - CAPCOM CPS-B-01 (QFP160)
+ NEC D4701AC
+*/
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( forgottna )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw11.12f", 0x00000, 0x20000, CRC(73e920b7) SHA1(2df12fc1a66f488d06b0927db909da81466d7d07) )
+ ROM_LOAD16_BYTE( "lw15.12h", 0x00001, 0x20000, CRC(50d7012d) SHA1(f82a28a835f0a83b26c2c8170b824447b1d7409f) )
+ ROM_LOAD16_BYTE( "lw10.13f", 0x40000, 0x20000, CRC(bea45994) SHA1(c419f65c5e0c11ae7508ec54412bf6b62fac4f72) )
+ ROM_LOAD16_BYTE( "lw14.13h", 0x40001, 0x20000, CRC(539b2339) SHA1(8a9e452ef8ed05e0b956d36990266657d3077470) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.10g", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) ) // == lw-07.13e
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw_2.2b", 0x000000, 0x20000, CRC(4bd75fee) SHA1(c27bfba951a0dc4f493937ceca335c50a1afeddf) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_1.2a", 0x000001, 0x20000, CRC(65f41485) SHA1(fb05dffc87ee2f2b1b6646d54b13671f8eee0429) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw-08.9b", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-08.9f
+ ROMX_LOAD( "lw-05.6d", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-05.9e
+ ROMX_LOAD( "lw_30.8h", 0x000006, 0x20000, CRC(b385954e) SHA1(d33adb5842e7b85d304836bd92a7a96be4ff3694) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_29.8f", 0x000007, 0x20000, CRC(7bda1ac6) SHA1(5b8bd05f52798f98ae16efa2ff61c06e28a4e3a0) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_4.3b", 0x100000, 0x20000, CRC(50cf757f) SHA1(c70d7d34ac2d6671d40dd372e241ccb60bf3bf2b) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_3.3a", 0x100001, 0x20000, CRC(c03ef278) SHA1(ad33b01bd8194025a2ecf7755894d6d638da457a) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_32.9h", 0x100006, 0x20000, CRC(30967a15) SHA1(6f6c6ca2f40aa9beec63ed64f0571bebc7c1aa50) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_31.9f", 0x100007, 0x20000, CRC(c49d37fb) SHA1(ce400261a0f8d5a9b95d3823f8f52de87b8007f1) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw-02.6b", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-02.12d
+ ROMX_LOAD( "lw_14.10b", 0x200002, 0x20000, CRC(82862cce) SHA1(727ca4ee55e076185b071a49afc87533fde9ec27) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_13.10a", 0x200003, 0x20000, CRC(b81c0e96) SHA1(09f4235786b8ff92a57112669c0385b64477eb01) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw-06.9d", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-06.12e
+ ROMX_LOAD( "lw_26.10e", 0x200006, 0x20000, CRC(57bcd032) SHA1(6db0f96fb909ed02fe4b7ee25fe662ea23f884d2) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_25.10c", 0x200007, 0x20000, CRC(bac91554) SHA1(52f5de144193e0f78b9824cc8fd6f934dc19bab0) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_16.11b", 0x300002, 0x20000, CRC(40b26554) SHA1(b4b27573d6c329bc2bc4c64fd857475bf2a10877) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_15.11a", 0x300003, 0x20000, CRC(1b7d2e07) SHA1(0edf4d4b314fd9c29e7915d5d1adef6f9617f921) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_28.11e", 0x300006, 0x20000, CRC(a805ad30) SHA1(baded4ab5fe4e87d53233b5df88edc693c292fc4) , ROM_SKIP(7) ) // == lw-13.12g
+ ROMX_LOAD( "lw_27.11c", 0x300007, 0x20000, CRC(103c1bd2) SHA1(fc7ce74e108c30554139e55651c5348b11e9e3bd) , ROM_SKIP(7) ) // == lw-13.12g
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_00.13c", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.14a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.12e", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) ) // == lw-03u.14c
+ ROM_LOAD( "lw-04u.13e", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) ) // == lw-04u.13c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lw621.1a", 0x0000, 0x0117, CRC(5eec6ce9) SHA1(5ec8b60f1f1bdba865b1fa2387987ce99ff4093a) )
+ ROM_LOAD( "lwio.12b", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88621B-2 */
+/* This set comes from a USA board with the same pcb layout of the parent forgottn, but uses one more surface mounted ROM
+ named LW-13 and located @ 10D instead of LW_25.10C, LW_26.10E, LW_27.11C, LW_28.11E EPROMs. */
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( forgottnu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw11c.12f", 0x00000, 0x20000, CRC(e62742b6) SHA1(39dd3bdd405a8217d8816567d4f2014fc77f5ce8) )
+ ROM_LOAD16_BYTE( "lw15c.12h", 0x00001, 0x20000, CRC(1b70f216) SHA1(f200f615dca8aa23d166e74b8baa9a8863ee7a95) )
+ ROM_LOAD16_BYTE( "lw10c.13f", 0x40000, 0x20000, CRC(8f5ea3f5) SHA1(c3e43659bd7e03ec3d5c79647db380bde391b0f1) )
+ ROM_LOAD16_BYTE( "lw14c.13h", 0x40001, 0x20000, CRC(708e7472) SHA1(44f82db41ffd1eece2d3f3c977f481fd84dfdbf3) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.10g", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) ) // == lw-07.13e
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw_2.2b", 0x000000, 0x20000, CRC(4bd75fee) SHA1(c27bfba951a0dc4f493937ceca335c50a1afeddf) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_1.2a", 0x000001, 0x20000, CRC(65f41485) SHA1(fb05dffc87ee2f2b1b6646d54b13671f8eee0429) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw-08.9b", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-08.9f
+ ROMX_LOAD( "lw-05.6d", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-05.9e
+ ROMX_LOAD( "lw_30.8h", 0x000006, 0x20000, CRC(b385954e) SHA1(d33adb5842e7b85d304836bd92a7a96be4ff3694) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_29.8f", 0x000007, 0x20000, CRC(7bda1ac6) SHA1(5b8bd05f52798f98ae16efa2ff61c06e28a4e3a0) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_4.3b", 0x100000, 0x20000, CRC(50cf757f) SHA1(c70d7d34ac2d6671d40dd372e241ccb60bf3bf2b) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_3.3a", 0x100001, 0x20000, CRC(c03ef278) SHA1(ad33b01bd8194025a2ecf7755894d6d638da457a) , ROM_SKIP(7) ) // == lw-01.9d
+ ROMX_LOAD( "lw_32.9h", 0x100006, 0x20000, CRC(30967a15) SHA1(6f6c6ca2f40aa9beec63ed64f0571bebc7c1aa50) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw_31.9f", 0x100007, 0x20000, CRC(c49d37fb) SHA1(ce400261a0f8d5a9b95d3823f8f52de87b8007f1) , ROM_SKIP(7) ) // == lw-12.9g
+ ROMX_LOAD( "lw-02.6b", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-02.12d
+ ROMX_LOAD( "lw_14.10b", 0x200002, 0x20000, CRC(82862cce) SHA1(727ca4ee55e076185b071a49afc87533fde9ec27) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_13.10a", 0x200003, 0x20000, CRC(b81c0e96) SHA1(09f4235786b8ff92a57112669c0385b64477eb01) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw-06.9d", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-06.12e
+ ROMX_LOAD( "lw-13.10d", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) ) // == lw-13.12g
+ ROMX_LOAD( "lw_16.11b", 0x300002, 0x20000, CRC(40b26554) SHA1(b4b27573d6c329bc2bc4c64fd857475bf2a10877) , ROM_SKIP(7) ) // == lw-09.12f
+ ROMX_LOAD( "lw_15.11a", 0x300003, 0x20000, CRC(1b7d2e07) SHA1(0edf4d4b314fd9c29e7915d5d1adef6f9617f921) , ROM_SKIP(7) ) // == lw-09.12f
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_00.13c", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.14a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.12e", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) ) // == lw-03u.14c
+ ROM_LOAD( "lw-04u.13e", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) ) // == lw-04u.13c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lw621.1a", 0x0000, 0x0117, CRC(5eec6ce9) SHA1(5ec8b60f1f1bdba865b1fa2387987ce99ff4093a) )
+ ROM_LOAD( "lwio.12b", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88618B-2 */
+/* Note that this set is equivalent to forgottnu, but ROMs use the 88618B-2 B-Board layout. */
+ROM_START( forgottnu1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw11c.14f", 0x00000, 0x20000, CRC(e62742b6) SHA1(39dd3bdd405a8217d8816567d4f2014fc77f5ce8) )
+ ROM_LOAD16_BYTE( "lw15c.14g", 0x00001, 0x20000, CRC(1b70f216) SHA1(f200f615dca8aa23d166e74b8baa9a8863ee7a95) )
+ ROM_LOAD16_BYTE( "lw10c.13f", 0x40000, 0x20000, CRC(8f5ea3f5) SHA1(c3e43659bd7e03ec3d5c79647db380bde391b0f1) )
+ ROM_LOAD16_BYTE( "lw14c.13g", 0x40001, 0x20000, CRC(708e7472) SHA1(44f82db41ffd1eece2d3f3c977f481fd84dfdbf3) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.13e", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw-01.9d", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-08.9f", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-05.9e", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-12.9g", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-02.12d", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-09.12f", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-06.12e", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-13.12g", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_00.14a", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.14a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.14c", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) )
+ ROM_LOAD( "lw-04u.13c", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lwchr.3a", 0x0000, 0x0117, CRC(54ed4c39) SHA1(961309335dc1c84482ebe99ea938b32d3a6ae9a8) )
+ ROM_LOAD( "lwio.15e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88618B-2 */
+ROM_START( forgottnua )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lwu_11a.14f", 0x00000, 0x20000, CRC(ddf78831) SHA1(b9c815613efdfde933d4500b588798b7fb4c1854) )
+ ROM_LOAD16_BYTE( "lwu_15a.14g", 0x00001, 0x20000, CRC(f7ce2097) SHA1(44c06fabdb6de7d8afc2164458c90b0be9cf945d) )
+ ROM_LOAD16_BYTE( "lwu_10a.13f", 0x40000, 0x20000, CRC(8cb38c81) SHA1(1d36cab7d17ff778ee7dfcd9606a3a87f6906f21) )
+ ROM_LOAD16_BYTE( "lwu_14a.13g", 0x40001, 0x20000, CRC(d70ef9fd) SHA1(b393aa2a7bea440fdcf057ffc6ff233fc0d35d4b) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.13e", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw-01.9d", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-08.9f", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-05.9e", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-12.9g", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-02.12d", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-09.12f", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-06.12e", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-13.12g", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lwu_00.14a", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.14a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.14c", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) )
+ ROM_LOAD( "lw-04u.13c", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lwchr.3a", 0x0000, 0x0117, CRC(54ed4c39) SHA1(961309335dc1c84482ebe99ea938b32d3a6ae9a8) )
+ ROM_LOAD( "lwio.15e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88618B-2 */
+ROM_START( forgottnuaa ) /* 1 byte difference to parent set. Region byte or pointer to the US "warning" screen at boot */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lwu_11aa.14f", 0x00000, 0x20000, CRC(73e920b7) SHA1(2df12fc1a66f488d06b0927db909da81466d7d07) ) // == lw11.12f
+ ROM_LOAD16_BYTE( "lwu_15aa.14g", 0x00001, 0x20000, CRC(e47524b9) SHA1(2fad1e59432cb63017caf691bb28eb7cbcecb3c6) ) // 1 byte difference to lw15.12h 0x8B6 == 0x07
+ ROM_LOAD16_BYTE( "lwu_10aa.13f", 0x40000, 0x20000, CRC(bea45994) SHA1(c419f65c5e0c11ae7508ec54412bf6b62fac4f72) ) // == lw10.13f
+ ROM_LOAD16_BYTE( "lwu_14aa.13g", 0x40001, 0x20000, CRC(539b2339) SHA1(8a9e452ef8ed05e0b956d36990266657d3077470) ) // == lw14.13h
+ ROM_LOAD16_WORD_SWAP( "lw-07.13e", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw-01.9d", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-08.9f", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-05.9e", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-12.9g", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-02.12d", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-09.12f", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-06.12e", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-13.12g", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lwu_00.14a", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) // == lw_00b.14a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03u.14c", 0x00000, 0x20000, CRC(807d051f) SHA1(720e4733787b9b11f4d1cdce0892b69475802844) )
+ ROM_LOAD( "lw-04u.13c", 0x20000, 0x20000, CRC(e6cd098e) SHA1(667f6e5736f76a1c4c450c4e2035574ea89d7910) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lwchr.3a", 0x0000, 0x0117, CRC(54ed4c39) SHA1(961309335dc1c84482ebe99ea938b32d3a6ae9a8) )
+ ROM_LOAD( "lwio.15e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88618B-2 */
+ROM_START( lostwrld )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw_11c.14f", 0x00000, 0x20000, CRC(67e42546) SHA1(3e385661f71616180a26b74e443978077246fe66) )
+ ROM_LOAD16_BYTE( "lw_15c.14g", 0x00001, 0x20000, CRC(402e2a46) SHA1(cbb7017e75a425706505717bf83c2615f53309f9) )
+ ROM_LOAD16_BYTE( "lw_10c.13f", 0x40000, 0x20000, CRC(c46479d7) SHA1(84fd9ef33ae7d0af2110e8dc299de25c0f039cee) )
+ ROM_LOAD16_BYTE( "lw_14c.13g", 0x40001, 0x20000, CRC(97670f4a) SHA1(f249977c814abdff85007216d7fa57db5684be0f) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.13e", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw-01.9d", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-08.9f", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-05.9e", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-12.9g", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-02.12d", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-09.12f", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-06.12e", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-13.12g", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_00b.14a", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03.14c", 0x00000, 0x20000, CRC(ce2159e7) SHA1(77d564f8b768c1cbd6e5b334f7ee86c4c3f9d62e) )
+ ROM_LOAD( "lw-04.13c", 0x20000, 0x20000, CRC(39305536) SHA1(ad24d7b6df2dc5e84a35aecb9ba9b0aaa27ab6e5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lwchr.3a", 0x0000, 0x0117, CRC(54ed4c39) SHA1(961309335dc1c84482ebe99ea938b32d3a6ae9a8) )
+ ROM_LOAD( "lwio.15e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88618B-2 */
+ROM_START( lostwrldo )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "lw_11.14f", 0x00000, 0x20000, CRC(61e2cc56) SHA1(bc192e37806129dd00677ca2c2e4287aa670973d) )
+ ROM_LOAD16_BYTE( "lw_15.14g", 0x00001, 0x20000, CRC(8a0c18d3) SHA1(7a4d80cefa0c2be427de43fbbbb906880876ed1d) )
+ ROM_LOAD16_BYTE( "lw_10.13f", 0x40000, 0x20000, CRC(23bca4d5) SHA1(c9d356d052d82117b6c30e40aa02a5f1f5335a73) )
+ ROM_LOAD16_BYTE( "lw_14.13g", 0x40001, 0x20000, CRC(3a023771) SHA1(30de9b76e104e897ddce64615f24bba0aa270d14) )
+ ROM_LOAD16_WORD_SWAP( "lw-07.13e", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "lw-01.9d", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-08.9f", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-05.9e", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-12.9g", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-02.12d", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-09.12f", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-06.12e", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "lw-13.12g", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x200000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "lw_00b.14a", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "lw-03.14c", 0x00000, 0x20000, CRC(ce2159e7) SHA1(77d564f8b768c1cbd6e5b334f7ee86c4c3f9d62e) )
+ ROM_LOAD( "lw-04.13c", 0x20000, 0x20000, CRC(39305536) SHA1(ad24d7b6df2dc5e84a35aecb9ba9b0aaa27ab6e5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "lwchr.3a", 0x0000, 0x0117, CRC(54ed4c39) SHA1(961309335dc1c84482ebe99ea938b32d3a6ae9a8) )
+ ROM_LOAD( "lwio.15e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88620-B-? */
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( ghouls )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "dme_29.10h", 0x00000, 0x20000, CRC(166a58a2) SHA1(f21fcf88d2ebb7bc9e8885fde760a5d82f295c1a) )
+ ROM_LOAD16_BYTE( "dme_30.10j", 0x00001, 0x20000, CRC(7ac8407a) SHA1(3613699213db47bfeabedf87f12eb0fa7e5973b6) )
+ ROM_LOAD16_BYTE( "dme_27.9h", 0x40000, 0x20000, CRC(f734b2be) SHA1(fa230bf5503487ec11d767485a18f0a55dcc13d2) )
+ ROM_LOAD16_BYTE( "dme_28.9j", 0x40001, 0x20000, CRC(03d3e714) SHA1(a07786062358c89f3b4634b8822173261802290b) )
+ ROM_LOAD16_WORD( "dm-17.7j", 0x80000, 0x80000, CRC(3ea1b0f2) SHA1(c51f1c38cdaed77ad715cedd845617a291ab2441) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "dm-05.3a", 0x000000, 0x80000, CRC(0ba9c0b0) SHA1(c4945b603115f32b7346d72426571dc2d361159f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-07.3f", 0x000002, 0x80000, CRC(5d760ab9) SHA1(212176947933fcfef991bc80ad5bd91718689ffe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-06.3c", 0x000004, 0x80000, CRC(4ba90b59) SHA1(35bc9dec5ddbf064c30c951627581c16764456ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-08.3g", 0x000006, 0x80000, CRC(4bdee9de) SHA1(7d0c4736f16577afe9966447a18f039728f6fbdf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "09.4a", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) )
+ ROMX_LOAD( "18.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) )
+ ROMX_LOAD( "13.4e", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) )
+ ROMX_LOAD( "22.7e", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) )
+ ROMX_LOAD( "11.4c", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) )
+ ROMX_LOAD( "20.7c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) )
+ ROMX_LOAD( "15.4g", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) )
+ ROMX_LOAD( "24.7g", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) )
+ ROMX_LOAD( "10.4b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "19.7b", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) )
+ ROMX_LOAD( "14.4f", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) )
+ ROMX_LOAD( "23.7f", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) )
+ ROMX_LOAD( "12.4d", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) )
+ ROMX_LOAD( "21.7d", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) )
+ ROMX_LOAD( "16.4h", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) )
+ ROMX_LOAD( "25.7h", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "26.10a", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) /* Samples (not present) */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "dm620.2a", 0x0000, 0x0117, CRC(f6e5f727) SHA1(8d38c458721347272ccc14b2c0e9885c4f891477) )
+ ROM_LOAD( "lwio.8i", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88620-B-2 */
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( ghoulsu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "dmu_29.10h", 0x00000, 0x20000, CRC(334d85b2) SHA1(89bacc28b7c799c7568420e3de5a99060baa7b0f) )
+ ROM_LOAD16_BYTE( "dmu_30.10j", 0x00001, 0x20000, CRC(cee8ceb5) SHA1(fc8db1ce0c143dfda0b5989d02d5e5a872e27cd2) )
+ ROM_LOAD16_BYTE( "dmu_27.9h", 0x40000, 0x20000, CRC(4a524140) SHA1(cebd651293c3570912d5506c1c223c39bcccc802) )
+ ROM_LOAD16_BYTE( "dmu_28.9j", 0x40001, 0x20000, CRC(94aae205) SHA1(514b3c1b9b0b22300a94229825c3be66332ea5ed) )
+ ROM_LOAD16_WORD( "dm-17.7j", 0x80000, 0x80000, CRC(3ea1b0f2) SHA1(c51f1c38cdaed77ad715cedd845617a291ab2441) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "dm-05.3a", 0x000000, 0x80000, CRC(0ba9c0b0) SHA1(c4945b603115f32b7346d72426571dc2d361159f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-07.3f", 0x000002, 0x80000, CRC(5d760ab9) SHA1(212176947933fcfef991bc80ad5bd91718689ffe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-06.3c", 0x000004, 0x80000, CRC(4ba90b59) SHA1(35bc9dec5ddbf064c30c951627581c16764456ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dm-08.3g", 0x000006, 0x80000, CRC(4bdee9de) SHA1(7d0c4736f16577afe9966447a18f039728f6fbdf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "09.4a", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) )
+ ROMX_LOAD( "18.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) )
+ ROMX_LOAD( "13.4e", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) )
+ ROMX_LOAD( "22.7e", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) )
+ ROMX_LOAD( "11.4c", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) )
+ ROMX_LOAD( "20.7c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) )
+ ROMX_LOAD( "15.4g", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) )
+ ROMX_LOAD( "24.7g", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) )
+ ROMX_LOAD( "10.4b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "19.7b", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) )
+ ROMX_LOAD( "14.4f", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) )
+ ROMX_LOAD( "23.7f", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) )
+ ROMX_LOAD( "12.4d", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) )
+ ROMX_LOAD( "21.7d", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) )
+ ROMX_LOAD( "16.4h", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) )
+ ROMX_LOAD( "25.7h", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "26.10a", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) /* Samples (not present) */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "dm620.2a", 0x0000, 0x0117, CRC(f6e5f727) SHA1(8d38c458721347272ccc14b2c0e9885c4f891477) )
+ ROM_LOAD( "lwio.8i", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88622B-2 */
+/* Note that ROMs are labeled left to right, top to bottom, instead of top to bottom, left to right as usual. */
+ROM_START( daimakai )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "dmj_38.12f", 0x00000, 0x20000, CRC(82fd1798) SHA1(7a199384659d8e6602384b1953339f221d61a9e6) )
+ ROM_LOAD16_BYTE( "dmj_39.12h", 0x00001, 0x20000, CRC(35366ccc) SHA1(42c7004a641f34b9dd1333be51b50639a97e2be9) )
+ ROM_LOAD16_BYTE( "dmj_40.13f", 0x40000, 0x20000, CRC(a17c170a) SHA1(62a9cb65df90827334d453a98e826dc1bfc27136) )
+ ROM_LOAD16_BYTE( "dmj_41.13h", 0x40001, 0x20000, CRC(6af0b391) SHA1(5a2d74d207c04e24bcea7eeffa1c8b96b6df77e1) )
+ ROM_LOAD16_BYTE( "dm_33.10f", 0x80000, 0x20000, CRC(384d60c4) SHA1(258f9e2334b7240cf665b530f2c69b8826850687) ) // == dm-17.7j
+ ROM_LOAD16_BYTE( "dm_34.10h", 0x80001, 0x20000, CRC(19abe30f) SHA1(aea7d5c8357201b68dec70d7cc8f87dfb8fce207) ) // == dm-17.7j
+ ROM_LOAD16_BYTE( "dm_35.11f", 0xc0000, 0x20000, CRC(c04b85c8) SHA1(f8659624bb9d418d02f63f43478d3b53cfe18718) ) // == dm-17.7j
+ ROM_LOAD16_BYTE( "dm_36.11h", 0xc0001, 0x20000, CRC(89be83de) SHA1(6dfd1380304a85dee7cac4d0b2cfd7625b9020bf) ) // == dm-17.7j
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "dm_02.4b", 0x000000, 0x20000, CRC(8b98dc48) SHA1(e827881e2ba5cccd907d1692a1945c1b75d46f12) , ROM_SKIP(7) ) // == dm-05.3a
+ ROMX_LOAD( "dm_01.4a", 0x000001, 0x20000, CRC(80896c33) SHA1(20ffc427c596828005e34cdd8e4efa0d332262e9) , ROM_SKIP(7) ) // == dm-05.3a
+ ROMX_LOAD( "dm_10.9b", 0x000002, 0x20000, CRC(c2e7d9ef) SHA1(52aae6cf373f8c7150833047be28b74dd5eb5af6) , ROM_SKIP(7) ) // == dm-07.3f
+ ROMX_LOAD( "dm_09.9a", 0x000003, 0x20000, CRC(c9c4afa5) SHA1(34571e3e49c86b87fa34eefbc5f9fe258aba5f1a) , ROM_SKIP(7) ) // == dm-07.3f
+ ROMX_LOAD( "dm_18.5e", 0x000004, 0x20000, CRC(1aa0db99) SHA1(69ac302b2f6f0b96f78cb57b0b4cdae464086262) , ROM_SKIP(7) ) // == dm-06.3c
+ ROMX_LOAD( "dm_17.5c", 0x000005, 0x20000, CRC(dc6ed8ad) SHA1(1ffc4a48a7ff9b542ab6f63a60bea3c1a7a6e63b) , ROM_SKIP(7) ) // == dm-06.3c
+ ROMX_LOAD( "dm_30.8h", 0x000006, 0x20000, CRC(d9d3f8bd) SHA1(6c6853a384f8d60ca46a0607fd47c76a83700fba) , ROM_SKIP(7) ) // == dm-08.3g
+ ROMX_LOAD( "dm_29.8f", 0x000007, 0x20000, CRC(49a48796) SHA1(76c18c684dba4aa91ee6caae0f38fe3e1cc50832) , ROM_SKIP(7) ) // == dm-08.3g
+ ROMX_LOAD( "dm_04.5b", 0x100000, 0x20000, CRC(a4f4f8f0) SHA1(edca0f61b40a18afe279f7007c233064130cfb4f) , ROM_SKIP(7) ) // == dm-05.3a
+ ROMX_LOAD( "dm_03.5a", 0x100001, 0x20000, CRC(b1033e62) SHA1(547fc281dd9e7a74ac86c3692508c7bde9b6167b) , ROM_SKIP(7) ) // == dm-05.3a
+ ROMX_LOAD( "dm_12.10b", 0x100002, 0x20000, CRC(10fdd76a) SHA1(aee774d6323292799dff7a30ef9559c92fe5507a) , ROM_SKIP(7) ) // == dm-07.3f
+ ROMX_LOAD( "dm_11.10a", 0x100003, 0x20000, CRC(9040cb04) SHA1(b32e9056fc20a5162868eade10f3ef5efc167a28) , ROM_SKIP(7) ) // == dm-07.3f
+ ROMX_LOAD( "dm_20.7e", 0x100004, 0x20000, CRC(281d0b3e) SHA1(70e1813de184ad0ec164145b7b843b5e387494e3) , ROM_SKIP(7) ) // == dm-06.3c
+ ROMX_LOAD( "dm_19.7c", 0x100005, 0x20000, CRC(2623b52f) SHA1(fc4200924452bfbff687934782398ed345dc0aa0) , ROM_SKIP(7) ) // == dm-06.3c
+ ROMX_LOAD( "dm_32.9h", 0x100006, 0x20000, CRC(99692344) SHA1(67dc70618568b7c0adcb00a612aaf5501f6c8c0f) , ROM_SKIP(7) ) // == dm-08.3g
+ ROMX_LOAD( "dm_31.9f", 0x100007, 0x20000, CRC(54acb729) SHA1(d1fca43db36253fd19db4337c49272a6cadff597) , ROM_SKIP(7) ) // == dm-08.3g
+ ROMX_LOAD( "dm_06.7b", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) ) // == 09.4a
+ ROMX_LOAD( "dm_05.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) ) // == 18.7a
+ ROMX_LOAD( "dm_14.11b", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) ) // == 13.4e
+ ROMX_LOAD( "dm_13.11a", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) ) // == 22.7e
+ ROMX_LOAD( "dm_22.8e", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) ) // == 11.4c
+ ROMX_LOAD( "dm_21.8c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) ) // == 20.7c
+ ROMX_LOAD( "dm_26.10e", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) ) // == 15.4g
+ ROMX_LOAD( "dm_25.10c", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) ) // == 24.7g
+ ROMX_LOAD( "dm_08.8b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) ) // == 10.4b
+ ROMX_LOAD( "dm_07.8a", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) ) // == 19.7b
+ ROMX_LOAD( "dm_16.12b", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) ) // == 14.4f
+ ROMX_LOAD( "dm_15.12a", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) ) // == 23.7f
+ ROMX_LOAD( "dm_24.9e", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) ) // == 12.4d
+ ROMX_LOAD( "dm_23.9c", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) ) // == 21.7d
+ ROMX_LOAD( "dm_28.11e", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) ) // == 16.4h
+ ROMX_LOAD( "dm_27.11c", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) ) // == 25.7h
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "37.13c", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) ) // == 26.10a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) /* Samples (not present) */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "dm22a.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( daimakair )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "damj_23.8f", 0x00000, 0x80000, CRC(c3b248ec) SHA1(5c016d2dcf882b2a9564e3c4502a0f51ee3d1803) )
+ ROM_LOAD16_WORD_SWAP( "damj_22.7f", 0x80000, 0x80000, CRC(595ff2f3) SHA1(ac14b81e15f2c340526a03acbb4c28181d94d5b9) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "dam_01.3a", 0x000000, 0x80000, CRC(0ba9c0b0) SHA1(c4945b603115f32b7346d72426571dc2d361159f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == dm-05.3a
+ ROMX_LOAD( "dam_02.4a", 0x000002, 0x80000, CRC(5d760ab9) SHA1(212176947933fcfef991bc80ad5bd91718689ffe) , ROM_GROUPWORD | ROM_SKIP(6) ) // == dm-07.3f
+ ROMX_LOAD( "dam_03.5a", 0x000004, 0x80000, CRC(4ba90b59) SHA1(35bc9dec5ddbf064c30c951627581c16764456ac) , ROM_GROUPWORD | ROM_SKIP(6) ) // == dm-06.3c
+ ROMX_LOAD( "dam_04.6a", 0x000006, 0x80000, CRC(4bdee9de) SHA1(7d0c4736f16577afe9966447a18f039728f6fbdf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == dm-08.3g
+ ROMX_LOAD( "dam_05.7a", 0x200000, 0x80000, CRC(7dc61b94) SHA1(7796bae7555c541b3c80aacfa24788aeb2ccdfd5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dam_06.8a", 0x200002, 0x80000, CRC(fde89758) SHA1(9a6192f629cd1e74e225ef7426338c2816c6b977) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dam_07.9a", 0x200004, 0x80000, CRC(ec351d78) SHA1(1005a83be4b5577612143ae7f64ca4a08aae7959) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dam_08.10a", 0x200006, 0x80000, CRC(ee2acc1e) SHA1(4628a9b2447266349d97132003992a21e2bb423a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "dam_09.12a", 0x00000, 0x08000, CRC(0656ff53) SHA1(063a8124dbe73d014b11f72007f1b877afd1a661) ) // == 26.10a + garbage
+ ROM_CONTINUE( 0x10000, 0x18000 ) // second half of ROM is unused, not mapped in memory
+
+ ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) /* Samples (not present) */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "dam63b.1a", 0x0000, 0x0117, CRC(474b3c8a) SHA1(da364581685067fc955ed43b982a7aa7a2648286) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89624B-2 */
+ROM_START( strider )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) )
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) )
+ ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) )
+ ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) )
+ ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) // in "32" socket
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(4eee9aea) SHA1(5e619fd5f3f1181e32a8fd9dbb4661d74ff8a484) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(2d7f21e4) SHA1(593cec513de40ff802084d54313bb25a4561e25d) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+ ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(7705aa46) SHA1(6cbfa30b2852fd117d117beefba434ce41d24c2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(5b18b722) SHA1(cf71c62348ca6b404279e87a6686cb3a842eb381) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "st24m1.1a", 0x0000, 0x0117, CRC(a80d357e) SHA1(4cb79c99c62c8300e694f4cd26f41dab7818f17f) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( striderua )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(66aec273) SHA1(576b1e9062874e68d68f8725949c151509eb6d56) ) /* different CRC from strider, pcb verified */
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(50e0e865) SHA1(201ef385c228c124ed9412002233a501ea514efd) ) /* different CRC from strider, pcb verified */
+ ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(eae93bd1) SHA1(b320a00b67ea3c7fffc6c37d57863163975f7b80) ) /* different CRC from strider, pcb verified */
+ ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(b904a31d) SHA1(5509d1024151eb8548fd1b29e6c0c95775c61364) ) /* different CRC from strider, pcb verified */
+ ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) // in "32" socket
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(4eee9aea) SHA1(5e619fd5f3f1181e32a8fd9dbb4661d74ff8a484) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(2d7f21e4) SHA1(593cec513de40ff802084d54313bb25a4561e25d) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+ ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(7705aa46) SHA1(6cbfa30b2852fd117d117beefba434ce41d24c2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(5b18b722) SHA1(cf71c62348ca6b404279e87a6686cb3a842eb381) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(08d63519) SHA1(c120ecfe25c3c50bc51bc7d5a9ef1c8ca6591240) ) /* different CRC from strider, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "st24b2.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+// 90629B-3 PCB - Converted from an SF2 'inhouse' (but with no official labels etc.)
+// actually an incomplete conversion, layer enables are wrong in a number of places which causes the game to break even on real hardware.
+// this is essentially a Capcom made bootleg of a Capcom game.
+ROM_START( strideruc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "34.8f", 0x000000, 0x80000, CRC(e0fb5657) SHA1(6c7f668220de80169feea35371aff363f67f7b0c) )
+ ROM_LOAD16_WORD_SWAP( "33.6f", 0x080000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "6.8a", 0x000000, 0x80000, CRC(4eee9aea) SHA1(5e619fd5f3f1181e32a8fd9dbb4661d74ff8a484) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "8.10a", 0x000002, 0x80000, CRC(2d7f21e4) SHA1(593cec513de40ff802084d54313bb25a4561e25d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "5.7a", 0x000004, 0x80000, CRC(7705aa46) SHA1(6cbfa30b2852fd117d117beefba434ce41d24c2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "7.9a", 0x000006, 0x80000, CRC(5b18b722) SHA1(cf71c62348ca6b404279e87a6686cb3a842eb381) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "15.8c", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "17.10c", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "14.7c", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "16.9c", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "9.12a", 0x00000, 0x08000, CRC(08d63519) SHA1(c120ecfe25c3c50bc51bc7d5a9ef1c8ca6591240) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ // which of these should we be using?
+ /*
+ ROM_REGION( 0x0200, "aboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ */
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( striderj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sth_36.12f", 0x00000, 0x20000, CRC(53c7b006) SHA1(30daa256a32b209b907e5d916a82068017862a01) )
+ ROM_LOAD16_BYTE( "sth_42.12h", 0x00001, 0x20000, CRC(4037f65f) SHA1(490b9fb15f80772316101ea15e61ab32f42feaec) )
+ ROM_LOAD16_BYTE( "sth_37.13f", 0x40000, 0x20000, CRC(80e8877d) SHA1(806a62c03007efe6d58fb24dac467d4fc39bb96a) )
+ ROM_LOAD16_BYTE( "sth_43.13h", 0x40001, 0x20000, CRC(6b3fa466) SHA1(6a3c9bd491eecf864971f7fdf02d01112d5ef7dd) )
+ ROM_LOAD16_BYTE( "sth_34.10f", 0x80000, 0x20000, CRC(bea770b5) SHA1(b1d3111c8878708b6d0589d6bdfd3b380842d98b) ) // == st-14.8h
+ ROM_LOAD16_BYTE( "sth_40.10h", 0x80001, 0x20000, CRC(43b922dc) SHA1(441c932080ae2b19e3834e7173d46be2e8762119) ) // == st-14.8h
+ ROM_LOAD16_BYTE( "sth_35.11f", 0xc0000, 0x20000, CRC(5cc429da) SHA1(1d3593444d556fcb7b209ef254b7733cb32dc502) ) // == st-14.8h
+ ROM_LOAD16_BYTE( "sth_41.11h", 0xc0001, 0x20000, CRC(50af457f) SHA1(fb7248e41c09f137c929a2bd9ef17591f48b7009) ) // == st-14.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sth_09.4b", 0x000000, 0x20000, CRC(1ef6bfbd) SHA1(5e66168e2526b4b4569d9dabacd5602181b23874) , ROM_SKIP(7) ) // == st-2.8a
+ ROMX_LOAD( "sth_01.4a", 0x000001, 0x20000, CRC(1e21b0c1) SHA1(2ac543dccefa7e2438d7eb53cdf2e6aff09c735b) , ROM_SKIP(7) ) // == st-2.8a
+ ROMX_LOAD( "sth_13.9b", 0x000002, 0x20000, CRC(063263ae) SHA1(38ea256f9a0f3fd6786d21c8b540030b73742971) , ROM_SKIP(7) ) // == st-11.10a
+ ROMX_LOAD( "sth_05.9a", 0x000003, 0x20000, CRC(ec9f8714) SHA1(8eb2b92ad576849b8049f9c90b850f74c2a5cba2) , ROM_SKIP(7) ) // == st-11.10a
+ ROMX_LOAD( "sth_24.5e", 0x000004, 0x20000, CRC(6356f4d2) SHA1(8d6786e07dba3e59a609c1a13be8685e4fdb8879) , ROM_SKIP(7) ) // == st-5.4a
+ ROMX_LOAD( "sth_17.5c", 0x000005, 0x20000, CRC(b4f73d86) SHA1(0ffbcc93ce7eadfd29255a15bc5cbd6e24f98759) , ROM_SKIP(7) ) // == st-5.4a
+ ROMX_LOAD( "sth_38.8h", 0x000006, 0x20000, CRC(ee5abfc2) SHA1(1c162bc09991f1082b4d9d22fbce13f2c08e0ceb) , ROM_SKIP(7) ) // == st-9.6a
+ ROMX_LOAD( "sth_32.8f", 0x000007, 0x20000, CRC(44a206a3) SHA1(67ec4b9cf3ff181c8c4c4751a1d2e8ee8e56278a) , ROM_SKIP(7) ) // == st-9.6a
+ ROMX_LOAD( "sth_10.5b", 0x100000, 0x20000, CRC(df3dd3bc) SHA1(648218f94ecda25873103ac4e2d7132c79f1c5b2) , ROM_SKIP(7) ) // == st-2.8a
+ ROMX_LOAD( "sth_02.5a", 0x100001, 0x20000, CRC(c75f9ea0) SHA1(e9268bfa6f5254935fda726ab4b5d9acb0f1942a) , ROM_SKIP(7) ) // == st-2.8a
+ ROMX_LOAD( "sth_14.10b", 0x100002, 0x20000, CRC(6c03e19d) SHA1(83f892df551ea79534288643b07613a3c595d526) , ROM_SKIP(7) ) // == st-11.10a
+ ROMX_LOAD( "sth_06.10a", 0x100003, 0x20000, CRC(d84f5478) SHA1(c3812056ff2563a43d11746ec8327700f370a053) , ROM_SKIP(7) ) // == st-11.10a
+ ROMX_LOAD( "sth_25.7e", 0x100004, 0x20000, CRC(921e506a) SHA1(fd2b5e2121c2adedcb0325b4159273506dab27e8) , ROM_SKIP(7) ) // == st-5.4a
+ ROMX_LOAD( "sth_18.7c", 0x100005, 0x20000, CRC(5b318956) SHA1(b1415472bf45787219b3b7680057910b210d57f5) , ROM_SKIP(7) ) // == st-5.4a
+ ROMX_LOAD( "sth_39.9h", 0x100006, 0x20000, CRC(9321d6aa) SHA1(acec3c880d29692cf010540c120b9092d7dd8ce9) , ROM_SKIP(7) ) // == st-9.6a
+ ROMX_LOAD( "sth_33.9f", 0x100007, 0x20000, CRC(b47ddfc7) SHA1(12388c37abdde85d63305f86244fc3c07f8b6b0c) , ROM_SKIP(7) ) // == st-9.6a
+ ROMX_LOAD( "sth_11.7b", 0x200000, 0x20000, CRC(2484f241) SHA1(28c48526ec2577119cc3207e92138749124b5959) , ROM_SKIP(7) ) // == st-1.7a
+ ROMX_LOAD( "sth_03.7a", 0x200001, 0x20000, CRC(aaa07245) SHA1(64a1b75b7613c1949eee6f9ba865dbdd7ec34413) , ROM_SKIP(7) ) // == st-1.7a
+ ROMX_LOAD( "sth_15.11b", 0x200002, 0x20000, CRC(e415d943) SHA1(12069d02d3a6afa9241222b48420daaf97874271) , ROM_SKIP(7) ) // == st-10.9a
+ ROMX_LOAD( "sth_07.11a", 0x200003, 0x20000, CRC(97d072d2) SHA1(fb0e10464a878ec6c0f3e6c6ddb0ea542bfb87a8) , ROM_SKIP(7) ) // == st-10.9a
+ ROMX_LOAD( "sth_26.8e", 0x200004, 0x20000, CRC(0ebfcb02) SHA1(a7238e1c76dbc2de1b7ae0d2cc532170cd1ab6c2) , ROM_SKIP(7) ) // == st-4.3a
+ ROMX_LOAD( "sth_19.8c", 0x200005, 0x20000, CRC(257ce683) SHA1(762f22b5ba24864d69dda303310a310d8dbfcc1c) , ROM_SKIP(7) ) // == st-4.3a
+ ROMX_LOAD( "sth_28.10e", 0x200006, 0x20000, CRC(98ac8cd1) SHA1(53dbe418d5cb7af5ef4be91e5e6bcd4474d2fdfe) , ROM_SKIP(7) ) // == st-8.5a
+ ROMX_LOAD( "sth_21.10c", 0x200007, 0x20000, CRC(538d9423) SHA1(418ea54d6582723d3e568364787862a6df2d1523) , ROM_SKIP(7) ) // == st-8.5a
+ ROMX_LOAD( "sth_12.8b", 0x300000, 0x20000, CRC(f670a477) SHA1(de5154ca093a9e5f9adb836d9a933d14e939180d) , ROM_SKIP(7) ) // == st-1.7a
+ ROMX_LOAD( "sth_04.8a", 0x300001, 0x20000, CRC(853d3e01) SHA1(422cc9f539e79c2a9b3bda47eb1fc714d79838d1) , ROM_SKIP(7) ) // == st-1.7a
+ ROMX_LOAD( "sth_16.12b", 0x300002, 0x20000, CRC(4092019f) SHA1(2173e72a8325d12da70666bdc279409b23fb7024) , ROM_SKIP(7) ) // == st-10.9a
+ ROMX_LOAD( "sth_08.12a", 0x300003, 0x20000, CRC(2ce9b4c7) SHA1(f267d323c9310433852e3308b36100440bee33d7) , ROM_SKIP(7) ) // == st-10.9a
+ ROMX_LOAD( "sth_27.9e", 0x300004, 0x20000, CRC(f82c88d9) SHA1(200bd025800eb20c4a15af17e7c3effbfa6f00fa) , ROM_SKIP(7) ) // == st-4.3a
+ ROMX_LOAD( "sth_20.9c", 0x300005, 0x20000, CRC(eb584dd4) SHA1(aeee39c0fc9f234249253b14de88a8da494b18d0) , ROM_SKIP(7) ) // == st-4.3a
+ ROMX_LOAD( "sth_29.11e", 0x300006, 0x20000, CRC(34ae2997) SHA1(9449eb9c85b7cb4a12aa06cb65a9d849a528e633) , ROM_SKIP(7) ) // == st-8.5a
+ ROMX_LOAD( "sth_22.11c", 0x300007, 0x20000, CRC(78dd9c48) SHA1(35fbf3ca21f56c9899283ba08c89c0faf7a8f717) , ROM_SKIP(7) ) // == st-8.5a
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sth_23.13c", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) ) // == 09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sth_30.12e", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) ) // == 18.11c
+ ROM_LOAD( "sth_31.13e", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) ) // == 19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "st22b.1a", 0x0000, 0x0117, CRC(68fecc55) SHA1(238f6781f972e834f2c6054cfe925ffec579dec3) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( striderjr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sthj_23.8f", 0x00000, 0x80000, CRC(046e7b12) SHA1(a5761f730f6844a7e93556a6aeae76240a99540c) )
+ ROM_LOAD16_WORD_SWAP( "sthj_22.7f", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) // == st-14.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sth_01.3a", 0x000000, 0x80000, CRC(4eee9aea) SHA1(5e619fd5f3f1181e32a8fd9dbb4661d74ff8a484) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-2.8a
+ ROMX_LOAD( "sth_02.4a", 0x000002, 0x80000, CRC(2d7f21e4) SHA1(593cec513de40ff802084d54313bb25a4561e25d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-11.10a
+ ROMX_LOAD( "sth_03.5a", 0x000004, 0x80000, CRC(7705aa46) SHA1(6cbfa30b2852fd117d117beefba434ce41d24c2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-5.4a
+ ROMX_LOAD( "sth_04.6a", 0x000006, 0x80000, CRC(5b18b722) SHA1(cf71c62348ca6b404279e87a6686cb3a842eb381) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-9.6a
+ ROMX_LOAD( "sth_05.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-1.7a
+ ROMX_LOAD( "sth_06.8a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-10.9a
+ ROMX_LOAD( "sth_07.9a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-4.3a
+ ROMX_LOAD( "sth_08.10a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == st-8.5a
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sth_09.12a", 0x00000, 0x08000, CRC(08d63519) SHA1(c120ecfe25c3c50bc51bc7d5a9ef1c8ca6591240) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sth_18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "sth_19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB. Redump needed */
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89624B-? */
+ROM_START( dynwar )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(f9ec6d68) SHA1(02912db2b48f77489b0b841c2a5414bfb49b93f4) )
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(e41fff2f) SHA1(a960c39c69f97b46d5efcbcd3e2bc652888094c4) )
+ ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(e3de76ff) SHA1(fdc552312e10c91dd00bfa72e4e686ac356d2244) )
+ ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(7a13cfbf) SHA1(c6b4d775a2e507fdefbb895cc75bb5bdb442218d) )
+ ROM_LOAD16_WORD_SWAP( "tkm-9.8h", 0x80000, 0x80000, CRC(93654bcf) SHA1(c72daeb2a98d350568555059a3225343c219a1d2) ) // in "32" socket
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tkm-5.7a", 0x000000, 0x80000, CRC(f64bb6a0) SHA1(8c0ae0305704ad876bb1938e46550c68b0de8e8e), ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "tkm-8.9a", 0x000002, 0x80000, CRC(21fe6274) SHA1(f92e509d88d5e264be9c7812966d64ad9ac518e7), ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "tkm-6.3a", 0x000004, 0x80000, CRC(0bf228cb) SHA1(e72957155cb459c4dee50df2e53256f271528964), ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "tkm-7.5a", 0x000006, 0x80000, CRC(1255dfb1) SHA1(c943e3c989d5b20fbe24e38e54ee8ca294b3d182), ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "tkm-1.8a", 0x200000, 0x80000, CRC(44f7661e) SHA1(f29b5ad0c5dfd91a56a4a1084ce578cfe496dd6f), ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "tkm-4.10a", 0x200002, 0x80000, CRC(a54c515d) SHA1(bfa457cef7e29ae56ee9b10f60e233d82b4efc61), ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+ ROMX_LOAD( "tkm-2.4a", 0x200004, 0x80000, CRC(ca5c687c) SHA1(de47cb5a071ffb3ff408f60d45b79345032232a7), ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "tkm-3.6a", 0x200006, 0x80000, CRC(f9fe6591) SHA1(260da5f9e305cccd621b8b5b2073c79e161ddeb0), ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "tke_17.12b", 0x00000, 0x08000, CRC(b3b79d4f) SHA1(2b960545741d3b9a53ffbf3ed83030392aa02698) ) // in "9" socket
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "tke_18.11c", 0x00000, 0x20000, CRC(ac6e307d) SHA1(b490ce625bb7ce0904b0fd121fbfbd5252790f7a) )
+ ROM_LOAD( "tke_19.12c", 0x20000, 0x20000, CRC(068741db) SHA1(ab48aff639a7ac218b7d5304145e10e92d61fd9f) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk24b1.1a", 0x0000, 0x0117, CRC(ae4a7645) SHA1(593478a177ea1794c9dfff07c6c6d8624a883eae) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal verification required
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( dynwara )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "tke_36.12f", 0x00000, 0x20000, CRC(895991d1) SHA1(56b105b85ccab1c49c89ae8d4aa55c9374077df0) )
+ ROM_LOAD16_BYTE( "tke_42.12h", 0x00001, 0x20000, CRC(c898d2e8) SHA1(c8b10685681bf155ea44e30f3cb0574df7d4f984) )
+ ROM_LOAD16_BYTE( "tke_37.13f", 0x40000, 0x20000, CRC(b228d58c) SHA1(99a1f42d930f788c4f9b410addc95173fda801a2) )
+ ROM_LOAD16_BYTE( "tke_43.13h", 0x40001, 0x20000, CRC(1a14375a) SHA1(2b1a62f7961dceabf98461266da37abfec13aaa9) )
+ ROM_LOAD16_BYTE( "34.10f", 0x80000, 0x20000, CRC(8f663d00) SHA1(77811783c87c7aee058b8533e34049a01047258a) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "40.10h", 0x80001, 0x20000, CRC(1586dbf3) SHA1(d9f03e001effdef021a9ceda512e73a24726fca1) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "35.11f", 0xc0000, 0x20000, CRC(9db93d7a) SHA1(f75e3fb5273baef0cd5d8eea26f07d5acaa743ca) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "41.11h", 0xc0001, 0x20000, CRC(1aae69a4) SHA1(56e4761818f7857bc7520f2b8de90eabd857c577) ) // == tkm-9.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "09.4b", 0x000000, 0x20000, CRC(c3e83c69) SHA1(bd361a39dc6428fea8f56ebbe5cdcc4bf63a51f0) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "01.4a", 0x000001, 0x20000, CRC(187b2886) SHA1(b16121f57926d9fd2c3bc82ae6babf6a2297f140) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "13.9b", 0x000002, 0x20000, CRC(0273d87d) SHA1(7803b04d72eedb4c8b39f63fea458cfef0034813) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "05.9a", 0x000003, 0x20000, CRC(339378b8) SHA1(c3dfe7039e4572b9ef56166346f3cbc6f6ab07c1) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "24.5e", 0x000004, 0x20000, CRC(c6909b6f) SHA1(2828bd6bdc8e3f87a4a37d4e20bdff86cb6850c9) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "17.5c", 0x000005, 0x20000, CRC(2e2f8320) SHA1(7bcb80447d9ce7cc9a38e2506196acd6bf50b49f) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "38.8h", 0x000006, 0x20000, CRC(cd7923ed) SHA1(29187b99847a4b56f2f1763d086b8e7dc5cebed7) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "32.8f", 0x000007, 0x20000, CRC(21a0a453) SHA1(ace38c5943f9f744212cfdb7caa2caa43312e82c) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "10.5b", 0x100000, 0x20000, CRC(ff28f8d0) SHA1(c8c4851816f17a4a0494164f5e8cc910f16669e8) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "02.5a", 0x100001, 0x20000, CRC(cc83c02f) SHA1(915e9d7acec1ba7a2035ae140f576839eba8694f) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "14.10b", 0x100002, 0x20000, CRC(58d9b32f) SHA1(c13a12afcb83159b284b95053951dfa1841bb612) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "06.10a", 0x100003, 0x20000, CRC(6f9edd75) SHA1(e8d43c0ec2165e88aefbb5c92048fbcd06fe578b) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "25.7e", 0x100004, 0x20000, CRC(152ea74a) SHA1(c0c56b1bdfa0d7fdea040dbcc6ff871e5957a5b6) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "18.7c", 0x100005, 0x20000, CRC(1833f932) SHA1(81f94d26bdb6758736ca02d7b1772801be4da181) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "39.9h", 0x100006, 0x20000, CRC(bc09b360) SHA1(de2c9a42490db79c8e5fe57b9107f1adbe5dd241) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "33.9f", 0x100007, 0x20000, CRC(89de1533) SHA1(e48312e37c0f98faeec91546acde5daf0da8f6b3) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "11.7b", 0x200000, 0x20000, CRC(29eaf490) SHA1(42fcb67c7014e0ad62cde9e77c79e61268647528) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "03.7a", 0x200001, 0x20000, CRC(7bf51337) SHA1(c21938029641ebcbc484680cf8a57186cdde220f) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "15.11b", 0x200002, 0x20000, CRC(d36cdb91) SHA1(66ab873ce285e857f30294dd1c9b1dda0c6c6b76) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "07.11a", 0x200003, 0x20000, CRC(e04af054) SHA1(f227b8a0a3d8f41e1922d184eaec7a1243c7c3af) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "26.8e", 0x200004, 0x20000, CRC(07fc714b) SHA1(eda97a3c5596ebdfa61bdd01d39647c89b9a2f13) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "19.8c", 0x200005, 0x20000, CRC(7114e5c6) SHA1(2f2925b942af50781857f4fe74e9a58f2cf7b883) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "28.10e", 0x200006, 0x20000, CRC(af62bf07) SHA1(a6e0f598de1fa8a4960e89d655b7514572ed6310) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "21.10c", 0x200007, 0x20000, CRC(523f462a) SHA1(b0fc9e29d6ca44aafb20a62355bde9f4b4cf1e43) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "12.8b", 0x300000, 0x20000, CRC(38652339) SHA1(930a035bbe34c81c26d774d2ab45f53a3a9205fb) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "04.8a", 0x300001, 0x20000, CRC(4951bc0f) SHA1(07f424c147d787321b668d787216733c35e2cff9) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "16.12b", 0x300002, 0x20000, CRC(381608ae) SHA1(666e15e61c7c59df5a97bdc2d77db611d60b3ca8) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "08.12a", 0x300003, 0x20000, CRC(b475d4e9) SHA1(dc5d223bc2a27904e6e38b68507d2e87fbbde158) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "27.9e", 0x300004, 0x20000, CRC(a27e81fa) SHA1(b25854d4a7e52d500c19445badb4cfe745d88d23) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "20.9c", 0x300005, 0x20000, CRC(002796dc) SHA1(2dba0434916dd82c59a66e2f3ce8d3165713c308) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "29.11e", 0x300006, 0x20000, CRC(6b41f82d) SHA1(111af606d8107d377e3af618584a75ed6cfc9bbd) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "22.11c", 0x300007, 0x20000, CRC(52145369) SHA1(bd422f0c51cdd62b69229f926569ad05d430bd57) , ROM_SKIP(7) ) // == tkm-3.6a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "23.13c", 0x00000, 0x08000, CRC(b3b79d4f) SHA1(2b960545741d3b9a53ffbf3ed83030392aa02698) ) // == tke_17.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "tke_30.12e", 0x00000, 0x20000, CRC(ac6e307d) SHA1(b490ce625bb7ce0904b0fd121fbfbd5252790f7a) ) // == tke_18.11c
+ ROM_LOAD( "tke_31.13e", 0x20000, 0x20000, CRC(068741db) SHA1(ab48aff639a7ac218b7d5304145e10e92d61fd9f) ) // == tke_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk22b.1a", 0x0000, 0x0117, CRC(1a1ab6d7) SHA1(eacd3a21a09683e1d8ad36215c1f8ea96a1f7c12) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( dynwarj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "36.12f", 0x00000, 0x20000, CRC(1a516657) SHA1(f5c7c3bfd482eb59221cfd3eec4d47e717b04efa) )
+ ROM_LOAD16_BYTE( "42.12h", 0x00001, 0x20000, CRC(12a290a0) SHA1(29fd3f77c497ef8db48121301beab2862ca380b4) )
+ ROM_LOAD16_BYTE( "37.13f", 0x40000, 0x20000, CRC(932fc943) SHA1(1bd1c696072e61db791c075fae8936dece73d1d8) )
+ ROM_LOAD16_BYTE( "43.13h", 0x40001, 0x20000, CRC(872ad76d) SHA1(77cfb380dd358eb9e65894a026e0718918c5b68f) )
+ ROM_LOAD16_BYTE( "34.10f", 0x80000, 0x20000, CRC(8f663d00) SHA1(77811783c87c7aee058b8533e34049a01047258a) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "40.10h", 0x80001, 0x20000, CRC(1586dbf3) SHA1(d9f03e001effdef021a9ceda512e73a24726fca1) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "35.11f", 0xc0000, 0x20000, CRC(9db93d7a) SHA1(f75e3fb5273baef0cd5d8eea26f07d5acaa743ca) ) // == tkm-9.8h
+ ROM_LOAD16_BYTE( "41.11h", 0xc0001, 0x20000, CRC(1aae69a4) SHA1(56e4761818f7857bc7520f2b8de90eabd857c577) ) // == tkm-9.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "09.4b", 0x000000, 0x20000, CRC(c3e83c69) SHA1(bd361a39dc6428fea8f56ebbe5cdcc4bf63a51f0) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "01.4a", 0x000001, 0x20000, CRC(187b2886) SHA1(b16121f57926d9fd2c3bc82ae6babf6a2297f140) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "13.9b", 0x000002, 0x20000, CRC(0273d87d) SHA1(7803b04d72eedb4c8b39f63fea458cfef0034813) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "05.9a", 0x000003, 0x20000, CRC(339378b8) SHA1(c3dfe7039e4572b9ef56166346f3cbc6f6ab07c1) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "24.5e", 0x000004, 0x20000, CRC(c6909b6f) SHA1(2828bd6bdc8e3f87a4a37d4e20bdff86cb6850c9) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "17.5c", 0x000005, 0x20000, CRC(2e2f8320) SHA1(7bcb80447d9ce7cc9a38e2506196acd6bf50b49f) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "38.8h", 0x000006, 0x20000, CRC(cd7923ed) SHA1(29187b99847a4b56f2f1763d086b8e7dc5cebed7) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "32.8f", 0x000007, 0x20000, CRC(21a0a453) SHA1(ace38c5943f9f744212cfdb7caa2caa43312e82c) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "10.5b", 0x100000, 0x20000, CRC(ff28f8d0) SHA1(c8c4851816f17a4a0494164f5e8cc910f16669e8) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "02.5a", 0x100001, 0x20000, CRC(cc83c02f) SHA1(915e9d7acec1ba7a2035ae140f576839eba8694f) , ROM_SKIP(7) ) // == tkm-5.7a
+ ROMX_LOAD( "14.10b", 0x100002, 0x20000, CRC(18fb232c) SHA1(c690ca668a56c756c04ef5db4900eb3fd34897e7) , ROM_SKIP(7) ) /* 1 byte different from dynwara, pcb verified */
+ ROMX_LOAD( "06.10a", 0x100003, 0x20000, CRC(6f9edd75) SHA1(e8d43c0ec2165e88aefbb5c92048fbcd06fe578b) , ROM_SKIP(7) ) // == tkm-8.9a
+ ROMX_LOAD( "25.7e", 0x100004, 0x20000, CRC(152ea74a) SHA1(c0c56b1bdfa0d7fdea040dbcc6ff871e5957a5b6) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "18.7c", 0x100005, 0x20000, CRC(1833f932) SHA1(81f94d26bdb6758736ca02d7b1772801be4da181) , ROM_SKIP(7) ) // == tkm-6.3a
+ ROMX_LOAD( "39.9h", 0x100006, 0x20000, CRC(bc09b360) SHA1(de2c9a42490db79c8e5fe57b9107f1adbe5dd241) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "33.9f", 0x100007, 0x20000, CRC(89de1533) SHA1(e48312e37c0f98faeec91546acde5daf0da8f6b3) , ROM_SKIP(7) ) // == tkm-7.5a
+ ROMX_LOAD( "11.7b", 0x200000, 0x20000, CRC(29eaf490) SHA1(42fcb67c7014e0ad62cde9e77c79e61268647528) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "03.7a", 0x200001, 0x20000, CRC(7bf51337) SHA1(c21938029641ebcbc484680cf8a57186cdde220f) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "15.11b", 0x200002, 0x20000, CRC(d36cdb91) SHA1(66ab873ce285e857f30294dd1c9b1dda0c6c6b76) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "07.11a", 0x200003, 0x20000, CRC(e04af054) SHA1(f227b8a0a3d8f41e1922d184eaec7a1243c7c3af) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "26.8e", 0x200004, 0x20000, CRC(07fc714b) SHA1(eda97a3c5596ebdfa61bdd01d39647c89b9a2f13) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "19.8c", 0x200005, 0x20000, CRC(7114e5c6) SHA1(2f2925b942af50781857f4fe74e9a58f2cf7b883) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "28.10e", 0x200006, 0x20000, CRC(af62bf07) SHA1(a6e0f598de1fa8a4960e89d655b7514572ed6310) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "21.10c", 0x200007, 0x20000, CRC(523f462a) SHA1(b0fc9e29d6ca44aafb20a62355bde9f4b4cf1e43) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "12.8b", 0x300000, 0x20000, CRC(38652339) SHA1(930a035bbe34c81c26d774d2ab45f53a3a9205fb) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "04.8a", 0x300001, 0x20000, CRC(4951bc0f) SHA1(07f424c147d787321b668d787216733c35e2cff9) , ROM_SKIP(7) ) // == tkm-1.8a
+ ROMX_LOAD( "16.12b", 0x300002, 0x20000, CRC(381608ae) SHA1(666e15e61c7c59df5a97bdc2d77db611d60b3ca8) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "08.12a", 0x300003, 0x20000, CRC(b475d4e9) SHA1(dc5d223bc2a27904e6e38b68507d2e87fbbde158) , ROM_SKIP(7) ) // == tkm-4.10a
+ ROMX_LOAD( "27.9e", 0x300004, 0x20000, CRC(a27e81fa) SHA1(b25854d4a7e52d500c19445badb4cfe745d88d23) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "20.9c", 0x300005, 0x20000, CRC(002796dc) SHA1(2dba0434916dd82c59a66e2f3ce8d3165713c308) , ROM_SKIP(7) ) // == tkm-2.4a
+ ROMX_LOAD( "29.11e", 0x300006, 0x20000, CRC(6b41f82d) SHA1(111af606d8107d377e3af618584a75ed6cfc9bbd) , ROM_SKIP(7) ) // == tkm-3.6a
+ ROMX_LOAD( "22.11c", 0x300007, 0x20000, CRC(52145369) SHA1(bd422f0c51cdd62b69229f926569ad05d430bd57) , ROM_SKIP(7) ) // == tkm-3.6a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "23.13c", 0x00000, 0x08000, CRC(b3b79d4f) SHA1(2b960545741d3b9a53ffbf3ed83030392aa02698) ) // == tke_17.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "30.12e", 0x00000, 0x20000, CRC(7e5f6cb4) SHA1(c7b6b7d6dfe5f9f0e1521e7ce990229f480cf68d) )
+ ROM_LOAD( "31.13e", 0x20000, 0x20000, CRC(4a30c737) SHA1(426eb90f2edf73eb468c94b4a094da3d46acbab2) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk22b.1a", 0x0000, 0x0117, CRC(1a1ab6d7) SHA1(eacd3a21a09683e1d8ad36215c1f8ea96a1f7c12) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( dynwarjr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk1j_23.8f", 0x00000, 0x80000, CRC(088a3009) SHA1(d4c8273d19291d278d2ff895712dfbd8dfda6c84) )
+ ROM_LOAD16_WORD_SWAP( "tk1j_22.7f", 0x80000, 0x80000, CRC(93654bcf) SHA1(c72daeb2a98d350568555059a3225343c219a1d2) ) // == tkm-9.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk1_01.3a", 0x000000, 0x80000, CRC(f64bb6a0) SHA1(8c0ae0305704ad876bb1938e46550c68b0de8e8e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-5.7a
+ ROMX_LOAD( "tk1_02.4a", 0x000002, 0x80000, CRC(21fe6274) SHA1(f92e509d88d5e264be9c7812966d64ad9ac518e7) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-8.9a
+ ROMX_LOAD( "tk1_03.5a", 0x000004, 0x80000, CRC(0bf228cb) SHA1(e72957155cb459c4dee50df2e53256f271528964) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-6.3a
+ ROMX_LOAD( "tk1_04.6a", 0x000006, 0x80000, CRC(1255dfb1) SHA1(c943e3c989d5b20fbe24e38e54ee8ca294b3d182) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-7.5a
+ ROMX_LOAD( "tk1_05.7a", 0x200000, 0x80000, CRC(44f7661e) SHA1(f29b5ad0c5dfd91a56a4a1084ce578cfe496dd6f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-1.8a
+ ROMX_LOAD( "tk1_06.8a", 0x200002, 0x80000, CRC(a54c515d) SHA1(bfa457cef7e29ae56ee9b10f60e233d82b4efc61) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-4.10a
+ ROMX_LOAD( "tk1_07.9a", 0x200004, 0x80000, CRC(ca5c687c) SHA1(de47cb5a071ffb3ff408f60d45b79345032232a7) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-2.4a
+ ROMX_LOAD( "tk1_08.10a", 0x200006, 0x80000, CRC(f9fe6591) SHA1(260da5f9e305cccd621b8b5b2073c79e161ddeb0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tkm-3.6a
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "tk1_09.12a", 0x00000, 0x08000, CRC(db77d899) SHA1(314a8134ed15f603f1c7894fd50b14aef5c9fc7a) )
+ ROM_CONTINUE( 0x10000, 0x18000 ) // second half of ROM is empty, not mapped in memory
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "tk1_18.11c", 0x00000, 0x20000, CRC(7e5f6cb4) SHA1(c7b6b7d6dfe5f9f0e1521e7ce990229f480cf68d) )
+ ROM_LOAD( "tk1_19.12c", 0x20000, 0x20000, CRC(4a30c737) SHA1(426eb90f2edf73eb468c94b4a094da3d46acbab2) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk163b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( willow )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "wle_30.11f", 0x00000, 0x20000, CRC(15372aa2) SHA1(ba8e1984180b0438255dfc68dc4eb560f3ecbe56) )
+ ROM_LOAD16_BYTE( "wle_35.11h", 0x00001, 0x20000, CRC(2e64623b) SHA1(473f6fd10b2456553f1cbf92fd9a61ce94b1c59f) )
+ ROM_LOAD16_BYTE( "wlu_31.12f", 0x40000, 0x20000, CRC(0eb48a83) SHA1(28c40c4b5d767f88922cd899e948abf11a85a864) )
+ ROM_LOAD16_BYTE( "wlu_36.12h", 0x40001, 0x20000, CRC(36100209) SHA1(63c9338e71dba8b52daffba50b4bca31aaa10d9e) )
+ ROM_LOAD16_WORD_SWAP( "wlm-32.8h", 0x80000, 0x80000, CRC(dfd9f643) SHA1(9c760c30af593a87e7fd39fb213a4c73c68ca440) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "wlm-7.7a", 0x000000, 0x80000, CRC(afa74b73) SHA1(09081926260c76986a13ac5351dddd2ea11d7a10) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "wlm-5.9a", 0x000002, 0x80000, CRC(12a0dc0b) SHA1(fea235ce9489f04919daf52f4d3f3bac9b558316) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "wlm-3.3a", 0x000004, 0x80000, CRC(c6f2abce) SHA1(ff5fcfe417c43b4747bbe12db6052fdb60f5f0e4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "wlm-1.5a", 0x000006, 0x80000, CRC(4aa4c6d3) SHA1(7dd6f18f6126c380821a2ca8955439fd6864f4c6) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "wl_24.7d", 0x200000, 0x20000, CRC(6f0adee5) SHA1(07b18e51b376001f25173b78e0e816f252400210) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_14.7c", 0x200001, 0x20000, CRC(9cf3027d) SHA1(1e8eb20d51a54f6f756c0ab9395ac38b96e67fb2) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_26.9d", 0x200002, 0x20000, CRC(f09c8ecf) SHA1(b39f83e80af010d6481693d9ec8b1d7e258b531d) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_16.9c", 0x200003, 0x20000, CRC(e35407aa) SHA1(7ddae9cef96839da72488c1fe73268c50e0262ff) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_20.3d", 0x200004, 0x20000, CRC(84992350) SHA1(f0ebd810ce099337cda94222dccce8ab9b3c3281) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_10.3c", 0x200005, 0x20000, CRC(b87b5a36) SHA1(25fb8f9698142473233ee509d4146089920e94e1) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_22.5d", 0x200006, 0x20000, CRC(fd3f89f0) SHA1(51ff95cff56ac78682ea56401b35a0aa63cef8cb) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_12.5c", 0x200007, 0x20000, CRC(7da49d69) SHA1(b0ae7ac4f858ee8d72e6877c4275da7a631e2e4c) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "wl_09.12b", 0x00000, 0x08000, CRC(f6b3d060) SHA1(0ed2e2f64ba53ba2c371b66ab1e52e40b16d8baf) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "wl_18.11c", 0x00000, 0x20000, CRC(bde23d4d) SHA1(d1fee2f99c858dfb07edcd600da491c7b656afe0) )
+ ROM_LOAD( "wl_19.12c", 0x20000, 0x20000, CRC(683898f5) SHA1(316a77b663d78c8b9ff6d85756cb05aaaeef4003) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "wl24b.1a", 0x0000, 0x0117, CRC(7101cdf1) SHA1(c848f109d09641b3159dbbb2d2ee49cf30bc9e9c) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( willowu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "wlu_30.11f", 0x00000, 0x20000, CRC(d604dbb1) SHA1(b5d78871011ff11a67f1a0cad147cd4de8d67f35) )
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(7a791e77) SHA1(fe1429588b7eceab1d369abe03f2cad8de727f71) )
+ ROM_LOAD16_BYTE( "wlu_31.12f", 0x40000, 0x20000, CRC(0eb48a83) SHA1(28c40c4b5d767f88922cd899e948abf11a85a864) )
+ ROM_LOAD16_BYTE( "wlu_36.12h", 0x40001, 0x20000, CRC(36100209) SHA1(63c9338e71dba8b52daffba50b4bca31aaa10d9e) ) /* seen the same pcb with WL_36.12H */
+ ROM_LOAD16_WORD_SWAP( "wlm-32.8h", 0x80000, 0x80000, CRC(dfd9f643) SHA1(9c760c30af593a87e7fd39fb213a4c73c68ca440) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "wlm-7.7a", 0x000000, 0x80000, CRC(afa74b73) SHA1(09081926260c76986a13ac5351dddd2ea11d7a10) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "wlm-5.9a", 0x000002, 0x80000, CRC(12a0dc0b) SHA1(fea235ce9489f04919daf52f4d3f3bac9b558316) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "wlm-3.3a", 0x000004, 0x80000, CRC(c6f2abce) SHA1(ff5fcfe417c43b4747bbe12db6052fdb60f5f0e4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "wlm-1.5a", 0x000006, 0x80000, CRC(4aa4c6d3) SHA1(7dd6f18f6126c380821a2ca8955439fd6864f4c6) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "wl_24.7d", 0x200000, 0x20000, CRC(6f0adee5) SHA1(07b18e51b376001f25173b78e0e816f252400210) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_14.7c", 0x200001, 0x20000, CRC(9cf3027d) SHA1(1e8eb20d51a54f6f756c0ab9395ac38b96e67fb2) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_26.9d", 0x200002, 0x20000, CRC(f09c8ecf) SHA1(b39f83e80af010d6481693d9ec8b1d7e258b531d) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_16.9c", 0x200003, 0x20000, CRC(e35407aa) SHA1(7ddae9cef96839da72488c1fe73268c50e0262ff) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_20.3d", 0x200004, 0x20000, CRC(84992350) SHA1(f0ebd810ce099337cda94222dccce8ab9b3c3281) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_10.3c", 0x200005, 0x20000, CRC(b87b5a36) SHA1(25fb8f9698142473233ee509d4146089920e94e1) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_22.5d", 0x200006, 0x20000, CRC(fd3f89f0) SHA1(51ff95cff56ac78682ea56401b35a0aa63cef8cb) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_12.5c", 0x200007, 0x20000, CRC(7da49d69) SHA1(b0ae7ac4f858ee8d72e6877c4275da7a631e2e4c) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "wl_09.12b", 0x00000, 0x08000, CRC(f6b3d060) SHA1(0ed2e2f64ba53ba2c371b66ab1e52e40b16d8baf) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "wl_18.11c", 0x00000, 0x20000, CRC(bde23d4d) SHA1(d1fee2f99c858dfb07edcd600da491c7b656afe0) )
+ ROM_LOAD( "wl_19.12c", 0x20000, 0x20000, CRC(683898f5) SHA1(316a77b663d78c8b9ff6d85756cb05aaaeef4003) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "wl24b.1a", 0x0000, 0x0117, CRC(7101cdf1) SHA1(c848f109d09641b3159dbbb2d2ee49cf30bc9e9c) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89624B-3 */
+/* Note that this set comes from a pcb running on an original Capcom USA Willow arcade cabinet, so even if there is
+ the Japan "warning" it's confirmed to be a genuine USA set and almost certainly the first USA release. Then Capcom
+ removed the incorrect "warning" releasing a new proper set of Willow (USA), as documented above. */
+ROM_START( willowuo )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "wlu_30.11f", 0x00000, 0x20000, CRC(d604dbb1) SHA1(b5d78871011ff11a67f1a0cad147cd4de8d67f35) )
+ ROM_LOAD16_BYTE( "wlu_35.11h", 0x00001, 0x20000, CRC(daee72fe) SHA1(2ec62f44394fac2887821881f56b6f24d05234b3) )
+ ROM_LOAD16_BYTE( "wlu_31.12f", 0x40000, 0x20000, CRC(0eb48a83) SHA1(28c40c4b5d767f88922cd899e948abf11a85a864) )
+ ROM_LOAD16_BYTE( "wlu_36.12h", 0x40001, 0x20000, CRC(36100209) SHA1(63c9338e71dba8b52daffba50b4bca31aaa10d9e) )
+ ROM_LOAD16_WORD_SWAP( "wlm-32.8h", 0x80000, 0x80000, CRC(dfd9f643) SHA1(9c760c30af593a87e7fd39fb213a4c73c68ca440) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "wlm-7.7a", 0x000000, 0x80000, CRC(afa74b73) SHA1(09081926260c76986a13ac5351dddd2ea11d7a10) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "wlm-5.9a", 0x000002, 0x80000, CRC(12a0dc0b) SHA1(fea235ce9489f04919daf52f4d3f3bac9b558316) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "wlm-3.3a", 0x000004, 0x80000, CRC(c6f2abce) SHA1(ff5fcfe417c43b4747bbe12db6052fdb60f5f0e4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "wlm-1.5a", 0x000006, 0x80000, CRC(4aa4c6d3) SHA1(7dd6f18f6126c380821a2ca8955439fd6864f4c6) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "wl_24.7d", 0x200000, 0x20000, CRC(6f0adee5) SHA1(07b18e51b376001f25173b78e0e816f252400210) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_14.7c", 0x200001, 0x20000, CRC(9cf3027d) SHA1(1e8eb20d51a54f6f756c0ab9395ac38b96e67fb2) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_26.9d", 0x200002, 0x20000, CRC(f09c8ecf) SHA1(b39f83e80af010d6481693d9ec8b1d7e258b531d) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_16.9c", 0x200003, 0x20000, CRC(e35407aa) SHA1(7ddae9cef96839da72488c1fe73268c50e0262ff) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_20.3d", 0x200004, 0x20000, CRC(84992350) SHA1(f0ebd810ce099337cda94222dccce8ab9b3c3281) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_10.3c", 0x200005, 0x20000, CRC(b87b5a36) SHA1(25fb8f9698142473233ee509d4146089920e94e1) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_22.5d", 0x200006, 0x20000, CRC(fd3f89f0) SHA1(51ff95cff56ac78682ea56401b35a0aa63cef8cb) , ROM_SKIP(7) )
+ ROMX_LOAD( "wl_12.5c", 0x200007, 0x20000, CRC(7da49d69) SHA1(b0ae7ac4f858ee8d72e6877c4275da7a631e2e4c) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "wl_09.12b", 0x00000, 0x08000, CRC(f6b3d060) SHA1(0ed2e2f64ba53ba2c371b66ab1e52e40b16d8baf) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "wl_18.11c", 0x00000, 0x20000, CRC(bde23d4d) SHA1(d1fee2f99c858dfb07edcd600da491c7b656afe0) )
+ ROM_LOAD( "wl_19.12c", 0x20000, 0x20000, CRC(683898f5) SHA1(316a77b663d78c8b9ff6d85756cb05aaaeef4003) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "wl24b.1a", 0x0000, 0x0117, CRC(7101cdf1) SHA1(c848f109d09641b3159dbbb2d2ee49cf30bc9e9c) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( willowj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "wl_36.12f", 0x00000, 0x20000, CRC(2b0d7cbc) SHA1(58172b4fdf856efa8d77abbde76738de2424f712) )
+ ROM_LOAD16_BYTE( "wl_42.12h", 0x00001, 0x20000, CRC(1ac39615) SHA1(c9fa6d20418b9bdc5a08df1fb86368b40709280a) )
+ ROM_LOAD16_BYTE( "wl_37.13f", 0x40000, 0x20000, CRC(30a717fa) SHA1(cb815e9ee2691761925898e3932b502f8f399cb4) )
+ ROM_LOAD16_BYTE( "wl_43.13h", 0x40001, 0x20000, CRC(d0dddc9e) SHA1(1176b9a43b3355a5ba44e59abde01ee7eaa89c25) )
+ ROM_LOAD16_BYTE( "wl_34.10f", 0x80000, 0x20000, CRC(23a84f7a) SHA1(f7667ffc85e2dfb78f5ed8ea54b6223e7375433a) ) // == wlm-32.8h
+ ROM_LOAD16_BYTE( "wl_40.10h", 0x80001, 0x20000, CRC(c7a0ed21) SHA1(190aec48a8f528652b434425f64ea2e52029ad3d) ) // == wlm-32.8h
+ ROM_LOAD16_BYTE( "wl_35.11f", 0xc0000, 0x20000, CRC(5eff7951) SHA1(f336bfd07f3083e3b3e72c61d03abb52d443204d) ) // == wlm-32.8h
+ ROM_LOAD16_BYTE( "wl_41.11h", 0xc0001, 0x20000, CRC(8d6477a3) SHA1(1bdb98f89ec8c2dcd47ab90bdd1be862ea59a16b) ) // == wlm-32.8h
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "wl_09.4b", 0x000000, 0x20000, CRC(05aa71b4) SHA1(791f845928ff164eace07cfcc35d0bd9d7cbb2d0) , ROM_SKIP(7) ) // == wlm-7.7a
+ ROMX_LOAD( "wl_01.4a", 0x000001, 0x20000, CRC(08c2df12) SHA1(269ca05ff6f9928e3b46f43b262c03ac3dd768b8) , ROM_SKIP(7) ) // == wlm-7.7a
+ ROMX_LOAD( "wl_13.9b", 0x000002, 0x20000, CRC(1f7c87cd) SHA1(6817c8b42ef4e8183fc2fbd2765e49ac955cca80) , ROM_SKIP(7) ) // == wlm-5.9a
+ ROMX_LOAD( "wl_05.9a", 0x000003, 0x20000, CRC(f5254bf2) SHA1(a53973b98b8e8903c731eb2514cb9ce4060d5164) , ROM_SKIP(7) ) // == wlm-5.9a
+ ROMX_LOAD( "wl_24.5e", 0x000004, 0x20000, CRC(d9d73ba1) SHA1(5f7b5e7e6fe64106cd96a968a54556e4f5ad9387) , ROM_SKIP(7) ) // == wlm-3.3a
+ ROMX_LOAD( "wl_17.5c", 0x000005, 0x20000, CRC(a652f30c) SHA1(b150d8978d37907c6d17042476c4608c76c4ea3f) , ROM_SKIP(7) ) // == wlm-3.3a
+ ROMX_LOAD( "wl_38.8h", 0x000006, 0x20000, CRC(f6f9111b) SHA1(bd44d1b6084fe2c09cdd91b5ad6eff7a84f3e601) , ROM_SKIP(7) ) // == wlm-1.5a
+ ROMX_LOAD( "wl_32.8f", 0x000007, 0x20000, CRC(10f64027) SHA1(abf387ba7d8f0530a562a984c08345a149cfa226) , ROM_SKIP(7) ) // == wlm-1.5a
+ ROMX_LOAD( "wl_10.5b", 0x100000, 0x20000, CRC(dbba0a3f) SHA1(38c0cdd87e6631721f35a0b85fd5165940454603) , ROM_SKIP(7) ) // == wlm-7.7a
+ ROMX_LOAD( "wl_02.5a", 0x100001, 0x20000, CRC(86fba7a5) SHA1(9389ad4e0968b3edd4baeac8b29637618f49dbfb) , ROM_SKIP(7) ) // == wlm-7.7a
+ ROMX_LOAD( "wl_14.10b", 0x100002, 0x20000, CRC(7d5798b2) SHA1(7dfcc172e5df0e8f4b9188381463f9eca00945dc) , ROM_SKIP(7) ) // == wlm-5.9a
+ ROMX_LOAD( "wl_06.10a", 0x100003, 0x20000, CRC(1f052948) SHA1(ca3a6be94ae50fa50604ee52704792b22cbbc083) , ROM_SKIP(7) ) // == wlm-5.9a
+ ROMX_LOAD( "wl_25.7e", 0x100004, 0x20000, CRC(857d17d2) SHA1(e6b383df9571df6743a7aa3087f0632dc4e6143b) , ROM_SKIP(7) ) // == wlm-3.3a
+ ROMX_LOAD( "wl_18.7c", 0x100005, 0x20000, CRC(316c7fbc) SHA1(631682c7f14fa73f5f5a4fb747bfb45d9613e507) , ROM_SKIP(7) ) // == wlm-3.3a
+ ROMX_LOAD( "wl_39.9h", 0x100006, 0x20000, CRC(e6fce9b0) SHA1(46d50cf32c3518ab3dc717553c5375f3cb022cde) , ROM_SKIP(7) ) // == wlm-1.5a
+ ROMX_LOAD( "wl_33.9f", 0x100007, 0x20000, CRC(a15d5517) SHA1(03a30e216f8240383d5fa9736b4fe5119d231685) , ROM_SKIP(7) ) // == wlm-1.5a
+ ROMX_LOAD( "wl_11.7b", 0x200000, 0x20000, CRC(6f0adee5) SHA1(07b18e51b376001f25173b78e0e816f252400210) , ROM_SKIP(7) ) // == wl_24.7d
+ ROMX_LOAD( "wl_03.7a", 0x200001, 0x20000, CRC(9cf3027d) SHA1(1e8eb20d51a54f6f756c0ab9395ac38b96e67fb2) , ROM_SKIP(7) ) // == wl_14.7c
+ ROMX_LOAD( "wl_15.11b", 0x200002, 0x20000, CRC(f09c8ecf) SHA1(b39f83e80af010d6481693d9ec8b1d7e258b531d) , ROM_SKIP(7) ) // == wl_26.9d
+ ROMX_LOAD( "wl_07.11a", 0x200003, 0x20000, CRC(e35407aa) SHA1(7ddae9cef96839da72488c1fe73268c50e0262ff) , ROM_SKIP(7) ) // == wl_16.9c
+ ROMX_LOAD( "wl_26.8e", 0x200004, 0x20000, CRC(84992350) SHA1(f0ebd810ce099337cda94222dccce8ab9b3c3281) , ROM_SKIP(7) ) // == wl_20.3d
+ ROMX_LOAD( "wl_19.8c", 0x200005, 0x20000, CRC(b87b5a36) SHA1(25fb8f9698142473233ee509d4146089920e94e1) , ROM_SKIP(7) ) // == wl_10.3c
+ ROMX_LOAD( "wl_28.10e", 0x200006, 0x20000, CRC(fd3f89f0) SHA1(51ff95cff56ac78682ea56401b35a0aa63cef8cb) , ROM_SKIP(7) ) // == wl_22.5d
+ ROMX_LOAD( "wl_21.10c", 0x200007, 0x20000, CRC(7da49d69) SHA1(b0ae7ac4f858ee8d72e6877c4275da7a631e2e4c) , ROM_SKIP(7) ) // == wl_12.5c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "wl_23.13c", 0x00000, 0x08000, CRC(f6b3d060) SHA1(0ed2e2f64ba53ba2c371b66ab1e52e40b16d8baf) ) // == wl_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "wl_30.12e", 0x00000, 0x20000, CRC(bde23d4d) SHA1(d1fee2f99c858dfb07edcd600da491c7b656afe0) ) // == wl_18.11c
+ ROM_LOAD( "wl_31.13e", 0x20000, 0x20000, CRC(683898f5) SHA1(316a77b663d78c8b9ff6d85756cb05aaaeef4003) ) // == wl_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "wl22b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89624B-2 */
+ROM_START( unsquad )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "aru_30.11f", 0x00000, 0x20000, CRC(24d8f88d) SHA1(9c39aa1140e92307d6d9c0ca198003282bf78c78) )
+ ROM_LOAD16_BYTE( "aru_35.11h", 0x00001, 0x20000, CRC(8b954b59) SHA1(33114f1417d48f60c6da3e14a094be7c0f0fd979) )
+ ROM_LOAD16_BYTE( "aru_31.12f", 0x40000, 0x20000, CRC(33e9694b) SHA1(90db3052ac2ff859ede8473dd13e0f5be148590c) )
+ ROM_LOAD16_BYTE( "aru_36.12h", 0x40001, 0x20000, CRC(7cc8fb9e) SHA1(f70118d1a368fd4795d9953c55d283305d1f9630) )
+ ROM_LOAD16_WORD_SWAP( "ar-32m.8h", 0x80000, 0x80000, CRC(ae1d7fb0) SHA1(bb51e77574db5e2d807c4ca8e85a5d9661f5d3b3) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ar-5m.7a", 0x000000, 0x80000, CRC(bf4575d8) SHA1(1b268e1698be8ff9c16f80f7b9081b6be9f72601) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ar-7m.9a", 0x000002, 0x80000, CRC(a02945f4) SHA1(ff35cdbd6c1e43b16a906f68e416559cb3d5746b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ar-1m.3a", 0x000004, 0x80000, CRC(5965ca8d) SHA1(49abf80fc012a7f73306139a2871aeac7fd6a3d0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ar-3m.5a", 0x000006, 0x80000, CRC(ac6db17d) SHA1(78eef9ba6a392859f70467f6d7cb5aa91964abed) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ar_09.12b", 0x00000, 0x08000, CRC(f3dd1367) SHA1(09eef72e862ac6b1a5cce5a45938b45bf4e456ad) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "aru_18.11c", 0x00000, 0x20000, CRC(584b43a9) SHA1(7820815c8c67d484baf2fdad7e55d8c14b98b860) )
+ /* 20000-3ffff empty */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ar24b.1a", 0x0000, 0x0117, CRC(09a51271) SHA1(147f53f426f258ad127157967fa59d4098e5ed16) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( area88 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ar_36.12f", 0x00000, 0x20000, CRC(65030392) SHA1(d9dea5cfde28345716b0e519ee033c475be0454b) )
+ ROM_LOAD16_BYTE( "ar_42.12h", 0x00001, 0x20000, CRC(c48170de) SHA1(e968522dbdd217dd8e4cd6aaeaef801c63488c1d) )
+ ROM_LOAD16_BYTE( "ar_37.13f", 0x40000, 0x20000, CRC(33e9694b) SHA1(90db3052ac2ff859ede8473dd13e0f5be148590c) ) // == aru_31.12f
+ ROM_LOAD16_BYTE( "ar_43.13h", 0x40001, 0x20000, CRC(7cc8fb9e) SHA1(f70118d1a368fd4795d9953c55d283305d1f9630) ) // == aru_36.12h
+ ROM_LOAD16_BYTE( "ar_34.10f", 0x80000, 0x20000, CRC(f6e80386) SHA1(462c1e9981b733df03e4d084df2d1fc58cf2022c) ) // == ar-32m.8h
+ ROM_LOAD16_BYTE( "ar_40.10h", 0x80001, 0x20000, CRC(be36c145) SHA1(9ada7ac7361ff8871e2ae61f75e4e5d98936cdc3) ) // == ar-32m.8h
+ ROM_LOAD16_BYTE( "ar_35.11f", 0xc0000, 0x20000, CRC(86d98ff3) SHA1(18137974fb7812b45f0d93e584ed14d0af2e6a3e) ) // == ar-32m.8h
+ ROM_LOAD16_BYTE( "ar_41.11h", 0xc0001, 0x20000, CRC(758893d3) SHA1(1245bfd35b0f12bd701cd28c9ce2e85e166a4de2) ) // == ar-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ar_09.4b", 0x000000, 0x20000, CRC(db9376f8) SHA1(501fc5543c66509f8fc1075c128fb01606ced2ad) , ROM_SKIP(7) ) // == ar-5m.7a
+ ROMX_LOAD( "ar_01.4a", 0x000001, 0x20000, CRC(392151b4) SHA1(ba3c69d852f750b43d8b4b2b58fcb7977cc0e5de) , ROM_SKIP(7) ) // == ar-5m.7a
+ ROMX_LOAD( "ar_13.9b", 0x000002, 0x20000, CRC(81436481) SHA1(85ceba63382959f7084bacb6aedcef80ddd8ad6b) , ROM_SKIP(7) ) // == ar-7m.9a
+ ROMX_LOAD( "ar_05.9a", 0x000003, 0x20000, CRC(e246ed9f) SHA1(aaaad5c81bf7c4ec4b2339fd8f0364096c86e903) , ROM_SKIP(7) ) // == ar-7m.9a
+ ROMX_LOAD( "ar_24.5e", 0x000004, 0x20000, CRC(9cd6e2a3) SHA1(186e756af496b0fb5b65cf7a106fe32c78d542c9) , ROM_SKIP(7) ) // == ar-1m.3a
+ ROMX_LOAD( "ar_17.5c", 0x000005, 0x20000, CRC(0b8e0df4) SHA1(ac8ab79e7237b72df9f42292a0c58aa56effe3a1) , ROM_SKIP(7) ) // == ar-1m.3a
+ ROMX_LOAD( "ar_38.8h", 0x000006, 0x20000, CRC(8b9e75b9) SHA1(eeeaa8f84167f7e8127b90318f052fe5e00c36ac) , ROM_SKIP(7) ) // == ar-3m.5a
+ ROMX_LOAD( "ar_32.8f", 0x000007, 0x20000, CRC(db6acdcf) SHA1(5842e29a0e29b4869b2c34a5f47f64c1a1f4609a) , ROM_SKIP(7) ) // == ar-3m.5a
+ ROMX_LOAD( "ar_10.5b", 0x100000, 0x20000, CRC(4219b622) SHA1(ecfc47687b466893b9c8587224830d600c754d17) , ROM_SKIP(7) ) // == ar-5m.7a
+ ROMX_LOAD( "ar_02.5a", 0x100001, 0x20000, CRC(bac5dec5) SHA1(e69f5c4e5c07db46f088d3eabfd394e7d639fea0) , ROM_SKIP(7) ) // == ar-5m.7a
+ ROMX_LOAD( "ar_14.10b", 0x100002, 0x20000, CRC(e6bae179) SHA1(31af958dedce5fcc1a7c159f96af4a3a1a4651fb) , ROM_SKIP(7) ) // == ar-7m.9a
+ ROMX_LOAD( "ar_06.10a", 0x100003, 0x20000, CRC(c8f04223) SHA1(c96eba0ce53e8505668dc646344e5b2456d60546) , ROM_SKIP(7) ) // == ar-7m.9a
+ ROMX_LOAD( "ar_25.7e", 0x100004, 0x20000, CRC(15ccf981) SHA1(2dd7a2d573089aa70b33586d6d9e6b8d816bd28e) , ROM_SKIP(7) ) // == ar-1m.3a
+ ROMX_LOAD( "ar_18.7c", 0x100005, 0x20000, CRC(9336db6a) SHA1(1704d6f0de08ed283c26ee0bcbb82a838060fe70) , ROM_SKIP(7) ) // == ar-1m.3a
+ ROMX_LOAD( "ar_39.9h", 0x100006, 0x20000, CRC(9b8e1363) SHA1(f830834305248446235cc6b17b17f7f0dd6baa03) , ROM_SKIP(7) ) // == ar-3m.5a
+ ROMX_LOAD( "ar_33.9f", 0x100007, 0x20000, CRC(3968f4b5) SHA1(42722c61c4b514b15f1594fdad688375e2c51e71) , ROM_SKIP(7) ) // == ar-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ar_23.13c", 0x00000, 0x08000, CRC(f3dd1367) SHA1(09eef72e862ac6b1a5cce5a45938b45bf4e456ad) ) // == ar_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ar_30.12e", 0x00000, 0x20000, CRC(584b43a9) SHA1(7820815c8c67d484baf2fdad7e55d8c14b98b860) ) // == aru_18.11c
+ /* 20000-3ffff empty */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ar22b.1a", 0x0000, 0x0117, CRC(f1db9030) SHA1(85a6eefb93e7bf7c7d3980737365a425c5324c08) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( area88r )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "araj_23.8f", 0x00000, 0x80000, CRC(7045d6cb) SHA1(5f8f3160e8e960ee67778232368d4f3430a0dade) )
+ ROM_LOAD16_WORD_SWAP( "araj_22.7f", 0x80000, 0x80000, CRC(9913002e) SHA1(b2da8ad34bf4ea51679d35d91601faa91ef40ae5) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ara_01.3a", 0x000000, 0x80000, CRC(bf4575d8) SHA1(1b268e1698be8ff9c16f80f7b9081b6be9f72601) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ar-5m.7a
+ ROMX_LOAD( "ara_02.4a", 0x000002, 0x80000, CRC(a02945f4) SHA1(ff35cdbd6c1e43b16a906f68e416559cb3d5746b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ar-7m.9a
+ ROMX_LOAD( "ara_03.5a", 0x000004, 0x80000, CRC(5965ca8d) SHA1(49abf80fc012a7f73306139a2871aeac7fd6a3d0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ar-1m.3a
+ ROMX_LOAD( "ara_04.6a", 0x000006, 0x80000, CRC(ac6db17d) SHA1(78eef9ba6a392859f70467f6d7cb5aa91964abed) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ar-3m.5a
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ara_09.12a", 0x00000, 0x08000, CRC(af88359c) SHA1(5b7d872700a074fe1a4e11722e73374a23fa5e99) ) // == ar_09.12b + garbage
+ ROM_CONTINUE( 0x10000, 0x18000 ) // second half of ROM is unused, not mapped in memory
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ara_18.11c", 0x00000, 0x20000, CRC(584b43a9) SHA1(7820815c8c67d484baf2fdad7e55d8c14b98b860) ) // == aru_18.11c
+ /* 20000-3ffff empty */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB. Redump needed */
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffight )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ff_36.11f", 0x00000, 0x20000, CRC(f9a5ce83) SHA1(0756ae576a1f6d5b8b22f8630dca40ef38567ea6) ) // in "30" socket
+ ROM_LOAD16_BYTE( "ff_42.11h", 0x00001, 0x20000, CRC(65f11215) SHA1(5045a467f3e228c02b4a355b52f58263ffa90113) ) // in "35" socket
+ ROM_LOAD16_BYTE( "ff_37.12f", 0x40000, 0x20000, CRC(e1033784) SHA1(38f44434c8befd623953ae23d6e5ff4e201d6627) ) // in "31" socket
+ ROM_LOAD16_BYTE( "ffe_43.12h", 0x40001, 0x20000, CRC(995e968a) SHA1(de16873d1639ac1738be0937270b108a9914f263) ) // in "36" socket
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) /* seen the same pcb with LWIO.11E */
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffighta )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffe_30.11f", 0x00000, 0x20000, CRC(2347bf51) SHA1(de05b347a8b4df4889d4e594e1abf741afdf0ab4) )
+ ROM_LOAD16_BYTE( "ffe_35.11h", 0x00001, 0x20000, CRC(5f694ecc) SHA1(57c45ffcada0cdaf1f97c7e33c8300539828a238) )
+ ROM_LOAD16_BYTE( "ffe_31.12f", 0x40000, 0x20000, CRC(6dc6b792) SHA1(553abebed2a1fa1ee2d85a4117f40d90e2321cea) )
+ ROM_LOAD16_BYTE( "ffe_36.12h", 0x40001, 0x20000, CRC(b36a0b99) SHA1(cfb27987ee3d54c83c6fb73437a79dcdd96df22f) )
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ffe_23.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b /* label is FFE_23, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffightu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ff_36.11f", 0x00000, 0x20000, CRC(f9a5ce83) SHA1(0756ae576a1f6d5b8b22f8630dca40ef38567ea6) ) // in "30" socket
+ ROM_LOAD16_BYTE( "ff_42.11h", 0x00001, 0x20000, CRC(65f11215) SHA1(5045a467f3e228c02b4a355b52f58263ffa90113) ) // in "35" socket
+ ROM_LOAD16_BYTE( "ff_37.12f", 0x40000, 0x20000, CRC(e1033784) SHA1(38f44434c8befd623953ae23d6e5ff4e201d6627) ) // in "31" socket
+ ROM_LOAD16_BYTE( "ffu_43.12h", 0x40001, 0x20000, CRC(4ca65947) SHA1(74ffe00df96273770a24d9a46f13e53ea8812670) ) // in "36" socket /* seen the same pcb with FF_43.12H */
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) /* seen the same pcb with 23.12B */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+/* Note that this set is equivalent to ffightu, but the 4Mbit MASK ROM FF-32M located @ 8H is replaced by 4 1Mbit EPROMs. */
+ROM_START( ffightu1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ff_36.11f", 0x00000, 0x20000, CRC(f9a5ce83) SHA1(0756ae576a1f6d5b8b22f8630dca40ef38567ea6) ) // in "30" socket
+ ROM_LOAD16_BYTE( "ff_42.11h", 0x00001, 0x20000, CRC(65f11215) SHA1(5045a467f3e228c02b4a355b52f58263ffa90113) ) // in "35" socket
+ ROM_LOAD16_BYTE( "ff_37.12f", 0x40000, 0x20000, CRC(e1033784) SHA1(38f44434c8befd623953ae23d6e5ff4e201d6627) ) // in "31" socket
+ ROM_LOAD16_BYTE( "ffu_43.12h", 0x40001, 0x20000, CRC(4ca65947) SHA1(74ffe00df96273770a24d9a46f13e53ea8812670) ) // in "36" socket
+ ROM_LOAD16_BYTE( "ff_34.9f", 0x80000, 0x20000, CRC(0c8dc3fc) SHA1(edcce3efd9cdd131ef0c96df15a68722d5c3498e) ) // in "28" socket // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_40.9h", 0x80001, 0x20000, CRC(8075bab9) SHA1(f9c7405133f6fc5557c90e60e8ccc459e4f6fd7d) ) // in "33" socket // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_35.10f", 0xc0000, 0x20000, CRC(4a934121) SHA1(3982c261582755a0eac340d6d7ed96e6c263c8b6) ) // in "29" socket // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_41.10h", 0xc0001, 0x20000, CRC(2af68154) SHA1(7d549cb38650b4b79c68ad6d0dfcefdd62be4e99) ) // in "34" socket // == ff-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffightua )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffu_36.11f", 0x00000, 0x20000, CRC(e2a48af9) SHA1(11e06f95bdf575af396dded2b84d858f6c7388f1) ) // in "30" socket
+ ROM_LOAD16_BYTE( "ffu_42.11h", 0x00001, 0x20000, CRC(f4bb480e) SHA1(32114df1d2f4f98a4a2280a330c7b6af8ab4d862) ) // in "35" socket
+ ROM_LOAD16_BYTE( "ffu_37.12f", 0x40000, 0x20000, CRC(c371c667) SHA1(633977c91a8ff09b7fe83128eced7c4dee9aee1d) ) // in "31" socket
+ ROM_LOAD16_BYTE( "ffu_43.12h", 0x40001, 0x20000, CRC(2f5771f9) SHA1(fb532402bc00b5619a23dfa7e4525f1717020303) ) // in "36" socket /* different CRC from ffightu, ffightu1, pcb verified */
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffightub )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffu_30_3.11f", 0x00000, 0x20000, CRC(e619eb30) SHA1(41c2589a1b2cab2d0ded527a89f8e0e39e61efe1))
+ ROM_LOAD16_BYTE( "ffu_35_3.11h", 0x00001, 0x20000, CRC(bca85263) SHA1(249bc81426ee93cf2efa5594d6813d5dd896cea3) )
+ ROM_LOAD16_BYTE( "ffu_31_3.12f", 0x40000, 0x20000, CRC(59abd207) SHA1(9bc1f4d5dabd02cebce84f56f848694591c0629d) )
+ ROM_LOAD16_BYTE( "ffu_36_3.12h", 0x40001, 0x20000, CRC(df46ece8) SHA1(aa3081918d499f56664d6bb7b7ede2055d00375d) )
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffightuc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffu_30.11f", 0x00000, 0x20000, CRC(ed988977) SHA1(c718e989206bd2b68832c8fcb5667397d500ebac) )
+ ROM_LOAD16_BYTE( "ffu_35.11h", 0x00001, 0x20000, CRC(07bf1c21) SHA1(f21a939fd92607c7f54816dedbcb3c5818cf4183) )
+ ROM_LOAD16_BYTE( "ffu_31.12f", 0x40000, 0x20000, CRC(dba5a476) SHA1(2f0176dd050f9630b914f1c1ca5d96215bcf567f) )
+ ROM_LOAD16_BYTE( "ffu_36.12h", 0x40001, 0x20000, CRC(4d89f542) SHA1(0b7d483a2c5759715f99f287cbd8a36165b59de7) )
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_23.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b /* label is FF_23, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* FIXME B-Board uncertain but should be 88622B/89625B from the program ROM names */
+ROM_START( ffightj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ff36.bin", 0x00000, 0x20000, CRC(f9a5ce83) SHA1(0756ae576a1f6d5b8b22f8630dca40ef38567ea6) ) // == ff_36.11f
+ ROM_LOAD16_BYTE( "ff42.bin", 0x00001, 0x20000, CRC(65f11215) SHA1(5045a467f3e228c02b4a355b52f58263ffa90113) ) // == ff_42.11h
+ ROM_LOAD16_BYTE( "ff37.bin", 0x40000, 0x20000, CRC(e1033784) SHA1(38f44434c8befd623953ae23d6e5ff4e201d6627) ) // == ff_37.12f
+ ROM_LOAD16_BYTE( "ff43.bin", 0x40001, 0x20000, CRC(b6dee1c3) SHA1(3a85312a2e9d8e06259b73d91ccb5e66a6bad62d) )
+ ROM_LOAD16_BYTE( "ffj_34.10f", 0x80000, 0x20000, CRC(0c8dc3fc) SHA1(edcce3efd9cdd131ef0c96df15a68722d5c3498e) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_40.10h", 0x80001, 0x20000, CRC(8075bab9) SHA1(f9c7405133f6fc5557c90e60e8ccc459e4f6fd7d) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_35.11f", 0xc0000, 0x20000, CRC(4a934121) SHA1(3982c261582755a0eac340d6d7ed96e6c263c8b6) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_41.11h", 0xc0001, 0x20000, CRC(2af68154) SHA1(7d549cb38650b4b79c68ad6d0dfcefdd62be4e99) ) // == ff-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ffj_09.4b", 0x000000, 0x20000, CRC(5b116d0d) SHA1(a24e829fdfa043bd27b508d7cc0788ad80fd180e) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_01.4a", 0x000001, 0x20000, CRC(815b1797) SHA1(549e5eefc8f607fec1c954ba715ff21b8e44a5aa) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_13.9b", 0x000002, 0x20000, CRC(8721a7da) SHA1(39b2b324fd7810342503f23695e423f364a6294d) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_05.9a", 0x000003, 0x20000, CRC(d0fcd4b5) SHA1(97ebcbead0cca7e425143c500c433dbcf9cadcc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_24.5e", 0x000004, 0x20000, CRC(a1ab607a) SHA1(56784c028b82d9e2affd9610f56fde57063e4c28) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_17.5c", 0x000005, 0x20000, CRC(2dc18cf4) SHA1(5e3bd895600cd30d561a75a2fcb6cc8bc84f4bd1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_38.8h", 0x000006, 0x20000, CRC(6535a57f) SHA1(f4da9ec13cad7e3287e34dcceb0eb2d20107bad6) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_32.8f", 0x000007, 0x20000, CRC(c8bc4a57) SHA1(3eaf2b4e910fe1f79154020122d786d23a2e594a) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_10.5b", 0x100000, 0x20000, CRC(624a924a) SHA1(48fd0498f9ed54003bf6578fbcbc8b7e90a195eb) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_02.5a", 0x100001, 0x20000, CRC(5d91f694) SHA1(e0ea9ec82dec985d8bf5e7cebf5fe3d8ef7557b1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_14.10b", 0x100002, 0x20000, CRC(0a2e9101) SHA1(6c8d550d2066cd53355ccf14ac1fd35914982094) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_06.10a", 0x100003, 0x20000, CRC(1c18f042) SHA1(f708296570fecad82a76dc59744873a2f5568ea1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_25.7e", 0x100004, 0x20000, CRC(6e8181ea) SHA1(2c32bc0364650ee6ca0d24754a7a3401295ffcd5) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_18.7c", 0x100005, 0x20000, CRC(b19ede59) SHA1(7e79ad9f17b36e042d774bef3bbb44018332ca01) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_39.9h", 0x100006, 0x20000, CRC(9416b477) SHA1(f2310dfcfe960e8b822c07849b594d54dfc2b2ca) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_33.9f", 0x100007, 0x20000, CRC(7369fa07) SHA1(3b2750fe33729395217c96909b4b6c5f3d6e9943) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_23.bin", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ffj_30.bin", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) ) // == ff_18.11c
+ ROM_LOAD( "ffj_31.bin", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) ) // == ff_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s222b.1a", 0x0000, 0x0117, CRC(6d86b45e) SHA1(2b27646adaf1ca2f58e14754d6f7ef4fdca77fbe) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal & position verification required
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( ffightj1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffj_36.12f", 0x00000, 0x20000, CRC(e2a48af9) SHA1(11e06f95bdf575af396dded2b84d858f6c7388f1) ) // == ffu_36.11f
+ ROM_LOAD16_BYTE( "ffj_42.12h", 0x00001, 0x20000, CRC(f4bb480e) SHA1(32114df1d2f4f98a4a2280a330c7b6af8ab4d862) ) // == ffu_42.11h
+ ROM_LOAD16_BYTE( "ffj_37.13f", 0x40000, 0x20000, CRC(c371c667) SHA1(633977c91a8ff09b7fe83128eced7c4dee9aee1d) ) // == ffu_37.12f
+ ROM_LOAD16_BYTE( "ffj_43.13h", 0x40001, 0x20000, CRC(6f81f194) SHA1(2cddf75a0a607cf57395583876cf81bcca005871) )
+ ROM_LOAD16_BYTE( "ffj_34.10f", 0x80000, 0x20000, CRC(0c8dc3fc) SHA1(edcce3efd9cdd131ef0c96df15a68722d5c3498e) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_40.10h", 0x80001, 0x20000, CRC(8075bab9) SHA1(f9c7405133f6fc5557c90e60e8ccc459e4f6fd7d) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_35.11f", 0xc0000, 0x20000, CRC(4a934121) SHA1(3982c261582755a0eac340d6d7ed96e6c263c8b6) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_41.11h", 0xc0001, 0x20000, CRC(2af68154) SHA1(7d549cb38650b4b79c68ad6d0dfcefdd62be4e99) ) // == ff-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ffj_09.4b", 0x000000, 0x20000, CRC(5b116d0d) SHA1(a24e829fdfa043bd27b508d7cc0788ad80fd180e) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_01.4a", 0x000001, 0x20000, CRC(815b1797) SHA1(549e5eefc8f607fec1c954ba715ff21b8e44a5aa) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_13.9b", 0x000002, 0x20000, CRC(8721a7da) SHA1(39b2b324fd7810342503f23695e423f364a6294d) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_05.9a", 0x000003, 0x20000, CRC(d0fcd4b5) SHA1(97ebcbead0cca7e425143c500c433dbcf9cadcc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_24.5e", 0x000004, 0x20000, CRC(a1ab607a) SHA1(56784c028b82d9e2affd9610f56fde57063e4c28) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_17.5c", 0x000005, 0x20000, CRC(2dc18cf4) SHA1(5e3bd895600cd30d561a75a2fcb6cc8bc84f4bd1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_38.8h", 0x000006, 0x20000, CRC(6535a57f) SHA1(f4da9ec13cad7e3287e34dcceb0eb2d20107bad6) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_32.8f", 0x000007, 0x20000, CRC(c8bc4a57) SHA1(3eaf2b4e910fe1f79154020122d786d23a2e594a) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_10.5b", 0x100000, 0x20000, CRC(624a924a) SHA1(48fd0498f9ed54003bf6578fbcbc8b7e90a195eb) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_02.5a", 0x100001, 0x20000, CRC(5d91f694) SHA1(e0ea9ec82dec985d8bf5e7cebf5fe3d8ef7557b1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_14.10b", 0x100002, 0x20000, CRC(0a2e9101) SHA1(6c8d550d2066cd53355ccf14ac1fd35914982094) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_06.10a", 0x100003, 0x20000, CRC(1c18f042) SHA1(f708296570fecad82a76dc59744873a2f5568ea1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_25.7e", 0x100004, 0x20000, CRC(6e8181ea) SHA1(2c32bc0364650ee6ca0d24754a7a3401295ffcd5) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_18.7c", 0x100005, 0x20000, CRC(b19ede59) SHA1(7e79ad9f17b36e042d774bef3bbb44018332ca01) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_39.9h", 0x100006, 0x20000, CRC(9416b477) SHA1(f2310dfcfe960e8b822c07849b594d54dfc2b2ca) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_33.9f", 0x100007, 0x20000, CRC(7369fa07) SHA1(3b2750fe33729395217c96909b4b6c5f3d6e9943) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_23.13b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ffj_30.12c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) ) // == ff_18.11c
+ ROM_LOAD( "ffj_31.13c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) ) // == ff_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s222b.1a", 0x0000, 0x0117, CRC(6d86b45e) SHA1(2b27646adaf1ca2f58e14754d6f7ef4fdca77fbe) )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+
+/* B-Board 88622B-3 */
+ROM_START( ffightj2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffj_36a.12f", 0x00000, 0x20000, CRC(088ed1c9) SHA1(7b96cd45f4d3d2c0fe94904882652814b7790869) )
+ ROM_LOAD16_BYTE( "ffj_42a.12h", 0x00001, 0x20000, CRC(c4c491e6) SHA1(d0e34d7b94f67c33615710ea721da8fefe832e3a) )
+ ROM_LOAD16_BYTE( "ffj_37a.13f", 0x40000, 0x20000, CRC(708557ff) SHA1(89e56bfd9486623a18fdbf984a72bb52054ca0e6) )
+ ROM_LOAD16_BYTE( "ffj_43a.13h", 0x40001, 0x20000, CRC(c004004a) SHA1(10ccf27972591f65645a8dd2bb65989176ac07d5) )
+ ROM_LOAD16_BYTE( "ff_34.10f", 0x80000, 0x20000, CRC(0c8dc3fc) SHA1(edcce3efd9cdd131ef0c96df15a68722d5c3498e) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_40.10h", 0x80001, 0x20000, CRC(8075bab9) SHA1(f9c7405133f6fc5557c90e60e8ccc459e4f6fd7d) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_35.11f", 0xc0000, 0x20000, CRC(4a934121) SHA1(3982c261582755a0eac340d6d7ed96e6c263c8b6) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_41.11h", 0xc0001, 0x20000, CRC(2af68154) SHA1(7d549cb38650b4b79c68ad6d0dfcefdd62be4e99) ) // == ff-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff_09.4b", 0x000000, 0x20000, CRC(5b116d0d) SHA1(a24e829fdfa043bd27b508d7cc0788ad80fd180e) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_01.4a", 0x000001, 0x20000, CRC(815b1797) SHA1(549e5eefc8f607fec1c954ba715ff21b8e44a5aa) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_13.9b", 0x000002, 0x20000, CRC(8721a7da) SHA1(39b2b324fd7810342503f23695e423f364a6294d) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_05.9a", 0x000003, 0x20000, CRC(d0fcd4b5) SHA1(97ebcbead0cca7e425143c500c433dbcf9cadcc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_24.5e", 0x000004, 0x20000, CRC(a1ab607a) SHA1(56784c028b82d9e2affd9610f56fde57063e4c28) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_17.5c", 0x000005, 0x20000, CRC(2dc18cf4) SHA1(5e3bd895600cd30d561a75a2fcb6cc8bc84f4bd1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_38.8h", 0x000006, 0x20000, CRC(6535a57f) SHA1(f4da9ec13cad7e3287e34dcceb0eb2d20107bad6) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_32.8f", 0x000007, 0x20000, CRC(c8bc4a57) SHA1(3eaf2b4e910fe1f79154020122d786d23a2e594a) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_10.5b", 0x100000, 0x20000, CRC(624a924a) SHA1(48fd0498f9ed54003bf6578fbcbc8b7e90a195eb) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_02.5a", 0x100001, 0x20000, CRC(5d91f694) SHA1(e0ea9ec82dec985d8bf5e7cebf5fe3d8ef7557b1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_14.10b", 0x100002, 0x20000, CRC(0a2e9101) SHA1(6c8d550d2066cd53355ccf14ac1fd35914982094) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_06.10a", 0x100003, 0x20000, CRC(1c18f042) SHA1(f708296570fecad82a76dc59744873a2f5568ea1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_25.7e", 0x100004, 0x20000, CRC(6e8181ea) SHA1(2c32bc0364650ee6ca0d24754a7a3401295ffcd5) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_18.7c", 0x100005, 0x20000, CRC(b19ede59) SHA1(7e79ad9f17b36e042d774bef3bbb44018332ca01) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_39.9h", 0x100006, 0x20000, CRC(9416b477) SHA1(f2310dfcfe960e8b822c07849b594d54dfc2b2ca) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_33.9f", 0x100007, 0x20000, CRC(7369fa07) SHA1(3b2750fe33729395217c96909b4b6c5f3d6e9943) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_23.13c", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_30.12e", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) ) // == ff_18.11c
+ ROM_LOAD( "ff_31.13e", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) ) // == ff_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s222b.1a", 0x0000, 0x0117, CRC(6d86b45e) SHA1(2b27646adaf1ca2f58e14754d6f7ef4fdca77fbe) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( ffightj3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ff_36.12f", 0x00000, 0x20000, CRC(ed988977) SHA1(c718e989206bd2b68832c8fcb5667397d500ebac) ) // == ffu_30.11f
+ ROM_LOAD16_BYTE( "ffj_42.12h", 0x00001, 0x20000, CRC(07bf1c21) SHA1(f21a939fd92607c7f54816dedbcb3c5818cf4183) ) // sldh - == ffu_35.11h
+ ROM_LOAD16_BYTE( "ff_37.13f", 0x40000, 0x20000, CRC(dba5a476) SHA1(2f0176dd050f9630b914f1c1ca5d96215bcf567f) ) // == ffu_31.12f
+ ROM_LOAD16_BYTE( "ffj_43.13h", 0x40001, 0x20000, CRC(fbeca028) SHA1(85eeed6a25b401d73d12896ca1e2bf7402c921ee) ) // sldh
+ ROM_LOAD16_BYTE( "ff_34.10f", 0x80000, 0x20000, CRC(0c8dc3fc) SHA1(edcce3efd9cdd131ef0c96df15a68722d5c3498e) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_40.10h", 0x80001, 0x20000, CRC(8075bab9) SHA1(f9c7405133f6fc5557c90e60e8ccc459e4f6fd7d) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ff_35.11f", 0xc0000, 0x20000, CRC(4a934121) SHA1(3982c261582755a0eac340d6d7ed96e6c263c8b6) ) // == ff-32m.8h
+ ROM_LOAD16_BYTE( "ffj_41.11h", 0xc0001, 0x20000, CRC(2af68154) SHA1(7d549cb38650b4b79c68ad6d0dfcefdd62be4e99) ) // == ff-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff_09.4b", 0x000000, 0x20000, CRC(5b116d0d) SHA1(a24e829fdfa043bd27b508d7cc0788ad80fd180e) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_01.4a", 0x000001, 0x20000, CRC(815b1797) SHA1(549e5eefc8f607fec1c954ba715ff21b8e44a5aa) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_13.9b", 0x000002, 0x20000, CRC(8721a7da) SHA1(39b2b324fd7810342503f23695e423f364a6294d) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_05.9a", 0x000003, 0x20000, CRC(d0fcd4b5) SHA1(97ebcbead0cca7e425143c500c433dbcf9cadcc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_24.5e", 0x000004, 0x20000, CRC(a1ab607a) SHA1(56784c028b82d9e2affd9610f56fde57063e4c28) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_17.5c", 0x000005, 0x20000, CRC(2dc18cf4) SHA1(5e3bd895600cd30d561a75a2fcb6cc8bc84f4bd1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_38.8h", 0x000006, 0x20000, CRC(6535a57f) SHA1(f4da9ec13cad7e3287e34dcceb0eb2d20107bad6) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_32.8f", 0x000007, 0x20000, CRC(c8bc4a57) SHA1(3eaf2b4e910fe1f79154020122d786d23a2e594a) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_10.5b", 0x100000, 0x20000, CRC(624a924a) SHA1(48fd0498f9ed54003bf6578fbcbc8b7e90a195eb) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_02.5a", 0x100001, 0x20000, CRC(5d91f694) SHA1(e0ea9ec82dec985d8bf5e7cebf5fe3d8ef7557b1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_14.10b", 0x100002, 0x20000, CRC(0a2e9101) SHA1(6c8d550d2066cd53355ccf14ac1fd35914982094) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_06.10a", 0x100003, 0x20000, CRC(1c18f042) SHA1(f708296570fecad82a76dc59744873a2f5568ea1) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_25.7e", 0x100004, 0x20000, CRC(6e8181ea) SHA1(2c32bc0364650ee6ca0d24754a7a3401295ffcd5) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_18.7c", 0x100005, 0x20000, CRC(b19ede59) SHA1(7e79ad9f17b36e042d774bef3bbb44018332ca01) , ROM_SKIP(7) )
+ ROMX_LOAD( "ffj_39.9h", 0x100006, 0x20000, CRC(9416b477) SHA1(f2310dfcfe960e8b822c07849b594d54dfc2b2ca) , ROM_SKIP(7) )
+ ROMX_LOAD( "ff_33.9f", 0x100007, 0x20000, CRC(7369fa07) SHA1(3b2750fe33729395217c96909b4b6c5f3d6e9943) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_23.13b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_30.12c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) ) // == ff_18.11c
+ ROM_LOAD( "ff_31.13c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) ) // == ff_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s222b.1a", 0x0000, 0x0117, CRC(6d86b45e) SHA1(2b27646adaf1ca2f58e14754d6f7ef4fdca77fbe) )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal verification required
+ROM_END
+
+/* B-Board 91634B-2 */
+/* This hack uses an official and original Final Fight JAP CPS-B-21 Board. The EPROMS have been modified and phoenixed.
+ The Board uses a GAL instead of the classic PAL located in position "1A". There is no ROM check at the start and no logo
+ Capcom (instead a chinese logo... maybe the bootleggers logo). Even if it's a JAP Board, the game intro is in english. */
+ROM_START( ffightjh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "ff_23.8f", 0x00000, 0x80000, CRC(ae3dda7f) SHA1(5f08ce1e6b6b0d45994d3354d59ef79f489c7ad7) )
+ ROM_LOAD16_WORD_SWAP( "ff_22.7f", 0x80000, 0x80000, CRC(b2d5a3aa) SHA1(b60f7480d3d3ceebad4c21025394bacc154d7042) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff_1.3a", 0x000000, 0x80000, CRC(969d18e2) SHA1(7a30b7434e34ec98838a9ab8d953b2ef467d562e), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_2.4a", 0x000002, 0x80000, CRC(02b59f99) SHA1(c1cb2bbf95c2006baad58b0a5a7278f1a8999901), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_3.5a", 0x000004, 0x80000, CRC(01d507ae) SHA1(d7813daa5bd74bebdbbea578acb20ad3c8816997), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_4.6a", 0x000006, 0x80000, CRC(f7c4ceb0) SHA1(3e9cf6379f06c5a736b4a0aadb7fbda914b91190), ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_9.12a", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) // == ff_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "gal16v8a-15lp.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 1941 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "41em_30.11f", 0x00000, 0x20000, CRC(4249ec61) SHA1(5323cfa6938e6d95db8469f09b2fb5b5c5068bfc) ) /* label is 41EM_30, pcb verified */
+ ROM_LOAD16_BYTE( "41em_35.11h", 0x00001, 0x20000, CRC(ddbee5eb) SHA1(0fef53398f4e2cd6ccc7bc122dd893e0a4e2e052) ) /* label is 41EM_35, pcb verified */
+ ROM_LOAD16_BYTE( "41em_31.12f", 0x40000, 0x20000, CRC(584e88e5) SHA1(af254408d939cc439b5653e60afbccdf59777085) ) /* label is 41EM_31, pcb verified */
+ ROM_LOAD16_BYTE( "41em_36.12h", 0x40001, 0x20000, CRC(3cfc31d0) SHA1(7c0614e4e25502ff2d18aa4a97c91bf05ead875f) ) /* label is 41EM_36, pcb verified */
+ ROM_LOAD16_WORD_SWAP( "41-32m.8h", 0x80000, 0x80000, CRC(4e9648ca) SHA1(d8e67e6e3a6dc79053e4f56cfd83431385ea7611) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "41-5m.7a", 0x000000, 0x80000, CRC(01d1cb11) SHA1(621e5377d1aaa9f7270d85bea1bdeef6721cdd05) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-7m.9a", 0x000002, 0x80000, CRC(aeaa3509) SHA1(6124ef06d9dfdd879181856bd49853f1800c3b87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-1m.3a", 0x000004, 0x80000, CRC(ff77985a) SHA1(7e08df3a829bf9617470a46c79b713d4d9ebacae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-3m.5a", 0x000006, 0x80000, CRC(983be58f) SHA1(83a4decdd775f859240771269b8af3a5981b244c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "41_9.12b", 0x00000, 0x08000, CRC(0f9d8527) SHA1(3a00dd5772f38081fde11d8d61ba467379e2a636) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "41_18.11c", 0x00000, 0x20000, CRC(d1f15aeb) SHA1(88089383f2d54fc97026a67f067d448eee5bd0c2) )
+ ROM_LOAD( "41_19.12c", 0x20000, 0x20000, CRC(15aec3a6) SHA1(8153c03aba005bab62bf0e8b3d15ec1c346326fd) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "yi24b.1a", 0x0000, 0x0117, CRC(3004dcdf) SHA1(a73d86d1545af1d99a03d88af83449ec82b03c5c) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 1941r1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "41e_30.11f", 0x00000, 0x20000, CRC(9deb1e75) SHA1(68d9f91bef6a5c9e1bcbf286629aed6b37b4acb9) )
+ ROM_LOAD16_BYTE( "41e_35.11h", 0x00001, 0x20000, CRC(d63942b3) SHA1(b4bc7d06dcefbc075d316f2d31abbd4c7a99dbae) )
+ ROM_LOAD16_BYTE( "41e_31.12f", 0x40000, 0x20000, CRC(df201112) SHA1(d84f63bffeb9255cbabc02f23d7511f9b3c6a96c) )
+ ROM_LOAD16_BYTE( "41e_36.12h", 0x40001, 0x20000, CRC(816a818f) SHA1(3e491a30352b71ddd775142f3a80cdde480b669f) )
+ ROM_LOAD16_WORD_SWAP( "41-32m.8h", 0x80000, 0x80000, CRC(4e9648ca) SHA1(d8e67e6e3a6dc79053e4f56cfd83431385ea7611) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "41-5m.7a", 0x000000, 0x80000, CRC(01d1cb11) SHA1(621e5377d1aaa9f7270d85bea1bdeef6721cdd05) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-7m.9a", 0x000002, 0x80000, CRC(aeaa3509) SHA1(6124ef06d9dfdd879181856bd49853f1800c3b87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-1m.3a", 0x000004, 0x80000, CRC(ff77985a) SHA1(7e08df3a829bf9617470a46c79b713d4d9ebacae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-3m.5a", 0x000006, 0x80000, CRC(983be58f) SHA1(83a4decdd775f859240771269b8af3a5981b244c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "41_9.12b", 0x00000, 0x08000, CRC(0f9d8527) SHA1(3a00dd5772f38081fde11d8d61ba467379e2a636) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "41_18.11c", 0x00000, 0x20000, CRC(d1f15aeb) SHA1(88089383f2d54fc97026a67f067d448eee5bd0c2) )
+ ROM_LOAD( "41_19.12c", 0x20000, 0x20000, CRC(15aec3a6) SHA1(8153c03aba005bab62bf0e8b3d15ec1c346326fd) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "yi24b.1a", 0x0000, 0x0117, CRC(3004dcdf) SHA1(a73d86d1545af1d99a03d88af83449ec82b03c5c) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 1941u )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "41u_30.11f", 0x00000, 0x20000, CRC(be5439d0) SHA1(a62e0aa4f13f504c0eded99d731f7c820c51cb3d) )
+ ROM_LOAD16_BYTE( "41u_35.11h", 0x00001, 0x20000, CRC(6ac96595) SHA1(efff8185fd1aee29d9b5164a9aac61f77f769ae4) )
+ ROM_LOAD16_BYTE( "41u_31.12f", 0x40000, 0x20000, CRC(9811d6eb) SHA1(6dda86a3a726a2b5459f0b90f58343966e9783cc) )
+ ROM_LOAD16_BYTE( "41u_36.12h", 0x40001, 0x20000, CRC(a87e6137) SHA1(d4b63a0c14a35ebd61cddd01cdc6fc955d521ae2) )
+ ROM_LOAD16_WORD_SWAP( "41-32m.8h", 0x80000, 0x80000, CRC(4e9648ca) SHA1(d8e67e6e3a6dc79053e4f56cfd83431385ea7611) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "41-5m.7a", 0x000000, 0x80000, CRC(01d1cb11) SHA1(621e5377d1aaa9f7270d85bea1bdeef6721cdd05) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-7m.9a", 0x000002, 0x80000, CRC(aeaa3509) SHA1(6124ef06d9dfdd879181856bd49853f1800c3b87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-1m.3a", 0x000004, 0x80000, CRC(ff77985a) SHA1(7e08df3a829bf9617470a46c79b713d4d9ebacae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "41-3m.5a", 0x000006, 0x80000, CRC(983be58f) SHA1(83a4decdd775f859240771269b8af3a5981b244c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "41_9.12b", 0x00000, 0x08000, CRC(0f9d8527) SHA1(3a00dd5772f38081fde11d8d61ba467379e2a636) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "41e_18.11c", 0x00000, 0x20000, CRC(d1f15aeb) SHA1(88089383f2d54fc97026a67f067d448eee5bd0c2) ) // == 41_18.11c /* label is 41E_18, pcb verified */
+ ROM_LOAD( "41_19.12c", 0x20000, 0x20000, CRC(15aec3a6) SHA1(8153c03aba005bab62bf0e8b3d15ec1c346326fd) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "yi24b.1a", 0x0000, 0x0117, CRC(3004dcdf) SHA1(a73d86d1545af1d99a03d88af83449ec82b03c5c) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( 1941j )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "41_36.12f", 0x00000, 0x20000, CRC(7fbd42ab) SHA1(4e52a599e3099bf3cccabb89152c69f216fde79e) )
+ ROM_LOAD16_BYTE( "41_42.12h", 0x00001, 0x20000, CRC(c7781f89) SHA1(7e99c433de0c903791ae153a3cc8632042b0a90d) )
+ ROM_LOAD16_BYTE( "41_37.13f", 0x40000, 0x20000, CRC(c6464b0b) SHA1(abef422d891d32334a858d49599f1ef7cf0db45d) )
+ ROM_LOAD16_BYTE( "41_43.13h", 0x40001, 0x20000, CRC(440fc0b5) SHA1(e725535533c25a2c80a45a2200bbfd0dcda5ed97) )
+ ROM_LOAD16_BYTE( "41_34.10f", 0x80000, 0x20000, CRC(b5f341ec) SHA1(95c740332e9e05250979a098e951600ca89cfde4) ) // == 41-32m.8h
+ ROM_LOAD16_BYTE( "41_40.10h", 0x80001, 0x20000, CRC(3979837d) SHA1(e35bca5cd6f7559447c553c7866a3934080ca018) ) // == 41-32m.8h
+ ROM_LOAD16_BYTE( "41_35.11f", 0xc0000, 0x20000, CRC(95cc979a) SHA1(96a22d2accdcd1ed3829ab0e1f17c1615f8bb2a9) ) // == 41-32m.8h
+ ROM_LOAD16_BYTE( "41_41.11h", 0xc0001, 0x20000, CRC(57496819) SHA1(fe705a25a2c6523c3bc0105f4b183931c5ffcc81) ) // == 41-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "41_09.4b", 0x000000, 0x20000, CRC(be1b6bc2) SHA1(0b11efb7adf6bb9c5fdef702171edd38c149e338) , ROM_SKIP(7) ) // == 41-5m.7a
+ ROMX_LOAD( "41_01.4a", 0x000001, 0x20000, CRC(d8946fc1) SHA1(e18d2bd5517a9a74973f5a505e59e400db3843e2) , ROM_SKIP(7) ) // == 41-5m.7a
+ ROMX_LOAD( "41_13.9b", 0x000002, 0x20000, CRC(2e06d0ec) SHA1(b7c886dce6bc5eefa34e39faec658dd9df34f82c) , ROM_SKIP(7) ) // == 41-7m.9a
+ ROMX_LOAD( "41_05.9a", 0x000003, 0x20000, CRC(d8ba28e0) SHA1(dd1908166b32cf3bb3222f6d3febc21371463395) , ROM_SKIP(7) ) // == 41-7m.9a
+ ROMX_LOAD( "41_24.5e", 0x000004, 0x20000, CRC(5aa43cee) SHA1(15e1aa2fee8deb25eefba067395961fee3e4c84d) , ROM_SKIP(7) ) // == 41-1m.3a
+ ROMX_LOAD( "41_17.5c", 0x000005, 0x20000, CRC(bbeff902) SHA1(1bf421072387ab7d59b57ecd33cb5ae6fd8ecd06) , ROM_SKIP(7) ) // == 41-1m.3a
+ ROMX_LOAD( "41_38.8h", 0x000006, 0x20000, CRC(8889c0aa) SHA1(23b74cc78fe1057c1776ea1f7371801441125a85) , ROM_SKIP(7) ) // == 41-3m.5a
+ ROMX_LOAD( "41_32.8f", 0x000007, 0x20000, CRC(f0168249) SHA1(1ce2330ea4460e7e72f16a1f7edbfa8abba6b5a0) , ROM_SKIP(7) ) // == 41-3m.5a
+ ROMX_LOAD( "41_10.5b", 0x100000, 0x20000, CRC(b7eb6a6d) SHA1(444b49e81cd46e90a9e1dfcf465f19c38189b2d7) , ROM_SKIP(7) ) // == 41-5m.7a
+ ROMX_LOAD( "41_02.5a", 0x100001, 0x20000, CRC(802e8153) SHA1(baf19220c53949dac0d0b75368d5f1ee6c32b619) , ROM_SKIP(7) ) // == 41-5m.7a
+ ROMX_LOAD( "41_14.10b", 0x100002, 0x20000, CRC(5a33f676) SHA1(96794463ddfae7ce4a7d7e6b65ff1b8da7b3dd74) , ROM_SKIP(7) ) // == 41-7m.9a
+ ROMX_LOAD( "41_06.10a", 0x100003, 0x20000, CRC(4e53650b) SHA1(a5b19b1ce38f04296dee38d35015869607ecc260) , ROM_SKIP(7) ) // == 41-7m.9a
+ ROMX_LOAD( "41_25.7e", 0x100004, 0x20000, CRC(94add360) SHA1(6f3542f028bdc453d0254de599b124240ea98259) , ROM_SKIP(7) ) // == 41-1m.3a
+ ROMX_LOAD( "41_18.7c", 0x100005, 0x20000, CRC(a5e1c1f3) SHA1(1961ad3c8965c51da8a19a7283333f3a19bb2030) , ROM_SKIP(7) ) // == 41-1m.3a
+ ROMX_LOAD( "41_39.9h", 0x100006, 0x20000, CRC(5b5c3949) SHA1(485b1baecee6bb9a6667baf404375fc758bdfb76) , ROM_SKIP(7) ) // == 41-3m.5a
+ ROMX_LOAD( "41_33.9f", 0x100007, 0x20000, CRC(7a31b0e2) SHA1(f2eca12f4e89266d923a94d0837c555bc1c6cb29) , ROM_SKIP(7) ) // == 41-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "41_23.13b", 0x00000, 0x08000, CRC(0f9d8527) SHA1(3a00dd5772f38081fde11d8d61ba467379e2a636) ) // == 41_9.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "41_30.12c", 0x00000, 0x20000, CRC(d1f15aeb) SHA1(88089383f2d54fc97026a67f067d448eee5bd0c2) ) // == 41_18.11c
+ ROM_LOAD( "41_31.13c", 0x20000, 0x20000, CRC(15aec3a6) SHA1(8153c03aba005bab62bf0e8b3d15ec1c346326fd) ) // == 41_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "yi22b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal verification required
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mercs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "so2_30e.11f", 0x00000, 0x20000, CRC(e17f9bf7) SHA1(f44bb378de428b429c97a21f74829182d3187ace) )
+ ROM_LOAD16_BYTE( "so2_35e.11h", 0x00001, 0x20000, CRC(78e63575) SHA1(5776de0daaaedd0dec2cec8d088a0fd8bb3d4dbe) )
+ ROM_LOAD16_BYTE( "so2_31e.12f", 0x40000, 0x20000, CRC(51204d36) SHA1(af288fc369d092f38ea73be967705aacade06f28) )
+ ROM_LOAD16_BYTE( "so2_36e.12h", 0x40001, 0x20000, CRC(9cfba8b4) SHA1(df8ee5e3a68f056f68f096c46fdb548f63d29446) )
+ ROM_LOAD16_WORD_SWAP( "so2-32m.8h", 0x80000, 0x80000, CRC(2eb5cf0c) SHA1(e0d765fb6957d156ffd40cabf51ba6098cbbeb19) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "so2-6m.8a", 0x000000, 0x80000, CRC(aa6102af) SHA1(4a45f3547a3640f256e5e20bfd72784f880f03f5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-8m.10a", 0x000002, 0x80000, CRC(839e6869) SHA1(7741141a9f1b1e2956edc1d11f9cc3974390c4ed) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-2m.4a", 0x000004, 0x80000, CRC(597c2875) SHA1(440bd04db2c121a6976e5e1027071d28812942d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-4m.6a", 0x000006, 0x80000, CRC(912a9ca0) SHA1(b226a4a388e57e23d7a7559773ebee434125a2e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2_24.7d", 0x200000, 0x20000, CRC(3f254efe) SHA1(5db36eb98a6d3c7acccb561d92c1988d1330cbbf) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_14.7c", 0x200001, 0x20000, CRC(f5a8905e) SHA1(fada8b635d490c06b75711ed505a025bb0aa4454) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_26.9d", 0x200002, 0x20000, CRC(f3aa5a4a) SHA1(bcb3396de5524fffd4110bfbeeeca1c936990eb3) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_16.9c", 0x200003, 0x20000, CRC(b43cd1a8) SHA1(01c2bb802469848a172968802a674c0045a8b8dc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_20.3d", 0x200004, 0x20000, CRC(8ca751a3) SHA1(e93bbe7311f14e7e3cbfb42b83fd7fee4bb9cefc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_10.3c", 0x200005, 0x20000, CRC(e9f569fd) SHA1(39ae9eacdf1f35ef90d131444c37958d7aaf7238) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_22.5d", 0x200006, 0x20000, CRC(fce9a377) SHA1(5de5f696f63326f2cb4c38bcb05e07bcf2246071) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_12.5c", 0x200007, 0x20000, CRC(b7df8a06) SHA1(b42cb0d3f55a1e8fe8afbbd9aeae50074cdc5f08) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "so2_09.12b", 0x00000, 0x08000, CRC(d09d7c7a) SHA1(8e8532be08818c855d9c3ce45716eb07cfab5767) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "so2_18.11c", 0x00000, 0x20000, CRC(bbea1643) SHA1(d43d68a120550067bf0b181f88687ad230cd7908) )
+ ROM_LOAD( "so2_19.12c", 0x20000, 0x20000, CRC(ac58aa71) SHA1(93102272e358bc49d3936302efdc5bb68df84d68) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "o224b.1a", 0x0000, 0x0117, CRC(c211c8cd) SHA1(d9464792e663549e6ad20aac6484622298f88a78) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c628", 0x0000, 0x0117, NO_DUMP )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mercsu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "so2_30a.11f", 0x00000, 0x20000, CRC(e4e725d7) SHA1(b0454dedeb741a7dd4ceb18bac958417ca74a7e6) )
+ ROM_LOAD16_BYTE( "so2_35a.11h", 0x00001, 0x20000, CRC(e7843445) SHA1(192c85ced637e05b37ed889246ebb73e792e984b) )
+ ROM_LOAD16_BYTE( "so2_31a.12f", 0x40000, 0x20000, CRC(c0b91dea) SHA1(5c1d086ae09e4f66384a03994b3c5e12d80582ff) )
+ ROM_LOAD16_BYTE( "so2_36a.12h", 0x40001, 0x20000, CRC(591edf6c) SHA1(68d77e21fe32e0b95d2fabe40bc1cadd419ab0bd) )
+ ROM_LOAD16_WORD_SWAP( "so2-32m.8h", 0x80000, 0x80000, CRC(2eb5cf0c) SHA1(e0d765fb6957d156ffd40cabf51ba6098cbbeb19) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "so2-6m.8a", 0x000000, 0x80000, CRC(aa6102af) SHA1(4a45f3547a3640f256e5e20bfd72784f880f03f5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-8m.10a", 0x000002, 0x80000, CRC(839e6869) SHA1(7741141a9f1b1e2956edc1d11f9cc3974390c4ed) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-2m.4a", 0x000004, 0x80000, CRC(597c2875) SHA1(440bd04db2c121a6976e5e1027071d28812942d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-4m.6a", 0x000006, 0x80000, CRC(912a9ca0) SHA1(b226a4a388e57e23d7a7559773ebee434125a2e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2_24.7d", 0x200000, 0x20000, CRC(3f254efe) SHA1(5db36eb98a6d3c7acccb561d92c1988d1330cbbf) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_14.7c", 0x200001, 0x20000, CRC(f5a8905e) SHA1(fada8b635d490c06b75711ed505a025bb0aa4454) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_26.9d", 0x200002, 0x20000, CRC(f3aa5a4a) SHA1(bcb3396de5524fffd4110bfbeeeca1c936990eb3) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_16.9c", 0x200003, 0x20000, CRC(b43cd1a8) SHA1(01c2bb802469848a172968802a674c0045a8b8dc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_20.3d", 0x200004, 0x20000, CRC(8ca751a3) SHA1(e93bbe7311f14e7e3cbfb42b83fd7fee4bb9cefc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_10.3c", 0x200005, 0x20000, CRC(e9f569fd) SHA1(39ae9eacdf1f35ef90d131444c37958d7aaf7238) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_22.5d", 0x200006, 0x20000, CRC(fce9a377) SHA1(5de5f696f63326f2cb4c38bcb05e07bcf2246071) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_12.5c", 0x200007, 0x20000, CRC(b7df8a06) SHA1(b42cb0d3f55a1e8fe8afbbd9aeae50074cdc5f08) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "so2_09.12b", 0x00000, 0x08000, CRC(d09d7c7a) SHA1(8e8532be08818c855d9c3ce45716eb07cfab5767) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "so2_18.11c", 0x00000, 0x20000, CRC(bbea1643) SHA1(d43d68a120550067bf0b181f88687ad230cd7908) )
+ ROM_LOAD( "so2_19.12c", 0x20000, 0x20000, CRC(ac58aa71) SHA1(93102272e358bc49d3936302efdc5bb68df84d68) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "o224b.1a", 0x0000, 0x0117, CRC(c211c8cd) SHA1(d9464792e663549e6ad20aac6484622298f88a78) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c628", 0x0000, 0x0117, NO_DUMP )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mercsur1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "so2_30.11f", 0x00000, 0x20000, CRC(e17f9bf7) SHA1(f44bb378de428b429c97a21f74829182d3187ace) ) // == so2_30e.11f
+ ROM_LOAD16_BYTE( "so2_35.11h", 0x00001, 0x20000, CRC(4477df61) SHA1(e9b42357c7073c098e8fde7e7d0e4a6e3062fd0d) )
+ ROM_LOAD16_BYTE( "so2_31.12f", 0x40000, 0x20000, CRC(51204d36) SHA1(af288fc369d092f38ea73be967705aacade06f28) ) // == so2_31e.12f
+ ROM_LOAD16_BYTE( "so2_36.12h", 0x40001, 0x20000, CRC(9cfba8b4) SHA1(df8ee5e3a68f056f68f096c46fdb548f63d29446) ) // == so2_36e.12h
+ ROM_LOAD16_WORD_SWAP( "so2-32m.8h", 0x80000, 0x80000, CRC(2eb5cf0c) SHA1(e0d765fb6957d156ffd40cabf51ba6098cbbeb19) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "so2-6m.8a", 0x000000, 0x80000, CRC(aa6102af) SHA1(4a45f3547a3640f256e5e20bfd72784f880f03f5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-8m.10a", 0x000002, 0x80000, CRC(839e6869) SHA1(7741141a9f1b1e2956edc1d11f9cc3974390c4ed) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-2m.4a", 0x000004, 0x80000, CRC(597c2875) SHA1(440bd04db2c121a6976e5e1027071d28812942d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2-4m.6a", 0x000006, 0x80000, CRC(912a9ca0) SHA1(b226a4a388e57e23d7a7559773ebee434125a2e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "so2_24.7d", 0x200000, 0x20000, CRC(3f254efe) SHA1(5db36eb98a6d3c7acccb561d92c1988d1330cbbf) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_14.7c", 0x200001, 0x20000, CRC(f5a8905e) SHA1(fada8b635d490c06b75711ed505a025bb0aa4454) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_26.9d", 0x200002, 0x20000, CRC(f3aa5a4a) SHA1(bcb3396de5524fffd4110bfbeeeca1c936990eb3) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_16.9c", 0x200003, 0x20000, CRC(b43cd1a8) SHA1(01c2bb802469848a172968802a674c0045a8b8dc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_20.3d", 0x200004, 0x20000, CRC(8ca751a3) SHA1(e93bbe7311f14e7e3cbfb42b83fd7fee4bb9cefc) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_10.3c", 0x200005, 0x20000, CRC(e9f569fd) SHA1(39ae9eacdf1f35ef90d131444c37958d7aaf7238) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_22.5d", 0x200006, 0x20000, CRC(fce9a377) SHA1(5de5f696f63326f2cb4c38bcb05e07bcf2246071) , ROM_SKIP(7) )
+ ROMX_LOAD( "so2_12.5c", 0x200007, 0x20000, CRC(b7df8a06) SHA1(b42cb0d3f55a1e8fe8afbbd9aeae50074cdc5f08) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "so2_09.12b", 0x00000, 0x08000, CRC(d09d7c7a) SHA1(8e8532be08818c855d9c3ce45716eb07cfab5767) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "so2_18.11c", 0x00000, 0x20000, CRC(bbea1643) SHA1(d43d68a120550067bf0b181f88687ad230cd7908) )
+ ROM_LOAD( "so2_19.12c", 0x20000, 0x20000, CRC(ac58aa71) SHA1(93102272e358bc49d3936302efdc5bb68df84d68) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "o224b.1a", 0x0000, 0x0117, CRC(c211c8cd) SHA1(d9464792e663549e6ad20aac6484622298f88a78) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c628", 0x0000, 0x0117, NO_DUMP )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( mercsj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "so2_36.12f", 0x00000, 0x20000, CRC(e17f9bf7) SHA1(f44bb378de428b429c97a21f74829182d3187ace) ) // == so2_30e.11f
+ ROM_LOAD16_BYTE( "so2_42.12h", 0x00001, 0x20000, CRC(2c3884c6) SHA1(98c3e93741d2344fe0a699aacdc5038bdd9007a0) )
+ ROM_LOAD16_BYTE( "so2_37.13f", 0x40000, 0x20000, CRC(51204d36) SHA1(af288fc369d092f38ea73be967705aacade06f28) ) // == so2_31e.12f
+ ROM_LOAD16_BYTE( "so2_43.13h", 0x40001, 0x20000, CRC(9cfba8b4) SHA1(df8ee5e3a68f056f68f096c46fdb548f63d29446) ) // == so2_36e.12h
+ ROM_LOAD16_BYTE( "so2_34.10f", 0x80000, 0x20000, CRC(b8dae95f) SHA1(2db4a20afd40b772a16f1bee999a0b82d3379ac7) ) // == so2-32m.8h
+ ROM_LOAD16_BYTE( "so2_40.10h", 0x80001, 0x20000, CRC(de37771c) SHA1(45e1e2ef4e46dbe8881e809d700fdd3d06a03c92) ) // == so2-32m.8h
+ ROM_LOAD16_BYTE( "so2_35.11f", 0xc0000, 0x20000, CRC(7d24394d) SHA1(2f4cf51fcfc1b960b68cfe3f1b75914402f2c702) ) // == so2-32m.8h
+ ROM_LOAD16_BYTE( "so2_41.11h", 0xc0001, 0x20000, CRC(914f85e0) SHA1(0b32adf2d3c83e187a5f670de18728726fabb731) ) // == so2-32m.8h
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "so2_09.4b", 0x000000, 0x20000, CRC(690c261d) SHA1(27219101fb62a0c0378e6f5d2f9c0bb5c9397193) , ROM_SKIP(7) ) // == so2-6m.8a
+ ROMX_LOAD( "so2_01.4a", 0x000001, 0x20000, CRC(31fd2715) SHA1(d80b7a93c3b4e5e482fe6bb9ed9d261377980351) , ROM_SKIP(7) ) // == so2-6m.8a
+ ROMX_LOAD( "so2_13.9b", 0x000002, 0x20000, CRC(b5e48282) SHA1(5f387929b4f1ebb8cb8c24138317d4208e2cf7c2) , ROM_SKIP(7) ) // == so2-8m.10a
+ ROMX_LOAD( "so2_05.9a", 0x000003, 0x20000, CRC(54bed82c) SHA1(4a45ceaec3f6162443b2c62b816612c19a609341) , ROM_SKIP(7) ) // == so2-8m.10a
+ ROMX_LOAD( "so2_24.5e", 0x000004, 0x20000, CRC(78b6f0cb) SHA1(679c39d71d3b73db088d0ab017e80fd8316045b5) , ROM_SKIP(7) ) // == so2-2m.4a
+ ROMX_LOAD( "so2_17.5c", 0x000005, 0x20000, CRC(e78bb308) SHA1(7c0c2cf4c79e0bb3c401ba8fdcc88ccc3ed64246) , ROM_SKIP(7) ) // == so2-2m.4a
+ ROMX_LOAD( "so2_38.8h", 0x000006, 0x20000, CRC(0010a9a2) SHA1(03fedaaa939b56afb1b376243542e68da68e2690) , ROM_SKIP(7) ) // == so2-4m.6a
+ ROMX_LOAD( "so2_32.8f", 0x000007, 0x20000, CRC(75dffc9a) SHA1(ef296e1c0742e0b5a6e104032f0492151e631691) , ROM_SKIP(7) ) // == so2-4m.6a
+ ROMX_LOAD( "so2_10.5b", 0x100000, 0x20000, CRC(2f871714) SHA1(8a39f120e3f50fc9a7e6cee659260b2f823fb0e0) , ROM_SKIP(7) ) // == so2-6m.8a
+ ROMX_LOAD( "so2_02.5a", 0x100001, 0x20000, CRC(b4b2a0b7) SHA1(ee42ed3de9021e8d08d6c7115f2de73476b93452) , ROM_SKIP(7) ) // == so2-6m.8a
+ ROMX_LOAD( "so2_14.10b", 0x100002, 0x20000, CRC(737a744b) SHA1(8e1477a67862f7c0c598d3d1a1f633946e7ab31b) , ROM_SKIP(7) ) // == so2-8m.10a
+ ROMX_LOAD( "so2_06.10a", 0x100003, 0x20000, CRC(9d756f51) SHA1(4e9773ee25f6a952fb4f541d37e5e46e4089fd07) , ROM_SKIP(7) ) // == so2-8m.10a
+ ROMX_LOAD( "so2_25.7e", 0x100004, 0x20000, CRC(6d0e05d6) SHA1(47cbec235bd4b250db007218dc357101ae453d1a) , ROM_SKIP(7) ) // == so2-2m.4a
+ ROMX_LOAD( "so2_18.7c", 0x100005, 0x20000, CRC(96f61f4e) SHA1(954334bd8c2d2b02175de60d6a181a23e723d040) , ROM_SKIP(7) ) // == so2-2m.4a
+ ROMX_LOAD( "so2_39.9h", 0x100006, 0x20000, CRC(d52ba336) SHA1(49550d316e575a4e64ea6a5f769f3cd716be6df5) , ROM_SKIP(7) ) // == so2-4m.6a
+ ROMX_LOAD( "so2_33.9f", 0x100007, 0x20000, CRC(39b90d25) SHA1(1089cca168a4abeb398fa93eddd4d9fff70d5db5) , ROM_SKIP(7) ) // == so2-4m.6a
+ ROMX_LOAD( "so2_11.7b", 0x200000, 0x20000, CRC(3f254efe) SHA1(5db36eb98a6d3c7acccb561d92c1988d1330cbbf) , ROM_SKIP(7) ) // == so2_24.7d
+ ROMX_LOAD( "so2_03.7a", 0x200001, 0x20000, CRC(f5a8905e) SHA1(fada8b635d490c06b75711ed505a025bb0aa4454) , ROM_SKIP(7) ) // == so2_14.7c
+ ROMX_LOAD( "so2_15.11b", 0x200002, 0x20000, CRC(f3aa5a4a) SHA1(bcb3396de5524fffd4110bfbeeeca1c936990eb3) , ROM_SKIP(7) ) // == so2_26.9d
+ ROMX_LOAD( "so2_07.11a", 0x200003, 0x20000, CRC(b43cd1a8) SHA1(01c2bb802469848a172968802a674c0045a8b8dc) , ROM_SKIP(7) ) // == so2_16.9c
+ ROMX_LOAD( "so2_26.8e", 0x200004, 0x20000, CRC(8ca751a3) SHA1(e93bbe7311f14e7e3cbfb42b83fd7fee4bb9cefc) , ROM_SKIP(7) ) // == so2_20.3d
+ ROMX_LOAD( "so2_19.8c", 0x200005, 0x20000, CRC(e9f569fd) SHA1(39ae9eacdf1f35ef90d131444c37958d7aaf7238) , ROM_SKIP(7) ) // == so2_10.3c
+ ROMX_LOAD( "so2_28.10e", 0x200006, 0x20000, CRC(fce9a377) SHA1(5de5f696f63326f2cb4c38bcb05e07bcf2246071) , ROM_SKIP(7) ) // == so2_22.5d
+ ROMX_LOAD( "so2_21.10c", 0x200007, 0x20000, CRC(b7df8a06) SHA1(b42cb0d3f55a1e8fe8afbbd9aeae50074cdc5f08) , ROM_SKIP(7) ) // == so2_12.5c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "so2_23.13b", 0x00000, 0x08000, CRC(d09d7c7a) SHA1(8e8532be08818c855d9c3ce45716eb07cfab5767) ) // == so2_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "so2_30.12c", 0x00000, 0x20000, CRC(bbea1643) SHA1(d43d68a120550067bf0b181f88687ad230cd7908) ) // == so2_18.11c
+ ROM_LOAD( "so2_31.13c", 0x20000, 0x20000, CRC(ac58aa71) SHA1(93102272e358bc49d3936302efdc5bb68df84d68) ) // == so2_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "o222b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) // pal verification required
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c628", 0x0000, 0x0117, NO_DUMP )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mtwins )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "che_30.11f", 0x00000, 0x20000, CRC(9a2a2db1) SHA1(57524e76311afc8ab5d5affa76c85cb1be5a1faf) )
+ ROM_LOAD16_BYTE( "che_35.11h", 0x00001, 0x20000, CRC(a7f96b02) SHA1(b5fda02e5069f9e1cdafbacf98334510e9af8fcd) )
+ ROM_LOAD16_BYTE( "che_31.12f", 0x40000, 0x20000, CRC(bbff8a99) SHA1(1f931fad9f43a1494f3b8dbcf910156d5b0bd458) )
+ ROM_LOAD16_BYTE( "che_36.12h", 0x40001, 0x20000, CRC(0fa00c39) SHA1(6404d91590c5c521c8fe944a0aa7091e35b664ae) )
+ ROM_LOAD16_WORD_SWAP( "ck-32m.8h", 0x80000, 0x80000, CRC(9b70bd41) SHA1(28ec37d9d0ace5b9fd212fdc02e0f13dc280c068) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ck-5m.7a", 0x000000, 0x80000, CRC(4ec75f15) SHA1(a4669e3864009b01894406db784116ad5cd2eced) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ck-7m.9a", 0x000002, 0x80000, CRC(d85d00d6) SHA1(ca6ddcbfbb0f9ad98dc19f09e879fdac5b62d168) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ck-1m.3a", 0x000004, 0x80000, CRC(f33ca9d4) SHA1(480d90ff16f27777cc7d7de6925ed6378b35dc27) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ck-3m.5a", 0x000006, 0x80000, CRC(0ba2047f) SHA1(efee13b955c2ded52700025cecbb9fb301098b61) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ch_09.12b", 0x00000, 0x08000, CRC(4d4255b7) SHA1(81a76b58043af7252a854b7efc4109957ef0e679) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ch_18.11c", 0x00000, 0x20000, CRC(f909e8de) SHA1(2dd5bd4076e7d5ded98b72919f868ea700df2e4f) )
+ ROM_LOAD( "ch_19.12c", 0x20000, 0x20000, CRC(fc158cf7) SHA1(294b93d0aea60663ffe96364671552e944a1264b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ck24b.1a", 0x0000, 0x0117, CRC(bd99c448) SHA1(2692c158f76769b0743103cc3a6d1c5d1f4f52ec) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( chikij )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "chj_36a.12f", 0x00000, 0x20000, CRC(ec1328d8) SHA1(a7111f9c264c56d1c6474ec3ad90e394a32a86f6) )
+ ROM_LOAD16_BYTE( "chj_42a.12h", 0x00001, 0x20000, CRC(4ae13503) SHA1(c47db0445e107ad4fb62b74e277a7dc2b4d9b7ea) )
+ ROM_LOAD16_BYTE( "chj_37a.13f", 0x40000, 0x20000, CRC(46d2cf7b) SHA1(5cb7ed3003d89a08882d4dcd326c8fd9430f0eac) )
+ ROM_LOAD16_BYTE( "chj_43a.13h", 0x40001, 0x20000, CRC(8d387fe8) SHA1(7832ecd487b5ef4e49b5ea78e80e52f8e2dcaa17) )
+ ROM_LOAD16_BYTE( "ch_34.10f", 0x80000, 0x20000, CRC(609ed2f9) SHA1(869924ff1bc78ac4b50bcfd37a8e76820a9fddf1) ) // == ck-32m.8h
+ ROM_LOAD16_BYTE( "ch_40.10h", 0x80001, 0x20000, CRC(be0d8301) SHA1(28dbbb4176800b31068b1beecf54a78085092e5a) ) // == ck-32m.8h
+ ROM_LOAD16_BYTE( "ch_35.11f", 0xc0000, 0x20000, CRC(b810867f) SHA1(c971d286c60a9b61f42ea3b792cf59847aacb965) ) // == ck-32m.8h
+ ROM_LOAD16_BYTE( "ch_41.11h", 0xc0001, 0x20000, CRC(8ad96155) SHA1(673a5b5eb7330fbbc02aabcdb164efea193613a3) ) // == ck-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ch_09.4b", 0x000000, 0x20000, CRC(567ab3ca) SHA1(b3d1531d9307285fcecff937dce0bed7ce9e4253) , ROM_SKIP(7) ) // == ck-5m.7a
+ ROMX_LOAD( "ch_01.4a", 0x000001, 0x20000, CRC(7f3b7b56) SHA1(cf78c3122628aa0e14f7b5017429aee35e9b266d) , ROM_SKIP(7) ) // == ck-5m.7a
+ ROMX_LOAD( "ch_13.9b", 0x000002, 0x20000, CRC(12a7a8ba) SHA1(22eaa1c667213a37b2c700c5c80dbf9cb81b9f5f) , ROM_SKIP(7) ) // == ck-7m.9a
+ ROMX_LOAD( "ch_05.9a", 0x000003, 0x20000, CRC(6c1afb9a) SHA1(cef28a63550c6ec3fe7cd7ec478a7fb726df4e27) , ROM_SKIP(7) ) // == ck-7m.9a
+ ROMX_LOAD( "ch_24.5e", 0x000004, 0x20000, CRC(9cb6e6bc) SHA1(af241438de5bd754e176eec8ad45941f9bf30523) , ROM_SKIP(7) ) // == ck-1m.3a
+ ROMX_LOAD( "ch_17.5c", 0x000005, 0x20000, CRC(fe490846) SHA1(0d1ddb79c1ee2a7ff4bcdb960e18fc3cfb115e75) , ROM_SKIP(7) ) // == ck-1m.3a
+ ROMX_LOAD( "ch_38.8h", 0x000006, 0x20000, CRC(6e5c8cb6) SHA1(438b897c14dccc0a185032b1ae2b93d71eed305a) , ROM_SKIP(7) ) // == ck-3m.5a
+ ROMX_LOAD( "ch_32.8f", 0x000007, 0x20000, CRC(317d27b0) SHA1(5d8a3ab24fcf65b30e1c0affd80301e29e3bf208) , ROM_SKIP(7) ) // == ck-3m.5a
+ ROMX_LOAD( "ch_10.5b", 0x100000, 0x20000, CRC(e8251a9b) SHA1(e0d5eaba20dc1132643b9ea334b36034ce97fc6d) , ROM_SKIP(7) ) // == ck-5m.7a
+ ROMX_LOAD( "ch_02.5a", 0x100001, 0x20000, CRC(7c8c88fb) SHA1(29d1e5d6780b7d6875efff6b086fd03bef779df7) , ROM_SKIP(7) ) // == ck-5m.7a
+ ROMX_LOAD( "ch_14.10b", 0x100002, 0x20000, CRC(4012ec4b) SHA1(041e08e1f407528da84b973d16c5f64f02bd14fe) , ROM_SKIP(7) ) // == ck-7m.9a
+ ROMX_LOAD( "ch_06.10a", 0x100003, 0x20000, CRC(81884b2b) SHA1(1e4682183c167c95b2fb3986887c31d3e8911484) , ROM_SKIP(7) ) // == ck-7m.9a
+ ROMX_LOAD( "ch_25.7e", 0x100004, 0x20000, CRC(1dfcbac5) SHA1(a7e419326a4bb7062c5bc7d0b3194b96e00a92d0) , ROM_SKIP(7) ) // == ck-1m.3a
+ ROMX_LOAD( "ch_18.7c", 0x100005, 0x20000, CRC(516a34d1) SHA1(6516fa19d251898c6f55ab0fda760fc5404bef06) , ROM_SKIP(7) ) // == ck-1m.3a
+ ROMX_LOAD( "ch_39.9h", 0x100006, 0x20000, CRC(872fb2a4) SHA1(1f5d12b78100dfba7f6c9a076f7923811467aa2b) , ROM_SKIP(7) ) // == ck-3m.5a
+ ROMX_LOAD( "ch_33.9f", 0x100007, 0x20000, CRC(30dc5ded) SHA1(34a7a6f9aa61ce47116d63c2feb7ea8a427b93e0) , ROM_SKIP(7) ) // == ck-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ch_23.13b", 0x00000, 0x08000, CRC(4d4255b7) SHA1(81a76b58043af7252a854b7efc4109957ef0e679) ) // == ch_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ch_30.12c", 0x00000, 0x20000, CRC(f909e8de) SHA1(2dd5bd4076e7d5ded98b72919f868ea700df2e4f) ) // == ch_18.11c
+ ROM_LOAD( "ch_31.13c", 0x20000, 0x20000, CRC(fc158cf7) SHA1(294b93d0aea60663ffe96364671552e944a1264b) ) // == ch_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ck22b.1a", 0x0000, 0x0117, CRC(24fdfdeb) SHA1(850b760de694dc5455e63c89983266ecda836400) )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) // pal verification required
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( msword )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "mse_30.11f", 0x00000, 0x20000, CRC(03fc8dbc) SHA1(a9e4e8a06e2d170faeae75a8b17fd65e6e5fecd4) )
+ ROM_LOAD16_BYTE( "mse_35.11h", 0x00001, 0x20000, CRC(d5bf66cd) SHA1(37c5bc4deafd7037ec5cf09c88bb89f35ea3d95c) )
+ ROM_LOAD16_BYTE( "mse_31.12f", 0x40000, 0x20000, CRC(30332bcf) SHA1(1c77c06028b77473276cb5dde5ecf414b43a7b78) )
+ ROM_LOAD16_BYTE( "mse_36.12h", 0x40001, 0x20000, CRC(8f7d6ce9) SHA1(7694c940023c12520663593f973ddb4168a6bfa5) )
+ ROM_LOAD16_WORD_SWAP( "ms-32m.8h", 0x80000, 0x80000, CRC(2475ddfc) SHA1(cc34dfae8124aa781320be6870a1929495eee456) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ms-5m.7a", 0x000000, 0x80000, CRC(c00fe7e2) SHA1(1ce82ea36996908620d3ac8aabd3650118d6c255) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-7m.9a", 0x000002, 0x80000, CRC(4ccacac5) SHA1(f2e30edf6ad100da411584bb0b828420256a9d5c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-1m.3a", 0x000004, 0x80000, CRC(0d2bbe00) SHA1(dca13fc7ff63ad7fb175a71ada1ee22d21a8811d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-3m.5a", 0x000006, 0x80000, CRC(3a1a5bf4) SHA1(88a7cc0bf29b3516a97f661691500ff28e91a362) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ms_09.12b", 0x00000, 0x08000, CRC(57b29519) SHA1(a6b4fc2b9595d1a49f2b93581f107b68d484d156) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ms_18.11c", 0x00000, 0x20000, CRC(fb64e90d) SHA1(d1a596ce2f8ac14a80b34335b173369a14b45f55) )
+ ROM_LOAD( "ms_19.12c", 0x20000, 0x20000, CRC(74f892b9) SHA1(bf48db5c438154e7b96fd31fde1be4aad5cf25eb) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ms24b.1a", 0x0000, 0x0117, CRC(636dbe6d) SHA1(6622a2294f82e70e9eb5ff24f84e0dc13e9168b5) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mswordr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ms_30.11f", 0x00000, 0x20000, CRC(21c1f078) SHA1(f32bd3b462cc84466244b362a66510b9d40ac2fd) )
+ ROM_LOAD16_BYTE( "ms_35.11h", 0x00001, 0x20000, CRC(a540a73a) SHA1(1c91241ba0d17d13adaa68e231b95dfd49d93b6d) )
+ ROM_LOAD16_BYTE( "ms_31.12f", 0x40000, 0x20000, CRC(d7e762b5) SHA1(6977130e9c0cd36d8a67e242c132df38f7aea5b7) )
+ ROM_LOAD16_BYTE( "ms_36.12h", 0x40001, 0x20000, CRC(66f2dcdb) SHA1(287508b1c96762d0048a10272cf2cbd39a7fba5c) )
+ ROM_LOAD16_WORD_SWAP( "ms-32m.8h", 0x80000, 0x80000, CRC(2475ddfc) SHA1(cc34dfae8124aa781320be6870a1929495eee456) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ms-5m.7a", 0x000000, 0x80000, CRC(c00fe7e2) SHA1(1ce82ea36996908620d3ac8aabd3650118d6c255) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-7m.9a", 0x000002, 0x80000, CRC(4ccacac5) SHA1(f2e30edf6ad100da411584bb0b828420256a9d5c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-1m.3a", 0x000004, 0x80000, CRC(0d2bbe00) SHA1(dca13fc7ff63ad7fb175a71ada1ee22d21a8811d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-3m.5a", 0x000006, 0x80000, CRC(3a1a5bf4) SHA1(88a7cc0bf29b3516a97f661691500ff28e91a362) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ms_09.12b", 0x00000, 0x08000, CRC(57b29519) SHA1(a6b4fc2b9595d1a49f2b93581f107b68d484d156) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ms_18.11c", 0x00000, 0x20000, CRC(fb64e90d) SHA1(d1a596ce2f8ac14a80b34335b173369a14b45f55) )
+ ROM_LOAD( "ms_19.12c", 0x20000, 0x20000, CRC(74f892b9) SHA1(bf48db5c438154e7b96fd31fde1be4aad5cf25eb) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ms24b.1a", 0x0000, 0x0117, CRC(636dbe6d) SHA1(6622a2294f82e70e9eb5ff24f84e0dc13e9168b5) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( mswordu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "msu_30.11f", 0x00000, 0x20000, CRC(d963c816) SHA1(e23844a60ddfc0a8a98c0ada9c3d58fce71c5484) )
+ ROM_LOAD16_BYTE( "msu_35.11h", 0x00001, 0x20000, CRC(72f179b3) SHA1(8d31cdc84b02fc345fc78e8f231410adeb834c28) )
+ ROM_LOAD16_BYTE( "msu_31.12f", 0x40000, 0x20000, CRC(20cd7904) SHA1(cea2db01be97f69dc10e9da80f3b46f6ddaa953a) )
+ ROM_LOAD16_BYTE( "msu_36.12h", 0x40001, 0x20000, CRC(bf88c080) SHA1(b8cd0b127fd3e1afc45402e667ff4b4b01602384) )
+ ROM_LOAD16_WORD_SWAP( "ms-32m.8h", 0x80000, 0x80000, CRC(2475ddfc) SHA1(cc34dfae8124aa781320be6870a1929495eee456) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ms-5m.7a", 0x000000, 0x80000, CRC(c00fe7e2) SHA1(1ce82ea36996908620d3ac8aabd3650118d6c255) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-7m.9a", 0x000002, 0x80000, CRC(4ccacac5) SHA1(f2e30edf6ad100da411584bb0b828420256a9d5c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-1m.3a", 0x000004, 0x80000, CRC(0d2bbe00) SHA1(dca13fc7ff63ad7fb175a71ada1ee22d21a8811d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ms-3m.5a", 0x000006, 0x80000, CRC(3a1a5bf4) SHA1(88a7cc0bf29b3516a97f661691500ff28e91a362) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ms_09.12b", 0x00000, 0x08000, CRC(57b29519) SHA1(a6b4fc2b9595d1a49f2b93581f107b68d484d156) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ms_18.11c", 0x00000, 0x20000, CRC(fb64e90d) SHA1(d1a596ce2f8ac14a80b34335b173369a14b45f55) )
+ ROM_LOAD( "ms_19.12c", 0x20000, 0x20000, CRC(74f892b9) SHA1(bf48db5c438154e7b96fd31fde1be4aad5cf25eb) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ms24b.1a", 0x0000, 0x0117, CRC(636dbe6d) SHA1(6622a2294f82e70e9eb5ff24f84e0dc13e9168b5) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( mswordj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "msj_36.12f", 0x00000, 0x20000, CRC(04f0ef50) SHA1(76dac695732ade1873bb6da51834ef90c6595689) )
+ ROM_LOAD16_BYTE( "msj_42.12h", 0x00001, 0x20000, CRC(9fcbb9cd) SHA1(bfbf805ddecd3fa9e209a658526e1430ad9e459a) )
+ ROM_LOAD16_BYTE( "msj_37.13f", 0x40000, 0x20000, CRC(6c060d70) SHA1(7fe56f125bc11156955bf0defc956fe7c18a1c72) )
+ ROM_LOAD16_BYTE( "msj_43.13h", 0x40001, 0x20000, CRC(aec77787) SHA1(3260f9a80b67394dd90dbabdd544c9b8b31e5817) )
+ ROM_LOAD16_BYTE( "ms_34.10f", 0x80000, 0x20000, CRC(0e59a62d) SHA1(d109e5edfb32ce3dc7c32e10a78fc3e943029a73) ) // == ms-32m.8h
+ ROM_LOAD16_BYTE( "ms_40.10h", 0x80001, 0x20000, CRC(babade3a) SHA1(00acdcb5b316611a6df55e54f6ac4ec3503e1cac) ) // == ms-32m.8h
+ ROM_LOAD16_BYTE( "ms_35.11f", 0xc0000, 0x20000, CRC(03da99d1) SHA1(f21a27f1122e1ee237a53b06ecd24737ac0d2c0e) ) // == ms-32m.8h
+ ROM_LOAD16_BYTE( "ms_41.11h", 0xc0001, 0x20000, CRC(fadf99ea) SHA1(a3f3ef357f02c30b7f76941e5f854746774b0114) ) // == ms-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ms_09.4b", 0x000000, 0x20000, CRC(4adee6f6) SHA1(3becf055313f2fb90c42b839124d8ba4ccc047e0) , ROM_SKIP(7) ) // == ms-5m.7a
+ ROMX_LOAD( "ms_01.4a", 0x000001, 0x20000, CRC(f7ab1b88) SHA1(9dae1c21c5379413e173fb13521821339ef0852e) , ROM_SKIP(7) ) // == ms-5m.7a
+ ROMX_LOAD( "ms_13.9b", 0x000002, 0x20000, CRC(e01adc4b) SHA1(1eaf3511a3ffbd4b26a755d5f818e604cfd7764a) , ROM_SKIP(7) ) // == ms-7m.9a
+ ROMX_LOAD( "ms_05.9a", 0x000003, 0x20000, CRC(f62c2369) SHA1(568d05c256889a2450b53373e68858ea6ae52007) , ROM_SKIP(7) ) // == ms-7m.9a
+ ROMX_LOAD( "ms_24.5e", 0x000004, 0x20000, CRC(be64a3a1) SHA1(92a8f44a7f141fa189543f7b2564b9c0e44fb44f) , ROM_SKIP(7) ) // == ms-1m.3a
+ ROMX_LOAD( "ms_17.5c", 0x000005, 0x20000, CRC(0bc1665f) SHA1(4b92e4f1f423964ece9d5ecbe960be3a06c42565) , ROM_SKIP(7) ) // == ms-1m.3a
+ ROMX_LOAD( "ms_38.8h", 0x000006, 0x20000, CRC(904a2ed5) SHA1(8954c13f5c008ab6f28fa3adfba811c1173a2d88) , ROM_SKIP(7) ) // == ms-3m.5a
+ ROMX_LOAD( "ms_32.8f", 0x000007, 0x20000, CRC(3d89c530) SHA1(7a9d82e1ccd0dd3b27d91013ef127233a0dd42a1) , ROM_SKIP(7) ) // == ms-3m.5a
+ ROMX_LOAD( "ms_10.5b", 0x100000, 0x20000, CRC(f02c0718) SHA1(6055673fff3b57b7ba69eea8b45d7df36dfc5ba7) , ROM_SKIP(7) ) // == ms-5m.7a
+ ROMX_LOAD( "ms_02.5a", 0x100001, 0x20000, CRC(d071a405) SHA1(205d706a992efa4bd772699472ab40eedd70f686) , ROM_SKIP(7) ) // == ms-5m.7a
+ ROMX_LOAD( "ms_14.10b", 0x100002, 0x20000, CRC(dfb2e4df) SHA1(371c2a8d97eb0592b7b8767c1b992b4375933ac4) , ROM_SKIP(7) ) // == ms-7m.9a
+ ROMX_LOAD( "ms_06.10a", 0x100003, 0x20000, CRC(d3ce2a91) SHA1(21ed0f7d4a1e9d0b1eb6a1cf4e5d082b773eb36c) , ROM_SKIP(7) ) // == ms-7m.9a
+ ROMX_LOAD( "ms_25.7e", 0x100004, 0x20000, CRC(0f199d56) SHA1(0df4eda96b3327bd1d1fe6416e75e8b76b6593ac) , ROM_SKIP(7) ) // == ms-1m.3a
+ ROMX_LOAD( "ms_18.7c", 0x100005, 0x20000, CRC(1ba76df2) SHA1(db7c16e6fde29c764278bdf76fc04c05567666e5) , ROM_SKIP(7) ) // == ms-1m.3a
+ ROMX_LOAD( "ms_39.9h", 0x100006, 0x20000, CRC(01efce86) SHA1(665182bb61b1efb300422f7076d8538d2ca514ce) , ROM_SKIP(7) ) // == ms-3m.5a
+ ROMX_LOAD( "ms_33.9f", 0x100007, 0x20000, CRC(ce25defc) SHA1(885eef9bac1d401f3e49c46294e573dd9cfad3a1) , ROM_SKIP(7) ) // == ms-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ms_23.13b", 0x00000, 0x08000, CRC(57b29519) SHA1(a6b4fc2b9595d1a49f2b93581f107b68d484d156) ) // == ms_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ms_30.12c", 0x00000, 0x20000, CRC(fb64e90d) SHA1(d1a596ce2f8ac14a80b34335b173369a14b45f55) ) // == ms_18.11c
+ ROM_LOAD( "ms_31.13c", 0x20000, 0x20000, CRC(74f892b9) SHA1(bf48db5c438154e7b96fd31fde1be4aad5cf25eb) ) // == ms_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ms22b.1a", 0x0000, 0x0117, CRC(dde86cb0) SHA1(d0b93a0b62a7cc3c3473da31fc00043392bc8f75) )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( cawing )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "cae_30a.11f", 0x00000, 0x20000, CRC(91fceacd) SHA1(4845999a96fee829264346ca399fdd64a8408001) )
+ ROM_LOAD16_BYTE( "cae_35a.11h", 0x00001, 0x20000, CRC(3ef03083) SHA1(297dfc9ec1e0f07d6083bf5efaa0de8d0fb361fa) )
+ ROM_LOAD16_BYTE( "cae_31a.12f", 0x40000, 0x20000, CRC(e5b75caf) SHA1(4d04220c78620867b7598deea5685bbe88298ae6) )
+ ROM_LOAD16_BYTE( "cae_36a.12h", 0x40001, 0x20000, CRC(c73fd713) SHA1(fa202c252b2cc5972d42d634c466d89cf8b5d178) )
+ ROM_LOAD16_WORD_SWAP( "ca-32m.8h", 0x80000, 0x80000, CRC(0c4837d4) SHA1(1c61958b43066b59d86eb4bae0b52c3109be4b07) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ca-5m.7a", 0x000000, 0x80000, CRC(66d4cc37) SHA1(d355ea64ff29d228dcbfeee72bcf11882bf1cd9d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-7m.9a", 0x000002, 0x80000, CRC(b6f896f2) SHA1(bdb6820b81fbce77d7eacb01777af7c380490402) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-1m.3a", 0x000004, 0x80000, CRC(4d0620fd) SHA1(5f62cd551b6a230edefd81fa60c10c84186ca804) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-3m.5a", 0x000006, 0x80000, CRC(0b0341c3) SHA1(c31f0e78f49d94ea9dea20eb0cbd98a6c613bcbf) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ca_9.12b", 0x00000, 0x08000, CRC(96fe7485) SHA1(10466889dfc6bc8afd3075385e241a16372efbeb) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ca_18.11c", 0x00000, 0x20000, CRC(4a613a2c) SHA1(06e10644fc60925b85d2ca0888c9fa057bfe996a) )
+ ROM_LOAD( "ca_19.12c", 0x20000, 0x20000, CRC(74584493) SHA1(5cfb15f1b9729323707972646313aee8ab3ac4eb) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ca24b.1a", 0x0000, 0x0117, CRC(76ec0b1c) SHA1(71a7e22613981182fd5b1156f4e495337ab8a172) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( cawingr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "cae_30.11f", 0x00000, 0x20000, CRC(23305cd5) SHA1(59cbcb79c171b433f278e128c73cdd3635876370) )
+ ROM_LOAD16_BYTE( "cae_35.11h", 0x00001, 0x20000, CRC(69419113) SHA1(cfbb6dbbe224ffaf7747fd70b65a7dbd4f696fe9) )
+ ROM_LOAD16_BYTE( "cae_31.12f", 0x40000, 0x20000, CRC(9008dfb3) SHA1(81fdd21606caabe9e0df773fc33377c958ab80f6) )
+ ROM_LOAD16_BYTE( "cae_36.12h", 0x40001, 0x20000, CRC(4dbf6f8e) SHA1(a2da49dce72c2366381bd8bea8ce4eba0b70d78c) )
+ ROM_LOAD16_WORD_SWAP( "ca-32m.8h", 0x80000, 0x80000, CRC(0c4837d4) SHA1(1c61958b43066b59d86eb4bae0b52c3109be4b07) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ca-5m.7a", 0x000000, 0x80000, CRC(66d4cc37) SHA1(d355ea64ff29d228dcbfeee72bcf11882bf1cd9d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-7m.9a", 0x000002, 0x80000, CRC(b6f896f2) SHA1(bdb6820b81fbce77d7eacb01777af7c380490402) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-1m.3a", 0x000004, 0x80000, CRC(4d0620fd) SHA1(5f62cd551b6a230edefd81fa60c10c84186ca804) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-3m.5a", 0x000006, 0x80000, CRC(0b0341c3) SHA1(c31f0e78f49d94ea9dea20eb0cbd98a6c613bcbf) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "cae_09.12b", 0x00000, 0x08000, CRC(96fe7485) SHA1(10466889dfc6bc8afd3075385e241a16372efbeb) ) // == ca_9.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "cae_18.11c", 0x00000, 0x20000, CRC(4a613a2c) SHA1(06e10644fc60925b85d2ca0888c9fa057bfe996a) ) // == ca_18.11c
+ ROM_LOAD( "cae_19.12c", 0x20000, 0x20000, CRC(74584493) SHA1(5cfb15f1b9729323707972646313aee8ab3ac4eb) ) // == ca_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ca24b.1a", 0x0000, 0x0117, CRC(76ec0b1c) SHA1(71a7e22613981182fd5b1156f4e495337ab8a172) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( cawingu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "cau_30a.11f", 0x00000, 0x20000, CRC(91fceacd) SHA1(4845999a96fee829264346ca399fdd64a8408001) ) // == cae_30a.11f
+ ROM_LOAD16_BYTE( "cau_35a.11h", 0x00001, 0x20000, CRC(f090d9b2) SHA1(261dc4ac79507299a7f9a1ad5edb8425345db06c) )
+ ROM_LOAD16_BYTE( "cau_31a.12f", 0x40000, 0x20000, CRC(e5b75caf) SHA1(4d04220c78620867b7598deea5685bbe88298ae6) ) // == cae_31a.12f
+ ROM_LOAD16_BYTE( "cau_36a.12h", 0x40001, 0x20000, CRC(c73fd713) SHA1(fa202c252b2cc5972d42d634c466d89cf8b5d178) ) // == cae_36a.12h
+ ROM_LOAD16_WORD_SWAP( "ca-32m.8h", 0x80000, 0x80000, CRC(0c4837d4) SHA1(1c61958b43066b59d86eb4bae0b52c3109be4b07) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ca-5m.7a", 0x000000, 0x80000, CRC(66d4cc37) SHA1(d355ea64ff29d228dcbfeee72bcf11882bf1cd9d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-7m.9a", 0x000002, 0x80000, CRC(b6f896f2) SHA1(bdb6820b81fbce77d7eacb01777af7c380490402) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-1m.3a", 0x000004, 0x80000, CRC(4d0620fd) SHA1(5f62cd551b6a230edefd81fa60c10c84186ca804) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-3m.5a", 0x000006, 0x80000, CRC(0b0341c3) SHA1(c31f0e78f49d94ea9dea20eb0cbd98a6c613bcbf) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "cau_09.12b", 0x00000, 0x08000, CRC(96fe7485) SHA1(10466889dfc6bc8afd3075385e241a16372efbeb) ) // == ca_9.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "cau_18.11c", 0x00000, 0x20000, CRC(4a613a2c) SHA1(06e10644fc60925b85d2ca0888c9fa057bfe996a) ) // == ca_18.11c
+ ROM_LOAD( "cau_19.12c", 0x20000, 0x20000, CRC(74584493) SHA1(5cfb15f1b9729323707972646313aee8ab3ac4eb) ) // == ca_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ca24b.1a", 0x0000, 0x0117, CRC(76ec0b1c) SHA1(71a7e22613981182fd5b1156f4e495337ab8a172) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( cawingj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "caj_36a.12f", 0x00000, 0x20000, CRC(91fceacd) SHA1(4845999a96fee829264346ca399fdd64a8408001) ) // == cae_30a.11f
+ ROM_LOAD16_BYTE( "caj_42a.12h", 0x00001, 0x20000, CRC(039f8362) SHA1(3fc7a642ddeaf94abdfdd5788a4b3c3b1f1b4c5e) )
+ ROM_LOAD16_BYTE( "caj_37a.13f", 0x40000, 0x20000, CRC(e5b75caf) SHA1(4d04220c78620867b7598deea5685bbe88298ae6) ) // == cae_31a.12f
+ ROM_LOAD16_BYTE( "caj_43a.13h", 0x40001, 0x20000, CRC(c73fd713) SHA1(fa202c252b2cc5972d42d634c466d89cf8b5d178) ) // == cae_36a.12h
+ ROM_LOAD16_BYTE( "caj_34.10f", 0x80000, 0x20000, CRC(51ea57f4) SHA1(7d7080dbf4b6f9b801b796937e9c3c45afed602f) )
+ ROM_LOAD16_BYTE( "caj_40.10h", 0x80001, 0x20000, CRC(2ab71ae1) SHA1(23814b58322902b23c4bdd744e60d819811462cc) )
+ ROM_LOAD16_BYTE( "caj_35.11f", 0xc0000, 0x20000, CRC(01d71973) SHA1(1f5fc0d47f1456a6338284f883dabc89697f8aa5) )
+ ROM_LOAD16_BYTE( "caj_41.11h", 0xc0001, 0x20000, CRC(3a43b538) SHA1(474a701500632cbd395ae404ede1d10a9969b342) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "caj_09.4b", 0x000000, 0x20000, CRC(41b0f9a6) SHA1(5a59df64d0c665d5d479ef2d9e7ec191ca0e7a92) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_01.4a", 0x000001, 0x20000, CRC(1002d0b8) SHA1(896bec683c1164c6f1fa1d81cadb8a1c549d4a4e) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_13.9b", 0x000002, 0x20000, CRC(6f3948b2) SHA1(942d37b84c727074941316b042679110594ae249) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_05.9a", 0x000003, 0x20000, CRC(207373d7) SHA1(4fa67c847f65e2657900f4fc93f1d8a7b95c12e6) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_24.5e", 0x000004, 0x20000, CRC(e356aad7) SHA1(55f1489044e70a57ad15e1f2c20567bd6c770f71) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_17.5c", 0x000005, 0x20000, CRC(540f2fd8) SHA1(4f500c7795aa41d472c59d2594fc84f6b17ed137) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_38.8h", 0x000006, 0x20000, CRC(2464d4ab) SHA1(092864551e7c1c6adbeb901a556f650ccf6ca2f4) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_32.8f", 0x000007, 0x20000, CRC(9b5836b3) SHA1(3fda5409d99104f355fa42ec413ccb799d1506c9) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_10.5b", 0x100000, 0x20000, CRC(bf8a5f52) SHA1(8cdd31a58de560d282e708c57cda0fefa7d6c92f) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_02.5a", 0x100001, 0x20000, CRC(125b018d) SHA1(edb3271f668e0328efd59e0929ee86efd5aa7b1f) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_14.10b", 0x100002, 0x20000, CRC(8458e7d7) SHA1(7ebe0a3597a7d8482c2d33640ed1b994fd3a02b2) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_06.10a", 0x100003, 0x20000, CRC(cf80e164) SHA1(d83573947fec01a9814919df719474aa3e6ae9a0) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_25.7e", 0x100004, 0x20000, CRC(cdd0204d) SHA1(7cbc129bc148718f8c36e27f05583cdecc57b63e) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_18.7c", 0x100005, 0x20000, CRC(29c1d4b1) SHA1(d0109ab2f521786a64548910947ca24976ec1218) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_39.9h", 0x100006, 0x20000, CRC(eea23b67) SHA1(79d35c15b4b4430d90cd6c270cdd3a064bc2e1a3) , ROM_SKIP(7) )
+ ROMX_LOAD( "caj_33.9f", 0x100007, 0x20000, CRC(dde3891f) SHA1(25b8069a9c8615323b94157b1ce39805559b68f4) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "caj_23.13b", 0x00000, 0x08000, CRC(96fe7485) SHA1(10466889dfc6bc8afd3075385e241a16372efbeb) ) // == ca_9.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "caj_30.12c", 0x00000, 0x20000, CRC(4a613a2c) SHA1(06e10644fc60925b85d2ca0888c9fa057bfe996a) ) // == ca_18.11c
+ ROM_LOAD( "caj_31.13c", 0x20000, 0x20000, CRC(74584493) SHA1(5cfb15f1b9729323707972646313aee8ab3ac4eb) ) // == ca_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ca22b.1a", 0x0000, 0x0117, CRC(5152e678) SHA1(ac61df30cd073b26f2145e3ea0c513ec804d047a) )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) /* seen the same pcb with LWIO.12E */
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( nemo )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "nme_30a.11f", 0x00000, 0x20000, CRC(d2c03e56) SHA1(df468e3b5deba01a6825b742f1cc87bfb26c1981) )
+ ROM_LOAD16_BYTE( "nme_35a.11h", 0x00001, 0x20000, CRC(5fd31661) SHA1(12f92a7255e8cae6975452db956670cf72d51768) )
+ ROM_LOAD16_BYTE( "nme_31a.12f", 0x40000, 0x20000, CRC(b2bd4f6f) SHA1(82a59b5f36cb4c23dca05297e2a643842fc12609) )
+ ROM_LOAD16_BYTE( "nme_36a.12h", 0x40001, 0x20000, CRC(ee9450e3) SHA1(a5454268ef58533e71fe07167b4c3fd263363f77) )
+ ROM_LOAD16_WORD_SWAP( "nm-32m.8h", 0x80000, 0x80000, CRC(d6d1add3) SHA1(61c3013d322dbb7622cca032adcd020ba318e885) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "nm-5m.7a", 0x000000, 0x80000, CRC(487b8747) SHA1(f14339b02b8f7ec2002632349e88fed4afc30050) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-7m.9a", 0x000002, 0x80000, CRC(203dc8c6) SHA1(d52577500e822b89904d1510d559f8575c2aaa78) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-1m.3a", 0x000004, 0x80000, CRC(9e878024) SHA1(9a5ce3a6a7952a8954d0709b9473db9253793d70) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-3m.5a", 0x000006, 0x80000, CRC(bb01e6b6) SHA1(3883e28f721d0278b2f4f877a804e95ee14f53e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "nme_09.12b", 0x00000, 0x08000, CRC(0f4b0581) SHA1(2e5a2885149c632abfaf4292a1bf032c13c8da6c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "nme_18.11c", 0x00000, 0x20000, CRC(bab333d4) SHA1(c1d0fb61ec46f17eb7edf69e1ad5ac91b5d51daa) )
+ ROM_LOAD( "nme_19.12c", 0x20000, 0x20000, CRC(2650a0a8) SHA1(e9e8cc1b27a2cb3e87124061fabcf42982f0611f) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "nm24b.1a", 0x0000, 0x0117, CRC(7b25bac6) SHA1(fa0083c59c8d6da07798cb3a4fc25d388065b7cd) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( nemor1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "nme_30.11f", 0x00000, 0x20000, CRC(71b333db) SHA1(8bd8b62d8fef2ad9d2788ccf46e89da953e5817c) )
+ ROM_LOAD16_BYTE( "nme_35.11h", 0x00001, 0x20000, CRC(d153bc18) SHA1(2b4a9a50081d403a6485b7311e179a31b659b74d) )
+ ROM_LOAD16_BYTE( "nme_31.12f", 0x40000, 0x20000, CRC(7e83dbd2) SHA1(d4c7e3786faab4dd9ded3c1a8f6fea114d423e64) )
+ ROM_LOAD16_BYTE( "nme_36.12h", 0x40001, 0x20000, CRC(6aeeec81) SHA1(d7dce52d0f2225d844d852d2c3e81a48cb53a43d) )
+ ROM_LOAD16_WORD_SWAP( "nm-32m.8h", 0x80000, 0x80000, CRC(d6d1add3) SHA1(61c3013d322dbb7622cca032adcd020ba318e885) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "nm-5m.7a", 0x000000, 0x80000, CRC(487b8747) SHA1(f14339b02b8f7ec2002632349e88fed4afc30050) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-7m.9a", 0x000002, 0x80000, CRC(203dc8c6) SHA1(d52577500e822b89904d1510d559f8575c2aaa78) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-1m.3a", 0x000004, 0x80000, CRC(9e878024) SHA1(9a5ce3a6a7952a8954d0709b9473db9253793d70) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nm-3m.5a", 0x000006, 0x80000, CRC(bb01e6b6) SHA1(3883e28f721d0278b2f4f877a804e95ee14f53e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "nme_09.12b", 0x00000, 0x08000, CRC(0f4b0581) SHA1(2e5a2885149c632abfaf4292a1bf032c13c8da6c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "nme_18.11c", 0x00000, 0x20000, CRC(bab333d4) SHA1(c1d0fb61ec46f17eb7edf69e1ad5ac91b5d51daa) )
+ ROM_LOAD( "nme_19.12c", 0x20000, 0x20000, CRC(2650a0a8) SHA1(e9e8cc1b27a2cb3e87124061fabcf42982f0611f) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "nm24b.1a", 0x0000, 0x0117, CRC(7b25bac6) SHA1(fa0083c59c8d6da07798cb3a4fc25d388065b7cd) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89625B-? */
+ROM_START( nemoj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "nmj_36a.12f", 0x00000, 0x20000, CRC(daeceabb) SHA1(ebd44922be9d07a3d3411af52edee8a60cb11dad) )
+ ROM_LOAD16_BYTE( "nmj_42a.12h", 0x00001, 0x20000, CRC(55024740) SHA1(4bacbd191bb435de5dc548ac7fa16ed286bd2d3b) )
+ ROM_LOAD16_BYTE( "nmj_37a.13f", 0x40000, 0x20000, CRC(619068b6) SHA1(2507c6f77a06a80f913c848dcb6816bcbf4bba8a) )
+ ROM_LOAD16_BYTE( "nmj_43a.13h", 0x40001, 0x20000, CRC(a948a53b) SHA1(65c2abf321cf8b171bbfbb51ed57bc99eb552ca9) )
+ ROM_LOAD16_BYTE( "nm_34.10f", 0x80000, 0x20000, CRC(5737feed) SHA1(2635715cc21381e9f0a4ae4227eb5896886ee3e2) ) // == nm-32m.8h
+ ROM_LOAD16_BYTE( "nm_40.10h", 0x80001, 0x20000, CRC(8a4099f3) SHA1(d1af73d8992aa9ef6dcd729675a2fbea8c290311) ) // == nm-32m.8h
+ ROM_LOAD16_BYTE( "nm_35.11f", 0xc0000, 0x20000, CRC(bd11a7f8) SHA1(1c09db7cbd132866d4f08720cdd60707069f8580) ) // == nm-32m.8h
+ ROM_LOAD16_BYTE( "nm_41.11h", 0xc0001, 0x20000, CRC(6309603d) SHA1(51bee785ddb87340ad56960ad816c0513bc93eb8) ) // == nm-32m.8h
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "nm_09.4b", 0x000000, 0x20000, CRC(9d60d286) SHA1(69ea9d584d735c3629e1c017cbd966df264e4324) , ROM_SKIP(7) ) // == nm-5m.7a
+ ROMX_LOAD( "nm_01.4a", 0x000001, 0x20000, CRC(8a83f7c4) SHA1(ef24f47517d22dfecd3e6b5ef76e38073f6b81ba) , ROM_SKIP(7) ) // == nm-5m.7a
+ ROMX_LOAD( "nm_13.9b", 0x000002, 0x20000, CRC(a4909fe0) SHA1(6b1a0e8c2bd2979f7fcc363a86de28d3e365709c) , ROM_SKIP(7) ) // == nm-7m.9a
+ ROMX_LOAD( "nm_05.9a", 0x000003, 0x20000, CRC(16db1e61) SHA1(76ff93edd4d40a2527744585a87052a3fc0c77f6) , ROM_SKIP(7) ) // == nm-7m.9a
+ ROMX_LOAD( "nm_24.5e", 0x000004, 0x20000, CRC(3312c648) SHA1(9e4f584fa360de16d42d65619dbe9426d4322c00) , ROM_SKIP(7) ) // == nm-1m.3a
+ ROMX_LOAD( "nm_17.5c", 0x000005, 0x20000, CRC(ccfc50e2) SHA1(a238f050d11e925b1c0037bb860289ab746b7039) , ROM_SKIP(7) ) // == nm-1m.3a
+ ROMX_LOAD( "nm_38.8h", 0x000006, 0x20000, CRC(ae98a997) SHA1(d2d499395e43aa85d9098966d04fde6bd055900b) , ROM_SKIP(7) ) // == nm-3m.5a
+ ROMX_LOAD( "nm_32.8f", 0x000007, 0x20000, CRC(b3704dde) SHA1(d107fecb45f34e877faabffcdaba437935754906) , ROM_SKIP(7) ) // == nm-3m.5a
+ ROMX_LOAD( "nm_10.5b", 0x100000, 0x20000, CRC(33c1388c) SHA1(cd1ec3e8d6d2b5a65648c749426ec4e254f93d8c) , ROM_SKIP(7) ) // == nm-5m.7a
+ ROMX_LOAD( "nm_02.5a", 0x100001, 0x20000, CRC(84c69469) SHA1(700cf7be644056b1dbc5d8bed37caf6383a81cfe) , ROM_SKIP(7) ) // == nm-5m.7a
+ ROMX_LOAD( "nm_14.10b", 0x100002, 0x20000, CRC(66612270) SHA1(0c996571459ac44d5ca5683bdcb6a6f08dd83480) , ROM_SKIP(7) ) // == nm-7m.9a
+ ROMX_LOAD( "nm_06.10a", 0x100003, 0x20000, CRC(8b9bcf95) SHA1(e03c6dc4946a37bdab68d929722b1e10a2aca31a) , ROM_SKIP(7) ) // == nm-7m.9a
+ ROMX_LOAD( "nm_25.7e", 0x100004, 0x20000, CRC(acfc84d2) SHA1(4cd9f3bc32ef62cb3b414de68db34f950d10f406) , ROM_SKIP(7) ) // == nm-1m.3a
+ ROMX_LOAD( "nm_18.7c", 0x100005, 0x20000, CRC(4347deed) SHA1(fdd9b3f1ddad42464dcc7298e5b740ffe1622343) , ROM_SKIP(7) ) // == nm-1m.3a
+ ROMX_LOAD( "nm_39.9h", 0x100006, 0x20000, CRC(6a274ecd) SHA1(66259fd6e71cfdb618c189b7f18749a996aacfdf) , ROM_SKIP(7) ) // == nm-3m.5a
+ ROMX_LOAD( "nm_33.9f", 0x100007, 0x20000, CRC(c469dc74) SHA1(d06956eef5f9b31779f218d597a1a504c1e16bad) , ROM_SKIP(7) ) // == nm-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "nm_23.13b", 0x00000, 0x08000, CRC(8d3c5a42) SHA1(cc7477da80f3d08cf014379318e39cb75b5d3205) ) /* 1 byte different from nemo, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "nm_30.12c", 0x00000, 0x20000, CRC(bab333d4) SHA1(c1d0fb61ec46f17eb7edf69e1ad5ac91b5d51daa) ) // == nme_18.11c
+ ROM_LOAD( "nm_31.13c", 0x20000, 0x20000, CRC(2650a0a8) SHA1(e9e8cc1b27a2cb3e87124061fabcf42982f0611f) ) // == nme_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "nm22b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) // pal verification required
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2e_30g.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) )
+ ROM_LOAD16_BYTE( "sf2e_37g.11f", 0x00001, 0x20000, CRC(fb92cd74) SHA1(bf1ccfe7cc1133f0f65556430311108722add1f2) )
+ ROM_LOAD16_BYTE( "sf2e_31g.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) )
+ ROM_LOAD16_BYTE( "sf2e_38g.12f", 0x40001, 0x20000, CRC(5e22db70) SHA1(6565946591a18eaf46f04c1aa449ee0ae9ac2901) )
+ ROM_LOAD16_BYTE( "sf2e_28g.9e", 0x80000, 0x20000, CRC(8bf9f1e5) SHA1(bbcef63f35e5bff3f373968ba1278dd6bd86b593) )
+ ROM_LOAD16_BYTE( "sf2e_35g.9f", 0x80001, 0x20000, CRC(626ef934) SHA1(507bda3e4519de237aca919cf72e543403ec9724) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-2 */
+ROM_START( sf2eb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2e_30b.11e", 0x00000, 0x20000, CRC(57bd7051) SHA1(5e211e75b1649b07723cabc03cf15636dbbae595) )
+ ROM_LOAD16_BYTE( "sf2e_37b.11f", 0x00001, 0x20000, CRC(62691cdd) SHA1(328703c3e737ada544e67c36119eeb4a100ca740) )
+ ROM_LOAD16_BYTE( "sf2e_31b.12e", 0x40000, 0x20000, CRC(a673143d) SHA1(e565f0ec23d6deb543c72af5a83f070c07319477) )
+ ROM_LOAD16_BYTE( "sf2e_38b.12f", 0x40001, 0x20000, CRC(4c2ccef7) SHA1(77b119c70c255622b023de25d9af3b3aac52ea47) )
+ ROM_LOAD16_BYTE( "sf2_28b.9e", 0x80000, 0x20000, CRC(4009955e) SHA1(7842dbef7650485639fbae49b9f4db7494d4f73d) )
+ ROM_LOAD16_BYTE( "sf2_35b.9f", 0x80001, 0x20000, CRC(8c1f3994) SHA1(5e1d334399d05a837c2d80f79eada543e83afaf7) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2ed )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2e_30d.11e", 0x00000, 0x20000, CRC(4bb2657c) SHA1(b2d077296b77be7db371f953b7fc446a67d8a9d6) )
+ ROM_LOAD16_BYTE( "sf2e_37d.11f", 0x00001, 0x20000, CRC(102f4561) SHA1(2fc77cd3b2ecf8fadc4f8614cb200cf2cba4c616) ) //only rom different from sf2ud
+ ROM_LOAD16_BYTE( "sf2e_31d.12e", 0x40000, 0x20000, CRC(d57b67d7) SHA1(43d0b47c9fada8d9b445caa4b96ac8493061aa8b) )
+ ROM_LOAD16_BYTE( "sf2e_38d.12f", 0x40001, 0x20000, CRC(9c8916ef) SHA1(a4629356a816454bcc1d7b41e70e147d4769a682) )
+ ROM_LOAD16_BYTE( "sf2e_28d.9e", 0x80000, 0x20000, CRC(175819d1) SHA1(c98b6b7af4e57735dbfb3d1e61ba1bfb9f145d33) )
+ ROM_LOAD16_BYTE( "sf2e_35d.9f", 0x80001, 0x20000, CRC(82060da4) SHA1(7487cfc28cce3d76772ece657aef83b56034011e) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+/* Note that this revision seems to be the only one that uses the IOB2 and C632B PALs instead of the IOB1 and C632,
+ while STF29 PAL is confirmed to be the same as the other Street Fighter II: The World Warrior sets. */
+ROM_START( sf2ee )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2e_30e.11e", 0x00000, 0x20000, CRC(f37cd088) SHA1(48b71e44ce88d5f682ed679c737e7ec5262bb0df) )
+ ROM_LOAD16_BYTE( "sf2e_37e.11f", 0x00001, 0x20000, CRC(c39468e6) SHA1(0b1ce83dbc4dcf9b205c67fa6a4b074570baf59b) )
+ ROM_LOAD16_BYTE( "sf2e_31e.12e", 0x40000, 0x20000, CRC(7c4771b4) SHA1(6637b24194c86ec72a1775d4e976891243cd66fd) )
+ ROM_LOAD16_BYTE( "sf2e_38e.12f", 0x40001, 0x20000, CRC(a4bd0cd9) SHA1(32a2bc18d1f860668141e53cbca862ceec238c19) )
+ ROM_LOAD16_BYTE( "sf2e_28e.9e", 0x80000, 0x20000, CRC(e3b95625) SHA1(f7277f9980040f96434d1bd162eaf9ba0dfbb005) )
+ ROM_LOAD16_BYTE( "sf2e_35e.9f", 0x80001, 0x20000, CRC(3648769a) SHA1(74e5934b0e3b4da35ff48086f41e7502b42731c6) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob2.11d", 0x0000, 0x0117, CRC(d26f0a27) SHA1(22bb5647ff98df22fd19ae079ff98b9d100855f9) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) // == c632.ic1
+ROM_END
+
+/* B-Board 90629B-2 */
+ROM_START( sf2ua )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30a.11e", 0x00000, 0x20000, CRC(08beb861) SHA1(d47f16d0d692dc6405df0aecd7d9fc3f9718c0d1) )
+ ROM_LOAD16_BYTE( "sf2u_37a.11f", 0x00001, 0x20000, CRC(b7638d69) SHA1(b615a2e0e8772462fd875b2e8d2ccba82a8b3c47) )
+ ROM_LOAD16_BYTE( "sf2u_31a.12e", 0x40000, 0x20000, CRC(0d5394e0) SHA1(e1d88ff3669f1dbe1e3fbdf8aa9e2c63adbbcb48) )
+ ROM_LOAD16_BYTE( "sf2u_38a.12f", 0x40001, 0x20000, CRC(42d6a79e) SHA1(5f1e2c176d065325883a60767d05b1a542372b6a) )
+ ROM_LOAD16_BYTE( "sf2u_28a.9e", 0x80000, 0x20000, CRC(387a175c) SHA1(2635bb82758cf217cee63b254a537b02275a6838) )
+ ROM_LOAD16_BYTE( "sf2u_35a.9f", 0x80001, 0x20000, CRC(a1a5adcc) SHA1(47874e6d403256d828474b29e3d93c92efd9e1ce) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2ub )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30b.11e", 0x00000, 0x20000, CRC(57bd7051) SHA1(5e211e75b1649b07723cabc03cf15636dbbae595) ) // == sf2e_30b.11e
+ ROM_LOAD16_BYTE( "sf2u_37b.11f", 0x00001, 0x20000, CRC(4a54d479) SHA1(eaff7a0d3c858a567c02086fde163850f0f5631e) )
+ ROM_LOAD16_BYTE( "sf2u_31b.12e", 0x40000, 0x20000, CRC(a673143d) SHA1(e565f0ec23d6deb543c72af5a83f070c07319477) ) // == sf2e_31b.12e
+ ROM_LOAD16_BYTE( "sf2u_38b.12f", 0x40001, 0x20000, CRC(4c2ccef7) SHA1(77b119c70c255622b023de25d9af3b3aac52ea47) ) // == sf2e_38b.12f
+ ROM_LOAD16_BYTE( "sf2u_28b.9e", 0x80000, 0x20000, CRC(4009955e) SHA1(7842dbef7650485639fbae49b9f4db7494d4f73d) ) // == sf2_28b.9e
+ ROM_LOAD16_BYTE( "sf2u_35b.9f", 0x80001, 0x20000, CRC(8c1f3994) SHA1(5e1d334399d05a837c2d80f79eada543e83afaf7) ) // == sf2_35b.9f
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2uc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30c.11e", 0x00000, 0x20000, CRC(6cb59385) SHA1(37750e8369298b597590d956f5fb7319301e6c7d) )
+ ROM_LOAD16_BYTE( "sf2u_37c.11f", 0x00001, 0x20000, CRC(32e2c278) SHA1(6cc5e0a9179163136b8104a1583da85a53d537f4) )
+ ROM_LOAD16_BYTE( "sf2u_31c.12e", 0x40000, 0x20000, CRC(c4fff4a9) SHA1(4b593ace201fe7f5a00b5cd7f4e8fc3f8dd4ceed) )
+ ROM_LOAD16_BYTE( "sf2u_38c.12f", 0x40001, 0x20000, CRC(8210fc0e) SHA1(7d6cfb99afa89d0e6e991d9f7c1808b740def125) )
+ ROM_LOAD16_BYTE( "sf2u_28c.9e", 0x80000, 0x20000, CRC(6eddd5e8) SHA1(62bd1c2fc0321809421c9a592f691b5b1a1d8807) )
+ ROM_LOAD16_BYTE( "sf2u_35c.9f", 0x80001, 0x20000, CRC(6bcb404c) SHA1(b5f24556c633c521aadd94e016d78db6922e3dfa) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // could be sf2_09.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2ud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30d.11e", 0x00000, 0x20000, CRC(4bb2657c) SHA1(b2d077296b77be7db371f953b7fc446a67d8a9d6) ) // == sf2e_30d.11e
+ ROM_LOAD16_BYTE( "sf2u_37d.11f", 0x00001, 0x20000, CRC(b33b42f2) SHA1(2e0babc8734c79dc2b51a6be64433bb2411c3da5) )
+ ROM_LOAD16_BYTE( "sf2u_31d.12e", 0x40000, 0x20000, CRC(d57b67d7) SHA1(43d0b47c9fada8d9b445caa4b96ac8493061aa8b) ) // == sf2e_31d.12e
+ ROM_LOAD16_BYTE( "sf2u_38d.12f", 0x40001, 0x20000, CRC(9c8916ef) SHA1(a4629356a816454bcc1d7b41e70e147d4769a682) ) // == sf2e_38d.12f
+ ROM_LOAD16_BYTE( "sf2u_28d.9e", 0x80000, 0x20000, CRC(175819d1) SHA1(c98b6b7af4e57735dbfb3d1e61ba1bfb9f145d33) ) // == sf2e_28d.9e
+ ROM_LOAD16_BYTE( "sf2u_35d.9f", 0x80001, 0x20000, CRC(82060da4) SHA1(7487cfc28cce3d76772ece657aef83b56034011e) ) // == sf2e_35d.9f
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+/* Note that this revision seems to be the only one that uses the IOB2 and C632B PALs instead of the IOB1 and C632,
+ while STF29 PAL is confirmed to be the same as the other Street Fighter II: The World Warrior sets. */
+ROM_START( sf2ue )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30e.11e", 0x00000, 0x20000, CRC(f37cd088) SHA1(48b71e44ce88d5f682ed679c737e7ec5262bb0df) )
+ ROM_LOAD16_BYTE( "sf2u_37e.11f", 0x00001, 0x20000, CRC(6c61a513) SHA1(6dc9ccd58fd5ef15ff9df20c865ff6c850f2b7dc) )
+ ROM_LOAD16_BYTE( "sf2u_31e.12e", 0x40000, 0x20000, CRC(7c4771b4) SHA1(6637b24194c86ec72a1775d4e976891243cd66fd) )
+ ROM_LOAD16_BYTE( "sf2u_38e.12f", 0x40001, 0x20000, CRC(a4bd0cd9) SHA1(32a2bc18d1f860668141e53cbca862ceec238c19) )
+ ROM_LOAD16_BYTE( "sf2u_28e.9e", 0x80000, 0x20000, CRC(e3b95625) SHA1(f7277f9980040f96434d1bd162eaf9ba0dfbb005) )
+ ROM_LOAD16_BYTE( "sf2u_35e.9f", 0x80001, 0x20000, CRC(3648769a) SHA1(74e5934b0e3b4da35ff48086f41e7502b42731c6) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob2.11d", 0x0000, 0x0117, CRC(d26f0a27) SHA1(22bb5647ff98df22fd19ae079ff98b9d100855f9) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) // == c632.ic1
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2uf )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30f.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) ) // == sf2e_30g.11e
+ ROM_LOAD16_BYTE( "sf2u_37f.11f", 0x00001, 0x20000, CRC(169e7388) SHA1(c7cb2de529d94cea4a018ed3bd611037fe54abe7) )
+ ROM_LOAD16_BYTE( "sf2u_31f.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) ) // == sf2e_31g.12e
+ ROM_LOAD16_BYTE( "sf2u_38f.12f", 0x40001, 0x20000, CRC(1510e4e2) SHA1(fbfdd4e42c4bc894592dbe5a84c88d5f13d21da4) )
+ ROM_LOAD16_BYTE( "sf2u_28f.9e", 0x80000, 0x20000, CRC(acd8175b) SHA1(504991c46fa568d31ce69bd63e2a67926a06b5a9) )
+ ROM_LOAD16_BYTE( "sf2u_35f.9f", 0x80001, 0x20000, CRC(c0a80bd1) SHA1(ac25a9ed488e03baf4115541fdcce3973ce6a442) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2ug )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30g.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) ) // == sf2e_30g.11e
+ ROM_LOAD16_BYTE( "sf2u_37g.11f", 0x00001, 0x20000, CRC(5886cae7) SHA1(8a621d267dfcf5d214b1bbec12b98a06153c86d3) )
+ ROM_LOAD16_BYTE( "sf2u_31g.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) ) // == sf2e_31g.12e
+ ROM_LOAD16_BYTE( "sf2u_38g.12f", 0x40001, 0x20000, CRC(5e22db70) SHA1(6565946591a18eaf46f04c1aa449ee0ae9ac2901) ) // == sf2e_38g.12f
+ ROM_LOAD16_BYTE( "sf2u_28g.9e", 0x80000, 0x20000, CRC(8bf9f1e5) SHA1(bbcef63f35e5bff3f373968ba1278dd6bd86b593) ) // == sf2e_28g.9e
+ ROM_LOAD16_BYTE( "sf2u_35g.9f", 0x80001, 0x20000, CRC(626ef934) SHA1(507bda3e4519de237aca919cf72e543403ec9724) ) // == sf2e_35g.9f
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2ui )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30i.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) ) // == sf2e_30g.11e
+ ROM_LOAD16_BYTE( "sf2u_37i.11f", 0x00001, 0x20000, CRC(9df707dd) SHA1(b148ea450f9e96f3c20f487010a3c57f778e40c1) )
+ ROM_LOAD16_BYTE( "sf2u_31i.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) ) // == sf2e_31g.12e
+ ROM_LOAD16_BYTE( "sf2u_38i.12f", 0x40001, 0x20000, CRC(4cb46daf) SHA1(dee103ae1391cd9ac150f787187233cd8c06ea1e) )
+ ROM_LOAD16_BYTE( "sf2u_28i.9e", 0x80000, 0x20000, CRC(1580be4c) SHA1(d89ed0ff4bf14ff2eaae4609f55970b6b37c8e32) ) /* seen the same pcb with SF2_28I.9E */
+ ROM_LOAD16_BYTE( "sf2u_35i.9f", 0x80001, 0x20000, CRC(1468d185) SHA1(750de0cad3859e4917aebb02c2e137dea619f201) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2uk )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2u_30k.11e", 0x00000, 0x20000, CRC(8f66076c) SHA1(f9653b36bb5012e6bde5fe3bcade4a6a7a7e7def) )
+ ROM_LOAD16_BYTE( "sf2u_37k.11f", 0x00001, 0x20000, CRC(4e1f6a83) SHA1(ee679b79ff3c3165979d3de23e0f668839cf465f) )
+ ROM_LOAD16_BYTE( "sf2u_31k.12e", 0x40000, 0x20000, CRC(f9f89f60) SHA1(c3b71482b85c83576518f300be768655412276b0) )
+ ROM_LOAD16_BYTE( "sf2u_38k.12f", 0x40001, 0x20000, CRC(6ce0a85a) SHA1(567fd18cd626c94496d9123ecef87dc638f0041a) )
+ ROM_LOAD16_BYTE( "sf2u_28k.9e", 0x80000, 0x20000, CRC(8e958f31) SHA1(81359bc988c4e9e375b5bbd960921d425b77f706) )
+ ROM_LOAD16_BYTE( "sf2u_35k.9f", 0x80001, 0x20000, CRC(fce76fad) SHA1(66f881ba600c7e6bbe960cfd0772ed16208b79c8) )
+ ROM_LOAD16_BYTE( "sf2u_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2u_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "21" socket
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "23" socket
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "20" socket
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "22" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B */
+ROM_START( sf2j )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2j30.bin", 0x00000, 0x20000, CRC(79022b31) SHA1(b7cfe0498260cdd2779580c47829dd02435ffff4) )
+ ROM_LOAD16_BYTE( "sf2j37.bin", 0x00001, 0x20000, CRC(516776ec) SHA1(4f8b63c4d4265a105751fa72b50bd0fa538bf881) )
+ ROM_LOAD16_BYTE( "sf2j31.bin", 0x40000, 0x20000, CRC(fe15cb39) SHA1(383478524881ea70d9e04c9b6143b8735b637eee) )
+ ROM_LOAD16_BYTE( "sf2j38.bin", 0x40001, 0x20000, CRC(38614d70) SHA1(39c58096f3a8e01fb439639b742b83102bbaa7f6) )
+ ROM_LOAD16_BYTE( "sf2j28.bin", 0x80000, 0x20000, CRC(d283187a) SHA1(5ea83d2652e43e46b831b614d1fe06d465bac9a3) )
+ ROM_LOAD16_BYTE( "sf2j35.bin", 0x80001, 0x20000, CRC(d28158e4) SHA1(bf2bca6068e374011afa95e99809d262f522df18) )
+ ROM_LOAD16_BYTE( "sf2_29a.bin", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36a.bin", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.bin", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-2 */
+ROM_START( sf2ja )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2j_30a.11e", 0x00000, 0x20000, CRC(57bd7051) SHA1(5e211e75b1649b07723cabc03cf15636dbbae595) ) // == sf2e_30b.11e
+ ROM_LOAD16_BYTE( "sf2j_37a.11f", 0x00001, 0x20000, CRC(1e1f6844) SHA1(c80e5ac6a6cea39511c38e31ea55b6cd3888024f) )
+ ROM_LOAD16_BYTE( "sf2j_31a.12e", 0x40000, 0x20000, CRC(a673143d) SHA1(e565f0ec23d6deb543c72af5a83f070c07319477) ) // == sf2e_31b.12e
+ ROM_LOAD16_BYTE( "sf2j_38a.12f", 0x40001, 0x20000, CRC(4c2ccef7) SHA1(77b119c70c255622b023de25d9af3b3aac52ea47) ) // == sf2e_38b.12f
+ ROM_LOAD16_BYTE( "sf2j_28a.9e", 0x80000, 0x20000, CRC(4009955e) SHA1(7842dbef7650485639fbae49b9f4db7494d4f73d) ) // == sf2_28b.9e
+ ROM_LOAD16_BYTE( "sf2j_35a.9f", 0x80001, 0x20000, CRC(8c1f3994) SHA1(5e1d334399d05a837c2d80f79eada543e83afaf7) ) // == sf2_35b.9f
+ ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2j_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2j_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) // == sf2_18.11c
+ ROM_LOAD( "sf2j_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) // == sf2_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2jc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2j_30c.11e", 0x00000, 0x20000, CRC(8add35ec) SHA1(b08428ff262ca4feddd3c72058b4b674a5401aba) )
+ ROM_LOAD16_BYTE( "sf2j_37c.11f", 0x00001, 0x20000, CRC(0d74a256) SHA1(587fd0ee1c2ef54554237486eb5b0d1ec30c2868) )
+ ROM_LOAD16_BYTE( "sf2j_31c.12e", 0x40000, 0x20000, CRC(c4fff4a9) SHA1(4b593ace201fe7f5a00b5cd7f4e8fc3f8dd4ceed) ) // == sf2u_31c.12e
+ ROM_LOAD16_BYTE( "sf2j_38c.12f", 0x40001, 0x20000, CRC(8210fc0e) SHA1(7d6cfb99afa89d0e6e991d9f7c1808b740def125) ) // == sf2u_38c.12f
+ ROM_LOAD16_BYTE( "sf2j_28c.9e", 0x80000, 0x20000, CRC(6eddd5e8) SHA1(62bd1c2fc0321809421c9a592f691b5b1a1d8807) ) // == sf2u_28c.9e
+ ROM_LOAD16_BYTE( "sf2j_35c.9f", 0x80001, 0x20000, CRC(6bcb404c) SHA1(b5f24556c633c521aadd94e016d78db6922e3dfa) ) // == sf2u_35c.9f
+ ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2j_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) // == sf2_18.11c
+ ROM_LOAD( "sf2j_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) // == sf2_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2jf )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2j_30f.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) ) // == sf2e_30g.11e
+ ROM_LOAD16_BYTE( "sf2j_37f.11f", 0x00001, 0x20000, CRC(c1428cc6) SHA1(6a3f21de57c3dd60a7c991ca667dc2a77d813039) )
+ ROM_LOAD16_BYTE( "sf2j_31f.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) ) // == sf2e_31g.12e
+ ROM_LOAD16_BYTE( "sf2j_38f.12f", 0x40001, 0x20000, CRC(1510e4e2) SHA1(fbfdd4e42c4bc894592dbe5a84c88d5f13d21da4) )
+ ROM_LOAD16_BYTE( "sf2j_28f.9e", 0x80000, 0x20000, CRC(acd8175b) SHA1(504991c46fa568d31ce69bd63e2a67926a06b5a9) )
+ ROM_LOAD16_BYTE( "sf2j_35f.9f", 0x80001, 0x20000, CRC(c0a80bd1) SHA1(ac25a9ed488e03baf4115541fdcce3973ce6a442) )
+ ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( sf2jh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf2j_30h.11e", 0x00000, 0x20000, CRC(fe39ee33) SHA1(22558eb15e035b09b80935a32b8425d91cd79669) ) // == sf2e_30g.11e
+ ROM_LOAD16_BYTE( "sf2j_37h.11f", 0x00001, 0x20000, CRC(330304b0) SHA1(93bf761804228a79d16afa2fcfbe28e6942dff51) )
+ ROM_LOAD16_BYTE( "sf2j_31h.12e", 0x40000, 0x20000, CRC(69a0a301) SHA1(86a3954335310865b14ce8b4e0e4499feb14fc12) ) // == sf2e_31g.12e
+ ROM_LOAD16_BYTE( "sf2j_38h.12f", 0x40001, 0x20000, CRC(a659f678) SHA1(f3b99ebaa59edb889498cf5c9d7ceb939da1dedc) )
+ ROM_LOAD16_BYTE( "sf2j_28h.9e", 0x80000, 0x20000, CRC(8a5c8ee0) SHA1(a6df46e96bf7596665177b18213a3aee4cc7c378) )
+ ROM_LOAD16_BYTE( "sf2j_35h.9f", 0x80001, 0x20000, CRC(c828fc4d) SHA1(0025630bef45862d8b72a2d19a6c5adf96905bd5) )
+ ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-2 */
+ROM_START( sf2jl )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "sf-2_30l.11e", 0x00000, 0x20000, CRC(34a1ce02) SHA1(6875813c49a92b8650f444c1857459adc86bc0d0) ) // These "L" revision roms are verified as being
+ ROM_LOAD16_BYTE( "sf-2_37l.11f", 0x00001, 0x20000, CRC(5b630ed2) SHA1(b14ef94b86f55c82391db8aca4d6f9487b9758a7) ) // labeled "SF-2" without "J" for Japan region
+ ROM_LOAD16_BYTE( "sf-2_31l.12e", 0x40000, 0x20000, CRC(64ebc8d2) SHA1(1817de5dcca47a1bb94838d26a9a3adf6b75c911) )
+ ROM_LOAD16_BYTE( "sf-2_38l.12f", 0x40001, 0x20000, CRC(73847443) SHA1(72fb5472a04061e4a50cb57e4f65ba8ec022a965) )
+ ROM_LOAD16_BYTE( "sf-2_28l.9e", 0x80000, 0x20000, CRC(eee2b426) SHA1(1d7b5073b9473d3c92fc95c0d0625716c82fc944) )
+ ROM_LOAD16_BYTE( "sf-2_35l.9f", 0x80001, 0x20000, CRC(eca8b452) SHA1(f3d06bd32ef2649a8278d8a0517372067e3f99b7) )
+ ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e
+ ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.8d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.10d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.7d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.9d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2j_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // == sf2_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2j_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) // == sf2_18.11c
+ ROM_LOAD( "sf2j_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) // == sf2_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* Bootleg manufactured by TAB Austria
+
+ -------------------------------------------------------
+ | ROM1 *2 *3 ROM5 ROM9 |
+ | ROM2 ROM6 ROM8 |
+ | *1 1B 1D |
+ | 6295 1A 1C |
+ | YM ROM4 1F 1H |
+ | ROM3 1E 1G |
+-- Z80 1J 1L |
+-- 1I 1K |
+-- |
+-- |
+-- TAB |
+-- AUSTRIA |
+ | DIP8 6 |
+ | 8 ROM10 ROM9 |
+ | DIP8 0 ROM12 ROM11 |
+ | 0 |
+ | DIP8 0 |
+ |------------------------------------------------------
+
+ *1 = 12.000 Mhz
+ *2 = 3.579545 Mhz
+ *3 = 16.000 Mhz
+
+*/
+ROM_START( sf2ebbl )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x40000, CRC(a258b4d5) SHA1(3433b6493794c98bb35c1b27cc65bb5f13d52e9b) )
+ ROM_LOAD16_BYTE( "09.bin", 0x00001, 0x40000, CRC(59ccd474) SHA1(7bb28c28ee722435fdbb18eb73e52bd65b419103) )
+ ROM_LOAD16_BYTE( "11.bin", 0x80000, 0x40000, CRC(82097d63) SHA1(881e7ffb78197f6794b5d41f5c2c87da35e8cb15) )
+ ROM_LOAD16_BYTE( "10.bin", 0x80001, 0x40000, CRC(0c83844d) SHA1(4c25ba4a50d62c62789d026e3d304ed1dfb3c248) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ /* The 12 MASK roms on this PCB match the original roms exactly */
+ ROMX_LOAD( "1b_yf082.bin", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1d_yf028.bin", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1a_yf087.bin", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1c_yf088.bin", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1f_yf085.bin", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1h_yf115.bin", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1e_yf111.bin", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1g_yf002.bin", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1j_yf117.bin", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1l_ye040.bin", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1i_yf038.bin", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1k_ye039.bin", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ /* These map over the MASK roms on this bootleg to get rid of the CAPCOM logo (wasteful, but correct) */
+ ROMX_LOAD( "05.bin", 0x400000, 0x10000, CRC(a505621e) SHA1(8ffa8cedad54948870bbd8f629d927332dc9fcf6) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x10000 )
+ ROMX_LOAD( "07.bin", 0x400002, 0x10000, CRC(de6271fb) SHA1(574ec5d9992941a405fd00abe52da41aba4b29a7) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x10000 )
+ ROMX_LOAD( "06.bin", 0x400001, 0x10000, CRC(23775344) SHA1(0d6b54f66cd64c3f48c88c8e17a19fdb2002afb0) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x10000 )
+ ROMX_LOAD( "08.bin", 0x400003, 0x10000, CRC(81c9550f) SHA1(2d75e329148caadfff35c8f2f91b352f14dbe08a) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x10000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "03.bin", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "04.bin", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "02.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "01.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2ebbl2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27c020.7", 0x00000, 0x40000, CRC(a258b4d5) SHA1(3433b6493794c98bb35c1b27cc65bb5f13d52e9b) )
+ ROM_LOAD16_BYTE( "27c020.5", 0x00001, 0x40000, CRC(59ccd474) SHA1(7bb28c28ee722435fdbb18eb73e52bd65b419103) )
+ ROM_LOAD16_BYTE( "27c020.6", 0x80000, 0x40000, CRC(82097d63) SHA1(881e7ffb78197f6794b5d41f5c2c87da35e8cb15) )
+ ROM_LOAD16_BYTE( "27c020.4", 0x80001, 0x40000, CRC(0c83844d) SHA1(4c25ba4a50d62c62789d026e3d304ed1dfb3c248) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ /* 5 MASK roms on this PCB match the original roms exactly, */
+ ROMX_LOAD( "a-se235.bin", 0x000000, 0x80000, CRC(a258de13) SHA1(2e477948c4c8a2fb7cfdc4a739766bc4a4e01c49) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000)
+ ROMX_LOAD( "c-se005.bin", 0x000002, 0x80000, CRC(c781bf87) SHA1(034baa9807c2ce8dc800200963a38cd9262b21fb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000)
+ ROMX_LOAD( "b-se194.bin", 0x200000, 0x80000, CRC(5726cab8) SHA1(0b2243a9a7184d53d42ddab7a8c51b63001c2f56) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200004, 0x80000)
+ ROMX_LOAD( "d-se064.bin", 0x200002, 0x80000, CRC(4dd24197) SHA1(548beaa0a6f1c3c88f4fc83169d1a3c86e0755d4) , ROM_GROUPWORD | ROM_SKIP(6) ) //sf2-8m.6c 99.999809%
+ ROM_CONTINUE( 0x200006, 0x80000)
+ ROMX_LOAD( "e-sf004.bin", 0x400000, 0x80000, CRC(187667cc) SHA1(fae65bf23f49a32903fda8080659ccf8d42b911f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400004, 0x80000)
+ ROMX_LOAD( "f-sf001.bin", 0x400002, 0x80000, CRC(5b585071) SHA1(ad3371b1ba0441c67d9fcbb23b09464710e4e28a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400006, 0x80000)
+
+ // These map over the MASK roms on this bootleg why? isn't it a waste of eprom?
+ ROMX_LOAD( "27c1024.10", 0x400000, 0x20000, CRC(84427d1b) SHA1(f988a2b53c8cc46eeb8032084f24966a539b3734) , ROM_GROUPWORD | ROM_SKIP(6) )//e-sf004.bin [1/8] IDENTICAL
+ ROMX_LOAD( "27c1024.12", 0x400002, 0x20000, CRC(55bc790c) SHA1(a1114b89f6fa4487210477676984c77ad94b5ef8) , ROM_GROUPWORD | ROM_SKIP(6) )//f-sf001.bin [1/8] IDENTICAL
+ ROMX_LOAD( "27c1024.9", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) )//e-sf004.bin [5/8] IDENTICAL
+ ROMX_LOAD( "27c1024.11", 0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) )//f-sf001.bin [5/8] IDENTICAL
+
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "27c512.3", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "27c512.8", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "27c010.2", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "27c010.1", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2ebbl3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ce91e-b.bin", 0x00000, 0x80000, CRC(963200d2) SHA1(3fa23fdee6d43f01066a94b4b01b1811168637a2) )
+ ROM_LOAD16_BYTE( "ce91e-a.bin", 0x00001, 0x80000, CRC(02e88ec7) SHA1(1898e110108301a08686945f449fd084e394fc17) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ /* There are 8 mask and 8 otp eprom on this board, data match sf2 set in the end */
+ ROMX_LOAD( "1-b-yf197.07", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1-d-yf207.12", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "27020.1", 0x000004, 0x40000, CRC(84afb959) SHA1(ff8f3fb39203d229552649b09046a509aa399b7d) , ROM_SKIP(7) )
+ ROMX_LOAD( "27020.3", 0x000005, 0x40000, CRC(ab21635d) SHA1(c6294b06c482a43cc1736674b0c1bc790da8cc8c) , ROM_SKIP(7) )
+ ROMX_LOAD( "27020.5", 0x000006, 0x40000, CRC(2ce56f9f) SHA1(5bd23823df52aeff8e84a6eb3199a5e75f38cd42) , ROM_SKIP(7) )
+ ROMX_LOAD( "27020.7", 0x000007, 0x40000, CRC(0ad7fb2b) SHA1(51265b331cbbe9d133274bafdbf043151240a20d) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "27020.2", 0x200000, 0x40000, CRC(031525cc) SHA1(65e280607c058cf9c005a6fc809ed375d379c0bf) , ROM_SKIP(7) )
+ ROMX_LOAD( "27020.4", 0x200001, 0x40000, CRC(c97046a5) SHA1(88c7becaa2713c85e22ddd3e2305770525a9132b) , ROM_SKIP(7) )
+ ROMX_LOAD( "1-h-yg010.10", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1-e-yg003.02", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "27020.6", 0x200006, 0x40000, CRC(dbbfd400) SHA1(fc25928b6ed025fa2397d924bae93fd28a4e728f) , ROM_SKIP(7) )
+ ROMX_LOAD( "27020.8", 0x200007, 0x40000, CRC(37635e97) SHA1(b4e5dd6e93174af76aaeeb47471ded0d0bc253e2) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "1-j-yf213.09", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "wm91m-11-yd025.11", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1-i-yf224.03", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "1-k-yf036.06", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ /* These map over the MASK roms on this bootleg to get rid of the CAPCOM logo (wasteful, but correct) */
+ ROMX_LOAD( "27010.09hi", 0x400000, 0x10000, CRC(a505621e) SHA1(8ffa8cedad54948870bbd8f629d927332dc9fcf6) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x10000 )
+ ROMX_LOAD( "27010.11", 0x400002, 0x10000, CRC(de6271fb) SHA1(574ec5d9992941a405fd00abe52da41aba4b29a7) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x10000 )
+ ROMX_LOAD( "27010.09lo", 0x400001, 0x10000, CRC(23775344) SHA1(0d6b54f66cd64c3f48c88c8e17a19fdb2002afb0) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x10000 )
+ ROMX_LOAD( "27010.06", 0x400003, 0x10000, CRC(81c9550f) SHA1(2d75e329148caadfff35c8f2f91b352f14dbe08a) , ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x10000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "27512.3", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "27512.8", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "27010.2", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "27010.1", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2stt )
+ /* the PCB is not working on real hardware */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ /* do not move this outside comments, this is only for testing purpose
+ ROM_LOAD16_BYTE( "12.bin", 0x00000, 0x40000, CRC(a258b4d5) SHA1(3433b6493794c98bb35c1b27cc65bb5f13d52e9b) )
+ ROM_LOAD16_BYTE( "09.bin", 0x00001, 0x40000, CRC(59ccd474) SHA1(7bb28c28ee722435fdbb18eb73e52bd65b419103) )
+ */
+ ROM_LOAD16_BYTE( "prg part 1.stt", 0x00000, 0x40000, NO_DUMP )
+ ROM_LOAD16_BYTE( "prg part 2.stt", 0x00001, 0x40000, NO_DUMP )
+ /* missing first part of program roms, so it can not boot */
+ ROM_LOAD16_BYTE( "ce91e-b", 0x80000, 0x40000, CRC(0862386e) SHA1(9fcfbcbbc17529de75d5419018e7b1dd90b397c0) )
+ ROM_LOAD16_BYTE( "ce91e-a", 0x80001, 0x40000, CRC(0c83844d) SHA1(4c25ba4a50d62c62789d026e3d304ed1dfb3c248) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "stt-a", 0x000000, 0x80000, CRC(10a7036d) SHA1(5f7780154d12dc202ec4bf2f3666727820745ab0), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000002, 0x80000)
+ ROMX_LOAD( "stt-d", 0x000004, 0x80000, CRC(3580b124) SHA1(55b101e7be3d1244d0b9961ad3c6ff5d682214ce), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000)
+ ROMX_LOAD( "stt-b", 0x200000, 0x80000, CRC(7a09224e) SHA1(77a95b931f0a1ebd38c9aaf51a3b59139e0aedeb), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200002, 0x80000)
+ ROMX_LOAD( "stt-e", 0x200004, 0x80000, CRC(382a612c) SHA1(ecdcb66ed9d47d850501abc5f77eb5ad87b868d3), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200006, 0x80000)
+ ROMX_LOAD( "stt-c", 0x400000, 0x80000, CRC(11701b8f) SHA1(4f0c897349a0f1701a144ec64a75fa23fec32ae5), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400002, 0x80000)
+ ROMX_LOAD( "stt-f", 0x400004, 0x80000, CRC(101a0b72) SHA1(9e166a4110a583e722566852e27cb0b074ec97c6), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400006, 0x80000)
+ /* extra gfx layer roms loaded over the former ones to remove the capcom copyright logo */
+ ROMX_LOAD( "5.stt", 0x400000, 0x10000, CRC(a505621e) SHA1(8ffa8cedad54948870bbd8f629d927332dc9fcf6), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x10000 )
+ ROMX_LOAD( "7.stt", 0x400002, 0x10000, CRC(de6271fb) SHA1(574ec5d9992941a405fd00abe52da41aba4b29a7), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x10000 )
+ ROMX_LOAD( "6.stt", 0x400001, 0x10000, CRC(23775344) SHA1(0d6b54f66cd64c3f48c88c8e17a19fdb2002afb0), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x10000 )
+ ROMX_LOAD( "8.stt", 0x400003, 0x10000, CRC(81c9550f) SHA1(2d75e329148caadfff35c8f2f91b352f14dbe08a), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x10000 )
+ /* end of extra gfx layer roms */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "3.stt", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "4.stt", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "2.stt", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "1.stt", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2rk ) /* unidentified bootleg, name based only on gfx chips label */
+ /* the PCB is not working on real hardware */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ /* do not move this outside comments, this is only for testing purpose
+ ROM_LOAD16_BYTE( "12.bin", 0x000000, 0x40000, CRC(a258b4d5) SHA1(3433b6493794c98bb35c1b27cc65bb5f13d52e9b) )
+ ROM_LOAD16_BYTE( "09.bin", 0x000001, 0x40000, CRC(59ccd474) SHA1(7bb28c28ee722435fdbb18eb73e52bd65b419103) )
+ ROM_LOAD16_BYTE( "11.bin", 0x080000, 0x40000, CRC(82097d63) SHA1(881e7ffb78197f6794b5d41f5c2c87da35e8cb15) )
+ ROM_LOAD16_BYTE( "10.bin", 0x080001, 0x40000, CRC(0c83844d) SHA1(4c25ba4a50d62c62789d026e3d304ed1dfb3c248) )
+ */
+ ROM_LOAD16_BYTE( "prg part 1.rk", 0x00000, 0x80000, NO_DUMP )
+ ROM_LOAD16_BYTE( "prg part 2.rk", 0x00001, 0x80000, NO_DUMP )
+ /* missing first part of program roms, so it can not boot */
+ ROM_LOAD16_BYTE( "w-6", 0x100000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "w-5", 0x100001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "01 rk098", 0x000000, 0x80000, CRC(4296de4d) SHA1(2bd5a0ebe2a20c745b11da9c7dc4f13f20efdda7), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000002, 0x80000)
+ ROMX_LOAD( "03 rk097", 0x000004, 0x80000, CRC(16cf11d0) SHA1(e1adf34467e0a6902bcda63718885fe0bea831b1), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000)
+ ROMX_LOAD( "02 rk037", 0x200000, 0x80000, CRC(68ca7fce) SHA1(f6a37e0ca4d9490f66c3d29308c531f2134fd7aa), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200002, 0x80000)
+ ROMX_LOAD( "04 rk033", 0x200004, 0x80000, CRC(9f46f926) SHA1(f1ddf8ce6d895358979631fbdecbeff51376b604), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200006, 0x80000)
+ ROMX_LOAD( "05 rk116", 0x400000, 0x80000, CRC(4c161fa9) SHA1(c3b2f642d3d3be5aab6ff1482d82c2858944d07a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400002, 0x80000)
+ ROMX_LOAD( "06 rk077", 0x400004, 0x80000, CRC(ec949f8c) SHA1(34ea3d6d85486a5ff25c774dbc6a4b16037a7347), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400006, 0x80000)
+ /* extra gfx layer roms loaded over the former ones to remove the capcom copyright logo */
+ ROMX_LOAD( "w-1", 0x400000, 0x08000, CRC(124b9ffc) SHA1(299368e0f95475cf575bc3b041c6179d243b9b81), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x08000 )
+ ROMX_LOAD( "w-3", 0x400002, 0x08000, CRC(5992783a) SHA1(69c90621c72c7889978442009a4ddbbfb1f3444f), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x08000 )
+ ROMX_LOAD( "w-2", 0x400001, 0x08000, CRC(11d715f7) SHA1(cdec16ba16ca1ec6b0ab94addf4cfeeddeff5063), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x08000 )
+ ROMX_LOAD( "w-4", 0x400003, 0x08000, CRC(db0dd977) SHA1(c34ed40709001423325b7b7fad3f4ffeb38c3e7e), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x08000 )
+ /* end of extra gfx layer roms */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "1.rk", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "2.rk", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sample part 1.rk", 0x20000, 0x20000, NO_DUMP )
+ /* do not move this outside comments, this is only for testing purpose
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ */
+ ROM_LOAD( "w-7", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2qp1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "stfii-qkn-cps-17.33", 0x000000, 0x40000, CRC(3a9458ee) SHA1(cbf56115c22a45e5ce1cde313fa5a5ba496316eb) )
+ ROM_CONTINUE( 0xc0000, 0x40000 )
+ ROM_LOAD16_WORD_SWAP( "stfii-qkn-cps-17.34", 0x080000, 0x40000, CRC(4ed215d8) SHA1(b09075f883c3a4976ab47203acc04f8f993969a8) )
+ ROM_CONTINUE( 0x40000, 0x40000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.bin", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.bin", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.bin", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.bin", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.bin", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.bin", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.bin", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.bin", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.bin", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.bin", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.bin", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.bin", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.bin", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+ROM_END
+
+ROM_START( sf2thndr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "17_30.11e", 0x00000, 0x20000, CRC(d3cd6d18) SHA1(c7efe9e7a7dee29bfe40a571960145efa26ac22e) )
+ ROM_LOAD16_BYTE( "17_37.11f", 0x00001, 0x20000, CRC(e892716e) SHA1(b3836b33bc026a0bccc5ed7cdecf8d2ba2b5607a) )
+ ROM_LOAD16_BYTE( "sf2u_31b.12e", 0x40000, 0x20000, CRC(a673143d) SHA1(e565f0ec23d6deb543c72af5a83f070c07319477) )
+ ROM_LOAD16_BYTE( "sf2u_38b.12f", 0x40001, 0x20000, CRC(4c2ccef7) SHA1(77b119c70c255622b023de25d9af3b3aac52ea47) )
+ ROM_LOAD16_BYTE( "sf2u_28b.9e", 0x80000, 0x20000, CRC(4009955e) SHA1(7842dbef7650485639fbae49b9f4db7494d4f73d) )
+ ROM_LOAD16_BYTE( "sf2u_35b.9f", 0x80001, 0x20000, CRC(8c1f3994) SHA1(5e1d334399d05a837c2d80f79eada543e83afaf7) )
+ ROM_LOAD16_BYTE( "17_29.10e", 0xc0000, 0x20000, CRC(8830b54d) SHA1(fe5e958f69d52fa12c31c1a7ccf0dcfd340045cb) )
+ ROM_LOAD16_BYTE( "17_36.10f", 0xc0001, 0x20000, CRC(3f13ada3) SHA1(412572f220f64e5b0ee2cad0a9204142ae2f7c90) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.bin", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a
+ ROMX_LOAD( "sf2_08.bin", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a
+ ROMX_LOAD( "sf2_05.bin", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a
+ ROMX_LOAD( "sf2_07.bin", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a
+ ROMX_LOAD( "sf2_15.bin", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c
+ ROMX_LOAD( "sf2_17.bin", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c
+ ROMX_LOAD( "sf2_14.bin", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c
+ ROMX_LOAD( "sf2_16.bin", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c
+ ROMX_LOAD( "sf2_25.bin", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d
+ ROMX_LOAD( "sf2_27.bin", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d
+ ROMX_LOAD( "sf2_24.bin", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d
+ ROMX_LOAD( "sf2_26.bin", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_09.bin", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sf2_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 3wonders )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rte_30a.11f", 0x00000, 0x20000, CRC(ef5b8b33) SHA1(2313168e5f10505ceece5fdaada0d30df3ca146c) )
+ ROM_LOAD16_BYTE( "rte_35a.11h", 0x00001, 0x20000, CRC(7d705529) SHA1(b456629b5755b701cca8a438d24957367a260ec5) )
+ ROM_LOAD16_BYTE( "rte_31a.12f", 0x40000, 0x20000, CRC(32835e5e) SHA1(9ec530561030a75a1283ff2aacc21e55613b682b) )
+ ROM_LOAD16_BYTE( "rte_36a.12h", 0x40001, 0x20000, CRC(7637975f) SHA1(56935032eebd3e1c5059f6842b97001dae0aa55f) )
+ ROM_LOAD16_BYTE( "rt_28a.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) )
+ ROM_LOAD16_BYTE( "rt_33a.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) )
+ ROM_LOAD16_BYTE( "rte_29a.10f", 0xc0000, 0x20000, CRC(cddaa919) SHA1(0c98e95ad5033d2c5ade7651243e7ccdb4e35463) )
+ ROM_LOAD16_BYTE( "rte_34a.10h", 0xc0001, 0x20000, CRC(ed52e7e5) SHA1(352433ae484967d26376141e3a8a0f968b98fde6) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "rt-5m.7a", 0x000000, 0x80000, CRC(86aef804) SHA1(723927ef3bf992d12395c52db051ece7bf57d5e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-7m.9a", 0x000002, 0x80000, CRC(4f057110) SHA1(b7d35c883a74cf4bfb242d9f15a0e40ed1ec111f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-1m.3a", 0x000004, 0x80000, CRC(902489d0) SHA1(748ba416a8b9343059a3e7d8b93f02162feb1d0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-3m.5a", 0x000006, 0x80000, CRC(e35ce720) SHA1(6c1a87a1f819bdc20408b5a7823cf35a79d34110) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-6m.8a", 0x200000, 0x80000, CRC(13cb0e7c) SHA1(e429d594d9a7ff4cc6306e2796a9d6ad0fa25569) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-8m.10a", 0x200002, 0x80000, CRC(1f055014) SHA1(d64f5be9bb2ef761ca9b2e797dbc3554cf996a79) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-2m.4a", 0x200004, 0x80000, CRC(e9a034f4) SHA1(deb4cb5886705380b57d4fe9b9bf3c032e1d6227) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-4m.6a", 0x200006, 0x80000, CRC(df0eea8b) SHA1(5afa05654cccb0504bd44569d42fd68f08fd172f) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) )
+ ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rt24b.1a", 0x0000, 0x0117, CRC(54b85159) SHA1(c6f4fb5d747a215f4f50e4f2258e35d3f9bdbb2e) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) /* seen the same pcb with LWIO.11E */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 3wondersr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rte_30.11f", 0x00000, 0x20000, CRC(0d541519) SHA1(ce0f9ebaea038c98f8866624d3061c65c84cf20d) )
+ ROM_LOAD16_BYTE( "rte_35.11h", 0x00001, 0x20000, CRC(73dd0e20) SHA1(b4f4086574176befa70863a85a3c0a8fd6e4bd90) )
+ ROM_LOAD16_BYTE( "rte_31.12f", 0x40000, 0x20000, CRC(33e0337d) SHA1(53e5795baf307a789b4337f081a932359e569a98) )
+ ROM_LOAD16_BYTE( "rte_36.12h", 0x40001, 0x20000, CRC(a8865243) SHA1(0a4d7e8e07d88104aa01457a10a8a9abd3ed4ce1) )
+ ROM_LOAD16_BYTE( "rte_28.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) ) // == rt_28a.9f
+ ROM_LOAD16_BYTE( "rte_33.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) ) // == rt_33a.9h
+ ROM_LOAD16_BYTE( "rte_29.10f", 0xc0000, 0x20000, CRC(9a8df1e4) SHA1(5b61d2d729145d524e23036bb27ba3ba75c208fe) )
+ ROM_LOAD16_BYTE( "rte_34.10h", 0xc0001, 0x20000, CRC(6348a79d) SHA1(2e4b58f9c6c1ad6a89c90d8ebb46cee2613f1397) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "rt-5m.7a", 0x000000, 0x80000, CRC(86aef804) SHA1(723927ef3bf992d12395c52db051ece7bf57d5e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-7m.9a", 0x000002, 0x80000, CRC(4f057110) SHA1(b7d35c883a74cf4bfb242d9f15a0e40ed1ec111f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-1m.3a", 0x000004, 0x80000, CRC(902489d0) SHA1(748ba416a8b9343059a3e7d8b93f02162feb1d0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-3m.5a", 0x000006, 0x80000, CRC(e35ce720) SHA1(6c1a87a1f819bdc20408b5a7823cf35a79d34110) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-6m.8a", 0x200000, 0x80000, CRC(13cb0e7c) SHA1(e429d594d9a7ff4cc6306e2796a9d6ad0fa25569) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-8m.10a", 0x200002, 0x80000, CRC(1f055014) SHA1(d64f5be9bb2ef761ca9b2e797dbc3554cf996a79) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-2m.4a", 0x200004, 0x80000, CRC(e9a034f4) SHA1(deb4cb5886705380b57d4fe9b9bf3c032e1d6227) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-4m.6a", 0x200006, 0x80000, CRC(df0eea8b) SHA1(5afa05654cccb0504bd44569d42fd68f08fd172f) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(7d5a77a7) SHA1(4f2a6534d7a9e518061102c1dd7d7aca39600c33) ) /* 1 byte different from 3wonders, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(f6dc0d3d) SHA1(9959fc3339613042c95b90aad2bc1c3dafdb605e) ) /* 6 bytes different from 3wonders, pcb verified */
+ ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rt24b.1a", 0x0000, 0x0117, CRC(54b85159) SHA1(c6f4fb5d747a215f4f50e4f2258e35d3f9bdbb2e) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( 3wondersu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rtu_30a.11f", 0x00000, 0x20000, CRC(0b156fd8) SHA1(1ec811cd7cbd12066f876db7255394e754ceb25e) )
+ ROM_LOAD16_BYTE( "rtu_35a.11h", 0x00001, 0x20000, CRC(57350bf4) SHA1(33e8685cce82eee7bcb7c2787318a130764e97e2) )
+ ROM_LOAD16_BYTE( "rtu_31a.12f", 0x40000, 0x20000, CRC(0e723fcc) SHA1(91eeab6376a5aa852152af9920aef60bc7c689dd) )
+ ROM_LOAD16_BYTE( "rtu_36a.12h", 0x40001, 0x20000, CRC(523a45dc) SHA1(6d6743803016fa5ba713e0d6f61affce8a3255ec) )
+ ROM_LOAD16_BYTE( "rt_28a.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) )
+ ROM_LOAD16_BYTE( "rt_33a.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) )
+ ROM_LOAD16_BYTE( "rtu_29a.10f", 0xc0000, 0x20000, CRC(37ba3e20) SHA1(a128b1a17639b06a4fd8acffe0357f1dbd1d4fe9) )
+ ROM_LOAD16_BYTE( "rtu_34a.10h", 0xc0001, 0x20000, CRC(f99f46c0) SHA1(cda24a6baa3f861e7078fb2fa91328cc1cddc866) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "rt-5m.7a", 0x000000, 0x80000, CRC(86aef804) SHA1(723927ef3bf992d12395c52db051ece7bf57d5e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-7m.9a", 0x000002, 0x80000, CRC(4f057110) SHA1(b7d35c883a74cf4bfb242d9f15a0e40ed1ec111f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-1m.3a", 0x000004, 0x80000, CRC(902489d0) SHA1(748ba416a8b9343059a3e7d8b93f02162feb1d0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-3m.5a", 0x000006, 0x80000, CRC(e35ce720) SHA1(6c1a87a1f819bdc20408b5a7823cf35a79d34110) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-6m.8a", 0x200000, 0x80000, CRC(13cb0e7c) SHA1(e429d594d9a7ff4cc6306e2796a9d6ad0fa25569) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-8m.10a", 0x200002, 0x80000, CRC(1f055014) SHA1(d64f5be9bb2ef761ca9b2e797dbc3554cf996a79) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-2m.4a", 0x200004, 0x80000, CRC(e9a034f4) SHA1(deb4cb5886705380b57d4fe9b9bf3c032e1d6227) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-4m.6a", 0x200006, 0x80000, CRC(df0eea8b) SHA1(5afa05654cccb0504bd44569d42fd68f08fd172f) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) )
+ ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rt24b.1a", 0x0000, 0x0117, CRC(54b85159) SHA1(c6f4fb5d747a215f4f50e4f2258e35d3f9bdbb2e) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) /* seen the same pcb with LWIO.11E */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( wonder3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rtj_36.12f", 0x00000, 0x20000, CRC(e3741247) SHA1(4deb0f667697631693fbefddaeb8cf98fd0b90ce) )
+ ROM_LOAD16_BYTE( "rtj_42.12h", 0x00001, 0x20000, CRC(b4baa117) SHA1(44486b3d50f9b0a8c32c2c2dc5f1a046aface7b6) )
+ ROM_LOAD16_BYTE( "rtj_37.13f", 0x40000, 0x20000, CRC(a1f677b0) SHA1(e1511ea0fa4a689d1355119ac37c075192880dde) )
+ ROM_LOAD16_BYTE( "rtj_43.13h", 0x40001, 0x20000, CRC(85337a47) SHA1(0a247aa56c5cc17b1e888df7b502f65e88715469) )
+ ROM_LOAD16_BYTE( "rt_34.10f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) ) // == rt_28a.9f
+ ROM_LOAD16_BYTE( "rt_40.10h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) ) // == rt_33a.9h
+ ROM_LOAD16_BYTE( "rtj_35.11f", 0xc0000, 0x20000, CRC(e72f9ea3) SHA1(c63df200416bd61af73e8589204f7daef743041e) )
+ ROM_LOAD16_BYTE( "rtj_41.11h", 0xc0001, 0x20000, CRC(a11ee998) SHA1(b892398e2ff4e40e51b858cfdbce866a75c670e6) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "rt_09.4b", 0x000000, 0x20000, CRC(2c40e480) SHA1(823a36aa6dba7a028d4da5faef752366aa18fe57) , ROM_SKIP(7) ) // == rt-5m.7a
+ ROMX_LOAD( "rt_01.4a", 0x000001, 0x20000, CRC(3e11f8cd) SHA1(88d7edd7102b1abec2b6f87029d39414f3ebc094) , ROM_SKIP(7) ) // == rt-5m.7a
+ ROMX_LOAD( "rt_13.9b", 0x000002, 0x20000, CRC(51009117) SHA1(55549a2bd1abb3aea5dc17f17a2bd4a46c6cf12a) , ROM_SKIP(7) ) // == rt-7m.9a
+ ROMX_LOAD( "rt_05.9a", 0x000003, 0x20000, CRC(283fd470) SHA1(2d7ff9c5a747565f2186b9252b703ebac3117beb) , ROM_SKIP(7) ) // == rt-7m.9a
+ ROMX_LOAD( "rt_24.5e", 0x000004, 0x20000, CRC(ee4484ce) SHA1(5bb27c119a4e69cb50425ca73556a2e4e4482728) , ROM_SKIP(7) ) // == rt-1m.3a
+ ROMX_LOAD( "rt_17.5c", 0x000005, 0x20000, CRC(e5dcddeb) SHA1(9a1c740cdd66ee2f58737eda613e79ff6357142a) , ROM_SKIP(7) ) // == rt-1m.3a
+ ROMX_LOAD( "rt_38.8h", 0x000006, 0x20000, CRC(b2940c2d) SHA1(62ea57fb0203dd8f0e123e55eef7637702f8466d) , ROM_SKIP(7) ) // == rt-3m.5a
+ ROMX_LOAD( "rt_32.8f", 0x000007, 0x20000, CRC(08e2b758) SHA1(f56a4f16454fe528c358fd212449a1ecb0f826e0) , ROM_SKIP(7) ) // == rt-3m.5a
+ ROMX_LOAD( "rt_10.5b", 0x100000, 0x20000, CRC(e3f3ff94) SHA1(d5e46da2d25ca5347037b9859227c949209b30a6) , ROM_SKIP(7) ) // == rt-5m.7a
+ ROMX_LOAD( "rt_02.5a", 0x100001, 0x20000, CRC(fcffd73c) SHA1(64830ffc053bd97f22b406f53b1e2e4a78db6a97) , ROM_SKIP(7) ) // == rt-5m.7a
+ ROMX_LOAD( "rt_14.10b", 0x100002, 0x20000, CRC(5c546d9a) SHA1(1e0d0451e83dddb3371bffae6af7e17908816aec) , ROM_SKIP(7) ) // == rt-7m.9a
+ ROMX_LOAD( "rt_06.10a", 0x100003, 0x20000, CRC(d9650bc4) SHA1(d28d85595bee9f6d4a697486a9db3a71ce60de50) , ROM_SKIP(7) ) // == rt-7m.9a
+ ROMX_LOAD( "rt_25.7e", 0x100004, 0x20000, CRC(11b28831) SHA1(bb8f97871ca15184dbed3a90f8968a40b83a4480) , ROM_SKIP(7) ) // == rt-1m.3a
+ ROMX_LOAD( "rt_18.7c", 0x100005, 0x20000, CRC(ce1afb7c) SHA1(50a330bb2d748f1a738fa7895aba81d9f0c14579) , ROM_SKIP(7) ) // == rt-1m.3a
+ ROMX_LOAD( "rt_39.9h", 0x100006, 0x20000, CRC(ea7ac9ee) SHA1(bc21d8e59eb190608a87072c22be9cb1cf1227cc) , ROM_SKIP(7) ) // == rt-3m.5a
+ ROMX_LOAD( "rt_33.9f", 0x100007, 0x20000, CRC(d6a99384) SHA1(552b012eb911b8739ee859af13e176a8396cecf2) , ROM_SKIP(7) ) // == rt-3m.5a
+ ROMX_LOAD( "rt_11.7b", 0x200000, 0x20000, CRC(04f3c298) SHA1(1f3f8713ed8a2ad2bf4afce4c733eb9cb850ca9f) , ROM_SKIP(7) ) // == rt-6m.8a
+ ROMX_LOAD( "rt_03.7a", 0x200001, 0x20000, CRC(98087e08) SHA1(6a13786a62e11d77c4da8469422e402df1299162) , ROM_SKIP(7) ) // == rt-6m.8a
+ ROMX_LOAD( "rt_15.11b", 0x200002, 0x20000, CRC(b6aba565) SHA1(a166c853a5b4bc2602ce14974c11f570ba29df6a) , ROM_SKIP(7) ) // == rt-8m.10a
+ ROMX_LOAD( "rt_07.11a", 0x200003, 0x20000, CRC(c62defa1) SHA1(2533f39251c99d5a184d72a5b96b5603466c0d11) , ROM_SKIP(7) ) // == rt-8m.10a
+ ROMX_LOAD( "rt_26.8e", 0x200004, 0x20000, CRC(532f542e) SHA1(c894b385aa10a5e80b548c01817958739e2afa89) , ROM_SKIP(7) ) // == rt-2m.4a
+ ROMX_LOAD( "rt_19.8c", 0x200005, 0x20000, CRC(1f0f72bd) SHA1(ad1afcde397a3273afc7c7a0b084a9b68e9e736e) , ROM_SKIP(7) ) // == rt-2m.4a
+ ROMX_LOAD( "rt_28.10e", 0x200006, 0x20000, CRC(6064e499) SHA1(3bc30b9d8dde5f5e8dda31afbdadb5b2e4d50932) , ROM_SKIP(7) ) // == rt-4m.6a
+ ROMX_LOAD( "rt_21.10c", 0x200007, 0x20000, CRC(20012ddc) SHA1(4389f2554c429f0a421425a6645dd8e719f4995f) , ROM_SKIP(7) ) // == rt-4m.6a
+ ROMX_LOAD( "rt_12.8b", 0x300000, 0x20000, CRC(e54664cc) SHA1(e3b5ff0e9af20580cb4228f644f23a05aad20478) , ROM_SKIP(7) ) // == rt-6m.8a
+ ROMX_LOAD( "rt_04.8a", 0x300001, 0x20000, CRC(4d7b9a1a) SHA1(1a9dd66bb97e2a02f3264d5766b674b588ad7dfc) , ROM_SKIP(7) ) // == rt-6m.8a
+ ROMX_LOAD( "rt_16.12b", 0x300002, 0x20000, CRC(37c96cfc) SHA1(270f824757c0f536b02fef147d8e0af07e8d7147) , ROM_SKIP(7) ) // == rt-8m.10a
+ ROMX_LOAD( "rt_08.12a", 0x300003, 0x20000, CRC(75f4975b) SHA1(1cd78828db97931ab0bfe0339e7051c58b3eff60) , ROM_SKIP(7) ) // == rt-8m.10a
+ ROMX_LOAD( "rt_27.9e", 0x300004, 0x20000, CRC(ec6edc0f) SHA1(6dc13d692ca7bc989cd9b40bab8a2943425b7d61) , ROM_SKIP(7) ) // == rt-2m.4a
+ ROMX_LOAD( "rt_20.9c", 0x300005, 0x20000, CRC(4fe52659) SHA1(1bf22ae192b57cd62e92f290313cc9d3234b2700) , ROM_SKIP(7) ) // == rt-2m.4a
+ ROMX_LOAD( "rt_29.11e", 0x300006, 0x20000, CRC(8fa77f9f) SHA1(2f6b37d8e5eed38a8847c9ad736a7cdbe9958a70) , ROM_SKIP(7) ) // == rt-4m.6a
+ ROMX_LOAD( "rt_22.11c", 0x300007, 0x20000, CRC(228a0d4a) SHA1(bcaf12d01abe1d3cd5731bd5341cb22c4ca6139e) , ROM_SKIP(7) ) // == rt-4m.6a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rt_23.13b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) ) // == rt_9.12b
+// ROM_LOAD( "rt_23.13b", 0x00000, 0x08000, CRC(7d5a77a7) SHA1(4f2a6534d7a9e518061102c1dd7d7aca39600c33) ) /* dumped from another board, 1 byte different, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rt_30.12c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) ) // == rt_18.11c
+ ROM_LOAD( "rt_31.13c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) ) // == rt_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rt22b.1a", 0x0000, 0x0117, CRC(89560d6a) SHA1(0f88920536eb131948339becb14557d77e02b9f8) )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* Three Wonders (bootleg) */
+ROM_START( 3wondersb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "274001.4", 0x00000, 0x80000, CRC(47887cf3) SHA1(cdb2df67c99fd698845484869608bfaafa782bd6) )
+ ROM_LOAD16_BYTE( "274001.3", 0x00001, 0x80000, CRC(e79eacb3) SHA1(cb2712b4e566d7d2ab5639f2e62f6e15244a7f09) )
+
+ // The remainder of the roms in this set have the same content as those from '3wondersh'.
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "274001.12", 0x000000, 0x80000, CRC(47cf8dfb) SHA1(05fed8e61d8f8c0382d820e7bdef36db85ad416b) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.8", 0x000001, 0x80000, CRC(3bc2ef5e) SHA1(6864838e8f116bc56e7d205674240763a55d7907) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.10", 0x000002, 0x80000, CRC(a0d27605) SHA1(7f2a7d3cc8802e778a98a29a4992a223932bff2c) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.6", 0x000003, 0x80000, CRC(312d790c) SHA1(8739ba0784447f4050da1e6de8e31df3537b307d) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.11", 0x000004, 0x80000, CRC(8112bbb4) SHA1(5a93cee8627afeb255eec1d26ec043cd2c4d2218) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.7", 0x000005, 0x80000, CRC(58307167) SHA1(e253b64e144ccf3c4a0268e4be68468f11b2b071) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.9", 0x000006, 0x80000, CRC(cb73759d) SHA1(e6fa263bcd7876f83f499fb95fbbc45ebce950fe) , ROM_SKIP(7) )
+ ROMX_LOAD( "274001.5", 0x000007, 0x80000, CRC(3f765ae8) SHA1(a37cccbf2212eaa38a77b2f712688ce45b17e3b5) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "27512.2", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "27020.1", 0x00000, 0x40000, CRC(3c4348cf) SHA1(cfa9fd2f9692ddfef856106de191d3bdb5289297) )
+ROM_END
+
+/* Three Wonders (hack) */
+ROM_START( 3wondersh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "22.bin", 0x00000, 0x20000, CRC(e6071884) SHA1(5cf1a859739cf98846cb049b64fd083733acb29c) )
+ ROM_LOAD16_BYTE( "26.bin", 0x00001, 0x20000, CRC(a28447b7) SHA1(e3f11911f1d3d115c03edf1bb6c8a68fccd9e9b3) )
+ ROM_LOAD16_BYTE( "23.bin", 0x40000, 0x20000, CRC(fd3d6509) SHA1(0824ec397d12c2b832c9e694c23b59c2e489ed3b) )
+ ROM_LOAD16_BYTE( "27.bin", 0x40001, 0x20000, CRC(999cba3d) SHA1(99dfb902c0c77f798a868eb13340eb54fb4a84d3) )
+ ROM_LOAD16_BYTE( "rt_28a.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) )
+ ROM_LOAD16_BYTE( "rt_33a.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) )
+ ROM_LOAD16_BYTE( "rte_29a.10f", 0xc0000, 0x20000, CRC(cddaa919) SHA1(0c98e95ad5033d2c5ade7651243e7ccdb4e35463) )
+ ROM_LOAD16_BYTE( "rte_34a.10h", 0xc0001, 0x20000, CRC(ed52e7e5) SHA1(352433ae484967d26376141e3a8a0f968b98fde6) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "16.bin", 0x000000, 0x40000, CRC(c997bca2) SHA1(6b6cd9c2fc56690c42a3368cd5e6c98d6bff5b5b) , ROM_SKIP(7) )
+ ROMX_LOAD( "6.bin", 0x000001, 0x40000, CRC(3eea321a) SHA1(4368aaf8a532c29f4b950adb2daedd3069d84cf1) , ROM_SKIP(7) )
+ ROMX_LOAD( "18.bin", 0x000002, 0x40000, CRC(98acdfd4) SHA1(910dfd6742e166530388c700c0797e692e501f97) , ROM_SKIP(7) )
+ ROMX_LOAD( "8.bin", 0x000003, 0x40000, CRC(dc9ca6f9) SHA1(77549e9a128d1b7ca0c4547cdc56f43450d426e0) , ROM_SKIP(7) )
+ ROMX_LOAD( "12.bin", 0x000004, 0x40000, CRC(0d8a6007) SHA1(48d61cbd91df01ba4b2f0e80e60375a50ddb065e) , ROM_SKIP(7) )
+ ROMX_LOAD( "2.bin", 0x000005, 0x40000, CRC(d75563b9) SHA1(7b7b105b84dc5d7b17838961fdd8be5bac90cbc6) , ROM_SKIP(7) )
+ ROMX_LOAD( "14.bin", 0x000006, 0x40000, CRC(84369a28) SHA1(3877186371fe289522133fd99be034b141a974ca) , ROM_SKIP(7) )
+ ROMX_LOAD( "4.bin", 0x000007, 0x40000, CRC(d4831578) SHA1(9ff5860f22976e9e4c023946f35e24fde84fe8ea) , ROM_SKIP(7) )
+ ROMX_LOAD( "17.bin", 0x200000, 0x40000, CRC(040edff5) SHA1(9747d67b980cc357c6fa732300a84ae55150bc51) , ROM_SKIP(7) )
+ ROMX_LOAD( "7.bin", 0x200001, 0x40000, CRC(c7c0468c) SHA1(e7a14cf579b023e8954b7e06aa2337db4f53bedc) , ROM_SKIP(7) )
+ ROMX_LOAD( "19.bin", 0x200002, 0x40000, CRC(9fef114f) SHA1(394afb083ce7c46d9a39097d0040f9e18aaab508) , ROM_SKIP(7) )
+ ROMX_LOAD( "9.bin", 0x200003, 0x40000, CRC(48cbfba5) SHA1(74047433e50795e29d8299526ae2c424610f0a5e) , ROM_SKIP(7) )
+ ROMX_LOAD( "13.bin", 0x200004, 0x40000, CRC(8fc3d7d1) SHA1(e2784e0fccfe062ea8dc440e4a884fc665f4a846) , ROM_SKIP(7) )
+ ROMX_LOAD( "3.bin", 0x200005, 0x40000, CRC(c65e9a86) SHA1(359ab1e2dd0fcf38ed9815a6a50294cbeca8223c) , ROM_SKIP(7) )
+ ROMX_LOAD( "15.bin", 0x200006, 0x40000, CRC(f239341a) SHA1(b1858f5f7a5d210c5327b84a797ed7e898250596) , ROM_SKIP(7) )
+ ROMX_LOAD( "5.bin", 0x200007, 0x40000, CRC(947ac944) SHA1(d962f49ba532fc60209bb3957ff8a456855ef67f) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) )
+ ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rt24b.1a", 0x0000, 0x0117, CRC(54b85159) SHA1(c6f4fb5d747a215f4f50e4f2258e35d3f9bdbb2e) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( kod )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "kde_30a.11e", 0x00000, 0x20000, CRC(fcb5efe2) SHA1(6122e4852633876ff2ccd4b72296fce96446b3ee) )
+ ROM_LOAD16_BYTE( "kde_37a.11f", 0x00001, 0x20000, CRC(f22e5266) SHA1(2fbadce701218f4a56bfd6dfd758abacb34a2181) )
+ ROM_LOAD16_BYTE( "kde_31a.12e", 0x40000, 0x20000, CRC(c710d722) SHA1(a2e9b84d3e7d835a910ab9f584bdc64c2559995a) )
+ ROM_LOAD16_BYTE( "kde_38a.12f", 0x40001, 0x20000, CRC(57d6ed3a) SHA1(a47da5068723c8e16ed458fbfa3e3db57b32d87d) )
+ ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) )
+ ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) )
+ ROM_LOAD16_BYTE( "kd_29.10e", 0xc0000, 0x20000, CRC(0360fa72) SHA1(274769c8717a874397cf37369e3ef80a682d9ef2) )
+ ROM_LOAD16_BYTE( "kd_36a.10f", 0xc0001, 0x20000, CRC(95a3cef8) SHA1(9b75c1ed0eafacc230197ffd9b81e0c8f4f2c464) ) /* seen the same pcb with KDE_36A.10F */
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kd29b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( kodr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "kde_30.11e", 0x00000, 0x20000, CRC(c7414fd4) SHA1(37d27fbe7c617a26b53bfdfcd532cf573d42f33b) )
+ ROM_LOAD16_BYTE( "kde_37.11f", 0x00001, 0x20000, CRC(a5bf40d2) SHA1(cd34dbeabd0974709411579e669f01d0d799c2a1) )
+ ROM_LOAD16_BYTE( "kde_31.12e", 0x40000, 0x20000, CRC(1fffc7bd) SHA1(822c9ad996ca51a99a2bb1fe08fa19e18413030d) )
+ ROM_LOAD16_BYTE( "kde_38.12f", 0x40001, 0x20000, CRC(89e57a82) SHA1(aad35f86a8b1b7e3a0b5f3e6efd0e844b3d3d82f) )
+ ROM_LOAD16_BYTE( "kde_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) // == kd_28.9e
+ ROM_LOAD16_BYTE( "kde_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) // == kd_35.9f
+ ROM_LOAD16_BYTE( "kde_29.10e", 0xc0000, 0x20000, CRC(6a0ba878) SHA1(82e4037d73889a76b0cdc7a4f8e77e585d38e56e) )
+ ROM_LOAD16_BYTE( "kde_36.10f", 0xc0001, 0x20000, CRC(b509b39d) SHA1(6023855e54b170e55abf0f607600031e19e5e722) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(f5514510) SHA1(07e9c836adf9ef2f7e7729e99015f71e3b5f16e0) ) /* different CRC from kod, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(69ecb2c8) SHA1(fadf266b6b20bd6329a3e638918c5a3106413476) ) /* different CRC from kod, pcb verified */
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(02d851c1) SHA1(c959a6fc3e7d893557f319debae91f28471f4be2) ) /* different CRC from kod, pcb verified */
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kd29b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( kodu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "kdu_30b.11e", 0x00000, 0x20000, CRC(825817f9) SHA1(250f61effcbe59f8b70baaf26eb8aef419fed66b) )
+ ROM_LOAD16_BYTE( "kdu_37b.11f", 0x00001, 0x20000, CRC(d2422dfb) SHA1(6e369a62012f3c480755b700d4d4f4c112c79483) )
+ ROM_LOAD16_BYTE( "kdu_31b.12e", 0x40000, 0x20000, CRC(9af36039) SHA1(f2645178a042689a387f916b4ecd7d1d859d758a) )
+ ROM_LOAD16_BYTE( "kdu_38b.12f", 0x40001, 0x20000, CRC(be8405a1) SHA1(8d4f9a0489dc4b2971b20170713284151bc10eb7) )
+ ROM_LOAD16_BYTE( "kdu_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) // == kd_28.9e
+ ROM_LOAD16_BYTE( "kdu_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) // == kd_35.9f
+ ROM_LOAD16_BYTE( "kdu_29.10e", 0xc0000, 0x20000, CRC(0360fa72) SHA1(274769c8717a874397cf37369e3ef80a682d9ef2) ) // == kd_29.10e
+ ROM_LOAD16_BYTE( "kdu_36a.10f", 0xc0001, 0x20000, CRC(95a3cef8) SHA1(9b75c1ed0eafacc230197ffd9b81e0c8f4f2c464) ) // == kd_36a.10f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "11" socket
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "13" socket
+ ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "10" socket
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "12" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kd_09.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) ) // == kd_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kd29b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( kodj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "kdj_30a.11e", 0x00000, 0x20000, CRC(ebc788ad) SHA1(f4a297e409fcdbb2c15a13b39a16e4a83e7e060b) )
+ ROM_LOAD16_BYTE( "kdj_37a.11f", 0x00001, 0x20000, CRC(e55c3529) SHA1(a5254895499a53b4fbaac6fd50464b9e08175b8d) )
+ ROM_LOAD16_BYTE( "kdj_31a.12e", 0x40000, 0x20000, CRC(c710d722) SHA1(a2e9b84d3e7d835a910ab9f584bdc64c2559995a) ) // == kde_31a.12e
+ ROM_LOAD16_BYTE( "kdj_38a.12f", 0x40001, 0x20000, CRC(57d6ed3a) SHA1(a47da5068723c8e16ed458fbfa3e3db57b32d87d) ) // == kde_38a.12f
+ ROM_LOAD16_WORD_SWAP("kd_33.6f", 0x80000, 0x80000, CRC(9bd7ad4b) SHA1(7bece5d408fd13116bd5518014b632ecc9a2feaa) ) // incorrect label, could be kdj_33a, kdj_33, kd_33a
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd_06.8a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-5m.4a
+ ROMX_LOAD( "kd_08.10a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-7m.6a
+ ROMX_LOAD( "kd_05.7a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-1m.3a
+ ROMX_LOAD( "kd_07.9a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-3m.5a
+ ROMX_LOAD( "kd_15.8c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-6m.4c
+ ROMX_LOAD( "kd_17.10c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-8m.6c
+ ROMX_LOAD( "kd_14.7c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-2m.3c
+ ROMX_LOAD( "kd_16.9c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kd-4m.5c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kd_09.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) ) // == kd_9.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kd29b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89625B-1 */
+/* Note that this set is equivalent to kodj, but each 4Mbit EPROM is replaced by 4 1Mbit EPROMs. */
+ROM_START( kodja )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "kdj_36a.12f", 0x00000, 0x20000, CRC(ebc788ad) SHA1(f4a297e409fcdbb2c15a13b39a16e4a83e7e060b) ) // == kdj_30a.11e
+ ROM_LOAD16_BYTE( "kdj_42a.12h", 0x00001, 0x20000, CRC(e55c3529) SHA1(a5254895499a53b4fbaac6fd50464b9e08175b8d) ) // == kdj_37a.11f
+ ROM_LOAD16_BYTE( "kdj_37a.13f", 0x40000, 0x20000, CRC(c710d722) SHA1(a2e9b84d3e7d835a910ab9f584bdc64c2559995a) ) // == kdj_31a.12e
+ ROM_LOAD16_BYTE( "kdj_43a.13h", 0x40001, 0x20000, CRC(57d6ed3a) SHA1(a47da5068723c8e16ed458fbfa3e3db57b32d87d) ) // == kdj_38a.12f
+ ROM_LOAD16_BYTE( "kd_34.10f", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) // == kd_33.6f
+ ROM_LOAD16_BYTE( "kd_40.10h", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) // == kd_33.6f
+ ROM_LOAD16_BYTE( "kd_35.11f", 0xc0000, 0x20000, CRC(0360fa72) SHA1(274769c8717a874397cf37369e3ef80a682d9ef2) ) // == kd_33.6f
+ ROM_LOAD16_BYTE( "kd_41a.11h", 0xc0001, 0x20000, CRC(95a3cef8) SHA1(9b75c1ed0eafacc230197ffd9b81e0c8f4f2c464) ) // == kd_33.6f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd_9.4b", 0x000000, 0x20000, CRC(401a98e3) SHA1(b762d0f0e38ad33b5135646a107c1d4279c02193) , ROM_SKIP(7) ) // == kd_06.8a
+ ROMX_LOAD( "kd_1.4a", 0x000001, 0x20000, CRC(5894399a) SHA1(ee0bff29d313b4d5a318bc7345cc356d6e7318fc) , ROM_SKIP(7) ) // == kd_06.8a
+ ROMX_LOAD( "kd_13.9b", 0x000002, 0x20000, CRC(b6685131) SHA1(c1fa66cb695cfcb61e8495031ce18e4c6736b561) , ROM_SKIP(7) ) // == kd_08.10a
+ ROMX_LOAD( "kd_5.9a", 0x000003, 0x20000, CRC(c29b9ab3) SHA1(3ffa906d22563c9ad29b9ba4cd22b4ce5605b66a) , ROM_SKIP(7) ) // == kd_08.10a
+ ROMX_LOAD( "kd_24.5e", 0x000004, 0x20000, CRC(97008fdb) SHA1(150a7907f48dede2de0c40f1bea46e95d2e31e9c) , ROM_SKIP(7) ) // == kd_05.7a
+ ROMX_LOAD( "kd_17.5c", 0x000005, 0x20000, CRC(dc9a83d3) SHA1(6ceb5e6b11e7a57933c03fb308e1c6a850cf5ac7) , ROM_SKIP(7) ) // == kd_05.7a
+ ROMX_LOAD( "kd_38.8h", 0x000006, 0x20000, CRC(9c3dd2d1) SHA1(3ab77954fbde45797fcb1c5d8a500b5ec2673e5f) , ROM_SKIP(7) ) // == kd_07.9a
+ ROMX_LOAD( "kd_32.8f", 0x000007, 0x20000, CRC(1b2a802a) SHA1(f9b9e6da6a49aaf7c88b7b806c273b464a584a7b) , ROM_SKIP(7) ) // == kd_07.9a
+ ROMX_LOAD( "kd_10.5b", 0x100000, 0x20000, CRC(e788ae96) SHA1(1c257a4c20842b8750e3ba3cf78adad0bc5e6f2c) , ROM_SKIP(7) ) // == kd_06.8a
+ ROMX_LOAD( "kd_2.5a", 0x100001, 0x20000, CRC(b022e3e3) SHA1(a1e3700638e99677d4ee9aea5a250eb2380413c2) , ROM_SKIP(7) ) // == kd_06.8a
+ ROMX_LOAD( "kd_14.10b", 0x100002, 0x20000, CRC(4840c5ef) SHA1(fcd7ee778ab4519887bd37ced5e04f7aa8748e5e) , ROM_SKIP(7) ) // == kd_08.10a
+ ROMX_LOAD( "kd_6.10a", 0x100003, 0x20000, CRC(519faee4) SHA1(038afb9d2df872a0b45a7a6a43f7bb1389e8539a) , ROM_SKIP(7) ) // == kd_08.10a
+ ROMX_LOAD( "kd_25.7e", 0x100004, 0x20000, CRC(5d0fa853) SHA1(81e69bfac5ad6909d47db0927b7387bd392b4ef3) , ROM_SKIP(7) ) // == kd_05.7a
+ ROMX_LOAD( "kd_18.7c", 0x100005, 0x20000, CRC(6ad3b2bb) SHA1(c8d3bd2ce6305772224b5419301b59b9e78e7d44) , ROM_SKIP(7) ) // == kd_05.7a
+ ROMX_LOAD( "kd_39.9h", 0x100006, 0x20000, CRC(d7920213) SHA1(ac7de3f6c8503e06ae27f7db43bf9884f244bf7a) , ROM_SKIP(7) ) // == kd_07.9a
+ ROMX_LOAD( "kd_33.9f", 0x100007, 0x20000, CRC(65c2bed6) SHA1(932be92a418a2d3960f0b071eb5ffe6dae60d933) , ROM_SKIP(7) ) // == kd_07.9a
+ ROMX_LOAD( "kd_11.7b", 0x200000, 0x20000, CRC(147e3310) SHA1(e371db6c6621d09c43325edf9e3e40777afb830c) , ROM_SKIP(7) ) // == kd_15.8c
+ ROMX_LOAD( "kd_3.7a", 0x200001, 0x20000, CRC(5d18bc83) SHA1(49191e1073cdfb32272e6daeddedc4b309cf9fe6) , ROM_SKIP(7) ) // == kd_15.8c
+ ROMX_LOAD( "kd_15.11b", 0x200002, 0x20000, CRC(57359746) SHA1(2f83b77e6ebbceffab10653018a1b54a91d39a3f) , ROM_SKIP(7) ) // == kd_17.10c
+ ROMX_LOAD( "kd_7.11a", 0x200003, 0x20000, CRC(7fe03079) SHA1(be3be96d63a53cd8b6dc67eadc718c4b3b182123) , ROM_SKIP(7) ) // == kd_17.10c
+ ROMX_LOAD( "kd_26.8e", 0x200004, 0x20000, CRC(57e5fab5) SHA1(e665ab581372b48b6a7a494fd65ed6c807b5c00a) , ROM_SKIP(7) ) // == kd_14.7c
+ ROMX_LOAD( "kd_19.8c", 0x200005, 0x20000, CRC(b1f30f7c) SHA1(80308091a0af6ca46011a9174838c4d9dbeb96ee) , ROM_SKIP(7) ) // == kd_14.7c
+ ROMX_LOAD( "kd_28.10e", 0x200006, 0x20000, CRC(3a424135) SHA1(05d77253f454d69553a39a5dca0798f6ccea6da0) , ROM_SKIP(7) ) // == kd_16.9c
+ ROMX_LOAD( "kd_21.10c", 0x200007, 0x20000, CRC(ce10d2c3) SHA1(b694325b370d451cb3bcfe7d753c53ef68b83276) , ROM_SKIP(7) ) // == kd_16.9c
+ ROMX_LOAD( "kd_12.8b", 0x300000, 0x20000, CRC(a6042aa2) SHA1(daa4e52574b53d125414401ad0fca6eea36abe64) , ROM_SKIP(7) ) // == kd_15.8c
+ ROMX_LOAD( "kd_4.8a", 0x300001, 0x20000, CRC(0ce0ba30) SHA1(a19049b5fc58921452bf7b69d2d86d0faa5362bf) , ROM_SKIP(7) ) // == kd_15.8c
+ ROMX_LOAD( "kd_16.12b", 0x300002, 0x20000, CRC(63dcb7e0) SHA1(1524321f31813452aabfef133fb64fd0cef165cf) , ROM_SKIP(7) ) // == kd_17.10c
+ ROMX_LOAD( "kd_8.12a", 0x300003, 0x20000, CRC(c69b77ae) SHA1(31cacace828d4e376347ecd896f3454f79285a8b) , ROM_SKIP(7) ) // == kd_17.10c
+ ROMX_LOAD( "kd_27.9e", 0x300004, 0x20000, CRC(40d7bfed) SHA1(924d3f981d85434d2a22d4ede45131720d7521c0) , ROM_SKIP(7) ) // == kd_14.7c
+ ROMX_LOAD( "kd_20.9c", 0x300005, 0x20000, CRC(01c1f399) SHA1(ea25d4efc9e538ee8ed09acb6e467c5b444bf728) , ROM_SKIP(7) ) // == kd_14.7c
+ ROMX_LOAD( "kd_29.11e", 0x300006, 0x20000, CRC(a1eeac03) SHA1(fdec33ec0becc4badf89c9019f3217c22e54e842) , ROM_SKIP(7) ) // == kd_16.9c
+ ROMX_LOAD( "kd_22.11c", 0x300007, 0x20000, CRC(5ade98eb) SHA1(5d2474864bf0e41e89fe44c69025101b8ef2b482) , ROM_SKIP(7) ) // == kd_16.9c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kd_23.13b", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) ) // == kd_09.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kd_30.12c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) ) // == kd_18.11c
+ ROM_LOAD( "kd_31.13c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) ) // == kd_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kd22b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( captcomm )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "cce_23f.8f", 0x000000, 0x80000, CRC(42c814c5) SHA1(60e6ae6b8a89cdaa1abf1749c60a5e3b3972e1ab) )
+ ROM_LOAD16_WORD_SWAP( "cc_22f.7f", 0x080000, 0x80000, CRC(0fd34195) SHA1(fb2b9a53af43507f13c4f94eaebbf0b538b2e754) )
+ ROM_LOAD16_BYTE( "cc_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) )
+ ROM_LOAD16_BYTE( "cc_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( captcommr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "cce_23d.8f", 0x000000, 0x80000, CRC(19c58ece) SHA1(6e23e87db29b2c5698b7cead99d1106a2e190648) )
+ ROM_LOAD16_WORD_SWAP( "cc_22d.7f", 0x080000, 0x80000, CRC(a91949b7) SHA1(c027af89cd8f6bd3aaed61114582322c42e0c74f) )
+ ROM_LOAD16_BYTE( "cc_24d.9e", 0x100000, 0x20000, CRC(680e543f) SHA1(cfa963ab6329f615807db213bf53841860ed3149) )
+ ROM_LOAD16_BYTE( "cc_28d.9f", 0x100001, 0x20000, CRC(8820039f) SHA1(d68ce0b34ade75b8c5214168b2b1e0cdff45cd52) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) // == ccprg1.11d
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) // == c632b.ic1
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( captcommu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "ccu_23b.8f", 0x000000, 0x80000, CRC(03da44fd) SHA1(0bf382933b4b44082bbaf63e96acd83ab8808a34) )
+ ROM_LOAD16_WORD_SWAP( "ccu_22c.7f", 0x080000, 0x80000, CRC(9b82a052) SHA1(8247fe45fea8c47072a66d6707202bcdb8c62923) )
+ ROM_LOAD16_BYTE( "ccu_24b.9e", 0x100000, 0x20000, CRC(84ff99b2) SHA1(5b02c91f3d0f8fb46db9596136b683f5a22dc15f) )
+ ROM_LOAD16_BYTE( "ccu_28b.9f", 0x100001, 0x20000, CRC(fbcec223) SHA1(daf484baece5b3a11f3dcabb758b8bdd736a1fb6) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ccu_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) // == cc_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ccu_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) // == cc_18.11c
+ ROM_LOAD( "ccu_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) // == cc_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) /* seen the same pcb with CCPRG.11D */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) // == c632b.ic1
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( captcommj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "ccj_23f.8f", 0x000000, 0x80000, CRC(5b482b62) SHA1(c871aa1eb9ecc117c3079995d1f5212193bd2e12) )
+ ROM_LOAD16_WORD_SWAP( "ccj_22f.7f", 0x080000, 0x80000, CRC(0fd34195) SHA1(fb2b9a53af43507f13c4f94eaebbf0b538b2e754) ) // == cc_22f.7f
+ ROM_LOAD16_BYTE( "ccj_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) ) // == cc_24f.9e
+ ROM_LOAD16_BYTE( "ccj_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) ) // == cc_28f.9f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc_01.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-5m.3a
+ ROMX_LOAD( "cc_02.4a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-7m.5a
+ ROMX_LOAD( "cc_03.5a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-1m.4a
+ ROMX_LOAD( "cc_04.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-3m.6a
+ ROMX_LOAD( "cc_05.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-6m.7a
+ ROMX_LOAD( "cc_06.8a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-8m.9a
+ ROMX_LOAD( "cc_07.9a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-2m.8a
+ ROMX_LOAD( "cc_08.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-4m.10a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ccj_09.12a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) // == cc_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ccj_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) // == cc_18.11c
+ ROM_LOAD( "ccj_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) // == cc_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) /* seen the same pcb with CCPRG.11D */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) /* seen the same pcb with C632.IC1 */
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( captcommjr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "ccj_23b.8f", 0x000000, 0x80000, CRC(e2a2d80e) SHA1(ec3c455974b77cd2e4357546aea4cb25690a041f) )
+ ROM_LOAD16_WORD_SWAP( "ccj_22c.7f", 0x080000, 0x80000, CRC(9b82a052) SHA1(8247fe45fea8c47072a66d6707202bcdb8c62923) ) // == ccu_22c.7f
+ ROM_LOAD16_BYTE( "ccj_24b.9e", 0x100000, 0x20000, CRC(84ff99b2) SHA1(5b02c91f3d0f8fb46db9596136b683f5a22dc15f) ) // == ccu_24b.9e
+ ROM_LOAD16_BYTE( "ccj_28b.9f", 0x100001, 0x20000, CRC(fbcec223) SHA1(daf484baece5b3a11f3dcabb758b8bdd736a1fb6) ) // == ccu_28b.9f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc_01.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-5m.3a
+ ROMX_LOAD( "cc_02.4a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-7m.5a
+ ROMX_LOAD( "cc_03.5a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-1m.4a
+ ROMX_LOAD( "cc_04.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-3m.6a
+ ROMX_LOAD( "cc_05.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-6m.7a
+ ROMX_LOAD( "cc_06.8a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-8m.9a
+ ROMX_LOAD( "cc_07.9a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-2m.8a
+ ROMX_LOAD( "cc_08.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-4m.10a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ccj_09.12a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) // == cc_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ccj_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) // == cc_18.11c
+ ROM_LOAD( "ccj_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) // == cc_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) // == ccprg1.11d
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) // == c632b.ic1
+ROM_END
+
+/* Captain Commando bootleg
+ - there are 2 dumps of this, one has bad (half size) gfx roms tho, otherwise identical
+
+ROMs from a Captain Commando bootleg PCB
+
+Large single PCB containing.....
+68000 @ 10MHz
+Z80 @ 3.579545MHz
+YM2151 @ 3.579545MHz
+M6295 @ 1MHz (16/16), pin 7 HIGH
+xtals 10MHz, 3.579545MHz, 16MHz
+8-position DSWs x3
+6116 (2kx8) SRAM x6
+62256 (32kx8) SRAM x6
+681000 (128kx8) SRAM x2
+a few PALs
+LOTS of logic
+no special chips
+no custom chips
+no PLD/CPLD/FPGA
+no PROMs
+
+*/
+
+ROM_START( captcommb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "25.bin", 0x000000, 0x80000, CRC(cb71ed7a) SHA1(84f76b4861a3c7a59e67f38777f2d68749f19337) )
+ ROM_LOAD16_BYTE( "27.bin", 0x000001, 0x80000, CRC(47cb2e87) SHA1(8a990a3a122045b50dd73d2e7b02fe60ab9af0a3) )
+ ROM_LOAD16_BYTE( "24.bin", 0x100000, 0x40000, CRC(79794279) SHA1(5a43a4cef6653454ba9a81f2dd7f3f91c8a3354c) )
+ ROM_LOAD16_BYTE( "26.bin", 0x100001, 0x40000, CRC(b01077ba) SHA1(0698fbfca7beea8e6a676aa19fcbf5ddea3defb1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "c91e-01.bin", 0x000000, 0x40000, CRC(f863071c) SHA1(c5154c4001f8e447623f9d71bf3e68a16f039e8f), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROM_CONTINUE( 0x200000, 0x40000)
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "c91e-02.bin", 0x000001, 0x40000, CRC(4b03c308) SHA1(d28d3ebba2571bea56b057cb3e09315a17d78b42), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROM_CONTINUE( 0x200001, 0x40000)
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "c91e-03.bin", 0x000002, 0x40000, CRC(3383ea96) SHA1(2a583d87c6d80919c97640f6f2e756cecc3e38ec), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROM_CONTINUE( 0x200002, 0x40000)
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "c91e-04.bin", 0x000003, 0x40000, CRC(b8e1f4cf) SHA1(6686df700c7ce49fe4ac7007aa4d622645e0e348), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROM_CONTINUE( 0x200003, 0x40000)
+ ROM_CONTINUE( 0x200007, 0x40000)
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "l.bin", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "c91e-05.bin", 0x00000, 0x40000, CRC(096115fb) SHA1(b496550f61b3d4b54ba43522d31efd0b09057493))
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( knights )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "kr_23e.8f", 0x00000, 0x80000, CRC(1b3997eb) SHA1(724b68eff319fcdf0dd3bc1eb6662996c1f6ecd9) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kr63b.1a", 0x0000, 0x0117, CRC(fd5b6522) SHA1(5e6ebb2d736415402920a30d331d4b6dab557e5e) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( knightsu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "kr_23u.8f", 0x00000, 0x80000, CRC(252bc2ba) SHA1(4f4901c253bd64bbe68ea01994ae663fe2ccd056) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kr63b.1a", 0x0000, 0x0117, CRC(fd5b6522) SHA1(5e6ebb2d736415402920a30d331d4b6dab557e5e) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( knightsj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "kr_23j.8f", 0x00000, 0x80000, CRC(eae7417f) SHA1(2ec808265a9a231922e2397d7e8f3c3841a90859) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr_01.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-5m.3a
+ ROMX_LOAD( "kr_02.4a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-7m.5a
+ ROMX_LOAD( "kr_03.5a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-1m.4a
+ ROMX_LOAD( "kr_04.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-3m.6a
+ ROMX_LOAD( "kr_05.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-6m.7a
+ ROMX_LOAD( "kr_06.8a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-8m.9a
+ ROMX_LOAD( "kr_07.9a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-2m.8a
+ ROMX_LOAD( "kr_08.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == kr-4m.10a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kr_09.12a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) // == kr_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kr63b.1a", 0x0000, 0x0117, CRC(fd5b6522) SHA1(5e6ebb2d736415402920a30d331d4b6dab557e5e) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89625B-1 */
+/* Note that this set is equivalent to knightsj, but each 4Mbit EPROM is replaced by 4 1Mbit EPROMs. */
+ROM_START( knightsja )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "krj_36.12f", 0x00000, 0x20000, CRC(ad3d1a8e) SHA1(327f9e818f1500836fc549afeffbb2a3c5aafe8c) ) // == kr_23j.8f
+ ROM_LOAD16_BYTE( "krj_42.12h", 0x00001, 0x20000, CRC(e694a491) SHA1(5a4d27c879c10032c49880019501de3e45ab1b35) ) // == kr_23j.8f
+ ROM_LOAD16_BYTE( "krj_37.13f", 0x40000, 0x20000, CRC(85596094) SHA1(74ad294de63aa6b60aa8b885c45c3d41a07ce19a) ) // == kr_23j.8f
+ ROM_LOAD16_BYTE( "krj_43.13h", 0x40001, 0x20000, CRC(9198bf8f) SHA1(aa3610600286ab25ce81705ea1319d42e7cc7f6c) ) // == kr_23j.8f
+ ROM_LOAD16_BYTE( "kr_34.10f", 0x80000, 0x20000, CRC(fe6eb08d) SHA1(a67ca33895ff7f41e8521ff7b39e629048d04d30) ) // == kr_22.7f
+ ROM_LOAD16_BYTE( "kr_40.10h", 0x80001, 0x20000, CRC(1172806d) SHA1(5ad08bf9bada036d89a55f5a542ee1db22df45b2) ) // == kr_22.7f
+ ROM_LOAD16_BYTE( "kr_35.11f", 0xc0000, 0x20000, CRC(f854b020) SHA1(3d8bd0ab5e0fa2da3c868b591edff5c66f1f08ed) ) // == kr_22.7f
+ ROM_LOAD16_BYTE( "kr_41.11h", 0xc0001, 0x20000, CRC(eb52e78d) SHA1(b9462c9d97848a6dc4d55475053824df8c9e7f02) ) // == kr_22.7f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr_09.4b", 0x000000, 0x20000, CRC(08b76e10) SHA1(b18833c4794ef59f8eaf7aef4d62790c3fec9d4d) , ROM_SKIP(7) ) // == kr_01.3a
+ ROMX_LOAD( "kr_01.4a", 0x000001, 0x20000, CRC(40cecf5c) SHA1(a628199e1808664c403d0de183d1c6ae01670c57) , ROM_SKIP(7) ) // == kr_01.3a
+ ROMX_LOAD( "kr_13.9b", 0x000002, 0x20000, CRC(435aaa03) SHA1(60af266dccab12220d7efce68887b64826aba37d) , ROM_SKIP(7) ) // == kr_02.4a
+ ROMX_LOAD( "kr_05.9a", 0x000003, 0x20000, CRC(5b8a615b) SHA1(42aebdb7f338eac9a29380cb0b7553f0d3eaac04) , ROM_SKIP(7) ) // == kr_02.4a
+ ROMX_LOAD( "kr_24.5e", 0x000004, 0x20000, CRC(de65153e) SHA1(f28fcde0d08634d036d07c2a699026007d19718f) , ROM_SKIP(7) ) // == kr_03.5a
+ ROMX_LOAD( "kr_17.5c", 0x000005, 0x20000, CRC(b171c968) SHA1(cdbd7b0dc9fd2f3f027796d8f5cabf0a92a11941) , ROM_SKIP(7) ) // == kr_03.5a
+ ROMX_LOAD( "kr_38.8h", 0x000006, 0x20000, CRC(f4466bf4) SHA1(86e1ffc354b189504ca8f96143a62344a530d267) , ROM_SKIP(7) ) // == kr_04.6a
+ ROMX_LOAD( "kr_32.8f", 0x000007, 0x20000, CRC(87380ddd) SHA1(01e864060adcdafad987c5758db593525faed589) , ROM_SKIP(7) ) // == kr_04.6a
+ ROMX_LOAD( "kr_10.5b", 0x100000, 0x20000, CRC(37006d66) SHA1(0efec364ed5b0e121023bc3424d51241a4b208e0) , ROM_SKIP(7) ) // == kr_01.3a
+ ROMX_LOAD( "kr_02.5a", 0x100001, 0x20000, CRC(b54612e3) SHA1(1d33cf99fdaf3bf5c8d212d1a7c71f085c6c2cd4) , ROM_SKIP(7) ) // == kr_01.3a
+ ROMX_LOAD( "kr_14.10b", 0x100002, 0x20000, CRC(0ae88766) SHA1(5e3954b51b030d6e7cabd8f94cb849e963cc7d52) , ROM_SKIP(7) ) // == kr_02.4a
+ ROMX_LOAD( "kr_06.10a", 0x100003, 0x20000, CRC(ecb1a09a) SHA1(bbd96260774f52e50377ad020fc94d1b120f0a37) , ROM_SKIP(7) ) // == kr_02.4a
+ ROMX_LOAD( "kr_25.7e", 0x100004, 0x20000, CRC(9aace189) SHA1(95332a14dbe9d24a7e294a26530913b8cb5237f2) , ROM_SKIP(7) ) // == kr_03.5a
+ ROMX_LOAD( "kr_18.7c", 0x100005, 0x20000, CRC(09fa14a5) SHA1(36e7412a317d5f8b528d914d7e6c3c1872eb8533) , ROM_SKIP(7) ) // == kr_03.5a
+ ROMX_LOAD( "kr_39.9h", 0x100006, 0x20000, CRC(fd8a9aeb) SHA1(a38ea74de95a78fc72c6ad165157e4c22aaa5aed) , ROM_SKIP(7) ) // == kr_04.6a
+ ROMX_LOAD( "kr_33.9f", 0x100007, 0x20000, CRC(11803e95) SHA1(71603ba4a85967dd434d8499738014a9227d1d26) , ROM_SKIP(7) ) // == kr_04.6a
+ ROMX_LOAD( "kr_11.7b", 0x200000, 0x20000, CRC(a967ceb3) SHA1(43cdc0e0114f7ccedc7db5cd49b9041ed1a2614f) , ROM_SKIP(7) ) // == kr_05.7a
+ ROMX_LOAD( "kr_03.7a", 0x200001, 0x20000, CRC(ea10db07) SHA1(e537f3983ac32abcef06fa45afe51f82c87bfa86) , ROM_SKIP(7) ) // == kr_05.7a
+ ROMX_LOAD( "kr_15.11b", 0x200002, 0x20000, CRC(8140b83b) SHA1(e9cec517d84aa688d60f4201bcee00dbcdd44798) , ROM_SKIP(7) ) // == kr_06.8a
+ ROMX_LOAD( "kr_07.11a", 0x200003, 0x20000, CRC(6af10648) SHA1(b1d6c908496b1197e23571f5230f017502d5018c) , ROM_SKIP(7) ) // == kr_06.8a
+ ROMX_LOAD( "kr_26.8e", 0x200004, 0x20000, CRC(8865d86b) SHA1(a79b528d2f94ee350a39eb59860189809267cfad) , ROM_SKIP(7) ) // == kr_07.9a
+ ROMX_LOAD( "kr_19.8c", 0x200005, 0x20000, CRC(029f4abe) SHA1(e0f02d18e2a51eb02cabe507fbe77031ee3e67e7) , ROM_SKIP(7) ) // == kr_07.9a
+ ROMX_LOAD( "kr_28.10e", 0x200006, 0x20000, CRC(5f84f92f) SHA1(77b254e8159024490497533073fe302a82531835) , ROM_SKIP(7) ) // == kr_08.10a
+ ROMX_LOAD( "kr_21.10c", 0x200007, 0x20000, CRC(01b35065) SHA1(8a98860ec453ac88a3c0fc19c117bd4131d0c97c) , ROM_SKIP(7) ) // == kr_08.10a
+ ROMX_LOAD( "kr_12.8b", 0x300000, 0x20000, CRC(03d945b1) SHA1(88588891422247e6ab42f35a1b91a5801b8fd5b0) , ROM_SKIP(7) ) // == kr_05.7a
+ ROMX_LOAD( "kr_04.8a", 0x300001, 0x20000, CRC(e30c8388) SHA1(aa519f298f4156b339eb81767ca585e62dc9f4b5) , ROM_SKIP(7) ) // == kr_05.7a
+ ROMX_LOAD( "kr_16.12b", 0x300002, 0x20000, CRC(40c39d1b) SHA1(578d081f5e1bbfdc30b286cdd5165474b3ed79f7) , ROM_SKIP(7) ) // == kr_06.8a
+ ROMX_LOAD( "kr_08.12a", 0x300003, 0x20000, CRC(d310c9e8) SHA1(e23a4b318e7d3d6ea3bc6dd4509f49cd656d3d63) , ROM_SKIP(7) ) // == kr_06.8a
+ ROMX_LOAD( "kr_27.9e", 0x300004, 0x20000, CRC(3e041444) SHA1(7f84158bf2466625ff50befed7e3008b8fe09f70) , ROM_SKIP(7) ) // == kr_07.9a
+ ROMX_LOAD( "kr_20.9c", 0x300005, 0x20000, CRC(bd4bffb8) SHA1(b8f1162427a46ca9d2833390edc5723d28817a08) , ROM_SKIP(7) ) // == kr_07.9a
+ ROMX_LOAD( "kr_29.11e", 0x300006, 0x20000, CRC(1387a076) SHA1(5fe32ee8e8557c5bc6c865b2054f3c6c2a1eae7d) , ROM_SKIP(7) ) // == kr_08.10a
+ ROMX_LOAD( "kr_22.11c", 0x300007, 0x20000, CRC(fd351922) SHA1(7e08a9b23bf524d5fd566d81745aee1cd3a0f026) , ROM_SKIP(7) ) // == kr_08.10a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "kr_23.13b", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) // == kr_09.12a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "kr_30.12c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) ) // == kr_18.11c
+ ROM_LOAD( "kr_31.13c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) ) // == kr_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "kr22b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2ce )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92e_23b.8f", 0x000000, 0x80000, CRC(0aaa1a3a) SHA1(774a2b52f7c1876c0e10d8d57a0850ad2d016cf6) )
+ ROM_LOAD16_WORD_SWAP( "s92_22b.7f", 0x080000, 0x80000, CRC(2bbe15ed) SHA1(a8e2edef62fa99c5ef701b28bfb6bc42f3af183d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2ceea )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92e_23a.8f", 0x000000, 0x80000, CRC(3f846b74) SHA1(c8d7a01b626771870123f1663a01a81f9c8fe582) )
+ ROM_LOAD16_WORD_SWAP( "s92_22a.7f", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2ceua )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92u_23a.8f", 0x000000, 0x80000, CRC(ac44415b) SHA1(218f8b1886eb72b8547127042b5ae47600e18944) )
+ ROM_LOAD16_WORD_SWAP( "s92_22a.7f", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2ceub )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92u_23b.8f", 0x000000, 0x80000, CRC(996a3015) SHA1(fdf45da54b1c14478a60f2b86e37ffe32a98b135) )
+ ROM_LOAD16_WORD_SWAP( "s92_22b.7f", 0x080000, 0x80000, CRC(2bbe15ed) SHA1(a8e2edef62fa99c5ef701b28bfb6bc42f3af183d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2ceuc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92u_23c.8f", 0x000000, 0x80000, CRC(0a8b6aa2) SHA1(a19871271172119e1cf1ff47700bb1917b08514b) )
+ ROM_LOAD16_WORD_SWAP( "s92_22c.7f", 0x080000, 0x80000, CRC(5fd8630b) SHA1(f0ef9c5ab91a4b421fb4b1747eef99c964c15de3) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( sf2ceja )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92j_23a.8f", 0x000000, 0x80000, CRC(4f42bb5a) SHA1(59d0587c554e06ea45d4092ea4299ff086509d4b) )
+ ROM_LOAD16_WORD_SWAP( "s92j_22a.7f", 0x080000, 0x80000, CRC(c4f64bcd) SHA1(262c0419bf727da80c2ac52b877a19276d9aac3c) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-1m.3a
+ ROMX_LOAD( "s92_02.4a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-3m.5a
+ ROMX_LOAD( "s92_03.5a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-2m.4a
+ ROMX_LOAD( "s92_04.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-4m.6a
+ ROMX_LOAD( "s92_05.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-5m.7a
+ ROMX_LOAD( "s92_06.8a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-7m.9a
+ ROMX_LOAD( "s92_07.9a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-6m.8a
+ ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-8m.10a
+ ROMX_LOAD( "s92_10.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-10m.3c
+ ROMX_LOAD( "s92_11.4c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-12m.5c
+ ROMX_LOAD( "s92_12.5c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-11m.4c
+ ROMX_LOAD( "s92_13.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-13m.6c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.12a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // == s92_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( sf2cejb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92j_23b.8f", 0x000000, 0x80000, CRC(140876c5) SHA1(304630e6d8bae9f8d29090e05f7e013c7dafe9cc) )
+ ROM_LOAD16_WORD_SWAP( "s92j_22b.7f", 0x080000, 0x80000, CRC(2fbb3bfe) SHA1(e364564a12022730c2c0d0e8fd435e2c30ef9410) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) ) // could be s92j_21a.6f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-1m.3a
+ ROMX_LOAD( "s92_02.4a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-3m.5a
+ ROMX_LOAD( "s92_03.5a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-2m.4a
+ ROMX_LOAD( "s92_04.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-4m.6a
+ ROMX_LOAD( "s92_05.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-5m.7a
+ ROMX_LOAD( "s92_06.8a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-7m.9a
+ ROMX_LOAD( "s92_07.9a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-6m.8a
+ ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-8m.10a
+ ROMX_LOAD( "s92_10.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-10m.3c
+ ROMX_LOAD( "s92_11.4c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-12m.5c
+ ROMX_LOAD( "s92_12.5c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-11m.4c
+ ROMX_LOAD( "s92_13.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-13m.6c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.12a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // == s92_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( sf2cejc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s92j_23c.8f", 0x000000, 0x80000, CRC(f0120635) SHA1(5e4a9a4b0f65c6139e76ee4ffa02b9db245b1858) )
+ ROM_LOAD16_WORD_SWAP( "s92j_22c.7f", 0x080000, 0x80000, CRC(8c0b2ed6) SHA1(408db039b4dad72b41458723575ed5352b71e10b) )
+ ROM_LOAD16_WORD_SWAP( "s92j_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) ) // == s92_21a.6f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-1m.3a
+ ROMX_LOAD( "s92_02.4a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-3m.5a
+ ROMX_LOAD( "s92_03.5a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-2m.4a
+ ROMX_LOAD( "s92_04.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-4m.6a
+ ROMX_LOAD( "s92_05.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-5m.7a
+ ROMX_LOAD( "s92_06.8a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-7m.9a
+ ROMX_LOAD( "s92_07.9a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-6m.8a
+ ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-8m.10a
+ ROMX_LOAD( "s92_10.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-10m.3c
+ ROMX_LOAD( "s92_11.4c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-12m.5c
+ ROMX_LOAD( "s92_12.5c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-11m.4c
+ ROMX_LOAD( "s92_13.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-13m.6c
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.12a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // == s92_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2bhh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "23", 0x000000, 0x40000, CRC(5cf63a9e) SHA1(af26165cacb4838572ddf1cd7a2ff22a5dddbf3c) ) // sldh
+ ROM_CONTINUE( 0x0c0000, 0x40000 )
+ ROM_LOAD16_WORD_SWAP( "22", 0x080000, 0x40000, CRC(3ed72bca) SHA1(5565aee82e6b4734c4c0d06a73d8141abb1e4119) ) // sldh
+ ROM_CONTINUE( 0x040000, 0x40000 )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+ROM_START( sf2rb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD( "sf2d__23.rom", 0x000000, 0x80000, CRC(450532b0) SHA1(14d5ff44ce97247ef4c42147157856d16c5fb4b8) )
+ ROM_LOAD16_WORD( "sf2d__22.rom", 0x080000, 0x80000, CRC(fe9d9cf5) SHA1(91afb25d8c0fd1a721f982cebf8fdf563fe11760) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2rb2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27.bin", 0x000000, 0x20000, CRC(40296ecd) SHA1(6006b9bc7e2e8ccec47f87b51791d3c0512620df) )
+ ROM_LOAD16_BYTE( "31.bin", 0x000001, 0x20000, CRC(87954a41) SHA1(67225f180e1f954f0bebba49b618f793a973af14) )
+ ROM_LOAD16_BYTE( "26.bin", 0x040000, 0x20000, CRC(a6974195) SHA1(f7e0fd43bd75229d49d5c330820bdc5c3b11ab03) )
+ ROM_LOAD16_BYTE( "30.bin", 0x040001, 0x20000, CRC(8141fe32) SHA1(e6ea1ee331f674c64e63a776ad4e428f6081c79c) )
+ ROM_LOAD16_BYTE( "25.bin", 0x080000, 0x20000, CRC(9ef8f772) SHA1(3ee271413521cc2d6ac9544e401ff38eff8a1347) )
+ ROM_LOAD16_BYTE( "29.bin", 0x080001, 0x20000, CRC(7d9c479c) SHA1(a1195444caac5230a1f74f3444b024ceaf1d0667) )
+ ROM_LOAD16_BYTE( "24.bin", 0x0c0000, 0x20000, CRC(93579684) SHA1(9052b46f635cae7843e9d37a601db0189a89e0f9) )
+ ROM_LOAD16_BYTE( "28.bin", 0x0c0001, 0x20000, CRC(ff728865) SHA1(ad4522294ff2e02b594d960b45940a3e57a5d1ec) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+/* this rainbow set DOES NOT require a custom PLD to work, runs on standard board with roms replaced */
+ROM_START( sf2rb3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sf2_ce_rb.23", 0x000000, 0x80000, CRC(202f9e50) SHA1(8f0259ade1bc4df65abf4ad0961db24ca27e3f4b) )
+ ROM_LOAD16_WORD_SWAP( "sf2_ce_rb.22", 0x080000, 0x80000, CRC(145e5219) SHA1(0b1251ad817a395f37f6c9acee393c3fce07777a) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2red )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sf2red.23", 0x000000, 0x80000, CRC(40276abb) SHA1(a991661f5a1a3116445594bcfed3150e36971dd7) )
+ ROM_LOAD16_WORD_SWAP( "sf2red.22", 0x080000, 0x80000, CRC(18daf387) SHA1(1a9e4c04ca54e8b33f19dd7bedbe05a200249701) )
+ ROM_LOAD16_WORD_SWAP( "sf2red.21", 0x100000, 0x80000, CRC(52c486bb) SHA1(b7df7b10faa4c9a2f86ebf64cd63ac148d62dd09) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2v004 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sf2v004.23", 0x000000, 0x80000, CRC(52d19f2c) SHA1(6a77b9244dc9b7d9a0ca8a642d4257cc944ac566) )
+ ROM_LOAD16_WORD_SWAP( "sf2v004.22", 0x080000, 0x80000, CRC(4b26fde7) SHA1(48e3aacbf9147f2374a93e10f945291c87f24855) )
+ ROM_LOAD16_WORD_SWAP( "sf2red.21", 0x100000, 0x80000, CRC(52c486bb) SHA1(b7df7b10faa4c9a2f86ebf64cd63ac148d62dd09) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2acc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sf2ca_23-c.bin", 0x000000, 0x80000, CRC(e7c8c5a6) SHA1(247fb38c041f4d516899db32545d8b4d8debc4cf) )
+ ROM_LOAD16_WORD_SWAP( "sf2ca_22-c.bin", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) )
+ ROM_LOAD16_WORD_SWAP( "sf2ca_21-c.bin", 0x100000, 0x40000, CRC(cf7fcc8c) SHA1(47d338634dd72d1ef912fbdb8c1a7ae945ca1a5f) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+
+
+ROM_START( sf2acca )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "23-c.8f", 0x000000, 0x80000, CRC(35f9517b) SHA1(0976870c65d69a6d8ca0232a48e042588a9ec5d8) )
+ ROM_LOAD16_WORD_SWAP( "22-c.7f", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) )
+ ROM_LOAD16_WORD_SWAP( "21-c.6f", 0x100000, 0x80000, CRC(2ab2034f) SHA1(4dc90ba524e76529700945605e02068d49b56aba) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2accp2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sf2ca-23.bin", 0x000000, 0x80000, CRC(36c3ba2f) SHA1(a3ddc479b725ddb3521757c8efa7aed125004997) )
+ ROM_LOAD16_WORD_SWAP( "sf2ca-22.bin", 0x080000, 0x80000, CRC(0550453d) SHA1(f9efed86528dd10f142636278f098584d33ccde6) )
+ ROM_LOAD16_WORD_SWAP( "sf2ca-21.bin", 0x100000, 0x40000, CRC(4c1c43ba) SHA1(16abce268373eddd7c3b93fe8d44b200a8c140fe) )
+ /* ROM space ends at 13ffff, but the code checks 180ca6 and */
+ /* crashes if it isn't 0 - protection? */
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+
+/*
+SF2' CE "bootleg"
+
+CPS1 motherboard (no dash)
+Original 88622-c-2 C board
+
+Bootleg B board with
+ PIC16c55 near PRG roms seem protected
+ 8 dipswith near both sound roms and gfx roms
+ 1,4,5,8 ON
+ 2,3,6,7 OFF
+
+Sound rom match various romset
+*/
+
+ROM_START( sf2ceblp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+
+ ROM_LOAD16_BYTE( "prg31.bin", 0x00000, 0x20000, CRC(ea78f9b4) SHA1(967f84615f6ef4d046df3593d5ffce0d43a3ac64) )
+ ROM_LOAD16_BYTE( "prg36.bin", 0x00001, 0x20000, CRC(d30c263e) SHA1(6d8b13f82dde3237115306d91f37ac95b8238e0a) )
+ ROM_LOAD16_BYTE( "prg30.bin", 0x40000, 0x20000, CRC(005b54cc) SHA1(3d3d7742c11f31cc62d81931dc970cd1f4a26835) )
+ ROM_LOAD16_BYTE( "prg35.bin", 0x40001, 0x20000, CRC(c184d26d) SHA1(b1011e869d0b84c1ab609fcf193b46c7d9cc3b28) )
+ ROM_LOAD16_BYTE( "prg29.bin", 0x80000, 0x20000, CRC(524f5c55) SHA1(67adfd36bb325c4a6d3e1e5b668c4dc983ac0a62) )
+ ROM_LOAD16_BYTE( "prg34.bin", 0x80001, 0x20000, CRC(f06a12f2) SHA1(ddc431ce01392d4a7562760743abd9ea73b06cf3) )
+ ROM_LOAD16_BYTE( "prg28.bin", 0xc0000, 0x40000, CRC(b7ad5214) SHA1(17b05e0aa9a4eb5f1aaafe35fa029d2a9aea530d) )
+ ROM_LOAD16_BYTE( "prg33.bin", 0xc0001, 0x40000, CRC(6340b914) SHA1(443e37a06058548c8ce7a15ecd10a6635e69d09f) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "24.bin", 0x000000, 0x40000, CRC(a8b5633a) SHA1(6548a89d616910d06db126eb1a9c6b5979baff03) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "14.bin", 0x000001, 0x40000, CRC(5db24ca7) SHA1(0543e89174fecc866a08e0ecc7c31a6efca15da5) , ROM_SKIP(7) )
+ ROMX_LOAD( "26.bin", 0x000002, 0x40000, CRC(82e8e384) SHA1(a8849bdb97c496777ba87e8f1942585c0fc9a29b) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "16.bin", 0x000003, 0x40000, CRC(1fd98ad0) SHA1(c0edf8ad305d5f8ba72498024cacf28b08491a57) , ROM_SKIP(7) )
+ ROMX_LOAD( "20.bin", 0x000004, 0x40000, CRC(8d5d0045) SHA1(74691132c740cc28585ebe9469fa36fea28c1cef) , ROM_SKIP(7) )
+ ROMX_LOAD( "10.bin", 0x000005, 0x40000, CRC(eb48f7f2) SHA1(f1d269949a8e06434e2206842535d86a70bcf58f) , ROM_SKIP(7) )
+ ROMX_LOAD( "22.bin", 0x000006, 0x40000, CRC(4109d637) SHA1(f7b0961ae3053a0751749ab77f27503e03ae1e5b) , ROM_SKIP(7) )
+ ROMX_LOAD( "12.bin", 0x000007, 0x40000, CRC(5d21d8b3) SHA1(1e75a4bf8d750e0858d70a489b59b50839b8c720) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "25.bin", 0x200000, 0x40000, CRC(72e923df) SHA1(f8db61f8a768fbf99a0be54af712aa19161978d1) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "15.bin", 0x200001, 0x40000, CRC(9a96be48) SHA1(c0a46aefba442196ead30d4f5de2b0370b1c03f0) , ROM_SKIP(7) )
+ ROMX_LOAD( "27.bin", 0x200002, 0x40000, CRC(4a3a8d09) SHA1(eaa7307963c7a5381a4d84a4ebcc483b55cc1411) , ROM_SKIP(7) ) // sldh
+ ROMX_LOAD( "17.bin", 0x200003, 0x40000, CRC(a917a922) SHA1(2186095f8473538756ca22dbdb2c68d17cbf24ab) , ROM_SKIP(7) )
+ ROMX_LOAD( "21.bin", 0x200004, 0x40000, CRC(55c2b455) SHA1(677ac8f988ea3c0564b2dd178ee2ab7077aeafc8) , ROM_SKIP(7) )
+ ROMX_LOAD( "11.bin", 0x200005, 0x40000, CRC(ff36859e) SHA1(7f5ab9daacfdb338913d6bca723efe3128dc931f) , ROM_SKIP(7) )
+ ROMX_LOAD( "23.bin", 0x200006, 0x40000, CRC(ef9c2d4d) SHA1(35c3ab5a3cc3ce2219b596c4c3e97d28b9cc2297) , ROM_SKIP(7) )
+ ROMX_LOAD( "13.bin", 0x200007, 0x40000, CRC(bc937c96) SHA1(772ff4e06093043f693729d8e94e7f8e3f8e866f) , ROM_SKIP(7) )
+
+ ROMX_LOAD( "6.bin", 0x400000, 0x40000, CRC(023baa18) SHA1(671600e629aff1cc161567ee4a5ceb2228731a36) , ROM_SKIP(7) )
+ ROMX_LOAD( "5.bin", 0x400001, 0x40000, CRC(a6ad6ef3) SHA1(c670931a98dfc6ca39d54d8cb8848421232d8c8c) , ROM_SKIP(7) )
+ ROMX_LOAD( "8.bin", 0x400002, 0x40000, CRC(26fb340c) SHA1(270455c10a0c7e4ba95a38ab7d815faedfe51fde) , ROM_SKIP(7) )
+ ROMX_LOAD( "7.bin", 0x400003, 0x40000, CRC(f56085ba) SHA1(ce8c33d7be271a501e770da5249778f62ca0e0a1) , ROM_SKIP(7) )
+ ROMX_LOAD( "1.bin", 0x400004, 0x40000, CRC(877b2b18) SHA1(36ebef5b534d2449b163df38b9a98f769c1d85ed) , ROM_SKIP(7) )
+ ROMX_LOAD( "2.bin", 0x400005, 0x40000, CRC(144aa4c9) SHA1(f00bf10f04ae774dda7e3a1c862aba67f70d61c3) , ROM_SKIP(7) )
+ ROMX_LOAD( "4.bin", 0x400006, 0x40000, CRC(f2c400b4) SHA1(090ff7184cd2a1b992cc9f1f8c03f8832bc11416) , ROM_SKIP(7) )
+ ROMX_LOAD( "3.bin", 0x400007, 0x40000, CRC(8053335d) SHA1(c653cb249401162fbf39f293e1999fe5e09c35c4) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x2000, "protectin_pic", 0 )
+ ROM_LOAD( "pic16c55", 0x00000, 0x2000, BAD_DUMP CRC(f22e2311) SHA1(320edfba140728599e91c01e863a8b6d071e4bbf) )
+ROM_END
+
+
+
+ROM_START( sf2cebltw )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27.12e", 0x000000, 0x20000, CRC(035ee5d9) SHA1(9d268333db96dc6d1539ea938d3b213482e276c6) )
+ ROM_LOAD16_BYTE( "31.12f", 0x000001, 0x20000, CRC(353dbde1) SHA1(039785f8863fda945267fc8b9cf640d954ea9803) )
+ ROM_LOAD16_BYTE( "24.9e", 0x040000, 0x20000, CRC(005b54cc) SHA1(3d3d7742c11f31cc62d81931dc970cd1f4a26835) )
+ ROM_LOAD16_BYTE( "28.9f", 0x040001, 0x20000, CRC(c184d26d) SHA1(b1011e869d0b84c1ab609fcf193b46c7d9cc3b28) )
+ ROM_LOAD16_BYTE( "25.10e", 0x080000, 0x20000, CRC(524f5c55) SHA1(67adfd36bb325c4a6d3e1e5b668c4dc983ac0a62) )
+ ROM_LOAD16_BYTE( "29.10f", 0x080001, 0x20000, CRC(f06a12f2) SHA1(ddc431ce01392d4a7562760743abd9ea73b06cf3) )
+ ROM_LOAD16_BYTE( "26.11e", 0x0c0000, 0x20000, CRC(8312d055) SHA1(e36c23c197096d50d71ceefbf93205d5758153e0) )
+ ROM_LOAD16_BYTE( "30.11f", 0x0c0001, 0x20000, CRC(d0580ff2) SHA1(1b2e4c4abbe90a68283c86e7cb5328b242be5683) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.5f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x40000, "pal", 0 )
+ ROM_LOAD( "bruteforce.palce16v8h-25.11d", 0x00000, 0x40000, CRC(430f722d) SHA1(b0c0570057c782b1114819fae907f45a01c55065) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+
+
+ROM_START( sf2amf )
+ /* the PCB is not working on real hardware */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "5.amf", 0x000000, 0x80000, CRC(03991fba) SHA1(6c42bf15248640fdb3e98fb01b0a870649deb410) )
+ ROM_LOAD16_BYTE( "4.amf", 0x000001, 0x80000, CRC(39f15a1e) SHA1(901c4fea76bf5bff7330ed07ffde54cdccdaa680) )
+ /* missing last part(s) of program roms, some gfx loading instructions are missing */
+ ROM_LOAD16_BYTE( "prg part 3.amf", 0x100000, 0x40000, NO_DUMP )
+ ROM_LOAD16_BYTE( "prg part 4.amf", 0x100001, 0x40000, NO_DUMP )
+ /* do not move this outside comments, this is only for testing purpose
+ ROM_LOAD16_BYTE( "u221.rom", 0x100000, 0x20000, CRC(64e6e091) SHA1(32ec05db955e538d4ada26d19ee50926f74b684f) )
+ ROM_LOAD16_BYTE( "u195.rom", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+ */
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "y.c.e.c m.k.r-001", 0x000000, 0x80000, CRC(a258de13) SHA1(2e477948c4c8a2fb7cfdc4a739766bc4a4e01c49), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000)
+ ROMX_LOAD( "y.c.e.c m.k.r-003", 0x000002, 0x80000, CRC(c781bf87) SHA1(034baa9807c2ce8dc800200963a38cd9262b21fb), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000)
+ ROMX_LOAD( "y.c.e.c m.k.r-002", 0x200000, 0x80000, CRC(5726cab8) SHA1(0b2243a9a7184d53d42ddab7a8c51b63001c2f56), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200004, 0x80000)
+ ROMX_LOAD( "y.c.e.c d.w.c-011", 0x200002, 0x80000, CRC(bc90c12f) SHA1(ecdb776239b22bd56b7c3a87c9e561f650a4dfea), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200006, 0x80000)
+ ROMX_LOAD( "y.c.e.c d.w.c-012", 0x400000, 0x80000, CRC(187667cc) SHA1(fae65bf23f49a32903fda8080659ccf8d42b911f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400004, 0x80000)
+ ROMX_LOAD( "y.c.e.c d.w.c-013", 0x400002, 0x80000, CRC(5b585071) SHA1(ad3371b1ba0441c67d9fcbb23b09464710e4e28a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x400006, 0x80000)
+ /* extra gfx layer roms loaded over the former ones to remove the capcom copyright logo */
+ ROMX_LOAD( "6.amf", 0x400000, 0x10000, CRC(3a85a275) SHA1(01907d69f912abffe3ad9745638ce3f282cfb2e8), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x10000 )
+ ROMX_LOAD( "9.amf", 0x400002, 0x10000, CRC(9156472f) SHA1(5db2acfc54308d4d26e0459f9486620a968c81d8), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x10000 )
+ ROMX_LOAD( "8.amf", 0x400001, 0x10000, CRC(ecdb083b) SHA1(899894c1db004e98f755ffbdf28d32296b9c0a86), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x10000 )
+ ROMX_LOAD( "10.amf", 0x400003, 0x10000, CRC(8fea8384) SHA1(8b31fd8d16cbafb5144f772653336b41db8f64fc), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x10000 )
+ /* end of extra gfx layer roms */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "3.amf", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "7.amf", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "2.amf", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "1.amf", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2amf2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "m5m27c401.u222", 0x000000, 0x80000, CRC(03991fba) SHA1(6c42bf15248640fdb3e98fb01b0a870649deb410) ) // == 5.amf sf2amf
+ ROM_LOAD16_BYTE( "m5m27c401.u196", 0x000001, 0x80000, CRC(39f15a1e) SHA1(901c4fea76bf5bff7330ed07ffde54cdccdaa680) ) // == 4.amf sf2amf
+
+ ROM_LOAD16_BYTE( "27020.u221", 0x100000, 0x40000, CRC(aa4d55a6) SHA1(8fd1c21816886a7734aae42e9336d5f66ddab7bc) ) // different
+ ROM_LOAD16_BYTE( "27020.u195", 0x100001, 0x40000, CRC(2bffa6f9) SHA1(eb1222356d89849edb08ea1898399cf90cf127f5) ) // different
+
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "fun-u70.bin", 0x000004, 0x80000, CRC(a94a8b19) SHA1(49ba9e6032a0b33d7db9fe609710575f2f75e695), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x000000, 0x80000)
+ ROMX_LOAD( "fun-u68.bin", 0x000006, 0x80000, CRC(0405f21f) SHA1(dbebd2c2c46d5aae8db905f2eb51abd4a5c4ea97), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x000002, 0x80000)
+ ROMX_LOAD( "fun-u69.bin", 0x200004, 0x80000, CRC(05dc2043) SHA1(d16b89a48d2dd7cdfafc79567ce1e230d4bd41c1), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x200000, 0x80000)
+ ROMX_LOAD( "fun-u67.bin", 0x200006, 0x80000, CRC(055b64f1) SHA1(3dd68f52b81ed1b300b65c900ef6bfe435d41e4b), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x200002, 0x80000)
+ ROMX_LOAD( "fun-u19.bin", 0x400004, 0x80000, CRC(1a518609) SHA1(18ffca70d6cefb399ba6e3008e5c29dc37de52a0), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x400000, 0x80000)
+ ROMX_LOAD( "fun-u18.bin", 0x400006, 0x80000, CRC(84f9354f) SHA1(ecc190950b1f45b268da380c17859a8d0715b58f), ROM_GROUPWORD | ROM_SKIP(6) ) // different
+ ROM_CONTINUE( 0x400002, 0x80000)
+ /* extra gfx layer roms loaded over the former ones to remove the capcom copyright logo */
+ ROMX_LOAD( "grp1.u31", 0x400004, 0x10000, CRC(6de44671) SHA1(dc6abba639e0c27033e391c7438d88dc89a93351), ROM_SKIP(7) ) // different
+ ROM_CONTINUE( 0x400000, 0x10000 )
+ ROMX_LOAD( "grp3.u29", 0x400006, 0x10000, CRC(e8f14362) SHA1(a20eb75e322011e2a8d8bf2acebe713bef3d3941), ROM_SKIP(7) ) // different
+ ROM_CONTINUE( 0x400002, 0x10000 )
+ ROMX_LOAD( "grp2.u30", 0x400005, 0x10000, CRC(bf0cd819) SHA1(f04a098fce07949277268327871c5e5520e3bb3c), ROM_SKIP(7) ) // different
+ ROM_CONTINUE( 0x400001, 0x10000 )
+ ROMX_LOAD( "grp4.u28", 0x400007, 0x10000, CRC(76f9f91f) SHA1(58a34062d2c8378558a7f1629140330279af9a43), ROM_SKIP(7) ) // different
+ ROM_CONTINUE( 0x400003, 0x10000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "27512.u191", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "27512.u133", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "fun-u210.bin", 0x00000, 0x40000, CRC(6cfffb11) SHA1(995526183ffd35f92e9096500a3fe6237faaa2dd) )
+ROM_END
+
+ROM_START( sf2dkot2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ /* The game reads values from 0x201201 and 0x281201 (at PC=E5452) and uses their difference to form a jump offset. */
+ /* This arrangement seems to work */
+ ROM_LOAD16_WORD_SWAP( "turboii.23", 0x000000, 0x80000, CRC(9bbfe420) SHA1(299ab5625f2d4ebc89bcf19a2b2d88edc8054747) )
+ ROM_RELOAD( 0x280000, 0x80000 )
+ ROM_LOAD16_WORD_SWAP( "turboii.22", 0x080000, 0x80000, CRC(3e57ba19) SHA1(ae8170ac890c14ba7746e29c0f21dfb38c4c9837) )
+ ROM_RELOAD( 0x200000, 0x80000 )
+
+ ROM_LOAD16_WORD_SWAP( "turboii.21", 0x100000, 0x80000, CRC(ed4186bd) SHA1(f3dfe91d8f4384275190b0d86488843c1161d86f) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ch222esp", 0x000000, 0x80000, CRC(9e6d058a) SHA1(8c9adca7b65dc929c325c0a62304d24dc0902c08) )
+ ROM_LOAD16_BYTE( "ch196esp", 0x000001, 0x80000, CRC(ed2ff437) SHA1(e76fc2953b6c800d5955c8fb442b80142e40e375) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222chp", 0x000000, 0x80000, CRC(db567b66) SHA1(315bfbf2786ef67a95afb87de836ab348523dbbe) )
+ ROM_LOAD16_BYTE( "u196chp", 0x000001, 0x80000, CRC(95ea597e) SHA1(5eb82feaa1de5611a96888e4670744bbb7d90393) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m4 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222ne", 0x000000, 0x80000, CRC(7133489e) SHA1(036ef100c64c6e912c911340b32eea0da0b6f6d9) )
+ ROM_LOAD16_BYTE( "u196ne", 0x000001, 0x80000, CRC(b07a4f90) SHA1(7a4a800bddc43cfa60f9097723b44a05c9d290ae) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m5 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222", 0x000000, 0x80000, CRC(03991fba) SHA1(6c42bf15248640fdb3e98fb01b0a870649deb410) )
+ ROM_LOAD16_BYTE( "u196", 0x000001, 0x80000, CRC(39f15a1e) SHA1(901c4fea76bf5bff7330ed07ffde54cdccdaa680) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m6 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222-6b", 0x000000, 0x80000, CRC(0a3692be) SHA1(7b937b7b0130e460b5f12188b19f464c55b507c9) )
+ ROM_LOAD16_BYTE( "u196-6b", 0x000001, 0x80000, CRC(80454da7) SHA1(64f6dba14d342c9933ce632aa7ca126b34b4ee8b) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m7 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222-2i", 0x000000, 0x40000, CRC(1ca7adbd) SHA1(45e9dc05766ad156edcfc9e59a9804f74f90dc68) )
+ ROM_LOAD16_BYTE( "u196-2i", 0x000001, 0x40000, CRC(f758408c) SHA1(aac44a7287bb3b7ba35d68aff279e265dbd3f6d3) )
+ ROM_LOAD16_BYTE( "u222-2s", 0x080000, 0x40000, CRC(720cea3e) SHA1(ec4f22159d44a8abc40643b986b88a4f947d6aea) )
+ ROM_LOAD16_BYTE( "u196-2s", 0x080001, 0x40000, CRC(9932832c) SHA1(0da0f5ebab91b0759c5fc00902cfe4b12a856466) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2m8 )
+/* unconfirmed if working on real hardware */
+ /* this board has unsupported pals */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "yyc-2.2", 0x000000, 0x80000, CRC(db567b66) SHA1(315bfbf2786ef67a95afb87de836ab348523dbbe) )
+ ROM_LOAD16_BYTE( "yyc-3.4", 0x000001, 0x80000, CRC(95ea597e) SHA1(5eb82feaa1de5611a96888e4670744bbb7d90393) )
+ ROM_LOAD16_BYTE( "yyc-4.1", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
+ ROM_LOAD16_BYTE( "yyc-5.3", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "yyc-a", 0x000000, 0x40000, CRC(8242621f) SHA1(9d566176462bd25f9a377104b0c78a962708bc2b), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROM_CONTINUE( 0x200000, 0x40000)
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "yyc-c", 0x000001, 0x40000, CRC(0793a960) SHA1(f351163dd1090f8cd8d4c77e2a29764fee627b13), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROM_CONTINUE( 0x200001, 0x40000)
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "yyc-b", 0x000002, 0x40000, CRC(b0159973) SHA1(2a236b9d98fa0acddd844aa94bc5118012a6fb2f), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROM_CONTINUE( 0x200002, 0x40000)
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "yyc-d", 0x000003, 0x40000, CRC(92a8b572) SHA1(cbad24e519f0152989764c054da914f55e2b118c), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROM_CONTINUE( 0x200003, 0x40000)
+ ROM_CONTINUE( 0x200007, 0x40000)
+ /* extra gfx layer roms loaded over the former ones to remove the capcom copyright logo */
+ ROMX_LOAD( "yyc-6.1", 0x400000, 0x10000, CRC(94778332) SHA1(c0b9a05c710b89864ee5df1a53b39de30c994e2d), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x10000 )
+ ROMX_LOAD( "yyc-8.9", 0x400002, 0x10000, CRC(f95bc505) SHA1(385beb2f9f8a473d928d729d722372ae49f410e7), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x10000 )
+ ROMX_LOAD( "yyc-7.10", 0x400001, 0x10000, CRC(d1e452d3) SHA1(794f7ebf6c46c2938a5477451cf05f2e0c7b9049), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x10000 )
+ ROMX_LOAD( "yyc-9.8", 0x400003, 0x10000, CRC(155824a9) SHA1(74d7e86be22c11234f5d9d0b25fa709b59ef471b), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x10000 )
+ /* end of extra gfx layer roms */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "a-15.5", 0x00000, 0x08000, CRC(6f07d2cb) SHA1(8ef1338d04c1a0b43e24303085105cfdced0bd5e) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x10000, "user1", 0 ) /* unknown (bootleg priority?) */
+ ROM_LOAD( "c-27.7", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x200000, "user2", 0 )
+ ROM_LOAD( "yyc-e", 0x000000, 0x100000, CRC(61138469) SHA1(dec3b3af6e3f4fedf51600ddf0515f61b2122493) )
+ ROM_LOAD( "yyc-f", 0x100000, 0x100000, CRC(b800dcdb) SHA1(2ec3251b78159b15032d55a5ee5138f159e67190) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "b-16.6", 0x00000, 0x40000, CRC(6cfffb11) SHA1(995526183ffd35f92e9096500a3fe6237faaa2dd) )
+ROM_END
+
+/* SF2M10
+ From HBMAME (SF2H14)
+ Same as sf2ebbl2, except it has program roms unique to sf2h14.
+
+ Using sf2ce gfx roms to get clean gfx (the board was a bodgy
+ half-done conversion attempt).
+
+** PCB DETAILS ***
+Street Fighter II Champion Edition (bootleg)
+
+PCB Layout
+----------
+
+|-----------------------------------------------------|
+|LM324 ROM1 3.579545MHz ROM10 ROM12|
+|LM324 ROM2 16MHz 2018 ROM9 ROM11|
+| M6295 12MHz 2018 SE235 SE005|
+| 2018 |
+|YM2151 2018 2018 ROM8 |
+| ROM3 SE194 SE064|
+|J Z80 SF004 SF001|
+|A 2018 2018 |
+|M 6116 6116 2018 2018 |
+|M |
+|A |--| |
+| |6 | 62256 |
+|DSWA(8)|8 |62256 62256 62256 |
+| |0 |ROM4 ROM6 |
+|DSWB(8)|0 |ROM5 ROM7 |
+| |0 | |
+|DSWC(8)|--| |
+|-----------------------------------------------------|
+Notes:
+ 68000 - Clock 12MHz
+ Z80 - Clock 3.579545MHz
+ M6295 - Clock 1.000MHz [16/16]. Pin 7 HIGH
+ YM2151 - Clock 3.579545MHz
+ 62256 - 32k x8 SRAM
+ 2018 - 2k x8 SRAM
+ 6116 - 2k x8 SRAM
+*/
+
+ROM_START( sf2m10 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf2h14.7", 0x000000, 0x80000, CRC(74803532) SHA1(c1f774bbc4c7b18fcac15417711a86eb852b9957) )
+ ROM_LOAD16_BYTE( "sf2h14.5", 0x000001, 0x80000, CRC(66c91972) SHA1(219aecad1feb60bb758190ea82223171075c858e) )
+ ROM_LOAD16_BYTE( "yyc-4.1", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
+ ROM_LOAD16_BYTE( "yyc-5.3", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ // using the proper roms for this program
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+ // and overwrite some gfx with supplied extra roms
+ ROMX_LOAD( "27c1024.10", 0x400000, 0x20000, CRC(84427d1b) SHA1(f988a2b53c8cc46eeb8032084f24966a539b3734) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "27c1024.12", 0x400002, 0x20000, CRC(55bc790c) SHA1(a1114b89f6fa4487210477676984c77ad94b5ef8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "27c1024.9", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "27c1024.11", 0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "27c512.3", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x20000, "user1", 0 )
+ ROM_LOAD( "27c512.8", 0x00000, 0x10000, CRC(13ea1c44) SHA1(5b05fe4c3920e33d94fac5f59e09ff14b3e427fe) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "27c010.2", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "27c010.1", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2yyc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "b12.rom", 0x000000, 0x80000, CRC(8f742fd5) SHA1(a78a00e686856481011d8b5f5e60ed18197a5225) )
+ ROM_LOAD16_BYTE( "b14.rom", 0x000001, 0x80000, CRC(8831ec7f) SHA1(0293ff189cbacf90098e734fb31fcbf3c3165e6b) )
+ ROM_LOAD16_BYTE( "b11.rom", 0x100000, 0x20000, CRC(94a46525) SHA1(2712b979ce2bfd87e74da3369e0fceaae2a0654c) )
+ ROM_RELOAD( 0x140000, 0x20000 )
+ ROM_LOAD16_BYTE( "b13.rom", 0x100001, 0x20000, CRC(8fb3dd47) SHA1(ebf30ad7ae60eeda446e23bd74f6e2d98dde4158) )
+ ROM_RELOAD( 0x140001, 0x20000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2koryu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "u222.rom", 0x000000, 0x80000, CRC(9236a79a) SHA1(39c47b0b0ca2f5f569ff07ebb91040b95d0cb43b) )
+ ROM_LOAD16_BYTE( "u196.rom", 0x000001, 0x80000, CRC(b23a869d) SHA1(24247d412f20d069919cc8a7fff208af3f7aa1d2) )
+ ROM_LOAD16_BYTE( "u221.rom", 0x100000, 0x20000, CRC(64e6e091) SHA1(32ec05db955e538d4ada26d19ee50926f74b684f) )
+ ROM_LOAD16_BYTE( "u195.rom", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+ROM_START( sf2dongb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "1.8f", 0x000000, 0x80000, CRC(19fffa37) SHA1(db464c64de3aebe929c85ee167961de05d2c16be) )
+ ROM_LOAD16_WORD_SWAP( "1.7f", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) ) // same as sf2ceea
+ ROM_LOAD16_WORD_SWAP( "1.6f", 0x100000, 0x80000, CRC(65c2c719) SHA1(d407cae5f04fc8d05776d478a6eb4363b3c36805) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+
+/* B-Board 89625B-1 */
+ROM_START( cworld2j )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "q5_36.12f", 0x00000, 0x20000, CRC(38a08099) SHA1(961f733baa2bbf8419e4de70f18660098dba7d52) )
+ ROM_LOAD16_BYTE( "q5_42.12h", 0x00001, 0x20000, CRC(4d29b3a4) SHA1(bf40fc22c0161fe131ca69100b2a4d102e86bde6) )
+ ROM_LOAD16_BYTE( "q5_37.13f", 0x40000, 0x20000, CRC(eb547ebc) SHA1(fce470b05ce095badd180c3740677146f52f6080) )
+ ROM_LOAD16_BYTE( "q5_43.13h", 0x40001, 0x20000, CRC(3ef65ea8) SHA1(2348d84b380c0e8ebe270a37d4ff3ce5204abc8c) )
+ ROM_LOAD16_BYTE( "q5_34.10f", 0x80000, 0x20000, CRC(7fcc1317) SHA1(672ca45d3fad5eec4d65bbbbd1d21cbf6be4ec8b) )
+ ROM_LOAD16_BYTE( "q5_40.10h", 0x80001, 0x20000, CRC(7f14b7b4) SHA1(5564eb9f65dad76ebe40d12d5c39fec5e246adf0) )
+ ROM_LOAD16_BYTE( "q5_35.11f", 0xc0000, 0x20000, CRC(abacee26) SHA1(2f513c02f715ffeec12a6d1c292619e214155cbc) )
+// ROM_LOAD16_BYTE( "q5_35.11f", 0xc0000, 0x20000, CRC(59961612) SHA1(ded5144746dd9612f2db1415e96a826e215ad176) ) /* dumped from another board, 1 byte different, pcb verified */
+ ROM_LOAD16_BYTE( "q5_41.11h", 0xc0001, 0x20000, CRC(d3654067) SHA1(0b597483e136ff19b031171941cb8439bcd7f145) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "q5_09.4b", 0x000000, 0x20000, CRC(48496d80) SHA1(bdfaca6375c8275b06b2bc170a25ff6aa62394dc) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_01.4a", 0x000001, 0x20000, CRC(c5453f56) SHA1(113fe6cc6c830352df5992be9fa34c4d70bf32ed) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_13.9b", 0x000002, 0x20000, CRC(c741ac52) SHA1(d8b4aeacfd62586b98a1381da357dcc5ab16c1c6) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_05.9a", 0x000003, 0x20000, CRC(143e068f) SHA1(24cdc49c09a9f0c93e04b37cf7ebba09a929c9b0) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_24.5e", 0x000004, 0x20000, CRC(b419d139) SHA1(46cd97da2413eb5fbd38fa2c20914f3c5f1c6ec8) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_17.5c", 0x000005, 0x20000, CRC(bd3b4d11) SHA1(bb62169bc52562715878a33cc4f8558e05d581d3) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_38.8h", 0x000006, 0x20000, CRC(9c24670c) SHA1(3b98078b7360e21b3905fd973e01b88b02090759) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_32.8f", 0x000007, 0x20000, CRC(3ef9c7c2) SHA1(52a18d7b12f0c14c5cf68a3dd63571e955005f4c) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_10.5b", 0x100000, 0x20000, CRC(119e5e93) SHA1(b5b6c2e3516ebe555a26ecfb5934f3b65371bf36) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_02.5a", 0x100001, 0x20000, CRC(a2cadcbe) SHA1(3d1079f62cce628cbc5b810c0bd51c67c87f4eca) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_14.10b", 0x100002, 0x20000, CRC(a8755f82) SHA1(0a2fbc8b96651f9ab72eb451723e56ca0a859868) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_06.10a", 0x100003, 0x20000, CRC(c92a91fc) SHA1(dfe9682349cf94be414b7e1895b632de41729194) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_25.7e", 0x100004, 0x20000, CRC(979237cb) SHA1(9534b05523317a220b3b957a18fec51f1d4e37b3) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_18.7c", 0x100005, 0x20000, CRC(c57da03c) SHA1(ad7bce859f56d201d229032baf4fb9f65b54765b) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_39.9h", 0x100006, 0x20000, CRC(a5839b25) SHA1(20c4c4f24f21a325a03538306de799df2a89f6cb) , ROM_SKIP(7) )
+ ROMX_LOAD( "q5_33.9f", 0x100007, 0x20000, CRC(04d03930) SHA1(37f2556eeb52f8edfcddd3f3642fa24565d5a7bd) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "q5_23.13b", 0x00000, 0x08000, CRC(e14dc524) SHA1(0020a9002572002458fbfe45e8a959cb90de3f03) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "q5_30.12c", 0x00000, 0x20000, CRC(d10c1b68) SHA1(2423241f3340d8ab1b6bf9514ca8c3bba1273873) )
+ ROM_LOAD( "q5_31.13c", 0x20000, 0x20000, CRC(7d17e496) SHA1(a274b94ec4f042dddc239ecb9ac2e1e2375f5eb2) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "q522b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) /* seen the same pcb with IOB1.12E */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 90629B-3 - all roms have 90629B on the labels, no battery, possibly unofficial / desuicided with reproduction stickers */
+ROM_START( cworld2ja )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP("q5 - 34_90629b.8f", 0x00000, 0x80000, CRC(de54487f) SHA1(75b228a6c702c82d4d9a2a992933b5c3c420f6c2) )
+ ROM_LOAD16_WORD_SWAP("q5 - 33_90629b.6f", 0x80000, 0x80000, CRC(93248458) SHA1(9dcdc6838f52efc9a0a6333fd0d734946db12dbd) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "q5 - 06_90629b.8a", 0x000000, 0x80000, CRC(09d0e7ce) SHA1(ea502b975986222acce82ce8396348af72e1df72) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 08_90629b.10a", 0x000002, 0x80000, CRC(22e4ce9a) SHA1(9e49aec8e1d6d15a68da63e69765b82fd53a9562) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 05_90629b.7a", 0x000004, 0x80000, CRC(f7b3aed6) SHA1(bdfb4d5988307b07ad878ac9129954d14da8769b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 07_90629b.9a", 0x000006, 0x80000, CRC(520c6c88) SHA1(19ba8ca3d75aae71cdf471e6307e86a5df8a2851) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "q5 - 09_90629b.12a", 0x00000, 0x08000, CRC(e14dc524) SHA1(0020a9002572002458fbfe45e8a959cb90de3f03) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "q5 - 18_90629b.11c", 0x00000, 0x20000, CRC(d10c1b68) SHA1(2423241f3340d8ab1b6bf9514ca8c3bba1273873) )
+ ROM_LOAD( "q5 - 19_90629b.12c", 0x20000, 0x20000, CRC(7d17e496) SHA1(a274b94ec4f042dddc239ecb9ac2e1e2375f5eb2) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "q529b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 91634B-2 - all roms have 91634B on the labels */
+ROM_START( cworld2jb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "q5 - 23_91634b.8f", 0x00000, 0x80000, CRC(709f577f) SHA1(3e0615d01f22eb1bf75cbd26dc80ca5a6d08120e) )
+ ROM_LOAD16_WORD_SWAP( "q5 - 22_91634b.7f", 0x80000, 0x80000, CRC(93248458) SHA1(9dcdc6838f52efc9a0a6333fd0d734946db12dbd) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "q5 - 01_91634b.3a", 0x000000, 0x80000, CRC(09d0e7ce) SHA1(ea502b975986222acce82ce8396348af72e1df72) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 02_91634b.4a", 0x000002, 0x80000, CRC(22e4ce9a) SHA1(9e49aec8e1d6d15a68da63e69765b82fd53a9562) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 03_91634b.5a", 0x000004, 0x80000, CRC(f7b3aed6) SHA1(bdfb4d5988307b07ad878ac9129954d14da8769b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "q5 - 04_91634b.6a", 0x000006, 0x80000, CRC(520c6c88) SHA1(19ba8ca3d75aae71cdf471e6307e86a5df8a2851) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "q5 - 09_91634b.12a", 0x00000, 0x08000, CRC(e14dc524) SHA1(0020a9002572002458fbfe45e8a959cb90de3f03) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "q5 - 18_91634b.11c", 0x00000, 0x20000, CRC(d10c1b68) SHA1(2423241f3340d8ab1b6bf9514ca8c3bba1273873) )
+ ROM_LOAD( "q5 - 19_91634b.12c", 0x20000, 0x20000, CRC(7d17e496) SHA1(a274b94ec4f042dddc239ecb9ac2e1e2375f5eb2) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "q563b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 ) // checkme
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( varth )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "vae_30b.11f", 0x00000, 0x20000, CRC(adb8d391) SHA1(5e7160509e0315eb32cc390ddd7e4ef7a4a1a70a) )
+ ROM_LOAD16_BYTE( "vae_35b.11h", 0x00001, 0x20000, CRC(44e5548f) SHA1(17b4be1f4159f6b6803d8c2950823ece0bdde8b2) )
+ ROM_LOAD16_BYTE( "vae_31b.12f", 0x40000, 0x20000, CRC(1749a71c) SHA1(bd9bfd5bbe2d426c94df755c977faa92a28f16ab) )
+ ROM_LOAD16_BYTE( "vae_36b.12h", 0x40001, 0x20000, CRC(5f2e2450) SHA1(676e8d96406d81ceadd4a0a69959cdcb6d5d9ac8) )
+ ROM_LOAD16_BYTE( "vae_28b.9f", 0x80000, 0x20000, CRC(e524ca50) SHA1(487d5ddabe852872f331362034c4fa16e0926e3d) )
+ ROM_LOAD16_BYTE( "vae_33b.9h", 0x80001, 0x20000, CRC(c0bbf8c9) SHA1(447540b856776770af8022a291d46612c1bb5909) )
+ ROM_LOAD16_BYTE( "vae_29b.10f", 0xc0000, 0x20000, CRC(6640996a) SHA1(3ed7bd947dc8224435680dedf4955ed6041c6028) )
+ ROM_LOAD16_BYTE( "vae_34b.10h", 0xc0001, 0x20000, CRC(fa59be8a) SHA1(86a3d3a7126c021e2ca8ac20238695396367e098) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "va-5m.7a", 0x000000, 0x80000, CRC(b1fb726e) SHA1(5ac0876b6c49d0a99710dda68653664f4d8c1167) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-7m.9a", 0x000002, 0x80000, CRC(4c6588cd) SHA1(d14e8cf051ac934ccc989d8c571c6cc9eed34af5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-1m.3a", 0x000004, 0x80000, CRC(0b1ace37) SHA1(6f9493c22f667f683db2789972fd16bb94724679) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-3m.5a", 0x000006, 0x80000, CRC(44dfe706) SHA1(a013a434df3161a91aafbb35dc4e20dfb3f177f4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "va_09.12b", 0x00000, 0x08000, CRC(7a99446e) SHA1(ca027f41e3e58be5abc33ad7380746658cb5380a) ) // missing sticker, could be va_9.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "va_18.11c", 0x00000, 0x20000, CRC(de30510e) SHA1(8e878696192606b76a3a0e53553e638d9621cff7) )
+ ROM_LOAD( "va_19.12c", 0x20000, 0x20000, CRC(0610a4ac) SHA1(3da02ea6a7a56c85de898806d2a1cf6bc526c1b3) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "va24b.1a", 0x0000, 0x0117, CRC(cc476650) SHA1(a417f7971b8709023932fc2b68c9e3cd699ab6f2) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-? */
+ROM_START( varthr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "vae_30a.11f", 0x00000, 0x20000, CRC(7fcd0091) SHA1(7bed452736eda4a26c43c5dd54ec6799afa6e770) )
+ ROM_LOAD16_BYTE( "vae_35a.11h", 0x00001, 0x20000, CRC(35cf9509) SHA1(a189ca7740d77262413ec2891af034d0057892be) )
+ ROM_LOAD16_BYTE( "vae_31a.12f", 0x40000, 0x20000, CRC(15e5ee81) SHA1(6c6248b07f7e956a37d5dcb4b67d026f57fae13b) )
+ ROM_LOAD16_BYTE( "vae_36a.12h", 0x40001, 0x20000, CRC(153a201e) SHA1(5936e447d5cd02ff13802cf78393b521431ad06c) )
+ ROM_LOAD16_BYTE( "vae_28a.9f", 0x80000, 0x20000, CRC(7a0e0d25) SHA1(203692ef1daeef7ba08b154cf029cc07a2e0e23d) )
+ ROM_LOAD16_BYTE( "vae_33a.9h", 0x80001, 0x20000, CRC(f2365922) SHA1(efb2221033e4b46fedaf3d8c850e208f849e6af0) )
+ ROM_LOAD16_BYTE( "vae_29a.10f", 0xc0000, 0x20000, CRC(5e2cd2c3) SHA1(eff955c7dc0d8ae215e7188cc4865726104c7777) )
+ ROM_LOAD16_BYTE( "vae_34a.10h", 0xc0001, 0x20000, CRC(3d9bdf83) SHA1(d655803a6f07b90e44aacaa3e6059ac330ef2ec6) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "va-5m.7a", 0x000000, 0x80000, CRC(b1fb726e) SHA1(5ac0876b6c49d0a99710dda68653664f4d8c1167) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-7m.9a", 0x000002, 0x80000, CRC(4c6588cd) SHA1(d14e8cf051ac934ccc989d8c571c6cc9eed34af5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-1m.3a", 0x000004, 0x80000, CRC(0b1ace37) SHA1(6f9493c22f667f683db2789972fd16bb94724679) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "va-3m.5a", 0x000006, 0x80000, CRC(44dfe706) SHA1(a013a434df3161a91aafbb35dc4e20dfb3f177f4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "va_09.12b", 0x00000, 0x08000, CRC(7a99446e) SHA1(ca027f41e3e58be5abc33ad7380746658cb5380a) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "va_18.11c", 0x00000, 0x20000, CRC(de30510e) SHA1(8e878696192606b76a3a0e53553e638d9621cff7) )
+ ROM_LOAD( "va_19.12c", 0x20000, 0x20000, CRC(0610a4ac) SHA1(3da02ea6a7a56c85de898806d2a1cf6bc526c1b3) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "va24b.1a", 0x0000, 0x0117, CRC(cc476650) SHA1(a417f7971b8709023932fc2b68c9e3cd699ab6f2) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( varthu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "vau_23a.8f", 0x00000, 0x80000, CRC(fbe68726) SHA1(68917d366551d2203400adc3261355dd3b332bcb) )
+ ROM_LOAD16_WORD_SWAP( "vau_22a.7f", 0x80000, 0x80000, CRC(0ed71bbd) SHA1(e7f0f0edf0936a774e122842b09f5c5ce25a96ad) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "va-5m.3a", 0x000000, 0x80000, CRC(b1fb726e) SHA1(5ac0876b6c49d0a99710dda68653664f4d8c1167) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket // == va-5m.7a
+ ROMX_LOAD( "va-7m.5a", 0x000002, 0x80000, CRC(4c6588cd) SHA1(d14e8cf051ac934ccc989d8c571c6cc9eed34af5) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket // == va-7m.9a
+ ROMX_LOAD( "va-1m.4a", 0x000004, 0x80000, CRC(0b1ace37) SHA1(6f9493c22f667f683db2789972fd16bb94724679) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket // == va-1m.3a
+ ROMX_LOAD( "va-3m.6a", 0x000006, 0x80000, CRC(44dfe706) SHA1(a013a434df3161a91aafbb35dc4e20dfb3f177f4) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket // == va-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "va_09.11a", 0x00000, 0x08000, CRC(7a99446e) SHA1(ca027f41e3e58be5abc33ad7380746658cb5380a) ) // == va_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "va_18.11c", 0x00000, 0x20000, CRC(de30510e) SHA1(8e878696192606b76a3a0e53553e638d9621cff7) )
+ ROM_LOAD( "va_19.12c", 0x20000, 0x20000, CRC(0610a4ac) SHA1(3da02ea6a7a56c85de898806d2a1cf6bc526c1b3) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "va63b.1a", 0x0000, 0x0117, CRC(132ab7c5) SHA1(54b78b02cdd9430c90e2289d42585ee71cf71cdc) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+ROM_END
+
+/* B-Board 88622B-3 */
+ROM_START( varthj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "vaj_36b.12f", 0x00000, 0x20000, CRC(1d798d6a) SHA1(b12579e9dcb88416bc00653b143832d9347adbaf) )
+ ROM_LOAD16_BYTE( "vaj_42b.12h", 0x00001, 0x20000, CRC(0f720233) SHA1(2d9442ceafd5e2208aa8cd4bcb66861bff6aec47) )
+ ROM_LOAD16_BYTE( "vaj_37b.13f", 0x40000, 0x20000, CRC(24414b17) SHA1(6c0b24cf8045fc033217c737dba2c046d7d0a09a) )
+ ROM_LOAD16_BYTE( "vaj_43b.13h", 0x40001, 0x20000, CRC(34b4b06c) SHA1(3033d1d053ba97d6da17064d7b944a10817b93b1) )
+ ROM_LOAD16_BYTE( "vaj_34b.10f", 0x80000, 0x20000, CRC(87c79aed) SHA1(bb90720d1d04ed6ad276a5230cb078229aa8a40a) )
+ ROM_LOAD16_BYTE( "vaj_40b.10h", 0x80001, 0x20000, CRC(210b4bd0) SHA1(15771c32af9fb4760953ef5475de228200851b42) )
+ ROM_LOAD16_BYTE( "vaj_35b.11f", 0xc0000, 0x20000, CRC(6b0da69f) SHA1(5883bea31a22a44ad7494d6acd523c88b62f8743) )
+ ROM_LOAD16_BYTE( "vaj_41b.11h", 0xc0001, 0x20000, CRC(6542c8a4) SHA1(5f828cf28ef905e4701c92f317e1257a40964a65) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "va_09.4b", 0x000000, 0x20000, CRC(183dfaa8) SHA1(230c65c1b11b3a5d1733455e0130dad2740e2d2d) , ROM_SKIP(7) ) // == va-5m.7a
+ ROMX_LOAD( "va_01.4a", 0x000001, 0x20000, CRC(c41312b5) SHA1(4077cb8200fc403953a08d94652fa8f572dc202d) , ROM_SKIP(7) ) // == va-5m.7a
+ ROMX_LOAD( "va_13.9b", 0x000002, 0x20000, CRC(45537e69) SHA1(18581cbf09b1ec35ea388dce73db7099a1790f60) , ROM_SKIP(7) ) // == va-7m.9a
+ ROMX_LOAD( "va_05.9a", 0x000003, 0x20000, CRC(7065d4e9) SHA1(0e16b4ba2309cca609eaa906c99c61172ca273d0) , ROM_SKIP(7) ) // == va-7m.9a
+ ROMX_LOAD( "va_24.5e", 0x000004, 0x20000, CRC(57191ccf) SHA1(8247b6ca36dd114ea2d030141ce48ea881ea648c) , ROM_SKIP(7) ) // == va-1m.3a
+ ROMX_LOAD( "va_17.5c", 0x000005, 0x20000, CRC(054f5a5b) SHA1(28fc6ff2144daad18b5aed8c08d0b65e6fc2b06f) , ROM_SKIP(7) ) // == va-1m.3a
+ ROMX_LOAD( "va_38.8h", 0x000006, 0x20000, CRC(e117a17e) SHA1(576ec580050e9ce3e3be96b849247288411ff68c) , ROM_SKIP(7) ) // == va-3m.5a
+ ROMX_LOAD( "va_32.8f", 0x000007, 0x20000, CRC(3b4f40b2) SHA1(7033d0f754381fe8d5ed29b58ebbd665a0ba1725) , ROM_SKIP(7) ) // == va-3m.5a
+ ROMX_LOAD( "va_10.5b", 0x100000, 0x20000, CRC(d62750cd) SHA1(0b792f806ed5ab7f6ec0c53bb9bf9965d7ddc47e) , ROM_SKIP(7) ) // == va-5m.7a
+ ROMX_LOAD( "va_02.5a", 0x100001, 0x20000, CRC(11590325) SHA1(9d776f4008db76f8f141db5024a3eed78e364b6a) , ROM_SKIP(7) ) // == va-5m.7a
+ ROMX_LOAD( "va_14.10b", 0x100002, 0x20000, CRC(dc2f4783) SHA1(f9c274d1ab24159980f29db7da5bcc179761237f) , ROM_SKIP(7) ) // == va-7m.9a
+ ROMX_LOAD( "va_06.10a", 0x100003, 0x20000, CRC(06e833ac) SHA1(e8df6e2ef8300b5e412dd74cfe329b5535056e62) , ROM_SKIP(7) ) // == va-7m.9a
+ ROMX_LOAD( "va_25.7e", 0x100004, 0x20000, CRC(51d90690) SHA1(9079d56007aae257f56ce47bbb24873dc18c5bd6) , ROM_SKIP(7) ) // == va-1m.3a
+ ROMX_LOAD( "va_18.7c", 0x100005, 0x20000, CRC(a17817c0) SHA1(23d9ae2ae68e4c8be72da7013109ecdfc30d4b53) , ROM_SKIP(7) ) // == va-1m.3a
+ ROMX_LOAD( "va_39.9h", 0x100006, 0x20000, CRC(b0b12f51) SHA1(68a33736dcb0703e46ba48918a29ecd559575a97) , ROM_SKIP(7) ) // == va-3m.5a
+ ROMX_LOAD( "va_33.9f", 0x100007, 0x20000, CRC(4b003af7) SHA1(0c1d18a3ee7f3a48219f73eb21f88a260a9a001e) , ROM_SKIP(7) ) // == va-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "va_23.13c", 0x00000, 0x08000, CRC(7a99446e) SHA1(ca027f41e3e58be5abc33ad7380746658cb5380a) ) // == va_09.12b
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "va_30.12e", 0x00000, 0x20000, CRC(de30510e) SHA1(8e878696192606b76a3a0e53553e638d9621cff7) ) // == va_18.11c
+ ROM_LOAD( "va_31.13e", 0x20000, 0x20000, CRC(0610a4ac) SHA1(3da02ea6a7a56c85de898806d2a1cf6bc526c1b3) ) // == va_19.12c
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "va22b.1a", 0x0000, 0x0117, CRC(bd7cd574) SHA1(00e49631aceb2871e9313f40264fa55eaaa3538c) )
+ ROM_LOAD( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( varthjr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "vaj_23b.8f", 0x00000, 0x80000, CRC(ad3d3522) SHA1(db627233f9d8a03c2d4bb31614951a0cdc81600d) )
+ ROM_LOAD16_WORD_SWAP( "vaj_22b.7f", 0x80000, 0x80000, CRC(034e3e55) SHA1(eeb85a827cf18dafbdf0a2828aa39128352857f3) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "va_01.3a", 0x000000, 0x80000, CRC(b1fb726e) SHA1(5ac0876b6c49d0a99710dda68653664f4d8c1167) , ROM_GROUPWORD | ROM_SKIP(6) ) // == va-5m.7a
+ ROMX_LOAD( "va_02.4a", 0x000002, 0x80000, CRC(4c6588cd) SHA1(d14e8cf051ac934ccc989d8c571c6cc9eed34af5) , ROM_GROUPWORD | ROM_SKIP(6) ) // == va-7m.9a
+ ROMX_LOAD( "va_03.5a", 0x000004, 0x80000, CRC(0b1ace37) SHA1(6f9493c22f667f683db2789972fd16bb94724679) , ROM_GROUPWORD | ROM_SKIP(6) ) // == va-1m.3a
+ ROMX_LOAD( "va_04.6a", 0x000006, 0x80000, CRC(44dfe706) SHA1(a013a434df3161a91aafbb35dc4e20dfb3f177f4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == va-3m.5a
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "va_09.12a", 0x00000, 0x08000, CRC(7a99446e) SHA1(ca027f41e3e58be5abc33ad7380746658cb5380a) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "va_18.11c", 0x00000, 0x20000, CRC(de30510e) SHA1(8e878696192606b76a3a0e53553e638d9621cff7) )
+ ROM_LOAD( "va_19.12c", 0x20000, 0x20000, CRC(0610a4ac) SHA1(3da02ea6a7a56c85de898806d2a1cf6bc526c1b3) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "va63b.1a", 0x0000, 0x0117, CRC(132ab7c5) SHA1(54b78b02cdd9430c90e2289d42585ee71cf71cdc) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( qad )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "qdu_36a.12f", 0x00000, 0x20000, CRC(de9c24a0) SHA1(458962943e8d97d1f4e5a15ac1c8d3bcaa32918b) )
+ ROM_LOAD16_BYTE( "qdu_42a.12h", 0x00001, 0x20000, CRC(cfe36f0c) SHA1(370a47461b2dbb7807f547f5b4b33296572c5d78) )
+ ROM_LOAD16_BYTE( "qdu_37a.13f", 0x40000, 0x20000, CRC(10d22320) SHA1(73b2876d5447f50a850c466789d9297269f732d6) )
+ ROM_LOAD16_BYTE( "qdu_43a.13h", 0x40001, 0x20000, CRC(15e6beb9) SHA1(68d11e9bdd82775060281c5880f249e3515dc235) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "qd_09.4b", 0x000000, 0x20000, CRC(8c3f9f44) SHA1(b5ab20515b7f3e7db023be42d4c7ed1941b37d9b) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_01.4a", 0x000001, 0x20000, CRC(f688cf8f) SHA1(1b20095e536a24406513715cded249c9be1aa1d2) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_13.9b", 0x000002, 0x20000, CRC(afbd551b) SHA1(02e2f12196c542a004325689bda8949213ef0333) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_05.9a", 0x000003, 0x20000, CRC(c3db0910) SHA1(cf3aa3d3b64031dea92a80e5650151315cf871bf) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_24.5e", 0x000004, 0x20000, CRC(2f1bd0ec) SHA1(017e0dc521bf402c700775ee06cbc124f7ce0e3f) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_17.5c", 0x000005, 0x20000, CRC(a812f9e2) SHA1(9b7ceb347fbe00c40338b97ee6e8e4d1db9e7cb3) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_38.8h", 0x000006, 0x20000, CRC(ccdddd1f) SHA1(8304c4cdfaa1ae6b37e2733e9a6ddce9252fd43a) , ROM_SKIP(7) )
+ ROMX_LOAD( "qd_32.8f", 0x000007, 0x20000, CRC(a8d295d3) SHA1(d4d0bdaeb40f652ef33b317cb2b566b4c3550242) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "qd_23.13b", 0x00000, 0x08000, CRC(cfb5264b) SHA1(e662ed5555d02ccf4e62cdbcfa0bbfc019734ee1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "qdu_30.12c", 0x00000, 0x20000, CRC(f190da84) SHA1(d5cd4c69b5d135a2f2fea8ca9631251c9da79e70) )
+ ROM_LOAD( "qdu_31.13c", 0x20000, 0x20000, CRC(b7583f73) SHA1(3896e0fcf375e9e5d9ba70cc1ed001cd702f9ff7) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "qd22b.1a", 0x0000, 0x0117, CRC(783c53ab) SHA1(1bf87e5fe7e7cbcec0d76ed094dcac823e45af14) )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) /* seen the same pcb with LWIO.12E */
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ROM_END
+
+/* B-Board 91634B-2, Japan Resale Ver. */
+ROM_START( qadjr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "qad_23a.8f", 0x00000, 0x80000, CRC(4d3553de) SHA1(07eabcb02fbbe11397ce91405a2e6bb53b3d5d4f) )
+ ROM_LOAD16_WORD_SWAP( "qad_22a.7f", 0x80000, 0x80000, CRC(3191ddd0) SHA1(2806021a5dc809ca43692bbe9c4f5ef690c9ac14) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "qad_01.3a", 0x000000, 0x80000, CRC(9d853b57) SHA1(380b41a3eced1f4a5523999b63d80b7593a85eca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "qad_02.4a", 0x000002, 0x80000, CRC(b35976c4) SHA1(3e128db89186c4e88c46be9da310b755ae5b816c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "qad_03.5a", 0x000004, 0x80000, CRC(cea4ca8c) SHA1(5c50758647419129f2b35ab4dc712796fa801c12) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "qad_04.6a", 0x000006, 0x80000, CRC(41b74d1b) SHA1(78aa2faec512c505f98b4e8053fc161941d41773) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "qad_09.12a", 0x00000, 0x08000, CRC(733161cc) SHA1(dfb8c5a1037bd3b2712fb327122ec39ceb993b8d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "qad_18.11c", 0x00000, 0x20000, CRC(2bfe6f6a) SHA1(b2a98ac034c65b7ac8167431f05f35d4799032ea) )
+ ROM_LOAD( "qad_19.12c", 0x20000, 0x20000, CRC(13d3236b) SHA1(785d49de484e9ac6971eaceebebfecb8e58563f6) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "qad63b.1a", 0x0000, 0x0117, CRC(b3312b13) SHA1(24bd6235fe273a672de2d4749e57280994f11819) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( wof )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2e_23c.8f", 0x000000, 0x80000, CRC(0d708505) SHA1(10b8cb53a4600e3e76f471a3eee8a600e93096fc) )
+ ROM_LOAD16_WORD_SWAP( "tk2e_22c.7f", 0x080000, 0x80000, CRC(608c17e3) SHA1(52c2d05279623d93b27856e6b76830796a089eae) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+/* FIXME Probably this set uses a patched program ROM coming from a desuicided board, or simply the original C-Board
+ is not a 92641C-1. A verification and a new fresh dump are needed to confirm if it's genuine or not. */
+ROM_START( wofr1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2e_23b.8f", 0x000000, 0x80000, CRC(11fb2ed1) SHA1(19e09ad6f9edc7997b030cddfe1d9c96d88135f2) ) // patched?
+ ROM_LOAD16_WORD_SWAP( "tk2e_22b.7f", 0x080000, 0x80000, CRC(479b3f24) SHA1(9fb8ae06856fe115addfb6794c28978a4f6716ec) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( wofu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2u_23c.8f", 0x000000, 0x80000, CRC(29b89c12) SHA1(2b474b4f45a4ccb0db2a4d5e7ef30e28b5c6cc3a) )
+ ROM_LOAD16_WORD_SWAP( "tk2u_22c.7f", 0x080000, 0x80000, CRC(f5af4774) SHA1(f6d53cf5b330e6d68f84da3e8c831a475585b93e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+/* Note that this Asia set seems to be the only one where GFX are stored into MASK ROMs instead of the usual EPROMs. */
+/* FIXME Probably this set uses a patched program ROM coming from a desuicided board, or simply the original C-Board
+ is not a 92641C-1. A verification and a new fresh dump are needed to confirm if it's genuine or not. */
+ROM_START( wofa )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2a_23c.8f", 0x000000, 0x80000, CRC(2e024628) SHA1(647f8700fe3b410d798a823bac2e4a89cc9ad8d5) ) // patched?
+ ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( wofj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2j_23c.8f", 0x000000, 0x80000, CRC(9b215a68) SHA1(fc83ed26441fbfb15e21b093c7a6bed44b586e51) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2_01.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-1m.3a
+ ROMX_LOAD( "tk2_02.4a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-3m.5a
+ ROMX_LOAD( "tk2_03.5a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-2m.4a
+ ROMX_LOAD( "tk2_04.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-4m.6a
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* Chinese bootleg board without QSound */
+ROM_START( wofhfh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "23", 0x000000, 0x80000, CRC(6ae4b312) SHA1(fa39f69385d180d90bccd8c5dc9262edd04a6457) )
+ ROM_LOAD16_WORD_SWAP( "22", 0x080000, 0x80000, CRC(94e8d01a) SHA1(875763f6b22734c1a5a890e6c8063515c134045b) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "1", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "2", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "4", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "5", 0x200000, 0x80000, CRC(34949d7b) SHA1(90925a77b08c97cfdbf0dbfbdaa359d1b33b6ae4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "6", 0x200002, 0x80000, CRC(dfa70971) SHA1(477b99687de38220f0aec9fbba44db03f72cb62a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "7", 0x200004, 0x80000, CRC(073686a6) SHA1(b774a8d4c6cdbedb123ac01455f718305f23b619) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "8", 0x200006, 0x80000, CRC(5300f8db) SHA1(b23a19910f680d60ff8afcbc15c471e74ee3569a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 128k for the audio CPU (+banks) */
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* samples */
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2hf )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s2te_23.8f", 0x000000, 0x80000, CRC(2dd72514) SHA1(4411353c389669299c27ac183c7e1caa3d4cec90) )
+ ROM_LOAD16_WORD_SWAP( "s2te_22.7f", 0x080000, 0x80000, CRC(aea6e035) SHA1(ce5fe961b2c1c95d231d1235bfc03b47de489f2a) )
+ ROM_LOAD16_WORD_SWAP( "s2te_21.6f", 0x100000, 0x80000, CRC(fd200288) SHA1(3817b67ab77c7b3d4a573a63f18671bea6905e26) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( sf2hfu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s2tu_23.8f", 0x000000, 0x80000, CRC(89a1fc38) SHA1(aafb40fc311e318250973be8c6aa0d3f7902cb3c) )
+ ROM_LOAD16_WORD_SWAP( "s2tu_22.7f", 0x080000, 0x80000, CRC(aea6e035) SHA1(ce5fe961b2c1c95d231d1235bfc03b47de489f2a) ) // == s2te_22.7f
+ ROM_LOAD16_WORD_SWAP( "s2tu_21.6f", 0x100000, 0x80000, CRC(fd200288) SHA1(3817b67ab77c7b3d4a573a63f18671bea6905e26) ) // == s2te_21.6f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( sf2hfj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "s2tj_23.8f", 0x000000, 0x80000, CRC(ea73b4dc) SHA1(efbc73277d00bac86505755db35225e14ea25a36) )
+ ROM_LOAD16_WORD_SWAP( "s2tj_22.7f", 0x080000, 0x80000, CRC(aea6e035) SHA1(ce5fe961b2c1c95d231d1235bfc03b47de489f2a) ) // == s2te_22.7f
+ ROM_LOAD16_WORD_SWAP( "s2tj_21.6f", 0x100000, 0x80000, CRC(fd200288) SHA1(3817b67ab77c7b3d4a573a63f18671bea6905e26) ) // == s2te_21.6f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-1m.3a
+ ROMX_LOAD( "s92_02.4a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-3m.5a
+ ROMX_LOAD( "s92_03.5a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-2m.4a
+ ROMX_LOAD( "s92_04.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-4m.6a
+ ROMX_LOAD( "s92_05.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-5m.7a
+ ROMX_LOAD( "s92_06.8a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-7m.9a
+ ROMX_LOAD( "s92_07.9a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-6m.8a
+ ROMX_LOAD( "s92_08.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) // == s92-8m.10a
+ ROMX_LOAD( "s2t_10.3c", 0x400000, 0x80000, CRC(3c042686) SHA1(307e1ca8ad0b11f3265b7e5467ba4c90f90ec97f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_11.4c", 0x400002, 0x80000, CRC(8b7e7183) SHA1(c8eaedfbddbf0b83311d2dbb9e19a1efef0dffa9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_12.5c", 0x400004, 0x80000, CRC(293c888c) SHA1(5992ea9aa90fdd8b9dacca9d2a1fdaf25ac2cb65) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_13.6c", 0x400006, 0x80000, CRC(842b35a4) SHA1(35864a140a0c8d76501e69b2e01bc4ad76f27909) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.12a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) // == s92_09.11a
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( dino )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "cde_23a.8f", 0x000000, 0x80000, CRC(8f4e585e) SHA1(55ecba3652066cdafad140c4524b1fc81228e69b) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cd63b.1a", 0x0000, 0x0117, CRC(ef72e902) SHA1(82fea3f63869c245d0dce2809085208fe719b57a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( dinou )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "cdu_23a.8f", 0x000000, 0x80000, CRC(7c2543cd) SHA1(6b7a90392fe4c31b2d57620b0ddcb3412401efc3) )
+ ROM_LOAD16_WORD_SWAP( "cdu_22a.7f", 0x080000, 0x80000, CRC(d19f981e) SHA1(acb951caba3867c21149286185b94beb37721bd2) )
+ ROM_LOAD16_WORD_SWAP( "cdu_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) // == cde_21a.6f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cd63b.1a", 0x0000, 0x0117, CRC(ef72e902) SHA1(82fea3f63869c245d0dce2809085208fe719b57a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( dinoj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "cdj_23a.8f", 0x000000, 0x80000, CRC(5f3ece96) SHA1(33ffb08ff8c5d3bfb2fa17fa00f254da2fc61f44) )
+ ROM_LOAD16_WORD_SWAP( "cdj_22a.7f", 0x080000, 0x80000, CRC(a0d8de29) SHA1(79d916f181804b6176581efe2a1b7f210ec79c07) )
+ ROM_LOAD16_WORD_SWAP( "cdj_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) // == cde_21a.6f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd_01.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-1m.3a
+ ROMX_LOAD( "cd_02.4a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-3m.5a
+ ROMX_LOAD( "cd_03.5a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-2m.4a
+ ROMX_LOAD( "cd_04.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-4m.6a
+ ROMX_LOAD( "cd_05.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-5m.7a
+ ROMX_LOAD( "cd_06.8a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-7m.9a
+ ROMX_LOAD( "cd_07.9a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-6m.8a
+ ROMX_LOAD( "cd_08.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-8m.10a
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cd63b.1a", 0x0000, 0x0117, CRC(ef72e902) SHA1(82fea3f63869c245d0dce2809085208fe719b57a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* Chinese bootleg board */
+ROM_START( dinohunt )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x80000, CRC(8d5ddc5d) SHA1(3ed1da71d73425308d0c3ac1a01a7242e60b6677) )
+ ROM_LOAD16_WORD_SWAP( "u22", 0x080000, 0x80000, CRC(f72cd219) SHA1(a3f580bd328b54d2546ae7e94262c1a706d27172) )
+ ROM_LOAD16_WORD_SWAP( "u21", 0x100000, 0x80000, CRC(bc275b76) SHA1(1f7f7533b4ccb511dc479f531d9d6740d3ca6712) )
+ ROM_LOAD16_WORD_SWAP( "u20", 0x180000, 0x80000, CRC(8987c975) SHA1(3fd856805d627f855f72acc7aacc2e8ecf0f12bd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "u1", 0x000000, 0x80000, CRC(a01a9fb5) SHA1(d1ab4c7ead04932c60923363a0a661d0d1472aaa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u2", 0x000002, 0x80000, CRC(bdf02c17) SHA1(046ba4c589a22a7ac65c86baaae18eff0bff6ecb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u3", 0x000004, 0x80000, CRC(058beefa) SHA1(0d09ab5a200643b5a16e0313228f7ea243752bd0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u4", 0x000006, 0x80000, CRC(5028a9f1) SHA1(ff3a988153860e76beb79918ad896e702c3ecd3d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u5", 0x200000, 0x80000, CRC(d77f89ea) SHA1(1dd8c2a18742fd8483ecade31aed384c686ed244) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u6", 0x200002, 0x80000, CRC(bfbcb034) SHA1(c1eb4d420b10ffa05197d9a82c7adac4d265c546) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u7", 0x200004, 0x80000, CRC(a2544d4e) SHA1(def704055e041bc7c3b8cf7977249b69aa7924a8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "u8", 0x200006, 0x80000, CRC(8869bbb1) SHA1(e53f77baffb913bf3ef5396d84fbfbaec6a90ca2) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "u9", 0x00000, 0x08000, CRC(2eb16a83) SHA1(067ea0bfc2c1e73520d6b836c72fbb9da9998311) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* samples */
+ ROM_LOAD( "u18", 0x00000, 0x20000, CRC(8d2899ba) SHA1(0b3ac6cf2ce0323e3bfc9da3ebfcb0fd14bc405b) )
+ ROM_LOAD( "u19", 0x20000, 0x20000, CRC(b34a4b42) SHA1(3eeb9e33bb911359e03d44949ac58439a3d3d54b) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( punisher )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "pse_26.11e", 0x000000, 0x20000, CRC(389a99d2) SHA1(e97f4225554e4603cb0e3edd296a90bb2e467ca7) )
+ ROM_LOAD16_BYTE( "pse_30.11f", 0x000001, 0x20000, CRC(68fb06ac) SHA1(189e25ca7e4aaa80492c03ce06696952cc1b1553) )
+ ROM_LOAD16_BYTE( "pse_27.12e", 0x040000, 0x20000, CRC(3eb181c3) SHA1(a2442449f4bbe3be03d2be7d4e2cbb69f9741dac) )
+ ROM_LOAD16_BYTE( "pse_31.12f", 0x040001, 0x20000, CRC(37108e7b) SHA1(78aaa6e2913e6b1b852b39416557ac4a394d7d8b) )
+ ROM_LOAD16_BYTE( "pse_24.9e", 0x080000, 0x20000, CRC(0f434414) SHA1(aaacf835a93551fc792571d6e824a01f3c5d4469) )
+ ROM_LOAD16_BYTE( "pse_28.9f", 0x080001, 0x20000, CRC(b732345d) SHA1(472d84f846e9f73f129562d78352376194e0211e) )
+ ROM_LOAD16_BYTE( "pse_25.10e", 0x0c0000, 0x20000, CRC(b77102e2) SHA1(2e39b2c2c0eed5ca2320a57e69bcf377f809a20c) )
+ ROM_LOAD16_BYTE( "pse_29.10f", 0x0c0001, 0x20000, CRC(ec037bce) SHA1(f86e7feb63d7662a38048e6d51d7b5a69dafaffb) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ps63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( punisheru )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE ( "psu_26.11e", 0x000000, 0x20000, CRC(9236d121) SHA1(52d5d00009f61089157319943cde8f1a1ed48ad4) )
+ ROM_LOAD16_BYTE ( "psu_30.11f", 0x000001, 0x20000, CRC(8320e501) SHA1(bb3b74135df9dd494a277a1bc3bef2917351203f) )
+ ROM_LOAD16_BYTE ( "psu_27.12e", 0x040000, 0x20000, CRC(61c960a1) SHA1(f8fe651283cc1f138d013cab65b833505de6df9f) )
+ ROM_LOAD16_BYTE ( "psu_31.12f", 0x040001, 0x20000, CRC(78d4c298) SHA1(6e7fbaed9ad9230a6e5035c6eda64b2f1f83048c) )
+ ROM_LOAD16_BYTE ( "psu_24.9e", 0x080000, 0x20000, CRC(1cfecad7) SHA1(f4dcf5066dc59507cece0c53ccc208e4323ae26f) )
+ ROM_LOAD16_BYTE ( "psu_28.9f", 0x080001, 0x20000, CRC(bdf921c1) SHA1(89a6709756c7c32e7c888806f983ce5af61cfcef) )
+ ROM_LOAD16_BYTE ( "psu_25.10e", 0x0c0000, 0x20000, CRC(c51acc94) SHA1(34ffd6392914e3e67d7d0804215bd1193846b554) )
+ ROM_LOAD16_BYTE ( "psu_29.10f", 0x0c0001, 0x20000, CRC(52dce1ca) SHA1(45277abe34feacdcaedaec56f513b7437d4260e9) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ps63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( punisherh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "psh_26.11e", 0x000000, 0x20000, CRC(6ad2bb83) SHA1(c1c5e8922af948955f53eb56d1b9902dd8944a71) )
+ ROM_LOAD16_BYTE( "psh_30.11f", 0x000001, 0x20000, CRC(058d3659) SHA1(b3fad151f80e0cc21afff3ec00b7871f21d40437) )
+ ROM_LOAD16_BYTE( "psh_27.12e", 0x040000, 0x20000, CRC(579f4fd3) SHA1(5459da68e844db6e6249186aa31fe71aa72d9ff4) )
+ ROM_LOAD16_BYTE( "psh_31.12f", 0x040001, 0x20000, CRC(2c9f70b5) SHA1(c5d89f37def4b9340a0325e616306f0e9e68ab13) )
+ ROM_LOAD16_BYTE( "psh_24.9e", 0x080000, 0x20000, CRC(faa14841) SHA1(d998f1cdfba3305eb1398909d4b07e7492dbdec0) )
+ ROM_LOAD16_BYTE( "psh_28.9f", 0x080001, 0x20000, CRC(5c5b1f20) SHA1(47ee27dc9849a69c54a5a0e269b20e61f17f34c0) )
+ ROM_LOAD16_BYTE( "psh_25.10e", 0x0c0000, 0x20000, CRC(724fdfda) SHA1(23d75e7864dfa0da8c2231785878fb05a5aac628) )
+ ROM_LOAD16_BYTE( "psh_29.10f", 0x0c0001, 0x20000, CRC(779cf901) SHA1(6761edcf26084e44783f3eecd5822e50f1a099bd) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ps63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( punisherj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "psj_23.8f", 0x000000, 0x80000, CRC(6b2fda52) SHA1(5f95a79b7b802609ae9ddd6641cc52610d428bf4) )
+ ROM_LOAD16_WORD_SWAP( "psj_22.7f", 0x080000, 0x80000, CRC(e01036bc) SHA1(a01886014dabe8f9ab45619865c6bd9f27472eae) )
+ ROM_LOAD16_WORD_SWAP( "psj_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) ) // == ps_21.6f
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-1m.3a
+ ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-3m.5a
+ ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-2m.4a
+ ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-4m.6a
+ ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-5m.7a
+ ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-7m.9a
+ ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-6m.8a
+ ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-8m.10a
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "ps63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* Chinese bootleg board */
+ROM_START( punisherbz )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "23.096", 0x000000, 0x80000, CRC(bfa45d23) SHA1(56d04d02c9b9b22603205b1ce9e376874d2eaa05) )
+ ROM_LOAD16_WORD_SWAP( "22.096", 0x080000, 0x80000, CRC(092578a4) SHA1(c3c8f98f8b8fc9c71b33fb906b4c591067b4355b) )
+ ROM_LOAD16_WORD_SWAP( "21.096", 0x100000, 0x80000, CRC(d21ccddb) SHA1(295c886cd14ee54e12acfe3f1e8f13513442c8c0) )
+ ROM_LOAD16_WORD_SWAP( "20.096", 0x180000, 0x80000, CRC(f9f334ce) SHA1(22e58ce5096b95138a30e9726e1169895118e990) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "1.096", 0x000000, 0x80000, CRC(ad468e07) SHA1(1ee8ecfd001b447982bc16972575eb2c5e01bc51) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "2.096", 0x000002, 0x80000, CRC(b9fdb6b5) SHA1(991fe0ded5c859f1e25766e9417e1ad691205e59) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3.096", 0x000004, 0x80000, CRC(be0b1a78) SHA1(d002bd90d0f239d29f5ea481e455d85a1c088516) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "4.096", 0x000006, 0x80000, CRC(bba67a43) SHA1(9cd51a06a7661b2f78059ac392423f73de5cf56f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx5.rom", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx7.rom", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx6.rom", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx8.rom", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "9.512", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* samples */
+ ROM_LOAD( "18.010", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "19.010", 0x20000, 0x20000, CRC(eb5ca884) SHA1(3592c69f77c7cd6ee241d6c1079c34a3e58abb5b) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( slammast )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "mbe_23e.8f", 0x000000, 0x80000, CRC(5394057a) SHA1(57f8b40c0a15e82c98ce5f0a8c4bdf60a1bc3107) )
+ ROM_LOAD16_BYTE( "mbe_24b.9e", 0x080000, 0x20000, CRC(95d5e729) SHA1(df3be896e55c92eb50887a4317178a3d11048433) )
+ ROM_LOAD16_BYTE( "mbe_28b.9f", 0x080001, 0x20000, CRC(b1c7cbcb) SHA1(cf5ad72be4a055db876e7347b1826325b9bf81d9) )
+ ROM_LOAD16_BYTE( "mbe_25b.10e", 0x0c0000, 0x20000, CRC(a50d3fd4) SHA1(dc3d108c3bc27f45b8b2e11919ba2a86e05b41d1) )
+ ROM_LOAD16_BYTE( "mbe_29b.10f", 0x0c0001, 0x20000, CRC(08e32e56) SHA1(70ad78b079f777ec02089f0df20ce2baad7adce5) )
+ ROM_LOAD16_WORD_SWAP( "mbe_21a.6f", 0x100000, 0x80000, CRC(d5007b05) SHA1(c55e55908aeda40ca2318c76ccbc05d333676875) )
+ ROM_LOAD16_WORD_SWAP( "mbe_20a.5f", 0x180000, 0x80000, CRC(aeb557b0) SHA1(530551942961d776f0a85852e02bb243840ca671) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb-1m.3a", 0x000000, 0x80000, CRC(41468e06) SHA1(fb365798f2889a20eebaea2393c9c2c8827003c4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-3m.5a", 0x000002, 0x80000, CRC(f453aa9e) SHA1(24a103dc6f0dc96f8d0f6164ad732909c9cd2d6a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-2m.4a", 0x000004, 0x80000, CRC(2ffbfea8) SHA1(13e30133664a009686e1114c92b558bdbb91ea32) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-4m.6a", 0x000006, 0x80000, CRC(1eb9841d) SHA1(685da3e011a96b36be9f639a241b2f8f27da4629) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-5m.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-7m.9a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-6m.8a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-8m.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-10m.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-12m.5c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-11m.4c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-13m.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x8000, "user1", 0 )
+ ROM_COPY( "audiocpu", 0x000000, 0x00000, 0x8000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "mb63b.1a", 0x0000, 0x0117, CRC(b8392f02) SHA1(8dedf9f43b30991694f8009302ca628cb50a0b1a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91635B-2 */
+ROM_START( slammastu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "mbu_23e.8f", 0x000000, 0x80000, CRC(224f0062) SHA1(d961f2e7db7acac576539c24a69e7dd9bf8fc406) )
+ ROM_LOAD16_BYTE( "mbu_24b.9e", 0x080000, 0x20000, CRC(95d5e729) SHA1(df3be896e55c92eb50887a4317178a3d11048433) ) // == mbe_24b.9e
+ ROM_LOAD16_BYTE( "mbu_28b.9f", 0x080001, 0x20000, CRC(b1c7cbcb) SHA1(cf5ad72be4a055db876e7347b1826325b9bf81d9) ) // == mbe_28b.9f
+ ROM_LOAD16_BYTE( "mbu_25b.10e", 0x0c0000, 0x20000, CRC(a50d3fd4) SHA1(dc3d108c3bc27f45b8b2e11919ba2a86e05b41d1) ) // == mbe_25b.10e
+ ROM_LOAD16_BYTE( "mbu_29b.10f", 0x0c0001, 0x20000, CRC(08e32e56) SHA1(70ad78b079f777ec02089f0df20ce2baad7adce5) ) // == mbe_29b.10f
+ ROM_LOAD16_WORD_SWAP( "mbu_21a.6f", 0x100000, 0x80000, CRC(d5007b05) SHA1(c55e55908aeda40ca2318c76ccbc05d333676875) ) // == mbe_21a.6f
+ ROM_LOAD16_WORD_SWAP( "mbu_20a.5f", 0x180000, 0x80000, CRC(fc848af5) SHA1(cd3f6e50779b89ee57a9d08bfa1d58dea286457c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb-1m.3a", 0x000000, 0x80000, CRC(41468e06) SHA1(fb365798f2889a20eebaea2393c9c2c8827003c4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-3m.5a", 0x000002, 0x80000, CRC(f453aa9e) SHA1(24a103dc6f0dc96f8d0f6164ad732909c9cd2d6a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-2m.4a", 0x000004, 0x80000, CRC(2ffbfea8) SHA1(13e30133664a009686e1114c92b558bdbb91ea32) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-4m.6a", 0x000006, 0x80000, CRC(1eb9841d) SHA1(685da3e011a96b36be9f639a241b2f8f27da4629) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-5m.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-7m.9a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-6m.8a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-8m.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-10m.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-12m.5c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-11m.4c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-13m.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x8000, "user1", 0 )
+ ROM_COPY( "audiocpu", 0x000000, 0x00000, 0x8000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "mb63b.1a", 0x0000, 0x0117, CRC(b8392f02) SHA1(8dedf9f43b30991694f8009302ca628cb50a0b1a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( mbomberj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "mbj_23e.8f", 0x000000, 0x80000, CRC(0d06036a) SHA1(e1b102888038b4bb612a41ac94a43333d468a245) )
+ ROM_LOAD16_WORD_SWAP( "mbj_22b.7f", 0x080000, 0x80000, CRC(acd38478) SHA1(0bed74b52838006c6ec3661f92058dc2aa3e8193) )
+ ROM_LOAD16_WORD_SWAP( "mbj_21a.6f", 0x100000, 0x80000, CRC(d5007b05) SHA1(c55e55908aeda40ca2318c76ccbc05d333676875) ) // == mbe_21a.6f
+ ROM_LOAD16_WORD_SWAP( "mbj_20a.5f", 0x180000, 0x80000, CRC(aeb557b0) SHA1(530551942961d776f0a85852e02bb243840ca671) ) // == mbe_20a.5f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb_01.3a", 0x000000, 0x80000, CRC(a53b1c81) SHA1(d1efb88eeaf6e30e51aaf1432078003e52454dd9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_02.4a", 0x000002, 0x80000, CRC(23fe10f6) SHA1(deefa7cac4394b0642f7fb444f9374dbe0bc8843) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_03.5a", 0x000004, 0x80000, CRC(cb866c2f) SHA1(b087f52e3b2a514a209612319d1d7c4f1c12b8bd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_04.6a", 0x000006, 0x80000, CRC(c9143e75) SHA1(e30090625ef6ac971a4f65d53f5458cebb5f146c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_05.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-5m.7a
+ ROMX_LOAD( "mb_06.8a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-7m.9a
+ ROMX_LOAD( "mb_07.9a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-6m.8a
+ ROMX_LOAD( "mb_08.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-8m.10a
+ ROMX_LOAD( "mb_10.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-10m.3c
+ ROMX_LOAD( "mb_11.4c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-12m.5c
+ ROMX_LOAD( "mb_12.5c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-11m.4c
+ ROMX_LOAD( "mb_13.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-13m.6c
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x8000, "user1", 0 )
+ ROM_COPY( "audiocpu", 0x000000, 0x00000, 0x8000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "mb63b.1a", 0x0000, 0x0117, CRC(b8392f02) SHA1(8dedf9f43b30991694f8009302ca628cb50a0b1a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* FIXME B-Board uncertain but should be 91635B from the program ROM names */
+ROM_START( mbombrd )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "mbde_26.11e", 0x000000, 0x20000, CRC(72b7451c) SHA1(380ef57bb00f1c92d2f29e551b0a670eb5a56cb7) )
+ ROM_LOAD16_BYTE( "mbde_30.11f", 0x000001, 0x20000, CRC(a036dc16) SHA1(a68cf74976f482dbc581734e143669511a9a4bee) )
+ ROM_LOAD16_BYTE( "mbde_27.12e", 0x040000, 0x20000, CRC(4086f534) SHA1(a2b949f00035b06cb1cd01185902daca3d89d0e3) )
+ ROM_LOAD16_BYTE( "mbde_31.12f", 0x040001, 0x20000, CRC(085f47f0) SHA1(ac93a196faf17b7dbe7179ce1e850d9cd7293a21) )
+ ROM_LOAD16_BYTE( "mbde_24.9e", 0x080000, 0x20000, CRC(c20895a5) SHA1(35116f7ef8576753ec989647ca2f6a6131d6909f) )
+ ROM_LOAD16_BYTE( "mbde_28.9f", 0x080001, 0x20000, CRC(2618d5e1) SHA1(50797c6dda04df95267ff9ef08933c17c3ce7057) )
+ ROM_LOAD16_BYTE( "mbde_25.10e", 0x0c0000, 0x20000, CRC(9bdb6b11) SHA1(fbfbd6b5a72ca3237713ce43a798660f899b707d) )
+ ROM_LOAD16_BYTE( "mbde_29.10f", 0x0c0001, 0x20000, CRC(3f52d5e5) SHA1(0b1ed8e876a6ec2cfb83676afe43a81e8a033e52) )
+ ROM_LOAD16_WORD_SWAP( "mbde_21.6f", 0x100000, 0x80000, CRC(690c026a) SHA1(80ad780743b50750b6bfe1d4e28efe98e562233e) )
+ ROM_LOAD16_WORD_SWAP( "mbde_20.5f", 0x180000, 0x80000, CRC(b8b2139b) SHA1(88c9169a9979b711ab7afb8272df0a1c80bb357b) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb-1m.3a", 0x000000, 0x80000, CRC(41468e06) SHA1(fb365798f2889a20eebaea2393c9c2c8827003c4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-3m.5a", 0x000002, 0x80000, CRC(f453aa9e) SHA1(24a103dc6f0dc96f8d0f6164ad732909c9cd2d6a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-2m.4a", 0x000004, 0x80000, CRC(2ffbfea8) SHA1(13e30133664a009686e1114c92b558bdbb91ea32) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-4m.6a", 0x000006, 0x80000, CRC(1eb9841d) SHA1(685da3e011a96b36be9f639a241b2f8f27da4629) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-5m.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-7m.9a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-6m.8a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-8m.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-10m.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-12m.5c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-11m.4c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-13m.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_q.5k", 0x00000, 0x08000, CRC(d6fa76d1) SHA1(3bfcb703e0e458ef1bb843230f8537167f1d4c3c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "mb63b.1a", 0x0000, 0x0117, CRC(b8392f02) SHA1(8dedf9f43b30991694f8009302ca628cb50a0b1a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( mbombrdj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "mbdj_26.11e", 0x000000, 0x20000, CRC(72b7451c) SHA1(380ef57bb00f1c92d2f29e551b0a670eb5a56cb7) ) // == mbde_26.11e
+ ROM_LOAD16_BYTE( "mbdj_30.11f", 0x000001, 0x20000, CRC(beff31cf) SHA1(8a3a1fa848fe8fad239d21aef1871e54bbcb582f) )
+ ROM_LOAD16_BYTE( "mbdj_27.12e", 0x040000, 0x20000, CRC(4086f534) SHA1(a2b949f00035b06cb1cd01185902daca3d89d0e3) ) // == mbde_27.12e
+ ROM_LOAD16_BYTE( "mbdj_31.12f", 0x040001, 0x20000, CRC(085f47f0) SHA1(ac93a196faf17b7dbe7179ce1e850d9cd7293a21) ) // == mbde_31.12f
+ ROM_LOAD16_BYTE( "mbdj_24.9e", 0x080000, 0x20000, CRC(c20895a5) SHA1(35116f7ef8576753ec989647ca2f6a6131d6909f) ) // == mbde_24.9e
+ ROM_LOAD16_BYTE( "mbdj_28.9f", 0x080001, 0x20000, CRC(2618d5e1) SHA1(50797c6dda04df95267ff9ef08933c17c3ce7057) ) // == mbde_28.9f
+ ROM_LOAD16_BYTE( "mbdj_25.10e", 0x0c0000, 0x20000, CRC(9bdb6b11) SHA1(fbfbd6b5a72ca3237713ce43a798660f899b707d) ) // == mbde_25.10e
+ ROM_LOAD16_BYTE( "mbdj_29.10f", 0x0c0001, 0x20000, CRC(3f52d5e5) SHA1(0b1ed8e876a6ec2cfb83676afe43a81e8a033e52) ) // == mbde_29.10f
+ ROM_LOAD16_WORD_SWAP( "mbdj_21.6f", 0x100000, 0x80000, CRC(690c026a) SHA1(80ad780743b50750b6bfe1d4e28efe98e562233e) ) // == mbde_21.6f
+ ROM_LOAD16_WORD_SWAP( "mbdj_20.5f", 0x180000, 0x80000, CRC(b8b2139b) SHA1(88c9169a9979b711ab7afb8272df0a1c80bb357b) ) // == mbde_20.5f
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb_01.3a", 0x000000, 0x80000, CRC(a53b1c81) SHA1(d1efb88eeaf6e30e51aaf1432078003e52454dd9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_02.4a", 0x000002, 0x80000, CRC(23fe10f6) SHA1(deefa7cac4394b0642f7fb444f9374dbe0bc8843) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_03.5a", 0x000004, 0x80000, CRC(cb866c2f) SHA1(b087f52e3b2a514a209612319d1d7c4f1c12b8bd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_04.6a", 0x000006, 0x80000, CRC(c9143e75) SHA1(e30090625ef6ac971a4f65d53f5458cebb5f146c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb_05.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-5m.7a
+ ROMX_LOAD( "mb_06.8a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-7m.9a
+ ROMX_LOAD( "mb_07.9a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-6m.8a
+ ROMX_LOAD( "mb_08.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-8m.10a
+ ROMX_LOAD( "mb_10.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-10m.3c
+ ROMX_LOAD( "mb_11.4c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-12m.5c
+ ROMX_LOAD( "mb_12.5c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-11m.4c
+ ROMX_LOAD( "mb_13.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) ) // == mb-13m.6c
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "mb63b.1a", 0x0000, 0x0117, CRC(b8392f02) SHA1(8dedf9f43b30991694f8009302ca628cb50a0b1a) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+/* B-Board 89625B-1 */
+ROM_START( pnickj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "pnij_36.12f", 0x00000, 0x20000, CRC(2d4ffb2b) SHA1(6e49cf89a36834fd1de8b4b860fe66f3d7d67a84) )
+ ROM_LOAD16_BYTE( "pnij_42.12h", 0x00001, 0x20000, CRC(c085dfaf) SHA1(a31ededc3413ec4f3f5e3a1fb615b60c6197f4a5) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "pnij_09.4b", 0x000000, 0x20000, CRC(48177b0a) SHA1(eba5de6cd9bb0c4ad76a13bddc9cdeb2e4380122) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_01.4a", 0x000001, 0x20000, CRC(01a0f311) SHA1(9bcd8716f90ccd410543ffcdc5c2916077b8d4c3) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_13.9b", 0x000002, 0x20000, CRC(406451b0) SHA1(5a7a7fecba7de8b8cf4a284b2ae7adae901623f6) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_05.9a", 0x000003, 0x20000, CRC(8c515dc0) SHA1(aa1e13cf9e7cf0458bb5c4332b1ea73034f9a874) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_26.5e", 0x000004, 0x20000, CRC(e2af981e) SHA1(3c2b28b4a4d457aa94a760dfca0181a9f050c319) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_18.5c", 0x000005, 0x20000, CRC(f17a0e56) SHA1(7c89aca230f176e12f995892f9d1bce22c57fbdf) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_38.8h", 0x000006, 0x20000, CRC(eb75bd8c) SHA1(2129460e06eb64019fc5f7eab6334ff43229b995) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_32.8f", 0x000007, 0x20000, CRC(84560bef) SHA1(9e94ae434b50ecf82781080e11d0c4741e992d0d) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_10.5b", 0x100000, 0x20000, CRC(c2acc171) SHA1(7c86db3f2acca1252d403c5f12c871d0357fa109) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_02.5a", 0x100001, 0x20000, CRC(0e21fc33) SHA1(c4a29d45c4257c8871038d3c9b13140e874db0c1) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_14.10b", 0x100002, 0x20000, CRC(7fe59b19) SHA1(a273b8b8fbfd5d31d25479a9ede09ce35e1cc873) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_06.10a", 0x100003, 0x20000, CRC(79f4bfe3) SHA1(bc17cc1c8535e3d202588893713926b6c06f92fd) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_27.7e", 0x100004, 0x20000, CRC(83d5cb0e) SHA1(44c93fa5eedcafc8dc6d88ee827c6cadc9c671f0) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_19.7c", 0x100005, 0x20000, CRC(af08b230) SHA1(a3b5b3013012efa1860699648518f8d8031c5f30) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_39.9h", 0x100006, 0x20000, CRC(70fbe579) SHA1(b5b7ed5588ecd884b20dd50bfc5385a9af03c5d8) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij_33.9f", 0x100007, 0x20000, CRC(3ed2c680) SHA1(0afe84d8d89f8d45afc79f6172337e622e29a8a2) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pnij_17.13b", 0x00000, 0x08000, CRC(e86f787a) SHA1(de04cbe89c655faf04afe169bfd9913049ccc4a8) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "pnij_24.12c", 0x00000, 0x20000, CRC(5092257d) SHA1(95dc9d10940653b2fb37baf5c1ed27145b02104e) )
+ ROM_LOAD( "pnij_25.13c", 0x20000, 0x20000, CRC(22109aaa) SHA1(cf21e75674d81b2daae2083d02f9f4b6e52722c6) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "pkb10b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "iob1.12e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 90629B-3 */
+ROM_START( qtono2j )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "tn2j_30.11e", 0x00000, 0x20000, CRC(9226eb5e) SHA1(91649974f9652caed90eb28ec6caf4fe61f5d279) )
+ ROM_LOAD16_BYTE( "tn2j_37.11f", 0x00001, 0x20000, CRC(d1d30da1) SHA1(7ca1695ed804b5860d4c15964cdbb922db3918ee) )
+ ROM_LOAD16_BYTE( "tn2j_31.12e", 0x40000, 0x20000, CRC(015e6a8a) SHA1(0835bec4867438a167bd01e3550090c88e7ae779) )
+ ROM_LOAD16_BYTE( "tn2j_38.12f", 0x40001, 0x20000, CRC(1f139bcc) SHA1(ee907f1bfef1a887e2c768648fe811e0733eddf7) )
+ ROM_LOAD16_BYTE( "tn2j_28.9e", 0x80000, 0x20000, CRC(86d27f71) SHA1(89d6d18e05deaaa1ac7deb70ca03d051d2fde472) )
+ ROM_LOAD16_BYTE( "tn2j_35.9f", 0x80001, 0x20000, CRC(7a1ab87d) SHA1(f1729a8c0c82cf42f60644a7796dc8a39bf7c6fa) )
+ ROM_LOAD16_BYTE( "tn2j_29.10e", 0xc0000, 0x20000, CRC(9c384e99) SHA1(3d3961f625ccc4776531eff50fc1b4bee062370e) )
+ ROM_LOAD16_BYTE( "tn2j_36.10f", 0xc0001, 0x20000, CRC(4c4b2a0a) SHA1(9a25fcfb9358ea42d9bc662df2cafea08febb411) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tn2-02m.4a", 0x000000, 0x80000, CRC(f2016a34) SHA1(3862960fa14742547f6a6deacf0b9f409d08fee8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-04m.6a", 0x000002, 0x80000, CRC(094e0fb1) SHA1(7c9a9a7d03e226109002dd389c872e3d4be43287) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-01m.3a", 0x000004, 0x80000, CRC(cb950cf9) SHA1(8337a500141c1aec82b6636ad79ecafbdbebd691) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-03m.5a", 0x000006, 0x80000, CRC(18a5bf59) SHA1(afbfcb28c40551747bb5276aac2b9c15a24328e1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-11m.4c", 0x200000, 0x80000, CRC(d0edd30b) SHA1(a76d7f134f9e52f79a485402d17dcc7a1fe99f29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-13m.6c", 0x200002, 0x80000, CRC(426621c3) SHA1(89156bc9d585f546cd619db419dd1f4d9871d930) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-10m.3c", 0x200004, 0x80000, CRC(a34ece70) SHA1(15864d6b280f624245add8a611f1699da570392b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tn2-12m.5c", 0x200006, 0x80000, CRC(e04ff2f4) SHA1(774c19909a2ae2c691f5d3f15b6e19cc94baf799) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "tn2j_09.12a", 0x00000, 0x08000, CRC(e464b969) SHA1(18a0b9fd3a1eb4d1364b0e8601cd49a9574406c8) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "tn2j_18.11c", 0x00000, 0x20000, CRC(a40bf9a7) SHA1(07cb1076262a281e31a621cbcc10be0cae883175) )
+ ROM_LOAD( "tn2j_19.12c", 0x20000, 0x20000, CRC(5b3b931e) SHA1(cf28891f84814cbfaa3adaade8bb08b1e0546a3d) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tn2292.1a", 0x0000, 0x0117, CRC(3d899539) SHA1(9ffa76229408a2d7438b1b3efa0ec7166bfcc751) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 94916-10 */
+ROM_START( pang3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "pa3e_17a.11l", 0x00000, 0x80000, CRC(a213fa80) SHA1(fee6b0b21e2ef573ebfb35eaa1785533101c9170) )
+ ROM_LOAD16_WORD_SWAP( "pa3e_16a.10l", 0x80000, 0x80000, CRC(7169ea67) SHA1(1076afaff7b05c9009798a0cea13e71fa27f2b7e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "pa3-01m.2c", 0x000000, 0x100000, CRC(068a152c) SHA1(fa491874068924c39bcc7de93dfda3b27f5d9613) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x100000 )
+ ROMX_LOAD( "pa3-07m.2f", 0x000002, 0x100000, CRC(3a4a619d) SHA1(cfe68e24632b53fb6cd6d03b2166d6b5ba28b778) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x100000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pa3_11.11f", 0x00000, 0x08000, CRC(cb1423a2) SHA1(3191bf5d340168647881738cb2aed09b1d86146e) )
+ ROM_IGNORE( 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "pa3_05.10d", 0x00000, 0x20000, CRC(73a10d5d) SHA1(999465e4fbc35a34746d2db61ad49f61403d5af7) )
+ ROM_LOAD( "pa3_06.11d", 0x20000, 0x20000, CRC(affa4f82) SHA1(27b9292bbc121cf585f53297a79fe8f0d0a729ae) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cp1b1f.1f", 0x0000, 0x0117, CRC(3979b8e3) SHA1(07c9819d68b4d93bc37b96bd15d689ce54fe034e) )
+ ROM_LOAD( "cp1b8k.8k", 0x0000, 0x0117, CRC(8a52ea7a) SHA1(47a59abc54a83292cfd6faa2d293c8f948c7ea03) )
+ ROM_LOAD( "cp1b9ka.9k", 0x0000, 0x0117, CRC(238d3ff4) SHA1(597f429d6a0ea485746322592604188c1ec87595) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 94916-10 */
+ROM_START( pang3r1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "pa3e_17.11l", 0x00000, 0x80000, CRC(d7041d32) SHA1(b021f3defe7fc58030ba907125c713f987724187) )
+ ROM_LOAD16_WORD_SWAP( "pa3e_16.10l", 0x80000, 0x80000, CRC(1be9a483) SHA1(6cff1dd15ca163237bc82fb4a3e1d469d35e7be8) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "pa3-01m.2c", 0x000000, 0x100000, CRC(068a152c) SHA1(fa491874068924c39bcc7de93dfda3b27f5d9613) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x100000 )
+ ROMX_LOAD( "pa3-07m.2f", 0x000002, 0x100000, CRC(3a4a619d) SHA1(cfe68e24632b53fb6cd6d03b2166d6b5ba28b778) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x100000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pa3_11.11f", 0x00000, 0x08000, CRC(cb1423a2) SHA1(3191bf5d340168647881738cb2aed09b1d86146e) )
+ ROM_IGNORE( 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "pa3_05.10d", 0x00000, 0x20000, CRC(73a10d5d) SHA1(999465e4fbc35a34746d2db61ad49f61403d5af7) )
+ ROM_LOAD( "pa3_06.11d", 0x20000, 0x20000, CRC(affa4f82) SHA1(27b9292bbc121cf585f53297a79fe8f0d0a729ae) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cp1b1f.1f", 0x0000, 0x0117, CRC(3979b8e3) SHA1(07c9819d68b4d93bc37b96bd15d689ce54fe034e) )
+ ROM_LOAD( "cp1b8k.8k", 0x0000, 0x0117, CRC(8a52ea7a) SHA1(47a59abc54a83292cfd6faa2d293c8f948c7ea03) )
+ ROM_LOAD( "cp1b9k.9k", 0x0000, 0x0117, CRC(a754bdc3) SHA1(9267b24cbddee4858b219468cc92f9df8f5fd0ef) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 94916-10 */
+ROM_START( pang3j )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "pa3j_17.11l", 0x00000, 0x80000, CRC(21f6e51f) SHA1(b447e05261f59b3b2e89bbc0f606d7136b29cb56) )
+ ROM_LOAD16_WORD_SWAP( "pa3j_16.10l", 0x80000, 0x80000, CRC(ca1d7897) SHA1(46aa9232e81a838f3eff1e9b992492a264914fd5) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "pa3-01m.2c", 0x000000, 0x100000, CRC(068a152c) SHA1(fa491874068924c39bcc7de93dfda3b27f5d9613) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x100000 )
+ ROMX_LOAD( "pa3-07m.2f", 0x000002, 0x100000, CRC(3a4a619d) SHA1(cfe68e24632b53fb6cd6d03b2166d6b5ba28b778) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x100000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pa3_11.11f", 0x00000, 0x08000, CRC(cb1423a2) SHA1(3191bf5d340168647881738cb2aed09b1d86146e) )
+ ROM_IGNORE( 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "pa3_05.10d", 0x00000, 0x20000, CRC(73a10d5d) SHA1(999465e4fbc35a34746d2db61ad49f61403d5af7) )
+ ROM_LOAD( "pa3_06.11d", 0x20000, 0x20000, CRC(affa4f82) SHA1(27b9292bbc121cf585f53297a79fe8f0d0a729ae) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cp1b1f.1f", 0x0000, 0x0117, CRC(3979b8e3) SHA1(07c9819d68b4d93bc37b96bd15d689ce54fe034e) )
+ ROM_LOAD( "cp1b8k.8k", 0x0000, 0x0117, CRC(8a52ea7a) SHA1(47a59abc54a83292cfd6faa2d293c8f948c7ea03) )
+ ROM_LOAD( "cp1b9k.9k", 0x0000, 0x0117, CRC(a754bdc3) SHA1(9267b24cbddee4858b219468cc92f9df8f5fd0ef) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 94916-10 */
+/* This set comes from a not encrypted bootleg that uses a very well reproduced Mitchell 94916-10 B-Board surmounted by an
+ original Capcom 92631C-6 C-Board. Mitchell mark has been erased, original 32 pin EPROM PA3_11.11F resized and replaced by
+ one with 28 pin while the protection chip MACH215 mounted on the B-Board has been replaced by a 22 pin PAL. */
+ROM_START( pang3b )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "pa3w_17.11l", 0x00000, 0x80000, CRC(12138234) SHA1(956a2c847a3cfb94007d1a636167fd2bb9f826ec) )
+ ROM_LOAD16_WORD_SWAP( "pa3w_16.10l", 0x80000, 0x80000, CRC(d1ba585c) SHA1(c6d04441fe97abf0a72b23c917777a7b58e94a85) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "pa3-01m.2c", 0x000000, 0x100000, CRC(068a152c) SHA1(fa491874068924c39bcc7de93dfda3b27f5d9613) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x100000 )
+ ROMX_LOAD( "pa3-07m.2f", 0x000002, 0x100000, CRC(3a4a619d) SHA1(cfe68e24632b53fb6cd6d03b2166d6b5ba28b778) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x100000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pa3_11.11f", 0x00000, 0x08000, CRC(90a08c46) SHA1(7544adab2d7e052e0d21c920bff7841d9d718345) ) // == pa3_11.11f but different size, resized by bootlegger
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "pa3_05.10d", 0x00000, 0x20000, CRC(73a10d5d) SHA1(999465e4fbc35a34746d2db61ad49f61403d5af7) )
+ ROM_LOAD( "pa3_06.11d", 0x20000, 0x20000, CRC(affa4f82) SHA1(27b9292bbc121cf585f53297a79fe8f0d0a729ae) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "cp1b1f.1f", 0x0000, 0x0117, CRC(3979b8e3) SHA1(07c9819d68b4d93bc37b96bd15d689ce54fe034e) )
+ ROM_LOAD( "cp1b8k.8k", 0x0000, 0x0117, CRC(8a52ea7a) SHA1(47a59abc54a83292cfd6faa2d293c8f948c7ea03) )
+ ROM_LOAD( "cp1b9k.9k", 0x0000, 0x0117, CRC(a754bdc3) SHA1(9267b24cbddee4858b219468cc92f9df8f5fd0ef) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91635B-2 */
+/* Note that this USA set seems to be the only one where GFX are stored into EPROMs instead of the usual MASK ROMs. */
+ROM_START( megaman )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "rcmu_23b.8f", 0x000000, 0x80000, CRC(1cd33c7a) SHA1(687fb3b6d660d7350447193f1911c47972e7a020) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_22b.7f", 0x080000, 0x80000, CRC(708268c4) SHA1(554e011cad285b95dd1b6aa19be61b2413662a3a) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_21a.6f", 0x100000, 0x80000, CRC(4376ea95) SHA1(7370ceffca513aa9f68a74f6869d561476589200) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_03.5a
+ ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_02.4a
+ ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_07.9a
+ ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_06.8a
+ ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_12.5c
+ ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_11.4c
+ ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_16.9c
+ ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_15.8c
+ ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rcm_09.11a", 0x00000, 0x08000, CRC(22ac8f5f) SHA1(d1441d880f98034645cb4fcecd7bb746bde638af) ) /* different size from megamana, rockmanj but same label, pcb verified */
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rcm_18.11c", 0x00000, 0x20000, CRC(80f1f8aa) SHA1(4a5b7b2a6941ad68da7472c63362c7bcd353fa54) )
+ ROM_LOAD( "rcm_19.12c", 0x20000, 0x20000, CRC(f257dbe1) SHA1(967def6b6f93039dbc46373caabeb3301577be75) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rcm63b.1a", 0x0000, 0x0117, CRC(84acd494) SHA1(20c861714c8c68bc8cf3bde9d051969807e9b3a3) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( megamana )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "rcma_23b.8f", 0x000000, 0x80000, CRC(61e4a397) SHA1(a90b1cbef4206a4554398bc458a4b3e2c46d4c4f) )
+ ROM_LOAD16_WORD_SWAP( "rcma_22b.7f", 0x080000, 0x80000, CRC(708268c4) SHA1(554e011cad285b95dd1b6aa19be61b2413662a3a) ) // == rcmu_22b.7f
+ ROM_LOAD16_WORD_SWAP( "rcma_21a.6f", 0x100000, 0x80000, CRC(4376ea95) SHA1(7370ceffca513aa9f68a74f6869d561476589200) ) // == rcmu_21a.6f
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rcm_09.12a", 0x00000, 0x08000, CRC(9632d6ef) SHA1(2bcb6f17005ffbc9ef8fa4478a814f24b2e6e0b6) )
+ ROM_CONTINUE( 0x10000, 0x18000 ) // second half of ROM is empty, not mapped in memory
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rcm_18.11c", 0x00000, 0x20000, CRC(80f1f8aa) SHA1(4a5b7b2a6941ad68da7472c63362c7bcd353fa54) )
+ ROM_LOAD( "rcm_19.12c", 0x20000, 0x20000, CRC(f257dbe1) SHA1(967def6b6f93039dbc46373caabeb3301577be75) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rcm63b.1a", 0x0000, 0x0117, CRC(84acd494) SHA1(20c861714c8c68bc8cf3bde9d051969807e9b3a3) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( rockmanj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "rcm_23a.8f", 0x000000, 0x80000, CRC(efd96cb2) SHA1(cbe81554f60d0c897f3f2ebc5bc966bb03cc23fe) )
+ ROM_LOAD16_WORD_SWAP( "rcm_22a.7f", 0x080000, 0x80000, CRC(8729a689) SHA1(14ddb34d8201c544ea9d3d8c2cc52d380bc72930) )
+ ROM_LOAD16_WORD_SWAP( "rcm_21a.6f", 0x100000, 0x80000, CRC(517ccde2) SHA1(492256c192f0c4814efa1ee1dd390453dd2e5865) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "rcm_09.12a", 0x00000, 0x08000, CRC(9632d6ef) SHA1(2bcb6f17005ffbc9ef8fa4478a814f24b2e6e0b6) )
+ ROM_CONTINUE( 0x10000, 0x18000 ) // second half of ROM is empty, not mapped in memory
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "rcm_18.11c", 0x00000, 0x20000, CRC(80f1f8aa) SHA1(4a5b7b2a6941ad68da7472c63362c7bcd353fa54) )
+ ROM_LOAD( "rcm_19.12c", 0x20000, 0x20000, CRC(f257dbe1) SHA1(967def6b6f93039dbc46373caabeb3301577be75) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "rcm63b.1a", 0x0000, 0x0117, CRC(84acd494) SHA1(20c861714c8c68bc8cf3bde9d051969807e9b3a3) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+/* B-Board 91634B-2 */
+ROM_START( ganbare )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "mrnj_23d.8f", 0x00000, 0x80000, CRC(f929be72) SHA1(d175bdcace469277479ef85bf4e1b9d5a63cffde) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "mrnj_01.3a", 0x000000, 0x80000, CRC(3f878020) SHA1(b18faa50d88c76d19db1af73cf4b3095e928f51f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_02.4a", 0x000002, 0x80000, CRC(3e5624d8) SHA1(502e4897916af1c9e121b096de1369d06f1ffe87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_03.5a", 0x000004, 0x80000, CRC(d1e61f96) SHA1(5f6dee8adbf83c697416e440fbdd3a84a6e698da) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_04.6a", 0x000006, 0x80000, CRC(d241971b) SHA1(b641740b40a043affbb79ea91ba12f821a259bad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_05.7a", 0x200000, 0x80000, CRC(c0a14562) SHA1(2fb6cf98fed83ac92c33df9526102a101454e276) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_06.8a", 0x200002, 0x80000, CRC(e6a71dfc) SHA1(67178b020f87fb28ef35292d008ce9b80e02a2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_07.9a", 0x200004, 0x80000, CRC(99afb6c7) SHA1(5caead2b71cd54f6b53765f09829cc9e92e1e2d6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mrnj_08.10a", 0x200006, 0x80000, CRC(52882c20) SHA1(5e3fca6da3470aeb78534f01e1575d8c0e067c0e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mrnj_09.12a", 0x00000, 0x08000, CRC(62470d72) SHA1(1de357a20f794defb49ed01af5b95ad00e2aa1d9) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "mrnj_18.11c", 0x00000, 0x20000, CRC(08e13940) SHA1(5c7dd7ff6a66f100b59cf9244e78f2c8702faca1) )
+ ROM_LOAD( "mrnj_19.12c", 0x20000, 0x20000, CRC(5fa59927) SHA1(f05246cf566c214b008a91816c71e7c03b7cc218) )
+
+ ROM_REGION( 0x8000, "timekeeper", 0) /* Timekeeper internal RAM was dumped (but game overwrites it - should I keep this here or remove it?) */
+ ROM_LOAD( "m48t35y-70pc1.9n", 0x00000, 0x8000, CRC(96107b4a) SHA1(be9149736030e06c96083dcac73b5be3dbc318ac) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "gbpr2.1a", 0x0000, 0x0117, CRC(486e8ca0) SHA1(4554befd49ec322af7dadd198188255ae7c7c059) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
+
+ROM_START( pokonyan )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "xmqq-12f.bin", 0x00000, 0x20000, CRC(196297bf) SHA1(4724c4ccb755d3d457f5224d4c4ea860664d3b10) )
+ ROM_LOAD16_BYTE( "xmqq-12h.bin", 0x00001, 0x20000, CRC(2d7ee2e9) SHA1(af9f8c346e36b4bd6284913129782187e242aa3f) )
+ ROM_LOAD16_BYTE( "xmqq-13f.bin", 0x40000, 0x20000, CRC(8f6abf26) SHA1(e9918abc5ca02c8b3f3b5b2410aedc350dc12ec2) )
+ ROM_LOAD16_BYTE( "xmqq-13h.bin", 0x40001, 0x20000, CRC(3fefe432) SHA1(42763c047fd976c9a8fec3a38f2b132b6e2e15a9) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "xmqq-4b.bin", 0x000000, 0x20000, CRC(933ab76d) SHA1(a51536b0ad89e08356cbb500c60099bd2a192a76) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-4a.bin", 0x000001, 0x20000, CRC(b098e7a9) SHA1(c848ddc0e6559dac6ca23d29c12bc65ea19b7dc4) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-9b.bin", 0x000002, 0x20000, CRC(b66d62d4) SHA1(1be1b89aa24382b4a3d4585b22b83f35b2a27333) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-9a.bin", 0x000003, 0x20000, CRC(9c23e40b) SHA1(9b5de73c4c6679a53871a45743a60c7cdefc8aaa) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-5e.bin", 0x000004, 0x20000, CRC(63d06d6f) SHA1(364d81aafa4d97e8d709e13b481585f655924254) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-5c.bin", 0x000005, 0x20000, CRC(e2169bb5) SHA1(2ca3d6eeee27606af0b21c69491c3bfbe1f82ed6) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-8h.bin", 0x000006, 0x20000, CRC(113121f5) SHA1(d5b3c97e70c3f53d4d68ed56d98e84df59f42073) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-8f.bin", 0x000007, 0x20000, CRC(beb00e07) SHA1(ab0264cb98fe9d77c5acff86800273ed4bdf2e1f) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-5b.bin", 0x100000, 0x20000, CRC(05354905) SHA1(6a53c47c9d87f76bf73b8cab540910cdcfcb9133) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-5a.bin", 0x100001, 0x20000, CRC(bd40215e) SHA1(7350e56ecef8e87cf5a4d4f50231fada6fc5356b) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-10b.bin", 0x100002, 0x20000, CRC(9fa773ef) SHA1(4f0cf813cfe7fbdf20403cfab81b1c01907eb62f) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-10a.bin", 0x100003, 0x20000, CRC(638d4bc7) SHA1(fca924ad53ad1d00dc2e70436fd22de81c08115f) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-7e.bin", 0x100004, 0x20000, CRC(72c45858) SHA1(e1ea89568077739b891c95f57c867c02f6c109ff) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-7c.bin", 0x100005, 0x20000, CRC(d91cda18) SHA1(ef40cb78484355be74d2a08fdd870b49263ab57d) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-9h.bin", 0x100006, 0x20000, CRC(3cd8594b) SHA1(a099428d0f0231f91881beee0bd6a80ba2c3d693) , ROM_SKIP(7) )
+ ROMX_LOAD( "xmqq-9f.bin", 0x100007, 0x20000, CRC(1ec10bed) SHA1(139563c41450591b5674d885e3260cb99b206e25) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xmqq-13b.bin", 0x00000, 0x08000, CRC(4e8b81a8) SHA1(4a837345223c51d668ec7f4d7460871c00f71482) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "xmqq-12c.bin", 0x00000, 0x20000, CRC(71ac69ad) SHA1(401fe0294c6b7bc79426ab1922e02a97415cd2ef) )
+ ROM_LOAD( "xmqq-13c.bin", 0x20000, 0x20000, CRC(71e29699) SHA1(8f19a925bbd47ef965c41af233359a1552c7f8b0) )
+
+ /*
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+ */
+
+ /* not sure
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "unknown.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "lwio.12e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
+ */
+ROM_END
+
+/* Home 'CPS Changer' Unit - For MESS */
+
+/* B-Board 91635B-2 */
+ROM_START( wofch )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "tk2(ch)_23.8f", 0x000000, 0x80000, CRC(4e0b8dee) SHA1(d2fb716d62b7a259f46bbc74c1976a18d56696ea) )
+ ROM_LOAD16_WORD_SWAP( "tk2(ch)_22.7f", 0x080000, 0x80000, CRC(d0937a8d) SHA1(01d7be446e2e3ef8ca767f59c178240dfd52dd93) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_05.7a
+ ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_06.8a
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* 1 byte different from wofj, pcb verified */
+ ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_08.10a
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+
+ ROM_REGION( 0x0200, "dboardplds", 0 )
+ ROM_LOAD( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) )
+ ROM_LOAD( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) )
+ ROM_LOAD( "d9k1.9k", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) )
+ROM_END
+
+ROM_START( sfach )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sfach23", 0x000000, 0x80000, CRC(02a1a853) SHA1(d92b9e774844fdcc9d9946b3e892b021e672d876) )
+ ROM_LOAD16_WORD_SWAP( "sfza22", 0x080000, 0x80000, CRC(8d9b2480) SHA1(405305c1572908d00eab735f28676fbbadb4fac6) )
+ ROM_LOAD16_WORD_SWAP( "sfzch21", 0x100000, 0x80000, CRC(5435225d) SHA1(6b1156fd82d0710e244ede39faaae0847c598376) )
+ ROM_LOAD16_WORD_SWAP( "sfza20", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "sfz01", 0x000000, 0x80000, CRC(0dd53e62) SHA1(5f3bcf5ca0fd564d115fe5075a4163d3ee3226df) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz02", 0x000002, 0x80000, CRC(94c31e3f) SHA1(2187b3d4977514f2ae486eb33ed76c86121d5745) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz03", 0x000004, 0x80000, CRC(9584ac85) SHA1(bbd62d66b0f6909630e801ce5d6331d43f44d741) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz04", 0x000006, 0x80000, CRC(b983624c) SHA1(841106bb9453e3dfb7869c4b0e9149cc610d515a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz05", 0x200000, 0x80000, CRC(2b47b645) SHA1(bc6426eff5df9417f32666586744626fa544f7b5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz06", 0x200002, 0x80000, CRC(74fd9fb1) SHA1(7945472591f3c06970e96611a0363ed8f3d52c36) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz07", 0x200004, 0x80000, CRC(bb2c734d) SHA1(97a06935f86f31755d2ffdc5b56bef53944bdecd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz08", 0x200006, 0x80000, CRC(454f7868) SHA1(eecccba7542d893bc41676246a20aa4914b79bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz10", 0x400000, 0x80000, CRC(2a7d675e) SHA1(0144ba34a29fb08b41c780ce65bb06d25724e88f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz11", 0x400002, 0x80000, CRC(e35546c8) SHA1(7b08aa3413494d12c5c550263a5f00b64b98e6ab) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz12", 0x400004, 0x80000, CRC(f122693a) SHA1(71ce901d8d30207e506b6a8d6a4e0fcf3a1b0eac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz13", 0x400006, 0x80000, CRC(7cf942c8) SHA1(a7109facb97a8a11ddf1b4e07de6ff3164d713a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz14", 0x600000, 0x80000, CRC(09038c81) SHA1(3461d70902fbfb92ce40f804be6388276a01d153) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz15", 0x600002, 0x80000, CRC(1aa17391) SHA1(b4d0f760a430b7fc4443b6c94da2659315c5b926) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz16", 0x600004, 0x80000, CRC(19a5abd6) SHA1(73ba1de15c883fdc69fd7dccdb58d00ca512d4ea) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz17", 0x600006, 0x80000, CRC(248b3b73) SHA1(95810a17b1caf6372b33ed3e4ee8a7e51482c70d) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz09", 0x00000, 0x08000, CRC(c772628b) SHA1(ebc5b7c173caf1e151f733f23c1b20abec24e16d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sfz18", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5) )
+ ROM_LOAD( "sfz19", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58) )
+ROM_END
+
+/* FIXME B-Board uncertain but should be 91634B from the program ROM names */
+ROM_START( sfzch )
+ ROM_REGION( CODE_SIZE, "maincpu",0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sfzch23", 0x000000, 0x80000, CRC(1140743f) SHA1(10bcedb5cca266f2aa3ed99ede6f9a64fc877539))
+ ROM_LOAD16_WORD_SWAP( "sfza22", 0x080000, 0x80000, CRC(8d9b2480) SHA1(405305c1572908d00eab735f28676fbbadb4fac6))
+ ROM_LOAD16_WORD_SWAP( "sfzch21", 0x100000, 0x80000, CRC(5435225d) SHA1(6b1156fd82d0710e244ede39faaae0847c598376))
+ ROM_LOAD16_WORD_SWAP( "sfza20", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb))
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "sfz_01.3a", 0x000000, 0x80000, CRC(0dd53e62) SHA1(5f3bcf5ca0fd564d115fe5075a4163d3ee3226df), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_02.4a", 0x000002, 0x80000, CRC(94c31e3f) SHA1(2187b3d4977514f2ae486eb33ed76c86121d5745), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_03.5a", 0x000004, 0x80000, CRC(9584ac85) SHA1(bbd62d66b0f6909630e801ce5d6331d43f44d741), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_04.6a", 0x000006, 0x80000, CRC(b983624c) SHA1(841106bb9453e3dfb7869c4b0e9149cc610d515a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_05.7a", 0x200000, 0x80000, CRC(2b47b645) SHA1(bc6426eff5df9417f32666586744626fa544f7b5), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_06.8a", 0x200002, 0x80000, CRC(74fd9fb1) SHA1(7945472591f3c06970e96611a0363ed8f3d52c36), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_07.9a", 0x200004, 0x80000, CRC(bb2c734d) SHA1(97a06935f86f31755d2ffdc5b56bef53944bdecd), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_08.10a", 0x200006, 0x80000, CRC(454f7868) SHA1(eecccba7542d893bc41676246a20aa4914b79bbc), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_10.3c", 0x400000, 0x80000, CRC(2a7d675e) SHA1(0144ba34a29fb08b41c780ce65bb06d25724e88f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_11.4c", 0x400002, 0x80000, CRC(e35546c8) SHA1(7b08aa3413494d12c5c550263a5f00b64b98e6ab), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_12.5c", 0x400004, 0x80000, CRC(f122693a) SHA1(71ce901d8d30207e506b6a8d6a4e0fcf3a1b0eac), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_13.6c", 0x400006, 0x80000, CRC(7cf942c8) SHA1(a7109facb97a8a11ddf1b4e07de6ff3164d713a1), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_14.7c", 0x600000, 0x80000, CRC(09038c81) SHA1(3461d70902fbfb92ce40f804be6388276a01d153), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_15.8c", 0x600002, 0x80000, CRC(1aa17391) SHA1(b4d0f760a430b7fc4443b6c94da2659315c5b926), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_16.9c", 0x600004, 0x80000, CRC(19a5abd6) SHA1(73ba1de15c883fdc69fd7dccdb58d00ca512d4ea), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_17.10c", 0x600006, 0x80000, CRC(248b3b73) SHA1(95810a17b1caf6372b33ed3e4ee8a7e51482c70d), ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu",0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz_09.12a", 0x00000, 0x08000, CRC(c772628b) SHA1(ebc5b7c173caf1e151f733f23c1b20abec24e16d))
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki",0 ) /* Samples */
+ ROM_LOAD( "sfz_18.11c", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5))
+ ROM_LOAD( "sfz_19.12c", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58))
+ROM_END
+
+/* FIXME B-Board uncertain but should be 91634B from the program ROM names */
+ROM_START( sfzbch )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sfzbch23", 0x000000, 0x80000, CRC(53699f68) SHA1(d7f132faf8c31b5e79c32e6b0cce45377ec8d474) )
+ ROM_LOAD16_WORD_SWAP( "sfza22", 0x080000, 0x80000, CRC(8d9b2480) SHA1(405305c1572908d00eab735f28676fbbadb4fac6) )
+ ROM_LOAD16_WORD_SWAP( "sfzch21", 0x100000, 0x80000, CRC(5435225d) SHA1(6b1156fd82d0710e244ede39faaae0847c598376) )
+ ROM_LOAD16_WORD_SWAP( "sfza20", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "sfz_01.3a", 0x000000, 0x80000, CRC(0dd53e62) SHA1(5f3bcf5ca0fd564d115fe5075a4163d3ee3226df), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_02.4a", 0x000002, 0x80000, CRC(94c31e3f) SHA1(2187b3d4977514f2ae486eb33ed76c86121d5745), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_03.5a", 0x000004, 0x80000, CRC(9584ac85) SHA1(bbd62d66b0f6909630e801ce5d6331d43f44d741), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_04.6a", 0x000006, 0x80000, CRC(b983624c) SHA1(841106bb9453e3dfb7869c4b0e9149cc610d515a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_05.7a", 0x200000, 0x80000, CRC(2b47b645) SHA1(bc6426eff5df9417f32666586744626fa544f7b5), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_06.8a", 0x200002, 0x80000, CRC(74fd9fb1) SHA1(7945472591f3c06970e96611a0363ed8f3d52c36), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_07.9a", 0x200004, 0x80000, CRC(bb2c734d) SHA1(97a06935f86f31755d2ffdc5b56bef53944bdecd), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_08.10a", 0x200006, 0x80000, CRC(454f7868) SHA1(eecccba7542d893bc41676246a20aa4914b79bbc), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_10.3c", 0x400000, 0x80000, CRC(2a7d675e) SHA1(0144ba34a29fb08b41c780ce65bb06d25724e88f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_11.4c", 0x400002, 0x80000, CRC(e35546c8) SHA1(7b08aa3413494d12c5c550263a5f00b64b98e6ab), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_12.5c", 0x400004, 0x80000, CRC(f122693a) SHA1(71ce901d8d30207e506b6a8d6a4e0fcf3a1b0eac), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_13.6c", 0x400006, 0x80000, CRC(7cf942c8) SHA1(a7109facb97a8a11ddf1b4e07de6ff3164d713a1), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_14.7c", 0x600000, 0x80000, CRC(09038c81) SHA1(3461d70902fbfb92ce40f804be6388276a01d153), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_15.8c", 0x600002, 0x80000, CRC(1aa17391) SHA1(b4d0f760a430b7fc4443b6c94da2659315c5b926), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_16.9c", 0x600004, 0x80000, CRC(19a5abd6) SHA1(73ba1de15c883fdc69fd7dccdb58d00ca512d4ea), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz_17.10c", 0x600006, 0x80000, CRC(248b3b73) SHA1(95810a17b1caf6372b33ed3e4ee8a7e51482c70d), ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+
+ ROM_REGION( 0x18000, "audiocpu",0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz_09.12a", 0x00000, 0x08000, CRC(c772628b) SHA1(ebc5b7c173caf1e151f733f23c1b20abec24e16d))
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki",0 ) /* Samples */
+ ROM_LOAD( "sfz_18.11c", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5))
+ ROM_LOAD( "sfz_19.12c", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58))
+ROM_END
+
+
+DRIVER_INIT_MEMBER(cps_state,forgottn)
+{
+ /* Forgotten Worlds has a NEC uPD4701AC on the B-board handling dial inputs from the CN-MOWS connector. */
+ /* The memory mapping is handled by PAL LWIO */
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x800040, 0x800041, write16_delegate(FUNC(cps_state::forgottn_dial_0_reset_w),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x800048, 0x800049, write16_delegate(FUNC(cps_state::forgottn_dial_1_reset_w),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x800052, 0x800055, read16_delegate(FUNC(cps_state::forgottn_dial_0_r),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x80005a, 0x80005d, read16_delegate(FUNC(cps_state::forgottn_dial_1_r),this));
+
+ save_item(NAME(m_dial));
+
+ m_dial[0] = 0;
+ m_dial[1] = 0;
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+READ16_MEMBER(cps_state::sf2rb_prot_r)
+{
+ switch (offset)
+ {
+ case 0x01201/2:
+ return 0x0002;
+
+ case 0x81201/2:
+ return 0x0040;
+ }
+
+ return 0;
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2rb)
+{
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb_prot_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+READ16_MEMBER(cps_state::sf2rb2_prot_r)
+{
+ switch (offset)
+ {
+ case 0x01201/2:
+ return 0x0000;
+
+ case 0x81201/2:
+ return 0x0040;
+ }
+
+ return 0;
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2rb2)
+{
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb2_prot_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2ee)
+{
+ /* This specific revision of SF2 has the CPS-B custom mapped at a different address. */
+ /* The mapping is handled by the PAL IOB2 on the B-board */
+ m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x800140, 0x80017f);
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2thndr)
+{
+ /* This particular hack uses a modified B-board PAL which mirrors the CPS-B registers at an alternate address */
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2hack)
+{
+ /* some SF2 hacks have some inputs wired to the LSB instead of MSB */
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_hack_dsw_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+
+READ16_MEMBER(cps_state::sf2dongb_prot_r)
+{
+ switch (offset)
+ {
+ case 0x00000/2: // (ret & 0x0f00) == 0x0200
+ case 0x77040/2: // (ret & 0x0ff0) == 0x0210
+ return 0x0210;
+ }
+
+ return 0;
+}
+
+DRIVER_INIT_MEMBER(cps_state,sf2dongb)
+{
+ // There is a hacked up Altera EP910PC-30 DIP in the 5f socket instead of a 4th eprom
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x180000, 0x1fffff, read16_delegate(FUNC(cps_state::sf2dongb_prot_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+READ16_MEMBER(cps_state::sf2ceblp_prot_r)
+{
+ if (sf2ceblp_prot == 0x0)
+ return 0x1992;
+ if (sf2ceblp_prot == 0x04)
+ return 0x0408;
+ return 0xffff;
+}
+
+WRITE16_MEMBER(cps_state::sf2ceblp_prot_w)
+{
+ sf2ceblp_prot = data;
+}
+
+
+DRIVER_INIT_MEMBER( cps_state, sf2ceblp )
+{
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16_delegate(FUNC(cps_state::sf2ceblp_prot_w),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16_delegate(FUNC(cps_state::sf2ceblp_prot_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sf2m8 )
+{
+ // unscramble gfx
+ uint8_t *grom = memregion("gfx")->base();
+ uint8_t *urom = memregion("user2")->base();
+ int i = 0x480000, j = 0;
+
+ for (j = 0x20000; j < 0x80000; j+=2)
+ {
+ grom[i++] = urom[j];
+ grom[i++] = urom[j|0x100000];
+ grom[i++] = urom[j|0x000001];
+ grom[i++] = urom[j|0x100001];
+ grom[i++] = urom[j|0x080000];
+ grom[i++] = urom[j|0x180000];
+ grom[i++] = urom[j|0x080001];
+ grom[i++] = urom[j|0x180001];
+ }
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+void cps_state::kabuki_setup(void (*decode)(uint8_t *src, uint8_t *dst))
+{
+ m_decrypt_kabuki = std::make_unique<uint8_t[]>(0x8000);
+ uint8_t *rom = memregion("audiocpu")->base();
+ decode(rom, m_decrypt_kabuki.get());
+ membank("decrypted")->set_base(m_decrypt_kabuki.get());
+}
+
+DRIVER_INIT_MEMBER(cps_state,wof)
+{
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,dino)
+{
+ kabuki_setup(dino_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,punisher)
+{
+ kabuki_setup(punisher_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,slammast)
+{
+ kabuki_setup(slammast_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,pang3b)
+{
+ /* Pang 3 is the only non-QSound game to have an EEPROM. */
+ /* It is mapped in the CPS-B address range so probably is on the C-board. */
+ m_maincpu->space(AS_PROGRAM).install_readwrite_port(0x80017a, 0x80017b, "EEPROMIN", "EEPROMOUT");
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state,pang3)
+{
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ int A, src, dst;
+
+ for (A = 0x80000; A < 0x100000; A += 2)
+ {
+ /* only the low 8 bits of each word are encrypted */
+ src = rom[A / 2];
+ dst = src & 0xff00;
+ if ( src & 0x01) dst ^= 0x04;
+ if ( src & 0x02) dst ^= 0x21;
+ if ( src & 0x04) dst ^= 0x01;
+ if (~src & 0x08) dst ^= 0x50;
+ if ( src & 0x10) dst ^= 0x40;
+ if ( src & 0x20) dst ^= 0x06;
+ if ( src & 0x40) dst ^= 0x08;
+ if (~src & 0x80) dst ^= 0x88;
+ rom[A/2] = dst;
+ }
+
+ DRIVER_INIT_CALL(pang3b);
+}
+
+READ16_MEMBER(cps_state::ganbare_ram_r)
+{
+ uint16_t result = 0xffff;
+
+ if (ACCESSING_BITS_0_7)
+ result = (result & ~0x00ff) | m_m48t35->read(space, offset, 0xff);
+ if (ACCESSING_BITS_8_15)
+ result = (result & ~0xff00) | (m_mainram[offset] & 0xff00);
+
+ return result;
+}
+
+WRITE16_MEMBER(cps_state::ganbare_ram_w)
+{
+ COMBINE_DATA(&m_mainram[offset]);
+
+ if (ACCESSING_BITS_0_7)
+ m_m48t35->write(space, offset, data & 0xff, 0xff);
+}
+
+DRIVER_INIT_MEMBER(cps_state, ganbare)
+{
+ DRIVER_INIT_CALL(cps1);
+
+ /* ram is shared between the CPS work ram and the timekeeper ram */
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff0000, 0xffffff, read16_delegate(FUNC(cps_state::ganbare_ram_r),this), write16_delegate(FUNC(cps_state::ganbare_ram_w),this));
+}
+
+READ16_MEMBER(cps_state::dinohunt_sound_r)
+{
+ /*TODO: understand what's really going on here. According to MT05805;
+ "I think that the values written are only qsound leftovers (after a lot of 0xFF values,
+ there is the same qsound starting sequence, eg: 0x88, 0xFF, 0x0B, 0x00, 0x00, 0x00, ...)."*/
+ return 0xff;
+}
+
+DRIVER_INIT_MEMBER(cps_state,dinohunt)
+{
+ // is this shared with the new sound hw?
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xf18000, 0xf19fff, read16_delegate(FUNC(cps_state::dinohunt_sound_r), this));
+ m_maincpu->space(AS_PROGRAM).install_read_port(0xfc0000, 0xfc0001, "IN2"); ;
+ // the ym2151 doesn't seem to be used. Is it actually on the PCB?
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+WRITE16_MEMBER( cps_state::sf2m3_layer_w )
+{
+ cps1_cps_b_w(space,0x0a,data);
+}
+
+
+
+/*************************************************** Game Macros *****************************************************/
+
+GAME( 1988, forgottn, 0, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (World, newer)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A. but World "warning"
+GAME( 1988, forgottna, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (World)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A. but World "warning"
+GAME( 1988, forgottnu, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnu1, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnua, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. A)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnuaa, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, lostwrld, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, lostwrldo, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan Old Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ghouls, 0, cps1_10MHz, ghouls, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (World)", MACHINE_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
+GAME( 1988, ghoulsu, ghouls, cps1_10MHz, ghoulsu, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (USA)", MACHINE_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
+GAME( 1988, daimakai, ghouls, cps1_10MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan)", MACHINE_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs
+GAME( 1988, daimakair, ghouls, cps1_12MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs // 12MHz verified
+GAME( 1989, strider, 0, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, striderua, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, strideruc, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "bootleg (Capcom)", "Strider (USA, B-Board 90629B-3, buggy Street Fighter II conversion)", MACHINE_SUPPORTS_SAVE ) // various bugs even on PCB, see rom load
+GAME( 1989, striderj, strider, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, striderjr, strider, cps1_12MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, dynwar, 0, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 89624B-?)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
+GAME( 1989, dynwara, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 88622B-3)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
+GAME( 1989, dynwarj, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dynwarjr, dynwar, cps1_12MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, willow, 0, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (World)", MACHINE_SUPPORTS_SAVE ) // No "Warning" (c) Capcom U.S.A., genuine export ROM labels
+GAME( 1989, willowu, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, willowuo, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA Old Ver.)", MACHINE_SUPPORTS_SAVE ) // Japan "warning" but (c) Capcom U.S.A.
+GAME( 1989, willowj, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, unsquad, 0, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "U.N. Squadron (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, area88, unsquad, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, area88r, unsquad, cps1_12MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, ffight, 0, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffighta, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightu, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightu1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightua, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightub, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900424)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightuc, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900613)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj2, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900305)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj3, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900613)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightjh, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "bootleg", "Street Smart / Final Fight (Japan, hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941, 0, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World 900227)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, 1941r1, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941u, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (USA 900227)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941j, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercs, 0, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (World 900302)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, mercsu, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900608)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercsur1, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercsj, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Senjou no Ookami II (Japan 900302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mtwins, 0, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Mega Twins (World 900619)", MACHINE_SUPPORTS_SAVE ) // "ETC" - (c) Capcom U.S.A. but World "warning"
+GAME( 1990, chikij, mtwins, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Chiki Chiki Boys (Japan 900619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, msword, 0, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "OTHER COUNTRY"
+GAME( 1990, mswordr1, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900623)", MACHINE_SUPPORTS_SAVE ) // 23.06.1990 "OTHER COUNTRY"
+GAME( 1990, mswordu, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (USA 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "U.S.A."
+GAME( 1990, mswordj, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (Japan 900623)", MACHINE_SUPPORTS_SAVE ) // 23.06.1990 "JAPAN"
+GAME( 1990, cawing, 0, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901012)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, cawingr1, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901009)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, cawingu, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (USA 901012)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cawingj, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "U.S. Navy (Japan 901012)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, nemo, 0, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901130)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, nemor1, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901109)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, nemoj, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (Japan 901120)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2, 0, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910522)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2eb, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910214)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ed, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910318)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ee, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910228)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ua, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910206)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ub, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uc, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910306)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ud, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910318)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ue, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910228)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uf, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910411)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ug, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. G)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ui, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. I)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uk, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 911101)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2j, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 911210)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ja, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jc, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910306)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jf, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910411)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jh, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910522)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jl, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 920312)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ebbl, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2ebbl2, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2ebbl3, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2stt, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2rk, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (RK, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 920211 (pcb)
+GAME( 1991, sf2qp1, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II: The World Warrior (Quicken Pt-I, bootleg)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1991, sf2thndr, sf2, cps1_10MHz, sf2, cps_state, sf2thndr, ROT0, "bootleg", "Street Fighter II: The World Warrior (Thunder Edition, bootleg)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1991, 3wonders, 0, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910520)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, 3wondersr1, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910513)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, 3wondersu, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (USA 910520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wonder3, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Wonder 3 (Japan 910520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (bootleg)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
+GAME( 1991, 3wondersh, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (hack)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
+GAME( 1991, kod, 0, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910805)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, kodr1, kod, cps1_10MHz, kodr1, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910711)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, kodu, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (USA 910910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kodj, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 90629B-3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kodja, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 89625B-1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcomm, 0, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911202)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY"
+GAME( 1991, captcommr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911014)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY"
+GAME( 1991, captcommu, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (USA 910928)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommj, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 911202)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommjr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 910928)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommb, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "bootleg", "Captain Commando (bootleg)", MACHINE_SUPPORTS_SAVE ) // 911014 - based on World version
+GAME( 1991, knights, 0, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (World 911127)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, knightsu, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (USA 911127)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsj, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 91634B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsja, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 89625B-1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ce, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920513)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2ceea, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920313)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920313)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceub, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920513)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceuc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceja, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920322)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2cejb, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920513)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2cejc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2bhh, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Hung Hsi, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb2, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2rb3, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (V004, bootleg)", MACHINE_SUPPORTS_SAVE ) // 102092 !!! - based on (heavily modified) World version
+GAME( 1992, sf2acc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2acca, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2accp2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2amf, sf2ce, cps1_12MHz, sf2amf, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Alpha Magic-F, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2amf2, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (L735 Test Rom, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2dkot2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", MACHINE_SUPPORTS_SAVE ) // 902140 !!! - based on USA version
+GAME( 1992, sf2ceblp, sf2ce, cps1_10MHz, sf2, cps_state, sf2ceblp, ROT0, "bootleg", "Street Fighter II': Champion Edition (protected bootleg on non-dash board)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2cebltw, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition ('Taiwan' bootleg with PAL)", MACHINE_SUPPORTS_SAVE ) // 'Taiwan'
+GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2m2, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M2, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m3, sf2ce, sf2m3, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2m4, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M4, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on Japan version
+GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M5, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M6, bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
+GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M7, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m8, sf2ce, sf2m3, sf2, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2m10, sf2ce, sf2m10, sf2hack, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M10, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
+GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, cworld2j, 0, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, cworld2ja, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, cworld2jb, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varth, 0, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920714)", MACHINE_SUPPORTS_SAVE ) // "ETC" // 12MHz verified
+GAME( 1992, varthr1, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920612)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, varthu, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom (Romstar license)", "Varth: Operation Thunderstorm (USA 920612)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varthj, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan 920714)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varthjr, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan Resale Ver. 920714)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, qad, 0, cps1_12MHz, qad, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (USA 920701)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1994, qadjr, qad, cps1_12MHz, qadjr, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wof, 0, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921031)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, wofr1, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921002)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, wofu, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (USA 921031)", MACHINE_SUPPORTS_SAVE ) // World "warning"
+GAME( 1992, wofa, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Sangokushi II (Asia 921005)", MACHINE_SUPPORTS_SAVE ) // World "warning"
+GAME( 1992, wofj, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, wofhfh, wof, wofhfh, wofhfh, cps_state, cps1, ROT0, "bootleg", "Huo Feng Huang (Chinese bootleg of Sangokushi II)", MACHINE_SUPPORTS_SAVE ) // 921005 - based on Asia version
+GAME( 1992, sf2hf, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (World 921209)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2hfu, sf2hf, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (USA 921209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2hfj, sf2hf, cps1_12MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II' Turbo: Hyper Fighting (Japan 921209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dino, 0, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (World 930201)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, dinou, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (USA 930201)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinoj, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped
+GAME( 1993, punisher, 0, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (World 930422)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, punisheru, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (USA 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Hispanic 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherj, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Japan 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherbz, punisher, wofhfh, punisherbz, cps_state, cps1, ROT0, "bootleg", "Biaofeng Zhanjing (Chinese bootleg of The Punisher)", MACHINE_SUPPORTS_SAVE ) // (c) 2002, they ripped the sound from Final Fight!
+GAME( 1993, slammast, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (World 930713)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, slammastu, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (USA 930713)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mbomberj, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber: The Body Explosion (Japan 930713)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mbombrd, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Ultimate Team Battle (World 931206)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, mbombrdj, mbombrd, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Heat Up Warriors (Japan 931206)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pnickj, 0, cps1_12MHz, pnickj, cps_state, cps1, ROT0, "Compile (Capcom license)", "Pnickies (Japan 940608)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, qtono2j, 0, cps1_12MHz, qtono2j, cps_state, cps1, ROT0, "Capcom", "Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, megaman, 0, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, USA 951006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, megamana, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, Asia 951006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rockmanj, megaman, cps1_12MHz, rockmanj, cps_state, cps1, ROT0, "Capcom", "Rockman: The Power Battle (CPS1, Japan 950922)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, ganbare, 0, ganbare, ganbare, cps_state, ganbare, ROT0, "Capcom", "Ganbare! Marine Kun (Japan 2K0411)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pokonyan, 0, cps1_10MHz, pokonyan, cps_state, cps1, ROT0, "Capcom", "Pokonyan! Balloon (Japan 940322)", MACHINE_SUPPORTS_SAVE ) // 2002-10-24 was on the ROM labels, 940322 on the startup screen... take your pick
+
+/* Games released on CPS-1 hardware by Mitchell */
+
+GAME( 1995, pang3, 0, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950601)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3r1, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950511)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3j, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3b, pang3, pang3, pang3b, cps_state, pang3b, ROT0, "bootleg", "Pang! 3 (bootleg)", MACHINE_SUPPORTS_SAVE ) // 950511 - based on Euro version
+
+/* Home 'CPS Changer' Unit */
+
+CONS( 1994, wofch, 0, 0, qsound, wofch, cps_state, wof, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Japan 951020)", MACHINE_SUPPORTS_SAVE )
+// are these 2 legit sets, or did somebody region hack it?
+CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", MACHINE_SUPPORTS_SAVE )
+
+// Ken Sei Mogura: Street Fighter II - see kenseim.c
+// HBMAME
+#include "cps1mis.cpp"
diff --git a/docs/release/src/hbmame/drivers/cps1mis.cpp b/docs/release/src/hbmame/drivers/cps1mis.cpp
new file mode 100644
index 00000000000..177d94683da
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cps1mis.cpp
@@ -0,0 +1,6753 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*******************************************************************************************************************
+
+ CPS-1 driver for hacks and bootlegs
+
+Issues:
+
+- knightsh
+ the title screen is garbage.
+
+- kodh
+ title, problem with placement of the letters.
+
+- sk2h1, sk2h2, sk2h3, sk2h22, sk2h31, sk2h32, sk2h33, sk2h34
+ setup screen is blank.
+ map doesn't show first time around prior to demo 1, and never before demo 3.
+ priority issue, easily noticed on 3rd demo where actors are in the wagon instead of behind it.
+
+- sk2h22, sk2h31, sk2h32, sk2h33, sk2h34, sk2h35
+ coin 3, start 3, 3rd player not working.
+
+- wofjcn
+ chinese language rom isn't working. Whatever is tried breaks stuff.
+
+
+*******************************************************************************************************************/
+
+WRITE16_MEMBER( cps_state::dinoh_sound_command_w )
+{
+ /* Pass the Sound Code to the Q-Sound Shared Ram */
+ m_qsound_sharedram1[1] = data;
+}
+
+WRITE16_MEMBER( cps_state::daimakb_palctrl_w )
+{
+ m_cps_b_regs[0x30 / 2] = data;
+}
+
+WRITE16_MEMBER(cps_state::daimakb_layer_w)
+{
+ if (offset == 0x00)
+ m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
+ else
+ if (offset == 0x01)
+ m_cps_a_regs[0x0c / 2] = data - 0x40; /* scroll 1x */
+ else
+ if (offset == 0x02)
+ {
+ m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
+ m_cps_a_regs[0x20 / 2] = data; /* row scroll start */
+ }
+ else
+ if (offset == 0x03)
+ m_cps_a_regs[0x10 / 2] = data - 0x40; /* scroll 2x */
+ else
+ if (offset == 0x04)
+ m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
+ else
+ if (offset == 0x05)
+ m_cps_a_regs[0x14 / 2] = data - 0x40; /* scroll 3x */
+ else
+ if (offset == 0x06)
+ {
+ switch (data)
+ {
+ case 0x0000:
+ data = (1 << 12) | (2 << 8) | (3 << 6);
+ break;
+ case 0x0001:
+ data = (1 << 12) | (3 << 6);
+ break;
+ case 0x0002:
+ data = (3 << 12) | (1 << 6);
+ break;
+ case 0x0006:
+ data = 0;
+ break;
+ default:
+ data = 0;
+ printf ("Unknown control word = %X\n",data);
+ }
+ m_cps_b_regs[0x26 / 2] = data;
+ }
+}
+
+
+
+/**************************************************************************
+
+ Address Maps
+
+***************************************************************************/
+
+static ADDRESS_MAP_START( daimakb_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800166, 0x800171) AM_WRITENOP // not used
+ AM_RANGE(0xe00000, 0xe0003f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") // dummy region
+ AM_RANGE(0x880000, 0x880001) AM_WRITE(daimakb_palctrl_w)
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98000d) AM_WRITE(daimakb_layer_w)
+ AM_RANGE(0x990000, 0x993fff) AM_WRITENOP // bootleg sprites, not needed
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sk2h35_map, AS_PROGRAM, 16, cps_state )
+/* unknown addresses (all write): 930008-930807. No 3rd player controls. NVRAM doesn't work */
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x930008, 0x930807) AM_WRITENOP
+ AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
+ AM_RANGE(0xf1ce74, 0xf1ce75) AM_WRITENOP
+ AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cps1frog_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* Output ports */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sk2h1q_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x88000d) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x88000e, 0x88000f) AM_WRITENOP
+ AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
+ AM_RANGE(0x890000, 0x890001) AM_WRITENOP
+ AM_RANGE(0x8bfff6, 0x8bfff9) AM_READNOP /* unknown */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sk2h3_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x88000d) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x88000e, 0x88000f) AM_WRITE(cps1_soundlatch_w)
+ AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
+ AM_RANGE(0x890000, 0x890001) AM_WRITENOP
+ AM_RANGE(0x8bfff6, 0x8bfff9) AM_READNOP /* unknown */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sk2h31q_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* Output ports */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x880007) AM_WRITENOP // soundlatch on non-qsound hw
+ AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x880e7e, 0x880e7f) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
+ AM_RANGE(0x890000, 0x890001) AM_WRITENOP
+ AM_RANGE(0x8bfff6, 0x8bfff9) AM_READNOP /* unknown */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sk2h31_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* Output ports */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x880007) AM_WRITE(cps1_soundlatch_w)
+ AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x880e7e, 0x880e7f) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
+ AM_RANGE(0x890000, 0x890001) AM_WRITENOP
+ AM_RANGE(0x8bfff6, 0x8bfff9) AM_READNOP /* unknown */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( wofsf2_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1")
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r)
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf18000, 0xf19fff) AM_RAM
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ(cps1_in2_r) /* Player 3 controls */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
+ADDRESS_MAP_END
+
+/********************************************************************
+
+ Inputs and dips
+
+*********************************************************************/
+
+static INPUT_PORTS_START( dinohz )
+ PORT_INCLUDE( dino )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( knightsh )
+ PORT_INCLUDE( knights )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( kodh )
+ PORT_INCLUDE( kod )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( pnicku )
+ PORT_INCLUDE( pnickj )
+ PORT_MODIFY("DSWA")
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW(A):1,2,3")
+ PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )
+
+ PORT_DIPNAME( 0x10, 0x10, "Chuters" ) PORT_DIPLOCATION("SW(A):5")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x10, "1" )
+
+ PORT_MODIFY("DSWC")
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sk2h3 )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWA")
+ PORT_DIPNAME( 0x03, 0x00, "Play Mode" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x03, "Tournament" )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWB")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWC")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sk2h21 )
+ PORT_INCLUDE( wof )
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+
+/***********************************************************
+ INPUT PORTS, DIPs
+***********************************************************/
+
+static INPUT_PORTS_START( cps1frog )
+ PORT_START ("IN0")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWA")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWB")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWC")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sk2h1 )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWA")
+ PORT_DIPNAME( 0x03, 0x00, "Play Mode" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x03, "Tournament" )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWB")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWC")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sk2h31 )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWA") /* there are lots of other combinations, but this covers the useful ones */
+ PORT_DIPNAME( 0xff, 0xff, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0xde, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0xff, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0xfe, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0xfd, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0xfc, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x7f, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0xdf, DEF_STR( 1C_8C ) )
+
+ PORT_START ("DSWB") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWC") /* (not used, EEPROM) */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+/********************************************************************
+*
+* Machine Driver macro
+* ====================
+*
+*
+********************************************************************/
+
+
+static MACHINE_CONFIG_DERIVED( wofsf2, wofhfh )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(wofsf2_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( daimakb, cps1_10MHz)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(daimakb_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sk2h3, wofhfh)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sk2h3_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sk2h31, wofhfh)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sk2h31_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sk2h35, qsound)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sk2h35_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( cps1frog, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz ) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(cps1frog_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ /* audio CPU */
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(sub_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, cps1)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz/2, 518, 64, 448, 259, 16, 240) /* guess: assume that CPS-1 uses the same exact timings as CPS-2 */
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sk2h1q, cps1frog )
+
+ /* basic machine hardware */
+ MCFG_CPU_REPLACE("maincpu", M68000, XTAL_12MHz ) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(sk2h1q_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_REPLACE("audiocpu", Z80, XTAL_8MHz) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(qsound_sub_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(qsound_decrypted_opcodes_map)
+ MCFG_CPU_PERIODIC_INT_DRIVER(cps_state, irq0_line_hold, 250) /* ?? */
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, qsound)
+
+ MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
+
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("mono")
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_DEVICE_REMOVE("2151")
+ MCFG_DEVICE_REMOVE("oki")
+
+ MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sk2h31q, sk2h1q )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sk2h31q_map)
+MACHINE_CONFIG_END
+
+
+/**********************************************************************
+
+ Roms
+
+***********************************************************************/
+
+ROM_START( 3wondrud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "3wondrud.30", 0x00000, 0x20000, CRC(b0953ff4) SHA1(79d0b68948a9b5be8eacd33810ddcf4fa08dbe71) )
+ ROM_LOAD16_BYTE( "3wondrud.35", 0x00001, 0x20000, CRC(7695e8c6) SHA1(f78e7cb1098d77ce84d58a0d4509a77f5c483a77) )
+ ROM_LOAD16_BYTE( "3wondrud.31", 0x40000, 0x20000, CRC(8cf00a3c) SHA1(dceb5bccf7c96802e7c228ea52f82fbb49388e0d) )
+ ROM_LOAD16_BYTE( "3wondrud.36", 0x40001, 0x20000, CRC(b649ad19) SHA1(f91dad60a583a46f80e71bb23bfd051b3ed3fbe5) )
+ ROM_LOAD16_BYTE( "rt_28a.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) )
+ ROM_LOAD16_BYTE( "rt_33a.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) )
+ ROM_LOAD16_BYTE( "rtu_29a.10f", 0xc0000, 0x20000, CRC(37ba3e20) SHA1(a128b1a17639b06a4fd8acffe0357f1dbd1d4fe9) )
+ ROM_LOAD16_BYTE( "rtu_34a.10h", 0xc0001, 0x20000, CRC(f99f46c0) SHA1(cda24a6baa3f861e7078fb2fa91328cc1cddc866) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "rt-5m.7a", 0x000000, 0x80000, CRC(86aef804) SHA1(723927ef3bf992d12395c52db051ece7bf57d5e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-7m.9a", 0x000002, 0x80000, CRC(4f057110) SHA1(b7d35c883a74cf4bfb242d9f15a0e40ed1ec111f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-1m.3a", 0x000004, 0x80000, CRC(902489d0) SHA1(748ba416a8b9343059a3e7d8b93f02162feb1d0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-3m.5a", 0x000006, 0x80000, CRC(e35ce720) SHA1(6c1a87a1f819bdc20408b5a7823cf35a79d34110) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-6m.8a", 0x200000, 0x80000, CRC(13cb0e7c) SHA1(e429d594d9a7ff4cc6306e2796a9d6ad0fa25569) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-8m.10a", 0x200002, 0x80000, CRC(1f055014) SHA1(d64f5be9bb2ef761ca9b2e797dbc3554cf996a79) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-2m.4a", 0x200004, 0x80000, CRC(e9a034f4) SHA1(deb4cb5886705380b57d4fe9b9bf3c032e1d6227) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rt-4m.6a", 0x200006, 0x80000, CRC(df0eea8b) SHA1(5afa05654cccb0504bd44569d42fd68f08fd172f) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) )
+ ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "3wondrud.key", 0x000000, 0x000080, CRC(5066be6f) SHA1(a514ffb7561b1d563382c4c69e24c81574902081) )
+ROM_END
+
+
+ROM_START( captcocc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP("captcocc.23", 0x000000, 0x80000, CRC(1e5c9f79) SHA1(09f7356b5badae26f24a2afac2cbe0d8e0c9481a) )
+ ROM_LOAD16_WORD_SWAP("captcocc.22", 0x080000, 0x80000, CRC(6ea50796) SHA1(62d0cd0203c2bb75bd0b69e3b25a492c37658da4) )
+ ROM_LOAD16_BYTE( "cc_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) )
+ ROM_LOAD16_BYTE( "cc_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+ROM_END
+
+ROM_START( captcomc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cc23", 0x000000, 0x80000, CRC(a5e73e49) SHA1(7bb75fa0e1122a85a421c50607c0ad57a387783e) )
+ ROM_LOAD16_WORD_SWAP( "cc22", 0x080000, 0x80000, CRC(919777c5) SHA1(2bd9b1527e8486ae89ddcdb0694c63c5859080b6) )
+ ROM_LOAD16_BYTE( "cc24", 0x100000, 0x20000, CRC(f3d6f147) SHA1(937822148c0f6f295d468024ce7887ee0353e669) )
+ ROM_LOAD16_BYTE( "cc28", 0x100001, 0x20000, CRC(f1c9bf8a) SHA1(545f494106ccce6ccbbe6fa042cf0ee6df03e8dc) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "gfx_05.rom", 0x200000, 0x80000, CRC(e4282bc0) SHA1(fe6012a8afcaec5747194bedfa73284bb28300a4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "gfx_07.rom", 0x200002, 0x80000, CRC(8b0ef34c) SHA1(13a696856432b2f345cd2b2059e95179c78bd70a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "gfx_06.rom", 0x200004, 0x80000, CRC(2d7bee50) SHA1(a25bcfa99c4dda52469f7dc8fec24287c97deb84) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "gfx_08.rom", 0x200006, 0x80000, CRC(0106bf6a) SHA1(8e23418c58c4ffb8dd4dac93b92b23c406d60a62) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "captcomm.key", 0x000000, 0x000080, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) )
+ROM_END
+
+ROM_START( captcomh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cce_23dh.rom", 0x000000, 0x80000, CRC(d97f921c) SHA1(451ab11ddd845ecddeaf60b3c46903d784c3389c) )
+ ROM_LOAD16_WORD_SWAP( "cc_22d.rom", 0x080000, 0x80000, CRC(a91949b7) SHA1(c027af89cd8f6bd3aaed61114582322c42e0c74f) )
+ ROM_LOAD16_BYTE( "cc_24d.rom", 0x100000, 0x20000, CRC(680e543f) SHA1(cfa963ab6329f615807db213bf53841860ed3149) )
+ ROM_LOAD16_BYTE( "cc_28d.rom", 0x100001, 0x20000, CRC(8820039f) SHA1(d68ce0b34ade75b8c5214168b2b1e0cdff45cd52) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "captcomm.key", 0x000000, 0x000080, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) )
+ROM_END
+
+ROM_START( captcoud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP("captcoud.23", 0x000000, 0x80000, CRC(1d338c25) SHA1(4aba7e5a78bf20d887b3493e0d2a83098f877f9f) )
+ ROM_LOAD16_WORD_SWAP("captcoud.22", 0x080000, 0x80000, CRC(c5310f13) SHA1(97a3751630f10cf67515200ce435c34fda1d9a52) )
+ ROM_LOAD16_BYTE( "ccu_24b.9e", 0x100000, 0x20000, CRC(84ff99b2) SHA1(5b02c91f3d0f8fb46db9596136b683f5a22dc15f) )
+ ROM_LOAD16_BYTE( "ccu_28b.9f", 0x100001, 0x20000, CRC(fbcec223) SHA1(daf484baece5b3a11f3dcabb758b8bdd736a1fb6) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "captcoud.key", 0x000000, 0x000080, CRC(6a4c8ad9) SHA1(56912fc3387cf977e602d3e8dad31b64dadc6b4a) )
+ROM_END
+
+ROM_START( captcovs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP("captcovs.23", 0x000000, 0x80000, CRC(c1ad4e2a) SHA1(0b7843fec92261b2e727147aa6df60f4b5fc8fc7) )
+ ROM_LOAD16_WORD_SWAP("captcovs.22", 0x080000, 0x80000, CRC(8e19a05a) SHA1(b60dd9b1693630e9e3fe73c1b3f8a026945fb23d) )
+ ROM_LOAD16_BYTE( "cc_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) )
+ ROM_LOAD16_BYTE( "cc_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) )
+ ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) )
+ROM_END
+
+
+ROM_START( cps1demo )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "cd30-36.bin", 0x00000, 0x20000, CRC(5eb617d6) SHA1(9d4656d2b29244eb2a01058f5b80752d94065a6e) )
+ ROM_LOAD16_BYTE( "cd35-42.bin", 0x00001, 0x20000, CRC(1f1c0a62) SHA1(12d1950921fff6d52ae969a4c7357f4e7bc28d1e) )
+ ROM_LOAD16_WORD_SWAP( "ff32-32m.bin", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "cd05-05m.bin", 0x000000, 0x80000, CRC(35dc6153) SHA1(7b7747d4e6a78c0933b6ea96fa6027c2c2c50682) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd07-07m.bin", 0x000002, 0x80000, CRC(baf08a38) SHA1(82559384399c5dfb8979a2e91d585549357ebb52) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd01-01m.bin", 0x000004, 0x80000, CRC(3ad8e790) SHA1(a371edc81a48903d13ed8938dca450dab986b413) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd03-03m.bin", 0x000006, 0x80000, CRC(fb5186f3) SHA1(b20031c01b6be2a4987553c0ab19105714bf9299) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "ff09-09.bin", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "ff18-18.bin", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff19-19.bin", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "cps1demo.key", 0x000000, 0x000080, CRC(b0e5ee2d) SHA1(8189f48892fff7dc4fff4e765448e0ea2cfba4bc) )
+ROM_END
+
+ROM_START( cps1frog )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "frog30-36.bin", 0x00000, 0x20000, CRC(8eb8ddbe) SHA1(298c72b3eb6f2721f204cf80ec4a7c52dc8b23fd) )
+ ROM_LOAD16_BYTE( "frog35-42.bin", 0x00001, 0x20000, CRC(acb5a988) SHA1(7264bb94f7bacef9bf03713d0a6d32e81ca1f8e2) )
+ ROM_LOAD16_WORD_SWAP( "frog32-32m.bin", 0x80000, 0x80000, CRC(75660aac) SHA1(6a521e1d2a632c26e53b83d2cc4b0edecfc1e68c) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "frog05-05m.bin", 0x000000, 0x80000, CRC(7bbc4b54) SHA1(5a40bd85ce71dc733071732a8306d648b3e6dd39) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "frog07-07m.bin", 0x000002, 0x80000, CRC(0beadd80) SHA1(f43d6ad936b8ffa242c17d8da26bf2e2a12d85a8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "frog01-01m.bin", 0x000004, 0x80000, CRC(f84d02bb) SHA1(b89322ab65a3b3e8202c27af62de2b182a4ed2e9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "frog03-03m.bin", 0x000006, 0x80000, CRC(d784a5b0) SHA1(8891bb8fc39f51db200c51e2a65961c351d655c2) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "frog09-09.bin", 0x00000, 0x08000, CRC(3ac7fb5c) SHA1(01057078b67dc82d80403533a3dca3deb95f166c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "frog18-18.bin", 0x00000, 0x20000, CRC(65d1ef07) SHA1(0bc2dbf5053430f659d64d1b287799bb5cc4db65) )
+ ROM_LOAD( "frog19-19.bin", 0x20000, 0x20000, CRC(7ee8cdcd) SHA1(67dfd19f3eb3649d6f3f6631e44d0bd36b8d8d19) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "cps1frog.key", 0x000000, 0x000080, CRC(3adeff30) SHA1(5d242a4e5edcf47905fb50d767d41c2977bfd78b) )
+ROM_END
+
+ROM_START( cps1tests )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cps1tests.bin", 0x000000, 0x80000, CRC(938c72fe) SHA1(0a48661d5638ed6b841f646ebb9f948a01b8e2d3) )
+ ROM_LOAD16_WORD_SWAP( "s92_22b.7f", 0x080000, 0x80000, CRC(2bbe15ed) SHA1(a8e2edef62fa99c5ef701b28bfb6bc42f3af183d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( cps1testsa )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cps1testsa.bin", 0x000000, 0x80000, CRC(8c24eb40) SHA1(0d9ebc078dd22e3b45eaf872d90eb973eb07aeeb) )
+ ROM_LOAD16_WORD_SWAP( "s92_22b.7f", 0x080000, 0x80000, CRC(2bbe15ed) SHA1(a8e2edef62fa99c5ef701b28bfb6bc42f3af183d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( cps1testm )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cps1testm.bin", 0x000000, 0x80000, CRC(35a39adb) SHA1(dcb93102108a02f1f169833cfd355bd492cd9065) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_22b.7f", 0x080000, 0x80000, CRC(708268c4) SHA1(554e011cad285b95dd1b6aa19be61b2413662a3a) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_21a.6f", 0x100000, 0x80000, CRC(4376ea95) SHA1(7370ceffca513aa9f68a74f6869d561476589200) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "rcm_09.11a", 0x00000, 0x08000, CRC(22ac8f5f) SHA1(d1441d880f98034645cb4fcecd7bb746bde638af) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "rcm_18.11c", 0x00000, 0x20000, CRC(80f1f8aa) SHA1(4a5b7b2a6941ad68da7472c63362c7bcd353fa54) )
+ ROM_LOAD( "rcm_19.12c", 0x20000, 0x20000, CRC(f257dbe1) SHA1(967def6b6f93039dbc46373caabeb3301577be75) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "megaman.key", 0x000000, 0x000080, CRC(9c89eb62) SHA1(e67a3ed58f82875cff4861c14bd701b54dcc111f) )
+ROM_END
+
+ROM_START( cps1testma )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cps1testma.bin", 0x000000, 0x80000, CRC(ca31eddc) SHA1(ee9841fc398de4d8dc083bfaf0d6e2b488fc8779) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_22b.7f", 0x080000, 0x80000, CRC(708268c4) SHA1(554e011cad285b95dd1b6aa19be61b2413662a3a) )
+ ROM_LOAD16_WORD_SWAP( "rcmu_21a.6f", 0x100000, 0x80000, CRC(4376ea95) SHA1(7370ceffca513aa9f68a74f6869d561476589200) )
+
+ ROM_REGION( 0x800000, "gfx", 0 )
+ ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "rcm_09.11a", 0x00000, 0x08000, CRC(22ac8f5f) SHA1(d1441d880f98034645cb4fcecd7bb746bde638af) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "rcm_18.11c", 0x00000, 0x20000, CRC(80f1f8aa) SHA1(4a5b7b2a6941ad68da7472c63362c7bcd353fa54) )
+ ROM_LOAD( "rcm_19.12c", 0x20000, 0x20000, CRC(f257dbe1) SHA1(967def6b6f93039dbc46373caabeb3301577be75) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "megaman.key", 0x000000, 0x000080, CRC(9c89eb62) SHA1(e67a3ed58f82875cff4861c14bd701b54dcc111f) )
+ROM_END
+
+
+ROM_START( daimakb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "dmjb2.bin", 0x00000, 0x80000, CRC(7d5f9f84) SHA1(b334b3af610892ef4efe4764017659b8541a10c6) )
+ ROM_LOAD16_BYTE( "dmjb1.bin", 0x00001, 0x80000, CRC(9b945cc4) SHA1(dfdfabfd8ef06cee6be27350f79c5db4c6ace611) )
+
+ ROM_REGION( 0x300000, "gfx", 0 )
+ ROMX_LOAD( "dm_02.4b", 0x000000, 0x20000, CRC(8b98dc48) SHA1(e827881e2ba5cccd907d1692a1945c1b75d46f12) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_01.4a", 0x000001, 0x20000, CRC(80896c33) SHA1(20ffc427c596828005e34cdd8e4efa0d332262e9) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_10.9b", 0x000002, 0x20000, CRC(c2e7d9ef) SHA1(52aae6cf373f8c7150833047be28b74dd5eb5af6) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_09.9a", 0x000003, 0x20000, CRC(c9c4afa5) SHA1(34571e3e49c86b87fa34eefbc5f9fe258aba5f1a) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_18.5e", 0x000004, 0x20000, CRC(1aa0db99) SHA1(69ac302b2f6f0b96f78cb57b0b4cdae464086262) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_17.5c", 0x000005, 0x20000, CRC(dc6ed8ad) SHA1(1ffc4a48a7ff9b542ab6f63a60bea3c1a7a6e63b) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_30.8h", 0x000006, 0x20000, CRC(d9d3f8bd) SHA1(6c6853a384f8d60ca46a0607fd47c76a83700fba) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_29.8f", 0x000007, 0x20000, CRC(49a48796) SHA1(76c18c684dba4aa91ee6caae0f38fe3e1cc50832) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_04.5b", 0x100000, 0x20000, CRC(a4f4f8f0) SHA1(edca0f61b40a18afe279f7007c233064130cfb4f) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_03.5a", 0x100001, 0x20000, CRC(b1033e62) SHA1(547fc281dd9e7a74ac86c3692508c7bde9b6167b) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_12.10b", 0x100002, 0x20000, CRC(10fdd76a) SHA1(aee774d6323292799dff7a30ef9559c92fe5507a) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_11.10a", 0x100003, 0x20000, CRC(9040cb04) SHA1(b32e9056fc20a5162868eade10f3ef5efc167a28) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_20.7e", 0x100004, 0x20000, CRC(281d0b3e) SHA1(70e1813de184ad0ec164145b7b843b5e387494e3) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_19.7c", 0x100005, 0x20000, CRC(2623b52f) SHA1(fc4200924452bfbff687934782398ed345dc0aa0) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_32.9h", 0x100006, 0x20000, CRC(99692344) SHA1(67dc70618568b7c0adcb00a612aaf5501f6c8c0f) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_31.9f", 0x100007, 0x20000, CRC(54acb729) SHA1(d1fca43db36253fd19db4337c49272a6cadff597) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_06.7b", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_05.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_14.11b", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_13.11a", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_22.8e", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_21.8c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_26.10e", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_25.10c", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_08.8b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_07.8a", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_16.12b", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_15.12a", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_24.9e", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_23.9c", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_28.11e", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) )
+ ROMX_LOAD( "dm_27.11c", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "dm_37.13c", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) // to keep validation quiet
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "daimakb.key", 0x000000, 0x000080, CRC(c72cad61) SHA1(9036e06c84ff9189a83acd50a703fb6560ce5e98) )
+ROM_END
+
+
+ROM_START( dino08h2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dino08h2.23", 0x000000, 0x80000, CRC(39ebeee2) SHA1(b48c3174e4ca26517958b3e58a3a693ce4e9ee88) )
+ ROM_LOAD16_WORD_SWAP( "dino08h2.22", 0x080000, 0x80000, CRC(09307e79) SHA1(cff0af94c6118a852351a7b624db65963c91f577) )
+ ROM_LOAD16_WORD_SWAP( "dino08h2.21", 0x100000, 0x80000, CRC(c2a0f051) SHA1(57e4a569824fb2a9d726ba610d13e451ab0b36cb) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dino08h3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dino08h3.23", 0x000000, 0x80000, CRC(642a2380) SHA1(79d9f427740d7f86b81f560e71636097d10cccf1) )
+ ROM_LOAD16_WORD_SWAP( "dino08h3.22", 0x080000, 0x80000, CRC(7a3c6b73) SHA1(e7f75c286ced541d4d6e399a54fa39fc1a85773f) )
+ ROM_LOAD16_WORD_SWAP( "dino08h3.21", 0x100000, 0x80000, CRC(3383646e) SHA1(f3d220e79cb8f86ba799580541e790d9a1d2cdf5) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dino08hp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dino08hp.23", 0x000000, 0x80000, CRC(394826e3) SHA1(7b295e263ab7f38a57a118de0f4308debfe14591) )
+ ROM_LOAD16_WORD_SWAP( "dino08hp.22", 0x080000, 0x80000, CRC(a4894b10) SHA1(6c6d4319af544383007190cfe8835189089e4ac3) )
+ ROM_LOAD16_WORD_SWAP( "dino08h2.21", 0x100000, 0x80000, CRC(c2a0f051) SHA1(57e4a569824fb2a9d726ba610d13e451ab0b36cb) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinob ) // program same as dinopic in mame, but this one has working sound
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(13dfeb08) SHA1(cd2f9dd64f4fabe93901247e36dff3763169716d) )
+ ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(96dfcbf1) SHA1(a8bda6edae2c1b79db7ae8a8976fd2457f874373) )
+ ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x80000, CRC(0e4058ba) SHA1(346f9e34ea53dd1bf5cdafa1e38bf2edb09b9a7f) )
+ ROM_LOAD16_BYTE( "7.bin", 0x100000, 0x80000, CRC(6133f349) SHA1(d13af99910623f62c090d25372a2253dbc2f8cbe) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "4.bin", 0x000000, 0x40000, CRC(f3c2c98d) SHA1(98ae51a67fa4159456a4a205eebdd8d1775888d1), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000 )
+ ROMX_LOAD( "8.bin", 0x000001, 0x40000, CRC(d574befc) SHA1(56482e7a9aa8439f30e3cf72311495ce677a083d), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000 )
+ ROMX_LOAD( "9.bin", 0x000002, 0x40000, CRC(55ef0adc) SHA1(3b5551ae76ae80882d37fc70a1031a57885d6840), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000 )
+ ROMX_LOAD( "6.bin", 0x000003, 0x40000, CRC(cc0805fc) SHA1(c512734c28b878a30a0de249929f69784d5d77a1), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000 )
+ ROMX_LOAD( "13.bin", 0x200000, 0x40000, CRC(1371f714) SHA1(d2c98096fab08e3d4fd2482e6ebfc970ead656ee), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000 )
+ ROMX_LOAD( "12.bin", 0x200001, 0x40000, CRC(b284c4a7) SHA1(166f571e0afa115f8e38ba427b40e30abcfd70ee), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000 )
+ ROMX_LOAD( "11.bin", 0x200002, 0x40000, CRC(b7ad3394) SHA1(58dec34d9d991ff2817c8a7847749716abae6c77), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000 )
+ ROMX_LOAD( "10.bin", 0x200003, 0x40000, CRC(88847705) SHA1(05dc90067921960e417b7436056a5e1f86abaa1a), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000 )
+
+ ROM_REGION( 0x80000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "1.bin", 0x00000, 0x80000, CRC(7d921309) SHA1(d51e60e904d302c2516b734189e141aa171b2b82) )
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dinob.key", 0x000000, 0x000080, CRC(171140c4) SHA1(d1db4e37e22fa6ae03c2bca4fdb698399d98c15f) )
+ROM_END
+
+ROM_START( dinobt )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinobt.23", 0x000000, 0x80000, CRC(3b1ed744) SHA1(7f9e062f97ef497c8993f574a3a51ae9e4e3e4f6) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinobtpp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinobtpp.23", 0x000000, 0x80000, CRC(41f954c9) SHA1(494ca6b9a5df7c9f491e54e45da41b2dcb4936a9) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinocgba )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinocgba.23", 0x000000, 0x80000, CRC(7545d8b0) SHA1(b2400f558753e2c5d26a20ed94aff63d96424d1b) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinocgbb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinocgbb.23", 0x000000, 0x80000, CRC(2afc047c) SHA1(2d8831ae1faed2c8393db95835e157326a00f3f1) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinocgbc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinocgbc.23", 0x000000, 0x80000, CRC(d7be3ebd) SHA1(0af400aa73b93908efe7e81f187ad0809b36593b) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinoeh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinoeh.23", 0x000000, 0x80000, CRC(a6b88364) SHA1(71d2d66df77ba3cc856c2ecd317f4be122ed1feb) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinoex )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinoex.23", 0x000000, 0x80000, CRC(c871b733) SHA1(0c2030a9ca0be8b14edbc4f2ae44184ab81b5e03) )
+ ROM_LOAD16_WORD_SWAP( "dinoex.22", 0x080000, 0x80000, CRC(b503e1ad) SHA1(73e53061b01940a9deb13c0ff5d874b4a8380f15) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dinoex.key", 0x000000, 0x000080, CRC(6c097c88) SHA1(a8170ace800e96ec29fbef22f5fdc45c7f5b516b) )
+ROM_END
+
+ROM_START( dinoh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cda_23h.rom", 0x000000, 0x80000, CRC(8e2a9cf0) SHA1(01111582e579bd3b43b52d0e0c445c32fe5e053b) )
+ ROM_LOAD16_WORD_SWAP( "cda_22h.rom", 0x080000, 0x80000, CRC(f72cd219) SHA1(a3f580bd328b54d2546ae7e94262c1a706d27172) )
+ ROM_LOAD16_WORD_SWAP( "cda_21h.rom", 0x100000, 0x80000, CRC(bc275b76) SHA1(1f7f7533b4ccb511dc479f531d9d6740d3ca6712) )
+ ROM_LOAD16_WORD_SWAP( "cda_20h.rom", 0x180000, 0x80000, CRC(8987c975) SHA1(3fd856805d627f855f72acc7aacc2e8ecf0f12bd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dinoh.key", 0x000000, 0x000080, CRC(67862673) SHA1(9ae7446231da7fd6355e1f22ac3fb974c3775600) )
+ROM_END
+
+ROM_START( dinoha )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kl2-r1.800", 0x080000, 0x080000, CRC(4c70dca7) SHA1(2e7a10c90924e0f87903eddb04313f61233a998f) )
+ ROM_CONTINUE( 0x000000, 0x080000 )
+ ROM_LOAD16_WORD_SWAP( "kl2-l2.800", 0x180000, 0x080000, CRC(c6ae7338) SHA1(4b8543cf1ac89ae95fe63e6d81c87d2bda52da69) )
+ ROM_CONTINUE( 0x100000, 0x080000 )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-a.160", 0x000000, 0x80000, CRC(7e4f9fb3) SHA1(b985d925e0fb799cdf0a671e4800961d9872cd8f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "cd-b.160", 0x000002, 0x80000, CRC(89532d85) SHA1(6743c4d9b4407421416c13878b8a1fae097dd7a7), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dinoh.key", 0x000000, 0x000080, CRC(67862673) SHA1(9ae7446231da7fd6355e1f22ac3fb974c3775600) )
+ROM_END
+
+ROM_START( dinohb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cd-d.800", 0x000000, 0x100000, CRC(2a7b2915) SHA1(817d24c5206a60c4d93affffc9bd5a72abccbb01) )
+ ROM_LOAD16_WORD_SWAP( "cd-e.800", 0x100000, 0x100000, CRC(e8370226) SHA1(9c6915ad9e48ccd2020fcad58ec56e6f7cd0c25c) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-a.160", 0x000000, 0x80000, CRC(7e4f9fb3) SHA1(b985d925e0fb799cdf0a671e4800961d9872cd8f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "cd-b.160", 0x000002, 0x80000, CRC(89532d85) SHA1(6743c4d9b4407421416c13878b8a1fae097dd7a7), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dinob.key", 0x000000, 0x000080, CRC(171140c4) SHA1(d1db4e37e22fa6ae03c2bca4fdb698399d98c15f) )
+ROM_END
+
+ROM_START( dinohp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinohp.23", 0x000000, 0x80000, CRC(c96a1d20) SHA1(76d2ce4727ad6f546148cc3c7338a6243cecce2d) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinohx )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinohx.23", 0x000000, 0x80000, CRC(a013a81f) SHA1(81c84ad76adfe1345d5e41bcddb47f2428de5006) )
+ ROM_LOAD16_WORD_SWAP( "cda_22h.rom", 0x080000, 0x80000, CRC(f72cd219) SHA1(a3f580bd328b54d2546ae7e94262c1a706d27172) )
+ ROM_LOAD16_WORD_SWAP( "cda_21h.rom", 0x100000, 0x80000, CRC(bc275b76) SHA1(1f7f7533b4ccb511dc479f531d9d6740d3ca6712) )
+ ROM_LOAD16_WORD_SWAP( "cda_20h.rom", 0x180000, 0x80000, CRC(8987c975) SHA1(3fd856805d627f855f72acc7aacc2e8ecf0f12bd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x0000, 0x0080, CRC(61e30e5f) SHA1(994c97e38d1968530c572d9473ac033925dad99e) )
+ROM_END
+
+ROM_START( dinojp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cdjp-23a.8f", 0x000000, 0x80000, CRC(9cd746de) SHA1(d8b9c824e4b8adb66a273debce63128a16bb147a) )
+ ROM_LOAD16_WORD_SWAP( "cdjp-22a.7f", 0x080000, 0x80000, CRC(082f645d) SHA1(6865d6cf6464846b9aa423dc4e807932ae98a86d) )
+ ROM_LOAD16_WORD_SWAP( "cdep_21a.rom", 0x100000, 0x80000, CRC(95bd8020) SHA1(249746eb20483ec87b6ad5a74e8b790afdb389de) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinorp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinorp.23", 0x000000, 0x80000, CRC(373282a0) SHA1(b02bf02c9ef21cfa2606f3c6e38542fcb0be45ab) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "dinorp.21", 0x100000, 0x80000, CRC(d0d89d2c) SHA1(36f510ca6a2713518c3dba8fb49a314fd0de4d75) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinosf2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinosf2.u23", 0x000000, 0x80000, CRC(ccdc80f3) SHA1(0cb34ac873a9c4cf7189c8d189bb9f96ec4f0721) )
+ ROM_LOAD16_WORD_SWAP( "dinosf2.u22", 0x080000, 0x80000, CRC(e8eb6500) SHA1(d062e31863c8a3d297aa9c32693b67921d9a9650) )
+ ROM_LOAD16_WORD_SWAP( "dinosf2.u21", 0x100000, 0x80000, CRC(8822a8ef) SHA1(3e345fad0331ce7a3ba742ed3a74abf8bb7e7a02) )
+ ROM_LOAD16_WORD_SWAP( "u20", 0x180000, 0x80000, CRC(8987c975) SHA1(3fd856805d627f855f72acc7aacc2e8ecf0f12bd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "u9", 0x00000, 0x08000, CRC(2eb16a83) SHA1(067ea0bfc2c1e73520d6b836c72fbb9da9998311) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* samples */
+ ROM_LOAD( "u18", 0x00000, 0x20000, CRC(8d2899ba) SHA1(0b3ac6cf2ce0323e3bfc9da3ebfcb0fd14bc405b) )
+ ROM_LOAD( "u19", 0x20000, 0x20000, CRC(b34a4b42) SHA1(3eeb9e33bb911359e03d44949ac58439a3d3d54b) )
+ROM_END
+
+ROM_START( dinoslice )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "cdeslice.rom", 0x000000, 0x200000, CRC(9da95eab) SHA1(370bf3bbd76de5ae638c6fdab67c7cea98744e7b) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinouphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinouphp.23", 0x000000, 0x80000, CRC(1bf35c82) SHA1(82496d6c8fa853b0c28932f0f36e37219c0adfc8) )
+ ROM_LOAD16_WORD_SWAP( "cde_22a.7f", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+ROM_START( dinoz )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dinoz_23a.8f", 0x000000, 0x80000, CRC(0129f422) SHA1(968e6d25a1aa2116f9e9a6b4b76c83bd63f4f477) )
+ ROM_LOAD16_WORD_SWAP( "dinoz_22a.7f", 0x080000, 0x80000, CRC(3861d9d8) SHA1(11dac49f09dfc325b9f529271dc5921d7aacb630) )
+ ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) )
+ ROM_LOAD16_WORD_SWAP( "dinoz_20a.5f", 0x180000, 0x80000, CRC(8fc0ab46) SHA1(63abdc8edb06963366bb86a9f3388d1f94c6a7e8) )
+ ROM_LOAD16_WORD_SWAP( "dinoz_19a.4f", 0x200000, 0x80000, CRC(93eb9535) SHA1(c8296f7fd124beb786e6f36472948fdee6d1d21c) )
+ ROM_LOAD16_WORD_SWAP( "dinoz_18a.3f", 0x280000, 0x80000, CRC(51ba57fd) SHA1(6bb09f8ba10e6543540441d68c49a54188d8d8a0) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) )
+ ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) )
+ ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) )
+ ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "dino.key", 0x000000, 0x000080, CRC(230b6eb0) SHA1(240fdda90aecd62ce1f218e430b7ee6a464b8de8) )
+ROM_END
+
+
+ROM_START( ffightb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "ffu_36b.11f", 0x00000, 0x20000, CRC(a9fa0174) SHA1(a6f669370f1f822b2988c297a8e26bcb6300692d) )
+ ROM_LOAD16_BYTE( "ffu_42b.11h", 0x00001, 0x20000, CRC(d47cb6b7) SHA1(26c94b0d91a4343b58a7cc542417d8d36e9f2e34) )
+ ROM_LOAD16_BYTE( "ffu_37b.12f", 0x40000, 0x20000, CRC(3fc9f9e3) SHA1(0982c40d5967e5068ec592db022eb16172f95005) )
+ ROM_LOAD16_BYTE( "ffu_43b.12h", 0x40001, 0x20000, CRC(5ef051fa) SHA1(f72d45f9d03f78de8d081658098decbadc9e7828) )
+ ROM_LOAD16_WORD_SWAP( "ff_22.7f", 0x80000, 0x80000, CRC(b2d5a3aa) SHA1(b60f7480d3d3ceebad4c21025394bacc154d7042) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff_1.3a", 0x000000, 0x80000, CRC(969d18e2) SHA1(7a30b7434e34ec98838a9ab8d953b2ef467d562e), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_2.4a", 0x000002, 0x80000, CRC(02b59f99) SHA1(c1cb2bbf95c2006baad58b0a5a7278f1a8999901), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_3.5a", 0x000004, 0x80000, CRC(01d507ae) SHA1(d7813daa5bd74bebdbbea578acb20ad3c8816997), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff_4.6a", 0x000006, 0x80000, CRC(f7c4ceb0) SHA1(3e9cf6379f06c5a736b4a0aadb7fbda914b91190), ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "ffightb.key", 0x000000, 0x000080, CRC(328f442c) SHA1(f58a07458f00ee7fdd0471fa03f7859ae9e2629b) )
+ROM_END
+
+
+ROM_START( knight21 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kr_2321.8f",0x00000, 0x80000, CRC(aacaebcd) SHA1(3c243d59b86b2a51c219c296c12090058851c77d) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knights.key", 0x000000, 0x000080, CRC(a4851689) SHA1(0a96f22a655c3ff9d09d7b84abd7ab5ac5f137e2) )
+ROM_END
+
+ROM_START( knightsa )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kr_23h.rom", 0x00000, 0x80000, CRC(bc3b60f5) SHA1(f8c5e49535bb191d46f4c32e336b2ca92517109a) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+ROM_END
+
+ROM_START( knightsb2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "040-z.02", 0x00000, 0x80000, CRC(95d00a7e) SHA1(2da1c47aa15d44aa842a8d79e030e7e7b69bec19) )
+ ROM_LOAD16_BYTE( "040-r.02", 0x00001, 0x80000, CRC(5a9d0b64) SHA1(6ff312879c3d675ceee6fd3e262f797fabb9871e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knightsb2.key", 0x000000, 0x000080, CRC(67017a7f) SHA1(d9db5b41b214539f71cc2f0d92a27285c27e38c4) )
+ROM_END
+
+ROM_START( knightsh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "krh_23.rom", 0x00000, 0x80000, CRC(fa2ff63d) SHA1(f3800102aadeccd13ed49c88039732453266283a) )
+ ROM_LOAD16_WORD_SWAP( "krh_22.rom", 0x80000, 0x80000, CRC(1438d070) SHA1(4f6fad844c3e8eb960bb6cb85ac570979c0ae973) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knightsh.key", 0x000000, 0x000080, CRC(68d9786b) SHA1(8721cda836d88c48ab07b96d66015832b5e561f7) )
+ROM_END
+
+ROM_START( knightsha )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "krha_23.rom", 0x00000, 0x80000, CRC(a7fd309a) SHA1(b4f163d9588e9d8dd6f2ba6d6ae520efb620c1ac) )
+ ROM_LOAD16_WORD_SWAP( "krh_22.rom", 0x80000, 0x80000, CRC(1438d070) SHA1(4f6fad844c3e8eb960bb6cb85ac570979c0ae973) )
+ ROM_FILL(0xb7d,1,0x66)
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knightsha.key", 0x000000, 0x000080, CRC(ab2dff46) SHA1(9bc8ec843ec9e8522858df8fb72e8c0e3fa1f023) )
+ROM_END
+
+ROM_START( knightsjb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "23.096", 0x00000, 0x80000, CRC(7733b8a6) SHA1(ecf1a0d2b4631b9d4ba46e4987d226d938ee6628) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "1.096", 0x000000, 0x80000, CRC(91541596) SHA1(4aac23d826f64c6065271488e3b582b3c9e11703) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "2.096", 0x000002, 0x80000, CRC(5d332114) SHA1(d340be3aa93b2117bccc9b4a7088c65ca29925b1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3.096", 0x000004, 0x80000, CRC(60488eba) SHA1(2117db67ed5c5d3225c3ab3d90932b9786e8060d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "4.096", 0x000006, 0x80000, CRC(394bdd11) SHA1(9b15abccc8372c04469b5472bd36d368965d1161) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "5.096", 0x200000, 0x80000, CRC(b52af98b) SHA1(3fb9b8fab8dc925d3d17f1428467df513d475d3d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "6.096", 0x200002, 0x80000, CRC(e44e5eac) SHA1(329649d381f1e48fcc37f5d64eb869833a5e0e18) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18.010", 0x00000, 0x20000, CRC(9b9be3ab) SHA1(9a5283d71551e71660a4741a647f5aea7e5ba89b) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knightsh.key", 0x000000, 0x000080, CRC(68d9786b) SHA1(8721cda836d88c48ab07b96d66015832b5e561f7) )
+ROM_END
+
+ROM_START( knightsro )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "knightsro.8f", 0x00000, 0x80000, CRC(a1984e47) SHA1(2c9782c51931b9c365b001daa7c49671dd36147c) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knights.key", 0x000000, 0x000080, CRC(a4851689) SHA1(0a96f22a655c3ff9d09d7b84abd7ab5ac5f137e2) )
+ROM_END
+
+ROM_START( knightud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "knightud.23", 0x00000, 0x80000, CRC(5fe98e7f) SHA1(3e01b9e06663ade831750de3ecd0d3925889a5da) )
+ ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) )
+ ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "knightsh.key", 0x000000, 0x000080, CRC(68d9786b) SHA1(8721cda836d88c48ab07b96d66015832b5e561f7) )
+ROM_END
+
+
+ROM_START( kodd )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "kodd.30", 0x00000, 0x20000, CRC(8eb281a4) SHA1(6e6e316321c500796bba6b888db8e0445b63bea3) )
+ ROM_LOAD16_BYTE( "kodd.37", 0x00001, 0x20000, CRC(9c16c2b9) SHA1(1c04419f1223b7a9a0ae2de8f11010b478d58c63) )
+ ROM_LOAD16_BYTE( "kodd.31", 0x40000, 0x20000, CRC(b4aeee54) SHA1(ed0b965b2f16a6aeb117e7b12ab10d7d0b87dcdf) )
+ ROM_LOAD16_BYTE( "kodd.38", 0x40001, 0x20000, CRC(534554bc) SHA1(c0b73e8a44b4a5b6679f39a146f01fd0f2c270c8) )
+ ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) )
+ ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) )
+ ROM_LOAD16_BYTE( "kde_29.10e", 0xc0000, 0x20000, CRC(6a0ba878) SHA1(82e4037d73889a76b0cdc7a4f8e77e585d38e56e) )
+ ROM_LOAD16_BYTE( "kde_36.10f", 0xc0001, 0x20000, CRC(b509b39d) SHA1(6023855e54b170e55abf0f607600031e19e5e722) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(f5514510) SHA1(07e9c836adf9ef2f7e7729e99015f71e3b5f16e0) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(69ecb2c8) SHA1(fadf266b6b20bd6329a3e638918c5a3106413476) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(02d851c1) SHA1(c959a6fc3e7d893557f319debae91f28471f4be2) )
+ROM_END
+
+// - Actor preview flickers instead of wriggling
+// - No music in attract mode
+ROM_START( kodh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "23.096", 0x00000, 0x80000, CRC(daf89cfb) SHA1(de0944884d0e64c6b0410294d25308201508afbe) )
+ ROM_LOAD16_WORD_SWAP( "22.096", 0x80000, 0x80000, CRC(c83e19d8) SHA1(8c342818a1c5337ad4b259700e184972f821aca4) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "1.096", 0x000000, 0x80000, CRC(09261881) SHA1(e65abce3d39224c2c94673900291a210c1d949cb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "2.096", 0x000002, 0x80000, CRC(bc121ff2) SHA1(1f75f93652bb6c521bc538e7c2d10920a7897aa2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3.096", 0x000004, 0x80000, CRC(f463ae22) SHA1(f8bc17814d38f3693a2a8dc64cc44e1f4fe3102c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "4.096", 0x000006, 0x80000, CRC(01308733) SHA1(8de29e7063d03493f197cee7a4e4edff3eee8e36) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) )
+ // Bad dump? Only 1 byte is different
+ ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(c7ab4704) SHA1(180852c4d59359c2094feb8ad1f05d70eafe6c55) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "kodh.key", 0x000000, 0x000080, CRC(9d65fe9c) SHA1(9671ee388d59a2d12cf38712620f5f598e93abfc) )
+ROM_END
+
+// - Actor preview flickers instead of wriggling
+// - No music in attract mode
+ROM_START( kodsp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "kde_30.11e", 0x00000, 0x20000, CRC(c7414fd4) SHA1(37d27fbe7c617a26b53bfdfcd532cf573d42f33b) )
+ ROM_LOAD16_BYTE( "kde_37.11f", 0x00001, 0x20000, CRC(a5bf40d2) SHA1(cd34dbeabd0974709411579e669f01d0d799c2a1) )
+ ROM_LOAD16_BYTE( "kde_31.12e", 0x40000, 0x20000, CRC(1fffc7bd) SHA1(822c9ad996ca51a99a2bb1fe08fa19e18413030d) )
+ ROM_LOAD16_BYTE( "kde_38.12f", 0x40001, 0x20000, CRC(89e57a82) SHA1(aad35f86a8b1b7e3a0b5f3e6efd0e844b3d3d82f) )
+ ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) )
+ ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) )
+ ROM_LOAD16_BYTE( "kde_29.10e", 0xc0000, 0x20000, CRC(6a0ba878) SHA1(82e4037d73889a76b0cdc7a4f8e77e585d38e56e) )
+ ROM_LOAD16_BYTE( "kde_36.10f", 0xc0001, 0x20000, CRC(b509b39d) SHA1(6023855e54b170e55abf0f607600031e19e5e722) )
+
+ ROM_REGION( 0x400000, "gfx", 0 ) // this set has new gfx roms
+ ROMX_LOAD( "kodsp.5", 0x000000, 0x80000, CRC(0aaa04b7) SHA1(14ab5944461cb7989659c31ea3be333c513284b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.7", 0x000002, 0x80000, CRC(28d6b2ff) SHA1(a0934eb3a15b5d21b816ffcdb4208322f0a480b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.1", 0x000004, 0x80000, CRC(8707e5ac) SHA1(36fd449595b8cd22a3e9a61b4941b0fde821b67a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.3", 0x000006, 0x80000, CRC(c115f6c6) SHA1(36b0d93b38a3f9c517ebf35bc3c7437794afe6f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.6", 0x200000, 0x80000, CRC(e8009e30) SHA1(2a1038f627edc5f7b89a5ac2000ba50ac015e29d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.8", 0x200002, 0x80000, CRC(c76b4156) SHA1(95606000fdd79c2c80082e368a5710087332c8c8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.2", 0x200004, 0x80000, CRC(34b917e8) SHA1(7e1fb92539199f51f21b24c685fabb04c6a247a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kodsp.4", 0x200006, 0x80000, CRC(8faba58f) SHA1(9a77f7e69ccc796e09b0fe266b2af0c31fcd85ba) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kodsp.12a", 0x00000, 0x08000, CRC(f5514510) SHA1(07e9c836adf9ef2f7e7729e99015f71e3b5f16e0) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kodsp.11c", 0x00000, 0x20000, CRC(69ecb2c8) SHA1(fadf266b6b20bd6329a3e638918c5a3106413476) )
+ ROM_LOAD( "kodsp.12c", 0x20000, 0x20000, CRC(02d851c1) SHA1(c959a6fc3e7d893557f319debae91f28471f4be2) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "kod.key", 0x000000, 0x000080, CRC(b79ea9b9) SHA1(cefded329a6ccc34d3b68e614c8f3a2c174e3fdd) )
+ROM_END
+
+ROM_START( kodud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "kodud.30", 0x00000, 0x20000, CRC(c5ada5eb) SHA1(c989c747abfc6f80871d0ee763d5573b321fb48e) )
+ ROM_LOAD16_BYTE( "kodud.37", 0x00001, 0x20000, CRC(b8169b17) SHA1(55176bb92fc422d4ce03a011190a7cc6caa082ff) )
+ ROM_LOAD16_BYTE( "kodud.31", 0x40000, 0x20000, CRC(72dd68a5) SHA1(db077c2c4716da59880e49af1d066b3c596143e1) )
+ ROM_LOAD16_BYTE( "kodud.38", 0x40001, 0x20000, CRC(0021a110) SHA1(0e15786d6e36a62f338dce8508cdd17a69511ed2) )
+ ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) )
+ ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) )
+ ROM_LOAD16_BYTE( "kd_29.10e", 0xc0000, 0x20000, CRC(0360fa72) SHA1(274769c8717a874397cf37369e3ef80a682d9ef2) )
+ ROM_LOAD16_BYTE( "kd_36a.10f", 0xc0001, 0x20000, CRC(95a3cef8) SHA1(9b75c1ed0eafacc230197ffd9b81e0c8f4f2c464) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) )
+ ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) )
+ROM_END
+
+
+ROM_START( pnicku )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "pnij36.bin", 0x00000, 0x20000, CRC(2d4ffb2b) SHA1(6e49cf89a36834fd1de8b4b860fe66f3d7d67a84) )
+ ROM_LOAD16_BYTE( "pniu42.bin", 0x00001, 0x20000, CRC(22d20227) SHA1(a103c9b1f6134c529405bd258da9f601c1459c47) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "pnij09.bin", 0x000000, 0x20000, CRC(48177b0a) SHA1(eba5de6cd9bb0c4ad76a13bddc9cdeb2e4380122) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij01.bin", 0x000001, 0x20000, CRC(01a0f311) SHA1(9bcd8716f90ccd410543ffcdc5c2916077b8d4c3) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij13.bin", 0x000002, 0x20000, CRC(406451b0) SHA1(5a7a7fecba7de8b8cf4a284b2ae7adae901623f6) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij05.bin", 0x000003, 0x20000, CRC(8c515dc0) SHA1(aa1e13cf9e7cf0458bb5c4332b1ea73034f9a874) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij26.bin", 0x000004, 0x20000, CRC(e2af981e) SHA1(3c2b28b4a4d457aa94a760dfca0181a9f050c319) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij18.bin", 0x000005, 0x20000, CRC(f17a0e56) SHA1(7c89aca230f176e12f995892f9d1bce22c57fbdf) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij38.bin", 0x000006, 0x20000, CRC(eb75bd8c) SHA1(2129460e06eb64019fc5f7eab6334ff43229b995) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij32.bin", 0x000007, 0x20000, CRC(84560bef) SHA1(9e94ae434b50ecf82781080e11d0c4741e992d0d) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij10.bin", 0x100000, 0x20000, CRC(c2acc171) SHA1(7c86db3f2acca1252d403c5f12c871d0357fa109) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij02.bin", 0x100001, 0x20000, CRC(0e21fc33) SHA1(c4a29d45c4257c8871038d3c9b13140e874db0c1) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij14.bin", 0x100002, 0x20000, CRC(7fe59b19) SHA1(a273b8b8fbfd5d31d25479a9ede09ce35e1cc873) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij06.bin", 0x100003, 0x20000, CRC(79f4bfe3) SHA1(bc17cc1c8535e3d202588893713926b6c06f92fd) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij27.bin", 0x100004, 0x20000, CRC(83d5cb0e) SHA1(44c93fa5eedcafc8dc6d88ee827c6cadc9c671f0) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij19.bin", 0x100005, 0x20000, CRC(af08b230) SHA1(a3b5b3013012efa1860699648518f8d8031c5f30) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij39.bin", 0x100006, 0x20000, CRC(70fbe579) SHA1(b5b7ed5588ecd884b20dd50bfc5385a9af03c5d8) , ROM_SKIP(7) )
+ ROMX_LOAD( "pnij33.bin", 0x100007, 0x20000, CRC(3ed2c680) SHA1(0afe84d8d89f8d45afc79f6172337e622e29a8a2) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "pnij17.bin", 0x00000, 0x08000, CRC(e86f787a) SHA1(de04cbe89c655faf04afe169bfd9913049ccc4a8) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "pnij24.bin", 0x00000, 0x20000, CRC(5092257d) SHA1(95dc9d10940653b2fb37baf5c1ed27145b02104e) )
+ ROM_LOAD( "pnij25.bin", 0x20000, 0x20000, CRC(22109aaa) SHA1(cf21e75674d81b2daae2083d02f9f4b6e52722c6) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "pnickj.key", 0x000000, 0x000080, CRC(38afadc4) SHA1(05b49635f99e7cb97a99b9666239d68154cb3641) )
+ROM_END
+
+
+ROM_START( punisherb ) // punipic in mame
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(8c2593ac) SHA1(4261bc72b96c3a5690df35c5d8b71524765693d9) )
+ ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(c3151563) SHA1(61d3a20c25fea8a94ae6e473a87c21968867cba0) )
+ ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x80000, CRC(d7b13f39) SHA1(eb7cd92b44fdef3b72672b0be6786c526421b627) )
+ ROM_LOAD16_BYTE( "4.bin", 0x100000, 0x80000, CRC(665a5485) SHA1(c07920d110ca9c35f6cbff94a6a889c17300f994) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "9.bin", 0x000000, 0x40000, CRC(9b9a887a) SHA1(8805b36fc18837bd7c64c751b435d72b763b2235), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000 )
+ ROMX_LOAD( "8.bin", 0x000001, 0x40000, CRC(2b94287a) SHA1(815d88e66f537e17550fc0483616f02f7126bfb1), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000 )
+ ROMX_LOAD( "7.bin", 0x000002, 0x40000, CRC(e9bd74f5) SHA1(8ed7098c69d1c70093c99956bf82e532bd6fc7ac), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000 )
+ ROMX_LOAD( "6.bin", 0x000003, 0x40000, CRC(a5e1c8a4) SHA1(3596265a45cf6bbf16c623f0fce7cdc65f9338ad), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000 )
+ ROMX_LOAD( "13.bin", 0x200000, 0x40000, CRC(6d75a193) SHA1(6c5a89517926d7ba4a925a3df800d4bdb8a6938d), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000 )
+ ROMX_LOAD( "12.bin", 0x200001, 0x40000, CRC(a3c205c1) SHA1(6317cc49434dbbb9a249ddd4b50bd791803b3ebe), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000 )
+ ROMX_LOAD( "11.bin", 0x200002, 0x40000, CRC(22f2ec92) SHA1(9186bfc5db71dc5b099c9a985e8fdd5710772d1c), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000 )
+ ROMX_LOAD( "10.bin", 0x200003, 0x40000, CRC(763974c9) SHA1(f9b93c7cf0cb8c212fc21c57c85459b7d2e4e2fd), ROM_GROUPBYTE | ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000 )
+
+ ROM_REGION( 0x80000, "user1", 0 ) // spare rom
+ ROM_LOAD_OPTIONAL( "1.bin", 0x00000, 0x80000, CRC(aeec9dc6) SHA1(56fd62e8db8aa96cdd242d8c705849a413567780) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.rom", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps_q1.rom", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps_q2.rom", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps_q3.rom", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps_q4.rom", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisherb.key", 0x000000, 0x000080, CRC(e1219963) SHA1(ba508a09095e9a37018a5a8c3a624713d7684582) )
+ROM_END
+
+ROM_START( punisherf )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "punisherf.23", 0x000000, 0x80000, CRC(ebab7576) SHA1(2a1664ebaf813a21986c97c16142ffd7c93c7a3b) )
+ ROM_LOAD16_WORD_SWAP( "psj22h.bin", 0x080000, 0x80000, CRC(84c5783e) SHA1(19571cdc4bf4cc1e59694fc8064cc88a49656449) )
+ ROM_LOAD16_WORD_SWAP( "punisherf.21", 0x100000, 0x80000, CRC(2bccb0ed) SHA1(44f45431d7ecca6eb8942be3d44b99cf856d12ab) )
+ ROM_FILL(0x9042A, 5, 0x4E) // remove jsr into the weeds (caused illegal instruction on stage 1)
+ ROM_FILL(0x9042B, 1, 0x71)
+ ROM_FILL(0x9042D, 1, 0x71)
+ ROM_FILL(0x9042F, 1, 0x71)
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_gfx1.rom", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx3.rom", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx2.rom", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx4.rom", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx5.rom", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx7.rom", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx6.rom", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx8.rom", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.rom", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps_q1.rom", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps_q2.rom", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps_q3.rom", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps_q4.rom", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisher.key", 0x000000, 0x000080, CRC(8e992ffa) SHA1(4f09427600cef4feb49a8a488caadaaa7b327484) )
+ROM_END
+
+ROM_START( punisherje1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "psj23ex.bin", 0x000000, 0x80000, CRC(fa084bab) SHA1(af323e6399ab5d3091a57188d3cedc1d0600dd3d) )
+ ROM_LOAD16_WORD_SWAP( "psj22ex.bin", 0x080000, 0x80000, CRC(69433b02) SHA1(cc7127170fad47562aaded71a3c1e216084667f8) )
+ ROM_LOAD16_WORD_SWAP( "psje1.21", 0x100000, 0x80000, CRC(86aa8774) SHA1(501db3229c49ecd60eab72391f575f7df47e8782) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisher.key", 0x000000, 0x000080, CRC(8e992ffa) SHA1(4f09427600cef4feb49a8a488caadaaa7b327484) )
+ROM_END
+
+ROM_START( punisherjh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "psj23h.bin", 0x000000, 0x80000, CRC(41cb77e9) SHA1(7e2a21bd217c976b448a51ba8bdbab820a30851a) )
+ ROM_LOAD16_WORD_SWAP( "psj22h.bin", 0x080000, 0x80000, CRC(84c5783e) SHA1(19571cdc4bf4cc1e59694fc8064cc88a49656449) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.rom", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_gfx1.rom", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx3.rom", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx2.rom", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx4.rom", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx5.rom", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx7.rom", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx6.rom", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_gfx8.rom", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.rom", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps_q1.rom", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps_q2.rom", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps_q3.rom", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps_q4.rom", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisher.key", 0x000000, 0x000080, CRC(8e992ffa) SHA1(4f09427600cef4feb49a8a488caadaaa7b327484) )
+ROM_END
+
+ROM_START( punisherjh1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "psjh1.23", 0x000000, 0x80000, CRC(75ed76a4) SHA1(8ba66fd6a1912aae4c382ac8900f522474884771) )
+ ROM_LOAD16_WORD_SWAP( "psjh1.22", 0x080000, 0x80000, CRC(b17f61f0) SHA1(a5550bb359941bea96cefb818ccbb175a0b20687) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisher.key", 0x000000, 0x000080, CRC(8e992ffa) SHA1(4f09427600cef4feb49a8a488caadaaa7b327484) )
+ROM_END
+
+ROM_START( punisherjha ) // multijet:punishje2: The Punisher (SM Experience Edition hack by Zhyxxxx set 2 13/06/09)
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "psj23ex.bin", 0x000000, 0x80000, CRC(fa084bab) SHA1(af323e6399ab5d3091a57188d3cedc1d0600dd3d) )
+ ROM_LOAD16_WORD_SWAP( "psj22ex.bin", 0x080000, 0x80000, CRC(69433b02) SHA1(cc7127170fad47562aaded71a3c1e216084667f8) )
+ ROM_LOAD16_WORD_SWAP( "ps_21ex.rom", 0x100000, 0x80000, CRC(e4e15e4a) SHA1(405d57983ed33276e6fde155d4c78c2973466483) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisher.key", 0x000000, 0x000080, CRC(8e992ffa) SHA1(4f09427600cef4feb49a8a488caadaaa7b327484) )
+ROM_END
+
+ROM_START( punisherud1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "psud1_26.11e", 0x000000, 0x20000, CRC(f820e620) SHA1(7c2e55b4dc7aaf27badceafd7bde483f33676351) )
+ ROM_LOAD16_BYTE ( "psud1_30.11f", 0x000001, 0x20000, CRC(90afc70a) SHA1(73d5325a482becf46ef75456134242db7f1a31f8) )
+ ROM_LOAD16_BYTE ( "psu_27.12e", 0x040000, 0x20000, CRC(61c960a1) SHA1(f8fe651283cc1f138d013cab65b833505de6df9f) )
+ ROM_LOAD16_BYTE ( "psud1_31.12f", 0x040001, 0x20000, CRC(e1239351) SHA1(7437a5e93ed72b8a52292aeb71c678e1462c8578) )
+ ROM_LOAD16_BYTE ( "psud1_24.9e", 0x080000, 0x20000, CRC(22ef4de9) SHA1(358acdce233182280e5eb77da178ec0f08beca7f) )
+ ROM_LOAD16_BYTE ( "psud1_28.9f", 0x080001, 0x20000, CRC(e45f5b6d) SHA1(daf25f24f8955387086acd337b19dfea5507adb8) )
+ ROM_LOAD16_BYTE ( "psu_25.10e", 0x0c0000, 0x20000, CRC(c51acc94) SHA1(34ffd6392914e3e67d7d0804215bd1193846b554) )
+ ROM_LOAD16_BYTE ( "psu_29.10f", 0x0c0001, 0x20000, CRC(52dce1ca) SHA1(45277abe34feacdcaedaec56f513b7437d4260e9) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisherud1.key", 0x000000, 0x000080, CRC(c22c07f9) SHA1(b726dfed90c288ee71ab6d6035b0efcba1f18f6a) )
+ROM_END
+
+ROM_START( punisherud2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "psud2.23", 0x000000, 0x80000, CRC(019efb28) SHA1(1790db51ce7cd1281932359de6e4e1e046db0369) )
+ ROM_LOAD16_WORD_SWAP( "psud2.22", 0x080000, 0x80000, CRC(c0110a4e) SHA1(43f6086634c332a58d95b0b51995ba1ab8ed1367) )
+ ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) )
+ ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) )
+ ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) )
+ ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "punisherud1.key", 0x000000, 0x000080, CRC(c22c07f9) SHA1(b726dfed90c288ee71ab6d6035b0efcba1f18f6a) )
+ROM_END
+
+
+// sf2uc with first 2 roms changed
+ROM_START( sf2bhj )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf2bhj.30", 0x00000, 0x20000, CRC(1699140f) SHA1(967f2a958ffe3886ce60568e2a63ee119757fa57) )
+ ROM_LOAD16_BYTE( "sf2bhj.37", 0x00001, 0x20000, CRC(4d563eb4) SHA1(a238129d867dc3f0b8b4e458d597b0d11bbeda05) )
+ ROM_LOAD16_BYTE( "sf2u_31c.12e", 0x40000, 0x20000, CRC(c4fff4a9) SHA1(4b593ace201fe7f5a00b5cd7f4e8fc3f8dd4ceed) )
+ ROM_LOAD16_BYTE( "sf2u_38c.12f", 0x40001, 0x20000, CRC(8210fc0e) SHA1(7d6cfb99afa89d0e6e991d9f7c1808b740def125) )
+ ROM_LOAD16_BYTE( "sf2u_28c.9e", 0x80000, 0x20000, CRC(6eddd5e8) SHA1(62bd1c2fc0321809421c9a592f691b5b1a1d8807) )
+ ROM_LOAD16_BYTE( "sf2u_35c.9f", 0x80001, 0x20000, CRC(6bcb404c) SHA1(b5f24556c633c521aadd94e016d78db6922e3dfa) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2-5m.4a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-7m.6a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-1m.3a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-3m.5a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-6m.4c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-8m.6c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-2m.3c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-4m.5c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-13m.4d", 0x400000, 0x80000, CRC(994bfa58) SHA1(5669b845f624b10e7be56bfc89b76592258ce48b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-15m.6d", 0x400002, 0x80000, CRC(3e66ad9d) SHA1(9af9df0826988872662753e9717c48d46f2974b0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-9m.3d", 0x400004, 0x80000, CRC(c1befaa8) SHA1(a6a7f4725e52678cbd8d557285c01cdccb2c2602) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2-11m.5d", 0x400006, 0x80000, CRC(0627c831) SHA1(f9a92d614e8877d648449de2612fc8b43c85e4c2) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2bhj.key", 0x000000, 0x000080, CRC(c62851af) SHA1(2ccc177c433e48e72e7f5dfeeffb65f54239bf12) )
+ROM_END
+
+ROM_START( sf2c )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf2j_30", 0x00000, 0x20000, CRC(70813e5e) SHA1(39219a98d368dcb67cbd0a756f3e1fab7b9352f4) )
+ ROM_LOAD16_BYTE( "sf2j_37", 0x00001, 0x20000, CRC(d0659611) SHA1(1368228cc2c41a361f0e8eb516610522a38394b2) )
+ ROM_LOAD16_BYTE( "sf2j31.bin", 0x40000, 0x20000, CRC(fe15cb39) SHA1(383478524881ea70d9e04c9b6143b8735b637eee) )
+ ROM_LOAD16_BYTE( "sf2j38.bin", 0x40001, 0x20000, CRC(38614d70) SHA1(39c58096f3a8e01fb439639b742b83102bbaa7f6) )
+ ROM_LOAD16_BYTE( "sf2j_28", 0x80000, 0x20000, CRC(2d4a1b8a) SHA1(9dce74c32fa9c63f38d33a03327b22e74d2118c1) )
+ ROM_LOAD16_BYTE( "sf2j_35", 0x80001, 0x20000, CRC(5f622bdb) SHA1(4fe5797acc2645a1bd27d247457b6f24bfd60f96) )
+ ROM_LOAD16_BYTE( "sf2_29b.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) )
+ ROM_LOAD16_BYTE( "sf2_36b.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06", 0x000000, 0x80000, CRC(d3aab35d) SHA1(bc90464bc38b326b46f0da97008116ee639e2598) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_08", 0x000002, 0x80000, CRC(f6a68d56) SHA1(4ef2668a245fb207c599f0e72e979f8c0191df25) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_05", 0x000004, 0x80000, CRC(1ddcda55) SHA1(494338ac59e4253177b731bd6ad116a63f7ded8c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_07", 0x000006, 0x80000, CRC(d3274004) SHA1(a278e0740806cf8098058d1c33eb0964cc130ded) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_15", 0x200000, 0x80000, CRC(f8710c69) SHA1(a298117a7869b0891220c229d0dceba7ac6bf594) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_17", 0x200002, 0x80000, CRC(dd376567) SHA1(a817c999098b0274ed2c052b96c562bed407b7b1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_14", 0x200004, 0x80000, CRC(c754e2c4) SHA1(7936eaa669c84742c1511768bb9039c26b2fb3c3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_16", 0x200006, 0x80000, CRC(0d4799bd) SHA1(5e63e889cabc4436c2a49997c9d0a47529d264ad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_25", 0x400000, 0x80000, CRC(a6671144) SHA1(f4017ad15784078c00ef76220f4e5bdba61a6495) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_27", 0x400002, 0x80000, CRC(008b2bdd) SHA1(a048a70fe3c752b79e14eadf2369f068fc831439) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_24", 0x400004, 0x80000, CRC(0f8a9ec4) SHA1(cde0013df78333ebfbaacb9a9e212fbc0b2e04d3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_26", 0x400006, 0x80000, CRC(0fb4241e) SHA1(f749daa6ecf018542ecf0f3711491eb85fac91b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "sf2_9.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2c.key", 0x000000, 0x000080, CRC(fdc05d86) SHA1(f828e6171a271bc12a5c9ab5be237562e263ccdb) )
+ROM_END
+
+ROM_START( sf2cebr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2cebr.23", 0x000000, 0x80000, CRC(74e848ee) SHA1(6DCE8D0C7D439E6D1D08C8169A3ECDF178E82C16) )
+ ROM_LOAD16_WORD_SWAP( "sf2cebr.22", 0x080000, 0x80000, CRC(c3c49626) SHA1(D0FAE1D2758360B56E6E583FEB4BDF7D4E2E1EBA) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92br_10.bin", 0x400000, 0x80000, CRC(b3e1dd5f) SHA1(714BF1519CED85567D3D35FDF4AA9E4268CC9F0F) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92br_11.bin", 0x400002, 0x80000, CRC(f13af812) SHA1(E3711CBAA3169D0F48DF420953F1AFD0AB76EE08) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92br_12.bin", 0x400004, 0x80000, CRC(10ce42af) SHA1(530B2A6E2D13B2694BD611B31B056B7458FD1571) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92br_13.bin", 0x400006, 0x80000, CRC(32cf5af3) SHA1(43972C07F5CCF01B0CE0727541590C3C6B97C300) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2ced ) // Drakon 7.1
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2ced_23b.8f", 0x000000, 0x80000, CRC(8628f0e2) SHA1(da1f89ccbfb175d39f7e5c69c1c7088205109187) )
+ ROM_LOAD16_WORD_SWAP( "sf2ced_22b.7f", 0x080000, 0x80000, CRC(b7b87a54) SHA1(ab441c30ba6b0e2e8b9785d77b96535357818e0b) )
+ ROM_LOAD16_WORD_SWAP( "sf2ced_21a.6f", 0x100000, 0x80000, CRC(b4f13bef) SHA1(5e6501c157890899848bccb34db06b3570e84c17) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2ceda ) // Drakon unknown version
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2ceda_23b.8f", 0x000000, 0x80000, CRC(a8a81db7) SHA1(dd0d12ea049292bad48f1009419581695ea41618) )
+ ROM_LOAD16_WORD_SWAP( "sf2ceda_22b.7f", 0x080000, 0x80000, CRC(3c9ee969) SHA1(714fb726c336c5807a1b1d2112e89d3aa5c4af91) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2ceh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2ceh.23", 0x000000, 0x80000, CRC(25dc14c8) SHA1(fc7b5de3a50d7d9ee977091bab5f82f824e386f2) )
+ ROM_LOAD16_WORD_SWAP( "sf2ceh.22", 0x080000, 0x80000, CRC(1c9dd91c) SHA1(66fbd10958d3b9f027bc3ba85c99b649cf866ab7) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+// sf2ceea with one rom changed
+ROM_START( sf2cehk )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2cehk.23", 0x000000, 0x80000, CRC(a233c4c8) SHA1(0446ac1bcd9ded6951c6857600e5c30f56d8c430) )
+ ROM_LOAD16_WORD_SWAP( "s92_22a.7f", 0x080000, 0x80000, CRC(99f1cca4) SHA1(64111eba81d743fc3fd51d7a89cd0b2eefcc900d) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+// sf2ceea with 2 roms changed
+ROM_START( sf2cehp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2cehp.23", 0x000000, 0x80000, CRC(7796519f) SHA1(a420cdca5d5d7898a99afbc62cb33d17010f2def) )
+ ROM_LOAD16_WORD_SWAP( "sf2cehp.22", 0x080000, 0x80000, CRC(a99e9f23) SHA1(9c8a10d1382b289eb2fb0be73198c30e44e0c8af) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+// sf2ceea with 2 roms changed
+ROM_START( sf2cejem )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2cejem.23", 0x000000, 0x80000, CRC(13310615) SHA1(6749c62d19fe554c521ca28e80175ec84450a45d) )
+ ROM_LOAD16_WORD_SWAP( "sf2cejem.22", 0x080000, 0x80000, CRC(d73ee1f8) SHA1(8d6083bf7487867146f091a1cb4bae8d539de46e) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.6f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2h9 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf3a-1.040", 0x000000, 0x80000, CRC(9e6d058a) SHA1(8c9adca7b65dc929c325c0a62304d24dc0902c08) )
+ ROM_LOAD16_BYTE( "sf3a-3.040", 0x000001, 0x80000, CRC(518d8404) SHA1(635d8ac07126caf3c623d1f28aad38c5bc4c4bae) )
+ ROM_LOAD16_BYTE( "sf3a-2", 0x100000, 0x20000, CRC(fca4fc1e) SHA1(2b05d67443af099f95ef50f5e25d7a74b957e7a5) )
+ ROM_LOAD16_BYTE( "sf3a-4", 0x100001, 0x20000, CRC(cfdd6f54) SHA1(2aa3f5a7b36930185382c64712cc0cfceb6f1ab3) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2h10 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sfu9-1.040", 0x000000, 0x80000, CRC(95306baf) SHA1(471d1578607ae1090aa46cb111a8c2745d1fd47b) )
+ ROM_LOAD16_BYTE( "sfu9-3.040", 0x000001, 0x80000, CRC(21024d5f) SHA1(986b3910ce749f4ad42e1f86537a8fc3f0f3f867) )
+ ROM_LOAD16_BYTE( "sfu9-2.020", 0x100000, 0x40000, CRC(0b3fe5dd) SHA1(9b66cb867da61595f53d1c9e6b48c6bb7e06e1e0) )
+ ROM_LOAD16_BYTE( "sfu9-4.020", 0x100001, 0x40000, CRC(dbee7b18) SHA1(e56af12fc9d30e92d37e688ff621ea09abb94b53) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2h11 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sfu7-1.040", 0x000000, 0x80000, CRC(866a9b31) SHA1(92f89084293b69a9d5cd8d282ffaaca0739f1b03) )
+ ROM_LOAD16_BYTE( "sfu7-3.040", 0x000001, 0x80000, CRC(f3a45593) SHA1(0ba0d05f904ac17cd34c0a7c9dd0a20759ff4e78) )
+ ROM_LOAD16_BYTE( "sfu7-2.010", 0x100000, 0x20000, CRC(d1707134) SHA1(5bfdf7bc57bdb85183647ebb175346070dd102ee) )
+ ROM_LOAD16_BYTE( "sfu7-4.010", 0x100001, 0x20000, CRC(cd1d5666) SHA1(8befd2c324eb29bdad6fc8fb2554cdfaf9808f9b) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2h11.key", 0x000000, 0x000080, CRC(822729a2) SHA1(acaadef38fd97dba215c13688061cee87d877c19) )
+ROM_END
+
+ROM_START( sf2h12 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sfu8-1.040", 0x000000, 0x80000, CRC(10ec67fe) SHA1(9eb30a0f64bf29028f89f9af74cb9d840ed197e2) )
+ ROM_LOAD16_BYTE( "sfu8-3.040", 0x000001, 0x80000, CRC(92eb3a1c) SHA1(0ee294c8b82b100f98da697562f9644b71cabcdd) )
+ ROM_LOAD16_BYTE( "sfu8-2.010", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
+ ROM_LOAD16_BYTE( "sfu8-4.010", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2h11.key", 0x000000, 0x000080, CRC(822729a2) SHA1(acaadef38fd97dba215c13688061cee87d877c19) )
+ROM_END
+
+ROM_START( sf2h13 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "222-040.13", 0x000000, 0x80000, CRC(ec6f5cb3) SHA1(24b3fc88a08a721985b053120997090bc394bc8e) )
+ ROM_LOAD16_BYTE( "196-040.13", 0x000001, 0x80000, CRC(0e9ac52b) SHA1(2c5faf7d8b598f2110f389aefa1a02e2281382ee) )
+ ROM_LOAD16_BYTE( "221-010.13", 0x100000, 0x20000, CRC(8226c11c) SHA1(9588bd64e338901394805aca8a234f880674dc60) )
+ ROM_LOAD16_BYTE( "sfu8-4.010", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_10.bin", 0x400000, 0x80000, CRC(3c042686) SHA1(307e1ca8ad0b11f3265b7e5467ba4c90f90ec97f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_11.bin", 0x400002, 0x80000, CRC(8b7e7183) SHA1(c8eaedfbddbf0b83311d2dbb9e19a1efef0dffa9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_12.bin", 0x400004, 0x80000, CRC(293c888c) SHA1(5992ea9aa90fdd8b9dacca9d2a1fdaf25ac2cb65) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s2t_13.bin", 0x400006, 0x80000, CRC(842b35a4) SHA1(35864a140a0c8d76501e69b2e01bc4ad76f27909) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2jbh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf2jbh_30h.11e", 0x00000, 0x20000, CRC(021594e9) SHA1(59cddadc2c37665813b1868536fa297d3668ec8a) )
+ ROM_LOAD16_BYTE( "sf2jbh_37h.11f", 0x00001, 0x20000, CRC(92a5f669) SHA1(7fb4c7b6dd29148a9c2b5c49f29b763d45fa0973) )
+ ROM_LOAD16_BYTE( "sf2jbh_31h.12e", 0x40000, 0x20000, CRC(7e4af671) SHA1(86391415edc6d6669eec586be91d78e9c6ce6d34) )
+ ROM_LOAD16_BYTE( "sf2jbh_38h.12f", 0x40001, 0x20000, CRC(4723f268) SHA1(1e8d41a72f99de8eeca36c8894fa2b3ba450b83f) )
+ ROM_LOAD16_BYTE( "sf2jbh_28h.9e", 0x80000, 0x20000, CRC(3c33abd7) SHA1(4f6b6ac28a76f1e1a8de00dc0e8f789b648909a8) )
+ ROM_LOAD16_BYTE( "sf2jbh_35h.9f", 0x80001, 0x20000, CRC(6a6c2e9a) SHA1(ee41bc762fd487920ae18f82d7b259f0472fc73c) )
+ ROM_LOAD16_BYTE( "sf2jbh_29a.10e", 0xc0000, 0x20000, CRC(0bb77024) SHA1(71f501fd50a6658b1b2cb5f3c8d9961dce9beeb5) )
+ ROM_LOAD16_BYTE( "sf2jbh_36a.10f", 0xc0001, 0x20000, CRC(48256574) SHA1(bc9b151000fd75233129a3dd1140e224734cab49) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "sf2_06.8a", 0x000000, 0x80000, CRC(22c9cc8e) SHA1(b9194fb337b30502c1c9501cd6c64ae4035544d4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_08.10a", 0x000002, 0x80000, CRC(57213be8) SHA1(3759b851ac0904ec79cbb67a2264d384b6f2f9f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_05.7a", 0x000004, 0x80000, CRC(ba529b4f) SHA1(520840d727161cf09ca784919fa37bc9b54cc3ce) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_07.9a", 0x000006, 0x80000, CRC(4b1b33a8) SHA1(2360cff890551f76775739e2d6563858bff80e41) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_15.8c", 0x200000, 0x80000, CRC(2c7e2229) SHA1(357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_17.10c", 0x200002, 0x80000, CRC(b5548f17) SHA1(baa92b91cf616bc9e2a8a66adc777ffbf962a51b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_14.7c", 0x200004, 0x80000, CRC(14b84312) SHA1(2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2_16.9c", 0x200006, 0x80000, CRC(5e9cd89a) SHA1(f787aab98668d4c2c54fc4ba677c0cb808e4f31e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2bh_25.8d", 0x400000, 0x80000, CRC(4267b696) SHA1(af65e3b2cc3b7a7f39d5e7e598da7f4c9d351eea) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2bh_27.10d", 0x400002, 0x80000, CRC(df9b9146) SHA1(2029aa59c1646af0fd7fa06f353edcbf7f7792de) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2bh_24.7d", 0x400004, 0x80000, CRC(a08a9786) SHA1(80a79e45c003fbc95cc5cd0d037b55f2f7fec64c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sf2bh_26.9d", 0x400006, 0x80000, CRC(80feac31) SHA1(f16ce88634d2328eae93f8128423bb311cac88e6) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD( "sf2c.key", 0x000000, 0x000080, CRC(fdc05d86) SHA1(f828e6171a271bc12a5c9ab5be237562e263ccdb) )
+ROM_END
+
+ROM_START( sf2koryuh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "u222.rom", 0x000000, 0x80000, CRC(9236a79a) SHA1(39c47b0b0ca2f5f569ff07ebb91040b95d0cb43b) )
+ ROM_LOAD16_BYTE( "u196.rom", 0x000001, 0x80000, CRC(2722741f) SHA1(d2a2ea29894fbf731f6c8573b85e046dd52e2c97) )
+ ROM_LOAD16_BYTE( "u221.rom", 0x100000, 0x20000, CRC(64e6e091) SHA1(32ec05db955e538d4ada26d19ee50926f74b684f) )
+ ROM_LOAD16_BYTE( "u195.rom", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2pun )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2pun.23", 0x000000, 0x80000, CRC(8c3bb8f8) SHA1(756ae3980c15d037ff6e70d0c309d9caed6bac4f) )
+ ROM_LOAD16_WORD_SWAP( "sf2pun.22", 0x080000, 0x80000, CRC(0786f114) SHA1(4a6b52c98c839fcde2b7f425739569abc74c91f4) )
+ ROM_LOAD16_WORD_SWAP( "sf2red.21", 0x100000, 0x80000, CRC(52c486bb) SHA1(b7df7b10faa4c9a2f86ebf64cd63ac148d62dd09) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2sl73a )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sf2sl73a.23", 0x000000, 0x80000, CRC(190f5419) SHA1(7fc7f3b6788d25b190bda3b3b6cf76a396d7d586) )
+ ROM_LOAD16_WORD_SWAP( "sf2sl73a.22", 0x080000, 0x80000, CRC(2b329193) SHA1(b1576b610e384fbeaef7be711888fb3fa3f10b1a) )
+ ROM_LOAD16_WORD_SWAP( "sf2sl73a.21", 0x100000, 0x80000, CRC(b4f13bef) SHA1(5e6501c157890899848bccb34db06b3570e84c17) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2ce.key", 0x000000, 0x000080, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) )
+ROM_END
+
+ROM_START( sf2th )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "u222", 0x000000, 0x80000, CRC(03991fba) SHA1(6c42bf15248640fdb3e98fb01b0a870649deb410) )
+ ROM_LOAD16_BYTE( "4.amf", 0x000001, 0x80000, CRC(39f15a1e) SHA1(901c4fea76bf5bff7330ed07ffde54cdccdaa680) )
+ ROM_LOAD16_BYTE( "u221.rom", 0x100000, 0x20000, CRC(64e6e091) SHA1(32ec05db955e538d4ada26d19ee50926f74b684f) )
+ ROM_LOAD16_BYTE( "stf2th-4.bin", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+ // These map over the MASK roms on this bootleg
+ ROMX_LOAD( "stf2th-10.bin",0x400000, 0x20000, CRC(84427d1b) SHA1(f988a2b53c8cc46eeb8032084f24966a539b3734) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stf2th-12.bin",0x400002, 0x20000, CRC(55bc790c) SHA1(a1114b89f6fa4487210477676984c77ad94b5ef8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stf2th-9.bin", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stf2th-11.bin",0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2tha )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "t-2.u52", 0x000000, 0x80000, CRC(0d305e8b) SHA1(7094160abbf24c119a575d93e3fe1ab84b537de0) )
+ ROM_LOAD16_BYTE( "t-1.u36", 0x000001, 0x80000, CRC(137d8665) SHA1(cf4805a11ab614ce5b7e1302ac14ba50fb01e5f4) )
+ ROM_LOAD16_BYTE( "t-4.u54", 0x100000, 0x40000, CRC(0b3fe5dd) SHA1(9b66cb867da61595f53d1c9e6b48c6bb7e06e1e0) )
+ ROM_LOAD16_BYTE( "t-3.u38", 0x100001, 0x40000, CRC(dbee7b18) SHA1(e56af12fc9d30e92d37e688ff621ea09abb94b53) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+ // These map over the MASK roms on this bootleg
+ ROMX_LOAD( "r04.bin", 0x400000, 0x20000, CRC(84427d1b) SHA1(f988a2b53c8cc46eeb8032084f24966a539b3734) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "r06.bin", 0x400002, 0x20000, CRC(55bc790c) SHA1(a1114b89f6fa4487210477676984c77ad94b5ef8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "r03.bin", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "r05.bin", 0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2tlona )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "tl4mt.1", 0x000000, 0x80000, CRC(158635ca) SHA1(878b56064861993ac92fbd88eb1117d3680fe7d7) )
+ ROM_LOAD16_BYTE( "tl4m.2", 0x000001, 0x80000, CRC(882cd1c4) SHA1(0cb971756352b1022ecd309b1bc3688c1f1acbd8) )
+ ROM_LOAD16_BYTE( "u221t.1m", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
+ ROM_LOAD16_BYTE( "u195t.1m", 0x100001, 0x20000, CRC(db7e1f72) SHA1(1ca99a3b425ac137f3c104cf4deb50d9431dacdd) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2tlonb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "tl4m.1", 0x000000, 0x80000, CRC(afc7bd18) SHA1(ef7af7fb3563073b96563274ec48783feb2be757) )
+ ROM_LOAD16_BYTE( "tl4m.2", 0x000001, 0x80000, CRC(882cd1c4) SHA1(0cb971756352b1022ecd309b1bc3688c1f1acbd8) )
+ ROM_LOAD16_BYTE( "u221.1m", 0x100000, 0x20000, CRC(d1707134) SHA1(5bfdf7bc57bdb85183647ebb175346070dd102ee) )
+ ROM_LOAD16_BYTE( "u195.1m", 0x100001, 0x20000, CRC(cd1d5666) SHA1(8befd2c324eb29bdad6fc8fb2554cdfaf9808f9b) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2tlonc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf11-1.040", 0x000000, 0x80000, CRC(afc7bd18) SHA1(ef7af7fb3563073b96563274ec48783feb2be757) )
+ ROM_LOAD16_BYTE( "sf11-3.040", 0x000001, 0x80000, CRC(882cd1c4) SHA1(0cb971756352b1022ecd309b1bc3688c1f1acbd8) )
+ ROM_LOAD16_BYTE( "sf11-2.010", 0x100000, 0x20000, CRC(f8a5cd53) SHA1(f474e6d24f25ca9a126bd68b02089a0161e2cc0d) )
+ ROM_LOAD16_BYTE( "sf11-4.010", 0x100001, 0x20000, CRC(db7e1f72) SHA1(1ca99a3b425ac137f3c104cf4deb50d9431dacdd) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2turyu )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "u222-f83.040", 0x000000, 0x100000, CRC(47468198) SHA1(D68D6342DA9B53163F36F44517F6DADF35E2A279) )
+ ROM_LOAD16_BYTE( "u196-99d.040", 0x000001, 0x100000, CRC(47d34191) SHA1(6718FDC8A0DAFEBCA7C35553CC270D16CE3F5D3E) )
+ ROM_LOAD16_BYTE( "u221-59e.010", 0x100000, 0x40000, CRC(5507bac9) SHA1(7797CA13CB02DB469DCBA00A07B1517C3586423E) )
+ ROM_LOAD16_BYTE( "u195-472.010", 0x100001, 0x40000, CRC(7755a20a) SHA1(60ED4009C9C767A375A754C06C124EF81BA45F5A) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2yyc3d5 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf3d5-1040", 0x000000, 0x80000, CRC(bcdd2c3a) SHA1(eff98e425f283afc69064e8bc73f769e0aab93ed) )
+ ROM_LOAD16_BYTE( "sf3d5-3040", 0x000001, 0x80000, CRC(01965987) SHA1(42abce3aa983ac4143490c0ab2e772a154905860) )
+ ROM_LOAD16_BYTE( "sf3d5-2010", 0x100000, 0x20000, CRC(dd2e1d31) SHA1(22b341a7365ba4a52c9ee2244d68409c5e86bcf0) )
+ ROM_RELOAD( 0x140000, 0x20000 )
+ ROM_LOAD16_BYTE( "u195.rom", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+ ROM_RELOAD( 0x140001, 0x20000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2yyc3g )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf3g-1040", 0x000000, 0x80000, CRC(c90559a5) SHA1(f45563c79cf5ce610f92ca84c96d337cf6c9a979) )
+ ROM_LOAD16_BYTE( "sf3g-3040", 0x000001, 0x80000, CRC(81f36682) SHA1(53776084c973c0b7aafb203e8efcfd5f5c659c93) )
+ ROM_LOAD16_BYTE( "sf3g-2010", 0x100000, 0x20000, CRC(9eee20a1) SHA1(a6769744094dc0e65f9f34ef36929e7e8ae6155b) )
+ ROM_RELOAD( 0x140000, 0x20000 )
+ ROM_LOAD16_BYTE( "sf3g-4010", 0x100001, 0x20000, CRC(6ac3d875) SHA1(ab4384d7a9194b2628836013d3d9f275d55c77bb) )
+ ROM_RELOAD( 0x140001, 0x20000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+ROM_START( sf2yyc6 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sf6-1040", 0x000000, 0x80000, CRC(ccd74822) SHA1(5f64585335ccc0fb1a97339532a6694076e2b6f2) )
+ ROM_LOAD16_BYTE( "sf6-3040", 0x000001, 0x80000, CRC(2a48b557) SHA1(2e74925a925f86619d4f8e633af718a5eaa8c585) )
+ ROM_LOAD16_BYTE( "u221.rom", 0x100000, 0x20000, CRC(64e6e091) SHA1(32ec05db955e538d4ada26d19ee50926f74b684f) )
+ ROM_RELOAD( 0x140000, 0x20000 )
+ ROM_LOAD16_BYTE( "u195.rom", 0x100001, 0x20000, CRC(c95e4443) SHA1(28417dee9ccdfa65b0f4a92aa29b90279fe8cd85) )
+ ROM_RELOAD( 0x140001, 0x20000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sf2th.key", 0x000000, 0x000080, CRC(67e80fca) SHA1(e937bc4cf0e05ba93c32bc47d65c5b027bc2b48e) )
+ROM_END
+
+
+ROM_START( sk2h1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sgyx.800", 0x000000, 0x100000, CRC(3703a650) SHA1(6cb8d6f99df5e2e5cf04aee8737bb585f9328ffd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "sgyxz_snd2.bin", 0x00000, 0x10000, CRC(210c376f) SHA1(0d937c86078d0a106f5636b7daf5fc0266c2c2ec) )
+ ROM_RELOAD( 0x8000, 0x10000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h1q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sgyx.800", 0x000000, 0x100000, CRC(3703a650) SHA1(6cb8d6f99df5e2e5cf04aee8737bb585f9328ffd) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sgyx-1.160", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "sgyx-2.160", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "fg-c.040", 0x000000, 0x80000, CRC(d046fc86) SHA1(0ae0b9310e3a122cb69df4bb23672149794242f0) )
+ ROM_LOAD16_BYTE( "fg-a.040", 0x000001, 0x80000, CRC(f176ee8f) SHA1(fba357c31774aeecef88f70df4294514585df3a0) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "sgyxz_snd2.bin", 0x00000, 0x10000, CRC(210c376f) SHA1(0d937c86078d0a106f5636b7daf5fc0266c2c2ec) )
+ ROM_RELOAD( 0x8000, 0x10000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h2q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "fg-c.040", 0x000000, 0x80000, CRC(d046fc86) SHA1(0ae0b9310e3a122cb69df4bb23672149794242f0) )
+ ROM_LOAD16_BYTE( "fg-a.040", 0x000001, 0x80000, CRC(f176ee8f) SHA1(fba357c31774aeecef88f70df4294514585df3a0) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sgyx-1.160", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "sgyx-2.160", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h3 ) // same as MAME sgyxz - here until it gets fixed
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "sgyxz_prg2.bin", 0x000000, 0x20000, CRC(95429c83) SHA1(e981624d018132e5625a66113b6ac4fc44e55cf7) )
+ ROM_CONTINUE( 0x80000, 0x20000 )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0xc0000, 0x20000 )
+ ROM_LOAD16_BYTE( "sgyxz_prg1.bin", 0x000001, 0x20000, CRC(d8511929) SHA1(4de9263778f327693f4d1e21b48e43806f673487) )
+ ROM_CONTINUE( 0x80001, 0x20000 )
+ ROM_CONTINUE( 0x40001, 0x20000 )
+ ROM_CONTINUE( 0xc0001, 0x20000 )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "sgyxz_snd2.bin", 0x00000, 0x10000, CRC(210c376f) SHA1(0d937c86078d0a106f5636b7daf5fc0266c2c2ec) )
+ ROM_RELOAD( 0x8000, 0x10000 )
+
+ ROM_REGION( 0x040000, "oki", 0 )
+ ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h4q ) // wofjheo in mame++
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk2h4q.23", 0x000000, 0x100000, CRC(03eeb1cf) SHA1(4adffc4eadc5174e2185e923021fa17b113c8a7e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sgyx-1.160", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "sgyx-2.160", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h5q ) // wofhrvwx in mame++
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk2h5q.23", 0x000000, 0x100000, CRC(750dfc1d) SHA1(05967381446b54cea501c09ec033b16708f895e1) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sgyx-1.160", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "sgyx-2.160", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h6q ) // wofhbw in mame++
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk2h6q.23", 0x000000, 0x100000, CRC(8080acc7) SHA1(b9e9d126c4e63748bd77947e9c50888c701ea165) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "sgyx-1.160", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "sgyx-2.160", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code + space for decrypted opcodes */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h1.key", 0x000000, 0x000080, CRC(dccefd4d) SHA1(01050b7d1805503a5c7098dfb98d8afa79cf0fe0) )
+ROM_END
+
+ROM_START( sk2h11 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "htk2a_23b.rom", 0x000000, 0x80000, CRC(1b17fc85) SHA1(d8c2bd31474dce2330adb05b859ce3fd13040d23) )
+ ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h12 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "htk2ah_23b.rom", 0x000000, 0x80000, CRC(6e3ff382) SHA1(14ef2c708da134f925efa0c3886a104c3ef9e5d7) )
+ ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h13 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2ah_23b.rom", 0x000000, 0x80000, CRC(48fd83c6) SHA1(8f33124979d7ca4c2af10f2a98b524e5463458cc) )
+ ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h14 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "wofchs.23", 0x000000, 0x80000, CRC(2d70231a) SHA1(57c05c5685e8b3b6de81ab4eed05bd2ad08dbe57) )
+ ROM_LOAD16_WORD_SWAP( "wofchs.22", 0x080000, 0x80000, CRC(5eac2794) SHA1(76c50ef1fea35f86122ede62acfcd56abb866608) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "wofchs.5", 0x200000, 0x80000, CRC(38a90eb1) SHA1(6a2d1fe437341e9339a21dc2a1746f35d8fe9a38) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "wofchs.7", 0x200002, 0x80000, CRC(fa1e10ca) SHA1(da0a81f470a48069ff4b595706d3d7ad2a6e3c37) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "wofchs.6", 0x200004, 0x80000, CRC(0b0b156c) SHA1(9301ab5480290057b151cc70a45cfa2a75b31f23) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "wofchs.8", 0x200006, 0x80000, CRC(76b9e160) SHA1(a8dfbd15488c18ca3730b9c493140f50ab89a64e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h15 ) // wofaehp
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk2h15.8f", 0x000000, 0x80000, CRC(261766b2) SHA1(25cf51d0fb90e4a4e39492162f67de0defbc4285) )
+ ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h16 ) // wofahp2
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk2h16.8f", 0x000000, 0x80000, CRC(7aed1751) SHA1(e5e10cae12a90c10831ad62669f8c2293a2ab263) )
+ ROM_LOAD16_WORD_SWAP( "sk2h16.7f", 0x080000, 0x80000, CRC(89483936) SHA1(8f5d19e9c9660908d2bc256418e63b2c89f64fc4) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk2h21 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "3js_23.rom", 0x000000, 0x80000, CRC(1ebb76da) SHA1(a3d9643a03e964477abd5164202566fe4a11b902) )
+ ROM_LOAD16_WORD_SWAP( "3js_22.rom", 0x080000, 0x80000, CRC(f41d6153) SHA1(a2cafea8402ab58e8022020242397e7cdce57aff) )
+ ROM_LOAD16_BYTE( "3js_24.rom", 0x0c0000, 0x20000, CRC(06ead409) SHA1(7289afd15fecd185350d2705476d74baa6909782) )
+ ROM_LOAD16_BYTE( "3js_28.rom", 0x0c0001, 0x20000, CRC(8ba934e6) SHA1(b9fb1d000a90cf2dbe2113130939c146f16a776e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3js_gfx5.rom", 0x200000, 0x80000, CRC(94b58f82) SHA1(937e7bb74e47f7ed670f63cdf7e502cf6ffe09c8), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3js_gfx7.rom", 0x200002, 0x80000, CRC(df4fb386) SHA1(4eece42595084dbab1fa2c603f231fc67efb292d), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3js_gfx6.rom", 0x200004, 0x80000, CRC(c22c5bd8) SHA1(4dd3598ca9cbbceabfb28b1b0d8a4879fcdb9a13), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "3js_gfx8.rom", 0x200006, 0x80000, CRC(f9cfd08b) SHA1(cd55ef014705d8b07c3eb9dafdbf2a831ea25b7c), ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "3js_09.rom", 0x00000, 0x08000, CRC(21ce044c) SHA1(425fd8d33d54f35ef90d68a7530db7a0eafb600d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "3js_18.rom", 0x000000, 0x20000, CRC(ac6e307d) SHA1(b490ce625bb7ce0904b0fd121fbfbd5252790f7a) )
+ ROM_LOAD( "3js_19.rom", 0x020000, 0x20000, CRC(068741db) SHA1(ab48aff639a7ac218b7d5304145e10e92d61fd9f) )
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h21.key", 0x000000, 0x000080, CRC(287d8a40) SHA1(46aa717f599f88d32afb5ecc0bf43c2cbe6892d0) )
+ROM_END
+
+ROM_START( sk2h22 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "cx2.040", 0x00000, 0x20000, CRC(c01a6d2f) SHA1(c1e69e075bb01141c026bf0722a64659e1802184) )
+ ROM_CONTINUE( 0x80000, 0x20000 )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0xc0000, 0x20000 )
+ ROM_LOAD16_BYTE( "cx1.040", 0x00001, 0x20000, CRC(fd95e677) SHA1(42a10e73bd30498dc39cd66abf73680799ebe8b0) )
+ ROM_CONTINUE( 0x80001, 0x20000 )
+ ROM_CONTINUE( 0x40001, 0x20000 )
+ ROM_CONTINUE( 0xc0001, 0x20000 )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tx-a.160", 0x000000, 0x80000, CRC(ae348da2) SHA1(e86ab38e75c46ff2a4fa974fbbd3c2d2f67cef36), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "tx-b.160", 0x000002, 0x80000, CRC(384a6db0) SHA1(57273edce545a7fb4026cb4c705d97d71f24ea6f), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 )
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h31 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "k6b.040", 0x000000, 0x80000, CRC(7b365108) SHA1(e4ef6e7267ecf36d8b15c7df0351b38777cd559d) )
+ ROM_LOAD16_BYTE( "k6a.040", 0x000001, 0x80000, CRC(10488a51) SHA1(061d5139f4289cbca9e0a743954d9c65a9384c06) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "k6a.160", 0x000000, 0x80000, CRC(a121180d) SHA1(9501399479a5892db0c818637459f77540794b85), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "k6b.160", 0x000002, 0x80000, CRC(a4db96c4) SHA1(6798c0cbd9a1f8f4704c5cb9e19e8873149d3c33), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 )
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h31q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "k6b.040", 0x000000, 0x80000, CRC(7b365108) SHA1(e4ef6e7267ecf36d8b15c7df0351b38777cd559d) )
+ ROM_LOAD16_BYTE( "k6a.040", 0x000001, 0x80000, CRC(10488a51) SHA1(061d5139f4289cbca9e0a743954d9c65a9384c06) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "k6a.160", 0x000000, 0x80000, CRC(a121180d) SHA1(9501399479a5892db0c818637459f77540794b85) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "k6b.160", 0x000002, 0x80000, CRC(a4db96c4) SHA1(6798c0cbd9a1f8f4704c5cb9e19e8873149d3c33) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h32 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "3js.800", 0x000000, 0x100000, CRC(812f9200) SHA1(ddf4261c21762e8168d83393a59aa1450762a89a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "k6a.160", 0x000000, 0x80000, CRC(a121180d) SHA1(9501399479a5892db0c818637459f77540794b85), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "k6b.160", 0x000002, 0x80000, CRC(a4db96c4) SHA1(6798c0cbd9a1f8f4704c5cb9e19e8873149d3c33), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 )
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h32q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "3js.800", 0x000000, 0x100000, CRC(812f9200) SHA1(ddf4261c21762e8168d83393a59aa1450762a89a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "k6a.160", 0x000000, 0x80000, CRC(a121180d) SHA1(9501399479a5892db0c818637459f77540794b85) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "k6b.160", 0x000002, 0x80000, CRC(a4db96c4) SHA1(6798c0cbd9a1f8f4704c5cb9e19e8873149d3c33) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h33 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "c-c47b.040", 0x000000, 0x80000, CRC(b1809761) SHA1(99a17ed193654f61622eb721e20b69894c96d3d8) )
+ ROM_LOAD16_BYTE( "a-2402.040", 0x000001, 0x80000, CRC(4fab4232) SHA1(d8ffd06cce73e1c4bc6abb69a2e81277ce901563) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 )
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h33q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "c-c47b.040", 0x000000, 0x80000, CRC(b1809761) SHA1(99a17ed193654f61622eb721e20b69894c96d3d8) )
+ ROM_LOAD16_BYTE( "a-2402.040", 0x000001, 0x80000, CRC(4fab4232) SHA1(d8ffd06cce73e1c4bc6abb69a2e81277ce901563) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h34 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "one.800", 0x000000, 0x100000, CRC(0507584d) SHA1(5a9df64b7c2c54c5aa0d4c9486c7404157c6119e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 )
+ ROM_LOAD( "9", 0x00000, 0x08000, CRC(86fe8a97) SHA1(cab82bcd0f49bcb40201b439cfdd10266f46752a) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18", 0x00000, 0x20000, CRC(c04be720) SHA1(2e544e0a0358b6afbdf826d35d9c4c59e4787a93) )
+ ROM_LOAD( "19", 0x20000, 0x20000, CRC(fbb8d8c1) SHA1(8a7689bb7ed56243333133cbacf01a0ae825201e) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h34q )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "one.800", 0x000000, 0x100000, CRC(0507584d) SHA1(5a9df64b7c2c54c5aa0d4c9486c7404157c6119e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h31.key", 0x000000, 0x000080, CRC(d741a7b6) SHA1(c7b64e8634945cc8e8f7f508b1bb7ad5ccf95c83) )
+ROM_END
+
+ROM_START( sk2h35 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "c-d140.040", 0x000000, 0x80000, CRC(e6d933a6) SHA1(c1f08bbbfc855bbc96b844eed7b1e4f9a0a07fbf) )
+ ROM_LOAD16_BYTE( "a-0050.040", 0x000001, 0x80000, CRC(403eaead) SHA1(ce6d061e5ee91de779c8d0c19bed273dc4769900) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk2h21.key", 0x000000, 0x000080, CRC(287d8a40) SHA1(46aa717f599f88d32afb5ecc0bf43c2cbe6892d0) )
+ROM_END
+
+
+ROM_START( sk3p1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk3p1.23", 0x000000, 0x80000, CRC(b5f70324) SHA1(9cd8ca9dab1b2642810f50534186b575b1378ab8) )
+ ROM_LOAD16_WORD_SWAP( "sk3p1.22", 0x080000, 0x80000, CRC(5c453e70) SHA1(0ffad50e2f93881c6e9848f707eec7d0ee18f688) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk3p1.key", 0x000000, 0x000080, CRC(8ac48367) SHA1(aeeab2c3436009d05dd9caa1b1929af4d7e607ae) )
+ROM_END
+
+ROM_START( sk3p2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk3p1.23", 0x000000, 0x80000, CRC(b5f70324) SHA1(9cd8ca9dab1b2642810f50534186b575b1378ab8) )
+ ROM_LOAD16_WORD_SWAP( "sk3p2.22", 0x080000, 0x80000, CRC(55ed1b42) SHA1(0ea12b9298721aac20f351a894b4e7587bb38f88) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( sk3p3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sk3p3.23", 0x000000, 0x80000, CRC(29389b7d) SHA1(ccc4a7c4cb43abe9e8f9fd0d1a813f722473784f) )
+ ROM_LOAD16_WORD_SWAP( "sk3p3.22", 0x080000, 0x80000, CRC(a959df0c) SHA1(ec6d9f1f9363dee08ea267fab28d313e0b46d3da) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+
+ROM_START( slammastud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mbu_23ed.8f", 0x000000, 0x80000, CRC(7697273f) SHA1(d42ce6414b42db14305f0497fb760e8a3e868b9d) )
+ ROM_LOAD16_BYTE( "mbu_24b.9e", 0x080000, 0x20000, CRC(95d5e729) SHA1(df3be896e55c92eb50887a4317178a3d11048433) )
+ ROM_LOAD16_BYTE( "mbu_28b.9f", 0x080001, 0x20000, CRC(b1c7cbcb) SHA1(cf5ad72be4a055db876e7347b1826325b9bf81d9) )
+ ROM_LOAD16_BYTE( "mbu_25b.10e", 0x0c0000, 0x20000, CRC(a50d3fd4) SHA1(dc3d108c3bc27f45b8b2e11919ba2a86e05b41d1) )
+ ROM_LOAD16_BYTE( "mbu_29b.10f", 0x0c0001, 0x20000, CRC(08e32e56) SHA1(70ad78b079f777ec02089f0df20ce2baad7adce5) )
+ ROM_LOAD16_WORD_SWAP( "mbu_21a.6f", 0x100000, 0x80000, CRC(d5007b05) SHA1(c55e55908aeda40ca2318c76ccbc05d333676875) )
+ ROM_LOAD16_WORD_SWAP( "mbu_20a.5f", 0x180000, 0x80000, CRC(fc848af5) SHA1(cd3f6e50779b89ee57a9d08bfa1d58dea286457c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "mb-1m.3a", 0x000000, 0x80000, CRC(41468e06) SHA1(fb365798f2889a20eebaea2393c9c2c8827003c4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-3m.5a", 0x000002, 0x80000, CRC(f453aa9e) SHA1(24a103dc6f0dc96f8d0f6164ad732909c9cd2d6a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-2m.4a", 0x000004, 0x80000, CRC(2ffbfea8) SHA1(13e30133664a009686e1114c92b558bdbb91ea32) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-4m.6a", 0x000006, 0x80000, CRC(1eb9841d) SHA1(685da3e011a96b36be9f639a241b2f8f27da4629) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-5m.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-7m.9a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-6m.8a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-8m.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-10m.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-12m.5c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-11m.4c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mb-13m.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x8000, "user1", 0 )
+ ROM_COPY( "audiocpu", 0x00000, 0x00000, 0x8000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) )
+ ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) )
+ ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) )
+ ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) )
+ ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) )
+ ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) )
+ ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) )
+ ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "slammastud.key", 0x000000, 0x000080, CRC(ade2c2a3) SHA1(8d7a4249cf221ac24c4c66f7151a9edd7f263de5) )
+ROM_END
+
+
+ROM_START( stridergf )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) )
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) )
+ ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) )
+ ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) )
+ ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "stridefgf.8a", 0x000000, 0x80000, CRC(f92cc010) SHA1(7cec7f7cdc7efce28fd49ae0220a41d2fa811fd0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergf.10a", 0x000002, 0x80000, CRC(9abd7b1e) SHA1(cb00c37ad5b53daee8a1d7bb949adc3559561d13) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergf.4a", 0x000004, 0x80000, CRC(0dcc68b1) SHA1(9c3179082944a6ca105046a02cea38170e91696f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergf.6a", 0x000006, 0x80000, CRC(77f5debd) SHA1(796a1b6cda78cb5612c494dff52c3ac12c1d6531) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "strider.key", 0x000000, 0x000080, CRC(39065af5) SHA1(ffff84fd87e851718c564062564970677da923c9) )
+ROM_END
+
+ROM_START( stridergh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) )
+ ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) )
+ ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) )
+ ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) )
+ ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "stridergh.8a", 0x000000, 0x80000, CRC(ea572e97) SHA1(60fed8d1375334a815e18365a626eece9d07b1cd) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergh.10a", 0x000002, 0x80000, CRC(d0bb852f) SHA1(0079418eafd751cd7a47053ef30a2042626fea8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergh.4a", 0x000004, 0x80000, CRC(8c408787) SHA1(291c9bd8d73e3ed9913164a034098ba94da4c03a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "stridergh.6a", 0x000006, 0x80000, CRC(07ba4914) SHA1(007d978a0d100c6dc9d1942e5b641b3a4e8ad678) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x8000, "stars", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "strider.key", 0x000000, 0x000080, CRC(39065af5) SHA1(ffff84fd87e851718c564062564970677da923c9) )
+ROM_END
+
+
+ROM_START( tk2c1 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c1.23", 0x000000, 0x80000, CRC(9725b5f4) SHA1(28c72348769eac95753dd469859edb8ca1f0b120) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c2 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c2.23", 0x000000, 0x80000, CRC(eac7f675) SHA1(e5df8cfeb1ed32e7a8c5bb8e40035b6f8e5b6ec5) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c3 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c3.23", 0x000000, 0x80000, CRC(d3d14501) SHA1(700c41b9e03c8568291266e5b991dd34e1c6f9c2) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c4 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c4.23", 0x000000, 0x80000, CRC(f48bb903) SHA1(4aff9e8beb6a6bd32c9fdb83e28effa42234ab5c) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c5 ) // same as tk2h1 except for program roms
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c5.23", 0x000000, 0x80000, CRC(e91705df) SHA1(8c6969aae190b9e99d0879a7159718d8c2e9523c) )
+ ROM_LOAD16_WORD_SWAP( "tk2c19.22", 0x080000, 0x80000, CRC(4b2591c4) SHA1(8ba8efa94057fd7d183b9266009051ac81fe0581) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c6 ) // same as tk2h1 except for program roms - colours are a bit weird
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2j_23c.8f", 0x000000, 0x80000, CRC(9b215a68) SHA1(fc83ed26441fbfb15e21b093c7a6bed44b586e51) ) // from wofj
+ ROM_LOAD16_WORD_SWAP( "tk2c6.22", 0x080000, 0x80000, CRC(9fe4adf4) SHA1(ff1713880ad8b81d23f40dc3842aabcf6f444d65) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c7 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c7.23", 0x000000, 0x80000, CRC(44d321f3) SHA1(abea7e417e05413ed41ab222d5ccbdf6dcbecc53) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c8 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c8.23", 0x000000, 0x80000, CRC(bba39347) SHA1(296f8d124bde76dc5114a6210ed618dfa4d07d57) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c9 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c9.23", 0x000000, 0x80000, CRC(4f480a16) SHA1(b000f1ec2742e9403943b95bdd890069378dc9ed) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c10 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c10.23", 0x000000, 0x80000, CRC(643f9ef9) SHA1(2fe32edd38c2380a0dd7f9fc9bc44c4049d84646) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c11 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c11.23", 0x000000, 0x80000, CRC(58ea0ddc) SHA1(3510b09abd261a896fda855130fd867c92aa030b) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c12 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c12.23", 0x000000, 0x80000, CRC(98878d8d) SHA1(8a23813e0df0d9ef8fa2761ac355ef5da0f44021) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c13 ) // same as tk2h1 except for program roms
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c13.23", 0x000000, 0x80000, CRC(c1c0192c) SHA1(501225c58e25aaea4c0a4bb348f6a0150a742762) )
+ ROM_LOAD16_WORD_SWAP( "tk2c19.22", 0x080000, 0x80000, CRC(4b2591c4) SHA1(8ba8efa94057fd7d183b9266009051ac81fe0581) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c14 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c14.23", 0x000000, 0x80000, CRC(5bd65308) SHA1(15065656433bbf582c1910180a04298c13ff0b60) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c15 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c15.23", 0x000000, 0x80000, CRC(86b71709) SHA1(7a5c12966520b48d23f6a7f5661746cb9d714939) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c16 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c16.23", 0x000000, 0x80000, CRC(49b3eaf1) SHA1(fc6c5b0efbb4776bdfb47097ac58a9f6b452b136) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c17 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c20.23", 0x000000, 0x80000, CRC(341aa13d) SHA1(eed3be83078a86675068c52ca835fc27136a746b) ) // from tk2c20
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c18 ) // same as tk2h1 except for program roms
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c18.23", 0x000000, 0x80000, CRC(c6497c7d) SHA1(c6235edc15ccff4e8813690b1c4ea25de2b9858b) )
+ ROM_LOAD16_WORD_SWAP( "tk2c19.22", 0x080000, 0x80000, CRC(4b2591c4) SHA1(8ba8efa94057fd7d183b9266009051ac81fe0581) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c19 ) // same as tk2h1 except for program roms
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2j_23c.8f", 0x000000, 0x80000, CRC(9b215a68) SHA1(fc83ed26441fbfb15e21b093c7a6bed44b586e51) ) // from wofj
+ ROM_LOAD16_WORD_SWAP( "tk2c19.22", 0x080000, 0x80000, CRC(4b2591c4) SHA1(8ba8efa94057fd7d183b9266009051ac81fe0581) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c20 ) // same as tk2h1 except for program roms
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c20.23", 0x000000, 0x80000, CRC(341aa13d) SHA1(eed3be83078a86675068c52ca835fc27136a746b) )
+ ROM_LOAD16_WORD_SWAP( "tk2c19.22", 0x080000, 0x80000, CRC(4b2591c4) SHA1(8ba8efa94057fd7d183b9266009051ac81fe0581) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c21 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c21.23", 0x000000, 0x80000, CRC(288ab565) SHA1(834e2d5cef1d0ae486e201bedf6281540c5ded13) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c22 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c22.23", 0x000000, 0x80000, CRC(420b3a40) SHA1(6d06b980f4afdcde5ff4cc2509e3ee398b79a19c) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2c23 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2c23.23", 0x000000, 0x80000, CRC(f46755f1) SHA1(f6efa2d886f89d6ab95f919356b574a9b87ba69b) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xtk2j23h.bin", 0x000000, 0x80000, CRC(84d38575) SHA1(537f12180adfcea7bceb24b0fa9af9165dbbe2e4) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2j.23c", 0x00000, 0x80000, CRC(432a74ff) SHA1(5675970143134c0cc3ae4964a8817fafee7876fa) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2j2.23c", 0x00000, 0x80000, CRC(671b0c62) SHA1(7bba05e5e513edd878a30ef998b3beb4fd053cc6) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h4 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h4.23", 0x000000, 0x80000, CRC(8fa725f0) SHA1(81c89f5bf1d180356a66d1cd216ea73c6e69f6df) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h5 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h5_23c.8f", 0x000000, 0x80000, CRC(e1dd01d8) SHA1(2d243fa39c784ce5164c7a58ffd4884a60eac81c) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x480000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+ /// The load procedure for the chinese language is unknown
+ // These 2 roms have 0x10000 blank, then 0x9c00 data (chinese), then the remainder is blank
+ ROM_LOAD64_WORD( "tk2h5.gfx5", 0x400000, 0x10000, CRC(ec6e8689) SHA1(8e722292bfb5a4e8658bbd411a0ccce0956f9ad4))//, ROM_SKIP(1))// , ROM_GROUPWORD | ROM_SKIP(2) )
+ ROM_CONTINUE( 0x400000, 0x8000 )
+ ROM_CONTINUE( 0x400002, 0x8000 )
+ ROM_IGNORE(0x60000)
+ ROM_LOAD64_WORD( "tk2h5.gfx6", 0x400004, 0x10000, CRC(722787df) SHA1(31720e94195055a494bc923c75e20882b8b05f4a))//, ROM_SKIP(1))// , ROM_GROUPWORD | ROM_SKIP(2) )
+ ROM_CONTINUE( 0x400004, 0x8000 )
+ ROM_CONTINUE( 0x400006, 0x8000 )
+ ROM_IGNORE(0x60000)
+ //ROM_COPY( "gfx", 0x400000, 0x040000, 0x20000 ) // text on 3 intro screens
+ //ROM_COPY( "gfx", 0x400000, 0x380000, 0x20000 ) // text on actor descriptions
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h6 ) // same as tk2h1 except for first rom
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h6.23", 0x000000, 0x80000, CRC(08631657) SHA1(2d2e0f302dbd64bb8a37577171e6e2194524abdf) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h7 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h7.23", 0x000000, 0x80000, CRC(93347af2) SHA1(2b2f02e3529ebaa06ea55b5648aa988d0542f1c6) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h8 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h8.23", 0x000000, 0x80000, CRC(e5534d5a) SHA1(497abf790ad0450545f02a1614ef197492b71159) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except for the program roms
+ROM_START( tk2h9 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h9.23", 0x000000, 0x80000, CRC(cfce0b11) SHA1(16f2376c8666cd48ea4b30711b0a3b1508a97482) )
+ ROM_LOAD16_WORD_SWAP( "tk2h9.22", 0x080000, 0x80000, CRC(ae09e457) SHA1(1feb645d2371b58613db8d2eb871448b4b20041d) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h10 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h10.23", 0x000000, 0x80000, CRC(6dba1d2f) SHA1(310e9472d4da8ed4bdccdcd52004030b8799693c) )
+ ROM_LOAD16_WORD_SWAP( "tk2h10.22", 0x080000, 0x80000, CRC(7630fd8a) SHA1(02c2164f191c2efb647b517ee2e8f46d870f9c93) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except for the program roms
+ROM_START( tk2h11 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h11.23", 0x000000, 0x80000, CRC(a6f22395) SHA1(d2d8a6156c44383c48e4caf97799e231158b7cf2) )
+ ROM_LOAD16_WORD_SWAP( "tk2h11.22", 0x080000, 0x80000, CRC(11bcbbb9) SHA1(bebef41b4ce27fef3f037d8188903334a41b35f4) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except for the program roms
+ROM_START( tk2h12 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h12.23", 0x000000, 0x80000, CRC(6e392dd2) SHA1(b25f299dc7b8d87de1e42de97db04d3443eff167) )
+ ROM_LOAD16_WORD_SWAP( "tk2h12.22", 0x080000, 0x80000, CRC(838dff10) SHA1(56a9d5e2d9df843005f6bd0886f612a3c90b8e60) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h13 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h13.23", 0x000000, 0x80000, CRC(51979a5a) SHA1(9beaba7d06be4c2b893e6fd3a0dbc157537d9913) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h14 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h14.23", 0x000000, 0x80000, CRC(19f49030) SHA1(3e500db79361b747a75d7712f3367754ee8771c7) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h15 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h15.23", 0x000000, 0x80000, CRC(6c1683ee) SHA1(f22df63cae994fca6955f72313dd204a4734aa94) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x0000, 0x0080, CRC(522c909c) SHA1(e0d40a36bec025402590caaffcbc4e718748348a) )
+ROM_END
+
+ROM_START( tk2h16 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h16.23", 0x000000, 0x80000, CRC(86c23608) SHA1(0629d82779f6973514582e4a218f63429dccd080) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x0000, 0x0080, CRC(522c909c) SHA1(e0d40a36bec025402590caaffcbc4e718748348a) )
+ROM_END
+
+// same as tk2h1 except first rom
+ROM_START( tk2h17 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h17.23", 0x000000, 0x80000, CRC(7df522ad) SHA1(dece17bd0c3a0a10bb3433fe878da4e66e84cc9f) )
+ ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2h18 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2h18.8f", 0x000000, 0x80000, CRC(7896998d) SHA1(7f59015ec00232f2b40836127f143415678f7058) )
+ ROM_LOAD16_WORD_SWAP( "tk2h18.7f", 0x080000, 0x80000, CRC(43e57b1a) SHA1(f7469eb77a74601f94488c23466a6648a91fcbfc) )
+ ROM_LOAD16_WORD_SWAP( "tk2h18.6f", 0x100000, 0x80000, CRC(7a5f60c0) SHA1(b4d864e39811d1407ce2ba9580bd1e230edf37ff) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2h18.7a", 0x200000, 0x80000, CRC(10d0e577) SHA1(fbf4f13a2fe64031dda5a27fdf6accfef12c1ce2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2h18.8a", 0x200002, 0x80000, CRC(e23dd70e) SHA1(58faf44c00667331c9f7980e803788e4deb1bc25) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2h18.9a", 0x200004, 0x80000, CRC(e1d7664e) SHA1(d8d6acf51f8beda71d1b8f5318cd02485bebf8b5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2h18.10a", 0x200006, 0x80000, CRC(c121ed0c) SHA1(4ad1f8f9684d5041f60a3eb9f5e9580b3daa403a) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wof.key", 0x000000, 0x000080, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) )
+ROM_END
+
+ROM_START( tk2p2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2p2.23", 0x000000, 0x80000, CRC(898a4e67) SHA1(3f45cc2e15bd398bdc84303f6cde6322394f6456) )
+ ROM_LOAD16_WORD_SWAP( "tk2p2.22", 0x080000, 0x80000, CRC(e734ee51) SHA1(1dff1a6cccc1551a4489542ee1f5b38b2233349e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk3p1.key", 0x000000, 0x000080, CRC(8ac48367) SHA1(aeeab2c3436009d05dd9caa1b1929af4d7e607ae) )
+ROM_END
+
+ROM_START( tk2p3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2p3.8f", 0x000000, 0x80000, CRC(61cf24c1) SHA1(e075432449923e69310040a268f81b74c31f5bcc) )
+ ROM_LOAD16_WORD_SWAP( "tk2p3.7f", 0x080000, 0x80000, CRC(a3cd1c51) SHA1(459c90bea4045a8ad79a36529d169951ac802fc3) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+
+ROM_START( wofb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "3-f2ab.040", 0x000000, 0x80000, CRC(61fd0a01) SHA1(a7b5bdddd7b31645e33314c1d3649e1506cecfea) )
+ ROM_LOAD16_BYTE( "1-9207.040", 0x000001, 0x80000, CRC(7f59e24c) SHA1(34c294328d00c65086622bd15e17210f07f37237) )
+ ROM_LOAD16_BYTE( "4-d4d2.010", 0x100000, 0x20000, CRC(fe5eee87) SHA1(be1230f64c1e59ae3ff3e58593070613966ac79d) )
+ ROM_LOAD16_BYTE( "2-6c41.010", 0x100001, 0x20000, CRC(739379be) SHA1(897f61527213902fda04bc28339f1f4278bf5ae9) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "5-caf3.040", 0x000000, 0x40000, CRC(c8dcaa95) SHA1(bcaeaefd40ffa1b32e80457cffcc1ceab461af1d), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000 )
+ ROMX_LOAD( "6-034f.040", 0x000001, 0x40000, CRC(1ab0000c) SHA1(0d0004cc1725c38d140ecb8dc9666361b2d3e607), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000 )
+ ROMX_LOAD( "7-b0fa.040", 0x000002, 0x40000, CRC(8425ff6b) SHA1(9a051089c2a492b8c63484582f95c578704b6820), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000 )
+ ROMX_LOAD( "8-a6b7.040", 0x000003, 0x40000, CRC(24ce197b) SHA1(0ccdbd6f6a30e6d1479f8702c3e8561b16303550), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000 )
+ ROMX_LOAD( "9-8a2c.040", 0x200000, 0x40000, CRC(9d20ef9b) SHA1(cbf3cb6bd7a73312e5061082554f2e17aae08621), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000 )
+ ROMX_LOAD( "10-7d24.040", 0x200001, 0x40000, CRC(90c93dd2) SHA1(d3d2b0bcbcbb21a41f986eb752ab114697eb9402), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000 )
+ ROMX_LOAD( "11-4171.040", 0x200002, 0x40000, CRC(219fd7e2) SHA1(af765eb7b275ed541c08e243b22b5c9f54c1a8ec), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000 )
+ ROMX_LOAD( "12-f56b.040", 0x200003, 0x40000, CRC(efc17c9a) SHA1(26429a9039bb249e17945508c16645c82f7f412a), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( wofes )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "wofes.23", 0x000000, 0x80000, CRC(4935e2ce) SHA1(e6b6e6499738579b3c4f5dff44c8930257fe619b) )
+ ROM_LOAD16_WORD_SWAP( "tk2e_22b.rom", 0x080000, 0x80000, CRC(479b3f24) SHA1(9fb8ae06856fe115addfb6794c28978a4f6716ec) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+ROM_START( woffr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2e_23bfr.rom", 0x000000, 0x80000, CRC(e006e81e) SHA1(dad6cd3a1175b6f366e8bf02d1af35af5f1b50cc) )
+ ROM_LOAD16_WORD_SWAP( "tk2e_22b.rom", 0x080000, 0x80000, CRC(479b3f24) SHA1(9fb8ae06856fe115addfb6794c28978a4f6716ec) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_gfx5fr.rom", 0x200000, 0x80000, CRC(1b6bc2b2) SHA1(3a5305d07271cffb9875fcbd2af52856a224548a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_gfx7fr.rom", 0x200002, 0x80000, CRC(3f1e5334) SHA1(a5c4795d65a916fc2d1a55153c4ca0ac5fbaf418) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_gfx6fr.rom", 0x200004, 0x80000, CRC(28c9d96f) SHA1(aa64a4572b10842b7f5f546e63493d501a16fd85) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2_gfx8fr.rom", 0x200006, 0x80000, CRC(b3b9a29e) SHA1(fe425356545544a9cf50409972d2893999896191) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "sk3p1.key", 0x000000, 0x000080, CRC(8ac48367) SHA1(aeeab2c3436009d05dd9caa1b1929af4d7e607ae) )
+ROM_END
+
+ROM_START( wofr1h )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tk2e_23b.8f", 0x000000, 0x80000, CRC(0fc9e89c) SHA1(7e098ad77172a16dc234b144c98eb6be433df215) )
+ ROM_LOAD16_WORD_SWAP( "tk2e_22b.7f", 0x080000, 0x80000, CRC(e3f7cbf1) SHA1(f22d799d13eef6ef24db4689b7ddb1ce4eca505b) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+// This is a rom kit to convert SF2 to WOF. Demo sound doesn't work. You only get one life. To get in-game sound
+// you need to select MONO in the setup screen.
+ROM_START( wofsf2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "wof_30.rom", 0x000000, 0x020000, CRC(15886428) SHA1(d528766346e52deb97b9f49f836064ab2891c6cd) )
+ ROM_LOAD16_BYTE( "wof_35.rom", 0x000001, 0x020000, CRC(2b9bd156) SHA1(ec12b4a5e0f257d852830a81d8a9ebe1aec12676) )
+ ROM_LOAD16_BYTE( "wof_31.rom", 0x040000, 0x020000, CRC(6dc0158b) SHA1(c148bea4b40b9a0c9bced022e42343973969cc20) )
+ ROM_LOAD16_BYTE( "wof_36.rom", 0x040001, 0x020000, CRC(8059bfaa) SHA1(64b81bd73ac908fe3d190593d3a274561c076708) )
+ ROM_LOAD16_BYTE( "wof_28.rom", 0x080000, 0x020000, CRC(ced09a8c) SHA1(9f4680aa702bbb435438dd09682008d1d8691763) )
+ ROM_LOAD16_BYTE( "wof_33.rom", 0x080001, 0x020000, CRC(2197546a) SHA1(0b47c97f6400bbf0ce44f44c611ce41030956bb1) )
+ ROM_LOAD16_BYTE( "wof_29.rom", 0x0c0000, 0x020000, CRC(8b9756cb) SHA1(28d86196640218d5a382421d109346ddf66f0cbf) )
+ ROM_LOAD16_BYTE( "wof_34.rom", 0x0c0001, 0x020000, CRC(80b129b4) SHA1(a7ef0160f2877e7ffb4b2ad74a80b2039fd7aa3d) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "wof_24.rom", 0x000000, 0x40000, CRC(4f5ac09b) SHA1(366c129f548cd2e7538e417e8e4cb95114c2b5d5) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_14.rom", 0x000001, 0x40000, CRC(b57ec247) SHA1(1b5716a00226aeb40f5a0259ed23b2d03e3c0cc0) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_26.rom", 0x000002, 0x40000, CRC(0b386f34) SHA1(828072969a2323aa57c51dac70a546029c48a96d) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_16.rom", 0x000003, 0x40000, CRC(e82ae539) SHA1(84d250a45b84a47ccc2e37438fb798fe034d4cd7) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_20.rom", 0x000004, 0x40000, CRC(81b9fb7a) SHA1(f248295c96b3debe27d418f47795359197df7238) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_10.rom", 0x000005, 0x40000, CRC(3ffbcb13) SHA1(cefb95ceaa9690a41186f6a5b88b89ed515f5f87) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_22.rom", 0x000006, 0x40000, CRC(cf2716d2) SHA1(74d74feee26c6bea0b09c4b7f91787bc2a38ef0d) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_12.rom", 0x000007, 0x40000, CRC(526d7a5b) SHA1(5a88173bba196ad79bf543b53772e1b4e49dedbc) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_25.rom", 0x200000, 0x40000, CRC(05bedaa0) SHA1(018c9ce5c36fd9a6f0c6331945449a95d72323f6) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_15.rom", 0x200001, 0x40000, CRC(2b19f8b8) SHA1(781faab68c330bfa17d04864c0611e6a3b1e571f) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_27.rom", 0x200002, 0x40000, CRC(cfef8c53) SHA1(ab6843ae95243c1fb81259f17681bfd30dff8d57) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_17.rom", 0x200003, 0x40000, CRC(1fb396cf) SHA1(1c09959d6a9f12037d0a8f87d5820c5e53412188) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_21.rom", 0x200004, 0x40000, CRC(8b484bc0) SHA1(393ea4b99ae1b0ed5c63e4ca7d2d6b504cf7da7e) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_11.rom", 0x200005, 0x40000, CRC(2bed2edc) SHA1(ac04e8713816dfd865ca0d54f9bf3c1891f4add3) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_23.rom", 0x200006, 0x40000, CRC(8afed1f9) SHA1(3a973e58a47558ec48e1fafb096c43dfaa247b58) , ROM_SKIP(7) )
+ ROMX_LOAD( "wof_13.rom", 0x200007, 0x40000, CRC(84030abe) SHA1(d67ed207a06c5a0b1db7f0b6da3088b3e45f23a4) , ROM_SKIP(7) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 )
+ ROM_LOAD( "3js_09.rom", 0x00000, 0x08000, CRC(21ce044c) SHA1(425fd8d33d54f35ef90d68a7530db7a0eafb600d) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "3js_18.rom", 0x000000, 0x20000, CRC(ac6e307d) SHA1(b490ce625bb7ce0904b0fd121fbfbd5252790f7a) )
+ ROM_LOAD( "3js_19.rom", 0x020000, 0x20000, CRC(068741db) SHA1(ab48aff639a7ac218b7d5304145e10e92d61fd9f) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofsf2.key", 0x000000, 0x000080, CRC(e4071226) SHA1(a7930d4b069f9d0e6e8510ef394066af5ade6974) )
+ROM_END
+
+// same as wofu except first rom
+ROM_START( wofud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "wofud.23", 0x000000, 0x80000, CRC(9bab998f) SHA1(6afe212d7816bde23aecb92f57d075c3e411d4c6) )
+ ROM_LOAD16_WORD_SWAP( "tk2u_22c.7f", 0x080000, 0x80000, CRC(f5af4774) SHA1(f6d53cf5b330e6d68f84da3e8c831a475585b93e) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
+ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
+ ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
+ ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
+ ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
+
+ ROM_REGION( 0x80, "control", 0 )
+ ROM_LOAD ( "wofch.key", 0x000000, 0x000080, CRC(23f2d0bb) SHA1(48ba9300bc2136e9583754a51d5ab2532eca85c6) )
+ROM_END
+
+
+
+/***************************************************************************
+
+ Driver Macros for HBMAME
+
+***************************************************************************/
+
+GAME( 1991, 3wondrud, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "hack", "Three Wonders (US 910520 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, captcocc, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Pipi899", "Captain Commando (OTHER COUNTRY 911014)(Characters Change hack by Pipi899 2009-01-20)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcomc, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Chinese 911202)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY"
+GAME( 1991, captcomh, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Shinwa Hack, World 911014)" , MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcoud, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (US 910928 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, captcovs, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Pipi899", "Captain Commando (1vs4 hack by Pipi899, cheat by sssskkkk 2009-04-25)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2000, cps1demo, 0, cps1frog, cps1frog, cps_state, cps1, ROT0, "Charles Doty", "Demo - CPS1", MACHINE_SUPPORTS_SAVE ) // no sound
+GAME( 2006, cps1frog, 0, cps1frog, cps1frog, cps_state, cps1, ROT0, "Rastersoft", "Frog Feast (CPS1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, cps1tests, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for sf2ce 2012-10-30)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, cps1testsa, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for sf2ce 2012-10-29)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, cps1testm, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for megaman 2012-10-30)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, cps1testma, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for megaman 2012-10-29)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, daimakb, ghouls, daimakb, daimakai, cps_state, cps1, ROT0, "hack", "Dai Makai-Mura (Japan, bootleg)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2008, dino08h2, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 3 v2.0f by Pipi899 2008-10-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, dino08h3, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 1 v1.1 by Pipi899 2008-10-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, dino08hp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 2 v1.1f by Pipi899 2008-10-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinob, dino, qsound, dino, cps_state, dinohb, ROT0, "hack", "Cadillacs and Dinosaurs (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinobt, dino, qsound, dino, cps_state, dino, ROT0, "hack", "Cadillacs and Dinosaurs (BT hack version)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, dinobtpp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (BT Power hack by Pipi899 2009-01-15)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinocgba, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinocgbb, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinocgbc, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dinoeh, dino, qsound, dinohz, cps_state, dinoeh, ROT0, "hack", "Cadillacs and Dinosaurs (unknown hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinoex, dino, qsound, dinohz, cps_state, dinoeh, ROT0, "hack", "Cadillacs and Dinosaurs (unknown hack2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinoh, dino, qsound, dinohz, cps_state, dinoh, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 1)" , MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dinoha, dino, qsound, dinohz, cps_state, dinoh, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dinohb, dino, qsound, dinohz, cps_state, dinohb, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dinohp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Hack by Pipi899 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dinohx, dino, qsound, dinohz, cps_state, dinoh, ROT0, "Winuxx", "Cadillacs and Dinosaurs (Revised hack by Winuxx)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2010, dinojp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs Kyouryuu-Shinseiki Plus (2010-02-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, dinorp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Hack by Pipi899 set 2 2008-08-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, dinosf2, dino, wofsf2, dino, cps_state, dinohunt, ROT0, "Arcadefixer", "Cadillacs and Dinosaurs (sf2 conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinoslice, dino, qsound, dino, cps_state, dino, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, dinouphp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Up Version hack by Pipi899 2009-01-15)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, dinoz, dino, qsound, dinohz, cps_state, dinoz, ROT0, "hack", "Cadillacs and Dinosaurs Z (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightb, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "hack", "Final Fight (Boss Hack dumped by Bonky0013, modified by MPT)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knight21, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (Japan, debug bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsa, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "LB70", "Knights of the Round (AngryUpdate By EEZEZY(LB70))", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsb2, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsh, knights, cps1_10MHz, knightsh, cps_state, cps1, ROT0, "hack", "Knights of the Round (hack)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsha, knights, cps1_10MHz, knightsh, cps_state, cps1, ROT0, "hack", "Knights of the Round (Hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsjb, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (Japan, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, knightsro, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Sebastian Mihai", "Knights of the Round (Romanian)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightud, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (US 911127 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kodd, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "hack", "The King of Dragons (World 910711 Phoenix Edition)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kodh, kod, cps1_10MHz, kodh, cps_state, cps1, ROT0, "Wangy2", "The King of Dragons (ETC 910711 hack)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kodsp, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Bonusjz", "The King of Dragons (Remix Special hack by Bonusjz)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kodud, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "hack", "The King of Dragons (US 910910 Phoenix Edition (16b/40p))", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pnicku, pnickj, cps1_10MHz, pnicku, cps_state, cps1, ROT0, "Capcom", "Pnickies (USA 940608)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherb, punisher, qsound, punisher, cps_state, punisherb,ROT0, "hack", "The Punisher (Bootleg)", MACHINE_SUPPORTS_SAVE)
+GAME( 2007, punisherf, punisher, qsound, punisher, cps_state, punisherb,ROT0, "Zhyxxxx", "The Punisher (Flash version) 2007-09-24", MACHINE_SUPPORTS_SAVE)
+GAME( 2009, punisherje1, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (SM Experience Edition hack by Zhyxxxx set 1 2009-06-12)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherjh, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (Shinwa Hack, Japan 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, punisherjh1, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (SQ Unlimited Version hack by Zhyxxxx 2009-06-08)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherjha, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (930422 Japan, SM Experience Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherud1, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (US 930422 Phoenix Edition (8b/32p))", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherud2, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (US 930422 Phoenix Edition (16b/40p))", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sf2bhj, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "hack", "Street Fighter II: The World Warrior (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2c, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "hack", "Street Fighter II: The World Warrior (Chinese 911210)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sf2cebr, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Neogeo BR team", "Street Fighter II': Champion Edition (Brasil 920313)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, sf2ced, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Sheng Long Hack v7.1)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 2012, sf2ceda, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Hack)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1999, sf2ceh, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (Hispanic 990804)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sf2cehk, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Kawada7278", "Street Fighter II': Champion Edition (Hack Unknown by Kawada7278)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sf2cehp, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Pipi899", "Street Fighter II': Champion Edition (Moves hack by Pipi899 2009-01-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sf2cejem, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Blackheart", "Street Fighter II': Champion Edition (Easy Moves hack by Blackheart 2009-07-30)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, sf2jbh, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Yumeji", "Street Fighter II: The World Warrior (Japan 910522 Boss Hack 2014 Edition by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, sf2koryuh, sf2ce, cps1_12MHz, sf2hack, cps_state, cps1, ROT0, "TT", "Street Fighter II': Champion Edition (Hack by TT)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
+GAME( 1992, sf2h9, sf2ce, cps1_12MHz, sf2, cps_state, sf2h9, ROT0, "Mega Co", "Street Fighter II: Champion Edition (H9, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2h10, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (H10, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2h11, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (H11, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2h12, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (H12, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2h13, sf2ce, cps1_12MHz, sf2j, cps_state, sf2h13, ROT0, "hack", "Street Fighter II' Turbo: Hyper Fighting (H13, bootleg)", MACHINE_SUPPORTS_SAVE ) // bad tile for Blanka on player select screen
+GAME( 2012, sf2pun, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Punishment Edition v1 Final)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, sf2sl73a, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Sheng Long v7.3a)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2th, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (Turbo set 1, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2tha, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (Turbo set 2, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2tlona, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Tu Long", "Street Fighter II': Champion Edition (Slay the Dragon set 1)", MACHINE_SUPPORTS_SAVE ) // These 2 are Chinese bootlegs
+GAME( 1992, sf2tlonb, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Tu Long", "Street Fighter II': Champion Edition (Slay the Dragon set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2tlonc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "Tu Long", "Street Fighter II': Champion Edition (Slay the Dragon set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2turyu, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II: Champion Edition (Tu Long prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2yyc3d5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (YYC, 3D5, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2yyc3g, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (YYC, 3G, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2yyc6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (YYC, 6, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h1, wof, sk2h3, sk2h1, cps_state, sk2h1, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h1q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H1Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h2, wof, sk2h3, sk2h1, cps_state, sk2h1, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h2q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H2Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h3, wof, sk2h3, sk2h3, cps_state, sk2h3, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h4q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H4Q)(Chinese hack v2.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sk2h5q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "Winuxx", "Sangokushi II (Asia 921005) (set H5Q)(Revised Version hack by Winuxx 2009-09-09)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, sk2h6q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "Winuxx", "Sangokushi II (Asia 921005) (set H6Q)(Boss hack by Winuxx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sk2h11, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H11)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sk2h12, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H12)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sk2h13, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H13)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sk2h14, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sk2h15, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Sangokushi II (Hack by Pipi899 2009-01-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sk2h16, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Sangokushi II (Easy Moves hack by Pipi899 2009-01-12)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h21, wof, qsound, sk2h21, cps_state, sk2h21, ROT0, "hack", "Sangokushi II (Asia 921005) (set H21)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h22, wof, sk2h3, sk2h21, cps_state, sk2h22, ROT0, "hack", "San Jian Sheng (Chinese bootleg of Sangokushi II, set H22)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h31, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H31)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h31q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H31Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h32, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H32)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sk2h32q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H32Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sk2h33, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H33)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sk2h33q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H33Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sk2h34, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H34)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sk2h34q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H34Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sk2h35, wof, sk2h35, wof, cps_state, sk2h35, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H35)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, sk3p1, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (red)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, sk3p2, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (green set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, sk3p3, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (green set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, slammastud, slammast, qsound, slammast, cps_state, slammast, ROT0, "hack", "Saturday Night Slam Masters (USA 930713 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, stridergf, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (Gfx fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, stridergh, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (gfx fix, uncensored)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c1, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Boss Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c2, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhang Fei Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c3, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Cao Zhi Jian Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c4, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Di Yu Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c5, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Di Yi Guan Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c6, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Fen Hong Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c7, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Guan Yu Chi Tu Ma Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c8, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Guan Yu Enhanced Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c9, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Han Guang Zhan Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c10, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Huang Zhong Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c11, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Xue Xing Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c12, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Jian Qi Zong Heng Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c13, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Mei ren Guan Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c14, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Shen Bing Li Qi Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c15, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Shen Jian + Jian Qi Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c16, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Shao Zhu Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c17, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Yu Jian Shu Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c18, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Ying Xiong Guan Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c19, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhao Huan Shou Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c20, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhao Huan Shou + Yu Jian Shu Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c21, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhao Yun Lian Ti Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c22, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhao Yun Sheng Long Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2c23, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Chinese hack: Zhao Yun Bao Li Enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h1, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h2, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h3, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h4, wof, qsound, wof, cps_state, wof, ROT0, "Shinwa", "Tenchi wo Kurau II (Hack by Shinwa)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h5, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Chinese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h6, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h7, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Hack by Pipi899 2009-01-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h8, wof, qsound, wof, cps_state, wof, ROT0, "Winuxx, Blackheart", "Tenchi wo Kurau II (Heaven and Earth Double Attack Test Version hack by Winuxx, Blackheart 2009-12-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h9, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Tenchi wo Kurau II (Easy Moves hack by Pipi899 2009-01-12)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, tk2h10, wof, qsound, wof, cps_state, wof, ROT0, "AXDX", "Tenchi wo Kurau 2 (Japan 921031)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, tk2h11, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Tenchi wo Kurau II (Modified SubVersion hack by Pipi899 2010-01-26)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h12, wof, qsound, wof, cps_state, wof, ROT0, "Rockywall", "Tenchi wo Kurau II (Playstation Version hack by Rockywall 2009-12-09)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h13, wof, qsound, wof, cps_state, wof, ROT0, "Blacheart", "Tenchi wo Kurau II (Revised Alternate hack by Blackheart 2009-12-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h14, wof, qsound, wof, cps_state, wof, ROT0, "LB70", "Tenchi wo Kurau II (Revised Version hack by Lb70 2009-03-21)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h15, wof, qsound, wof, cps_state, wof, ROT0, "Shinwa", "Tenchi wo Kurau II (Revised beta hack by Shinwa)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, tk2h16, wof, qsound, wof, cps_state, wof, ROT0, "Shinwa", "Tenchi wo Kurau II (Revised v1.0 hack by Shinwa)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tk2h17, wof, qsound, wof, cps_state, wof, ROT0, "Blackheart", "Tenchi wo Kurau II (Zhao Chain Revised v1.0 hack by Blackheart 2009-12-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, tk2h18, wof, qsound, wof, cps_state, wof, ROT0, "Zero", "Tenchi wo Kurau II (Power edition)(Japan 921031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tk2p2, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031) (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, tk2p3, wofch, qsound, wofch, cps_state, wof, ROT0, "Pipi899", "Tenchi Wo Kurau II (CPS Changer, Super Jian Huang hack by Pipi899 2010-01-29)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wofb, wof, qsound, wof, cps_state, wofb, ROT0, "hack", "Warriors of Fate (ETC 921002) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wofes, wof, qsound, wof, cps_state, wof, ROT0, "Chaihe", "Warriors of Fate (Enhanced Super Version hack by Chaihe)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, woffr, wof, qsound, wof, cps_state, wof, ROT0, "Arkatrad", "Warriors of Fate (France 030728)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wofr1h, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Warriors of Fate (ETC 921002) hack", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wofsf2, wof, wofsf2, wof, cps_state, cps1, ROT0, "hack", "Warriors of Fate (conversion for SF2 HW) (ETC 921031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wofud, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Warriors of Fate (USA 921031 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+
+/*************************************************************************************************************************/
+
+
+/***************************************************************************
+
+ Driver initialisation
+
+***************************************************************************/
+
+
+DRIVER_INIT_MEMBER( cps_state, dinoeh )
+{
+ machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x800180, 0x800181, write16_delegate(FUNC(cps_state::dinoh_sound_command_w),this));
+ kabuki_setup(dino_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, dinoh )
+{
+ /* Patch out Q-Sound test */
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ rom[0xaacf4/2] = 0x4e71;
+ DRIVER_INIT_CALL(dinoeh);
+}
+
+DRIVER_INIT_MEMBER( cps_state, dinoz )
+{
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ rom[0xaaa82/2] = 0x4e71; // Patch out Q-Sound test
+ rom[0x1cfb4/2] = 0x4e71; // patch out invalid instruction
+ DRIVER_INIT_CALL(dinoeh);
+}
+
+DRIVER_INIT_MEMBER( cps_state, dinohb )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Fix draw scroll
+// mem8[0x006c2] = 0xC0;
+// mem8[0x006c3] = 0xFF;
+ // Fix gfx
+ mem8[0x472] = 0xFC;
+ mem8[0x473] = 0x33;
+ mem8[0x474] = 0x0;
+ mem8[0x475] = 0x90;
+ mem8[0x476] = 0x80;
+ mem8[0x478] = 0x0;
+ mem8[0x479] = 0x1;
+ mem8[0x47A] = 0xFC;
+ mem8[0x47B] = 0x33;
+ mem8[0x47C] = 0x80;
+ mem8[0x47D] = 0x90;
+ mem8[0x47E] = 0x80;
+ mem8[0x480] = 0x2;
+ mem8[0x481] = 0x1;
+ mem8[0x482] = 0xFC;
+ mem8[0x483] = 0x33;
+ mem8[0x484] = 0xC0;
+ mem8[0x485] = 0x90;
+ mem8[0x486] = 0x80;
+ mem8[0x487] = 0x0;
+ mem8[0x488] = 0x4;
+ mem8[0x489] = 0x1;
+ mem8[0x48A] = 0xFC;
+ mem8[0x48B] = 0x33;
+ mem8[0x48C] = 0x0;
+ mem8[0x48D] = 0x91;
+ mem8[0x48E] = 0x80;
+ mem8[0x48F] = 0x0;
+ mem8[0x490] = 0x6;
+ mem8[0x491] = 0x1;
+ mem8[0x006cc] = 0x80;
+ mem8[0x006cd] = 0x00;
+ mem8[0x006ce] = 0x0C;
+ mem8[0x006cf] = 0x01;
+ mem8[0x006de] = 0x80;
+ mem8[0x006df] = 0x00;
+ mem8[0x006e0] = 0x10;
+ mem8[0x006e1] = 0x01;
+ mem8[0x006f0] = 0x80;
+ mem8[0x006f1] = 0x00;
+ mem8[0x006f2] = 0x14;
+ mem8[0x006f3] = 0x01;
+ mem8[0x00704] = 0x80;
+ mem8[0x00705] = 0x00;
+ mem8[0x00706] = 0x0E;
+ mem8[0x00707] = 0x01;
+ mem8[0x00718] = 0x80;
+ mem8[0x00719] = 0x00;
+ mem8[0x0071a] = 0x12;
+ mem8[0x0071b] = 0x01;
+ mem8[0x0072c] = 0x80;
+ mem8[0x0072d] = 0x00;
+ mem8[0x0072e] = 0x16;
+ mem8[0x0072f] = 0x01;
+ // Fix screen transitions
+ mem8[0x00b28] = 0x00;
+ mem8[0x00b29] = 0x70;
+ mem8[0x00b2a] = 0x00;
+ mem8[0x00b2b] = 0x72;
+ mem8[0x00b2c] = 0x3C;
+ mem8[0x00b2d] = 0x34;
+ mem8[0x00b32] = 0xC1;
+ mem8[0x00b33] = 0x20;
+ // Fix sound
+ mem8[0x00666] = 0xF1;
+ mem8[0x00667] = 0x00;
+ mem8[0x00668] = 0x02;
+ mem8[0x00669] = 0x80;
+ mem8[0xaaa6c] = 0xD8;
+ mem8[0xaaa6d] = 0x00;
+
+ kabuki_setup(dino_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, punisherb )
+{
+ // note: bytes are swapped around compared to rom_fill.
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Use standard ports
+ mem8[0xAB3] = 0x33;
+ mem8[0xAB4] = 0x30;
+ mem8[0xAB6] = 0x80;
+ mem8[0xAB7] = 0x0;
+ mem8[0xAB8] = 0x56;
+ mem8[0xAB9] = 0x1;
+ mem8[0xABA] = 0xED;
+ mem8[0xABB] = 0x33;
+ mem8[0xABC] = 0x32;
+ mem8[0xABD] = 0xDB;
+ mem8[0xABE] = 0x80;
+ mem8[0xABF] = 0x0;
+ mem8[0xAC0] = 0x48;
+ mem8[0xAC1] = 0x1;
+ mem8[0xAC2] = 0xED;
+ mem8[0xAC3] = 0x33;
+ mem8[0xAC4] = 0x34;
+ mem8[0xAC5] = 0xDB;
+ mem8[0xAC6] = 0x80;
+ mem8[0xAC7] = 0x0;
+ mem8[0xAC8] = 0x4A;
+ mem8[0xAC9] = 0x1;
+ mem8[0xACA] = 0xED;
+ mem8[0xACB] = 0x33;
+ mem8[0xACC] = 0x2E;
+ mem8[0xACD] = 0xDB;
+ mem8[0xACE] = 0x80;
+ mem8[0xAD0] = 0x52;
+ mem8[0xAD1] = 0x1;
+ mem8[0xAD2] = 0xED;
+ mem8[0xAD3] = 0x33;
+ mem8[0xAD4] = 0x88;
+ mem8[0xAD5] = 0xDB;
+ mem8[0xAD6] = 0x80;
+ mem8[0xAD7] = 0x0;
+ mem8[0xAD8] = 0x0;
+ mem8[0xAD9] = 0x1;
+ mem8[0xADA] = 0xED;
+ mem8[0xADB] = 0x33;
+ mem8[0xADC] = 0x8A;
+ mem8[0xADD] = 0xDB;
+ mem8[0xADE] = 0x80;
+ mem8[0xADF] = 0x0;
+ mem8[0xAE0] = 0x2;
+ mem8[0xAE1] = 0x1;
+ mem8[0xAE2] = 0xED;
+ mem8[0xAE3] = 0x33;
+ mem8[0xAE4] = 0x8C;
+ mem8[0xAE5] = 0xDB;
+ mem8[0xAE6] = 0x80;
+ mem8[0xAE7] = 0x0;
+ mem8[0xAE8] = 0x4;
+ mem8[0xAE9] = 0x1;
+ mem8[0xAEA] = 0xED;
+ mem8[0xAEB] = 0x33;
+ mem8[0xAEC] = 0x8E;
+ mem8[0xAED] = 0xDB;
+ mem8[0xAEE] = 0x80;
+ mem8[0xAEF] = 0x0;
+ mem8[0xAF0] = 0x6;
+ mem8[0xAF1] = 0x1;
+ mem8[0xAF2] = 0xED;
+ mem8[0xAF3] = 0x33;
+ mem8[0xAF4] = 0x90;
+ mem8[0xAF5] = 0xDB;
+ mem8[0xAF6] = 0x80;
+ mem8[0xAF7] = 0x0;
+ mem8[0xAF8] = 0x8;
+ mem8[0xAF9] = 0x1;
+ mem8[0xAFA] = 0xED;
+ mem8[0xAFB] = 0x50;
+ mem8[0xAFC] = 0x49;
+ mem8[0xAFD] = 0xDB;
+ mem8[0xAFE] = 0xFC;
+ mem8[0xAFF] = 0x33;
+ mem8[0xB00] = 0x3F;
+ mem8[0xB02] = 0x80;
+ mem8[0xB03] = 0x0;
+ mem8[0xB04] = 0x4C;
+ mem8[0xB05] = 0x1;
+ mem8[0xB06] = 0xFC;
+ mem8[0xB07] = 0x33;
+ mem8[0xB08] = 0x40;
+ mem8[0xB09] = 0x91;
+ mem8[0xB0A] = 0x80;
+ mem8[0xB0C] = 0xA;
+ mem8[0xB0D] = 0x1;
+ mem8[0xBA8] = 0x80;
+ mem8[0xBAA] = 0xC;
+ mem8[0xBAB] = 0x1;
+ mem8[0xBBA] = 0x80;
+ mem8[0xBBC] = 0x10;
+ mem8[0xBBD] = 0x1;
+ mem8[0xBCC] = 0x80;
+ mem8[0xBCE] = 0x14;
+ mem8[0xBCF] = 0x1;
+ mem8[0xBDA] = 0x80;
+ mem8[0xBDC] = 0xE;
+ mem8[0xBDD] = 0x1;
+ mem8[0xBEE] = 0x80;
+ mem8[0xBF0] = 0x12;
+ mem8[0xBF1] = 0x1;
+ mem8[0xC02] = 0x80;
+ mem8[0xC04] = 0x16;
+ mem8[0xC05] = 0x1;
+ // Transitions
+ mem8[0x42b5] = 0;
+ // Q sound
+ mem8[0x4DBC] = 0x0;
+ mem8[0x4DBE] = 0x58;
+ mem8[0x4DBF] = 0x0;
+ mem8[0x4DC0] = 0xF9;
+ mem8[0x4DC1] = 0x41;
+ mem8[0x4DC2] = 0xF1;
+ mem8[0x4DC3] = 0x0;
+ mem8[0x4DC4] = 0x0;
+ mem8[0x4DC5] = 0x80;
+ mem8[0x4DC6] = 0x28;
+ mem8[0x4DC7] = 0x4A;
+ mem8[0x4DC8] = 0x1F;
+ mem8[0x4DC9] = 0x0;
+ mem8[0x4DCA] = 0x0;
+ mem8[0x4DCB] = 0x6A;
+ mem8[0x4DCC] = 0x4A;
+ mem8[0x4DCD] = 0x0;
+ mem8[0x4DCE] = 0xED;
+ mem8[0x4DCF] = 0x49;
+ mem8[0x4DD0] = 0x96;
+ mem8[0x4DD1] = 0xE2;
+ mem8[0x4DD2] = 0xF4;
+ mem8[0x4DD3] = 0x49;
+ mem8[0x4DD4] = 0x0;
+ mem8[0x4DD5] = 0x0;
+ mem8[0x4DD6] = 0x40;
+ mem8[0x4DD7] = 0x6;
+ mem8[0x4DD8] = 0x10;
+ mem8[0x4DDA] = 0x40;
+ mem8[0x4DDB] = 0x2;
+ mem8[0x4DDC] = 0xFF;
+ mem8[0x4DDD] = 0xF;
+ mem8[0x4DDE] = 0x40;
+ mem8[0x4DDF] = 0x3B;
+ mem8[0x4DE0] = 0xE8;
+ mem8[0x4DE1] = 0xDA;
+ mem8[0x4DE2] = 0x5C;
+ mem8[0x4DE3] = 0x11;
+ mem8[0x4DE4] = 0x1;
+ mem8[0x4DE6] = 0x5C;
+ mem8[0x4DE7] = 0x11;
+ mem8[0x4DE8] = 0x3;
+ mem8[0x4DE9] = 0x0;
+ mem8[0x4DEA] = 0x5C;
+ mem8[0x4DEB] = 0x11;
+ mem8[0x4DEC] = 0x7;
+ mem8[0x4DED] = 0x0;
+ mem8[0x4DEE] = 0x5C;
+ mem8[0x4DEF] = 0x11;
+ mem8[0x4DF0] = 0x9;
+ mem8[0x4DF1] = 0x0;
+ mem8[0x4DF2] = 0x1C;
+ mem8[0x4DF3] = 0x30;
+ mem8[0x4DF4] = 0x40;
+ mem8[0x4DF5] = 0x11;
+ mem8[0x4DF6] = 0xD;
+ mem8[0x4DF7] = 0x0;
+ mem8[0x4DF8] = 0x5C;
+ mem8[0x4DF9] = 0x11;
+ mem8[0x4DFA] = 0xF;
+ mem8[0x4DFB] = 0x0;
+ mem8[0x4DFC] = 0x5C;
+ mem8[0x4DFD] = 0x11;
+ mem8[0x4DFE] = 0x11;
+ mem8[0x4E00] = 0x5C;
+ mem8[0x4E01] = 0x11;
+ mem8[0x4E02] = 0x17;
+ mem8[0x4E04] = 0x5C;
+ mem8[0x4E05] = 0x11;
+ mem8[0x4E06] = 0x19;
+ mem8[0x4E07] = 0x0;
+ mem8[0x4E08] = 0x5C;
+ mem8[0x4E09] = 0x11;
+ mem8[0x4E0A] = 0x13;
+ mem8[0x4E0B] = 0x0;
+ mem8[0x4E0C] = 0x5C;
+ mem8[0x4E0D] = 0x11;
+ mem8[0x4E0E] = 0x15;
+ mem8[0x4E0F] = 0x0;
+ mem8[0x4E10] = 0x7C;
+ mem8[0x4E11] = 0x11;
+ mem8[0x4E12] = 0x0;
+ mem8[0x4E14] = 0x1F;
+ mem8[0x4E16] = 0x75;
+ mem8[0x4E17] = 0x4E;
+ // Sprites
+ mem8[0x14CA0] = 0x90;
+ mem8[0x14CA3] = 0x0;
+ mem8[0x14CB0] = 0x90;
+ mem8[0x14CB3] = 0x40;
+ mem8[0x14F68] = 0xFC;
+ mem8[0x14F69] = 0x28;
+ mem8[0x14F6A] = 0x0;
+ mem8[0x14F6D] = 0x1;
+
+ kabuki_setup(punisher_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sf2h9 )
+{
+ /* Patch out protection check */
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ rom[0xc0670/2] = 0x4e71;
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sf2h13 )
+{
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+
+ // Fix scroll
+ rom[0x1d22a/2] = 0x0120;
+ // Fix bg layer
+ rom[0x1d270/2] = 0x0166;
+ // Fix gfx
+ rom[0x1d470/2] = 0x0170;
+
+ // Fix title gfx
+ rom[0x21bec/2] = 0x0083;
+ rom[0x21cf8/2] = 0x828e;
+ rom[0x21cfa/2] = 0x829e;
+ rom[0x21cfc/2] = 0x82ae;
+ rom[0x21d06/2] = 0x827f;
+ rom[0x21d08/2] = 0x828f;
+ rom[0x21d0a/2] = 0x829f;
+ rom[0x21d0c/2] = 0x82af;
+ rom[0x21d16/2] = 0x827e;
+ rom[0x21d18/2] = 0x82a0;
+ rom[0x21d1a/2] = 0x822c;
+ rom[0x21d1c/2] = 0x823c;
+ rom[0x21d2a/2] = 0x822d;
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, wofb )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Fix gfx
+ mem8[0x506] = 0xE7;
+ mem8[0x507] = 0x48;
+ mem8[0x508] = 0xFE;
+ mem8[0x509] = 0xFF;
+ mem8[0x50A] = 0xF8;
+ mem8[0x50B] = 0x4B;
+ mem8[0x6ABC] = 0x6;
+ mem8[0x6ABD] = 0x1;
+ // Fix sound
+ mem8[0x764E] = 0x71;
+ mem8[0x7650] = 0x71;
+ mem8[0x7651] = 0x4E;
+ // Fix screen transitions
+ mem8[0x5D236] = 0xFC;
+ mem8[0x5D237] = 0x28;
+ mem8[0x5D238] = 0x0;
+ mem8[0x5D23B] = 0x1;
+
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h35 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Patch Q sound protection? check
+ mem8[0x5A1A] = 0x00;
+ mem8[0x5A1B] = 0x67;
+ mem8[0x5A1C] = 0x56;
+ mem8[0x5A1D] = 0x00;
+ mem8[0x5A1E] = 0x7C;
+ mem8[0x5A1F] = 0x20;
+ mem8[0x5A20] = 0xF1;
+ mem8[0x5A21] = 0x00;
+ mem8[0x5A22] = 0x00;
+ mem8[0x5A23] = 0x80;
+ mem8[0x5A24] = 0x28;
+ mem8[0x5A25] = 0x4A;
+ mem8[0x5A26] = 0x1F;
+ mem8[0x5A27] = 0x00;
+ mem8[0x5A28] = 0x00;
+ mem8[0x5A29] = 0x6A;
+ mem8[0x5A40] = 0x5C;
+ mem8[0x5A41] = 0x11;
+ mem8[0x5A42] = 0x01;
+ mem8[0x5A43] = 0x00;
+ mem8[0x5A44] = 0x5C;
+ mem8[0x5A45] = 0x11;
+ mem8[0x5A46] = 0x03;
+ mem8[0x5A47] = 0x00;
+ mem8[0x5A4A] = 0x07;
+ mem8[0x5A4B] = 0x00;
+ mem8[0x5A4C] = 0x5C;
+ mem8[0x5A4D] = 0x11;
+ mem8[0x5A4E] = 0x09;
+ mem8[0x5A4F] = 0x00;
+ mem8[0x5A50] = 0x5C;
+ mem8[0x5A51] = 0x31;
+ mem8[0x5A52] = 0x0C;
+ mem8[0x5A53] = 0x00;
+ mem8[0x5A54] = 0x5C;
+ mem8[0x5A55] = 0x11;
+ mem8[0x5A56] = 0x0F;
+ mem8[0x5A57] = 0x00;
+ mem8[0x5A58] = 0x5C;
+ mem8[0x5A59] = 0x11;
+ mem8[0x72A6] = 0x71;
+ mem8[0x72A7] = 0x4E;
+ mem8[0x72A8] = 0x71;
+ mem8[0x72A9] = 0x4E;
+ mem8[0x72AA] = 0x71;
+ mem8[0x72AB] = 0x4E;
+ mem8[0x72AC] = 0x71;
+ mem8[0x72AD] = 0x4E;
+ mem8[0x72AE] = 0x71;
+ mem8[0x72AF] = 0x4E;
+ mem8[0x72B0] = 0x71;
+ mem8[0x72B1] = 0x4E;
+ mem8[0x72B2] = 0x39;
+ mem8[0x72B3] = 0x30;
+ mem8[0x72B4] = 0xF1;
+ mem8[0x72B5] = 0x00;
+ mem8[0x72B6] = 0xFE;
+ mem8[0x72B7] = 0x9F;
+ mem8[0x72B8] = 0x00;
+ mem8[0x72B9] = 0x0C;
+ /* enable coin slots 1 and 2 */
+ mem8[0x71bc] = 0x0c;
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h1q )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Stage Order
+ mem8[0x72a6] = 0x00;
+ // Disable Sprite Recoding
+ mem8[0x5d858] = 0x00;
+ mem8[0x5d859] = 0x61;
+ mem8[0x5d85a] = 0xe6;
+ mem8[0x5d85b] = 0x01;
+ mem8[0x5d890] = 0x6d;
+ mem8[0x5d891] = 0x0c;
+ mem8[0x5d892] = 0x00;
+ mem8[0x5d893] = 0x90;
+ mem8[0x5d894] = 0xd2;
+ mem8[0x5d895] = 0xe3;
+ mem8[0x5d8e8] = 0x90;
+ mem8[0x5d8e9] = 0x00;
+ mem8[0x5d8ea] = 0x00;
+ mem8[0x5d8eb] = 0x00;
+ mem8[0x5d8f8] = 0x90;
+ mem8[0x5d8f9] = 0x00;
+ mem8[0x5d8fa] = 0x00;
+ mem8[0x5d8fb] = 0x40;
+ // Patch protection? check
+ mem8[0xf11ec] = 0x71;
+ mem8[0xf11ed] = 0x4e;
+ mem8[0xf11ee] = 0x71;
+ mem8[0xf11ef] = 0x4e;
+ // Patch Q sound protection? check
+ mem8[0x5A0E] = 0x39;
+ mem8[0x5A0F] = 0x30;
+ mem8[0x5A10] = 0xF1;
+ mem8[0x5A12] = 0xFE;
+ mem8[0x5A13] = 0x9F;
+ mem8[0x5A14] = 0x00;
+ mem8[0x5A15] = 0x0C;
+ mem8[0x5A16] = 0x77;
+ mem8[0x5A17] = 0x00;
+ mem8[0x5A18] = 0xF4;
+ mem8[0x5A19] = 0x66;
+ mem8[0x5A1A] = 0xF9;
+ mem8[0x5A1B] = 0x4E;
+ mem8[0x5A1C] = 0x00;
+ mem8[0x5A1E] = 0xB2;
+ mem8[0x5A1F] = 0x72;
+ mem8[0x5A20] = 0x7C;
+ mem8[0x5A21] = 0x20;
+ mem8[0x5A22] = 0xF1;
+ mem8[0x5A23] = 0x00;
+ mem8[0x5A24] = 0x00;
+ mem8[0x5A25] = 0x80;
+ mem8[0x5A26] = 0x7C;
+ mem8[0x5A27] = 0x11;
+ mem8[0x5A29] = 0x00;
+ mem8[0x5A2A] = 0x01;
+ mem8[0x5A2C] = 0x7C;
+ mem8[0x5A2D] = 0x11;
+ mem8[0x5A2E] = 0x10;
+ mem8[0x5A2F] = 0x00;
+ mem8[0x5A30] = 0x0F;
+ mem8[0x5A31] = 0x00;
+ mem8[0x5A32] = 0x7C;
+ mem8[0x5A33] = 0x11;
+ mem8[0x5A34] = 0x00;
+ mem8[0x5A35] = 0x00;
+ mem8[0x5A36] = 0x07;
+ mem8[0x5A38] = 0x7C;
+ mem8[0x5A39] = 0x11;
+ mem8[0x5A3A] = 0x00;
+ mem8[0x5A3B] = 0x00;
+ mem8[0x5A3C] = 0x09;
+ mem8[0x5A3D] = 0x00;
+ mem8[0x5A3E] = 0x7C;
+ mem8[0x5A3F] = 0x11;
+ mem8[0x5A40] = 0x00;
+ mem8[0x5A41] = 0x00;
+ mem8[0x5A42] = 0x0C;
+ mem8[0x5A44] = 0x41;
+ mem8[0x5A48] = 0x7C;
+ mem8[0x5A4A] = 0x00;
+ mem8[0x5A4C] = 0x11;
+ mem8[0x5A4D] = 0x00;
+ mem8[0x5A4E] = 0x7C;
+ mem8[0x5A4F] = 0x11;
+ mem8[0x5A50] = 0x00;
+ mem8[0x5A51] = 0x00;
+ mem8[0x5A52] = 0x17;
+ mem8[0x5A54] = 0x7C;
+ mem8[0x5A56] = 0x00;
+ mem8[0x5A58] = 0x19;
+ mem8[0x5A59] = 0x00;
+ mem8[0x5A5A] = 0x7C;
+ mem8[0x5A5B] = 0x11;
+ mem8[0x5A5C] = 0x00;
+ mem8[0x5A5D] = 0x00;
+ mem8[0x5A5E] = 0x13;
+ mem8[0x5A60] = 0x7C;
+ mem8[0x5A62] = 0x00;
+ mem8[0x5A64] = 0x15;
+ mem8[0x5A65] = 0x00;
+ mem8[0x5A66] = 0x7C;
+ mem8[0x5A67] = 0x11;
+ mem8[0x5A68] = 0x00;
+ mem8[0x5A69] = 0x00;
+ mem8[0x5A6A] = 0x1F;
+ mem8[0x5A6C] = 0xF9;
+ mem8[0x5A6D] = 0x4E;
+ mem8[0x5A6E] = 0x05;
+ mem8[0x5A70] = 0x2C;
+ mem8[0x5A71] = 0xE8;
+ mem8[0x729A] = 0xF9;
+ mem8[0x729C] = 0x00;
+ mem8[0x729D] = 0x00;
+ mem8[0x729E] = 0x0E;
+ mem8[0x729F] = 0x5A;
+ mem8[0x5E826] = 0xF9;
+ mem8[0x5E827] = 0x4E;
+ mem8[0x5E828] = 0x00;
+ mem8[0x5E82A] = 0x20;
+ mem8[0x5E82B] = 0x5A;
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h1 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Stage Order
+ mem8[0x72a6] = 0x00;
+ // Disable Sprite Recoding
+ mem8[0x5d858] = 0x00;
+ mem8[0x5d859] = 0x61;
+ mem8[0x5d85a] = 0xe6;
+ mem8[0x5d85b] = 0x01;
+ mem8[0x5d890] = 0x6d;
+ mem8[0x5d891] = 0x0c;
+ mem8[0x5d892] = 0x00;
+ mem8[0x5d893] = 0x90;
+ mem8[0x5d894] = 0xd2;
+ mem8[0x5d895] = 0xe3;
+ mem8[0x5d8e8] = 0x90;
+ mem8[0x5d8e9] = 0x00;
+ mem8[0x5d8ea] = 0x00;
+ mem8[0x5d8eb] = 0x00;
+ mem8[0x5d8f8] = 0x90;
+ mem8[0x5d8f9] = 0x00;
+ mem8[0x5d8fa] = 0x00;
+ mem8[0x5d8fb] = 0x40;
+ // Patch protection? check
+ mem8[0xf11ec] = 0x71;
+ mem8[0xf11ed] = 0x4e;
+ mem8[0xf11ee] = 0x71;
+ mem8[0xf11ef] = 0x4e;
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h3 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Disable Sprite Recoding
+ mem8[0x5d8e8] = 0x90;
+ mem8[0x5d8eb] = 0x00;
+ mem8[0x5d8f8] = 0x90;
+
+ mem8[0x5d858] = 0x00;
+ mem8[0x5d859] = 0x61;
+ mem8[0x5d85a] = 0xe6;
+ mem8[0x5d85b] = 0x01;
+
+ mem8[0x5d890] = 0x6d;
+ mem8[0x5d891] = 0x0c;
+ mem8[0x5d892] = 0x00;
+ mem8[0x5d893] = 0x90;
+ mem8[0x5d894] = 0xd2;
+ mem8[0x5d895] = 0xe3;
+
+ //Transitions
+ //mem8[0x02449] = 0x07; // fixed by above code
+
+ //Protections
+ mem8[0x708da] = 0xff;
+ mem8[0x708db] = 0xff;
+ mem8[0x708dc] = 0xff;
+ mem8[0x708dd] = 0xff;
+ mem8[0xf11eb] = 0x60;
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h21 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Patch Q sound protection? check
+ mem8[0x0554] = 0xb4;
+ mem8[0x0555] = 0x54;
+ mem8[0x5A50] = 0x5c;
+ mem8[0x5A51] = 0x31;
+ mem8[0x5A52] = 0x0c;
+ mem8[0x5A53] = 0x00;
+ mem8[0x5A54] = 0x5c;
+ mem8[0x5A55] = 0x11;
+ mem8[0x5A56] = 0x0f;
+ mem8[0x5A58] = 0x5c;
+ mem8[0x5A59] = 0x11;
+ mem8[0x5A5A] = 0x11;
+ mem8[0x5A5B] = 0x00;
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h22 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Protection
+ mem8[0xE7AD0] = 0x71;
+ mem8[0xE7AD1] = 0x4E;
+
+ // Disable Sprite Recoding
+ mem8[0x5df26] = 0x90;
+ mem8[0x5df29] = 0x00;
+ mem8[0x5df36] = 0x90;
+
+ mem8[0x5de96] = 0x00;
+ mem8[0x5de97] = 0x61;
+ mem8[0x5de98] = 0xe6;
+ mem8[0x5de99] = 0x01;
+
+ mem8[0x5dece] = 0x6d;
+ mem8[0x5decf] = 0x0c;
+ mem8[0x5ded0] = 0x00;
+ mem8[0x5ded1] = 0x90;
+ mem8[0x5ded2] = 0xd2;
+ mem8[0x5ded3] = 0xe3;
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER( cps_state, sk2h31 )
+{
+ uint8_t *mem8 = memregion("maincpu")->base();
+ // Disable Sprite Recoding
+ mem8[0x5df26] = 0x90;
+ mem8[0x5df29] = 0x00;
+ mem8[0x5df36] = 0x90;
+
+ mem8[0x5de96] = 0x00;
+ mem8[0x5de97] = 0x61;
+ mem8[0x5de98] = 0xe6;
+ mem8[0x5de99] = 0x01;
+
+ mem8[0x5dece] = 0x6d;
+ mem8[0x5decf] = 0x0c;
+ mem8[0x5ded0] = 0x00;
+ mem8[0x5ded1] = 0x90;
+ mem8[0x5ded2] = 0xd2;
+ mem8[0x5ded3] = 0xe3;
+
+ // Patch Q sound protection? check
+ mem8[0x5A0E] = 0x39;
+ mem8[0x5A0F] = 0x30;
+ mem8[0x5A10] = 0xF1;
+ mem8[0x5A12] = 0xFE;
+ mem8[0x5A13] = 0x9F;
+ mem8[0x5A14] = 0x00;
+ mem8[0x5A15] = 0x0C;
+ mem8[0x5A16] = 0x77;
+ mem8[0x5A17] = 0x00;
+ mem8[0x5A18] = 0xF4;
+ mem8[0x5A19] = 0x66;
+ mem8[0x5A1A] = 0xF9;
+ mem8[0x5A1B] = 0x4E;
+ mem8[0x5A1C] = 0x00;
+ mem8[0x5A1E] = 0xBE;
+ mem8[0x5A1F] = 0x72;
+ mem8[0x5A20] = 0x7C;
+ mem8[0x5A21] = 0x20;
+ mem8[0x5A22] = 0xF1;
+ mem8[0x5A23] = 0x00;
+ mem8[0x5A24] = 0x00;
+ mem8[0x5A25] = 0x80;
+ mem8[0x5A26] = 0x7C;
+ mem8[0x5A27] = 0x11;
+ mem8[0x5A29] = 0x00;
+ mem8[0x5A2A] = 0x01;
+ mem8[0x5A2C] = 0x7C;
+ mem8[0x5A2D] = 0x11;
+ mem8[0x5A2E] = 0x10;
+ mem8[0x5A2F] = 0x00;
+ mem8[0x5A30] = 0x0F;
+ mem8[0x5A31] = 0x00;
+ mem8[0x5A32] = 0x7C;
+ mem8[0x5A33] = 0x11;
+ mem8[0x5A34] = 0x00;
+ mem8[0x5A35] = 0x00;
+ mem8[0x5A36] = 0x07;
+ mem8[0x5A38] = 0x7C;
+ mem8[0x5A39] = 0x11;
+ mem8[0x5A3A] = 0x00;
+ mem8[0x5A3B] = 0x00;
+ mem8[0x5A3C] = 0x09;
+ mem8[0x5A3D] = 0x00;
+ mem8[0x5A3E] = 0x7C;
+ mem8[0x5A3F] = 0x11;
+ mem8[0x5A40] = 0x00;
+ mem8[0x5A41] = 0x00;
+ mem8[0x5A42] = 0x0C;
+ mem8[0x5A44] = 0x41;
+ mem8[0x5A48] = 0x7C;
+ mem8[0x5A4A] = 0x00;
+ mem8[0x5A4C] = 0x11;
+ mem8[0x5A4D] = 0x00;
+ mem8[0x5A4E] = 0x7C;
+ mem8[0x5A4F] = 0x11;
+ mem8[0x5A50] = 0x00;
+ mem8[0x5A51] = 0x00;
+ mem8[0x5A52] = 0x17;
+ mem8[0x5A54] = 0x7C;
+ mem8[0x5A56] = 0x00;
+ mem8[0x5A58] = 0x19;
+ mem8[0x5A59] = 0x00;
+ mem8[0x5A5A] = 0x7C;
+ mem8[0x5A5B] = 0x11;
+ mem8[0x5A5C] = 0x00;
+ mem8[0x5A5D] = 0x00;
+ mem8[0x5A5E] = 0x13;
+ mem8[0x5A60] = 0x7C;
+ mem8[0x5A62] = 0x00;
+ mem8[0x5A64] = 0x15;
+ mem8[0x5A65] = 0x00;
+ mem8[0x5A66] = 0x7C;
+ mem8[0x5A67] = 0x11;
+ mem8[0x5A68] = 0x00;
+ mem8[0x5A69] = 0x00;
+ mem8[0x5A6A] = 0x1F;
+ mem8[0x5A6C] = 0xF9;
+ mem8[0x5A6D] = 0x4E;
+ mem8[0x5A6E] = 0x05;
+ mem8[0x5A70] = 0x6A;
+ mem8[0x5A71] = 0xEE;
+ mem8[0x72A6] = 0xF9;
+ mem8[0x72A8] = 0x00;
+ mem8[0x72A9] = 0x00;
+ mem8[0x72AA] = 0x0E;
+ mem8[0x72AB] = 0x5A;
+ mem8[0x5EE64] = 0xF9;
+ mem8[0x5EE65] = 0x4E;
+ mem8[0x5EE66] = 0x00;
+ mem8[0x5EE68] = 0x20;
+ mem8[0x5EE69] = 0x5A;
+ kabuki_setup(wof_decode);
+ DRIVER_INIT_CALL(cps1);
+}
+
diff --git a/docs/release/src/hbmame/drivers/cps2.cpp b/docs/release/src/hbmame/drivers/cps2.cpp
new file mode 100644
index 00000000000..67cfd6cbff4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cps2.cpp
@@ -0,0 +1,1975 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/cps2.cpp"
+
+ROM_START( 1944da )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "nffu_da.03", 0x000000, 0x80000, CRC(78188e42) SHA1(add31daba3e6916a1facfaf32feeaba228e9a6ab) )
+ ROM_LOAD16_WORD_SWAP( "nff.04", 0x080000, 0x80000, CRC(dba1c66e) SHA1(4764e77d4da5d19d9acded27df1e1bcba06b0fcf) )
+ ROM_LOAD16_WORD_SWAP( "nffu.05", 0x100000, 0x80000, CRC(ea813eb7) SHA1(34e0175a5f22d08c3538369b4bfd077a7427a128) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "nff.13m", 0x0000000, 0x400000, CRC(c9fca741) SHA1(1781d4fc18b6d6f79b7b39d9bcace750fb61a5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.15m", 0x0000002, 0x400000, CRC(f809d898) SHA1(a0b6af49e1780678d808c317b875161cedddb314) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.17m", 0x0000004, 0x400000, CRC(15ba4507) SHA1(bed6a82bf1dc1aa501d4c2d098115a15e18d446a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.19m", 0x0000006, 0x400000, CRC(3dd41b8c) SHA1(676078baad789e25f6e5a79de29672587be7ff00) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.14m", 0x1000000, 0x100000, CRC(3fe3a54b) SHA1(0a8e5cae141d24fd8b3cb11796c44728b0acd69e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.16m", 0x1000002, 0x100000, CRC(565cd231) SHA1(0aecd433fb4ca2de1aca9fbb1e314fb1f6979321) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.18m", 0x1000004, 0x100000, CRC(63ca5988) SHA1(30137fa77573c84bcc24570bccb7dba61ddb413c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.20m", 0x1000006, 0x100000, CRC(21eb8f3b) SHA1(efa69f19a958047dd91a294c88857ed3133fcbef) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "nff.01", 0x00000, 0x08000, CRC(d2e44318) SHA1(33e45f6fe9fed098a4c072b8c39406aef1a949b2) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "nff.11m", 0x000000, 0x400000, CRC(243e4e05) SHA1(83281f7290ac105a3f9a7507cbc11317d45ba706) )
+ ROM_LOAD16_WORD_SWAP( "nff.12m", 0x400000, 0x400000, CRC(4fcf1600) SHA1(36f18c5d92b79433bdf7088b29a244708929d48e) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+ROM_START( 1944fp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "nffu.03fp", 0x000000, 0x80000, CRC(3239f3a2) SHA1(22f6e5772c3f2f98db79c9ec6809cb0343b7c877) )
+ ROM_LOAD16_WORD_SWAP( "nff.04fp", 0x080000, 0x80000, CRC(91297ec9) SHA1(3ef111613e758540a3187d972018b100bcb1652a) )
+ ROM_LOAD16_WORD_SWAP( "nffu.05", 0x100000, 0x80000, CRC(ea813eb7) SHA1(34e0175a5f22d08c3538369b4bfd077a7427a128) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "nff.13m", 0x0000000, 0x400000, CRC(c9fca741) SHA1(1781d4fc18b6d6f79b7b39d9bcace750fb61a5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.15m", 0x0000002, 0x400000, CRC(f809d898) SHA1(a0b6af49e1780678d808c317b875161cedddb314) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.17m", 0x0000004, 0x400000, CRC(15ba4507) SHA1(bed6a82bf1dc1aa501d4c2d098115a15e18d446a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.19m", 0x0000006, 0x400000, CRC(3dd41b8c) SHA1(676078baad789e25f6e5a79de29672587be7ff00) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.14m", 0x1000000, 0x100000, CRC(3fe3a54b) SHA1(0a8e5cae141d24fd8b3cb11796c44728b0acd69e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.16m", 0x1000002, 0x100000, CRC(565cd231) SHA1(0aecd433fb4ca2de1aca9fbb1e314fb1f6979321) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.18m", 0x1000004, 0x100000, CRC(63ca5988) SHA1(30137fa77573c84bcc24570bccb7dba61ddb413c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "nff.20m", 0x1000006, 0x100000, CRC(21eb8f3b) SHA1(efa69f19a958047dd91a294c88857ed3133fcbef) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "nff.01", 0x00000, 0x08000, CRC(d2e44318) SHA1(33e45f6fe9fed098a4c072b8c39406aef1a949b2) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "nff.11m", 0x000000, 0x400000, CRC(243e4e05) SHA1(83281f7290ac105a3f9a7507cbc11317d45ba706) )
+ ROM_LOAD16_WORD_SWAP( "nff.12m", 0x400000, 0x400000, CRC(4fcf1600) SHA1(36f18c5d92b79433bdf7088b29a244708929d48e) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "1944fp.key", 0x000000, 0x000014, CRC(81b5e47e) SHA1(3dde33f070508859b04c4e4a393ea9548c48287c) )
+ROM_END
+
+
+ROM_START( ddsomavs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ddsomavs.03g", 0x000000, 0x80000, CRC(e28c61f2) SHA1(a15ba7e4d1c6e2e2c047e12edefc6b1564464496) )
+ ROM_LOAD16_WORD_SWAP( "ddsomavs.04g", 0x080000, 0x80000, CRC(145efa6f) SHA1(2da422bf43c4b4abd20ddcf7b0dd4a37f23d756a) )
+ ROM_LOAD16_WORD_SWAP( "dd2.05g", 0x100000, 0x80000, CRC(5eb1991c) SHA1(429a60b5396ff4192904867fbe0524268f0edbcb) )
+ ROM_LOAD16_WORD_SWAP( "dd2.06g", 0x180000, 0x80000, CRC(c26b5e55) SHA1(9590206f30459941880ff4b56c7f276cc78e3a22) )
+ ROM_LOAD16_WORD_SWAP( "dd2.07", 0x200000, 0x80000, CRC(909a0b8b) SHA1(58bda17c36063a79df8b5031755c7909a9bda221) )
+ ROM_LOAD16_WORD_SWAP( "dd2.08", 0x280000, 0x80000, CRC(e53c4d01) SHA1(bad872e4e793a39f68bc0e580772e982714b5876) )
+ ROM_LOAD16_WORD_SWAP( "dd2.09", 0x300000, 0x80000, CRC(5f86279f) SHA1(c2a454e5f821b1cdd49f2cf0602e9bfb7ba63340) )
+ ROM_LOAD16_WORD_SWAP( "dd2.10", 0x380000, 0x80000, CRC(ad954c26) SHA1(468c01735dbdb1114b37060546a660678290a97f) )
+
+ ROM_REGION( 0x1800000, "gfx", 0 )
+ ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) )
+ ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ddsoma.key", 0x000000, 0x000014, CRC(8c3cc560) SHA1(ad19e78b938a67c9f5ed0dcd5c68b383e6ce0575) )
+ROM_END
+
+ROM_START( ddsomchs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dd2j.03g", 0x000000, 0x80000, CRC(e6c8c985) SHA1(0736a84d7d9d37d51826eac6826a7728260bc625) )
+ ROM_LOAD16_WORD_SWAP( "dd2j.04g", 0x080000, 0x80000, CRC(8386c0bd) SHA1(59bfc71914ec2bb7d1b9f327b25d2399181d4bb2) )
+ ROM_LOAD16_WORD_SWAP( "dd2.05g", 0x100000, 0x80000, CRC(5eb1991c) SHA1(429a60b5396ff4192904867fbe0524268f0edbcb) )
+ ROM_LOAD16_WORD_SWAP( "dd2.06g", 0x180000, 0x80000, CRC(c26b5e55) SHA1(9590206f30459941880ff4b56c7f276cc78e3a22) )
+ ROM_LOAD16_WORD_SWAP( "dd2.07", 0x200000, 0x80000, CRC(909a0b8b) SHA1(58bda17c36063a79df8b5031755c7909a9bda221) )
+ ROM_LOAD16_WORD_SWAP( "dd2.08", 0x280000, 0x80000, CRC(e53c4d01) SHA1(bad872e4e793a39f68bc0e580772e982714b5876) )
+ ROM_LOAD16_WORD_SWAP( "dd2.09", 0x300000, 0x80000, CRC(5f86279f) SHA1(c2a454e5f821b1cdd49f2cf0602e9bfb7ba63340) )
+ ROM_LOAD16_WORD_SWAP( "dd2.10", 0x380000, 0x80000, CRC(ad954c26) SHA1(468c01735dbdb1114b37060546a660678290a97f) )
+
+ ROM_REGION( 0x1800000, "gfx", 0 )
+ ROM_LOAD( "ddsomchs.13m", 0x0000000, 0x1000000, CRC(9b6a8bd7) SHA1(d6bf2c2c35904e0fe4c299a351c766b2e25e709c) )
+ ROM_LOAD( "ddsomchs.14m", 0x1000000, 0x800000, CRC(39b30ad6) SHA1(b2f0a1b97986484d449da9a4e85a13165002d6cc) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) )
+ ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ddsomj.key", 0x000000, 0x000014, CRC(d8dadb22) SHA1(e07b50ae464c35439333dd983e2acac48a1ce529) )
+ROM_END
+
+ROM_START( ddsomhp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ddsomhp.03e", 0x000000, 0x80000, CRC(5a9574e5) SHA1(c810b9bf495d4cd44305e27992848aab207da922) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.04e", 0x080000, 0x80000, CRC(5b7052b6) SHA1(8a5f069f450da939d0f02518751cd9815d621d81) )
+ ROM_LOAD16_WORD_SWAP( "ddsomhp.05e", 0x100000, 0x80000, CRC(554e9b24) SHA1(6b78662c0e377f5595cef9d2b49d6af0ece19fd1) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.06e", 0x180000, 0x80000, CRC(e0807e1e) SHA1(4b978f5f647fff84d456eb14c9fd202d9a276997) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.07", 0x200000, 0x80000, CRC(bb777a02) SHA1(4b2c65a9129fc2262b35be1c10d06f60f5108981) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.08", 0x280000, 0x80000, CRC(30970890) SHA1(fd366a9323230f6997006ab4cc216f9a97865ebe) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.09", 0x300000, 0x80000, CRC(99e2194d) SHA1(cbcecdf5beeac3eac6c2c3fa395710e1b8347531) )
+ ROM_LOAD16_WORD_SWAP( "dd2e.10", 0x380000, 0x80000, CRC(e198805e) SHA1(37ae9d88d98c59337b657cfa6feb56e4f9cae95f) )
+
+ ROM_REGION( 0x1800000, "gfx", 0 )
+ ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) )
+ ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ddsom.key", 0x000000, 0x000014, CRC(541e425d) SHA1(9239f9ad7c2ed0d7d062da2db92b07104b5bb9a7) )
+ROM_END
+
+ROM_START( ddsomjfs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ddsomjfs.03g", 0x000000, 0x80000, CRC(cc650f5b) SHA1(b39dd217b8a4cf82f994e1657909ff001fc4721b) )
+ ROM_LOAD16_WORD_SWAP( "dd2j.04g", 0x080000, 0x80000, CRC(8386c0bd) SHA1(59bfc71914ec2bb7d1b9f327b25d2399181d4bb2) )
+ ROM_LOAD16_WORD_SWAP( "dd2.05g", 0x100000, 0x80000, CRC(5eb1991c) SHA1(429a60b5396ff4192904867fbe0524268f0edbcb) )
+ ROM_LOAD16_WORD_SWAP( "dd2.06g", 0x180000, 0x80000, CRC(c26b5e55) SHA1(9590206f30459941880ff4b56c7f276cc78e3a22) )
+ ROM_LOAD16_WORD_SWAP( "ddsomjfs.07", 0x200000, 0x80000, CRC(9c520a00) SHA1(7f801f86ebc725bbbeae9eb832b843b282428ec1) )
+ ROM_LOAD16_WORD_SWAP( "dd2.08", 0x280000, 0x80000, CRC(e53c4d01) SHA1(bad872e4e793a39f68bc0e580772e982714b5876) )
+ ROM_LOAD16_WORD_SWAP( "dd2.09", 0x300000, 0x80000, CRC(5f86279f) SHA1(c2a454e5f821b1cdd49f2cf0602e9bfb7ba63340) )
+ ROM_LOAD16_WORD_SWAP( "dd2.10", 0x380000, 0x80000, CRC(ad954c26) SHA1(468c01735dbdb1114b37060546a660678290a97f) )
+
+ ROM_REGION( 0x1800000, "gfx", 0 )
+ ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) )
+ ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ddsomj.key", 0x000000, 0x000014, CRC(d8dadb22) SHA1(e07b50ae464c35439333dd983e2acac48a1ce529) )
+ROM_END
+
+
+ROM_START( halfway )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "halfway.03", 0x000000, 0x080000, CRC(55ce8d4a) SHA1(3b7342afbfa1244cb5cbf5be7391d3e1f8231822) )
+ ROM_LOAD16_WORD_SWAP( "tohell.04", 0x080000, 0x080000, CRC(71060b9e) SHA1(007a174ceca6ae080f19f088bf0fc6cd0fe2510c) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "pga.13m", 0x0000000, 0x400000, CRC(5194c198) SHA1(f9ae16cad8b30547b8dd3a1ea1d6e845d76ccefe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pga.15m", 0x0000002, 0x400000, CRC(b794e83f) SHA1(0332fa798b2955464ab336929866c9185bd4b520) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pga.17m", 0x0000004, 0x400000, CRC(87f22918) SHA1(7f048d66593f385526bd2c669cf6b8ad58d12bbf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pga.19m", 0x0000006, 0x400000, CRC(65ffb45b) SHA1(9c21187519c1ec95c5a960b2c815ee41ace4fa7e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pga.01", 0x00000, 0x08000, CRC(bdbfa992) SHA1(7c5496c1daaea6a7ab95c0b25625d325ec3427cc) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "redlabel.11m", 0x000000, 0x400000, CRC(33ebf625) SHA1(39e5f9afd37a258005b0143fa38b9c53b63f700d) )
+ ROM_LOAD16_WORD_SWAP( "redlabel.12m", 0x000000, 0x400000, CRC(47f25cf4) SHA1(714b5baf146d720cc86f77aeee5b1160f553d958) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+
+ROM_START( mpangjd )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mpnj_d.03a", 0x000000, 0x80000, CRC(dac63128) SHA1(e5ee8f6d698a28dbf54520473520e40efadf30e3) )
+ ROM_LOAD16_WORD_SWAP( "mpnj_d.04a", 0x080000, 0x80000, CRC(d0b2592b) SHA1(f18c026776326f9bab70d1a8f66dd5fffb115b1b) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "mpn-simm.01c", 0x0000000, 0x200000, CRC(388db66b) SHA1(7416cce3d0dbea71c92ea9f72f5536146f757b45) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.01d", 0x0000001, 0x200000, CRC(aff1b494) SHA1(d376c02ce01e71a7707d3d3fe5b0ae59ce781686) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.01a", 0x0000002, 0x200000, CRC(a9c4857b) SHA1(66f538105c710d1480141e48a15b1a760f5ce985) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.01b", 0x0000003, 0x200000, CRC(f759df22) SHA1(1678e3e819dd808f3a6fdd52b7c933eac4777b5b) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.03c", 0x0000004, 0x200000, CRC(dec6b720) SHA1(331776e1cba3fb82071e7c2195dc4ae27b3613a2) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.03d", 0x0000005, 0x200000, CRC(f8774c18) SHA1(58e0ea4dd62e39bcfaa3a2be4ef08eb2f0bd3c00) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.03a", 0x0000006, 0x200000, CRC(c2aea4ec) SHA1(f5e2a815fa802598611efa48e5de97e929155e77) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+ ROMX_LOAD( "mpn-simm.03b", 0x0000007, 0x200000, CRC(84d6dc33) SHA1(f5ababb479facc08c425381570644230c09334e7) , ROM_GROUPBYTE | ROM_SKIP(7) ) // ROM on a simm
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mpn.01", 0x00000, 0x08000, CRC(90c7adb6) SHA1(a2653e977e5e0457b249e098e5ca0abc93dac336) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mpn-simm.05a", 0x000000, 0x200000, CRC(318a2e21) SHA1(c573cd88f8279a062c73ef1d79cd8421dbdcd93e) ) // ROM on a simm
+ ROM_LOAD16_WORD_SWAP( "mpn-simm.05b", 0x200000, 0x200000, CRC(5462f4e8) SHA1(299fbdab700e735e6395c5d9e3f079bb2e3dbd73) ) // ROM on a simm
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+
+ROM_START( mshjphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mshjphp.03", 0x000000, 0x80000, CRC(31ae1efc) SHA1(02d3447edceb07ae4e40b068d8a5637547cbc17e) )
+ ROM_LOAD16_WORD_SWAP( "mshj.04g", 0x080000, 0x80000, CRC(61d791c6) SHA1(9f883bcc48058a99c4ba653d0855c58c5d081243) )
+ ROM_LOAD16_WORD_SWAP( "msh.05a", 0x100000, 0x80000, CRC(f37539e6) SHA1(770febc25ca5615b6c2023727edab3c68b15b2c4) )
+ ROM_LOAD16_WORD_SWAP( "msh.06b", 0x180000, 0x80000, CRC(803e3fa4) SHA1(0acdeda65002521bf24130cbf06f9faa1dcef9e5) )
+ ROM_LOAD16_WORD_SWAP( "msh.07a", 0x200000, 0x80000, CRC(c45f8e27) SHA1(4d28e0782c31ce56e728ac6ef5edd10437f00637) )
+ ROM_LOAD16_WORD_SWAP( "msh.08a", 0x280000, 0x80000, CRC(9ca6f12c) SHA1(26ad682667b983b805e1f577426e5fca8ee3c82b) )
+ ROM_LOAD16_WORD_SWAP( "msh.09a", 0x300000, 0x80000, CRC(82ec27af) SHA1(caf76268063ba91d28e8af684d60c2d71f29b9b9) )
+ ROM_LOAD16_WORD_SWAP( "msh.10b", 0x380000, 0x80000, CRC(8d931196) SHA1(983e62efcdb4c8db6bce6acf4f86acb9447b565d) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "msh.13m", 0x0000000, 0x400000, CRC(09d14566) SHA1(c96463654043f22da5e844c6da17aa9273dc3439) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.15m", 0x0000002, 0x400000, CRC(ee962057) SHA1(24e359accb5f71a5863d7bad4088719fa547f88c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.17m", 0x0000004, 0x400000, CRC(604ece14) SHA1(880fb62b33ba4cceb38635e4ec056fac11a3c70f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.19m", 0x0000006, 0x400000, CRC(94a731e8) SHA1(1e784a3412e7361e3001494e1daf840ef8c20449) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.14m", 0x1000000, 0x400000, CRC(4197973e) SHA1(93aeea1a480b5f452c8a40ae3fff956796b859fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.16m", 0x1000002, 0x400000, CRC(438da4a0) SHA1(ca93b14c3a570f9dd582efbb3f0536a92e535042) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.18m", 0x1000004, 0x400000, CRC(4db92d94) SHA1(f1b25ccc0627139ad5b287a8f2ab3b4a2fb8b8e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.20m", 0x1000006, 0x400000, CRC(a2b0c6c0) SHA1(71016c01c1a706b73cf5b9ac7e384a030c6cf08d) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "msh.01", 0x00000, 0x08000, CRC(c976e6f9) SHA1(281025e5aaf97c0aeddc8bd0f737d092daadad9e) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "msh.02", 0x28000, 0x20000, CRC(ce67d0d9) SHA1(324226597cc5a11603f04085fef7715a314ecc05) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "msh.11m", 0x000000, 0x200000, CRC(37ac6d30) SHA1(ec67421fbf4a08a686e76792cb35e9cbf04d022d) )
+ ROM_LOAD16_WORD_SWAP( "msh.12m", 0x200000, 0x200000, CRC(de092570) SHA1(a03d0df901f6ea79685eaed67db65bee14ec29c6) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mshj.key", 0x000000, 0x000014, CRC(888761ac) SHA1(a1c72deedab2bafe5d594bba905a6274575b6e56) )
+ROM_END
+
+// mshvsfj with a rom changed
+ROM_START( mshvsemb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mshvsemb.03", 0x000000, 0x80000, CRC(86672cbb) SHA1(7dc683ed8cf5bc205851375deab0438a1105d581) )
+ ROM_LOAD16_WORD_SWAP( "mvsj.04i", 0x080000, 0x80000, CRC(32741ace) SHA1(36db3a3aeaf29369977593c051bf5665cffefb2d) )
+ ROM_LOAD16_WORD_SWAP( "mvs.05h", 0x100000, 0x80000, CRC(77870dc3) SHA1(924a7c82456bb44d7b0be65af11dbe1a2420a3f0) )
+ ROM_LOAD16_WORD_SWAP( "mvs.06a", 0x180000, 0x80000, CRC(959f3030) SHA1(fbbaa915324815246738f3426232e623f039ce26) )
+ ROM_LOAD16_WORD_SWAP( "mvs.07b", 0x200000, 0x80000, CRC(7f915bdb) SHA1(683da09c5ba55e31b59aa95a8e13c45dc574ab3c) )
+ ROM_LOAD16_WORD_SWAP( "mvs.08a", 0x280000, 0x80000, CRC(c2813884) SHA1(49e5d4bc48f90c8146cb6aafb9240aff0119f1a7) )
+ ROM_LOAD16_WORD_SWAP( "mvs.09b", 0x300000, 0x80000, CRC(3ba08818) SHA1(9ab132a3cac55fcccebe6c99b6fb0ba1305f8f6e) )
+ ROM_LOAD16_WORD_SWAP( "mvs.10b", 0x380000, 0x80000, CRC(cf0dba98) SHA1(f4c1f8a6e7a79ecc6241d5268b3039f8a09ea516) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvs.13m", 0x0000000, 0x400000, CRC(29b05fd9) SHA1(e8fdb1ee5515a560eb4256ae4fd99bb1192e1a87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.15m", 0x0000002, 0x400000, CRC(faddccf1) SHA1(4ed03ea91883a0413325f57edcc1614120b5922c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.17m", 0x0000004, 0x400000, CRC(97aaf4c7) SHA1(6a054921cc14fe080cb3f62c391f8ae3cc7e8ba9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.19m", 0x0000006, 0x400000, CRC(cb70e915) SHA1(da4d2480d348ac6dfd01256a88f4f3db8357ae46) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.14m", 0x1000000, 0x400000, CRC(b3b1972d) SHA1(0f2c3fb7de014181ee481ec35d0578b2c116c2dc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.16m", 0x1000002, 0x400000, CRC(08aadb5d) SHA1(3a2c222eca3e7df80ce69951b3db6442312751a4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.18m", 0x1000004, 0x400000, CRC(c1228b35) SHA1(7afdfb552888c79d0fbb30242b3d917b87fad57a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.20m", 0x1000006, 0x400000, CRC(366cc6c2) SHA1(6f2a789087c8e404c5227b927fa8328c03593243) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvs.01", 0x00000, 0x08000, CRC(68252324) SHA1(138ef320ef27956b2ab5591d49a1315b7b0a194c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvs.02", 0x28000, 0x20000, CRC(b34e773d) SHA1(3bcf44bf06c35814cff29d244142db7abe05bd39) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvs.11m", 0x000000, 0x400000, CRC(86219770) SHA1(4e5b68d382a5aa37f8b0b6434c53a2b95f5f9a4d) )
+ ROM_LOAD16_WORD_SWAP( "mvs.12m", 0x400000, 0x400000, CRC(f2fd7f68) SHA1(28a30d55d3eaf963006c7cbe7c288099cd3ba536) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mshvsfj.key", 0x000000, 0x000014, CRC(565eeebb) SHA1(762844b59b2fcf529a26ad3dde8282415db926b3) )
+ROM_END
+
+// mshvsfj with 2 roms changed
+ROM_START( mshvsfjh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mshvsfjh.03", 0x000000, 0x80000, CRC(54ecd389) SHA1(be6d34587de852d93d575f7d1e5001e43f4be9e9) )
+ ROM_LOAD16_WORD_SWAP( "mshvsfjh.04", 0x080000, 0x80000, CRC(6031012f) SHA1(8905d52110f5c9da35ce4ec497c48ec73eb35e13) )
+ ROM_LOAD16_WORD_SWAP( "mvs.05h", 0x100000, 0x80000, CRC(77870dc3) SHA1(924a7c82456bb44d7b0be65af11dbe1a2420a3f0) )
+ ROM_LOAD16_WORD_SWAP( "mvs.06a", 0x180000, 0x80000, CRC(959f3030) SHA1(fbbaa915324815246738f3426232e623f039ce26) )
+ ROM_LOAD16_WORD_SWAP( "mvs.07b", 0x200000, 0x80000, CRC(7f915bdb) SHA1(683da09c5ba55e31b59aa95a8e13c45dc574ab3c) )
+ ROM_LOAD16_WORD_SWAP( "mvs.08a", 0x280000, 0x80000, CRC(c2813884) SHA1(49e5d4bc48f90c8146cb6aafb9240aff0119f1a7) )
+ ROM_LOAD16_WORD_SWAP( "mvs.09b", 0x300000, 0x80000, CRC(3ba08818) SHA1(9ab132a3cac55fcccebe6c99b6fb0ba1305f8f6e) )
+ ROM_LOAD16_WORD_SWAP( "mvs.10b", 0x380000, 0x80000, CRC(cf0dba98) SHA1(f4c1f8a6e7a79ecc6241d5268b3039f8a09ea516) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvs.13m", 0x0000000, 0x400000, CRC(29b05fd9) SHA1(e8fdb1ee5515a560eb4256ae4fd99bb1192e1a87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.15m", 0x0000002, 0x400000, CRC(faddccf1) SHA1(4ed03ea91883a0413325f57edcc1614120b5922c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.17m", 0x0000004, 0x400000, CRC(97aaf4c7) SHA1(6a054921cc14fe080cb3f62c391f8ae3cc7e8ba9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.19m", 0x0000006, 0x400000, CRC(cb70e915) SHA1(da4d2480d348ac6dfd01256a88f4f3db8357ae46) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.14m", 0x1000000, 0x400000, CRC(b3b1972d) SHA1(0f2c3fb7de014181ee481ec35d0578b2c116c2dc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.16m", 0x1000002, 0x400000, CRC(08aadb5d) SHA1(3a2c222eca3e7df80ce69951b3db6442312751a4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.18m", 0x1000004, 0x400000, CRC(c1228b35) SHA1(7afdfb552888c79d0fbb30242b3d917b87fad57a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.20m", 0x1000006, 0x400000, CRC(366cc6c2) SHA1(6f2a789087c8e404c5227b927fa8328c03593243) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvs.01", 0x00000, 0x08000, CRC(68252324) SHA1(138ef320ef27956b2ab5591d49a1315b7b0a194c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvs.02", 0x28000, 0x20000, CRC(b34e773d) SHA1(3bcf44bf06c35814cff29d244142db7abe05bd39) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvs.11m", 0x000000, 0x400000, CRC(86219770) SHA1(4e5b68d382a5aa37f8b0b6434c53a2b95f5f9a4d) )
+ ROM_LOAD16_WORD_SWAP( "mvs.12m", 0x400000, 0x400000, CRC(f2fd7f68) SHA1(28a30d55d3eaf963006c7cbe7c288099cd3ba536) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mshvsfj.key", 0x000000, 0x000014, CRC(565eeebb) SHA1(762844b59b2fcf529a26ad3dde8282415db926b3) )
+ROM_END
+
+// mshvsfj with a rom changed
+ROM_START( mshvsfjphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mshvsfjphp.03", 0x000000, 0x80000, CRC(4c50cabc) SHA1(6139e3974d83fb4220aca84fa0ac6adcf23f45a5) )
+ ROM_LOAD16_WORD_SWAP( "mvsj.04i", 0x080000, 0x80000, CRC(32741ace) SHA1(36db3a3aeaf29369977593c051bf5665cffefb2d) )
+ ROM_LOAD16_WORD_SWAP( "mvs.05h", 0x100000, 0x80000, CRC(77870dc3) SHA1(924a7c82456bb44d7b0be65af11dbe1a2420a3f0) )
+ ROM_LOAD16_WORD_SWAP( "mvs.06a", 0x180000, 0x80000, CRC(959f3030) SHA1(fbbaa915324815246738f3426232e623f039ce26) )
+ ROM_LOAD16_WORD_SWAP( "mvs.07b", 0x200000, 0x80000, CRC(7f915bdb) SHA1(683da09c5ba55e31b59aa95a8e13c45dc574ab3c) )
+ ROM_LOAD16_WORD_SWAP( "mvs.08a", 0x280000, 0x80000, CRC(c2813884) SHA1(49e5d4bc48f90c8146cb6aafb9240aff0119f1a7) )
+ ROM_LOAD16_WORD_SWAP( "mvs.09b", 0x300000, 0x80000, CRC(3ba08818) SHA1(9ab132a3cac55fcccebe6c99b6fb0ba1305f8f6e) )
+ ROM_LOAD16_WORD_SWAP( "mvs.10b", 0x380000, 0x80000, CRC(cf0dba98) SHA1(f4c1f8a6e7a79ecc6241d5268b3039f8a09ea516) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvs.13m", 0x0000000, 0x400000, CRC(29b05fd9) SHA1(e8fdb1ee5515a560eb4256ae4fd99bb1192e1a87) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.15m", 0x0000002, 0x400000, CRC(faddccf1) SHA1(4ed03ea91883a0413325f57edcc1614120b5922c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.17m", 0x0000004, 0x400000, CRC(97aaf4c7) SHA1(6a054921cc14fe080cb3f62c391f8ae3cc7e8ba9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.19m", 0x0000006, 0x400000, CRC(cb70e915) SHA1(da4d2480d348ac6dfd01256a88f4f3db8357ae46) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.14m", 0x1000000, 0x400000, CRC(b3b1972d) SHA1(0f2c3fb7de014181ee481ec35d0578b2c116c2dc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.16m", 0x1000002, 0x400000, CRC(08aadb5d) SHA1(3a2c222eca3e7df80ce69951b3db6442312751a4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.18m", 0x1000004, 0x400000, CRC(c1228b35) SHA1(7afdfb552888c79d0fbb30242b3d917b87fad57a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvs.20m", 0x1000006, 0x400000, CRC(366cc6c2) SHA1(6f2a789087c8e404c5227b927fa8328c03593243) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvs.01", 0x00000, 0x08000, CRC(68252324) SHA1(138ef320ef27956b2ab5591d49a1315b7b0a194c) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvs.02", 0x28000, 0x20000, CRC(b34e773d) SHA1(3bcf44bf06c35814cff29d244142db7abe05bd39) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvs.11m", 0x000000, 0x400000, CRC(86219770) SHA1(4e5b68d382a5aa37f8b0b6434c53a2b95f5f9a4d) )
+ ROM_LOAD16_WORD_SWAP( "mvs.12m", 0x400000, 0x400000, CRC(f2fd7f68) SHA1(28a30d55d3eaf963006c7cbe7c288099cd3ba536) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mshvsfj.key", 0x000000, 0x000014, CRC(565eeebb) SHA1(762844b59b2fcf529a26ad3dde8282415db926b3) )
+ROM_END
+
+ROM_START( mshyh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mshe.03e", 0x000000, 0x80000, CRC(bd951414) SHA1(5585bdd1484dc18c7630d689f60d91c068aafc97) )
+ ROM_LOAD16_WORD_SWAP( "mshyh.04", 0x080000, 0x80000, CRC(adbd5707) SHA1(79d56d5a28328ababec10e080e46d1bfa6d8cab7) )
+ ROM_LOAD16_WORD_SWAP( "msh.05", 0x100000, 0x80000, CRC(6a091b9e) SHA1(7fa54e69e1a1ca348cb08d892d55023e9a3ff4cb) )
+ ROM_LOAD16_WORD_SWAP( "msh.06b", 0x180000, 0x80000, CRC(803e3fa4) SHA1(0acdeda65002521bf24130cbf06f9faa1dcef9e5) )
+ ROM_LOAD16_WORD_SWAP( "msh.07a", 0x200000, 0x80000, CRC(c45f8e27) SHA1(4d28e0782c31ce56e728ac6ef5edd10437f00637) )
+ ROM_LOAD16_WORD_SWAP( "msh.08a", 0x280000, 0x80000, CRC(9ca6f12c) SHA1(26ad682667b983b805e1f577426e5fca8ee3c82b) )
+ ROM_LOAD16_WORD_SWAP( "msh.09a", 0x300000, 0x80000, CRC(82ec27af) SHA1(caf76268063ba91d28e8af684d60c2d71f29b9b9) )
+ ROM_LOAD16_WORD_SWAP( "msh.10b", 0x380000, 0x80000, CRC(8d931196) SHA1(983e62efcdb4c8db6bce6acf4f86acb9447b565d) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "msh.13m", 0x0000000, 0x400000, CRC(09d14566) SHA1(c96463654043f22da5e844c6da17aa9273dc3439) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.15m", 0x0000002, 0x400000, CRC(ee962057) SHA1(24e359accb5f71a5863d7bad4088719fa547f88c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.17m", 0x0000004, 0x400000, CRC(604ece14) SHA1(880fb62b33ba4cceb38635e4ec056fac11a3c70f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.19m", 0x0000006, 0x400000, CRC(94a731e8) SHA1(1e784a3412e7361e3001494e1daf840ef8c20449) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.14m", 0x1000000, 0x400000, CRC(4197973e) SHA1(93aeea1a480b5f452c8a40ae3fff956796b859fa) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.16m", 0x1000002, 0x400000, CRC(438da4a0) SHA1(ca93b14c3a570f9dd582efbb3f0536a92e535042) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.18m", 0x1000004, 0x400000, CRC(4db92d94) SHA1(f1b25ccc0627139ad5b287a8f2ab3b4a2fb8b8e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "msh.20m", 0x1000006, 0x400000, CRC(a2b0c6c0) SHA1(71016c01c1a706b73cf5b9ac7e384a030c6cf08d) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "msh.01", 0x00000, 0x08000, CRC(c976e6f9) SHA1(281025e5aaf97c0aeddc8bd0f737d092daadad9e) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "msh.02", 0x28000, 0x20000, CRC(ce67d0d9) SHA1(324226597cc5a11603f04085fef7715a314ecc05) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "msh.11m", 0x000000, 0x200000, CRC(37ac6d30) SHA1(ec67421fbf4a08a686e76792cb35e9cbf04d022d) )
+ ROM_LOAD16_WORD_SWAP( "msh.12m", 0x200000, 0x200000, CRC(de092570) SHA1(a03d0df901f6ea79685eaed67db65bee14ec29c6) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "msh.key", 0x000000, 0x000014, CRC(b494368e) SHA1(8efc561cec2bcc17902d27ed4e27b7d2b9eccdbc) )
+ROM_END
+
+
+ROM_START( mvscjemb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mvscjemb.03", 0x000000, 0x80000, CRC(8a50f418) SHA1(17db6f6afbe7866a4803bf2a20fb9b01b2b80250) )
+ ROM_LOAD16_WORD_SWAP( "mvcj.04a", 0x080000, 0x80000, CRC(07d212e8) SHA1(c5420e9bd580910c1f1d0264240aeef20aac30a7) )
+ ROM_LOAD16_WORD_SWAP( "mvc.05a", 0x100000, 0x80000, CRC(2d8c8e86) SHA1(b07d640a734c5d336054ed05195786224c9a6cd4) )
+ ROM_LOAD16_WORD_SWAP( "mvc.06a", 0x180000, 0x80000, CRC(8528e1f5) SHA1(cd065c05268ab581b05676da544baf6af642acac) )
+ ROM_LOAD16_WORD_SWAP( "mvc.07", 0x200000, 0x80000, CRC(c3baa32b) SHA1(d35589847e0753e869ffcd7c3abed925bfdb0fa2) )
+ ROM_LOAD16_WORD_SWAP( "mvc.08", 0x280000, 0x80000, CRC(bc002fcd) SHA1(0b6735a071a9274f7ab25c743271fc30411fe819) )
+ ROM_LOAD16_WORD_SWAP( "mvc.09", 0x300000, 0x80000, CRC(c67b26df) SHA1(6e9969246c57269d7ba0992a5cc319c8910bf8a9) )
+ ROM_LOAD16_WORD_SWAP( "mvc.10", 0x380000, 0x80000, CRC(0fdd1e26) SHA1(5fa684d823b4f4eec61ed9e9b8938af5272ae1ed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvc.13m", 0x0000000, 0x400000, CRC(fa5f74bc) SHA1(79a619248938a85ce4f7794a704647b9cf564fbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.15m", 0x0000002, 0x400000, CRC(71938a8f) SHA1(6982f7203458c1c46a1c1c13c0d0f2a5e109d271) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.17m", 0x0000004, 0x400000, CRC(92741d07) SHA1(ddfd70eab7c983ab452194b1860059f8ad694459) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.19m", 0x0000006, 0x400000, CRC(bcb72fc6) SHA1(46ab98dcdf6f5d611646a22a7355939ef5b2bbe5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.14m", 0x1000000, 0x400000, CRC(7f1df4e4) SHA1(ede92b31c1fe87f91b4fe74ac211f2fb5f863bc2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.16m", 0x1000002, 0x400000, CRC(90bd3203) SHA1(ed83208c486ea0f407b7e5d16a8cf242a6f73774) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.18m", 0x1000004, 0x400000, CRC(67aaf727) SHA1(e0e69104e31d2c41e18c0d24e9ab962406a7ca9a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.20m", 0x1000006, 0x400000, CRC(8b0bade8) SHA1(c5732361bb4bf284c4d12a82ac2c5750b1f9d441) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvc.01", 0x00000, 0x08000, CRC(41629e95) SHA1(36925c05b5fdcbe43283a882d021e5360c947061) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvc.02", 0x28000, 0x20000, CRC(963abf6b) SHA1(6b784870e338701cefabbbe4669984b5c4e8a9a5) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvc.11m", 0x000000, 0x400000, CRC(850fe663) SHA1(81e519d05a08855f242ea2e17ee0859b449db895) )
+ ROM_LOAD16_WORD_SWAP( "mvc.12m", 0x400000, 0x400000, CRC(7ccb1896) SHA1(74caadf3282fcc6acffb1bbe3734106f81124121) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mvscj.key", 0x000000, 0x000014, CRC(9dedbcaf) SHA1(6468dd20ba89e4f6dc03340d218694690151ebe0) )
+ROM_END
+
+ROM_START( mvscjphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mvscjphp.03", 0x000000, 0x80000, CRC(8f886e52) SHA1(5fcd465361452b3b163cbd62b6cd73835e2f9f54) )
+ ROM_LOAD16_WORD_SWAP( "mvcj.04a", 0x080000, 0x80000, CRC(07d212e8) SHA1(c5420e9bd580910c1f1d0264240aeef20aac30a7) )
+ ROM_LOAD16_WORD_SWAP( "mvc.05a", 0x100000, 0x80000, CRC(2d8c8e86) SHA1(b07d640a734c5d336054ed05195786224c9a6cd4) )
+ ROM_LOAD16_WORD_SWAP( "mvc.06a", 0x180000, 0x80000, CRC(8528e1f5) SHA1(cd065c05268ab581b05676da544baf6af642acac) )
+ ROM_LOAD16_WORD_SWAP( "mvc.07", 0x200000, 0x80000, CRC(c3baa32b) SHA1(d35589847e0753e869ffcd7c3abed925bfdb0fa2) )
+ ROM_LOAD16_WORD_SWAP( "mvc.08", 0x280000, 0x80000, CRC(bc002fcd) SHA1(0b6735a071a9274f7ab25c743271fc30411fe819) )
+ ROM_LOAD16_WORD_SWAP( "mvc.09", 0x300000, 0x80000, CRC(c67b26df) SHA1(6e9969246c57269d7ba0992a5cc319c8910bf8a9) )
+ ROM_LOAD16_WORD_SWAP( "mvc.10", 0x380000, 0x80000, CRC(0fdd1e26) SHA1(5fa684d823b4f4eec61ed9e9b8938af5272ae1ed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvc.13m", 0x0000000, 0x400000, CRC(fa5f74bc) SHA1(79a619248938a85ce4f7794a704647b9cf564fbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.15m", 0x0000002, 0x400000, CRC(71938a8f) SHA1(6982f7203458c1c46a1c1c13c0d0f2a5e109d271) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.17m", 0x0000004, 0x400000, CRC(92741d07) SHA1(ddfd70eab7c983ab452194b1860059f8ad694459) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.19m", 0x0000006, 0x400000, CRC(bcb72fc6) SHA1(46ab98dcdf6f5d611646a22a7355939ef5b2bbe5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.14m", 0x1000000, 0x400000, CRC(7f1df4e4) SHA1(ede92b31c1fe87f91b4fe74ac211f2fb5f863bc2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.16m", 0x1000002, 0x400000, CRC(90bd3203) SHA1(ed83208c486ea0f407b7e5d16a8cf242a6f73774) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.18m", 0x1000004, 0x400000, CRC(67aaf727) SHA1(e0e69104e31d2c41e18c0d24e9ab962406a7ca9a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.20m", 0x1000006, 0x400000, CRC(8b0bade8) SHA1(c5732361bb4bf284c4d12a82ac2c5750b1f9d441) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvc.01", 0x00000, 0x08000, CRC(41629e95) SHA1(36925c05b5fdcbe43283a882d021e5360c947061) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvc.02", 0x28000, 0x20000, CRC(963abf6b) SHA1(6b784870e338701cefabbbe4669984b5c4e8a9a5) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvc.11m", 0x000000, 0x400000, CRC(850fe663) SHA1(81e519d05a08855f242ea2e17ee0859b449db895) )
+ ROM_LOAD16_WORD_SWAP( "mvc.12m", 0x400000, 0x400000, CRC(7ccb1896) SHA1(74caadf3282fcc6acffb1bbe3734106f81124121) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mvscj.key", 0x000000, 0x000014, CRC(9dedbcaf) SHA1(6468dd20ba89e4f6dc03340d218694690151ebe0) )
+ROM_END
+
+ROM_START( mvscrcp ) // doesn't work
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mvce.03a", 0x000000, 0x80000, CRC(824e4a90) SHA1(5c79c166d988d8a75d9941f4ee6fa4d6476e55e1) )
+ ROM_LOAD16_WORD_SWAP( "mvce.04a", 0x080000, 0x80000, CRC(436c5a4e) SHA1(82f4586e888f2550c53bfdc93a53791a595e05bd) )
+ ROM_LOAD16_WORD_SWAP( "mvc.05a", 0x100000, 0x80000, CRC(2d8c8e86) SHA1(b07d640a734c5d336054ed05195786224c9a6cd4) )
+ ROM_LOAD16_WORD_SWAP( "mvscrcp.06", 0x180000, 0x80000, CRC(57e2f6fd) SHA1(1c1b9992b411f45755cd2d70207511431603b4a8) )
+ ROM_LOAD16_WORD_SWAP( "mvc.07", 0x200000, 0x80000, CRC(c3baa32b) SHA1(d35589847e0753e869ffcd7c3abed925bfdb0fa2) )
+ ROM_LOAD16_WORD_SWAP( "mvc.08", 0x280000, 0x80000, CRC(bc002fcd) SHA1(0b6735a071a9274f7ab25c743271fc30411fe819) )
+ ROM_LOAD16_WORD_SWAP( "mvc.09", 0x300000, 0x80000, CRC(c67b26df) SHA1(6e9969246c57269d7ba0992a5cc319c8910bf8a9) )
+ ROM_LOAD16_WORD_SWAP( "mvc.10", 0x380000, 0x80000, CRC(0fdd1e26) SHA1(5fa684d823b4f4eec61ed9e9b8938af5272ae1ed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvc.13m", 0x0000000, 0x400000, CRC(fa5f74bc) SHA1(79a619248938a85ce4f7794a704647b9cf564fbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.15m", 0x0000002, 0x400000, CRC(71938a8f) SHA1(6982f7203458c1c46a1c1c13c0d0f2a5e109d271) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.17m", 0x0000004, 0x400000, CRC(92741d07) SHA1(ddfd70eab7c983ab452194b1860059f8ad694459) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.19m", 0x0000006, 0x400000, CRC(bcb72fc6) SHA1(46ab98dcdf6f5d611646a22a7355939ef5b2bbe5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.14m", 0x1000000, 0x400000, CRC(7f1df4e4) SHA1(ede92b31c1fe87f91b4fe74ac211f2fb5f863bc2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.16m", 0x1000002, 0x400000, CRC(90bd3203) SHA1(ed83208c486ea0f407b7e5d16a8cf242a6f73774) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.18m", 0x1000004, 0x400000, CRC(67aaf727) SHA1(e0e69104e31d2c41e18c0d24e9ab962406a7ca9a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.20m", 0x1000006, 0x400000, CRC(8b0bade8) SHA1(c5732361bb4bf284c4d12a82ac2c5750b1f9d441) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvc.01", 0x00000, 0x08000, CRC(41629e95) SHA1(36925c05b5fdcbe43283a882d021e5360c947061) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvc.02", 0x28000, 0x20000, CRC(963abf6b) SHA1(6b784870e338701cefabbbe4669984b5c4e8a9a5) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvc.11m", 0x000000, 0x400000, CRC(850fe663) SHA1(81e519d05a08855f242ea2e17ee0859b449db895) )
+ ROM_LOAD16_WORD_SWAP( "mvc.12m", 0x400000, 0x400000, CRC(7ccb1896) SHA1(74caadf3282fcc6acffb1bbe3734106f81124121) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mvsc.key", 0x000000, 0x000014, CRC(7e101e09) SHA1(9d725a7c6bbc20e46f749eaec4bab15b0195077a) )
+ROM_END
+
+ROM_START( mvscuh ) // doesn't work
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mvscuh.03", 0x000000, 0x80000, CRC(95eb2af9) SHA1(b5ba9ced0bb67783a00a07423b8b68bd3b89aaf9) )
+ ROM_LOAD16_WORD_SWAP( "mvscuh.04", 0x080000, 0x80000, CRC(05e4ba51) SHA1(21e7107d53c2416b215c9ff442a85e98489ac8ba) )
+ ROM_LOAD16_WORD_SWAP( "mvc.05a", 0x100000, 0x80000, CRC(2d8c8e86) SHA1(b07d640a734c5d336054ed05195786224c9a6cd4) )
+ ROM_LOAD16_WORD_SWAP( "mvc.06a", 0x180000, 0x80000, CRC(8528e1f5) SHA1(cd065c05268ab581b05676da544baf6af642acac) )
+ ROM_LOAD16_WORD_SWAP( "mvc.07", 0x200000, 0x80000, CRC(c3baa32b) SHA1(d35589847e0753e869ffcd7c3abed925bfdb0fa2) )
+ ROM_LOAD16_WORD_SWAP( "mvc.08", 0x280000, 0x80000, CRC(bc002fcd) SHA1(0b6735a071a9274f7ab25c743271fc30411fe819) )
+ ROM_LOAD16_WORD_SWAP( "mvc.09", 0x300000, 0x80000, CRC(c67b26df) SHA1(6e9969246c57269d7ba0992a5cc319c8910bf8a9) )
+ ROM_LOAD16_WORD_SWAP( "mvc.10", 0x380000, 0x80000, CRC(0fdd1e26) SHA1(5fa684d823b4f4eec61ed9e9b8938af5272ae1ed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "mvc.13m", 0x0000000, 0x400000, CRC(fa5f74bc) SHA1(79a619248938a85ce4f7794a704647b9cf564fbc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.15m", 0x0000002, 0x400000, CRC(71938a8f) SHA1(6982f7203458c1c46a1c1c13c0d0f2a5e109d271) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.17m", 0x0000004, 0x400000, CRC(92741d07) SHA1(ddfd70eab7c983ab452194b1860059f8ad694459) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.19m", 0x0000006, 0x400000, CRC(bcb72fc6) SHA1(46ab98dcdf6f5d611646a22a7355939ef5b2bbe5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.14m", 0x1000000, 0x400000, CRC(7f1df4e4) SHA1(ede92b31c1fe87f91b4fe74ac211f2fb5f863bc2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.16m", 0x1000002, 0x400000, CRC(90bd3203) SHA1(ed83208c486ea0f407b7e5d16a8cf242a6f73774) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.18m", 0x1000004, 0x400000, CRC(67aaf727) SHA1(e0e69104e31d2c41e18c0d24e9ab962406a7ca9a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "mvc.20m", 0x1000006, 0x400000, CRC(8b0bade8) SHA1(c5732361bb4bf284c4d12a82ac2c5750b1f9d441) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "mvc.01", 0x00000, 0x08000, CRC(41629e95) SHA1(36925c05b5fdcbe43283a882d021e5360c947061) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "mvc.02", 0x28000, 0x20000, CRC(963abf6b) SHA1(6b784870e338701cefabbbe4669984b5c4e8a9a5) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "mvc.11m", 0x000000, 0x400000, CRC(850fe663) SHA1(81e519d05a08855f242ea2e17ee0859b449db895) )
+ ROM_LOAD16_WORD_SWAP( "mvc.12m", 0x400000, 0x400000, CRC(7ccb1896) SHA1(74caadf3282fcc6acffb1bbe3734106f81124121) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "mvscu.key", 0x000000, 0x000014, CRC(a83db333) SHA1(7f7288ceadf233d913728f7c4a8841adcb5994e8) )
+ROM_END
+
+ROM_START( pfghtjrm )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "pfghtjrm.03", 0x000000, 0x80000, CRC(5b91a900) SHA1(503fc8b5e687c11bfa5a3b55a7df8b22b8a02103) )
+ ROM_LOAD16_WORD_SWAP( "pcf.04", 0x080000, 0x80000, CRC(f4314c96) SHA1(c40ed74039bf0096eb3648b7243a8e697638e0a6) )
+ ROM_LOAD16_WORD_SWAP( "pcf.05", 0x100000, 0x80000, CRC(215655f6) SHA1(242c0f4401520f2a3b0deafc3a807b18b987e496) )
+ ROM_LOAD16_WORD_SWAP( "pcf.06", 0x180000, 0x80000, CRC(ea6f13ea) SHA1(1bc924a8a9da1d2ad7667685cdb92fe317a39aba) )
+ ROM_LOAD16_WORD_SWAP( "pcf.07", 0x200000, 0x80000, CRC(5ac6d5ea) SHA1(9ce8e4668b565658597a868830545fb75a5eeaa6) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "pcf.13m", 0x0000000, 0x400000, CRC(22d72ab9) SHA1(653efd95c34b4b9d2ab0d219f41a99ca84e12214) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.15m", 0x0000002, 0x400000, CRC(16a4813c) SHA1(bf5fce6008214f353414d1b64bea4ed0c7673670) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.17m", 0x0000004, 0x400000, CRC(1097e035) SHA1(4bd51e4e9447af27d2cac1f6d2201e37c949912b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.19m", 0x0000006, 0x400000, CRC(d362d874) SHA1(30c42af18440496cc05e4418e4efa41172ae4ced) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.14m", 0x1000000, 0x100000, CRC(0383897c) SHA1(aba14afa1d0c971afcee4317f480e88117d77b5e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.16m", 0x1000002, 0x100000, CRC(76f91084) SHA1(3d1e32467f2aa5dd6fb96bd5c866ecc9691660fc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.18m", 0x1000004, 0x100000, CRC(756c3754) SHA1(be2f709b90222a567f198f851cf07ffb0ad433d7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.20m", 0x1000006, 0x100000, CRC(9ec9277d) SHA1(b7ceeaca30dfcdf498b61a6961f0aa1a068b8ec4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pcf.01", 0x00000, 0x08000, CRC(254e5f33) SHA1(c413ec0630b9bdd15e64f42893eba8958a09b573) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "pcf.02", 0x28000, 0x20000, CRC(6902f4f9) SHA1(9bfe4ddade3c666076d26a2b545120f6d059fd7c) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "pcf.11m", 0x000000, 0x400000, CRC(a5dea005) SHA1(3ae79baf6ff5bd527f82b26f164c7e3c65423ae2) )
+ ROM_LOAD16_WORD_SWAP( "pcf.12m", 0x400000, 0x400000, CRC(4ce235fe) SHA1(795b94557e954cc0e45fd3778b609064d57a34a2) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "pfghtj.key", 0x000000, 0x000014, CRC(62297638) SHA1(efe090ffa8992823cfd787ade736df5487d69ca7) )
+ROM_END
+
+
+ROM_START( sfa2h )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sz2eh.03", 0x000000, 0x80000, CRC(f24e7b3a) SHA1(0cf5169fcf46dcea5a100bf75a5dcd791c51b671) )
+ ROM_LOAD16_WORD_SWAP( "sz2e.04", 0x080000, 0x80000, CRC(22d17b26) SHA1(2d7a9cedae1bb2b7cfb80d2bfcf24cb7738df0bf) )
+ ROM_LOAD16_WORD_SWAP( "sz2.05", 0x100000, 0x80000, CRC(4b442a7c) SHA1(a0d7d229cff8efb2a253ff06270258b0b4d2761e) )
+ ROM_LOAD16_WORD_SWAP( "sz2.06", 0x180000, 0x80000, CRC(5b1d49c0) SHA1(f0a0c894c9cbe2b18e7f59058665949ee0025732) )
+ ROM_LOAD16_WORD_SWAP( "sz2.07", 0x200000, 0x80000, CRC(8e184246) SHA1(c51f6480cfa1dcec6c4713fd38c7a27338c3fa65) )
+ ROM_LOAD16_WORD_SWAP( "sz2.08", 0x280000, 0x80000, CRC(0fe8585d) SHA1(0cd5369a5aa90c98d8dc1ff3342cd4d990631cff) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sz2.13m", 0x0000000, 0x400000, CRC(4d1f1f22) SHA1(659fb4305bcf0cbbbbec97ede6e68a8323b13308) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.15m", 0x0000002, 0x400000, CRC(19cea680) SHA1(4cb88963a0fbcef191c8419b6379387c01b4c81e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.17m", 0x0000004, 0x400000, CRC(e01b4588) SHA1(c2936608fd75ff6cd5fa94c6d6d6f0c77c44a450) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.19m", 0x0000006, 0x400000, CRC(0feeda64) SHA1(f5b350601437bd94b70d97feb23d791df19da6b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz2.01a", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz2.02a", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz2.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sz2.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa2.key", 0x000000, 0x000014, CRC(1578dcb0) SHA1(a8bc83b341f9ea2bcc18861419bd574d159c6fcc) )
+ROM_END
+
+ROM_START( sfa3br )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3br.03", 0x000000, 0x80000, CRC(b2a99137) SHA1(cba8777cd241e270c19fe375489efc421cc01549) )
+ ROM_LOAD16_WORD_SWAP( "sfa3br.04", 0x080000, 0x80000, CRC(3e5cefe6) SHA1(f889bc9f7212e27d5df50ebda909b60e85dbfe29) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sfa3br.13", 0x0000000, 0x400000, CRC(f18ffe2d) SHA1(3b7251f3027461a847749c8238ff9b0a9ab1c405) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfa3br.15", 0x0000002, 0x400000, CRC(3283878c) SHA1(e879ad81be09f73949c188e45506f63a114999c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfa3br.17", 0x0000004, 0x400000, CRC(869e0ae2) SHA1(30e018f3b38dbdac6cd1d228865627811886624f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfa3br.19", 0x0000006, 0x400000, CRC(81e0ebfa) SHA1(449b7afc0c88edbab51b27abef4be5ff3698470c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3u.key", 0x000000, 0x000014, CRC(4a8f98c1) SHA1(11953de12ed8fbb6f60ad03b1ba5e22a429b7cfa) )
+ROM_END
+
+ROM_START( sfa3dp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3dp.03", 0x000000, 0x80000, CRC(9411ced4) SHA1(45c963125242eb78992d7d13c3f773f00115ba97) )
+ ROM_LOAD16_WORD_SWAP( "sfa3dp.04", 0x080000, 0x80000, CRC(01a7b266) SHA1(32bec1fa10641c6c155e71827aaa9853e946f8c6) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3.key", 0x000000, 0x000014, CRC(54fa39c6) SHA1(a0d2f8e697a7a4201762cb02842581840b2a7f78) )
+ROM_END
+
+ROM_START( sfa3nc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3nc.03", 0x000000, 0x80000, CRC(4773ce1b) SHA1(91c5be4c1053a07104f9c18e876d73406951e274) )
+ ROM_LOAD16_WORD_SWAP( "sfa3dp.04", 0x080000, 0x80000, CRC(01a7b266) SHA1(32bec1fa10641c6c155e71827aaa9853e946f8c6) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sfa3.09c", 0x300000, 0x80000, CRC(8cf82012) SHA1(2e270ec70e55534e7c2ec2a011e4aeeecb94db03) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3.key", 0x000000, 0x000014, CRC(54fa39c6) SHA1(a0d2f8e697a7a4201762cb02842581840b2a7f78) )
+ROM_END
+
+ROM_START( sfa3nch )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3nc.03", 0x000000, 0x80000, CRC(4773ce1b) SHA1(91c5be4c1053a07104f9c18e876d73406951e274) )
+ ROM_LOAD16_WORD_SWAP( "sfa3dp.04", 0x080000, 0x80000, CRC(01a7b266) SHA1(32bec1fa10641c6c155e71827aaa9853e946f8c6) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sfa3nch.09c", 0x300000, 0x80000, CRC(6cf78cc3) SHA1(9a69c9c7f4a308c5c9aef1141f45298e288fc1c0) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3.key", 0x000000, 0x000014, CRC(54fa39c6) SHA1(a0d2f8e697a7a4201762cb02842581840b2a7f78) )
+ROM_END
+
+ROM_START( sfa3sp2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3sp2.03", 0x000000, 0x80000, CRC(41b961b4) SHA1(e2865fa71b647b4a8a86cc260b13d6f9616859fa) )
+ ROM_LOAD16_WORD_SWAP( "sz3e.04c", 0x080000, 0x80000, CRC(5ad3f721) SHA1(fec11cc5f63593f0181eb28ae85ad916686793eb) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3.key", 0x000000, 0x000014, CRC(54fa39c6) SHA1(a0d2f8e697a7a4201762cb02842581840b2a7f78) )
+ROM_END
+
+ROM_START( sfa3spp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3spp.03", 0x000000, 0x80000, CRC(8267ee23) SHA1(ff86b54bcc7bdfb95bd537a3be2c03093c6865e1) )
+ ROM_LOAD16_WORD_SWAP( "sz3e.04c", 0x080000, 0x80000, CRC(5ad3f721) SHA1(fec11cc5f63593f0181eb28ae85ad916686793eb) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3.key", 0x000000, 0x000014, CRC(54fa39c6) SHA1(a0d2f8e697a7a4201762cb02842581840b2a7f78) )
+ROM_END
+
+ROM_START( sfa3uhd )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfa3uhd.03", 0x000000, 0x80000, CRC(eb1a8aeb) SHA1(fc6ae740eeeeb1c2a0e65b154f81904e59925a50) )
+ ROM_LOAD16_WORD_SWAP( "sz3u.04c", 0x080000, 0x80000, CRC(5f78f0e7) SHA1(f4df30fd3515fe9f1125f470b96028052c61f57b) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfa3u.key", 0x000000, 0x000014, CRC(4a8f98c1) SHA1(11953de12ed8fbb6f60ad03b1ba5e22a429b7cfa) )
+ROM_END
+
+ROM_START( sfaud )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzu_d.03d", 0x000000, 0x80000, CRC(9f2ff577) SHA1(e78d7e8e0a5703dea09aed2ac4055d45844cead5) )
+ ROM_LOAD16_WORD_SWAP( "sfz.04b", 0x080000, 0x80000, CRC(8b73b0e5) SHA1(5318761f615c21395366b5333e75eaaa73ef2073) )
+ ROM_LOAD16_WORD_SWAP( "sfz.05a", 0x100000, 0x80000, CRC(0810544d) SHA1(5f39bda3e7b16508eb58e5a2e0cc58c09cf428ce) )
+ ROM_LOAD16_WORD_SWAP( "sfz.06", 0x180000, 0x80000, CRC(806e8f38) SHA1(b6d6912aa8f2f590335d7ff9a8214648e7131ebb) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0 )
+ ROMX_LOAD( "sfz.14m", 0x800000, 0x200000, CRC(90fefdb3) SHA1(5eb28c8de57acfeaefebdd01509c7d9ba5244705) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.16m", 0x800002, 0x200000, CRC(5354c948) SHA1(07588f1ba6addc04fef3274c971174aaf3e632ab) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.18m", 0x800004, 0x200000, CRC(41a1e790) SHA1(ce25dad542308691dbe9606b26279bbd59ea4b81) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.20m", 0x800006, 0x200000, CRC(a549df98) SHA1(f054e95df650a891ef56da8bfb31cb2c945a9aed) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz.01", 0x00000, 0x08000, CRC(ffffec7d) SHA1(75b4aef001b72a0f571b51b2b97803facc1832dd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfz.02", 0x28000, 0x20000, CRC(45f46a08) SHA1(e32dbd27b52ab708278045b5a829376e55a4ca81) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfz.11m", 0x000000, 0x200000, CRC(c4b093cd) SHA1(256526bb693a0b72443f047e060304c9b739acd1) )
+ ROM_LOAD16_WORD_SWAP( "sfz.12m", 0x200000, 0x200000, CRC(8bdbc4b4) SHA1(0e21c9a75a17a7e7dfd8bb51098c2b9dc4c933ec) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+
+ROM_START( sfz2abr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "szabr.03", 0x000000, 0x80000, CRC(0e8e719b) SHA1(ef013adf386925c68f3d38159adfe447c8f259de) )
+ ROM_LOAD16_WORD_SWAP( "szabr.04", 0x080000, 0x80000, CRC(bc7271a0) SHA1(601a0e21926a1d9aebebf41e6dc08523b6773338) )
+ ROM_LOAD16_WORD_SWAP( "szabr.05", 0x100000, 0x80000, CRC(e19eee58) SHA1(f0a2f8606136450c375d9b43f182e4cee2ec1208) )
+ ROM_LOAD16_WORD_SWAP( "szaa.06", 0x180000, 0x80000, CRC(cfc0e7a8) SHA1(31ed58451c7a6ac88a8fccab369167694698f044) )
+ ROM_LOAD16_WORD_SWAP( "szaa.07", 0x200000, 0x80000, CRC(5feb8b20) SHA1(13c79c9b72c3abf0a0b75d507d91ece71e460c06) )
+ ROM_LOAD16_WORD_SWAP( "szaa.08", 0x280000, 0x80000, CRC(6eb6d412) SHA1(c858fec9c1dfea70dfcca629c1c24306f8ae6d81) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sz2br.13m", 0x0000000, 0x400000, CRC(a3b979fe) SHA1(236378162562aea3e522a182bbf395b020452893) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2br.15m", 0x0000002, 0x400000, CRC(ab0e6693) SHA1(6f00bdf5064fb1cb2e152c2731d26a11cd8bf376) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2br.17m", 0x0000004, 0x400000, CRC(ce0913ba) SHA1(684c402c7ca1e50018ef439331b5bd002f573db8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2br.19m", 0x0000006, 0x400000, CRC(3c8cffe6) SHA1(26d4ed4a20a4e84b8c87c7120b181371e428ad58) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz2.01a", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz2.02a", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz2.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sz2.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz2al.key", 0x000000, 0x000014, CRC(2904963e) SHA1(f4fa44646746ab4c6f2e76eaba57a7aee32e2933) )
+ROM_END
+
+ROM_START( sfz2ajhp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzajhp.03", 0x000000, 0x80000, CRC(b2d81a68) SHA1(f59d1417fed645d1b4edec47195cf2e85d1c4fc4) )
+ ROM_LOAD16_WORD_SWAP( "szaj.04a", 0x080000, 0x80000, CRC(e7ca87c7) SHA1(e44c930b27431dd2b983d93471a440d292e7a8bb) )
+ ROM_LOAD16_WORD_SWAP( "szaj.05a", 0x100000, 0x80000, CRC(c88ebf88) SHA1(e37cf232fc70b9a3254dea99754e288232f04e25) )
+ ROM_LOAD16_WORD_SWAP( "szaj.06a", 0x180000, 0x80000, CRC(35ed5b7a) SHA1(b03cb92f594eb35fa374445f74930e9040a2baff) )
+ ROM_LOAD16_WORD_SWAP( "szaj.07a", 0x200000, 0x80000, CRC(975dcb3e) SHA1(a2ca8e5a768e49cce9e2137ec0dcba9337ed2ad5) )
+ ROM_LOAD16_WORD_SWAP( "szaj.08a", 0x280000, 0x80000, CRC(dc73f2d7) SHA1(09fa10e7d1ff5f0dac87a6cf3d66730e3ab9ad25) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sza.13m", 0x0000000, 0x400000, CRC(4d1f1f22) SHA1(659fb4305bcf0cbbbbec97ede6e68a8323b13308) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.15m", 0x0000002, 0x400000, CRC(19cea680) SHA1(4cb88963a0fbcef191c8419b6379387c01b4c81e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.17m", 0x0000004, 0x400000, CRC(e01b4588) SHA1(c2936608fd75ff6cd5fa94c6d6d6f0c77c44a450) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.19m", 0x0000006, 0x400000, CRC(0feeda64) SHA1(f5b350601437bd94b70d97feb23d791df19da6b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sza.01", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sza.02", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sza.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sza.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz2alj.key", 0x000000, 0x000014, CRC(4c42320f) SHA1(0fabdab677416c5a8060526d997e6f80b26f9bb3) )
+ROM_END
+
+ROM_START( sfz2aldp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzaldp.03", 0x000000, 0x80000, CRC(d6493cc5) SHA1(b7123783b9f77a0ec2e995b599a96f291b178c95) )
+ ROM_LOAD16_WORD_SWAP( "sfzaldp.04", 0x080000, 0x80000, CRC(a3f56672) SHA1(7351929b857b710a658a0be7c9fb82edca89ddfe) )
+ ROM_LOAD16_WORD_SWAP( "szaj.05a", 0x100000, 0x80000, CRC(c88ebf88) SHA1(e37cf232fc70b9a3254dea99754e288232f04e25) )
+ ROM_LOAD16_WORD_SWAP( "szaj.06a", 0x180000, 0x80000, CRC(35ed5b7a) SHA1(b03cb92f594eb35fa374445f74930e9040a2baff) )
+ ROM_LOAD16_WORD_SWAP( "szaj.07a", 0x200000, 0x80000, CRC(975dcb3e) SHA1(a2ca8e5a768e49cce9e2137ec0dcba9337ed2ad5) )
+ ROM_LOAD16_WORD_SWAP( "szaj.08a", 0x280000, 0x80000, CRC(dc73f2d7) SHA1(09fa10e7d1ff5f0dac87a6cf3d66730e3ab9ad25) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sza.13m", 0x0000000, 0x400000, CRC(4d1f1f22) SHA1(659fb4305bcf0cbbbbec97ede6e68a8323b13308) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.15m", 0x0000002, 0x400000, CRC(19cea680) SHA1(4cb88963a0fbcef191c8419b6379387c01b4c81e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.17m", 0x0000004, 0x400000, CRC(e01b4588) SHA1(c2936608fd75ff6cd5fa94c6d6d6f0c77c44a450) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.19m", 0x0000006, 0x400000, CRC(0feeda64) SHA1(f5b350601437bd94b70d97feb23d791df19da6b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sza.01", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sza.02", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sza.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sza.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz2alj.key", 0x000000, 0x000014, CRC(4c42320f) SHA1(0fabdab677416c5a8060526d997e6f80b26f9bb3) )
+ROM_END
+
+ROM_START( sfz2aldp2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzaldp2.03", 0x000000, 0x80000, CRC(67bc6f45) SHA1(d810865d890fc7830078e5dc13002f4447a0b3ea) )
+ ROM_LOAD16_WORD_SWAP( "sfzaldp2.04", 0x080000, 0x80000, CRC(b124800a) SHA1(560e708e1296ac3e7e6b74bee99a152a0d1f6894) )
+ ROM_LOAD16_WORD_SWAP( "szaj.05a", 0x100000, 0x80000, CRC(c88ebf88) SHA1(e37cf232fc70b9a3254dea99754e288232f04e25) )
+ ROM_LOAD16_WORD_SWAP( "szaj.06a", 0x180000, 0x80000, CRC(35ed5b7a) SHA1(b03cb92f594eb35fa374445f74930e9040a2baff) )
+ ROM_LOAD16_WORD_SWAP( "szaj.07a", 0x200000, 0x80000, CRC(975dcb3e) SHA1(a2ca8e5a768e49cce9e2137ec0dcba9337ed2ad5) )
+ ROM_LOAD16_WORD_SWAP( "szaj.08a", 0x280000, 0x80000, CRC(dc73f2d7) SHA1(09fa10e7d1ff5f0dac87a6cf3d66730e3ab9ad25) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sza.13m", 0x0000000, 0x400000, CRC(4d1f1f22) SHA1(659fb4305bcf0cbbbbec97ede6e68a8323b13308) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.15m", 0x0000002, 0x400000, CRC(19cea680) SHA1(4cb88963a0fbcef191c8419b6379387c01b4c81e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.17m", 0x0000004, 0x400000, CRC(e01b4588) SHA1(c2936608fd75ff6cd5fa94c6d6d6f0c77c44a450) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.19m", 0x0000006, 0x400000, CRC(0feeda64) SHA1(f5b350601437bd94b70d97feb23d791df19da6b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sza.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sza.01", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sza.02", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sza.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sza.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz2alj.key", 0x000000, 0x000014, CRC(4c42320f) SHA1(0fabdab677416c5a8060526d997e6f80b26f9bb3) )
+ROM_END
+
+ROM_START( sfz2jyh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfz2jyh.03", 0x000000, 0x80000, CRC(4afbba27) SHA1(9bba80417763d3dd9614efc810908ef3d011c49d) )
+ ROM_LOAD16_WORD_SWAP( "sz2j.04a", 0x080000, 0x80000, CRC(ae4851a9) SHA1(4771bc22fe1b376b753a68506c012c52bd4b886d) )
+ ROM_LOAD16_WORD_SWAP( "sz2.05a", 0x100000, 0x80000, CRC(98e8e992) SHA1(41745b63e6b3888081d189b8315ed3b7526b3d20) )
+ ROM_LOAD16_WORD_SWAP( "sz2.06", 0x180000, 0x80000, CRC(5b1d49c0) SHA1(f0a0c894c9cbe2b18e7f59058665949ee0025732) )
+ ROM_LOAD16_WORD_SWAP( "sz2j.07a", 0x200000, 0x80000, CRC(d910b2a2) SHA1(aa201660caa9cef993c147a1077c9e7767b34a78) )
+ ROM_LOAD16_WORD_SWAP( "sz2.08", 0x280000, 0x80000, CRC(0fe8585d) SHA1(0cd5369a5aa90c98d8dc1ff3342cd4d990631cff) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "sz2.13m", 0x0000000, 0x400000, CRC(4d1f1f22) SHA1(659fb4305bcf0cbbbbec97ede6e68a8323b13308) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.15m", 0x0000002, 0x400000, CRC(19cea680) SHA1(4cb88963a0fbcef191c8419b6379387c01b4c81e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.17m", 0x0000004, 0x400000, CRC(e01b4588) SHA1(c2936608fd75ff6cd5fa94c6d6d6f0c77c44a450) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.19m", 0x0000006, 0x400000, CRC(0feeda64) SHA1(f5b350601437bd94b70d97feb23d791df19da6b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.14m", 0x1000000, 0x100000, CRC(0560c6aa) SHA1(f2bed3a8efef18052b51a7f0f6a888a18db813a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.16m", 0x1000002, 0x100000, CRC(ae940f87) SHA1(39ee26333abbe302ba76dced0196a2e6b3b1d02a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.18m", 0x1000004, 0x100000, CRC(4bc3c8bc) SHA1(6256963c515bf56f39b6e559afefd653ead56c54) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz2.20m", 0x1000006, 0x100000, CRC(39e674c0) SHA1(8e771a2d8c2accad0463bccd21d7b23af0c895a1) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz2.01a", 0x00000, 0x08000, CRC(1bc323cf) SHA1(83fbd6e9b327700dc9f1c59700b7385bc3705749) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz2.02a", 0x28000, 0x20000, CRC(ba6a5013) SHA1(7814f3e56b69529b9860dd61c3b1e8d700244b03) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz2.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
+ ROM_LOAD16_WORD_SWAP( "sz2.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz2j.key", 0x000000, 0x000014, CRC(455bd098) SHA1(6a928a2d44f416ccdb0c09a8dd7466ac12f38110) )
+ROM_END
+
+
+ROM_START( sfz3jb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfz3jb.03", 0x000000, 0x80000, CRC(d7eca311) SHA1(cb2156bb5b545782bf4c0387ba6995136d14452d) )
+ ROM_LOAD16_WORD_SWAP( "sfz3jb.04", 0x080000, 0x80000, CRC(ee836561) SHA1(9b3f6a7a7b11b76e4849698c7ce5f09c23bcdad0) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz3j.key", 0x000000, 0x000014, CRC(d30cca8d) SHA1(b05869902d4d5968d5f79ed6165eb4b78e1ddcdd) )
+ROM_END
+
+ROM_START( sfz3jemb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfz3jemb.03", 0x000000, 0x80000, CRC(1e103c5e) SHA1(2a96b8f62f4dcefadb4485c60e40074a6357a22a) )
+ ROM_LOAD16_WORD_SWAP( "sz3j.04c", 0x080000, 0x80000, CRC(fcb31228) SHA1(093f40083b5a4e4cae433d5856c48014063fe6ad) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz3j.key", 0x000000, 0x000014, CRC(d30cca8d) SHA1(b05869902d4d5968d5f79ed6165eb4b78e1ddcdd) )
+ROM_END
+
+ROM_START( sfz3jhp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfz3jhp.03", 0x000000, 0x80000, CRC(5719fd0c) SHA1(edfdbbc36173a00652ef136005e55171b446b6c2) )
+ ROM_LOAD16_WORD_SWAP( "sz3j.04c", 0x080000, 0x80000, CRC(fcb31228) SHA1(093f40083b5a4e4cae433d5856c48014063fe6ad) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz3j.key", 0x000000, 0x000014, CRC(d30cca8d) SHA1(b05869902d4d5968d5f79ed6165eb4b78e1ddcdd) )
+ROM_END
+
+ROM_START( sfz3jsep )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfz3jsep.03", 0x000000, 0x80000, CRC(248da619) SHA1(54155279822dc8f754d753c696eeec1fd0e90c18) )
+ ROM_LOAD16_WORD_SWAP( "sz3j.04c", 0x080000, 0x80000, CRC(fcb31228) SHA1(093f40083b5a4e4cae433d5856c48014063fe6ad) )
+ ROM_LOAD16_WORD_SWAP( "sz3.05c", 0x100000, 0x80000, CRC(57fd0a40) SHA1(bc2d5f4d57117bbf58b1adb088e00424ef489e92) )
+ ROM_LOAD16_WORD_SWAP( "sz3.06c", 0x180000, 0x80000, CRC(f6305f8b) SHA1(3fd1ebdbad96103aca604e950b488e52460a71ec) )
+ ROM_LOAD16_WORD_SWAP( "sz3.07c", 0x200000, 0x80000, CRC(6eab0f6f) SHA1(f8d093dda65cf4e8a3000dc1b96355bb03dcb495) )
+ ROM_LOAD16_WORD_SWAP( "sz3.08c", 0x280000, 0x80000, CRC(910c4a3b) SHA1(dbd41280f9b16ad6a5b8f12092549970349395f1) )
+ ROM_LOAD16_WORD_SWAP( "sz3.09c", 0x300000, 0x80000, CRC(b29e5199) SHA1(c6c215eb5aa37f678a9cafcbd8620969fb5ca12f) )
+ ROM_LOAD16_WORD_SWAP( "sz3.10b", 0x380000, 0x80000, CRC(deb2ff52) SHA1(0aa4722aad68a04164946c78bf05752f947b4322) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3.01", 0x00000, 0x08000, CRC(de810084) SHA1(fd0b969b732921ed8b40c16fbfa30ee09c7a7cbd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3.02", 0x28000, 0x20000, CRC(72445dc4) SHA1(14fca7596ac45ba655016eef5b6120f9f9671c23) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfz3j.key", 0x000000, 0x000014, CRC(d30cca8d) SHA1(b05869902d4d5968d5f79ed6165eb4b78e1ddcdd) )
+ROM_END
+
+
+ROM_START( sfzjboss )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzjboss.03", 0x000000, 0x80000, CRC(0a2e2f39) SHA1(654e05c1598ec932de03fd1ff8b9fa66ec4ceb60) )
+ ROM_LOAD16_WORD_SWAP( "sfz.04b", 0x080000, 0x80000, CRC(8b73b0e5) SHA1(5318761f615c21395366b5333e75eaaa73ef2073) )
+ ROM_LOAD16_WORD_SWAP( "sfz.05a", 0x100000, 0x80000, CRC(0810544d) SHA1(5f39bda3e7b16508eb58e5a2e0cc58c09cf428ce) )
+ ROM_LOAD16_WORD_SWAP( "sfzjboss.06", 0x180000, 0x80000, CRC(b6c4fec7) SHA1(602c9acb8034219334df05ff4d5dc67514823182) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0x00 )
+ ROMX_LOAD( "sfz.14m", 0x800000, 0x200000, CRC(90fefdb3) SHA1(5eb28c8de57acfeaefebdd01509c7d9ba5244705) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.16m", 0x800002, 0x200000, CRC(5354c948) SHA1(07588f1ba6addc04fef3274c971174aaf3e632ab) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.18m", 0x800004, 0x200000, CRC(41a1e790) SHA1(ce25dad542308691dbe9606b26279bbd59ea4b81) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.20m", 0x800006, 0x200000, CRC(a549df98) SHA1(f054e95df650a891ef56da8bfb31cb2c945a9aed) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz.01", 0x00000, 0x08000, CRC(ffffec7d) SHA1(75b4aef001b72a0f571b51b2b97803facc1832dd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfz.02", 0x28000, 0x20000, CRC(45f46a08) SHA1(e32dbd27b52ab708278045b5a829376e55a4ca81) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfz.11m", 0x000000, 0x200000, CRC(c4b093cd) SHA1(256526bb693a0b72443f047e060304c9b739acd1) )
+ ROM_LOAD16_WORD_SWAP( "sfz.12m", 0x200000, 0x200000, CRC(8bdbc4b4) SHA1(0e21c9a75a17a7e7dfd8bb51098c2b9dc4c933ec) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfzj.key", 0x000000, 0x000014, CRC(355d85b8) SHA1(5da2c407852ce7b28153f3f94de8328802ff2f2d) )
+ROM_END
+
+ROM_START( sfzjyh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfzjyh.03", 0x000000, 0x80000, CRC(6b0366bf) SHA1(6138f48027beaba73cc744ffc75589fe26ec1339) )
+ ROM_LOAD16_WORD_SWAP( "sfz.04b", 0x080000, 0x80000, CRC(8b73b0e5) SHA1(5318761f615c21395366b5333e75eaaa73ef2073) )
+ ROM_LOAD16_WORD_SWAP( "sfz.05a", 0x100000, 0x80000, CRC(0810544d) SHA1(5f39bda3e7b16508eb58e5a2e0cc58c09cf428ce) )
+ ROM_LOAD16_WORD_SWAP( "sfzjyh.06", 0x180000, 0x80000, CRC(e7bb5d20) SHA1(0f2e4516ba93f02e6869b182d225718e845d1093) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0x00 )
+ ROMX_LOAD( "sfz.14m", 0x800000, 0x200000, CRC(90fefdb3) SHA1(5eb28c8de57acfeaefebdd01509c7d9ba5244705) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.16m", 0x800002, 0x200000, CRC(5354c948) SHA1(07588f1ba6addc04fef3274c971174aaf3e632ab) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.18m", 0x800004, 0x200000, CRC(41a1e790) SHA1(ce25dad542308691dbe9606b26279bbd59ea4b81) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfz.20m", 0x800006, 0x200000, CRC(a549df98) SHA1(f054e95df650a891ef56da8bfb31cb2c945a9aed) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfz.01", 0x00000, 0x08000, CRC(ffffec7d) SHA1(75b4aef001b72a0f571b51b2b97803facc1832dd) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfz.02", 0x28000, 0x20000, CRC(45f46a08) SHA1(e32dbd27b52ab708278045b5a829376e55a4ca81) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfz.11m", 0x000000, 0x200000, CRC(c4b093cd) SHA1(256526bb693a0b72443f047e060304c9b739acd1) )
+ ROM_LOAD16_WORD_SWAP( "sfz.12m", 0x200000, 0x200000, CRC(8bdbc4b4) SHA1(0e21c9a75a17a7e7dfd8bb51098c2b9dc4c933ec) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sfzj.key", 0x000000, 0x000014, CRC(355d85b8) SHA1(5da2c407852ce7b28153f3f94de8328802ff2f2d) )
+ROM_END
+
+
+ROM_START( sgemfch )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "pcfu.03", 0x000000, 0x80000, CRC(ac2e8566) SHA1(5975aae46bded231c0f478f40c7257434ade36b0) )
+ ROM_LOAD16_WORD_SWAP( "pcf.04", 0x080000, 0x80000, CRC(f4314c96) SHA1(c40ed74039bf0096eb3648b7243a8e697638e0a6) )
+ ROM_LOAD16_WORD_SWAP( "pcf.05", 0x100000, 0x80000, CRC(215655f6) SHA1(242c0f4401520f2a3b0deafc3a807b18b987e496) )
+ ROM_LOAD16_WORD_SWAP( "pcf.06", 0x180000, 0x80000, CRC(ea6f13ea) SHA1(1bc924a8a9da1d2ad7667685cdb92fe317a39aba) )
+ ROM_LOAD16_WORD_SWAP( "sgemfch.07", 0x200000, 0x80000, CRC(dcbe118c) SHA1(c571058180e1ad317eb3819a4701d4e40e7787f1) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "pcf.13m", 0x0000000, 0x400000, CRC(22d72ab9) SHA1(653efd95c34b4b9d2ab0d219f41a99ca84e12214) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.15m", 0x0000002, 0x400000, CRC(16a4813c) SHA1(bf5fce6008214f353414d1b64bea4ed0c7673670) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.17m", 0x0000004, 0x400000, CRC(1097e035) SHA1(4bd51e4e9447af27d2cac1f6d2201e37c949912b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.19m", 0x0000006, 0x400000, CRC(d362d874) SHA1(30c42af18440496cc05e4418e4efa41172ae4ced) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.14m", 0x1000000, 0x100000, CRC(0383897c) SHA1(aba14afa1d0c971afcee4317f480e88117d77b5e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.16m", 0x1000002, 0x100000, CRC(76f91084) SHA1(3d1e32467f2aa5dd6fb96bd5c866ecc9691660fc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.18m", 0x1000004, 0x100000, CRC(756c3754) SHA1(be2f709b90222a567f198f851cf07ffb0ad433d7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pcf.20m", 0x1000006, 0x100000, CRC(9ec9277d) SHA1(b7ceeaca30dfcdf498b61a6961f0aa1a068b8ec4) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pcf.01", 0x00000, 0x08000, CRC(254e5f33) SHA1(c413ec0630b9bdd15e64f42893eba8958a09b573) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "pcf.02", 0x28000, 0x20000, CRC(6902f4f9) SHA1(9bfe4ddade3c666076d26a2b545120f6d059fd7c) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "pcf.11m", 0x000000, 0x400000, CRC(a5dea005) SHA1(3ae79baf6ff5bd527f82b26f164c7e3c65423ae2) )
+ ROM_LOAD16_WORD_SWAP( "pcf.12m", 0x400000, 0x400000, CRC(4ce235fe) SHA1(795b94557e954cc0e45fd3778b609064d57a34a2) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "sgemf.key", 0x000000, 0x000014, CRC(3d604021) SHA1(f6189a7dcdd110f4d624cddfe2e51e49c40a0fdb) )
+ROM_END
+
+
+ROM_START( spf2tb )
+ ROM_REGION(CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "pzfu_boss.03a", 0x000000, 0x80000, CRC(ca1f3e42) SHA1(784214517f3ac3f5f727a18f50992d4fa3417726) )
+ ROM_LOAD16_WORD_SWAP( "pzf.04", 0x080000, 0x80000, CRC(b80649e2) SHA1(5bfccd656aea7ff82e9a20bb5856f4ab99b5a007) )
+
+ ROM_REGION( 0xC00000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0 )
+ ROMX_LOAD( "pzf.14m", 0x800000, 0x100000, CRC(2d4881cb) SHA1(fd3baa183c25bed153b19c251980e2fb761600e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.16m", 0x800002, 0x100000, CRC(4b0fd1be) SHA1(377aafdcdb7a866b1c8487670e3598d8197976e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.18m", 0x800004, 0x100000, CRC(e43aac33) SHA1(d041e0688c3807d3363861a7f216de43b34d846c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.20m", 0x800006, 0x100000, CRC(7f536ff1) SHA1(905b9d62ef7bef47297c7f4a4dd697aed6df38a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION(QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pzf.01", 0x00000, 0x08000, CRC(600fb2a3) SHA1(1fab1c2a23bf6ad8309d29ddbbc29435a8aeea13) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "pzf.02", 0x28000, 0x20000, CRC(496076e0) SHA1(1ee4e135140afd0e8e03231e570cd77d140f6367) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "pzf.11m", 0x000000, 0x200000, CRC(78442743) SHA1(b61190bb586871de6d54af580e3e1d9cc0de0acb) )
+ ROM_LOAD16_WORD_SWAP( "pzf.12m", 0x200000, 0x200000, CRC(399d2c7b) SHA1(e849dea97b8d16540415c0d9bbc4f9f4eb755ec4) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "spf2tb.key", 0x000000, 0x000014, CRC(5d7b15e8) SHA1(c14c6b148761856bf83b31b52df83be461ac8d62) )
+ROM_END
+
+
+ROM_START( ssf2r1d )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssfud.03a", 0x000000, 0x80000, CRC(fad5daf8) SHA1(5bed5d5af8dffc54d3b3371274a3905f46384f79) )
+ ROM_LOAD16_WORD_SWAP( "ssfud.04a", 0x080000, 0x80000, CRC(0d31af65) SHA1(7e903e18cb899627fedd8ad92594b75b5d8ee8fd) )
+ ROM_LOAD16_WORD_SWAP( "ssfud.05", 0x100000, 0x80000, CRC(75c651ef) SHA1(8c6f60d3cf10d802190438c403a719bc30ccbeaa) )
+ ROM_LOAD16_WORD_SWAP( "ssfud.06", 0x180000, 0x80000, CRC(85c3ec00) SHA1(29ab3eccc5f9c0dd6bd19eaa83c72e1a1d44b320) )
+ ROM_LOAD16_WORD_SWAP( "ssf2r1d.07", 0x200000, 0x80000, CRC(9320e350) SHA1(bec5dcd85faf10c72cc79e5d5af311ffb5445c47) )
+
+ ROM_REGION( 0xc00000, "gfx", 0 )
+ ROMX_LOAD( "ssf.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ssf.01", 0x00000, 0x08000, CRC(eb247e8c) SHA1(24296c18d9b1136d69712bf1c9d9d15463041e83) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ssf.q01", 0x000000, 0x080000, CRC(a6f9da5c) SHA1(6d19f83a01bd25b838d5c2871f7964529d926c98) )
+ ROM_LOAD( "ssf.q02", 0x080000, 0x080000, CRC(8c66ae26) SHA1(32a82aee6ed4480e5a990f9af161734c7c0a1403) )
+ ROM_LOAD( "ssf.q03", 0x100000, 0x080000, CRC(695cc2ca) SHA1(c2675f0233608b76de528d2a6ef19846d1348060) )
+ ROM_LOAD( "ssf.q04", 0x180000, 0x080000, CRC(9d9ebe32) SHA1(9b26329370041374f1a90b479a172d2bc2801c4d) )
+ ROM_LOAD( "ssf.q05", 0x200000, 0x080000, CRC(4770e7b7) SHA1(0e764f0befb9227b0b36508d8ca8ec9be31bcb05) )
+ ROM_LOAD( "ssf.q06", 0x280000, 0x080000, CRC(4e79c951) SHA1(1144781d7dc57ef8a6458d982f5c91548ff59e27) )
+ ROM_LOAD( "ssf.q07", 0x300000, 0x080000, CRC(cdd14313) SHA1(ebe767a9d4b51dba4282fa0a36a546a88620dd59) )
+ ROM_LOAD( "ssf.q08", 0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+ROM_START( ssf2td )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.03c", 0x000000, 0x80000, CRC(ed99d850) SHA1(d2dcb8395d630fcd1776fd32a9c685646e1f18be) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.04a", 0x080000, 0x80000, CRC(38d9b364) SHA1(814e67441a9d92ed89edf20dacb17a0f100020e3) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.05", 0x100000, 0x80000, CRC(c63358d0) SHA1(dde4d9e9adce4dee02322c0fd71615eed0af62e6) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.06a", 0x180000, 0x80000, CRC(ccb29808) SHA1(10e7b135a936409fe7c4d7959ea375634a8c68e4) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.07", 0x200000, 0x80000, CRC(61f94982) SHA1(d2f22f50c21393deda7d5838dbd2b265722acd38) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.08", 0x280000, 0x80000, CRC(d399c36c) SHA1(b4c4217843e5c3ef00ab04d58ca9368d2d734065) )
+ ROM_LOAD16_WORD_SWAP( "sfxe_d.09", 0x300000, 0x80000, CRC(317b5dbc) SHA1(1e1037b071251c28ed9cd5ccd6d52b72cc86396a) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+ROM_START( ssf2tfp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2tfp.03", 0x000000, 0x80000, CRC(8f7d4954) SHA1(ace9981370b8f6df3186c9d9a1d3a614cc519af1) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.04a", 0x080000, 0x80000, CRC(d0bc29c6) SHA1(d9f89bcd79cba26db2100a00dd7bd8ee6ecb75f3) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.05", 0x100000, 0x80000, CRC(65222964) SHA1(025bb708dc5b6365cc7fe60fc3f242511ad8f384) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.06a", 0x180000, 0x80000, CRC(8fe9f531) SHA1(b5d9ed498f730fdb968992bdec33605db1a007f4) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.07", 0x200000, 0x80000, CRC(8a7d0cb6) SHA1(27ea0cea73a93c27257bf2a170d1deaf938cc311) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.08", 0x280000, 0x80000, CRC(74c24062) SHA1(f3eca09e0544c6aa46b0c4bead2246ab1e9a97d9) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2t.key", 0x000000, 0x000014, CRC(524d608e) SHA1(fcd2b9a1a640a0dee4a674dc9cfb3975466f7757) )
+ROM_END
+
+ROM_START( ssf2tfr )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2tfr.03", 0x000000, 0x80000, CRC(c8c491d1) SHA1(5e12ccd36c8cd086d3d628e7f121aefcbc17340e) )
+ ROM_LOAD16_WORD_SWAP( "ssf2tfr.04", 0x080000, 0x80000, CRC(b018ceea) SHA1(75fa14f93c82ade94713556cffcfd17dfcef3e35) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.05", 0x100000, 0x80000, CRC(65222964) SHA1(025bb708dc5b6365cc7fe60fc3f242511ad8f384) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.06a", 0x180000, 0x80000, CRC(8fe9f531) SHA1(b5d9ed498f730fdb968992bdec33605db1a007f4) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.07", 0x200000, 0x80000, CRC(8a7d0cb6) SHA1(27ea0cea73a93c27257bf2a170d1deaf938cc311) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.08", 0x280000, 0x80000, CRC(74c24062) SHA1(f3eca09e0544c6aa46b0c4bead2246ab1e9a97d9) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2t.key", 0x000000, 0x000014, CRC(524d608e) SHA1(fcd2b9a1a640a0dee4a674dc9cfb3975466f7757) )
+ROM_END
+
+ROM_START( ssf2tpls )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2tpls.03", 0x000000, 0x80000, CRC(abd7a3e0) SHA1(088166ab28e7a3abf90720c1c6108ff8946b6f7b) )
+ ROM_LOAD16_WORD_SWAP( "ssf2tpls.04", 0x080000, 0x80000, CRC(94a4434b) SHA1(1729bed0121995ddffc21b3d3841f6eaddab8064) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.05", 0x100000, 0x80000, CRC(65222964) SHA1(025bb708dc5b6365cc7fe60fc3f242511ad8f384) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.06a", 0x180000, 0x80000, CRC(8fe9f531) SHA1(b5d9ed498f730fdb968992bdec33605db1a007f4) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.07", 0x200000, 0x80000, CRC(8a7d0cb6) SHA1(27ea0cea73a93c27257bf2a170d1deaf938cc311) )
+ ROM_LOAD16_WORD_SWAP( "sfxe.08", 0x280000, 0x80000, CRC(74c24062) SHA1(f3eca09e0544c6aa46b0c4bead2246ab1e9a97d9) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2t.key", 0x000000, 0x000014, CRC(524d608e) SHA1(fcd2b9a1a640a0dee4a674dc9cfb3975466f7757) )
+ROM_END
+
+ROM_START( ssf2xjhy )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjhy.03", 0x000000, 0x80000, CRC(62b59bf0) SHA1(b8ef9a39dd594f243dab3b440c871730356403c8) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.04a", 0x080000, 0x80000, CRC(af7767b4) SHA1(61e7364408bf07c01634913c112b6245acce48ab) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.05", 0x100000, 0x80000, CRC(f4ff18f5) SHA1(aa713c9e1a2eba35bf1c9b40bb262ff7e46b9ce4) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.06a", 0x180000, 0x80000, CRC(260d0370) SHA1(5339cf87000caef74d491815391be59cfd701c8b) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.07", 0x200000, 0x80000, CRC(1324d02a) SHA1(c23a6ea09819bd33b6e2f58aa28c317ce53a46a0) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.08", 0x280000, 0x80000, CRC(2de76f10) SHA1(8cbe96dfeaa41306caa2819b82272ce3b0b9f926) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2xj.key", 0x000000, 0x000014, CRC(160d1424) SHA1(187baff83b54acfdcedd9b9222a4cc768040c622) )
+ROM_END
+
+ROM_START( ssf2xjjs )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjjs.03", 0x000000, 0x80000, CRC(183e95df) SHA1(009bfc636f67481ae0147a96e9a9b8eaa6137e52) )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjjs.04", 0x080000, 0x80000, CRC(6ce1a901) SHA1(dd8d82b744bb40d1c07ad8feabfc02c62cd868aa) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.05", 0x100000, 0x80000, CRC(f4ff18f5) SHA1(aa713c9e1a2eba35bf1c9b40bb262ff7e46b9ce4) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.06a", 0x180000, 0x80000, CRC(260d0370) SHA1(5339cf87000caef74d491815391be59cfd701c8b) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.07", 0x200000, 0x80000, CRC(1324d02a) SHA1(c23a6ea09819bd33b6e2f58aa28c317ce53a46a0) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.08", 0x280000, 0x80000, CRC(2de76f10) SHA1(8cbe96dfeaa41306caa2819b82272ce3b0b9f926) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2xj.key", 0x000000, 0x000014, CRC(160d1424) SHA1(187baff83b54acfdcedd9b9222a4cc768040c622) )
+ROM_END
+
+ROM_START( ssf2xjnc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjnc.03", 0x000000, 0x80000, CRC(c0b5e5b8) SHA1(8cedb674aac5918dbb38d2efa4036ea602b92f8a) )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjnc.04", 0x080000, 0x80000, CRC(4e17998f) SHA1(24b10b541191dfd522f024259d530451785abc2d) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.05", 0x100000, 0x80000, CRC(f4ff18f5) SHA1(aa713c9e1a2eba35bf1c9b40bb262ff7e46b9ce4) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.06a", 0x180000, 0x80000, CRC(260d0370) SHA1(5339cf87000caef74d491815391be59cfd701c8b) )
+ ROM_LOAD16_WORD_SWAP( "sfxj.07", 0x200000, 0x80000, CRC(1324d02a) SHA1(c23a6ea09819bd33b6e2f58aa28c317ce53a46a0) )
+ ROM_LOAD16_WORD_SWAP( "ssf2xjnc.08", 0x280000, 0x80000, CRC(6745612c) SHA1(d21b010d25d19b1c31b7f02d85978cd4a4444d60) )
+ ROM_LOAD16_WORD_SWAP( "sfx.09", 0x300000, 0x80000, CRC(642fae3f) SHA1(746df99b826b9837bba267104132161153c1daff) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROMX_LOAD( "sfx.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.21m", 0xc00000, 0x100000, CRC(e32854af) SHA1(1a5e11e9caa2b96108d89ae660ef1f6bcb469a74) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.23m", 0xc00002, 0x100000, CRC(760f2927) SHA1(491e28e14ee06821fc9e709efa7b91313bc0c2db) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.25m", 0xc00004, 0x100000, CRC(1ee90208) SHA1(83df1d9953560edddc2951ea426d29fb014e6a8a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sfx.27m", 0xc00006, 0x100000, CRC(f814400f) SHA1(ad6921af36d0bd5dfb89b1fb53c3ca3fd92d7204) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sfx.01", 0x00000, 0x08000, CRC(b47b8835) SHA1(c8b2d50fe3a329bd0592ea160d505155d873dab1) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sfx.02", 0x28000, 0x20000, CRC(0022633f) SHA1(cab3afc79da53e3887eb1ccd1f4d19790728e6cd) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sfx.11m", 0x000000, 0x200000, CRC(9bdbd476) SHA1(a8520f77f30b97aae36408e0c4ca1ebbde1808a5) )
+ ROM_LOAD16_WORD_SWAP( "sfx.12m", 0x200000, 0x200000, CRC(a05e3aab) SHA1(d4eb9cae66c74e956569fea8b815156fbd420f83) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2xj.key", 0x000000, 0x000014, CRC(160d1424) SHA1(187baff83b54acfdcedd9b9222a4cc768040c622) )
+ROM_END
+
+ROM_START( ssf2zhp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssf2zhp.03", 0x000000, 0x80000, CRC(e7dcfc8d) SHA1(7a6e703a5cfd9fbdceab84e5f5e0d443e6c95dcc) )
+ ROM_LOAD16_WORD_SWAP( "ssfe.04", 0x080000, 0x80000, CRC(b082aa67) SHA1(ca26b4bb1947cb30eaf6b61f606b859d18da4c4c) )
+ ROM_LOAD16_WORD_SWAP( "ssfe.05", 0x100000, 0x80000, CRC(02b9c137) SHA1(ba624441e1b4bfb67c71f6a116fe43539eaa4a15) )
+ ROM_LOAD16_WORD_SWAP( "ssfe.06", 0x180000, 0x80000, CRC(70d470c5) SHA1(ba03c8f4c76f72f4483e91547e03d1a0cf6db485) )
+ ROM_LOAD16_WORD_SWAP( "ssfe.07", 0x200000, 0x80000, CRC(2409001d) SHA1(f532ebb2efbb8f8ba311d10ff897490352c87f97) )
+
+ ROM_REGION( 0xc00000, "gfx", 0 )
+ ROMX_LOAD( "ssf.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ssf.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ssf.01", 0x00000, 0x08000, CRC(eb247e8c) SHA1(24296c18d9b1136d69712bf1c9d9d15463041e83) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD( "ssf.q01", 0x000000, 0x080000, CRC(a6f9da5c) SHA1(6d19f83a01bd25b838d5c2871f7964529d926c98) )
+ ROM_LOAD( "ssf.q02", 0x080000, 0x080000, CRC(8c66ae26) SHA1(32a82aee6ed4480e5a990f9af161734c7c0a1403) )
+ ROM_LOAD( "ssf.q03", 0x100000, 0x080000, CRC(695cc2ca) SHA1(c2675f0233608b76de528d2a6ef19846d1348060) )
+ ROM_LOAD( "ssf.q04", 0x180000, 0x080000, CRC(9d9ebe32) SHA1(9b26329370041374f1a90b479a172d2bc2801c4d) )
+ ROM_LOAD( "ssf.q05", 0x200000, 0x080000, CRC(4770e7b7) SHA1(0e764f0befb9227b0b36508d8ca8ec9be31bcb05) )
+ ROM_LOAD( "ssf.q06", 0x280000, 0x080000, CRC(4e79c951) SHA1(1144781d7dc57ef8a6458d982f5c91548ff59e27) )
+ ROM_LOAD( "ssf.q07", 0x300000, 0x080000, CRC(cdd14313) SHA1(ebe767a9d4b51dba4282fa0a36a546a88620dd59) )
+ ROM_LOAD( "ssf.q08", 0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "ssf2.key", 0x000000, 0x000014, CRC(e469ccbb) SHA1(43d49107e96a4a14f1f25931ad3ae6065958150e) )
+ROM_END
+
+
+ROM_START( suicide )
+ ROM_REGION(CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "suicide.03", 0x000000, 0x80000, CRC(4d5eea90) SHA1(c6f6361650d64401354111bf111bd924126b7035) )
+
+ ROM_REGION( 0xC00000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0 )
+ ROMX_LOAD( "pzf.14m", 0x800000, 0x100000, CRC(2d4881cb) SHA1(fd3baa183c25bed153b19c251980e2fb761600e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.16m", 0x800002, 0x100000, CRC(4b0fd1be) SHA1(377aafdcdb7a866b1c8487670e3598d8197976e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.18m", 0x800004, 0x100000, CRC(e43aac33) SHA1(d041e0688c3807d3363861a7f216de43b34d846c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.20m", 0x800006, 0x100000, CRC(7f536ff1) SHA1(905b9d62ef7bef47297c7f4a4dd697aed6df38a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION(QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pzf.01", 0x00000, 0x08000, CRC(600fb2a3) SHA1(1fab1c2a23bf6ad8309d29ddbbc29435a8aeea13) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "pzf.02", 0x28000, 0x20000, CRC(496076e0) SHA1(1ee4e135140afd0e8e03231e570cd77d140f6367) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "pzf.11m", 0x000000, 0x200000, CRC(78442743) SHA1(b61190bb586871de6d54af580e3e1d9cc0de0acb) )
+ ROM_LOAD16_WORD_SWAP( "pzf.12m", 0x200000, 0x200000, CRC(399d2c7b) SHA1(e849dea97b8d16540415c0d9bbc4f9f4eb755ec4) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+ROM_START( suicide2 )
+ ROM_REGION(CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "suicide2.03", 0x000000, 0x80000, CRC(d61ba7e3) SHA1(bde345a1d4643adc854d4c7e86c04f72fee1a07b) )
+
+ ROM_REGION( 0xC00000, "gfx", 0 )
+ ROM_FILL( 0x000000, 0x800000, 0 )
+ ROMX_LOAD( "pzf.14m", 0x800000, 0x100000, CRC(2d4881cb) SHA1(fd3baa183c25bed153b19c251980e2fb761600e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.16m", 0x800002, 0x100000, CRC(4b0fd1be) SHA1(377aafdcdb7a866b1c8487670e3598d8197976e4) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.18m", 0x800004, 0x100000, CRC(e43aac33) SHA1(d041e0688c3807d3363861a7f216de43b34d846c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "pzf.20m", 0x800006, 0x100000, CRC(7f536ff1) SHA1(905b9d62ef7bef47297c7f4a4dd697aed6df38a5) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION(QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "pzf.01", 0x00000, 0x08000, CRC(600fb2a3) SHA1(1fab1c2a23bf6ad8309d29ddbbc29435a8aeea13) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "pzf.02", 0x28000, 0x20000, CRC(496076e0) SHA1(1ee4e135140afd0e8e03231e570cd77d140f6367) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "pzf.11m", 0x000000, 0x200000, CRC(78442743) SHA1(b61190bb586871de6d54af580e3e1d9cc0de0acb) )
+ ROM_LOAD16_WORD_SWAP( "pzf.12m", 0x200000, 0x200000, CRC(399d2c7b) SHA1(e849dea97b8d16540415c0d9bbc4f9f4eb755ec4) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) )
+ROM_END
+
+
+ROM_START( vampjb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "vampjb.03a", 0x000000, 0x80000, CRC(55c1be82) SHA1(948e1e322945adc775da8b22165697b5c7999b1b) )
+ ROM_LOAD16_WORD_SWAP( "vampjb.04b", 0x080000, 0x80000, CRC(9c12017e) SHA1(0800802748ce61b01a18c06b61fcb8fd7bb34f62) )
+ ROM_LOAD16_WORD_SWAP( "vamj.05a", 0x100000, 0x80000, CRC(6c497e92) SHA1(7c1ccdfd77fb50afe024c8402376daaeab641a24) )
+ ROM_LOAD16_WORD_SWAP( "vamj.06a", 0x180000, 0x80000, CRC(f1bbecb6) SHA1(6adba89393e05f16f70b57085cabd6b4c20f53e8) )
+ ROM_LOAD16_WORD_SWAP( "vamj.07a", 0x200000, 0x80000, CRC(1067ad84) SHA1(5e4cc75cfdfd512b6230c656e7304262b5143aee) )
+ ROM_LOAD16_WORD_SWAP( "vamj.08a", 0x280000, 0x80000, CRC(4b89f41f) SHA1(bd78f33a6d448655eecf7448921d282b302fa4cb) )
+ ROM_LOAD16_WORD_SWAP( "vamj.09a", 0x300000, 0x80000, CRC(fc0a4aac) SHA1(a2c79eb4dc838c238e182a4da3567ac8db3488d8) )
+ ROM_LOAD16_WORD_SWAP( "vamj.10a", 0x380000, 0x80000, CRC(9270c26b) SHA1(c2a7e199a74c9f27704cf935483ebddc6da256a1) )
+
+ ROM_REGION( 0x1400000, "gfx", 0 )
+ ROMX_LOAD( "vam.13m", 0x0000000, 0x400000, CRC(c51baf99) SHA1(2fb6642908e542e404391eb17392f8270e87bf48) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.15m", 0x0000002, 0x400000, CRC(3ce83c77) SHA1(93369b23c6d7d834297434691bb047ee3dd9539c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.17m", 0x0000004, 0x400000, CRC(4f2408e0) SHA1(cd49c6b3c7e6470c6058f98ccc5210b052bb13e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.19m", 0x0000006, 0x400000, CRC(9ff60250) SHA1(d69ba4dc6bd37d003245f0cf3211d6e2623005b8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.14m", 0x1000000, 0x100000, CRC(bd87243c) SHA1(87b33aeb72514e1228ffc27ec6dd534f14882760) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.16m", 0x1000002, 0x100000, CRC(afec855f) SHA1(cd117833b8d475489b90ff44b57e2c5cb1af3af5) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.18m", 0x1000004, 0x100000, CRC(3a033625) SHA1(294238f30cba5cf4f8f1de951d54c2077bd95de9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vam.20m", 0x1000006, 0x100000, CRC(2bff6a89) SHA1(8f4e131e5ce0af48fb89f98026d9f0356c7c301f) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "vam.01", 0x00000, 0x08000, CRC(64b685d5) SHA1(6c180e7420db754eca5cad17a40f5a64f5c3bd15) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "vam.02", 0x28000, 0x20000, CRC(cf7c97c7) SHA1(109a4b56ecd59be9c3f5869de99d40619bdaef21) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "vam.11m", 0x000000, 0x200000, CRC(4a39deb2) SHA1(7e63e615869958db66a4e52a0272afee5a10e446) )
+ ROM_LOAD16_WORD_SWAP( "vam.12m", 0x200000, 0x200000, CRC(1a3e5c03) SHA1(c5a556e125d6c3d68da745b4d56cd7a851f2a23d) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "vampj.key", 0x000000, 0x000014, CRC(8418cc6f) SHA1(e7128ac94fc7c37a64e4640db08f1769215769e5) )
+ROM_END
+
+
+ROM_START( vsav2emb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "vsav2emb.03", 0x000000, 0x80000, CRC(31676894) SHA1(0cb25d691213accb43e81f284d29812de893b296) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.04", 0x080000, 0x80000, CRC(107c091b) SHA1(bf5c2e4339e1a66b3c819900cc9b723a537adf6b) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.05", 0x100000, 0x80000, CRC(61979638) SHA1(4d5625a9a06926c1a42c8f6e3a4c943f17750ec2) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.06", 0x180000, 0x80000, CRC(f37c5bc2) SHA1(d8c1040a6ee6b9fc677a6a32b99bf02b6a707812) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.07", 0x200000, 0x80000, CRC(8f885809) SHA1(69dac07e1f483b6478f792d20a137d6a081fbea3) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.08", 0x280000, 0x80000, CRC(2018c120) SHA1(de1184ab771c6f075cdefa744a28b09f78d91643) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.09", 0x300000, 0x80000, CRC(fac3c217) SHA1(0e9dd54e401e6d7c4fe81107ffd27e42ca810fcb) )
+ ROM_LOAD16_WORD_SWAP( "vs2j.10", 0x380000, 0x80000, CRC(eb490213) SHA1(bf0416df66a33c7a4678ab4a047de334dfd3b31e) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "vs2.13m", 0x0000000, 0x400000, CRC(5c852f52) SHA1(528ce7fc9a0451e2e2d221dbf5e4a5796584e053) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.15m", 0x0000002, 0x400000, CRC(a20f58af) SHA1(e873ad3e0fc8a06a5029113faf991f5c1b765316) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.17m", 0x0000004, 0x400000, CRC(39db59ad) SHA1(da94f1529da82a6bf2129f51548412e1ab2b001a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.19m", 0x0000006, 0x400000, CRC(00c763a7) SHA1(0ff528e12e255ebf699101ac71f05b1f6bef7165) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.14m", 0x1000000, 0x400000, CRC(cd09bd63) SHA1(e582b20a948ae54f52590496051688dbfae2bc9c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.16m", 0x1000002, 0x400000, CRC(e0182c15) SHA1(a924d53ab39f4d85173bdb92a197dde2db0dc3f7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.18m", 0x1000004, 0x400000, CRC(778dc4f6) SHA1(8d0cd1c387b4b6ac7f92bb2e5a25983856328cdc) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "vs2.20m", 0x1000006, 0x400000, CRC(605d9d1d) SHA1(99bc27557741527ca678d7b6307164bc04ebedc6) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "vs2.01", 0x00000, 0x08000, CRC(35190139) SHA1(07f8e53ea398461de5dcda9814dde7c09faf9f65) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "vs2.02", 0x28000, 0x20000, CRC(c32dba09) SHA1(1fe337ff334fab79847f9677ba0e168e93daa1c8) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "vs2.11m", 0x000000, 0x400000, CRC(d67e47b7) SHA1(15a3f6779eccb10551ed94edf7e6e406a79b3de7) )
+ ROM_LOAD16_WORD_SWAP( "vs2.12m", 0x400000, 0x400000, CRC(6d020a14) SHA1(e98f862fac1e357c90949768bb2646263d9981a0) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "vsav2.key", 0x000000, 0x000014, CRC(289028ce) SHA1(35779f0284dc15591493c8ec75ecda801148f3e0) )
+ROM_END
+
+
+ROM_START( xmcotajb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xmcotajb.03", 0x000000, 0x80000, CRC(bd2f0b84) SHA1(2b5c6deb2bb7e10a142a490781231d2ccfceee1c) )
+ ROM_LOAD16_WORD_SWAP( "xmnj.04b", 0x080000, 0x80000, CRC(54b3fba3) SHA1(47eaff5d36a45e4196f87ed3d02e54d5407e7962) ) // used in xmcotaj2
+ ROM_LOAD16_WORD_SWAP( "xmn.05", 0x100000, 0x80000, CRC(c3ed62a2) SHA1(4e3317d7ca981e33318822103a16e59f4ce20deb) )
+ ROM_LOAD16_WORD_SWAP( "xmn.06", 0x180000, 0x80000, CRC(f03c52e1) SHA1(904b2312ee594f5ece0484cad0eed25cc758185e) )
+ ROM_LOAD16_WORD_SWAP( "xmn.07", 0x200000, 0x80000, CRC(325626b1) SHA1(3f3a0aabbe5ffad8136ac91e0de785103b16059b) )
+ ROM_LOAD16_WORD_SWAP( "xmn.08", 0x280000, 0x80000, CRC(7194ea10) SHA1(40a5892d816f24cbfd4c310792eeabf689c6fa7e) )
+ ROM_LOAD16_WORD_SWAP( "xmn.09", 0x300000, 0x80000, CRC(ae946df3) SHA1(733671f76d766bda7110df9d338791cc5202b050) )
+ ROM_LOAD16_WORD_SWAP( "xmn.10", 0x380000, 0x80000, CRC(32a6be1d) SHA1(8f5fcb33b528abed670b4fc3fa62431a6e033c56) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "xmn.13m", 0x0000000, 0x400000, CRC(bf4df073) SHA1(4d2740c3a827f0ec2cf75ad99c65e393c6a11c23) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.15m", 0x0000002, 0x400000, CRC(4d7e4cef) SHA1(50b8797b8099a8d76ad063ba1201a13dbb88ae3a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.17m", 0x0000004, 0x400000, CRC(513eea17) SHA1(a497477ad9ac13180911d8745ef6ee1955c0b877) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.19m", 0x0000006, 0x400000, CRC(d23897fc) SHA1(1e31627999736652252164d32662779a1ac6ca29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.14m", 0x1000000, 0x400000, CRC(778237b7) SHA1(89a759ec383518ec52f5059d10ec342f2247aa20) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.16m", 0x1000002, 0x400000, CRC(67b36948) SHA1(692fb6e4096b880aa22996d554b160f664bbd907) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.18m", 0x1000004, 0x400000, CRC(015a7c4c) SHA1(cccc95dafd076a1a9fa004710006149c42d058ba) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.20m", 0x1000006, 0x400000, CRC(9dde2758) SHA1(17ba259cad03c7b5d56c0a5eda9ab53521665729) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xmn.01a", 0x00000, 0x08000, CRC(40f479ea) SHA1(f29e15f537675305264ae2138a0a537fb9e2008b) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "xmn.02a", 0x28000, 0x20000, CRC(39d9b5ad) SHA1(af502debfd36100d4fc971ed25fdf9d7121d6f18) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "xmn.11m", 0x000000, 0x200000, CRC(c848a6bc) SHA1(ac8ac564d3c43225822f8bc330eba9f35b24b0a4) )
+ ROM_LOAD16_WORD_SWAP( "xmn.12m", 0x200000, 0x200000, CRC(729c188f) SHA1(3279774ad8aebbcf0fc779cdfcbe21044dd192ad) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "xmcotaj.key", 0x000000, 0x000014, CRC(d278b4ac) SHA1(06d94e8a203172792f405c73f9cbb37f4738429f) )
+ROM_END
+
+ROM_START( xmcotajphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xmcotajphp.03", 0x000000, 0x80000, CRC(654c6b83) SHA1(b61d8891edb105ad72a76ee0c1018bc5edc64b6c) )
+ ROM_LOAD16_WORD_SWAP( "xmnj.04d", 0x080000, 0x80000, CRC(38eed613) SHA1(86ecb58bf03adda705a39a9779862fe2c85cadad) )
+ ROM_LOAD16_WORD_SWAP( "xmn.05", 0x100000, 0x80000, CRC(c3ed62a2) SHA1(4e3317d7ca981e33318822103a16e59f4ce20deb) )
+ ROM_LOAD16_WORD_SWAP( "xmn.06", 0x180000, 0x80000, CRC(f03c52e1) SHA1(904b2312ee594f5ece0484cad0eed25cc758185e) )
+ ROM_LOAD16_WORD_SWAP( "xmn.07", 0x200000, 0x80000, CRC(325626b1) SHA1(3f3a0aabbe5ffad8136ac91e0de785103b16059b) )
+ ROM_LOAD16_WORD_SWAP( "xmn.08", 0x280000, 0x80000, CRC(7194ea10) SHA1(40a5892d816f24cbfd4c310792eeabf689c6fa7e) )
+ ROM_LOAD16_WORD_SWAP( "xmn.09", 0x300000, 0x80000, CRC(ae946df3) SHA1(733671f76d766bda7110df9d338791cc5202b050) )
+ ROM_LOAD16_WORD_SWAP( "xmn.10", 0x380000, 0x80000, CRC(32a6be1d) SHA1(8f5fcb33b528abed670b4fc3fa62431a6e033c56) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "xmn.13m", 0x0000000, 0x400000, CRC(bf4df073) SHA1(4d2740c3a827f0ec2cf75ad99c65e393c6a11c23) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.15m", 0x0000002, 0x400000, CRC(4d7e4cef) SHA1(50b8797b8099a8d76ad063ba1201a13dbb88ae3a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.17m", 0x0000004, 0x400000, CRC(513eea17) SHA1(a497477ad9ac13180911d8745ef6ee1955c0b877) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.19m", 0x0000006, 0x400000, CRC(d23897fc) SHA1(1e31627999736652252164d32662779a1ac6ca29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.14m", 0x1000000, 0x400000, CRC(778237b7) SHA1(89a759ec383518ec52f5059d10ec342f2247aa20) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.16m", 0x1000002, 0x400000, CRC(67b36948) SHA1(692fb6e4096b880aa22996d554b160f664bbd907) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.18m", 0x1000004, 0x400000, CRC(015a7c4c) SHA1(cccc95dafd076a1a9fa004710006149c42d058ba) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xmn.20m", 0x1000006, 0x400000, CRC(9dde2758) SHA1(17ba259cad03c7b5d56c0a5eda9ab53521665729) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xmn.01a", 0x00000, 0x08000, CRC(40f479ea) SHA1(f29e15f537675305264ae2138a0a537fb9e2008b) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "xmn.02a", 0x28000, 0x20000, CRC(39d9b5ad) SHA1(af502debfd36100d4fc971ed25fdf9d7121d6f18) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "xmn.11m", 0x000000, 0x200000, CRC(c848a6bc) SHA1(ac8ac564d3c43225822f8bc330eba9f35b24b0a4) )
+ ROM_LOAD16_WORD_SWAP( "xmn.12m", 0x200000, 0x200000, CRC(729c188f) SHA1(3279774ad8aebbcf0fc779cdfcbe21044dd192ad) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "xmcotaj.key", 0x000000, 0x000014, CRC(d278b4ac) SHA1(06d94e8a203172792f405c73f9cbb37f4738429f) )
+ROM_END
+
+
+ROM_START( xmvsfjphp )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xmvsfjphp.03", 0x000000, 0x80000, CRC(1d46fdba) SHA1(fceec89ca0fa163b0edc8e055a6c7198f3520851) )
+ ROM_LOAD16_WORD_SWAP( "xvsj.04", 0x080000, 0x80000, CRC(70a59b35) SHA1(786d9b243373024735848f785503c6aa883b1c2f) )
+ ROM_LOAD16_WORD_SWAP( "xvs.05a", 0x100000, 0x80000, CRC(7db6025d) SHA1(2d74f48f83f45359bfaca28ab686625766af12ee) )
+ ROM_LOAD16_WORD_SWAP( "xvs.06a", 0x180000, 0x80000, CRC(e8e2c75c) SHA1(929408cb5d98e95cec75ea58e4701b0cbdbcd016) )
+ ROM_LOAD16_WORD_SWAP( "xvs.07", 0x200000, 0x80000, CRC(08f0abed) SHA1(ef16c376232dba63b0b9bc3aa0640f9001ccb68a) )
+ ROM_LOAD16_WORD_SWAP( "xvs.08", 0x280000, 0x80000, CRC(81929675) SHA1(19cf7afbc1daaefec40195e40ba74970f3906a1c) )
+ ROM_LOAD16_WORD_SWAP( "xvs.09", 0x300000, 0x80000, CRC(9641f36b) SHA1(dcba3482d1ba37ccfb30d402793ee063c6621aed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "xvs.13m", 0x0000000, 0x400000, CRC(f6684efd) SHA1(c0a2f3a9e82ab8b084a500aec71ac633e947328c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.15m", 0x0000002, 0x400000, CRC(29109221) SHA1(898b8f678fd03c462ce0d8eb7fb3441ef601085b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.17m", 0x0000004, 0x400000, CRC(92db3474) SHA1(7b6f4c8ebfdac167b25f35029068b6253c141fe6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.19m", 0x0000006, 0x400000, CRC(3733473c) SHA1(6579da7145c95b3ad00844a5fc8c2e22c23365e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.14m", 0x1000000, 0x400000, CRC(bcac2e41) SHA1(838ff24f7e8543a787a55a5d592c9517ce3b8b93) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.16m", 0x1000002, 0x400000, CRC(ea04a272) SHA1(cd7c79037b5b4a39bef5156433e984dc4dc2c081) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.18m", 0x1000004, 0x400000, CRC(b0def86a) SHA1(da3a6705ea7050fc5c2c10d33400ed67be9f455d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.20m", 0x1000006, 0x400000, CRC(4b40ff9f) SHA1(9a981d442132efff09a27408d74646ba357c7357) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xvs.01", 0x00000, 0x08000, CRC(3999e93a) SHA1(fefcff8a9a5c83df7655a16187cf9ba3e7efbb25) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "xvs.02", 0x28000, 0x20000, CRC(101bdee9) SHA1(75920e88bf46fcd33a7957777a1d799818ffb0d6) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "xvs.11m", 0x000000, 0x200000, CRC(9cadcdbc) SHA1(64d3bd53b04daec84c9af4aa3ff010867b3d306d) )
+ ROM_LOAD16_WORD_SWAP( "xvs.12m", 0x200000, 0x200000, CRC(7b11e460) SHA1(a581c84acaaf0ce056841c15a6f36889e88be68d) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "xmvsfj.key", 0x000000, 0x000014, CRC(87576cda) SHA1(65905400f4462c175baa93b43e015e8596def31b) )
+ROM_END
+
+ROM_START( xmvsfrm )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xmvsfrm.03", 0x000000, 0x80000, CRC(be94fd2b) SHA1(f668d8fe1932434dfb9aec865a79ddac6c6496ef) )
+ ROM_LOAD16_WORD_SWAP( "xvse.04d", 0x080000, 0x80000, CRC(5eb9c02e) SHA1(25a392913213b98ce1bbd463bf5e5e10729bde0c) )
+ ROM_LOAD16_WORD_SWAP( "xvs.05a", 0x100000, 0x80000, CRC(7db6025d) SHA1(2d74f48f83f45359bfaca28ab686625766af12ee) )
+ ROM_LOAD16_WORD_SWAP( "xvs.06a", 0x180000, 0x80000, CRC(e8e2c75c) SHA1(929408cb5d98e95cec75ea58e4701b0cbdbcd016) )
+ ROM_LOAD16_WORD_SWAP( "xvs.07", 0x200000, 0x80000, CRC(08f0abed) SHA1(ef16c376232dba63b0b9bc3aa0640f9001ccb68a) )
+ ROM_LOAD16_WORD_SWAP( "xvs.08", 0x280000, 0x80000, CRC(81929675) SHA1(19cf7afbc1daaefec40195e40ba74970f3906a1c) )
+ ROM_LOAD16_WORD_SWAP( "xvs.09", 0x300000, 0x80000, CRC(9641f36b) SHA1(dcba3482d1ba37ccfb30d402793ee063c6621aed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "xvs.13m", 0x0000000, 0x400000, CRC(f6684efd) SHA1(c0a2f3a9e82ab8b084a500aec71ac633e947328c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.15m", 0x0000002, 0x400000, CRC(29109221) SHA1(898b8f678fd03c462ce0d8eb7fb3441ef601085b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.17m", 0x0000004, 0x400000, CRC(92db3474) SHA1(7b6f4c8ebfdac167b25f35029068b6253c141fe6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.19m", 0x0000006, 0x400000, CRC(3733473c) SHA1(6579da7145c95b3ad00844a5fc8c2e22c23365e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.14m", 0x1000000, 0x400000, CRC(bcac2e41) SHA1(838ff24f7e8543a787a55a5d592c9517ce3b8b93) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.16m", 0x1000002, 0x400000, CRC(ea04a272) SHA1(cd7c79037b5b4a39bef5156433e984dc4dc2c081) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.18m", 0x1000004, 0x400000, CRC(b0def86a) SHA1(da3a6705ea7050fc5c2c10d33400ed67be9f455d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.20m", 0x1000006, 0x400000, CRC(4b40ff9f) SHA1(9a981d442132efff09a27408d74646ba357c7357) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xvs.01", 0x00000, 0x08000, CRC(3999e93a) SHA1(fefcff8a9a5c83df7655a16187cf9ba3e7efbb25) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "xvs.02", 0x28000, 0x20000, CRC(101bdee9) SHA1(75920e88bf46fcd33a7957777a1d799818ffb0d6) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "xvs.11m", 0x000000, 0x200000, CRC(9cadcdbc) SHA1(64d3bd53b04daec84c9af4aa3ff010867b3d306d) )
+ ROM_LOAD16_WORD_SWAP( "xvs.12m", 0x200000, 0x200000, CRC(7b11e460) SHA1(a581c84acaaf0ce056841c15a6f36889e88be68d) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "xmvsf.key", 0x000000, 0x000014, CRC(d5c07311) SHA1(1b401ffc241436c4869486c174774b67e3bf3df8) )
+ROM_END
+
+ROM_START( xmvsfryh )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "xmvsfryh.03", 0x000000, 0x80000, CRC(ed7c235a) SHA1(c49bfeef0351165ee30c8433feb026acebd7a36a) )
+ ROM_LOAD16_WORD_SWAP( "xmvsfryh.04", 0x080000, 0x80000, CRC(3a527f69) SHA1(72312d4aeaac07c4b4f91a0301948faf2f17d74d) )
+ ROM_LOAD16_WORD_SWAP( "xvs.05a", 0x100000, 0x80000, CRC(7db6025d) SHA1(2d74f48f83f45359bfaca28ab686625766af12ee) )
+ ROM_LOAD16_WORD_SWAP( "xvs.06a", 0x180000, 0x80000, CRC(e8e2c75c) SHA1(929408cb5d98e95cec75ea58e4701b0cbdbcd016) )
+ ROM_LOAD16_WORD_SWAP( "xvs.07", 0x200000, 0x80000, CRC(08f0abed) SHA1(ef16c376232dba63b0b9bc3aa0640f9001ccb68a) )
+ ROM_LOAD16_WORD_SWAP( "xvs.08", 0x280000, 0x80000, CRC(81929675) SHA1(19cf7afbc1daaefec40195e40ba74970f3906a1c) )
+ ROM_LOAD16_WORD_SWAP( "xvs.09", 0x300000, 0x80000, CRC(9641f36b) SHA1(dcba3482d1ba37ccfb30d402793ee063c6621aed) )
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "xvs.13m", 0x0000000, 0x400000, CRC(f6684efd) SHA1(c0a2f3a9e82ab8b084a500aec71ac633e947328c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.15m", 0x0000002, 0x400000, CRC(29109221) SHA1(898b8f678fd03c462ce0d8eb7fb3441ef601085b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.17m", 0x0000004, 0x400000, CRC(92db3474) SHA1(7b6f4c8ebfdac167b25f35029068b6253c141fe6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.19m", 0x0000006, 0x400000, CRC(3733473c) SHA1(6579da7145c95b3ad00844a5fc8c2e22c23365e2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.14m", 0x1000000, 0x400000, CRC(bcac2e41) SHA1(838ff24f7e8543a787a55a5d592c9517ce3b8b93) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.16m", 0x1000002, 0x400000, CRC(ea04a272) SHA1(cd7c79037b5b4a39bef5156433e984dc4dc2c081) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.18m", 0x1000004, 0x400000, CRC(b0def86a) SHA1(da3a6705ea7050fc5c2c10d33400ed67be9f455d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "xvs.20m", 0x1000006, 0x400000, CRC(4b40ff9f) SHA1(9a981d442132efff09a27408d74646ba357c7357) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "xvs.01", 0x00000, 0x08000, CRC(3999e93a) SHA1(fefcff8a9a5c83df7655a16187cf9ba3e7efbb25) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "xvs.02", 0x28000, 0x20000, CRC(101bdee9) SHA1(75920e88bf46fcd33a7957777a1d799818ffb0d6) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "xvs.11m", 0x000000, 0x200000, CRC(9cadcdbc) SHA1(64d3bd53b04daec84c9af4aa3ff010867b3d306d) )
+ ROM_LOAD16_WORD_SWAP( "xvs.12m", 0x200000, 0x200000, CRC(7b11e460) SHA1(a581c84acaaf0ce056841c15a6f36889e88be68d) )
+
+ ROM_REGION( 0x20, "key", 0 )
+ ROM_LOAD( "xmvsf.key", 0x000000, 0x000014, CRC(d5c07311) SHA1(1b401ffc241436c4869486c174774b67e3bf3df8) )
+ROM_END
+
+
+
+
+GAME( 2000, 1944da, 1944, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "Razoola", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, 1944fp, 1944, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Qxs8", "1944: The Loop Master (USA 000620) Fire Power Ver", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ddsomavs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Pipi899", "Dungeons & Dragons: Shadow over Mystara (1vs4 hack by Pipi899 2009-06-29)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ddsomchs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "hack", "Dungeons & Dragons: Shadow over Mystara (chinese)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ddsomhp, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Pipi899", "Dungeons & Dragons: Shadow over Mystara (HP Revision hack by Pipi899, cheat by sssskkkk 2009-06-15)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ddsomjfs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "e107", "Dungeons & Dragons: Shadow over Mystara (Final Strike hack by e107 2009-07-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, halfway, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "Halfway House", "Halfway to Hell - Progear Red Label (2016-01-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mpangjd, mpang, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "Razoola", "Mighty! Pang (Japan 001011 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshjphp, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Marvel Super Heroes (Power hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshyh, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Marvel Super Heroes (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, mvscjemb, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Blackheart", "Marvel Vs. Capcom: Clash of Super Heroes (Easy Moves hack by Blackheart 2009-04-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscjphp, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Marvel Vs. Capcom: Clash of Super Heroes (Power hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, mvscrcp, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "CPS-2 Evolved", "Marvel Vs. Capcom RCP", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscuh, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "EGCG", "Marvel Vs. Capcom: Clash of Super Heroes (ExChar hack (EGCG))", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, mshvsemb, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Blackheart", "Marvel Super Heroes Vs. Street Fighter (Easy Moves hack by Blackheart 2009-04-23)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfjh, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Marvel Super Heroes Vs. Street Fighter (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfjphp, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Marvel Super Heroes Vs. Street Fighter (Power hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, pfghtjrm, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Blackheart", "Pocket Fighter (Easy Moves hack by Blackheart 2009-04-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfa2h, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Alpha 2 (Euro 960229) Boss Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, sfa3br, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "Neogeo BR team", "Street Fighter Alpha 3 (Brasil 050513)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3dp, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "Pipi899", "Street Fighter Alpha 3 (Dragon Edition hack by Pipi899 2009-05-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3nc, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "hack", "Street Fighter Alpha 3 (unknown hack NC)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3nch, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "hack", "Street Fighter Alpha 3 (unknown hack NCH)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3sp2, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "Pipi899", "Street Fighter Alpha 3 (Boss Special Fix hack by Pipi899 2009-09-27)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3spp, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "Pipi899", "Street Fighter Alpha 3 (Boss Special hack by Pipi899 2009-07-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfa3uhd, sfa3, cps2, cps2_2p6bt,cps_state, cps2, ROT0, "Dodowang", "Street Fighter Alpha 3 (Revision hack by Dodowang (ECGC))", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfaud, sfa, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "Razoola", "Street Fighter Alpha: Warriors' Dreams (USA 950727 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2abr, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Neogeo BR team", "Street Fighter Zero 2 Alpha (Brasil 061225)", MACHINE_SUPPORTS_SAVE ) // portuguese-brazilian hack fix
+GAME( 2008, sfz2ajhp, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Zero 2 Alpha (Enhanced Dan Version hack by Pipi899 2008-12-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfz2aldp, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Zero 2 Alpha (Dragon Edition v1.0 hack by Pipi899 2009-03-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfz2aldp2, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Zero 2 Alpha (Dragon Edition v2.0 hack by Pipi899 2009-04-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2jyh, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Street Fighter Zero 2 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3jb, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Street Fighter Zero 3 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfz3jemb, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Blacheart", "Street Fighter Zero 3 (Easy Moves hack by Blackheart 2009-05-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3jhp, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Zero 3 (Hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, sfz3jsep, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Zero 3 (Shin Edition hack by Pipi899 2009-01-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzjboss, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Street Fighter Zero (Boss hack set 2 by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzjyh, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Street Fighter Zero (Boss hack set 1 by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sgemfch, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "hack", "Super Gem Fighter Mini Mix (Color remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2r1d, ssf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "Razoola", "Super Street Fighter II: The New Challengers (ETC 930911 Phoenix Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2td, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "Razoola", "Super Street Fighter II Turbo (World 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tfp, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Cigarette Patch", "Super Street Fighter II Turbo (French Parody by Cigarette Patch)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tfr, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "NEOARC", "Super Street Fighter II Turbo (French by NEOARC Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tpls, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "KrysoFun", "Super Street Fighter II Turbo (Plus v0.9 beta KrysoFun hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xjhy, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Super Street Fighter II X: Grand Master Challenge (Gouki Edition hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xjjs, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "FGCH", "Super Street Fighter II X: Grand Master Challenge (Original Color FGCH hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xjnc, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Shiro", "Super Street Fighter II X: Grand Master Challenge (Nude hack by Shiro)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2zhp, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Super Street Fighter II (Easy Move Zangief Edition hack by Pipi899 2009-01-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2tb, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "hack", "Super Puzzle Fighter II Turbo Boss Hack (USA 960620)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, suicide, 0, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "Razoola", "Suicide Test", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, suicide2, suicide, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "Razoola", "Suicide Test v2", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, vampjb, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Vampire: The Night Warriors (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, vsav2emb, vsav2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Blackheart", "Vampire Savior 2: The Lord of Vampire (Easy Moves hack by Blackheart 2009-04-30", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotajb, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "X-Men: Children of the Atom (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotajphp, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "X-Men: Children of the Atom (Power hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfjphp, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "X-Men Vs. Street Fighter (Power hack by Pipi899)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, xmvsfrm, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Blackheart", "X-Men Vs. Street Fighter (Easy Moves hack by Blackheart 2009-04-22)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfryh, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Ydmis", "X-Men Vs. Street Fighter (ST Char hack by Ydmis)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/cps3.cpp b/docs/release/src/hbmame/drivers/cps3.cpp
new file mode 100644
index 00000000000..64239321b67
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/cps3.cpp
@@ -0,0 +1,1305 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/cps3.cpp"
+
+class cps3_hbmame : public cps3_state
+{
+public:
+ cps3_hbmame(const machine_config &mconfig, device_type type, const char *tag)
+ : cps3_state(mconfig, type, tag)
+ { }
+
+ DECLARE_DRIVER_INIT(jojon);
+ DECLARE_DRIVER_INIT(jojoban);
+ DECLARE_DRIVER_INIT(redeartno);
+ DECLARE_DRIVER_INIT(sfiiin);
+ DECLARE_DRIVER_INIT(sfiii2n);
+ DECLARE_DRIVER_INIT(sfiii3n);
+ DECLARE_MACHINE_RESET(redeartn);
+ TIMER_CALLBACK_MEMBER(fastboot_timer_callback);
+
+private:
+ void hb_unscramble();
+ emu_timer* m_fastboot_timer;
+};
+
+TIMER_CALLBACK_MEMBER(cps3_hbmame::fastboot_timer_callback)
+{
+ uint32_t *rom = (uint32_t*)m_decrypted_gamerom;
+
+ m_maincpu->set_state_int(SH2_PC, rom[0]);
+ m_maincpu->set_state_int(SH2_R15, rom[1]);
+ m_maincpu->set_state_int(SH2_VBR, 0x6000000);
+}
+
+void cps3_hbmame::hb_unscramble()
+{
+ uint8_t *rom = memregion("old4")->base();
+ uint8_t *simm0 = memregion("simm1.0")->base();
+ uint8_t *simm1 = memregion("simm1.1")->base();
+ uint8_t *simm2 = memregion("simm1.2")->base();
+ uint8_t *simm3 = memregion("simm1.3")->base();
+ uint32_t i, j = 0;
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm3[i] = rom[j++];
+ simm2[i] = rom[j++];
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+
+ if (memregion("simm2.0"))
+ {
+ simm0 = memregion("simm2.0")->base();
+ simm1 = memregion("simm2.1")->base();
+ simm2 = memregion("simm2.2")->base();
+ simm3 = memregion("simm2.3")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm3[i] = rom[j++];
+ simm2[i] = rom[j++];
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ }
+
+ j = 0;
+ rom = memregion("old5")->base();
+ simm0 = memregion("simm3.0")->base();
+ simm1 = memregion("simm3.1")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm3.2")->base();
+ simm1 = memregion("simm3.3")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm3.4")->base();
+ simm1 = memregion("simm3.5")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm3.6")->base();
+ simm1 = memregion("simm3.7")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm4.0")->base();
+ simm1 = memregion("simm4.1")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm4.2")->base();
+ simm1 = memregion("simm4.3")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm4.4")->base();
+ simm1 = memregion("simm4.5")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm4.6")->base();
+ simm1 = memregion("simm4.7")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm5.0")->base();
+ simm1 = memregion("simm5.1")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+
+ if (memregion("simm5.2"))
+ {
+ simm0 = memregion("simm5.2")->base();
+ simm1 = memregion("simm5.3")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ }
+
+ if (memregion("simm5.4"))
+ {
+ simm0 = memregion("simm5.4")->base();
+ simm1 = memregion("simm5.5")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm5.6")->base();
+ simm1 = memregion("simm5.7")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ }
+
+ if (memregion("simm6.0"))
+ {
+ simm0 = memregion("simm6.0")->base();
+ simm1 = memregion("simm6.1")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm6.2")->base();
+ simm1 = memregion("simm6.3")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm6.4")->base();
+ simm1 = memregion("simm6.5")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ simm0 = memregion("simm6.6")->base();
+ simm1 = memregion("simm6.7")->base();
+ for (i = 0; i < 0x200000; i++)
+ {
+ simm1[i] = rom[j++];
+ simm0[i] = rom[j++];
+ }
+ }
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, jojon )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(jojo);
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, jojoban )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(jojoba);
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, redeartno )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(redearth);
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, sfiiin )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(sfiii);
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, sfiii2n )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(sfiii2);
+}
+
+DRIVER_INIT_MEMBER( cps3_hbmame, sfiii3n )
+{
+ hb_unscramble();
+ DRIVER_INIT_CALL(sfiii3);
+}
+
+MACHINE_RESET_MEMBER( cps3_hbmame, redeartn )
+{
+ m_current_table_address = -1;
+
+ m_fastboot_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cps3_hbmame::fastboot_timer_callback),this));
+ m_fastboot_timer->adjust(attotime::zero);
+
+ // copy data from flashroms back into user regions + decrypt into regions we execute/draw from.
+ copy_from_nvram();
+}
+
+static MACHINE_CONFIG_DERIVED_CLASS( redeartn, redearth, cps3_hbmame )
+ MCFG_MACHINE_RESET_OVERRIDE(cps3_hbmame, redeartn)
+MACHINE_CONFIG_END
+
+static INPUT_PORTS_START ( cps3_ren )
+ PORT_INCLUDE ( cps3 )
+ PORT_MODIFY("INPUTS")
+ PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("P1 Start / Change Orb")
+ PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("P2 Start / Change Orb")
+
+ PORT_START("REG")
+ PORT_DIPNAME( 0x0000000f, 0x00000000, DEF_STR( Region ) )
+ PORT_DIPSETTING( 0x00000000, "Default" )
+ // none of these do anything
+ //PORT_DIPSETTING( 0x00000001, DEF_STR( Japan ) )
+ //PORT_DIPSETTING( 0x00000002, DEF_STR( Asia ) )
+ //PORT_DIPSETTING( 0x00000003, DEF_STR( Europe ) )
+ //PORT_DIPSETTING( 0x00000004, DEF_STR( USA ) )
+ //PORT_DIPSETTING( 0x00000005, "Hispanic" )
+ //PORT_DIPSETTING( 0x00000006, "Brazil" )
+ //PORT_DIPSETTING( 0x00000007, "Oceania" )
+ //PORT_DIPSETTING( 0x00000008, "Asia NCD" )
+
+ PORT_START("VER")
+ PORT_DIPNAME( 0x000000f0, 0x00000060, DEF_STR( Version ) )
+ PORT_DIPSETTING( 0x00000060, DEF_STR( Normal ) )
+ // none of these do anything
+ //PORT_DIPSETTING( 0x00000010, "Character Check" )
+ //PORT_DIPSETTING( 0x00000020, "Publicity" )
+ //PORT_DIPSETTING( 0x00000030, "Location Test" )
+ //PORT_DIPSETTING( 0x00000040, "Show" )
+ //PORT_DIPSETTING( 0x00000050, "???" )
+INPUT_PORTS_END
+
+
+
+ROM_START( jojobbh2 )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "jojoba_euro_nocd.29f400.u2", 0x000000, 0x080000, CRC(1ee2d679) SHA1(9e129b454a376606b3f7e8aec64de425cf9c635c) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10bh2", 0x000000, 0x800000, CRC(45e18e22) SHA1(e49fe9659852346ad36907b7ddd30b26ae44f309) )
+ ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(1c53ee62) SHA1(e096bf3cb6fbc3d45955787b8f3213abcd76d120) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(36e416ed) SHA1(58d0e95cc13f39bc171165468ce72f4f17b8d8d6) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(eedf19ca) SHA1(a7660bf9ff87911afb4f83b64456245059986830) )
+ROM_END
+
+ROM_START( jojobbss )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "jojoba_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(4dab19f5) SHA1(ba07190e7662937fc267f07285c51e99a45c061e) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10bbss", 0x000000, 0x800000, CRC(84f44fbc) SHA1(4727e24fe00e88a82b67f981643480e15224ae18) )
+ ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(1c53ee62) SHA1(e096bf3cb6fbc3d45955787b8f3213abcd76d120) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(36e416ed) SHA1(58d0e95cc13f39bc171165468ce72f4f17b8d8d6) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(eedf19ca) SHA1(a7660bf9ff87911afb4f83b64456245059986830) )
+ROM_END
+
+ROM_START( jojobpow )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "jojoba_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(4dab19f5) SHA1(ba07190e7662937fc267f07285c51e99a45c061e) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10bpow", 0x000000, 0x800000, CRC(d616f8d4) SHA1(665c353fd32183c0bf18b70a48f84f469c00fddc) )
+ ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(1c53ee62) SHA1(e096bf3cb6fbc3d45955787b8f3213abcd76d120) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(36e416ed) SHA1(58d0e95cc13f39bc171165468ce72f4f17b8d8d6) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(eedf19ca) SHA1(a7660bf9ff87911afb4f83b64456245059986830) )
+ROM_END
+
+
+ROM_START( jojonbss )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10bss", 0x0000000, 0x800000, CRC(fccbce04) SHA1(cd4d429620afdd1924ceb33f1a435c9de91453c3) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0e1daddf) SHA1(34bb4e0fb86258095a7b20f60174453195f3735a) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(9c426823) SHA1(1839dccc7943a44063e8cb2376cd566b24e8b797) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(1c749cc7) SHA1(23df741360476d8035c68247e645278fbab53b59) )
+ROM_END
+
+ROM_START( jojonpow )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10pow", 0x0000000, 0x800000, CRC(dd5723e1) SHA1(85adee2f633fd5438c00d2c8c9fde0c4d8a7282f) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0e1daddf) SHA1(34bb4e0fb86258095a7b20f60174453195f3735a) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(9c426823) SHA1(1839dccc7943a44063e8cb2376cd566b24e8b797) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(1c749cc7) SHA1(23df741360476d8035c68247e645278fbab53b59) )
+ROM_END
+
+
+ROM_START( redeartn )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "redearthn_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(db09f27c) SHA1(f2d299cda7cda175b4218526a15f12560654d97f) )
+
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "redeartn-simm1.0", 0x00000, 0x200000, CRC(cad468f8) SHA1(b3aa4f7d3fae84e8821417ccde9528d3eda2b7a6) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "redeartn-simm1.1", 0x00000, 0x200000, CRC(e9721d89) SHA1(5c63d10bdbce52d50b6dde14d4a0f1369383d656) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "redeartn-simm1.2", 0x00000, 0x200000, CRC(2889ec98) SHA1(a94310eb4777f908d87e9d90969db8504b4140ff) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "redeartn-simm1.3", 0x00000, 0x200000, CRC(5a6cd148) SHA1(d65c6e8378a91828474a16a3bbcd13c4b3b15f13) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "redeartn-simm3.0", 0x00000, 0x200000, CRC(83350cc5) SHA1(922b1abf80a4a89f35279b66311a7369d3965bd0) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "redeartn-simm3.1", 0x00000, 0x200000, CRC(56734de6) SHA1(75699fa6efe5bec335e4b02e15b3c45726b68fa8) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "redeartn-simm3.2", 0x00000, 0x200000, CRC(800ea0f1) SHA1(33871ab56dc1cd24441389d53e43fb8e43b149d9) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "redeartn-simm3.3", 0x00000, 0x200000, CRC(97e9146c) SHA1(ab7744709615081440bee72f4080d6fd5b938668) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "redeartn-simm3.4", 0x00000, 0x200000, CRC(0cb1d648) SHA1(7042a590c2b7ec55323062127e254da3cdc790a1) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "redeartn-simm3.5", 0x00000, 0x200000, CRC(7a1099f0) SHA1(c6a92ec86eb24485f1db530e0e78f647e8432231) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "redeartn-simm3.6", 0x00000, 0x200000, CRC(aeff8f54) SHA1(fd760e237c2e5fb2da45e32a1c12fd3defb4c3e4) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "redeartn-simm3.7", 0x00000, 0x200000, CRC(f770acd0) SHA1(4b3ccb6f91568f95f04ede6c574144918d131201) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "redeartn-simm4.0", 0x00000, 0x200000, CRC(301e56f2) SHA1(4847d971bff70a2aeed4599e1201c7ec9677da60) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "redeartn-simm4.1", 0x00000, 0x200000, CRC(2048e103) SHA1(b21f95b05cd99749bd3f25cc71b2671c2026847b) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "redeartn-simm4.2", 0x00000, 0x200000, CRC(c9433455) SHA1(63a269d76bac332c2e991d0f6a20c35e0e88680a) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "redeartn-simm4.3", 0x00000, 0x200000, CRC(c02171a8) SHA1(2e9228729b27a6113d9f2e42af310a834979f714) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "redeartn-simm4.4", 0x00000, 0x200000, CRC(2ddbf276) SHA1(b232baaa8edc8db18f8a3bdcc2d38fe984a94a34) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "redeartn-simm4.5", 0x00000, 0x200000, CRC(fea820a6) SHA1(55ee8ef95751f5a509fb126513e1b2a70a3414e5) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "redeartn-simm4.6", 0x00000, 0x200000, CRC(c7528df1) SHA1(aa312f80c2d7759d18d1aa8d416cf932b2850824) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "redeartn-simm4.7", 0x00000, 0x200000, CRC(2449cf3b) SHA1(c60d8042136d74e547f668ad787cae529c42eed9) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "redeartn-simm5.0", 0x00000, 0x200000, CRC(424451b9) SHA1(250fb92254c9e7ff5bc8dbeea5872f8a771dc9bd) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "redeartn-simm5.1", 0x00000, 0x200000, CRC(9b8cb56b) SHA1(2ff1081dc99bb7c2f1e036f4c112137c96b83d23) )
+ROM_END
+
+ROM_START( redearex )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10ex", 0x000000, 0x800000, CRC(e44131ad) SHA1(1b395edd8c0cb2705a1bdbb8df75e6d218d8e379) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(074cab4d) SHA1(4cb6cc9cce3b1a932b07058a5d723b3effa23fcf) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(14e2cad4) SHA1(9958a4e315e4476e4791a6219b93495413c7b751) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(72d98890) SHA1(f40926c52cb7a71b0ef0027a0ea38bbc7e8b31b0) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(88ccb33c) SHA1(1e7af35d186d0b4e45b6c27458ddb9cfddd7c9bc) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(2f5b44bd) SHA1(7ffdbed5b6899b7e31414a0828e04543d07435e4) )
+ROM_END
+
+ROM_START( redeartno )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "redearth_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10", 0x000000, 0x800000, CRC(68188016) SHA1(93aaac08cb5566c33aabc16457085b0a36048019) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(074cab4d) SHA1(4cb6cc9cce3b1a932b07058a5d723b3effa23fcf) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(14e2cad4) SHA1(9958a4e315e4476e4791a6219b93495413c7b751) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(72d98890) SHA1(f40926c52cb7a71b0ef0027a0ea38bbc7e8b31b0) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(88ccb33c) SHA1(1e7af35d186d0b4e45b6c27458ddb9cfddd7c9bc) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(2f5b44bd) SHA1(7ffdbed5b6899b7e31414a0828e04543d07435e4) )
+ROM_END
+
+
+ROM_START( sfiiibhp )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(73e32463) SHA1(45d144e533e4b20cc5a744ca4f618e288430c601) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10bhp", 0x0000000, 0x800000, CRC(cebd13a2) SHA1(18017d798448f6271f5c7b07325e0410b5d55f0d) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(98c2d07c) SHA1(604ce4a16170847c10bc233a47a47a119ce170f7) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7115a396) SHA1(b60a74259e3c223138e66e68a3f6457694a0c639) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(839f0972) SHA1(844e43fcc157b7c774044408bfe918c49e174cdb) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(8a8b252c) SHA1(9ead4028a212c689d7a25746fbd656dca6f938e8) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(58933dc2) SHA1(1f1723be676a817237e96b6e20263b935c59daae) )
+ROM_END
+
+ROM_START( sfiiipmp )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(73e32463) SHA1(45d144e533e4b20cc5a744ca4f618e288430c601) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10pmp", 0x0000000, 0x800000, CRC(41ed9e7b) SHA1(91684a1ecada9971eddf5ca6ace95f7110ba165b) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(98c2d07c) SHA1(604ce4a16170847c10bc233a47a47a119ce170f7) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7115a396) SHA1(b60a74259e3c223138e66e68a3f6457694a0c639) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(839f0972) SHA1(844e43fcc157b7c774044408bfe918c49e174cdb) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(8a8b252c) SHA1(9ead4028a212c689d7a25746fbd656dca6f938e8) )
+ ROM_LOAD( "50", 0x2000000, 0x400000, CRC(58933dc2) SHA1(1f1723be676a817237e96b6e20263b935c59daae) )
+ROM_END
+
+
+ROM_START( sfiii2bh )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii2_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(fd297c0d) SHA1(4323deda2789f104b53f32a663196ec16de73215) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10bh", 0x0000000, 0x800000, CRC(503d6401) SHA1(bf352cada35fd5c9927d265fcc04a068ed015e57) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(38090460) SHA1(aaade89b8ccdc9154f97442ca35703ec538fe8be) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(77c197c0) SHA1(944381161462e65de7ae63a656658f3fbe44727a) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7470a6f2) SHA1(850b2e20afe8a5a1f0d212d9abe002cb5cf14d22) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(01a85ced) SHA1(802df3274d5f767636b2785606e0558f6d3b9f13) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(fb346d74) SHA1(57570f101a170aa7e83e84e4b7cbdc63a11a486a) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(32f79449) SHA1(44b1f2a640ab4abc23ff47e0edd87fbd0b345c06) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(1102b8eb) SHA1(c7dd2ee3a3214c6ec47a03fe3e8c941775d57f76) )
+ROM_END
+
+ROM_START( sfiii2np )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii2_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(fd297c0d) SHA1(4323deda2789f104b53f32a663196ec16de73215) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10p", 0x0000000, 0x800000, CRC(ff5a016f) SHA1(0fef232f3ff9a0ef2225b934b283118b53b2f26e) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(38090460) SHA1(aaade89b8ccdc9154f97442ca35703ec538fe8be) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(77c197c0) SHA1(944381161462e65de7ae63a656658f3fbe44727a) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7470a6f2) SHA1(850b2e20afe8a5a1f0d212d9abe002cb5cf14d22) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(01a85ced) SHA1(802df3274d5f767636b2785606e0558f6d3b9f13) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(fb346d74) SHA1(57570f101a170aa7e83e84e4b7cbdc63a11a486a) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(32f79449) SHA1(44b1f2a640ab4abc23ff47e0edd87fbd0b345c06) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(1102b8eb) SHA1(c7dd2ee3a3214c6ec47a03fe3e8c941775d57f76) )
+ROM_END
+
+ROM_START( sfiii2pl )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii2_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(fd297c0d) SHA1(4323deda2789f104b53f32a663196ec16de73215) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", 0 )
+ ROM_LOAD( "10pl", 0x0000000, 0x800000, CRC(beb7b483) SHA1(451e37490dccd7ae11c1bd6f7ba236af7d54b342) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(38090460) SHA1(aaade89b8ccdc9154f97442ca35703ec538fe8be) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", 0 )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(77c197c0) SHA1(944381161462e65de7ae63a656658f3fbe44727a) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7470a6f2) SHA1(850b2e20afe8a5a1f0d212d9abe002cb5cf14d22) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(01a85ced) SHA1(802df3274d5f767636b2785606e0558f6d3b9f13) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(fb346d74) SHA1(57570f101a170aa7e83e84e4b7cbdc63a11a486a) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(32f79449) SHA1(44b1f2a640ab4abc23ff47e0edd87fbd0b345c06) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(1102b8eb) SHA1(c7dd2ee3a3214c6ec47a03fe3e8c941775d57f76) )
+ROM_END
+
+
+ROM_START( sfiii3an )
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "sfiii3n-simm1.0", 0x000000, 0x200000, CRC(11dfd3cd) SHA1(dba1f77c46e80317e3279298411154dfb6db2309) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "sfiii3n-simm1.1", 0x000000, 0x200000, CRC(c50585e6) SHA1(a289237957ea1c7f58b1c65e24c54ceb34cb1712) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "sfiii3n-simm1.2", 0x000000, 0x200000, CRC(8e011d9b) SHA1(e0861bcd3c4f865474d7ce47aa9eeec7b3d28da6) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "sfiii3n-simm1.3", 0x000000, 0x200000, CRC(dca8d92f) SHA1(7cd241641c943df446e2c75b88b5cf2d2ebf7b2e) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "sfiii3-simm2.0", 0x00000, 0x200000, CRC(06eb969e) SHA1(d89f6a6585b76692d57d337f0f8186398fb056da) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "sfiii3-simm2.1", 0x00000, 0x200000, CRC(e7039f82) SHA1(8e81e66b5a4f45ae14b070a491bde47a6a74499f) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "sfiii3-simm2.2", 0x00000, 0x200000, CRC(645c96f7) SHA1(06d5a54874d4bf100b776131ec9060da209ad037) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "sfiii3-simm2.3", 0x00000, 0x200000, CRC(610efab1) SHA1(bbc21ed6ff6220ff6017a3f02ebd9a341fbc9040) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiii3-simm3.0", 0x00000, 0x200000, CRC(7baa1f79) SHA1(3f409df28c24dd7221966b5340d59898ea756b6f) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiii3-simm3.1", 0x00000, 0x200000, CRC(234bf8fe) SHA1(2191781ae4d726cab28de97f27efa4a13f3bdd69) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiii3-simm3.2", 0x00000, 0x200000, CRC(d9ebc308) SHA1(af6a0dca77e5181c9f20533a06760a782c5fd51d) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiii3-simm3.3", 0x00000, 0x200000, CRC(293cba77) SHA1(294604cacdc24261aec4d39e489de91c41fa1758) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiii3-simm3.4", 0x00000, 0x200000, CRC(6055e747) SHA1(3813852c5a4a5355ef739ca8f0913bbd390b984b) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiii3-simm3.5", 0x00000, 0x200000, CRC(499aa6fc) SHA1(5b9b6eab3e99ff3e1d7c1f50b9d8bc6a81f3f8a9) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiii3-simm3.6", 0x00000, 0x200000, CRC(6c13879e) SHA1(de189b0b8f42bc7dd89983e62bc2ecb4237b3277) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiii3-simm3.7", 0x00000, 0x200000, CRC(cf4f8ede) SHA1(e0fb68fcb0e445f824c62fa828d6e1dcd7e3683a) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiii3-simm4.0", 0x00000, 0x200000, CRC(091fd5ba) SHA1(3327ad7c2623c119bf728af717ea2ce3b74673a9) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiii3-simm4.1", 0x00000, 0x200000, CRC(0bca8917) SHA1(b7b284e2f16f46d46bcfaae779b232c5b980924f) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiii3-simm4.2", 0x00000, 0x200000, CRC(a0fd578b) SHA1(100c9db9f00ecd88d518076f5a0822e6ac3695b3) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiii3-simm4.3", 0x00000, 0x200000, CRC(4bf8c699) SHA1(2c0b4288b5ebc5e54d9e782dfc39eb8c78fd4c21) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiii3-simm4.4", 0x00000, 0x200000, CRC(137b8785) SHA1(56a579520a8ce2abbf36be57777f024e80474eee) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiii3-simm4.5", 0x00000, 0x200000, CRC(4fb70671) SHA1(9aba83c18cfc099a5ce18793119bff0c2b9c777f) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiii3-simm4.6", 0x00000, 0x200000, CRC(832374a4) SHA1(c84629e32fbf47cb7b5b4ee7555bfc2ac9b3857f) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiii3-simm4.7", 0x00000, 0x200000, CRC(1c88576d) SHA1(0f039944d0c2305999ed5dbd351c3eb87812dc3b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiii3-simm5.0", 0x00000, 0x200000, CRC(c67d9190) SHA1(d265475244099d0ec153059986f3445c7bd910a3) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiii3-simm5.1", 0x00000, 0x200000, CRC(6cb79868) SHA1(c94237f30e05bfcb2e23945530c812d9e4c73416) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "sfiii3-simm5.2", 0x00000, 0x200000, CRC(df69930e) SHA1(c76b7c559a1d5558138afbc796249efa2f49f6a8) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "sfiii3-simm5.3", 0x00000, 0x200000, CRC(333754e0) SHA1(4c18a569c26524a492ecd6f4c8b3c8e803a077d3) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "sfiii3-simm5.4", 0x00000, 0x200000, CRC(78f6d417) SHA1(a69577cc5399fcf0a24548661168f27f3e7e8e40) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "sfiii3-simm5.5", 0x00000, 0x200000, CRC(8ccad9b1) SHA1(f8bda399f87be2497b7ac39e9661f9863bf4f873) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "sfiii3n-simm5.6", 0x000000, 0x200000, CRC(85de59e5) SHA1(748b5c91f15777b85d8c1d35b685cd90d3185ec6) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "sfiii3n-simm5.7", 0x000000, 0x200000, CRC(ee7e29b3) SHA1(63dc30c6904ca2f58d229249bee5eef51fafa158) )
+
+ ROM_REGION( 0x200000, "simm6.0", 0 )
+ ROM_LOAD( "sfiii3-simm6.0", 0x00000, 0x200000, CRC(8da69042) SHA1(fd3d08295342635b2136e48d543c9350d287bb22) )
+ ROM_REGION( 0x200000, "simm6.1", 0 )
+ ROM_LOAD( "sfiii3-simm6.1", 0x00000, 0x200000, CRC(1c8c7ac4) SHA1(ac9f8353a4c356ef98aa7c226baba00b01f5a80f) )
+ ROM_REGION( 0x200000, "simm6.2", 0 )
+ ROM_LOAD( "sfiii3-simm6.2", 0x00000, 0x200000, CRC(a671341d) SHA1(636f4c04962bc1e1ddb29d2e01244b00389b234f) )
+ ROM_REGION( 0x200000, "simm6.3", 0 )
+ ROM_LOAD( "sfiii3-simm6.3", 0x00000, 0x200000, CRC(1a990249) SHA1(2acc639e2c0c53bf24096b8620eab090bc25d03b) )
+ ROM_REGION( 0x200000, "simm6.4", 0 )
+ ROM_LOAD( "sfiii3-simm6.4", 0x00000, 0x200000, CRC(20cb39ac) SHA1(7d13a0fea1ef719dd2ff77dfb547d53c6023cc9e) )
+ ROM_REGION( 0x200000, "simm6.5", 0 )
+ ROM_LOAD( "sfiii3-simm6.5", 0x00000, 0x200000, CRC(5f844b2f) SHA1(564e4934f89ed3b92a4c4874519f8f00f3b48696) )
+ ROM_REGION( 0x200000, "simm6.6", 0 )
+ ROM_LOAD( "sfiii3-simm6.6", 0x00000, 0x200000, CRC(450e8d28) SHA1(885db658132aa27926df617ec2d2a1f38abdbb60) )
+ ROM_REGION( 0x200000, "simm6.7", 0 )
+ ROM_LOAD( "sfiii3-simm6.7", 0x00000, 0x200000, CRC(cc5f4187) SHA1(248ddace21ed4736a56e92f77cc6ad219d7fef0b) )
+ROM_END
+
+
+ROM_START( sfiii3bh )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10bh", 0x0000000, 0x800000, CRC(b18be430) SHA1(0ede4ab7c950dc838e01b8df9b9ddd725ff640ee) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(7baf234b) SHA1(38feb45d6315d771de5f9ae965119cb25bae2a1e) )
+ ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
+ ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ROM_END
+
+ROM_START( sfiii3mh )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10", 0x0000000, 0x800000, CRC(ba7f76b2) SHA1(6b396596dea009b34af17484919ae37eda53ec65) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
+ ROM_LOAD( "51mh", 0x2800000, 0x800000, CRC(798b8f73) SHA1(96e81538b72302d799353f5a2c18ac957727d822) )
+ ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
+ ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ROM_END
+
+ROM_START( sfiii3ng )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10g", 0x0000000, 0x800000, CRC(22cc7988) SHA1(35eedb2cea53d88a6212ecec9f9810c69736481e) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(7baf234b) SHA1(38feb45d6315d771de5f9ae965119cb25bae2a1e) )
+ ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
+ ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ROM_END
+
+ROM_START( sfiii3np )
+ ROM_REGION32_BE( 0x080000, "bios", 0 )
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm1.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm2.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm3.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm4.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm5.7", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.0", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.2", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.3", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.4", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.5", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.6", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "simm6.7", ROMREGION_ERASEFF )
+
+ ROM_REGION32_BE( USER4REGION_LENGTH, "old4", ROMREGION_ERASEFF )
+ ROM_LOAD( "10p", 0x0000000, 0x800000, CRC(b13c6fa5) SHA1(5e8e3a3bfb2f5a18cf14a04e75a6abb5ddc807be) )
+ ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
+ ROM_REGION16_BE( USER5REGION_LENGTH, "old5", ROMREGION_ERASEFF )
+ ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
+ ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
+ ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
+ ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
+ ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
+ ROM_LOAD( "51", 0x2800000, 0x800000, CRC(7baf234b) SHA1(38feb45d6315d771de5f9ae965119cb25bae2a1e) )
+ ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
+ ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ROM_END
+
+
+ROM_START( sfiii4rd )
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
+
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "4rd-simm1.0", 0x00000, 0x200000, CRC(6bef26b4) SHA1(fb643d5fc5be4464374773a651ab4b5c51826047) ) // sldh
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "4rd-simm1.1", 0x00000, 0x200000, CRC(37ee88ed) SHA1(180e5ee309ad3898ac385b9add38fbec80cc1dce) ) // sldh
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "4rd-simm1.2", 0x00000, 0x200000, CRC(120139f0) SHA1(a5365ac00c75ee0e20f6c7b5a0bcee543c8582be) ) // sldh
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "4rd-simm1.3", 0x00000, 0x200000, CRC(b32e4fcc) SHA1(32bd359ca1747fa92691bd5471ba767456cc4dbb) ) // sldh
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "sfiii3-simm2.0", 0x00000, 0x200000, CRC(06eb969e) SHA1(d89f6a6585b76692d57d337f0f8186398fb056da) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "sfiii3-simm2.1", 0x00000, 0x200000, CRC(e7039f82) SHA1(8e81e66b5a4f45ae14b070a491bde47a6a74499f) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "sfiii3-simm2.2", 0x00000, 0x200000, CRC(645c96f7) SHA1(06d5a54874d4bf100b776131ec9060da209ad037) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "sfiii3-simm2.3", 0x00000, 0x200000, CRC(610efab1) SHA1(bbc21ed6ff6220ff6017a3f02ebd9a341fbc9040) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiii3-simm3.0", 0x00000, 0x200000, CRC(7baa1f79) SHA1(3f409df28c24dd7221966b5340d59898ea756b6f) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiii3-simm3.1", 0x00000, 0x200000, CRC(234bf8fe) SHA1(2191781ae4d726cab28de97f27efa4a13f3bdd69) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiii3-simm3.2", 0x00000, 0x200000, CRC(d9ebc308) SHA1(af6a0dca77e5181c9f20533a06760a782c5fd51d) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiii3-simm3.3", 0x00000, 0x200000, CRC(293cba77) SHA1(294604cacdc24261aec4d39e489de91c41fa1758) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiii3-simm3.4", 0x00000, 0x200000, CRC(6055e747) SHA1(3813852c5a4a5355ef739ca8f0913bbd390b984b) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiii3-simm3.5", 0x00000, 0x200000, CRC(499aa6fc) SHA1(5b9b6eab3e99ff3e1d7c1f50b9d8bc6a81f3f8a9) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiii3-simm3.6", 0x00000, 0x200000, CRC(6c13879e) SHA1(de189b0b8f42bc7dd89983e62bc2ecb4237b3277) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiii3-simm3.7", 0x00000, 0x200000, CRC(cf4f8ede) SHA1(e0fb68fcb0e445f824c62fa828d6e1dcd7e3683a) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiii3-simm4.0", 0x00000, 0x200000, CRC(091fd5ba) SHA1(3327ad7c2623c119bf728af717ea2ce3b74673a9) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiii3-simm4.1", 0x00000, 0x200000, CRC(0bca8917) SHA1(b7b284e2f16f46d46bcfaae779b232c5b980924f) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiii3-simm4.2", 0x00000, 0x200000, CRC(a0fd578b) SHA1(100c9db9f00ecd88d518076f5a0822e6ac3695b3) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiii3-simm4.3", 0x00000, 0x200000, CRC(4bf8c699) SHA1(2c0b4288b5ebc5e54d9e782dfc39eb8c78fd4c21) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiii3-simm4.4", 0x00000, 0x200000, CRC(137b8785) SHA1(56a579520a8ce2abbf36be57777f024e80474eee) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiii3-simm4.5", 0x00000, 0x200000, CRC(4fb70671) SHA1(9aba83c18cfc099a5ce18793119bff0c2b9c777f) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiii3-simm4.6", 0x00000, 0x200000, CRC(832374a4) SHA1(c84629e32fbf47cb7b5b4ee7555bfc2ac9b3857f) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiii3-simm4.7", 0x00000, 0x200000, CRC(1c88576d) SHA1(0f039944d0c2305999ed5dbd351c3eb87812dc3b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiii3-simm5.0", 0x00000, 0x200000, CRC(c67d9190) SHA1(d265475244099d0ec153059986f3445c7bd910a3) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiii3-simm5.1", 0x00000, 0x200000, CRC(6cb79868) SHA1(c94237f30e05bfcb2e23945530c812d9e4c73416) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "sfiii3-simm5.2", 0x00000, 0x200000, CRC(df69930e) SHA1(c76b7c559a1d5558138afbc796249efa2f49f6a8) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "sfiii3-simm5.3", 0x00000, 0x200000, CRC(333754e0) SHA1(4c18a569c26524a492ecd6f4c8b3c8e803a077d3) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "sfiii3-simm5.4", 0x00000, 0x200000, CRC(78f6d417) SHA1(a69577cc5399fcf0a24548661168f27f3e7e8e40) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "sfiii3-simm5.5", 0x00000, 0x200000, CRC(8ccad9b1) SHA1(f8bda399f87be2497b7ac39e9661f9863bf4f873) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "4rd-simm5.6", 0x00000, 0x200000, CRC(e9b61a56) SHA1(9277ac5da4715aa5325ae9f8c055f1e826b4ce54) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "4rd-simm5.7", 0x00000, 0x200000, CRC(8db3a249) SHA1(db38963ce011535a95f11426c17fb3eeda300917) )
+
+ ROM_REGION( 0x200000, "simm6.0", 0 )
+ ROM_LOAD( "sfiii3-simm6.0", 0x00000, 0x200000, CRC(8da69042) SHA1(fd3d08295342635b2136e48d543c9350d287bb22) )
+ ROM_REGION( 0x200000, "simm6.1", 0 )
+ ROM_LOAD( "sfiii3-simm6.1", 0x00000, 0x200000, CRC(1c8c7ac4) SHA1(ac9f8353a4c356ef98aa7c226baba00b01f5a80f) )
+ ROM_REGION( 0x200000, "simm6.2", 0 )
+ ROM_LOAD( "sfiii3-simm6.2", 0x00000, 0x200000, CRC(a671341d) SHA1(636f4c04962bc1e1ddb29d2e01244b00389b234f) )
+ ROM_REGION( 0x200000, "simm6.3", 0 )
+ ROM_LOAD( "sfiii3-simm6.3", 0x00000, 0x200000, CRC(1a990249) SHA1(2acc639e2c0c53bf24096b8620eab090bc25d03b) )
+ ROM_REGION( 0x200000, "simm6.4", 0 )
+ ROM_LOAD( "sfiii3-simm6.4", 0x00000, 0x200000, CRC(20cb39ac) SHA1(7d13a0fea1ef719dd2ff77dfb547d53c6023cc9e) )
+ ROM_REGION( 0x200000, "simm6.5", 0 )
+ ROM_LOAD( "sfiii3-simm6.5", 0x00000, 0x200000, CRC(5f844b2f) SHA1(564e4934f89ed3b92a4c4874519f8f00f3b48696) )
+ ROM_REGION( 0x200000, "simm6.6", 0 )
+ ROM_LOAD( "sfiii3-simm6.6", 0x00000, 0x200000, CRC(450e8d28) SHA1(885db658132aa27926df617ec2d2a1f38abdbb60) )
+ ROM_REGION( 0x200000, "simm6.7", 0 )
+ ROM_LOAD( "sfiii3-simm6.7", 0x00000, 0x200000, CRC(cc5f4187) SHA1(248ddace21ed4736a56e92f77cc6ad219d7fef0b) )
+ROM_END
+
+
+
+GAME( 2009, jojobbh2, jojoba, jojoba, cps3_jojo, cps3_hbmame, jojoban, ROT0, "Pipi899", "JoJo's Bizarre Adventure (Boss v2.0 hack by Pipi899 2009-08-08)", 0 )
+GAME( 2009, jojobbss, jojoba, jojoba, cps3_jojo, cps3_hbmame, jojoban, ROT0, "Pipi899", "JoJo's Bizarre Adventure (Boss hack by Pipi899 2009-07-15)", 0 )
+GAME( 2009, jojobpow, jojoba, jojoba, cps3_jojo, cps3_hbmame, jojoban, ROT0, "Pipi899", "JoJo's Bizarre Adventure (Power hack by Pipi899 2009-07-15)", 0 )
+GAME( 2009, jojonbss, jojo, jojo, cps3_jojo, cps3_hbmame, jojon, ROT0, "Pipi899", "JoJo's Venture (Boss hack by Pipi899 2009-07-09)", 0 )
+GAME( 2009, jojonpow, jojo, jojo, cps3_jojo, cps3_hbmame, jojon, ROT0, "Pipi899", "JoJo's Venture (Power hack by Pipi899 2009-07-11)", 0 )
+GAME( 1996, redeartn, redearth, redeartn, cps3_ren, cps3_state, redearth, ROT0, "Capcom", "Red Earth (Asia 961121, NO CD)", 0 )
+GAME( 1996, redeartno, redearth, redeartn, cps3_ren, cps3_hbmame, redeartno, ROT0, "Capcom", "Red Earth (Euro 961121, NO CD)", 0 )
+GAME( 2009, redearex, redearth, redeartn, cps3_ren, cps3_hbmame, redeartno, ROT0, "Pipi899", "Red Earth (Ex Super Version hack by Pipi899 2009-09-08)", 0 )
+GAME( 2009, sfiiibhp, sfiii, sfiii, cps3, cps3_hbmame, sfiiin, ROT0, "Pipi899", "Street Fighter III: New Generation (Boss hack by Pipi899 2009-08-08)", 0 )
+GAME( 2009, sfiiipmp, sfiii, sfiii, cps3, cps3_hbmame, sfiiin, ROT0, "Pipi899", "Street Fighter III: New Generation (Power hack by Pipi899 2009-07-06)", 0 )
+GAMEL(1997, sfiii2bh, sfiii2, sfiii2, cps3, cps3_hbmame, sfiii2n, ROT0, "Yumeji", "Street Fighter III 2nd Impact: Giant Attack (Boss hack by Yumeji)", 0, layout_sfiii2 )
+GAMEL(2009, sfiii2np, sfiii2, sfiii2, cps3, cps3_hbmame, sfiii2n, ROT0, "Pipi899", "Street Fighter III 2nd Impact: Giant Attack (Power hack by Pipi899 2009-07-14)", 0, layout_sfiii2 )
+GAMEL(1997, sfiii2pl, sfiii2, sfiii2, cps3, cps3_hbmame, sfiii2n, ROT0, "Krysofun", "Street Fighter III 2nd Impact: Giant Attack (Plus v1.0 hack by Krysofun)", 0, layout_sfiii2 )
+GAME( 2013, sfiii3an, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "hack", "Street Fighter III 3rd Strike: Ford Strike (Japan 990608, NO CD)", 0 )
+GAME( 1999, sfiii3bh, sfiii3, sfiii3, cps3, cps3_hbmame, sfiii3n, ROT0, "Yumeji", "Street Fighter III 3rd Strike: Fight for the Future (Boss hack by Yumeji)", 0 )
+GAME( 1999, sfiii3mh, sfiii3, sfiii3, cps3, cps3_hbmame, sfiii3n, ROT0, "hack", "Street Fighter III 3rd Strike: Fight for the Future (Makoto Color hack)", 0 )
+GAME( 2009, sfiii3ng, sfiii3, sfiii3, cps3, cps3_hbmame, sfiii3n, ROT0, "Pipi899", "Street Fighter III 3rd Strike: Fight for the Future (Gill Unable Reactivating hack by Pipi899 2009-07-14)", 0 )
+GAME( 2009, sfiii3np, sfiii3, sfiii3, cps3, cps3_hbmame, sfiii3n, ROT0, "Pipi899", "Street Fighter III 3rd Strike: Fight for the Future (Power hack by Pipi899 2009-07-14)", 0 )
+GAME( 2013, sfiii4rd, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "hack", "Street Fighter III 3rd Strike: 4rd Arrange Edition (Japan 990608, NO CD)", 0 )
diff --git a/docs/release/src/hbmame/drivers/dec0.cpp b/docs/release/src/hbmame/drivers/dec0.cpp
new file mode 100644
index 00000000000..606558a7e56
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/dec0.cpp
@@ -0,0 +1,106 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/dec0.cpp"
+
+ROM_START( baddudef )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "baddudef.4", 0x00000, 0x10000, CRC(1a0667ae) SHA1(a530bfe91aa8b489ef7c1368b81983e760d0d993) )
+ ROM_LOAD16_BYTE( "baddudef.1", 0x00001, 0x10000, CRC(14d71614) SHA1(282fe93c04791e48a963ee78e69753e54c51e779) )
+ ROM_LOAD16_BYTE( "ei06.6c", 0x40000, 0x10000, CRC(3ff8da57) SHA1(eea8125a3eac33d76d22e72b69633eaae138efe5) )
+ ROM_LOAD16_BYTE( "ei03.6a", 0x40001, 0x10000, CRC(f8f2bd94) SHA1(622c66fea00cabb2cce16bf621b07d38a660708d) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "ei07.8a", 0x8000, 0x8000, CRC(9fb1ef4b) SHA1(f4dd0773be93c2ad8b0faacd12939c531b5aa130) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "ei25.15j", 0x00000, 0x08000, CRC(bcf59a69) SHA1(486727e19c12ea55b47e2ef773d0d0471cf50083) )
+ ROM_LOAD( "baddudef.26", 0x08000, 0x08000, CRC(bb8d93d0) SHA1(64a462c86cf270b3aa3e359b0f423a816e9dafb6) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 ) /* tiles */
+ ROM_LOAD( "ei18.14d", 0x00000, 0x10000, CRC(05cfc3e5) SHA1(a0163921c77dc9706463a402c3dd45ec4341cd21) )
+ ROM_LOAD( "ei20.17d", 0x10000, 0x10000, CRC(e11e988f) SHA1(0c59f0d8d1abe414c7e1ebd49d454179fed2cd00) )
+ ROM_LOAD( "ei22.14f", 0x20000, 0x10000, CRC(b893d880) SHA1(99e228174677f2e3e96154f77bfa9bf0f1c0a6a5) )
+ ROM_LOAD( "ei24.17f", 0x30000, 0x10000, CRC(6f226dda) SHA1(65ebb16a292c57d49c135fce7ed7537146226eb5) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) /* tiles */
+ ROM_LOAD( "ei30.9j", 0x08000, 0x08000, CRC(982da0d1) SHA1(d819a587905624d793988f2ea726783da527d9f2) )
+ ROM_CONTINUE( 0x00000, 0x08000 ) /* the two halves are swapped */
+ ROM_LOAD( "ei28.9f", 0x18000, 0x08000, CRC(f01ebb3b) SHA1(1686690cb0c87d9e687b2abb4896cf285ab8378f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
+ ROM_LOAD( "ei15.16c", 0x00000, 0x10000, CRC(a38a7d30) SHA1(5cb1fb97605829fc733c79a7e169fa52adc6863b) )
+ ROM_LOAD( "ei16.17c", 0x10000, 0x08000, CRC(17e42633) SHA1(405f5296a741901677cca978a1b287d894eb1e54) )
+ ROM_LOAD( "ei11.16a", 0x20000, 0x10000, CRC(3a77326c) SHA1(4de81752329cde6210a9c250a9f8ebe3dad9fe92) )
+ ROM_LOAD( "ei12.17a", 0x30000, 0x08000, CRC(fea2a134) SHA1(525dd5f48993db1fe1e3c095442884178f75e8e0) )
+ ROM_LOAD( "ei13.13c", 0x40000, 0x10000, CRC(e5ae2751) SHA1(4e4a3c68b11e9b0c8da70121b23296128063d4e9) )
+ ROM_LOAD( "ei14.14c", 0x50000, 0x08000, CRC(e83c760a) SHA1(d08db381658b8b3288c5eaa9048a906126e0f712) )
+ ROM_LOAD( "ei09.13a", 0x60000, 0x10000, CRC(6901e628) SHA1(1162c8cee20450780774cad54a9af40ebf0f0826) )
+ ROM_LOAD( "ei10.14a", 0x70000, 0x08000, CRC(eeee8a1a) SHA1(2bf8378ff38f6a7c7cbd4cbd489de25cb1f0fe71) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "ei08.2c", 0x0000, 0x10000, CRC(3c87463e) SHA1(f17c98507b562e91e9b27599614b3249fe68ff7a) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
+ ROM_LOAD( "ei31.9a", 0x0000, 0x1000, CRC(2a8745d2) SHA1(f15ab17b1e7836d603135f5c66ca2e3d72f6e4a2) )
+ROM_END
+
+// There are 3 screens. Press 1 very lightly to advance.
+// On first screen, press Left & Right to move 'CHAOS' around.
+ROM_START( decodemo )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "decodemo.4", 0x00000, 0x10000, CRC(7cb53ab2) SHA1(c06f8173f5b27b647b186e1c3a198ec22dab4950) )
+ ROM_LOAD16_BYTE( "decodemo.1", 0x00001, 0x10000, CRC(920dd0bf) SHA1(e69e60121812716b55f4e9c4b3f4993171c5296a) )
+ ROM_LOAD16_BYTE( "decodemo.6", 0x40000, 0x10000, CRC(d7978eeb) SHA1(1adc95bebe9eea8c112d40cd04ab7a8d75c4f961) )
+ ROM_LOAD16_BYTE( "decodemo.3", 0x40001, 0x10000, CRC(d7978eeb) SHA1(1adc95bebe9eea8c112d40cd04ab7a8d75c4f961) )
+
+ // The instruction [33C0 0030 C003] [move.w D0, $30C003.l] is considered illegal, we need to patch out all 3 occurrences
+ //ROM_FILL( 0x04ba, 1, 0x4e )
+ //ROM_FILL( 0x04bb, 1, 0x71 ) /* write a nop instruction [4e71] */
+ //ROM_COPY( "maincpu", 0x04ba, 0x04bc, 2 ) /* The faulty instruction is 6 bytes long, so we need 3 nops */
+ //ROM_COPY( "maincpu", 0x04ba, 0x04be, 2 )
+ //ROM_COPY( "maincpu", 0x04ba, 0x04e8, 6 ) /* copy the 3 nops to 0x4e8 */
+ //ROM_COPY( "maincpu", 0x04ba, 0x096e, 6 ) /* and 0x96e */
+
+ // Text stopped working when bac06 device was rewritten. We send a 1 to pf_control_0 to fix it.
+ ROM_FILL( 0x04d8, 1, 0x33 )
+ ROM_FILL( 0x04d9, 1, 0xfc )
+ ROM_FILL( 0x04da, 6, 0x00 )
+ ROM_FILL( 0x04db, 1, 0x01 )
+ ROM_FILL( 0x04dd, 1, 0x24 )
+ ROM_FILL( 0x04e0, 1, 0x67 )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "ei07.8a", 0x8000, 0x8000, CRC(9fb1ef4b) SHA1(f4dd0773be93c2ad8b0faacd12939c531b5aa130) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "decodemo.25", 0x00000, 0x08000, CRC(011ffca6) SHA1(5188431849b4613152fd7bdba6a3ff0a4fd6424b) )
+ ROM_LOAD( "decodemo.26", 0x08000, 0x08000, CRC(14b56f44) SHA1(66c294b27400d3f3cafd7b1f633681df7195a14b) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 ) /* tiles */
+ ROM_LOAD( "decodemo.18", 0x00000, 0x10000, CRC(53ac4058) SHA1(b6bd668085a6f2c21c66f38955e27ab384a5ebf1) )
+ ROM_LOAD( "decodemo.20", 0x10000, 0x10000, CRC(64f1ca83) SHA1(a8922226dc4f67873c0eb32a0da5e920b9e08e49) )
+ ROM_LOAD( "decodemo.22", 0x20000, 0x10000, CRC(e93c5aef) SHA1(bd31b2418a3e3c76c0018d43e9b106895218dae7) )
+ ROM_LOAD( "decodemo.24", 0x30000, 0x10000, CRC(ae2556dc) SHA1(ffcc1f7e8ec25ba35d20cedb6cb4010ea9ff409d) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) /* tiles */
+ ROM_LOAD( "decodemo.30", 0x08000, 0x08000, CRC(9b02b8f8) SHA1(665764ac534ad370545f33d210846e69db558f6f) )
+ ROM_CONTINUE( 0x00000, 0x08000 ) /* the two halves are swapped */
+ ROM_LOAD( "decodemo.28", 0x18000, 0x08000, CRC(596b92f2) SHA1(a15f4435a3dcfa7d6a45610fccb8607ae9b8fa19) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x80000, "gfx4", ROMREGION_ERASE00 ) /* sprites */
+ ROM_LOAD( "decodemo.15", 0x00000, 0x10000, CRC(4a051829) SHA1(ed560a3ffb9b1d83c3291145e0e938016dd1fa5a) )
+ ROM_LOAD( "decodemo.11", 0x20000, 0x10000, CRC(d7978eeb) SHA1(1adc95bebe9eea8c112d40cd04ab7a8d75c4f961) )
+ ROM_LOAD( "decodemo.13", 0x40000, 0x10000, CRC(a58d1d9e) SHA1(ebd22872e0230da23d0e63ef7fbe2b5988cd93bd) )
+ ROM_LOAD( "decodemo.9", 0x60000, 0x10000, CRC(4d1de58f) SHA1(1979fb6d9cdc25033c75fd3f0c30fb56e040ddc0) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "ei08.2c", 0x0000, 0x10000, CRC(3c87463e) SHA1(f17c98507b562e91e9b27599614b3249fe68ff7a) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* i8751 microcontroller */
+ ROM_LOAD( "ei31.9a", 0x0000, 0x1000, CRC(2a8745d2) SHA1(f15ab17b1e7836d603135f5c66ca2e3d72f6e4a2) )
+ROM_END
+
+GAME( 2007, baddudef, baddudes, baddudes, baddudes, dec0_state, hbarrel, ROT0, "Arkatrad", "Bad Dudes vs. Dragonninja (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, decodemo, baddudes, baddudes, baddudes, dec0_state, hbarrel, ROT0, "Charles Doty", "Demo - Data East", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/dkong.cpp b/docs/release/src/hbmame/drivers/dkong.cpp
new file mode 100644
index 00000000000..b744b23d8f1
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/dkong.cpp
@@ -0,0 +1,284 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/dkong.cpp"
+
+static INPUT_PORTS_START( dkongex )
+ PORT_INCLUDE( dkong )
+ PORT_MODIFY("DSW0")
+ PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x70, "Freeplay" )
+ PORT_DIPSETTING( 0x50, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x30, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x60, DEF_STR( 1C_4C ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( dkrdemo )
+ PORT_INCLUDE( dkong )
+ PORT_MODIFY("DSW0")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:!1,!2" )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x02, "7" )
+ PORT_DIPSETTING( 0x03, "9" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:!3,!4" )
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x04, "15000" ) // and each additional 150k
+ PORT_DIPSETTING( 0x08, "25000" ) // and each additional 250k
+ PORT_DIPSETTING( 0x0c, "35000" ) // and each additional 350k
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:!5,!6" )
+ PORT_DIPSETTING( 0x30, "Free Play" )
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "SW1:!8" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) PORT_DIPLOCATION( "SW1:!8" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+INPUT_PORTS_END
+
+
+
+/* same as mame 'dkongf' except 4th rom is different */
+ROM_START( dkongex )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "dk_f.5et", 0x0000, 0x1000, CRC(00b7efaf) SHA1(97ed5930eb5d0cb98a9008b1d329ba7f3b8b8dbf) )
+ ROM_LOAD( "dk_f.5ct", 0x1000, 0x1000, CRC(88af9b69) SHA1(c5621dd8198c333b3fa32fdece60ee5a3d8b2276) )
+ ROM_LOAD( "dk_f.5bt", 0x2000, 0x1000, CRC(de74ad91) SHA1(c80227361bdbc565e9f5764e6364b52d40ca778a) )
+ ROM_LOAD( "dkongex.5at", 0x3000, 0x1000, CRC(9fa3e5b7) SHA1(5c34170f762a147d5285d17d6689fd64dab99ff2) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
+ ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "l_4m_b.bin", 0x0000, 0x0800, CRC(59f8054d) SHA1(793dba9bf5a5fe76328acdfb90815c243d2a65f1) )
+ ROM_LOAD( "l_4n_b.bin", 0x0800, 0x0800, CRC(672e4714) SHA1(92e5d379f4838ac1fa44d448ce7d142dae42102f) )
+ ROM_LOAD( "l_4r_b.bin", 0x1000, 0x0800, CRC(feaa59ee) SHA1(ecf95db5a20098804fc8bd59232c66e2e0ed3db4) )
+ ROM_LOAD( "l_4s_b.bin", 0x1800, 0x0800, CRC(20f2ef7e) SHA1(3bc482a38bf579033f50082748ee95205b0f673d) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) )
+ ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) )
+ ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) )
+ROM_END
+
+
+/* This set has the fixes proposed by Don Hodges at the page:
+ http://donhodges.com/how_high_can_you_get.htm */
+ROM_START( dkongp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "dkongp_c_5et", 0x0000, 0x1000, CRC(2066139d) SHA1(2eaf4cd6eb18eacb210892a85147e70db58bee48) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
+ ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "l_4m_b.bin", 0x0000, 0x0800, CRC(59f8054d) SHA1(793dba9bf5a5fe76328acdfb90815c243d2a65f1) )
+ ROM_LOAD( "l_4n_b.bin", 0x0800, 0x0800, CRC(672e4714) SHA1(92e5d379f4838ac1fa44d448ce7d142dae42102f) )
+ ROM_LOAD( "l_4r_b.bin", 0x1000, 0x0800, CRC(feaa59ee) SHA1(ecf95db5a20098804fc8bd59232c66e2e0ed3db4) )
+ ROM_LOAD( "l_4s_b.bin", 0x1800, 0x0800, CRC(20f2ef7e) SHA1(3bc482a38bf579033f50082748ee95205b0f673d) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) )
+ ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) )
+ ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) )
+ROM_END
+
+ROM_START( dkrdemo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "dkrdemo.5et", 0x0000, 0x1000, CRC(f9fdff29) SHA1(c2eb8f0ede8384369e17d8616f4ce063ae12b6c2) )
+ ROM_LOAD( "dkrdemo.5ct", 0x1000, 0x1000, CRC(f48cb898) SHA1(470b8bee7f55e1d828abc0b1ec4b423392c83a78) )
+ ROM_LOAD( "dkrdemo.5bt", 0x2000, 0x1000, CRC(660d43ec) SHA1(8bba334cec022ea851c4a82f6ecbc91c0708daea) )
+ ROM_LOAD( "dkrdemo.5at", 0x3000, 0x1000, CRC(e59d406c) SHA1(7698e319ae191bb8bf7deeea5c4f18da04d73f73) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
+ ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "l_4m_b.bin", 0x0000, 0x0800, CRC(59f8054d) SHA1(793dba9bf5a5fe76328acdfb90815c243d2a65f1) )
+ ROM_LOAD( "l_4n_b.bin", 0x0800, 0x0800, CRC(672e4714) SHA1(92e5d379f4838ac1fa44d448ce7d142dae42102f) )
+ ROM_LOAD( "l_4r_b.bin", 0x1000, 0x0800, CRC(feaa59ee) SHA1(ecf95db5a20098804fc8bd59232c66e2e0ed3db4) )
+ ROM_LOAD( "l_4s_b.bin", 0x1800, 0x0800, CRC(20f2ef7e) SHA1(3bc482a38bf579033f50082748ee95205b0f673d) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) )
+ ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) )
+ ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) )
+ROM_END
+
+ROM_START( kong2600 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "k2600.3n", 0x0000, 0x0800, CRC(0e6a2a6d) SHA1(7ebbcb78b269184cf588b5ad0b90f449d6d4e299) )
+ ROM_LOAD( "k2600.3p", 0x0800, 0x0800, CRC(ca57e0f4) SHA1(12c7821fc9f7fee276f7aa27dd0421f565b0f469) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "k2600.7c", 0x0000, 0x0800, CRC(cf450a43) SHA1(efa772f92b890181c0823b8113e069b7c4400ede) )
+ ROM_LOAD( "k2600.7d", 0x0800, 0x0800, CRC(d5046907) SHA1(1eb08ed67f6de04c4f3cb8f449503bbedc6207bc) )
+ ROM_LOAD( "k2600.7e", 0x1000, 0x0800, CRC(1539fe2a) SHA1(ea599987a2d65ffe2d09ca0951529bde2d31b1be) )
+ ROM_LOAD( "k2600.7f", 0x1800, 0x0800, CRC(77cc00ab) SHA1(7560bf4fd65c03f28f015abf64f83fc4ad7ae512) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "k2600.2k", 0x0000, 0x0100, CRC(1e82d375) SHA1(8f2da5cedd1f62be08555dd0eb929eb41da5079d) )
+ ROM_LOAD( "k2600.2j", 0x0100, 0x0100, CRC(2ab01dc8) SHA1(c25958d0706cabf997efe16fad71f454fc1ced0b) )
+ ROM_LOAD( "k2600.5f", 0x0200, 0x0100, CRC(44988665) SHA1(68c474fc81aff46eae6c9a7ac6ab80288303e291) )
+ROM_END
+
+ROM_START( nadkong )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "nadkong.5h", 0x0000, 0x0800, CRC(88772f5b) SHA1(0fd6cbb593e87b863eb317b063151ef3b81565c2) )
+ ROM_LOAD( "nadkong.3p", 0x0800, 0x0800, CRC(4c8aa728) SHA1(a277988d48f0d2f5d7cf9ef05eef222a36248cd3) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "nadkong.4m", 0x0000, 0x0800, CRC(2afbf9e6) SHA1(51e4f2f67903158b77574d55fcd17f302bc04a52) )
+ ROM_LOAD( "nadkong.4n", 0x0800, 0x0800, CRC(4f077877) SHA1(4f2c2bc693b0e8d36114024b6eaeb37a3b5d853d) )
+ ROM_LOAD( "nadkong.4r", 0x1000, 0x0800, CRC(d868da93) SHA1(c1c5d21f8c6a057fd5f54cab1eb4dbef06120405) )
+ ROM_LOAD( "nadkong.4s", 0x1800, 0x0800, CRC(7ebfe9f3) SHA1(75bd16e9590ada93b061dee3ec7916e1e1f113c3) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) )
+ ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) )
+ ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) )
+ROM_END
+
+ROM_START( dkong2m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
+ ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "l_4m_bm.bin", 0x0000, 0x0800, CRC(4b67ccf9) SHA1(8206436a0e5d1f7d5569f918eb87102f03b6cea3) )
+ ROM_LOAD( "l_4n_bm.bin", 0x0800, 0x0800, CRC(32a708cb) SHA1(2c8b4d5179f10fb2e8e9da2012419bdfb436a545) )
+ ROM_LOAD( "l_4r_bm.bin", 0x1000, 0x0800, CRC(22b5d5c4) SHA1(6bf39a5766786023cc18620283f12dbb9194cbfd) )
+ ROM_LOAD( "l_4s_bm.bin", 0x1800, 0x0800, CRC(b212b185) SHA1(03d3586e80cafd2440d03d60b7a4c8808b0c6caa) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) )
+ ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) )
+ ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) )
+ROM_END
+
+ROM_START( dkongpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 )
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "dkongpac.3n", 0x0000, 0x0800, CRC(1beba830) SHA1(04dce2464d0627b78d185924706f8ca38892d6d3) )
+ ROM_LOAD( "dkongpac.3p", 0x0800, 0x0800, CRC(94d61766) SHA1(f45f10d523fefe0581dde42450b713cb94ce2072) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "dkongpac.7c", 0x0000, 0x0800, CRC(065e2713) SHA1(a32d506a247a692a10962c9e47024d51bbb52d22) )
+ ROM_LOAD( "dkongpac.7d", 0x0800, 0x0800, CRC(a84b347d) SHA1(5a3e6fa3d520aef3c529e515d1e9fa464cbc6a78) )
+ ROM_LOAD( "dkongpac.7e", 0x1000, 0x0800, CRC(6ae6f476) SHA1(a79927a1c7511bf510107d9ba5fcc8f284541259) )
+ ROM_LOAD( "dkongpac.7f", 0x1800, 0x0800, CRC(9d293922) SHA1(14af1cd7f9854dec820c899d999be4623d0048b0) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "k2600.2k", 0x0000, 0x0100, CRC(1e82d375) SHA1(8f2da5cedd1f62be08555dd0eb929eb41da5079d) )
+ ROM_LOAD( "k2600.2j", 0x0100, 0x0100, CRC(2ab01dc8) SHA1(c25958d0706cabf997efe16fad71f454fc1ced0b) )
+ ROM_LOAD( "k2600.5f", 0x0200, 0x0100, CRC(44988665) SHA1(68c474fc81aff46eae6c9a7ac6ab80288303e291) )
+ROM_END
+
+ROM_START( dkrainbow )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) )
+ ROM_LOAD( "c_5ct_g.bin", 0x1000, 0x1000, CRC(5ec461ec) SHA1(acb11a8fbdbb3ab46068385fe465f681e3c824bd) )
+ ROM_LOAD( "c_5bt_g.bin", 0x2000, 0x1000, CRC(1c97d324) SHA1(c7966261f3a1d3296927e0b6ee1c58039fc53c1f) )
+ ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
+
+ ROM_REGION( 0x1800, "soundcpu", 0 ) /* sound */
+ ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
+ ROM_RELOAD( 0x0800, 0x0800 )
+ ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
+ ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "l_4m_b.bin", 0x0000, 0x0800, CRC(59f8054d) SHA1(793dba9bf5a5fe76328acdfb90815c243d2a65f1) )
+ ROM_LOAD( "l_4n_b.bin", 0x0800, 0x0800, CRC(672e4714) SHA1(92e5d379f4838ac1fa44d448ce7d142dae42102f) )
+ ROM_LOAD( "l_4r_b.bin", 0x1000, 0x0800, CRC(feaa59ee) SHA1(ecf95db5a20098804fc8bd59232c66e2e0ed3db4) )
+ ROM_LOAD( "l_4s_b.bin", 0x1800, 0x0800, CRC(20f2ef7e) SHA1(3bc482a38bf579033f50082748ee95205b0f673d) )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "rainbow_c.2k", 0x0000, 0x0100, CRC(c0dce2f5) SHA1(d2195886f509359ac483fd6c96a0477eef514929) )
+ ROM_LOAD( "rainbow_c.2j", 0x0100, 0x0100, CRC(03c3153f) SHA1(611267c0a205c9fe258451b7b5545c7a3d2fb541) )
+ ROM_LOAD( "rainbow_v.5e", 0x0200, 0x0100, CRC(d9f3005a) SHA1(c4f09f27f5c78d95d31e6af1b8a977b86bbab9a4) )
+ROM_END
+
+
+
+GAME( 2013, dkong2m, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Hack", "Donkey Kong (2 marios)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, dkongex, dkong, dkong2b, dkongex, driver_device, 0, ROT90, "Jeff Kulczycki", "Donkey Kong Foundry", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, dkongp, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Don Hodges", "Donkey Kong (patched)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, dkongpac, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Tim Appleton", "Donkey Kong (Pacman graphics)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, dkrainbow, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Sock Master", "Rainbow Donkey Kong", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, dkrdemo, dkong, dkong2b, dkrdemo, driver_device, 0, ROT90, "Sock Master", "Donkey Kong Remix demo 1.8", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kong2600, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Vic Twenty George", "Donkey Kong (2600 graphics)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, nadkong, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Hack", "Naked Donkey Kong", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/docastle.cpp b/docs/release/src/hbmame/drivers/docastle.cpp
new file mode 100644
index 00000000000..9062186c65e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/docastle.cpp
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/docastle.cpp"
+
+ROM_START( sdreturn )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "2764.p1", 0x0000, 0x2000, CRC(95c86f8e) SHA1(9fe44911e0aa8d4c7299472a31c401e064d63d17) )
+ ROM_LOAD( "2764.l1", 0x4000, 0x2000, CRC(e9a65ba7) SHA1(fbee57d68352fd4062aac55cd1070f001714d0a3) )
+ ROM_LOAD( "2764.k1", 0x6000, 0x2000, CRC(b1195d3d) SHA1(095ad2ee1f53be3203830263cb0c9efbe4710c56) )
+ ROM_LOAD( "2764.n1", 0x8000, 0x2000, CRC(6a8160d1) SHA1(12101c351bf800319172c459b5e7c69cb5603806) )
+
+ ROM_REGION( 0x10000, "slave", 0 )
+ ROM_LOAD( "27128.p7", 0x0000, 0x4000, CRC(8b06d461) SHA1(2434478810c6301197997be76505f5fc6beba5d3) )
+
+ ROM_REGION( 0x10000, "cpu3", 0 )
+ ROM_LOAD( "bprom2.bin", 0x0000, 0x0200, CRC(2747ca77) SHA1(abc0ca05925974c4b852827605ee2f1caefb8524) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "27128.a3", 0x0000, 0x4000, CRC(4be96dcf) SHA1(f9b45e6297cbbc4d1ee2df7ac377c5daf5181b0f) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_LOAD( "sdreturn.m4", 0x0000, 0x2000, CRC(e8779d04) SHA1(f185efbdc7410e3adba85de482e1b06778b17fe9) )
+ ROM_LOAD( "sdreturn.l4", 0x2000, 0x2000, CRC(bc217d6c) SHA1(abeaea49aad85f62943d7a3c30c8655fb29d3e62) )
+ ROM_LOAD( "sdreturn.j4", 0x4000, 0x2000, CRC(04824549) SHA1(5056db06c06d76580a85fc65d1e473e77eb48ee9) )
+ ROM_LOAD( "sdreturn.h4", 0x6000, 0x2000, CRC(c23c36c2) SHA1(22461c04ea2cfd39c395ca7e42a50636fb1c3625) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "dorunrun.clr", 0x0000, 0x0100, CRC(d5bab5d5) SHA1(7a465fe30b6008793d33f6e07086c89111e1e407) )
+ROM_END
+
+GAME( 2002, sdreturn, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Hack", "Sticky Do Returns", MACHINE_SUPPORTS_SAVE )
+
diff --git a/docs/release/src/hbmame/drivers/dotrikun.cpp b/docs/release/src/hbmame/drivers/dotrikun.cpp
new file mode 100644
index 00000000000..a57f9c06739
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/dotrikun.cpp
@@ -0,0 +1,208 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/dotrikun.cpp"
+//#include "screen.h"
+#include "speaker.h"
+
+// http://www.chrismcovell.com/dottorikun.html
+
+ROM_START( dotrimjr )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "dotrimjr.bin", 0x0000, 0x4000, CRC(4ba6d2f5) SHA1(db805e9121ecbd41fac4593b58d7f071e7dbc720) )
+ROM_END
+
+GAMEL( 2016, dotrimjr, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Chris Covell", "Dottori-Man Jr", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun )
+
+
+/***************************************************************************
+
+Minesweeper driver, originally for Dotrikun hardware
+
+Driver by Robbbert - April 2007
+
+CPU : Z-80 (4MHz)
+SOUND : (none)
+
+****************************************************************************
+
+Notes from the Readme files
+
+MINE SWEEPER for SEGA's Dottorikun PCB
+
+Distributed by Arcade roms from Japan (j-rom)
+
+This game is the Dottorikun port of the Windows' Mine Sweeper.
+It has "Time Limit", "more Stage", etc...
+
+Usage:
+
+You must burn DT_MINEJ.BIN to 27128 and replace it to the ROM of
+Dottorikun's board. I assume you can find this board easily...
+
+Rules:
+
+* The timer limit is 999
+* If you hit a mine, many counts added to the timer
+* There are no mines at the start point and the corner
+
+Option:
+
+This game supports BACKUP and SOUND. If you want to play
+the sound correctly, you must modify the board. If not,
+some noise appears on the screen.
+
+* THIS MODIFY IS QUITE DIFFICULT, USE AT YOUR OWN RISK! *
+* AND DON'T ASK ABOUT THIS MODIFYING INFORMATION! *
+
+Backup Support:
+
+* You have to install the RESET-IC (PST518, etc.)
+* Check the power on/off
+* Install the Lithium battery or super capacity condensor
+* Connect the inverted RESET signal to RAM's 18pin (use 74HC04, etc.)
+ (You must backup both RAM and HC04)
+
+Sound Support:
+
+You must get the sound board of Wing War (Guns'n Wings).
+You can hear the sonic sound if you use this sound board!
+
+* Cut IC17's 10pin from the board
+* Use shielded cable, Connect CN2's 6pin on the sound board to the above pin
+* And the shield connects GND and CN2's 5pin
+* Connect IC17 10pin's board side to the GND
+* This sound board has 2 set of STEREO, you have to mix them
+
+Secrets:
+
+* Push start when the power on : RAM CLEAR
+* right+up lever and push 1 and 2 button : SOUND TEST
+
+* left+up and push 1, 2, COIN, START when the checking Backup RAM is
+ finished, you can see the Ending scene.
+
+* Push 1 and 2 when the Ending scene is changed, you can see the
+ secret picture (^^)
+
+Robbbert's notes:
+
+In the above, when they say 1 and 2, they mean Ctrl and Alt
+By using the debugger, you can see the sound test by setting the pc to 105F,
+and the ending scene by setting the pc to 0F30.
+
+- Backup nvram added (April 2007)
+- Hooked port 20 to the colour generator (July 2008)
+- Hooked up a sound click to port 20 (May 2010)
+- Merged back into dotrikun driver (August 2016)
+
+Colours:
+ White (normal play / attract mode)
+ Yellow (new record time)
+ Green (new record level - must be at least level 3)
+ Purple (stepped on a bomb)
+ Red (game over)
+
+***************************************************************************/
+#include "machine/nvram.h"
+#include "sound/beep.h"
+
+class mineswp_state : public dotrikun_state
+{
+public:
+ mineswp_state(const machine_config &mconfig, device_type type, const char *tag)
+ : dotrikun_state(mconfig, type, tag)
+ , m_beep(*this, "beeper")
+ { }
+
+ DECLARE_WRITE8_MEMBER(mineswp_color_w);
+private:
+ virtual void machine_start() override;
+ required_device<beep_device> m_beep;
+};
+
+
+/*******************************************************************
+
+ Palette Setting.
+
+*******************************************************************/
+
+
+WRITE8_MEMBER( mineswp_state::mineswp_color_w )
+{
+ // d0-d2: fg palette
+ // d3: sound bit
+ // d4-d7: N/C
+ m_screen->update_now();
+ m_color = data & 7;
+ m_beep->set_state(BIT(data, 3));
+}
+
+
+
+/*******************************************************************
+
+ Address maps
+
+*******************************************************************/
+static ADDRESS_MAP_START( mineswp_map, AS_PROGRAM, 8, mineswp_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x8000, 0x85ff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
+ AM_RANGE(0x8600, 0x86df) AM_RAM
+ AM_RANGE(0x86e0, 0x86ff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0x8700, 0x87ff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mineswp_io, AS_IO, 8, mineswp_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ_PORT("INPUTS") AM_WRITE(mineswp_color_w)
+ADDRESS_MAP_END
+
+
+
+
+/*******************************************************************
+
+ Machine driver
+
+*******************************************************************/
+void mineswp_state::machine_start()
+{
+ m_beep->set_state(0);
+}
+
+static MACHINE_CONFIG_DERIVED_CLASS( mineswp, dotrikun, mineswp_state )
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mineswp_map)
+ MCFG_CPU_IO_MAP(mineswp_io)
+
+ MCFG_NVRAM_ADD_1FILL("nvram")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("beeper", BEEP, 950) // guess
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( mineswp )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "mineswp.bin", 0x0000, 0x4000, CRC(1cece483) SHA1(c425a09b640721c9a5b499cdb79848dc18ee66b9) )
+ // fix programming error
+ ROM_FILL(0x0005, 1, 0x31)
+ ROM_FILL(0x0006, 1, 0x00)
+ ROM_FILL(0x0007, 1, 0x88)
+ ROM_FILL(0x0008, 1, 0xCD)
+ ROM_FILL(0x0009, 1, 0xA1)
+ ROM_FILL(0x000A, 1, 0x03)
+ROM_END
+
+
+GAMEL( 1998, mineswp, 0, mineswp, dotrikun, driver_device, 0, ROT0, "J-Rom", "Mine Sweeper [h]", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW, layout_dotrikun )
diff --git a/docs/release/src/hbmame/drivers/ertictac.cpp b/docs/release/src/hbmame/drivers/ertictac.cpp
new file mode 100644
index 00000000000..308248bcc62
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ertictac.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/ertictac.cpp"
+
+// worked in 0.128, not now
+ROM_START( armdemo )
+ ROM_REGION(0x800000, "maincpu", 0 )
+ ROM_LOAD32_BYTE( "armdemo.01", 0x00000, 0x10000, CRC(62b840be) SHA1(148b30b1e851e1c012482dde27f4159d1ac56a15) )
+ ROM_LOAD32_BYTE( "armdemo.02", 0x00001, 0x10000, CRC(78d41ef7) SHA1(db7b33e91507314371e6b21a5b92bc259dc06559) )
+ ROM_LOAD32_BYTE( "armdemo.03", 0x00002, 0x10000, CRC(efd0057f) SHA1(61baccc350623aca6d8b940816459372368c31ef) )
+ ROM_LOAD32_BYTE( "armdemo.04", 0x00003, 0x10000, CRC(55eb17b2) SHA1(c55614124214a0ad5617bfbab419f340ee48e6ed) )
+ // note all instructions are 4 bytes, and the bytes are in reverse order to what you see in the debugger
+ ROM_FILL(0x423, 1, 0x03) // set up control (no video without this)
+ ROM_FILL(0x422, 1, 0x6E)
+ ROM_FILL(0x421, 1, 0x05)
+ ROM_FILL(0x420, 1, 0xA4)
+ ROM_FILL(0x427, 1, 0xE5)
+ ROM_FILL(0x426, 1, 0x1F)
+ ROM_FILL(0x425, 1, 0x00)
+ ROM_FILL(0x424, 1, 0x0C)
+ ROM_FILL(0x42B, 1, 0xE5)
+ ROM_FILL(0x42A, 1, 0x80)
+ ROM_FILL(0x428, 2, 0x00)
+ ROM_FILL(0x42F, 1, 0xE3) // i/o byte (has no effect)
+ ROM_FILL(0x42E, 1, 0xA0)
+ ROM_FILL(0x42D, 1, 0x06)
+ ROM_FILL(0x42C, 1, 0x33)
+ ROM_FILL(0x433, 1, 0xE2)
+ ROM_FILL(0x432, 1, 0x80)
+ ROM_FILL(0x431, 1, 0x08)
+ ROM_FILL(0x430, 1, 0x05)
+ ROM_FILL(0x437, 1, 0xE2)
+ ROM_FILL(0x436, 1, 0x80)
+ ROM_FILL(0x435, 1, 0x00)
+ ROM_FILL(0x434, 1, 0x18)
+ ROM_FILL(0x43B, 1, 0xE3)
+ ROM_FILL(0x43A, 1, 0xA0)
+ ROM_FILL(0x439, 1, 0x10)
+ ROM_FILL(0x438, 1, 0x00)
+ ROM_FILL(0x43F, 1, 0xE5)
+ ROM_FILL(0x43E, 1, 0xC0)
+ ROM_FILL(0x43D, 1, 0x10)
+ ROM_FILL(0x43C, 1, 0x00)
+ ROM_FILL(0x443, 1, 0xEA) // back to normal programming
+ ROM_FILL(0x442, 1, 0xFF)
+ ROM_FILL(0x441, 1, 0xFE)
+ ROM_FILL(0x440, 1, 0xF7)
+ ROM_FILL(0x001, 1, 0x01) // jump to this lot
+
+ ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
+ROM_END
+
+GAME( 1990, armdemo, 0, ertictac, ertictac, driver_device, 0, ROT0, "Charles Doty", "Demo - ARM" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/docs/release/src/hbmame/drivers/exerion.cpp b/docs/release/src/hbmame/drivers/exerion.cpp
new file mode 100644
index 00000000000..27e7adcdd15
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/exerion.cpp
@@ -0,0 +1,66 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/exerion.cpp"
+
+ROM_START( exeriongr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "exriongr.07", 0x0000, 0x2000, CRC(0ade934a) SHA1(a949aa66f27876ca439b799a9918841f7d8d3115) )
+ ROM_LOAD( "exriongr.08", 0x2000, 0x2000, CRC(a469f93e) SHA1(7e800e4c0dce2b9c9525dc1667ca13f1b2844d9b) )
+ ROM_LOAD( "exriongr.09", 0x4000, 0x2000, CRC(f0a8d5db) SHA1(df0f18ebef27a70ef420903a02ec5ce3c43d1d8b) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "exerion.05", 0x0000, 0x2000, CRC(32f6bff5) SHA1(a4d0289f9d1d9eea7ca9a32a0616af48da74b401) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "exriongr.06", 0x00000, 0x2000, CRC(e18dc7c6) SHA1(1ec9bb9aa1552e4d7dbe16435f98209813590211) )
+
+ ROM_REGION( 0x04000, "gfx2", 0 )
+ ROM_LOAD( "exerion.11", 0x00000, 0x2000, CRC(f0633a09) SHA1(8989bcb12abadde34777f7c189cfa6e2dfe92d62) )
+ ROM_LOAD( "exerion.10", 0x02000, 0x2000, CRC(80312de0) SHA1(4fa3bb9d5c62e41a54e8909f8d3b47637137e913) )
+
+ ROM_REGION( 0x08000, "gfx3", 0 )
+ ROM_LOAD( "exerion.03", 0x00000, 0x2000, CRC(790595b8) SHA1(8016ac2394b25db38e962bcff4805380082f6683) )
+ ROM_LOAD( "exerion.04", 0x02000, 0x2000, CRC(d7abd0b9) SHA1(ca6413ecd324cf84e11b703a4eda2c1e6d28ff15) )
+ ROM_LOAD( "exriongr.01", 0x04000, 0x2000, CRC(b18009ea) SHA1(6a7abbe60e493a125b5d0e4d7f114b15758e4c6e) )
+ ROM_LOAD( "exerion.02", 0x06000, 0x2000, CRC(a7ecbb70) SHA1(3c359d5bb21290a45d3eb18fea2b1f9439b931be) )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "exerion.e1", 0x0000, 0x0020, CRC(2befcc20) SHA1(a24d3f691413378fde545a6ddcef7e5118e74019) )
+ ROM_LOAD( "exerion.i8", 0x0020, 0x0100, CRC(31db0e08) SHA1(1041a778e86d3fe6f057cf40a0a08b30760f3887) )
+ ROM_LOAD( "exerion.h10", 0x0120, 0x0100, CRC(63b4c555) SHA1(30243041be4fa77ada71e8b29d721cad51640c29) )
+ ROM_LOAD( "exerion.i3", 0x0220, 0x0100, CRC(fe72ab79) SHA1(048a72e6db4768df687df927acaa70ef906b3dc0) )
+ ROM_LOAD( "exerion.k4", 0x0320, 0x0100, CRC(ffc2ba43) SHA1(03be1c41d6ac3fc11439caef04ef5ffa60d6aec4) )
+ROM_END
+
+ROM_START( exerionj )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "exerion.07", 0x0000, 0x2000, CRC(4c78d57d) SHA1(ac702e9ad2bc05493fb1355858667c31c36acfe4) )
+ ROM_LOAD( "exerion.08", 0x2000, 0x2000, CRC(dcadc1df) SHA1(91388f617cfaa4289ca1c84c697fcfdd8834ae15) )
+ ROM_LOAD( "exerion.09", 0x4000, 0x2000, CRC(34cc4d14) SHA1(511c9de038f7bcaf6f7c96f2cbbe50a80673fa72) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "exerion.05", 0x0000, 0x2000, CRC(32f6bff5) SHA1(a4d0289f9d1d9eea7ca9a32a0616af48da74b401) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "exerion.06", 0x00000, 0x2000, CRC(435a85a4) SHA1(f6846bfee11df754405d4d796e7d8ac0321b6eb6) )
+
+ ROM_REGION( 0x04000, "gfx2", 0 )
+ ROM_LOAD( "exerion.11", 0x00000, 0x2000, CRC(f0633a09) SHA1(8989bcb12abadde34777f7c189cfa6e2dfe92d62) )
+ ROM_LOAD( "exerion.10", 0x02000, 0x2000, CRC(80312de0) SHA1(4fa3bb9d5c62e41a54e8909f8d3b47637137e913) )
+
+ ROM_REGION( 0x08000, "gfx3", 0 )
+ ROM_LOAD( "exerion.03", 0x00000, 0x2000, CRC(790595b8) SHA1(8016ac2394b25db38e962bcff4805380082f6683) )
+ ROM_LOAD( "exerion.04", 0x02000, 0x2000, CRC(d7abd0b9) SHA1(ca6413ecd324cf84e11b703a4eda2c1e6d28ff15) )
+ ROM_LOAD( "exerion.01", 0x04000, 0x2000, CRC(5bb755cb) SHA1(ec92c518c116a78dbb23381468cefb3f930212cc) )
+ ROM_LOAD( "exerion.02", 0x06000, 0x2000, CRC(a7ecbb70) SHA1(3c359d5bb21290a45d3eb18fea2b1f9439b931be) )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "exerionj.e1", 0x0000, 0x0020, CRC(60cec362) SHA1(2422e894e2def2ab31f4b6c14fabbe443bd495e6) )
+ ROM_LOAD( "exerion.i8", 0x0020, 0x0100, CRC(31db0e08) SHA1(1041a778e86d3fe6f057cf40a0a08b30760f3887) )
+ ROM_LOAD( "exerion.h10", 0x0120, 0x0100, CRC(63b4c555) SHA1(30243041be4fa77ada71e8b29d721cad51640c29) )
+ ROM_LOAD( "exerion.i3", 0x0220, 0x0100, CRC(fe72ab79) SHA1(048a72e6db4768df687df927acaa70ef906b3dc0) )
+ ROM_LOAD( "exerion.k4", 0x0320, 0x0100, CRC(ffc2ba43) SHA1(03be1c41d6ac3fc11439caef04ef5ffa60d6aec4) )
+ROM_END
+
+GAME( 2004, exeriongr, exerion, exerion, exerion, exerion_state, exerion, ROT90, "GreekRoms", "Exerion (Greek)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exerionj, exerion, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco", "Exerion (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/exidy.cpp b/docs/release/src/hbmame/drivers/exidy.cpp
new file mode 100644
index 00000000000..6bc5c5da4f1
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/exidy.cpp
@@ -0,0 +1,71 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/exidy.cpp"
+
+
+
+/*********************
+ *
+ * Targ Test Rom
+ *
+ *********************/
+
+ROM_START( targtest )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hrl10a-1", 0x1800, 0x0800, CRC(969744e1) SHA1(e123bdb02b3b5f6a59c1e7c9ef557fe6bb19c62c) )
+ ROM_LOAD( "hrl9a-1", 0x2000, 0x0800, CRC(a177a72d) SHA1(0e705e3e32021e55af4414fa0e2ccbc4980ee848) )
+ ROM_LOAD( "hrl8a-1", 0x2800, 0x0800, CRC(6e6928a5) SHA1(10c725b27225ac5aad8639b081df68dd61522cf2) )
+ ROM_LOAD( "targtest.bin", 0x3000, 0x0800, CRC(22ae0198) SHA1(0139e3c36e4e415641cefae900347dcf81f00716) )
+ ROM_LOAD( "hrl6a-1", 0x3800, 0x0800, CRC(a60a1bfc) SHA1(17c0e67e1a0b263b57d70a148cc5d5099fecbb40) )
+
+ ROM_REGION( 0x0400, "gfx1", 0 )
+ ROM_LOAD( "hrl11d-1", 0x0000, 0x0400, CRC(9f03513e) SHA1(aa4763e49df65e5686a96431543580b8d8285893) )
+
+ ROM_REGION( 0x0140, "proms", 0 )
+ ROM_LOAD( "hrl5c-1", 0x0000, 0x0100, CRC(a24290d0) SHA1(5f2888d168de874021b51c5d19a62fb8165e4454) )
+ ROM_LOAD( "stl6d-1", 0x0100, 0x0020, CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) )
+ ROM_LOAD( "hrl14h-1", 0x0120, 0x0020, CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) )
+
+ ROM_REGION( 0x0020, "targ", 0 )
+ ROM_LOAD( "hra2b-1", 0x0000, 0x0020, CRC(38e8024b) SHA1(adf1c1770695f7614c95eceb803f662c5b096a76) )
+ROM_END
+
+/*************************************
+ *
+ * Teeter Torture free play hack
+ *
+ *************************************/
+ROM_START( teetertfp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "teetertfp.11", 0xa000, 0x1000, CRC(550375ab) SHA1(ae262f30def469cd56fc2f10336b25f766fc1320) )
+ ROM_LOAD( "10a-cpu", 0xb000, 0x1000, CRC(3ae7e445) SHA1(e511ce4c553ac58e87b6ee623f8c42d7653de972) )
+ ROM_LOAD( "teetertfp.9", 0xc000, 0x1000, CRC(9fab266f) SHA1(b6ad26740f9c87c49b4df122819d1a335fe5545e) )
+ ROM_LOAD( "8a-cpu", 0xd000, 0x1000, CRC(68de66e7) SHA1(70a0cc950f16f2c408fae717e6fdb75eb0fd8039) )
+ ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(84491333) SHA1(db9f8e4c49057a4574a3784d71e627da7f7a4b44) )
+ ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(3600d465) SHA1(84d633e042f73bfd6bf4a4d0ffee1cd2027c65d2) )
+
+ ROM_REGION( 0x8000, "audiocpu", 0 )
+ ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) )
+ ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) )
+ ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) )
+ ROM_LOAD( "6a-ac", 0x7000, 0x0800, CRC(80f3357a) SHA1(f1ee638251e8676a526e6367c11866b1d52f5910) )
+ ROM_LOAD( "7a-ac", 0x7800, 0x0800, CRC(466addc7) SHA1(0230b5365d6aeee3ca47666a9eadee4141de125b) )
+
+ ROM_REGION( 0x0800, "gfx1", 0 )
+ ROM_LOAD( "11d-cpu", 0x0000, 0x0800, CRC(0fe70b00) SHA1(6068be263d7a8e6b71af6f4dceec40bb8d246376) )
+
+ ROM_REGION( 0x140, "proms", 0 )
+ ROM_LOAD_OPTIONAL( "tt14h.123", 0x0000, 0x0020, CRC(f76b4fcf) SHA1(197e0cc508ffeb5cefa4046bdfb158939d598225) )
+ ROM_LOAD_OPTIONAL( "tt5c.129", 0x0020, 0x0100, CRC(43b35bb7) SHA1(0a0cecea8faff9f3ff4c2ceda0b5b25e8e1cd667) )
+ ROM_LOAD_OPTIONAL( "tt6d.123", 0x0120, 0x0020, CRC(e26f9053) SHA1(eec35b6aa2c2d305418306bf4a1754a0583f109f) )
+ROM_END
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+GAME( 2008, targtest, targ, targ, targ, exidy_state, targ, ROT0, "Timothy Shiels", "Targ Test Rom V1.0", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, teetertfp, teetert, teetert, teetert, exidy_state, teetert, ROT0, "DogP", "Teeter Torture (free play hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/fcrash.cpp b/docs/release/src/hbmame/drivers/fcrash.cpp
new file mode 100644
index 00000000000..935faf86602
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/fcrash.cpp
@@ -0,0 +1,3156 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/* Final Crash & other CPS1 bootlegs */
+
+/*
+
+Final Crash is a bootleg of Final Fight
+
+Final Fight is by Capcom and runs on CPS1 hardware
+The bootleg was manufactured by Playmark of Italy
+
+this driver depends heavily on cps1.c, but has been
+kept apart in an attempt to keep cps1.c clutter free
+
+Sound is very different from CPS1.
+
+---
+
+Final Crash (bootleg of final fight)
+
+1x 68k
+1x z80
+2x ym2203
+2x oki5205
+1x osc 10mhz
+1x osc 24mhz
+
+eproms:
+1.bin sound eprom
+from 2.bin to 9.bin program eproms
+10.bin to 25.bin gfx eproms
+
+---
+
+kodb has various graphical issues, mainly with old info not being cleared away.
+Also, it should be using a vblank irq value of 4. This triggers the following bootleg read/writes;
+ - IN1 is read at 0x992000
+ - IN0 is read of 0x992008
+ - dips continue to be read at 0x80001a
+ - sound command is wrote at 0x992006
+ - scroll 1Y is wrote at 0x980000
+ - scroll 1X is wrote at 0x980002
+ - scroll 2Y is wrote at 0x980004
+ - scroll 2X is wrote at 0x980006
+ - scroll 3Y is wrote at 0x980008
+ - scroll 3X is wrote at 0x98000a
+ - the layer enable and layer mask writes continue at 0x98000c and 0x980020-2
+
+These read/writes are identical to those used by a Knights of the Round bootleg which uses the all sf2mdt sound
+hardware. This set is currently non-working.
+
+This also prevents the game from toggling the sprite address at m_cps_a_regs[0], similar to other bootlegs.
+Currently the game is working somewhat, but only using the code left over from the original. If anyone wants to
+do any development work on the set, (eg, find the sprite clearing issue), then this should be changed as the game
+likely won't write any sprite clearing values otherwise.
+
+None of this is hooked up currently due to issues with row scroll on the scroll2 layer.
+
+
+
+Status of each game:
+--------------------
+cawingb2, cawingbl: ok
+
+dinopic: no sound
+
+dinopic2: no sound, one bad gfx rom. Copying 8.bin from dinopic fixes it.
+
+fcrash, kodb: old sprites show on next screen. Patch used.
+
+kodb: gems are missing.
+
+knightsb: sprites are entangled with the front layer.
+
+punipic, punipic2: no sound. Problems in Central Park. Patches used.
+
+punipic3: same as punipic, and doors are missing.
+
+sf2m1: crowd is missing. Plane's tail comes off a bit. Patch used.
+
+sf2mdt, sf2mdta: ok
+
+sgyxz: garbage left behind. A priority problem can be seen in 3rd demo where
+ the fighters walk through the crowd instead of behind.
+
+slampic: no sound. A priority problem between sprites and crowd.
+
+*/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "cpu/m68000/m68000.h"
+#include "includes/cps1.h"
+#include "sound/2203intf.h"
+#include "sound/msm5205.h"
+#include "sound/ym2151.h"
+#include "sound/okim6295.h"
+#include "machine/eepromser.h"
+
+WRITE16_MEMBER( cps_state::fcrash_soundlatch_w )
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ m_soundlatch->write(space, 0, data & 0xff);
+ m_audiocpu->set_input_line(0, HOLD_LINE);
+ }
+}
+
+WRITE16_MEMBER(cps_state::cawingbl_soundlatch_w)
+{
+ if (ACCESSING_BITS_8_15)
+ {
+ m_soundlatch->write(space, 0, data >> 8);
+ m_audiocpu->set_input_line(0, HOLD_LINE);
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); /* boost the interleave or some voices get dropped */
+ }
+}
+
+WRITE8_MEMBER( cps_state::fcrash_snd_bankswitch_w )
+{
+ m_msm_1->set_output_gain(0, (data & 0x08) ? 0.0 : 1.0);
+ m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0);
+
+ membank("bank1")->set_entry(data & 0x07);
+}
+
+WRITE8_MEMBER( cps_state::sf2mdt_snd_bankswitch_w )
+{
+ m_msm_1->set_output_gain(0, (data & 0x20) ? 0.0 : 1.0);
+ m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0);
+
+ membank("bank1")->set_entry(data & 0x07);
+}
+
+WRITE8_MEMBER( cps_state::knightsb_snd_bankswitch_w )
+{
+ m_msm_1->set_output_gain(0, (data & 0x20) ? 0.0 : 1.0);
+ m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0);
+
+ membank("bank1")->set_entry(data & 0x0f);
+}
+
+WRITE_LINE_MEMBER(cps_state::m5205_int1)
+{
+ m_msm_1->data_w(m_sample_buffer1 & 0x0f);
+ m_sample_buffer1 >>= 4;
+ m_sample_select1 ^= 1;
+ if (m_sample_select1 == 0)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
+WRITE_LINE_MEMBER(cps_state::m5205_int2)
+{
+ m_msm_2->data_w(m_sample_buffer2 & 0x0f);
+ m_sample_buffer2 >>= 4;
+ m_sample_select2 ^= 1;
+}
+
+
+
+WRITE8_MEMBER( cps_state::fcrash_msm5205_0_data_w )
+{
+ m_sample_buffer1 = data;
+}
+
+WRITE8_MEMBER( cps_state::fcrash_msm5205_1_data_w )
+{
+ m_sample_buffer2 = data;
+}
+
+/* not verified */
+#define CPS1_ROWSCROLL_OFFS (0x20/2) /* base of row scroll offsets in other RAM */
+
+WRITE16_MEMBER(cps_state::dinopic_layer_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ m_cps_a_regs[0x0e / 2] = data;
+ break;
+ case 0x01:
+ m_cps_a_regs[0x0c / 2] = data;
+ break;
+ case 0x02:
+ m_cps_a_regs[0x12 / 2] = data;
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x03:
+ m_cps_a_regs[0x10 / 2] = data;
+ break;
+ case 0x04:
+ m_cps_a_regs[0x16 / 2] = data;
+ break;
+ case 0x05:
+ m_cps_a_regs[0x14 / 2] = data;
+ break;
+ default:
+ logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+
+ }
+}
+
+WRITE16_MEMBER( cps_state::dinopic_layer2_w )
+{
+ m_cps_a_regs[0x06 / 2] = data;
+}
+
+WRITE16_MEMBER(cps_state::kodb_layer_w)
+{
+ /* layer enable and mask 1&2 registers are written here - passing them to m_cps_b_regs for now for drawing routines */
+ if (offset == 0x06)
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ else
+ if (offset == 0x10)
+ m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
+ else
+ if (offset == 0x11)
+ m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
+}
+
+WRITE16_MEMBER(cps_state::knightsb_layer_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ m_cps_a_regs[0x0e / 2] = data;
+ break;
+ case 0x01:
+ m_cps_a_regs[0x0c / 2] = data;
+ break;
+ case 0x02:
+ m_cps_a_regs[0x12 / 2] = data;
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x03:
+ m_cps_a_regs[0x10 / 2] = data;
+ break;
+ case 0x04:
+ m_cps_a_regs[0x16 / 2] = data;
+ break;
+ case 0x05:
+ m_cps_a_regs[0x14 / 2] = data;
+ break;
+ case 0x06:
+ {
+ switch (data)
+ {
+ case 0x0000:
+ case 0x001f:
+ case 0x00ff:
+ data = 0x12f2;
+ break;
+ case 0x2000:
+ data = 0x06f2;
+ break;
+ case 0xa000:
+ data = 0x24d0;
+ break;
+ default:
+ printf ("Unknown control word = %X\n",data);
+ data = 0x12c0;
+ }
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ break;
+ }
+ case 0x10:
+ m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
+ break;
+ case 0x11:
+ m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
+ break;
+ case 0x12:
+ m_cps_b_regs[m_layer_mask_reg[3] / 2] = data;
+ }
+}
+
+WRITE16_MEMBER(cps_state::punipic_layer_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ m_cps_a_regs[0x0e / 2] = data;
+ break;
+ case 0x01:
+ m_cps_a_regs[0x0c / 2] = data;
+ break;
+ case 0x02:
+ m_cps_a_regs[0x12 / 2] = data;
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x03:
+ m_cps_a_regs[0x10 / 2] = data + 0xffc0;
+ break;
+ case 0x04:
+ m_cps_a_regs[0x16 / 2] = data;
+ break;
+ case 0x05:
+ m_cps_a_regs[0x14 / 2] = data;
+ break;
+ case 0x06:
+ switch (data)
+ {
+ case 0x14:
+ case 0x54:
+ m_cps_a_regs[0x04 / 2] = 0x9100;
+ break;
+ case 0x24:
+ case 0x64:
+ m_cps_a_regs[0x04 / 2] = 0x90c0;
+ break;
+ case 0x3c:
+ case 0x7c:
+ m_cps_a_regs[0x04 / 2] = 0x9180;
+ break;
+ }
+
+ m_cps_a_regs[0x08 / 2] = m_mainram[0xdb90 / 2]; // fixes split objects
+ break;
+ case 0x07:
+ // unknown
+ break;
+ default:
+ logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+
+ }
+}
+
+WRITE16_MEMBER(cps_state::sf2m1_layer_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ m_cps_a_regs[0x0e / 2] = data;
+ break;
+ case 0x01:
+ m_cps_a_regs[0x0c / 2] = data;
+ break;
+ case 0x02:
+ m_cps_a_regs[0x12 / 2] = data;
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x03:
+ m_cps_a_regs[0x10 / 2] = data;
+ break;
+ case 0x04:
+ m_cps_a_regs[0x16 / 2] = data;
+ break;
+ case 0x05:
+ m_cps_a_regs[0x14 / 2] = data;
+ break;
+ case 0x06:
+ switch (data)
+ {
+ case 0:
+ data = 0x078e;
+ break;
+ case 1:
+ data = 0x12c0;
+ break;
+ case 2:
+ data = 0x06ce;
+ break;
+ case 3:
+ data = 0x09ce;
+ break;
+ case 4:
+ data = 0x12ce;
+ break;
+ case 5:
+ data = 0x0b4e;
+ break;
+ }
+ case 0xb3:
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ break;
+ case 0x0b:
+ case 0x1b:
+ m_cps_a_regs[0x06 / 2] = data;
+ break;
+ default:
+ logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+
+ }
+}
+
+WRITE16_MEMBER(cps_state::sf2mdt_layer_w)
+{
+ /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
+ the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
+ supported by the fact that the game doesn't write the table address anywhere */
+
+ switch (offset)
+ {
+ case 0x06:
+ m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
+ break;
+ case 0x07:
+ m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
+ break;
+ case 0x08:
+ m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
+ break;
+ case 0x09:
+ m_cps_a_regs[0x0c / 2] = data + 0xffca; /* scroll 1x */
+ break;
+ case 0x0a:
+ m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x0b:
+ m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
+ break;
+ case 0x26:
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ }
+}
+
+WRITE16_MEMBER(cps_state::sf2mdta_layer_w)
+{
+ /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
+ the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
+ supported by the fact that the game doesn't write the table address anywhere */
+
+ switch (offset)
+ {
+ case 0x06:
+ m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */
+ break;
+ case 0x07:
+ m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
+ break;
+ case 0x08:
+ m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
+ break;
+ case 0x09:
+ m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ break;
+ case 0x0a:
+ m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
+ break;
+ case 0x0b:
+ m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
+ break;
+ case 0x26:
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ }
+}
+
+WRITE16_MEMBER(cps_state::slampic_layer_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ dinopic_layer_w(space, offset, data);
+ break;
+ case 0x06: // scroll 2 base
+ m_cps_a_regs[0x04/2] = data << 4;
+ break;
+ }
+}
+
+
+void cps_state::fcrash_update_transmasks()
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ int mask;
+
+ /* Get transparency registers */
+ if (m_layer_mask_reg[i])
+ mask = m_cps_b_regs[m_layer_mask_reg[i] / 2] ^ 0xffff;
+ else
+ mask = 0xffff; /* completely transparent if priority masks not defined (mercs, qad) */
+
+ m_bg_tilemap[0]->set_transmask(i, mask, 0x8000);
+ m_bg_tilemap[1]->set_transmask(i, mask, 0x8000);
+ m_bg_tilemap[2]->set_transmask(i, mask, 0x8000);
+ }
+}
+
+void cps_state::fcrash_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ int pos;
+ int base = m_sprite_base / 2;
+ int num_sprites = m_gfxdecode->gfx(2)->elements();
+ int last_sprite_offset = 0x1ffc;
+ uint16_t *sprite_ram = m_gfxram;
+ uint16_t tileno,colour,xpos,ypos;
+ bool flipx, flipy;
+
+ /* if we have separate sprite ram, use it */
+ if (m_bootleg_sprite_ram) sprite_ram = m_bootleg_sprite_ram.get();
+
+ /* get end of sprite list marker */
+ for (pos = 0x1ffc - base; pos >= 0x0000; pos -= 4)
+ if (sprite_ram[base + pos - 1] == m_sprite_list_end_marker) last_sprite_offset = pos;
+
+ /* If we are using bootleg sprite ram, the index must be less than 0x2000 */
+ if (((base + last_sprite_offset) < 0x2000) || (!m_bootleg_sprite_ram))
+ {
+ for (pos = last_sprite_offset; pos >= 0x0000; pos -= 4)
+ {
+ tileno = sprite_ram[base + pos];
+ if (tileno >= num_sprites) continue; /* don't render anything outside our tiles */
+ xpos = sprite_ram[base + pos + 2] & 0x1ff;
+ ypos = sprite_ram[base + pos - 1] & 0x1ff;
+ flipx = BIT(sprite_ram[base + pos + 1], 5);
+ flipy = BIT(sprite_ram[base + pos + 1], 6);
+ colour = sprite_ram[base + pos + 1] & 0x1f;
+ ypos = 256 - ypos - 16;
+ xpos = xpos + m_sprite_x_offset + 49;
+
+ if (flip_screen())
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, !flipx, !flipy, 512-16-xpos, 256-16-ypos, screen.priority(), 2, 15);
+ else
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, flipx, flipy, xpos, ypos, screen.priority(), 2, 15);
+ }
+ }
+}
+
+void cps_state::fcrash_render_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask )
+{
+ switch (layer)
+ {
+ case 0:
+ fcrash_render_sprites(screen, bitmap, cliprect);
+ break;
+ case 1:
+ case 2:
+ case 3:
+ m_bg_tilemap[layer - 1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, primask);
+ break;
+ }
+}
+
+void cps_state::fcrash_render_high_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
+{
+ bitmap_ind16 dummy_bitmap;
+
+ switch (layer)
+ {
+ case 0:
+ /* there are no high priority sprites */
+ break;
+ case 1:
+ case 2:
+ case 3:
+ m_bg_tilemap[layer - 1]->draw(screen, dummy_bitmap, cliprect, TILEMAP_DRAW_LAYER0, 1);
+ break;
+ }
+}
+
+void cps_state::fcrash_build_palette()
+{
+ int offset;
+
+ // all the bootlegs seem to write the palette offset as usual
+ int palettebase = (m_cps_a_regs[0x0a / 2] << 8) & 0x1ffff;
+
+ for (offset = 0; offset < 32 * 6 * 16; offset++)
+ {
+ int palette = m_gfxram[palettebase / 2 + offset];
+ int r, g, b, bright;
+
+ // from my understanding of the schematics, when the 'brightness'
+ // component is set to 0 it should reduce brightness to 1/3
+
+ bright = 0x0f + ((palette >> 12) << 1);
+
+ r = ((palette >> 8) & 0x0f) * 0x11 * bright / 0x2d;
+ g = ((palette >> 4) & 0x0f) * 0x11 * bright / 0x2d;
+ b = ((palette >> 0) & 0x0f) * 0x11 * bright / 0x2d;
+
+ m_palette->set_pen_color (offset, rgb_t(r, g, b));
+ }
+}
+
+uint32_t cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int layercontrol, l0, l1, l2, l3;
+ int videocontrol = m_cps_a_regs[0x22 / 2];
+
+ flip_screen_set(videocontrol & 0x8000);
+
+ layercontrol = m_cps_b_regs[m_layer_enable_reg / 2];
+
+ /* Get video memory base registers */
+ cps1_get_video_base();
+
+ /* Build palette */
+ fcrash_build_palette();
+
+ fcrash_update_transmasks();
+
+ m_bg_tilemap[0]->set_scrollx(0, m_scroll1x - m_layer_scroll1x_offset);
+ m_bg_tilemap[0]->set_scrolly(0, m_scroll1y);
+
+ if (videocontrol & 0x01) /* linescroll enable */
+ {
+ int scrly = -m_scroll2y;
+ int i;
+ int otheroffs;
+
+ m_bg_tilemap[1]->set_scroll_rows(1024);
+
+ otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
+
+ for (i = 0; i < 256; i++)
+ m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, m_scroll2x + m_other[(i + otheroffs) & 0x3ff]);
+ }
+ else
+ {
+ m_bg_tilemap[1]->set_scroll_rows(1);
+ m_bg_tilemap[1]->set_scrollx(0, m_scroll2x - m_layer_scroll2x_offset);
+ }
+ m_bg_tilemap[1]->set_scrolly(0, m_scroll2y);
+ m_bg_tilemap[2]->set_scrollx(0, m_scroll3x - m_layer_scroll3x_offset);
+ m_bg_tilemap[2]->set_scrolly(0, m_scroll3y);
+
+
+ /* turn all tilemaps on regardless of settings in get_video_base() */
+ /* write a custom get_video_base for this bootleg hardware? */
+ m_bg_tilemap[0]->enable(1);
+ m_bg_tilemap[1]->enable(1);
+ m_bg_tilemap[2]->enable(1);
+
+ /* Blank screen */
+ bitmap.fill(0xbff, cliprect);
+
+ screen.priority().fill(0, cliprect);
+ l0 = (layercontrol >> 0x06) & 03;
+ l1 = (layercontrol >> 0x08) & 03;
+ l2 = (layercontrol >> 0x0a) & 03;
+ l3 = (layercontrol >> 0x0c) & 03;
+
+ fcrash_render_layer(screen, bitmap, cliprect, l0, 0);
+
+ if (l1 == 0)
+ fcrash_render_high_layer(screen, bitmap, cliprect, l0);
+
+ fcrash_render_layer(screen, bitmap, cliprect, l1, 0);
+
+ if (l2 == 0)
+ fcrash_render_high_layer(screen, bitmap, cliprect, l1);
+
+ fcrash_render_layer(screen, bitmap, cliprect, l2, 0);
+
+ if (l3 == 0)
+ fcrash_render_high_layer(screen, bitmap, cliprect, l2);
+
+ fcrash_render_layer(screen, bitmap, cliprect, l3, 0);
+
+ return 0;
+}
+
+
+static ADDRESS_MAP_START( knightsb_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2") /* Player 3 controls */
+ AM_RANGE(0x800004, 0x800005) AM_WRITENOP // writes 0000 here
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITENOP //AM_WRITE(cps1_coinctrl_w) only writes bit 15
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x800180, 0x800181) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown
+ AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98002f) AM_WRITE(knightsb_layer_w)
+ AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( dinopic_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800222, 0x800223) AM_WRITE(dinopic_layer2_w)
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP // always 0
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98000b) AM_WRITE(dinopic_layer_w)
+ AM_RANGE(0xf18000, 0xf19fff) AM_RAM
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( fcrash_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x880007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */
+ AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x890000, 0x890001) AM_WRITENOP // palette related?
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( punipic_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP // same as 98000C
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98000f) AM_WRITE(punipic_layer_w)
+ AM_RANGE(0x990000, 0x990001) AM_WRITENOP // unknown
+ AM_RANGE(0x991000, 0x991017) AM_WRITENOP // unknown
+ AM_RANGE(0xf18000, 0xf19fff) AM_RAM
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2m1_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800012, 0x800013) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800181) AM_WRITENOP // only once at boot, for 80010c
+ AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown
+ AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x9801ff) AM_WRITE(sf2m1_layer_w)
+ AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2mdt_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w)
+ AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1")
+ AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2")
+ AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r)
+ AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w)
+ AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF
+ //AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2b_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w)
+ AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1")
+ AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2")
+ AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r)
+ AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w)
+ AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF
+ //AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sgyxz_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x880006, 0x88000d) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x88000e, 0x88000f) AM_WRITE(cps1_soundlatch_w)
+ AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */
+ AM_RANGE(0x890000, 0x890001) AM_WRITE(cps1_soundlatch2_w)
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( slampic_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800006, 0x800007) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w)
+ AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP //AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98000d) AM_WRITE(slampic_layer_w)
+ AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */
+ AM_RANGE(0xf18000, 0xf19fff) AM_RAM
+ AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */
+ AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */
+ AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT")
+ AM_RANGE(0xf1f000, 0xf1ffff) AM_NOP // writes 0 to range, then reads F1F6EC
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
+ AM_RANGE(0xdc00, 0xdc01) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
+ AM_RANGE(0xe000, 0xe000) AM_WRITE(fcrash_snd_bankswitch_w)
+ AM_RANGE(0xe400, 0xe400) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_0_data_w)
+ AM_RANGE(0xec00, 0xec00) AM_WRITE(fcrash_msm5205_1_data_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( kodb_sound_map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xe400, 0xe400) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xe000, 0xe000) AM_WRITE(sf2mdt_snd_bankswitch_w)
+ AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w)
+ AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( knightsb_z80map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xcffe, 0xcfff) AM_WRITENOP // writes lots of data
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xe000, 0xe000) AM_WRITE(knightsb_snd_bankswitch_w)
+ AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w)
+ AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sgyxz_sound_map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
+ AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
+ AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
+ADDRESS_MAP_END
+
+
+#define CPS1_COINAGE_1 \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) \
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
+
+
+#define CPS1_COINAGE_2(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) )
+
+#define CPS1_COINAGE_3(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(diploc ":4,5,6") \
+ PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x00, "2 Coins/1 Credit (1 to continue)" ) \
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )
+
+#define CPS1_DIFFICULTY_1(diploc) \
+ PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" ) \
+ PORT_DIPSETTING( 0x06, "2" ) \
+ PORT_DIPSETTING( 0x05, "3" ) \
+ PORT_DIPSETTING( 0x04, "4 (Normal)" ) \
+ PORT_DIPSETTING( 0x03, "5" ) \
+ PORT_DIPSETTING( 0x02, "6" ) \
+ PORT_DIPSETTING( 0x01, "7" ) \
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+
+#define CPS1_DIFFICULTY_2(diploc) \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
+ PORT_DIPSETTING( 0x04, "1 (Easiest)" ) \
+ PORT_DIPSETTING( 0x05, "2" ) \
+ PORT_DIPSETTING( 0x06, "3" ) \
+ PORT_DIPSETTING( 0x07, "4 (Normal)" ) \
+ PORT_DIPSETTING( 0x03, "5" ) \
+ PORT_DIPSETTING( 0x02, "6" ) \
+ PORT_DIPSETTING( 0x01, "7" ) \
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+
+
+static INPUT_PORTS_START( fcrash )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty Level 1" )
+ PORT_DIPSETTING( 0x07, DEF_STR( Easiest ) ) // "01"
+ PORT_DIPSETTING( 0x06, DEF_STR( Easier ) ) // "02"
+ PORT_DIPSETTING( 0x05, DEF_STR( Easy ) ) // "03"
+ PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) // "04"
+ PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) // "05"
+ PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) // "06"
+ PORT_DIPSETTING( 0x01, DEF_STR( Harder ) ) // "07"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "08"
+ PORT_DIPNAME( 0x18, 0x10, "Difficulty Level 2" )
+ PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) // "01"
+ PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) // "02"
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) // "03"
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // "04"
+ PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x60, "100k" )
+ PORT_DIPSETTING( 0x40, "200k" )
+ PORT_DIPSETTING( 0x20, "100k and every 200k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW )
+
+ PORT_START("DSWC")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME ("P1 Button 3 (Cheat)")
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME ("P2 Button 3 (Cheat)")
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cawingbl )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) // Overrides all other coinage settings
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // according to manual
+ PORT_DIPUNUSED( 0x80, IP_ACTIVE_LOW ) // This switch is not documented
+
+ PORT_START("DSWB")
+ PORT_DIPNAME( 0x07, 0x04, "Difficulty Level (Enemy's Strength)" ) PORT_DIPLOCATION("SW(B):1,2,3")
+ PORT_DIPSETTING( 0x07, "1 (Easiest)" )
+ PORT_DIPSETTING( 0x06, "2" )
+ PORT_DIPSETTING( 0x05, "3" )
+ PORT_DIPSETTING( 0x04, "4 (Normal)" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "8 (Hardest)" )
+ PORT_DIPNAME( 0x18, 0x18, "Difficulty Level (Player's Strength)" ) PORT_DIPLOCATION("SW(B):4,5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" ) // This switch is not documented
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" ) // This switch is not documented
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" ) // This switch is not documented
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( kodb )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_2( "SW(A)" )
+ PORT_DIPNAME( 0x08, 0x08, "Coin Slots" ) PORT_DIPLOCATION("SW(A):4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPNAME( 0x10, 0x10, "Play Mode" ) PORT_DIPLOCATION("SW(A):5")
+ PORT_DIPSETTING( 0x00, "2 Players" )
+ PORT_DIPSETTING( 0x10, "3 Players" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(A):6" )
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW(B):4,5,6")
+ PORT_DIPSETTING( 0x30, "1" )
+ PORT_DIPSETTING( 0x38, "2" )
+ PORT_DIPSETTING( 0x28, "3" )
+ PORT_DIPSETTING( 0x20, "4" )
+ PORT_DIPSETTING( 0x18, "5" )
+ PORT_DIPSETTING( 0x10, "6" )
+ PORT_DIPSETTING( 0x08, "7" )
+ PORT_DIPSETTING( 0x00, "8" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):7,8")
+ PORT_DIPSETTING( 0x80, "80k and every 400k" )
+ PORT_DIPSETTING( 0xc0, "100k and every 450k" )
+ PORT_DIPSETTING( 0x40, "160k and every 450k" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sf2mdt )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN2") /* Extra buttons */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
+
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+
+
+static INPUT_PORTS_START( sf2mdtb )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN2") /* Extra buttons */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSWA")
+ CPS1_COINAGE_1
+ PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" ) //sort of debug mode...
+ //depnding (???) of other DSW setting get different
+ //"game" mode, autoplay, bonus round, ecc...
+ PORT_START("DSWB")
+ CPS1_DIFFICULTY_1( "SW(B)" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
+ PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
+ PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
+
+ PORT_START("DSWC")
+ PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
+ PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
+ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
+ PORT_DIPSETTING( 0x80, "Game" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( sgyxz )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWA")
+ PORT_DIPNAME( 0x03, 0x00, "Play Mode" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x03, "Tournament" )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWB")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("DSWC")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START ("IN2") /* Player 3 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
+
+ PORT_START( "EEPROMIN" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
+
+ PORT_START( "EEPROMOUT" )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+INPUT_PORTS_END
+
+
+MACHINE_START_MEMBER(cps_state,fcrash)
+{
+ uint8_t *ROM = memregion("audiocpu")->base();
+
+ membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
+
+ m_layer_enable_reg = 0x20;
+ m_layer_mask_reg[0] = 0x26;
+ m_layer_mask_reg[1] = 0x30;
+ m_layer_mask_reg[2] = 0x28;
+ m_layer_mask_reg[3] = 0x32;
+ m_layer_scroll1x_offset = 62;
+ m_layer_scroll2x_offset = 60;
+ m_layer_scroll3x_offset = 64;
+ m_sprite_base = 0x50c8;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+
+ save_item(NAME(m_sample_buffer1));
+ save_item(NAME(m_sample_buffer2));
+ save_item(NAME(m_sample_select1));
+ save_item(NAME(m_sample_select2));
+}
+
+MACHINE_START_MEMBER(cps_state,sgyxz)
+{
+ MACHINE_START_CALL_MEMBER(kodb);
+ m_layer_scroll1x_offset = 0x40;
+ m_layer_scroll2x_offset = 0x40;
+ m_layer_scroll3x_offset = 0x40;
+ membank("bank1")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x10000, 0x4000);
+}
+
+MACHINE_START_MEMBER(cps_state,kodb)
+{
+ m_layer_enable_reg = 0x20;
+ m_layer_mask_reg[0] = 0x2e;
+ m_layer_mask_reg[1] = 0x2c;
+ m_layer_mask_reg[2] = 0x2a;
+ m_layer_mask_reg[3] = 0x28;
+ m_layer_scroll1x_offset = 0;
+ m_layer_scroll2x_offset = 0;
+ m_layer_scroll3x_offset = 0;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0xffff;
+ m_sprite_x_offset = 0;
+}
+
+MACHINE_START_MEMBER(cps_state, cawingbl)
+{
+ MACHINE_START_CALL_MEMBER(fcrash);
+
+ m_layer_enable_reg = 0x0c;
+ m_layer_mask_reg[0] = 0x0a;
+ m_layer_mask_reg[1] = 0x08;
+ m_layer_mask_reg[2] = 0x06;
+ m_layer_mask_reg[3] = 0x04;
+ m_layer_scroll1x_offset = 63;
+ m_layer_scroll2x_offset = 62;
+ m_layer_scroll3x_offset = 65;
+ m_sprite_base = 0x1000;
+}
+
+MACHINE_START_MEMBER(cps_state, sf2mdt)
+{
+ uint8_t *ROM = memregion("audiocpu")->base();
+
+ membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
+
+ m_layer_enable_reg = 0x26;
+ m_layer_mask_reg[0] = 0x28;
+ m_layer_mask_reg[1] = 0x2a;
+ m_layer_mask_reg[2] = 0x2c;
+ m_layer_mask_reg[3] = 0x2e;
+ m_layer_scroll1x_offset = 0;
+ m_layer_scroll2x_offset = 0;
+ m_layer_scroll3x_offset = 0;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 2;
+
+ save_item(NAME(m_sample_buffer1));
+ save_item(NAME(m_sample_buffer2));
+ save_item(NAME(m_sample_select1));
+ save_item(NAME(m_sample_select2));
+}
+
+MACHINE_START_MEMBER(cps_state, knightsb)
+{
+ uint8_t *ROM = memregion("audiocpu")->base();
+
+ membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
+
+ m_layer_enable_reg = 0x30;
+ m_layer_mask_reg[0] = 0x28;
+ m_layer_mask_reg[1] = 0x2a;
+ m_layer_mask_reg[2] = 0x2c;
+ m_layer_mask_reg[3] = 0x2e;
+ m_layer_scroll1x_offset = 0x3e; //text
+ m_layer_scroll2x_offset = 0x3c; //bricks around scores
+ m_layer_scroll3x_offset = 0x40; //hill with sword going in
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+}
+
+MACHINE_START_MEMBER(cps_state, sf2m1)
+{
+ uint8_t *ROM = memregion("audiocpu")->base();
+
+ membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
+
+ m_layer_enable_reg = 0x26;
+ m_layer_mask_reg[0] = 0x28;
+ m_layer_mask_reg[1] = 0x2a;
+ m_layer_mask_reg[2] = 0x2c;
+ m_layer_mask_reg[3] = 0x2e;
+ m_layer_scroll1x_offset = 0x3e;
+ m_layer_scroll2x_offset = 0x3c;
+ m_layer_scroll3x_offset = 0x40;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+}
+
+MACHINE_RESET_MEMBER(cps_state,fcrash)
+{
+ m_sample_buffer1 = 0;
+ m_sample_buffer2 = 0;
+ m_sample_select1 = 0;
+ m_sample_select2 = 0;
+}
+
+static MACHINE_CONFIG_START( fcrash, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 10000000)
+ MCFG_CPU_PROGRAM_MAP(fcrash_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 24000000/6) /* ? */
+ MCFG_CPU_PROGRAM_MAP(sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,fcrash)
+ MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 4096)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ // sound hardware
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+
+ MCFG_SOUND_ADD("ym1", YM2203, 24000000/6) /* ? */
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 1.0)
+
+ MCFG_SOUND_ADD("ym2", YM2203, 24000000/6) /* ? */
+ MCFG_SOUND_ROUTE(0, "mono", 0.10)
+ MCFG_SOUND_ROUTE(1, "mono", 0.10)
+ MCFG_SOUND_ROUTE(2, "mono", 0.10)
+ MCFG_SOUND_ROUTE(3, "mono", 1.0)
+
+ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+// HBMAME start
+static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
+ AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
+ AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */
+ AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_START( cawingb, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz ) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(fcrash_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_CPU_PROGRAM_MAP(sub_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_16MHz/2, 518, 64, 448, 259, 16, 240)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
+
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+// HBMAME end
+static MACHINE_CONFIG_DERIVED( cawingbl, fcrash )
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( kodb, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 10000000)
+ MCFG_CPU_PROGRAM_MAP(fcrash_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 3579545)
+ MCFG_CPU_PROGRAM_MAP(kodb_sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,kodb)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( sf2mdt, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 12000000)
+ MCFG_CPU_PROGRAM_MAP(sf2mdt_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, irq4_line_hold) /* triggers the sprite ram and scroll writes */
+
+ MCFG_CPU_ADD("audiocpu", Z80, 3579545)
+ MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, sf2mdt)
+ MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 4096)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_YM2151_ADD("2151", 3579545)
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* has 2x MSM5205 instead of OKI6295 */
+ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( sf2b, sf2mdt)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sf2b_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( knightsb, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2)
+ MCFG_CPU_PROGRAM_MAP(knightsb_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 29821000 / 8)
+ MCFG_CPU_PROGRAM_MAP(knightsb_z80map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, knightsb)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_YM2151_ADD("2151", 29821000 / 8)
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* has 2x MSM5205 instead of OKI6295 */
+ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+#define CODE_SIZE 0x400000
+
+// ************************************************************************* FCRASH
+
+ROM_START( fcrash )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) )
+ ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x20000, CRC(77f7c2b3) SHA1(feea48d9555824a2e5bf5e99ce159edc015f0792) )
+ ROM_LOAD16_BYTE( "8.bin", 0x40000, 0x20000, CRC(1895b3df) SHA1(415a26050c50ed79a7ee5ddd1b8d61593b1ce876) )
+ ROM_LOAD16_BYTE( "4.bin", 0x40001, 0x20000, CRC(bbd411ee) SHA1(85d50ca72ec46d627f9c88ff0809aa30e164821a) )
+ ROM_LOAD16_BYTE( "7.bin", 0x80000, 0x20000, CRC(5b23ebf2) SHA1(8c28c21a72a28ad249170026891c6bb865943f84) )
+ ROM_LOAD16_BYTE( "3.bin", 0x80001, 0x20000, CRC(aba2aebe) SHA1(294109b5929ed63859a55bef16643e3ade7da16f) )
+ ROM_LOAD16_BYTE( "6.bin", 0xc0000, 0x20000, CRC(d4bf37f6) SHA1(f47e1cc9aa3b3019ee57f59715e3a611acf9fe3e) )
+ ROM_LOAD16_BYTE( "2.bin", 0xc0001, 0x20000, CRC(07ac8f43) SHA1(7a41b003c76adaabd3f94929cc163461b70e0ed9) )
+ ROM_FILL(0x2610, 1, 7) // fix transitions HBMAME
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Audio CPU + Sample Data */
+ ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(5b276c14) SHA1(73e53c077d4e3c1b919eee28b29e34176ee204f8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "18.bin", 0x000000, 0x20000, CRC(f1eee6d9) SHA1(bee95efbff49c582cff1cc6d9bb5ef4ea5c4a074) , ROM_SKIP(3) )
+ ROMX_LOAD( "20.bin", 0x000001, 0x20000, CRC(675f4537) SHA1(acc68822da3aafbb62f76cbffa5f3389fcc91447) , ROM_SKIP(3) )
+ ROMX_LOAD( "22.bin", 0x000002, 0x20000, CRC(db8a32ac) SHA1(b95f73dff291acee239e22e5fd7efe15d0de23be) , ROM_SKIP(3) )
+ ROMX_LOAD( "24.bin", 0x000003, 0x20000, CRC(f4113e57) SHA1(ff1f443c13494a169b9be24abc361d27a6d01c09) , ROM_SKIP(3) )
+ ROMX_LOAD( "10.bin", 0x080000, 0x20000, CRC(d478853e) SHA1(91fcf8eb022ccea66d291bec84ace557181cf861) , ROM_SKIP(3) )
+ ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
+ ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
+ ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
+ ROMX_LOAD( "19.bin", 0x100000, 0x20000, CRC(b3aa1f48) SHA1(411f3855739992f5967e915f2a5255afcedeac2e) , ROM_SKIP(3) ) // only these 4 differ from ffightbla (new title logo)
+ ROMX_LOAD( "21.bin", 0x100001, 0x20000, CRC(04d175c9) SHA1(33e6e3fefae4e3977c8c954fbd7feff36e92d723) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "23.bin", 0x100002, 0x20000, CRC(e592ba4f) SHA1(62559481e0da3954a90da0ab0fb51f87f1b3dd9d) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "25.bin", 0x100003, 0x20000, CRC(b89a740f) SHA1(516d73c772e0a904dfb0bd84874919d78bbbd200) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
+ ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
+ ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
+ ROMX_LOAD( "17.bin", 0x180003, 0x20000, CRC(c59a4d6c) SHA1(59e49c7d24dd333007de4bb621050011a5392bcc) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+ROM_END
+
+ROM_START( ffightbl )
+ ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "fg-e.bin", 0x00000, 0x80000, CRC(f8ccf27e) SHA1(08ff445d946da81e7dc0cc021f686b5968fa34ab) )
+ ROM_LOAD16_BYTE( "fg-f.bin", 0x00001, 0x80000, CRC(d96c76b2) SHA1(3f9ca4625491cab07cf4a1bf001f1325dc3652a3) )
+ ROM_FILL(0x2610, 1, 7) // fix transitions HBMAME
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Audio CPU + Sample Data */
+ ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(5b276c14) SHA1(73e53c077d4e3c1b919eee28b29e34176ee204f8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "fg-d.bin", 0x000000, 0x80000, CRC(4303f863) SHA1(72a3246e14f9c4d1fb4712bd67d087db42d722d9) , ROM_SKIP(3) )
+ ROMX_LOAD( "fg-c.bin", 0x000001, 0x80000, CRC(d1dfcd2d) SHA1(8796db70459e1e6232a75f5c3f4bf8b227b16f46) , ROM_SKIP(3) )
+ ROMX_LOAD( "fg-b.bin", 0x000002, 0x80000, CRC(22f2c097) SHA1(bbf2d30d31c5a7802b7f7f164dd51a4584511936) , ROM_SKIP(3) )
+ ROMX_LOAD( "fg-a.bin", 0x000003, 0x80000, CRC(16a89b2c) SHA1(4d0e1ec6ae9a2bd31fa77140532bbce64d3874e9) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+ROM_END
+
+// this is identical to the Final Crash bootleg but without the modified gfx.
+// it's less common than Final Crash, but is either the original bootleg, or the bootleggers wanted to restore the
+// original title.
+ROM_START( ffightbla )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) )
+ ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x20000, CRC(77f7c2b3) SHA1(feea48d9555824a2e5bf5e99ce159edc015f0792) )
+ ROM_LOAD16_BYTE( "8.bin", 0x40000, 0x20000, CRC(1895b3df) SHA1(415a26050c50ed79a7ee5ddd1b8d61593b1ce876) )
+ ROM_LOAD16_BYTE( "4.bin", 0x40001, 0x20000, CRC(bbd411ee) SHA1(85d50ca72ec46d627f9c88ff0809aa30e164821a) )
+ ROM_LOAD16_BYTE( "7.bin", 0x80000, 0x20000, CRC(5b23ebf2) SHA1(8c28c21a72a28ad249170026891c6bb865943f84) )
+ ROM_LOAD16_BYTE( "3.bin", 0x80001, 0x20000, CRC(aba2aebe) SHA1(294109b5929ed63859a55bef16643e3ade7da16f) )
+ ROM_LOAD16_BYTE( "6.bin", 0xc0000, 0x20000, CRC(d4bf37f6) SHA1(f47e1cc9aa3b3019ee57f59715e3a611acf9fe3e) )
+ ROM_LOAD16_BYTE( "2.bin", 0xc0001, 0x20000, CRC(07ac8f43) SHA1(7a41b003c76adaabd3f94929cc163461b70e0ed9) )
+ ROM_FILL(0x2610, 1, 7) // fix transitions HBMAME
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Audio CPU + Sample Data */
+ ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(5b276c14) SHA1(73e53c077d4e3c1b919eee28b29e34176ee204f8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "18.bin", 0x000000, 0x20000, CRC(f1eee6d9) SHA1(bee95efbff49c582cff1cc6d9bb5ef4ea5c4a074) , ROM_SKIP(3) )
+ ROMX_LOAD( "20.bin", 0x000001, 0x20000, CRC(675f4537) SHA1(acc68822da3aafbb62f76cbffa5f3389fcc91447) , ROM_SKIP(3) )
+ ROMX_LOAD( "22.bin", 0x000002, 0x20000, CRC(db8a32ac) SHA1(b95f73dff291acee239e22e5fd7efe15d0de23be) , ROM_SKIP(3) )
+ ROMX_LOAD( "24.bin", 0x000003, 0x20000, CRC(f4113e57) SHA1(ff1f443c13494a169b9be24abc361d27a6d01c09) , ROM_SKIP(3) )
+ ROMX_LOAD( "10.bin", 0x080000, 0x20000, CRC(d478853e) SHA1(91fcf8eb022ccea66d291bec84ace557181cf861) , ROM_SKIP(3) )
+ ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
+ ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
+ ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
+ ROMX_LOAD( "ff-19.bin", 0x100000, 0x20000, CRC(7bc03747) SHA1(6964e5c562d6af5b4327ff828f3d0522c34911bc) , ROM_SKIP(3) ) // only these 4 differ from fcrash
+ ROMX_LOAD( "ff-21.bin", 0x100001, 0x20000, CRC(0c248e2b) SHA1(28731fe25a8eb39c1e0822cf9074a7a32c6b2978) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "ff-23.bin", 0x100002, 0x20000, CRC(53949d0e) SHA1(1b11134005a47c323917b9892fe44819c36c6ee2) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "ff-25.bin", 0x100003, 0x20000, CRC(8d34a67d) SHA1(69e9f52efb73952313848a6d54dbdc17a2275c59) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
+ ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
+ ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
+ ROMX_LOAD( "17.bin", 0x180003, 0x20000, CRC(c59a4d6c) SHA1(59e49c7d24dd333007de4bb621050011a5392bcc) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+ROM_END
+
+
+
+// ************************************************************************* KODB
+
+/*
+CPU
+
+1x TS68000CP12 (main)
+1x TPC1020AFN-084C
+1x Z8400BB1-Z80CPU (sound)
+1x YM2151 (sound)
+1x YM3012A (sound)
+1x OKI-M6295 (sound)
+2x LM324N (sound)
+1x TDA2003 (sound)
+1x oscillator 10.0 MHz
+1x oscillator 22.1184 MHz
+
+ROMs
+
+1x AM27C512 (1)(sound)
+1x AM27C020 (2)(sound)
+2x AM27C040 (3,4)(main)
+1x Am27C040 (bp)(gfx)
+7x maskrom (ai,bi,ci,di,ap,cp,dp)(gfx)
+1x GAL20V8A (not dumped)
+3x GAL16V8A (not dumped)
+1x PALCE20V8H (not dumped)
+1x GAL20V8S (not dumped)
+
+Note
+
+1x JAMMA edge connector
+1x trimmer (volume)
+3x 8 switches dip
+
+*/
+
+ROM_START( kodb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.ic172", 0x00000, 0x080000, CRC(036dd74c) SHA1(489344e56863429e86b4c362b82d89819c1d6afb) )
+ ROM_LOAD16_BYTE( "4.ic171", 0x00001, 0x080000, CRC(3e4b7295) SHA1(3245640bae7d141238051dfe5c7683d05c6d3848) )
+ ROM_FILL( 0x952, 1, 7) // fix transitions HBMAME
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "1.ic28", 0x00000, 0x08000, CRC(01cae60c) SHA1(b2cdd883fd859f0b701230831aca1f1a74ad6087) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cp.ic90", 0x000000, 0x80000, CRC(e3b8589e) SHA1(775f97e43cb995b93da40063a1f1e4d73b34437c), ROM_SKIP(7) )
+ ROMX_LOAD( "dp.ic89", 0x000001, 0x80000, CRC(3eec9580) SHA1(3d8d0cfbeae077544e514a5eb96cc83f716e494f), ROM_SKIP(7) )
+ ROMX_LOAD( "ap.ic88", 0x000002, 0x80000, CRC(fdf5f163) SHA1(271ee96886c958accaca9a82484ab80fe32bd38e), ROM_SKIP(7) )
+ ROMX_LOAD( "bp.ic87", 0x000003, 0x80000, CRC(4e1c52b7) SHA1(74570e7d577c999c62203c97b3d449e3b61a678a), ROM_SKIP(7) )
+ ROMX_LOAD( "ci.ic91", 0x000004, 0x80000, CRC(22228bc5) SHA1(d48a09ee284d9e4b986f5c3c1c865930f76986e2), ROM_SKIP(7) )
+ ROMX_LOAD( "di.ic92", 0x000005, 0x80000, CRC(ab031763) SHA1(5bcd89b1debf029b779aa1bb73b3a572d27154ec), ROM_SKIP(7) )
+ ROMX_LOAD( "ai.ic93", 0x000006, 0x80000, CRC(cffbf4be) SHA1(f805bafc855d4a656c055a76eaeb26e36835541e), ROM_SKIP(7) )
+ ROMX_LOAD( "bi.ic94", 0x000007, 0x80000, CRC(4a1b43fe) SHA1(7957f45b2862825c9509043c63c7da7108bd251b), ROM_SKIP(7) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "2.ic19", 0x00000, 0x40000, CRC(a2db1575) SHA1(1a4a29e4b045af50700adf1665697feab12cc234) )
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, kodb)
+{
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x800000, 0x800007, "IN1");
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800187, write16_delegate(FUNC(cps_state::cps1_soundlatch_w),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x98002f, write16_delegate(FUNC(cps_state::kodb_layer_w),this));
+
+ /* the original game alternates between 2 sprite ram areas to achieve flashing sprites - the bootleg doesn't do the write to the register to achieve this
+ mapping both sprite ram areas to the same bootleg sprite ram - similar to how sf2mdt works */
+ m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x900000, 0x903fff, m_bootleg_sprite_ram.get());
+ m_maincpu->space(AS_PROGRAM).install_ram(0x904000, 0x907fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped */
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+
+
+// ************************************************************************* KNIGHTSB
+
+/*
+
+CPU:
+
+1x MC68000P12 ic65 main
+1x Z0840006PSC ic1 sound
+1x YM2151 ic29 sound
+1x YM3012 ic30 sound
+2x LM324 ic15,ic31 sound
+2x M5205 ic184,ic185 sound
+1x TDA2003 ic14 sound
+1x oscillator 24.000000MHz (close to main)
+1x oscillator 29.821000MHz (close to sound)
+
+ROMs
+
+5x M27C2001 1,2,3,4,5 dumped
+4x maskrom KA,KB,KC,KD not dumped
+
+RAMs:
+
+4x KM62256ALP ic112,ic113,ic168,ic170
+1x SYC6116L ic24
+1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78
+
+PLDs:
+
+1x TPC1020AFN ic116 read protected
+3x GAL20V8A ic120,ic121,ic169 read protected
+3x GAL16V8A ic7,ic72,ic80 read protected
+
+Note:
+
+1x JAMMA edge connector
+2x 10 legs connector
+1x trimmer (volume)
+3x 8x2 switches DIP
+
+*/
+/* bootleg */
+/* FIXME - GFX ROMs are wrong, copied from the other version */
+/* ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94 */
+ROM_START( knightsb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) )
+ ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) )
+ ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) )
+ ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) )
+
+ ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg MASKroms, these need dumping so that the format is known */
+ ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) )
+ ROM_RELOAD( 0x10000, 0x40000 )
+ROM_END
+
+
+
+// ************************************************************************* CAWINGBL, CAWINGB2
+
+ROM_START( cawingbl )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "caw2.bin", 0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) )
+ ROM_LOAD16_BYTE( "caw1.bin", 0x00001, 0x80000, CRC(b19b10ce) SHA1(3c71f1dc830d1e8b8ba26d8a71e12f477659480c) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "caw7.bin", 0x000000, 0x80000, CRC(a045c689) SHA1(8946c55635121282ea03586a278e50de20d92633) , ROM_SKIP(3) )
+ ROMX_LOAD( "caw6.bin", 0x000001, 0x80000, CRC(61192f7c) SHA1(86643c62653a62a5c7541d50cfdecae9b607440d) , ROM_SKIP(3) )
+ ROMX_LOAD( "caw5.bin", 0x000002, 0x80000, CRC(30dd78db) SHA1(e0295001d6f5fb4a9276c432f971e88f73c5e39a) , ROM_SKIP(3) )
+ ROMX_LOAD( "caw4.bin", 0x000003, 0x80000, CRC(4937fc41) SHA1(dac179715be483a521df8e515afc1fb7a2cd8f13) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "caw3.bin", 0x00000, 0x20000, CRC(ffe16cdc) SHA1(8069ea69f0b89d61c35995c8040a4989d7be9c1f) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+ROM_START( cawingb2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "8.8", 0x00000, 0x20000, CRC(f655708c) SHA1(9962a1c96ea08bc71b25d4f58e5d1fb1beebf0dc) )
+ ROM_LOAD16_BYTE( "4.4", 0x00001, 0x20000, CRC(a02fb5aa) SHA1(c9c064a83899c48f681ac803cfc5886503b9d992) )
+ ROM_LOAD16_BYTE( "7.7", 0x40000, 0x20000, CRC(8c6c7430) SHA1(3ed5713caf774b050b41a6adea026e1307b570df) )
+ ROM_LOAD16_BYTE( "3.3", 0x40001, 0x20000, CRC(f585bf2c) SHA1(3a3169791f8deace8d9bee1adb08f19fbcd309c6) )
+ ROM_LOAD16_BYTE( "6.6", 0x80000, 0x20000, CRC(5fda906e) SHA1(7b3ef17d494a2f92e58ab7e34a3beaad8c149fca) )
+ ROM_LOAD16_BYTE( "2.2", 0x80001, 0x20000, CRC(736c1835) SHA1(a91f479fab30603a111304adc0478d430faa80fc) )
+ ROM_LOAD16_BYTE( "5.5", 0xc0000, 0x20000, CRC(76458083) SHA1(cbb4ef5f7615c834b2ee1ad3c86e7262f2f62c01) )
+ ROM_LOAD16_BYTE( "1.1", 0xc0001, 0x20000, CRC(d3523f34) SHA1(005ea378c2b78782f85ecc591946c027ca2ca023) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "17.17", 0x000000, 0x20000, CRC(0b538062) SHA1(ac6e5dc82efdca311adfe6e6cdda160ad4a0d04d) , ROM_SKIP(3) )
+ ROMX_LOAD( "19.19", 0x000001, 0x20000, CRC(3ad62311) SHA1(1c132696b55191d16af30ebd36d2320d979eab36) , ROM_SKIP(3) )
+ ROMX_LOAD( "21.21", 0x000002, 0x20000, CRC(1b872a98) SHA1(7a3f72c6d384dfa8e224f93604997a7b6e5c8926) , ROM_SKIP(3) )
+ ROMX_LOAD( "23.23", 0x000003, 0x20000, CRC(ad49eecd) SHA1(39909996765391ed734a02c74f683e1bd9ce1561) , ROM_SKIP(3) )
+ ROMX_LOAD( "9.9", 0x080000, 0x20000, CRC(8cd4df5b) SHA1(771b6d6a6baa95a669335fe64e2219fe7226e140) , ROM_SKIP(3) )
+ ROMX_LOAD( "11.11", 0x080001, 0x20000, CRC(bf14418a) SHA1(7a0e1c65b8825a252338d6c1db59a88966ec6cfb) , ROM_SKIP(3) )
+ ROMX_LOAD( "13.13", 0x080002, 0x20000, CRC(cef1aab8) SHA1(677a889b939ff00e95737a4a53053744bb6744c0) , ROM_SKIP(3) )
+ ROMX_LOAD( "15.15", 0x080003, 0x20000, CRC(397725dc) SHA1(9450362bbf2f91b4225a088d6e283d7b16407b74) , ROM_SKIP(3) )
+ ROMX_LOAD( "18.18", 0x100000, 0x20000, CRC(9b14f7ed) SHA1(72b6e1174d4faab487261aa6739de842d2423e1a) , ROM_SKIP(3) )
+ ROMX_LOAD( "20.20", 0x100001, 0x20000, CRC(59bcc1bb) SHA1(c725060e068294dea1d962c54a9018050fa70297) , ROM_SKIP(3) )
+ ROMX_LOAD( "22.22", 0x100002, 0x20000, CRC(23dc647a) SHA1(2d8d4c4c7b2d0616430360d1639b07216dd731d6) , ROM_SKIP(3) )
+ ROMX_LOAD( "24.24", 0x100003, 0x20000, CRC(eda9fa6b) SHA1(4a3510ce71b015a1ea568fd0bbe61c5c093a2fbf) , ROM_SKIP(3) )
+ ROMX_LOAD( "10.10", 0x180000, 0x20000, CRC(17174249) SHA1(71c6424ab4629065dd6af8bb47b18f5b5d0fbe49) , ROM_SKIP(3) )
+ ROMX_LOAD( "12.12", 0x180001, 0x20000, CRC(490440b2) SHA1(2597bf16340308f84b32cfa048c426db571b4a35) , ROM_SKIP(3) )
+ ROMX_LOAD( "14.14", 0x180002, 0x20000, CRC(344a8270) SHA1(fdb588a7ba60783225e3b5c72446f79625de4f9c) , ROM_SKIP(3) )
+ ROMX_LOAD( "16.16", 0x180003, 0x20000, CRC(b991ad91) SHA1(5c59131ddf068cb54d23f8836293360fbc967d58) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "5.a", 0x00000, 0x20000, CRC(ffe16cdc) SHA1(8069ea69f0b89d61c35995c8040a4989d7be9c1f) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, cawingbl)
+{
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x882000, 0x882001, "IN1");
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(FUNC(cps_state::cawingbl_soundlatch_w),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this));
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+// HBMAME start
+ROM_START( cawingb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "2.16d", 0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) )
+ ROM_LOAD16_BYTE( "1.19d", 0x00001, 0x80000, CRC(b19b10ce) SHA1(3c71f1dc830d1e8b8ba26d8a71e12f477659480c) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ca-5m.7a", 0x000000, 0x80000, CRC(66d4cc37) SHA1(d355ea64ff29d228dcbfeee72bcf11882bf1cd9d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-7m.9a", 0x000002, 0x80000, CRC(b6f896f2) SHA1(bdb6820b81fbce77d7eacb01777af7c380490402) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-1m.3a", 0x000004, 0x80000, CRC(4d0620fd) SHA1(5f62cd551b6a230edefd81fa60c10c84186ca804) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ca-3m.5a", 0x000006, 0x80000, CRC(0b0341c3) SHA1(c31f0e78f49d94ea9dea20eb0cbd98a6c613bcbf) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ca_9.12b", 0x00000, 0x08000, CRC(96fe7485) SHA1(10466889dfc6bc8afd3075385e241a16372efbeb) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ca_18.11c", 0x00000, 0x20000, CRC(4a613a2c) SHA1(06e10644fc60925b85d2ca0888c9fa057bfe996a) )
+ ROM_LOAD( "ca_19.12c", 0x20000, 0x20000, CRC(74584493) SHA1(5cfb15f1b9729323707972646313aee8ab3ac4eb) )
+ROM_END
+// HBMAME end
+
+
+// ************************************************************************* DINOPIC, DINOPIC2
+
+MACHINE_START_MEMBER(cps_state, dinopic)
+{
+ m_layer_enable_reg = 0x0a;
+ m_layer_mask_reg[0] = 0x0c;
+ m_layer_mask_reg[1] = 0x0e;
+ m_layer_mask_reg[2] = 0x00;
+ m_layer_mask_reg[3] = 0x02;
+ m_layer_scroll1x_offset = 0x40;
+ m_layer_scroll2x_offset = 0x40;
+ m_layer_scroll3x_offset = 0x40;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+}
+
+static MACHINE_CONFIG_START( dinopic, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 12000000)
+ MCFG_CPU_PROGRAM_MAP(dinopic_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ //MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic)
+
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+/*
+
+Cadillac Bootleg Hardware:
+
+1x 68000p10
+1x PIC16c57
+1x AD-65
+1x OSC 30mhz
+1x OSC 24mhz
+13x 27c4000 ROMS
+
+*/
+ROM_START( dinopic )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(13dfeb08) SHA1(cd2f9dd64f4fabe93901247e36dff3763169716d) )
+ ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(96dfcbf1) SHA1(a8bda6edae2c1b79db7ae8a8976fd2457f874373) )
+ ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x80000, CRC(0e4058ba) SHA1(346f9e34ea53dd1bf5cdafa1e38bf2edb09b9a7f) )
+ ROM_LOAD16_BYTE( "7.bin", 0x100000, 0x80000, CRC(6133f349) SHA1(d13af99910623f62c090d25372a2253dbc2f8cbe) )
+
+ ROM_REGION( 0x400000, "gfx", 0 ) // same data, different format, except for 8 which is a 99% match (bad rom?)
+ ROMX_LOAD( "4.bin", 0x000000, 0x40000, CRC(f3c2c98d) SHA1(98ae51a67fa4159456a4a205eebdd8d1775888d1), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROMX_LOAD( "8.bin", 0x000001, 0x40000, CRC(d574befc) SHA1(56482e7a9aa8439f30e3cf72311495ce677a083d), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROMX_LOAD( "9.bin", 0x000002, 0x40000, CRC(55ef0adc) SHA1(3b5551ae76ae80882d37fc70a1031a57885d6840), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROMX_LOAD( "6.bin", 0x000003, 0x40000, CRC(cc0805fc) SHA1(c512734c28b878a30a0de249929f69784d5d77a1), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROMX_LOAD( "13.bin", 0x200000, 0x40000, CRC(1371f714) SHA1(d2c98096fab08e3d4fd2482e6ebfc970ead656ee), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "12.bin", 0x200001, 0x40000, CRC(b284c4a7) SHA1(166f571e0afa115f8e38ba427b40e30abcfd70ee), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "11.bin", 0x200002, 0x40000, CRC(b7ad3394) SHA1(58dec34d9d991ff2817c8a7847749716abae6c77), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "10.bin", 0x200003, 0x40000, CRC(88847705) SHA1(05dc90067921960e417b7436056a5e1f86abaa1a), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000)
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* PIC16c57 - protected, dump isn't valid */
+ ROM_LOAD( "pic16c57-rp", 0x00000, 0x2d4c, BAD_DUMP CRC(5a6d393c) SHA1(1391a1590aff5f75bb6fae1c83eddb796b53135d) )
+
+ ROM_REGION( 0x80000, "oki", 0 ) /* OKI6295 samples */
+ ROM_LOAD( "1.bin", 0x000000, 0x80000, CRC(7d921309) SHA1(d51e60e904d302c2516b734189e141aa171b2b82) )
+ROM_END
+
+/* this is basically the same set as above, from a different bootleg pcb, with a few extra pal dumps etc.
+ the first dump will probably be removed eventually
+
+ CPU
+ 1x TS68000CP10 (main)
+ 1x AD-65 (sound)(equivalent to M6295)
+ 1x PIC16C57-XT/P
+ 1x A1020B-PL84C
+ 1x oscillator 24.000MHz (close to main)
+ 1x oscillator 30.000MHz (close to sound)
+
+ ROMs
+ 13x 27C4000
+ 3x GAL20V8A
+ 3x PALCE16V8H (1 broken not dumped)
+ 1x CAT93C46P
+
+ Note
+ 1x JAMMA edge connector
+ 1x 10 legs connector
+ 1x trimmer (volume)
+*/
+
+ROM_START( dinopic2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27c4000-m12374r-2.bin", 0x000001, 0x80000, CRC(13dfeb08) SHA1(cd2f9dd64f4fabe93901247e36dff3763169716d) )
+ ROM_LOAD16_BYTE( "27c4000-m12481.bin", 0x000000, 0x80000, CRC(96dfcbf1) SHA1(a8bda6edae2c1b79db7ae8a8976fd2457f874373) )
+ ROM_LOAD16_BYTE( "27c4000-m12374r-1.bin", 0x100001, 0x80000, CRC(0e4058ba) SHA1(346f9e34ea53dd1bf5cdafa1e38bf2edb09b9a7f) )
+ ROM_LOAD16_BYTE( "27c4000-m12374r-3.bin", 0x100000, 0x80000, CRC(6133f349) SHA1(d13af99910623f62c090d25372a2253dbc2f8cbe) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "27c4000-m12481-4.bin", 0x000000, 0x40000, CRC(f3c2c98d) SHA1(98ae51a67fa4159456a4a205eebdd8d1775888d1), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-3.bin", 0x000001, 0x40000, BAD_DUMP CRC(417a4816) SHA1(5268f6667ff550a949a08f94171966f5d841c6b2), ROM_SKIP(7) ) // this one is a perfect match, unlike dinopic set
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-2.bin", 0x000002, 0x40000, CRC(55ef0adc) SHA1(3b5551ae76ae80882d37fc70a1031a57885d6840), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-1.bin", 0x000003, 0x40000, CRC(cc0805fc) SHA1(c512734c28b878a30a0de249929f69784d5d77a1), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-8.bin", 0x200000, 0x40000, CRC(1371f714) SHA1(d2c98096fab08e3d4fd2482e6ebfc970ead656ee), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-7.bin", 0x200001, 0x40000, CRC(b284c4a7) SHA1(166f571e0afa115f8e38ba427b40e30abcfd70ee), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-6.bin", 0x200002, 0x40000, CRC(b7ad3394) SHA1(58dec34d9d991ff2817c8a7847749716abae6c77), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "27c4000-m12481-5.bin", 0x200003, 0x40000, CRC(88847705) SHA1(05dc90067921960e417b7436056a5e1f86abaa1a), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000)
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* PIC16c57 - protected, dump isn't valid */
+ ROM_LOAD( "pic16c57-xt.hex", 0x00000, 0x26cc, BAD_DUMP CRC(a6a5eac4) SHA1(2039789084836769180f0bfd230c2553a37e2aaf) )
+
+ ROM_REGION( 0x80000, "oki", 0 ) /* OKI6295 samples */
+ ROM_LOAD( "27c4000-m12623.bin", 0x000000, 0x80000, CRC(7d921309) SHA1(d51e60e904d302c2516b734189e141aa171b2b82) )
+
+ ROM_REGION( 0xc00, "user1", 0 ) /* extra bits on this set */
+ ROM_LOAD( "cat93c46p.bin", 0x000, 0x080, CRC(d49fa351) SHA1(e6dfaff1c6aa962d34ae8e82b71e6f394d82e19c) )
+ ROM_LOAD( "gal20v8a-1.bin", 0x200, 0x157, CRC(cd99ca47) SHA1(ee1d990fd294aa46f56f31264134251569f6792e) )
+ ROM_LOAD( "gal20v8a-2.bin", 0x400, 0x157, CRC(60d016b9) SHA1(add42c763c819f3fe6d7cf3adc7123a52c2a3be9) )
+ ROM_LOAD( "gal20v8a-3.bin", 0x600, 0x157, CRC(049b7f4f) SHA1(6c6ea03d9a293db69a8bd10e042ee75e3c01313c) )
+ ROM_LOAD( "palce16v8h-1.bin", 0x800, 0x117, CRC(48253c66) SHA1(8c94e655b768c45c3edf6ef39e62e3b7a4e57530) )
+ ROM_LOAD( "palce16v8h-2.bin", 0xa00, 0x117, CRC(9ae375ba) SHA1(6f227c2a5b1170a41e6419f12d1e1f98edc6f8e5) )
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, dinopic)
+{
+ m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x990000, 0x993fff, m_bootleg_sprite_ram.get());
+ DRIVER_INIT_CALL(cps1);
+}
+
+
+
+// ************************************************************************* SGYXZ
+
+// 24mhz crystal (maincpu), 28.322 crystal (video), 3.579545 crystal (sound)
+// sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW?
+// 3x8 dsws
+
+static MACHINE_CONFIG_START( sgyxz, cps_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 12000000)
+ MCFG_CPU_PROGRAM_MAP(sgyxz_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 3579545)
+ MCFG_CPU_PROGRAM_MAP(sgyxz_sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,sgyxz)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz) /* verified on pcb */
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+ROM_START( sgyxz )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "sgyxz_prg1.bin", 0x000001, 0x20000, CRC(d8511929) SHA1(4de9263778f327693f4d1e21b48e43806f673487) )
+ ROM_CONTINUE( 0x80001, 0x20000 )
+ ROM_CONTINUE( 0x40001, 0x20000 )
+ ROM_CONTINUE( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "sgyxz_prg2.bin", 0x000000, 0x20000, CRC(95429c83) SHA1(e981624d018132e5625a66113b6ac4fc44e55cf7) )
+ ROM_CONTINUE( 0x80000, 0x20000 )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0xc0000, 0x20000 )
+ ROM_FILL(0x708da, 4, 0xff) // patch out protections
+ ROM_FILL(0xf11ea, 1, 0x60)
+ ROM_FILL(0x00007, 1, 0xa2) // start address
+ ROM_FILL(0x02448, 1, 0x07) // transitions
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 1'
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 2'
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_LOAD( "sgyxz_snd2.bin", 0x00000, 0x10000, CRC(210c376f) SHA1(0d937c86078d0a106f5636b7daf5fc0266c2c2ec) )
+ ROM_RELOAD( 0x8000, 0x10000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) )
+ROM_END
+
+
+
+// ************************************************************************* PUNIPIC, PUNIPIC2, PUNIPIC3
+
+MACHINE_START_MEMBER(cps_state, punipic)
+{
+ m_layer_enable_reg = 0x12;
+ m_layer_mask_reg[0] = 0x14;
+ m_layer_mask_reg[1] = 0x16;
+ m_layer_mask_reg[2] = 0x08;
+ m_layer_mask_reg[3] = 0x0a;
+ m_layer_scroll1x_offset = 0x46; // text
+ m_layer_scroll3x_offset = 0x46; // green patch in the park
+ m_sprite_base = 0x000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+}
+
+static MACHINE_CONFIG_START( punipic, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 12000000)
+ MCFG_CPU_PROGRAM_MAP(punipic_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ //MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, punipic)
+
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+/* bootleg with pic, like dinopic / dinopic2 */
+ROM_START( punipic )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "cpu5.bin", 0x000000, 0x80000, CRC(c3151563) SHA1(61d3a20c25fea8a94ae6e473a87c21968867cba0) )
+ ROM_LOAD16_BYTE( "cpu3.bin", 0x000001, 0x80000, CRC(8c2593ac) SHA1(4261bc72b96c3a5690df35c5d8b71524765693d9) )
+ ROM_LOAD16_BYTE( "cpu4.bin", 0x100000, 0x80000, CRC(665a5485) SHA1(c07920d110ca9c35f6cbff94a6a889c17300f994) )
+ ROM_LOAD16_BYTE( "cpu2.bin", 0x100001, 0x80000, CRC(d7b13f39) SHA1(eb7cd92b44fdef3b72672b0be6786c526421b627) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "gfx9.bin", 0x000000, 0x40000, CRC(9b9a887a) SHA1(8805b36fc18837bd7c64c751b435d72b763b2235), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROMX_LOAD( "gfx8.bin", 0x000001, 0x40000, CRC(2b94287a) SHA1(815d88e66f537e17550fc0483616f02f7126bfb1), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROMX_LOAD( "gfx7.bin", 0x000002, 0x40000, CRC(e9bd74f5) SHA1(8ed7098c69d1c70093c99956bf82e532bd6fc7ac), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROMX_LOAD( "gfx6.bin", 0x000003, 0x40000, CRC(a5e1c8a4) SHA1(3596265a45cf6bbf16c623f0fce7cdc65f9338ad), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROMX_LOAD( "gfx13.bin", 0x200000, 0x40000, CRC(6d75a193) SHA1(6c5a89517926d7ba4a925a3df800d4bdb8a6938d), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "gfx12.bin", 0x200001, 0x40000, CRC(a3c205c1) SHA1(6317cc49434dbbb9a249ddd4b50bd791803b3ebe), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "gfx11.bin", 0x200002, 0x40000, CRC(22f2ec92) SHA1(9186bfc5db71dc5b099c9a985e8fdd5710772d1c), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "gfx10.bin", 0x200003, 0x40000, CRC(763974c9) SHA1(f9b93c7cf0cb8c212fc21c57c85459b7d2e4e2fd), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000)
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* PIC16c57 - protected */
+ ROM_LOAD( "pic16c57", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x200000, "oki", 0 ) /* OKI6295 */
+ ROM_LOAD( "sound.bin", 0x000000, 0x80000, CRC(aeec9dc6) SHA1(56fd62e8db8aa96cdd242d8c705849a413567780) )
+ROM_END
+
+/* alt bootleg with PIC, same program roms as above, bigger GFX roms
+
+Punisher
+1993, Capcom
+
+This is a bootleg version running on a single PCB.
+
+PCB Layout
+----------
+
+|-----------------------------------------|
+| 93C46 SOUND 30MHz PAL |
+| M6295 PIC16C57 |
+| 6116 PAL 6116 |
+| 6116 6116 ACTEL |
+| 6116 A1020B |
+|J 6116 |
+|A TEST 6116 |
+|M 6116 |
+|M |
+|A |
+| 62256 62256 62256 PU13478 |
+| PRG1 PRG2 |
+| PRG3 PRG4 62256 PU11256 |
+| PAL|
+| 68000 24MHz PAL PAL |
+|-----------------------------------------|
+
+Notes:
+ Measured clocks
+ ---------------
+ 68000 clock: 12.000MHz (24 / 2)
+ M6295 clock: 937.5kHz (30 / 32), sample rate = 30000000 / 32 / 132
+ 16C57 clock: 3.75MHz (30 / 8) NOTE! 4096 bytes internal ROM is protected and can't be read out.
+ VSYNC : 60Hz
+
+ ROMs
+ ----
+ PRG* - 4M MASK ROM (read as 27C040)
+ SOUND - 4M MASK ROM (read as 27C040)
+ PU* - 16M MASK ROM (read as 27C160)
+
+*/
+
+ROM_START( punipic2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "prg4.bin", 0x000000, 0x80000, CRC(c3151563) SHA1(61d3a20c25fea8a94ae6e473a87c21968867cba0) )
+ ROM_LOAD16_BYTE( "prg3.bin", 0x000001, 0x80000, CRC(8c2593ac) SHA1(4261bc72b96c3a5690df35c5d8b71524765693d9) )
+ ROM_LOAD16_BYTE( "prg2.bin", 0x100000, 0x80000, CRC(665a5485) SHA1(c07920d110ca9c35f6cbff94a6a889c17300f994) )
+ ROM_LOAD16_BYTE( "prg1.bin", 0x100001, 0x80000, CRC(d7b13f39) SHA1(eb7cd92b44fdef3b72672b0be6786c526421b627) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "pu11256.bin", 0x000000, 0x80000, CRC(6581faea) SHA1(2b0e96998002a1df96c7869ec965257d2ecfb531), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "pu13478.bin", 0x000002, 0x80000, CRC(61613de4) SHA1(8f8c46ce907be2b4c4715ad88bfd1456818bdd2c), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", 0 ) /* PIC16c57 - protected */
+ ROM_LOAD( "pic16c57", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x200000, "oki", 0 ) /* OKI6295 */
+ ROM_LOAD( "sound.bin", 0x000000, 0x80000, CRC(aeec9dc6) SHA1(56fd62e8db8aa96cdd242d8c705849a413567780) )
+
+ ROM_REGION( 0x200000, "user1", 0 ) /* other */
+ ROM_LOAD( "93c46.bin", 0x00, 0x80, CRC(36ab4e7d) SHA1(60bea43051d86d9aefcbb7a390cf0c7d8b905a4b) )
+ROM_END
+
+/* the readme doesn't actually state this has a PIC, and there's no sound rom
+ so it might be different */
+
+ROM_START( punipic3 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "psb5b.rom", 0x000000, 0x80000, CRC(58f42c05) SHA1(e243928f0bbecdf2a8d07cf4a6fdea4440e46c01) )
+ ROM_LOAD16_BYTE( "psb3b.rom", 0x000001, 0x80000, CRC(90113db4) SHA1(4decc203ae3ee4abcb2e017f11cd20eae2abf3f3) )
+ ROM_LOAD16_BYTE( "psb4a.rom", 0x100000, 0x80000, CRC(665a5485) SHA1(c07920d110ca9c35f6cbff94a6a889c17300f994) )
+ ROM_LOAD16_BYTE( "psb2a.rom", 0x100001, 0x80000, CRC(d7b13f39) SHA1(eb7cd92b44fdef3b72672b0be6786c526421b627) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "psb-a.rom", 0x000000, 0x80000, CRC(57f0f5e3) SHA1(130b6e92181994bbe874261e0895db65d4f3d5d1), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000004, 0x80000 )
+ ROM_CONTINUE( 0x200000, 0x80000 )
+ ROM_CONTINUE( 0x200004, 0x80000 )
+ ROMX_LOAD( "psb-b.rom", 0x000002, 0x80000, CRC(d9eb867e) SHA1(9b6eaa4a780da5c9cf09658fcab3a1a6f632c2f4), ROM_GROUPWORD | ROM_SKIP(6) )
+ ROM_CONTINUE( 0x000006, 0x80000 )
+ ROM_CONTINUE( 0x200002, 0x80000 )
+ ROM_CONTINUE( 0x200006, 0x80000 )
+
+ ROM_REGION( 0x28000, "audiocpu", ROMREGION_ERASE00 ) /* PIC16c57 (maybe, not listed in readme) */
+ //ROM_LOAD( "pic16c57", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x200000, "oki", ROMREGION_ERASE00 ) /* OKI6295 */
+ //ROM_LOAD( "sound.bin", 0x000000, 0x80000, CRC(aeec9dc6) SHA1(56fd62e8db8aa96cdd242d8c705849a413567780) )
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, punipic)
+{
+ uint16_t *mem16 = (uint16_t *)memregion("maincpu")->base();
+ mem16[0x5A8/2] = 0x4E71; // set data pointers
+ mem16[0x4DF0/2] = 0x33ED;
+ mem16[0x4DF2/2] = 0xDB2E;
+ mem16[0x4DF4/2] = 0x0080;
+ mem16[0x4DF6/2] = 0x0152;
+ mem16[0x4DF8/2] = 0x4E75;
+
+ DRIVER_INIT_CALL(dinopic);
+}
+
+DRIVER_INIT_MEMBER(cps_state, punipic3)
+{
+ uint16_t *mem16 = (uint16_t *)memregion("maincpu")->base();
+ mem16[0x5A6/2] = 0x4E71; // set data pointers
+ mem16[0x5A8/2] = 0x4E71;
+
+ DRIVER_INIT_CALL(dinopic);
+}
+
+
+
+// ************************************************************************* SF2M1
+
+static MACHINE_CONFIG_START( sf2m1, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz )
+ MCFG_CPU_PROGRAM_MAP(sf2m1_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
+ MCFG_CPU_PROGRAM_MAP(sgyxz_sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,sf2m1)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_YM2151_ADD("2151", XTAL_3_579545MHz)
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4/4, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+ROM_START( sf2m1 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "222e", 0x000000, 0x80000, CRC(1e20d0a3) SHA1(5e05b52fd938aff5190bca7e178705d7236aef66) )
+ ROM_LOAD16_BYTE( "196e", 0x000001, 0x80000, CRC(88cc38a3) SHA1(6049962f943bd37748a9531cc3254e8b59326eac) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.bin", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, sf2m1)
+{
+ uint16_t *mem16 = (uint16_t *)memregion("maincpu")->base();
+ mem16[0x64E/2] = 0x6046; // fix priorities
+
+ DRIVER_INIT_CALL(dinopic);
+
+}
+
+
+
+// ************************************************************************* SF2MDT, SF2MDTA
+
+
+/*
+CPU
+
+1x MC68000P12 (main)
+1x TPC1020AFN-084C (main)
+1x Z0840006PSC-Z80CPU (sound)
+1x YM2151 (sound)
+1x YM3012 (sound)
+2x M5205 (sound)
+2x LM324N (sound)
+1x TDA2003 (sound)
+1x oscillator 24.000000MHz
+1x oscillator 30.000MHz
+ROMs
+
+14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17)
+3x TMS27C010A (2,4,5)
+3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped)
+3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped)
+
+Note
+
+1x JAMMA edge connector
+1x trimmer (volume)
+3x 8x2 switches dip
+*/
+
+ROM_START( sf2mdt )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) )
+ ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) )
+ ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
+ ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+ ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
+ ROMX_LOAD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
+ ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+ROM_START( sf2mdta )
+/* unconfirmed if working on real hardware, pf4 is a bad dump (bad pin) */
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.mdta", 0x000000, 0x80000, CRC(9f544ef4) SHA1(f784809e59a5fcabd6d15d3f1c36250a5528c9f8) )
+ ROM_LOAD16_BYTE( "5.mdta", 0x000001, 0x80000, CRC(d76d6621) SHA1(aa9cea9ddace212a7b3c535b8f6e3fbc50da1f94) )
+ ROM_LOAD16_BYTE( "2.mdta", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
+ ROM_LOAD16_BYTE( "4.mdta", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "pf4 sh058.ic89", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf7 sh072.ic92", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf5 sh036.ic90", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf8 sh074.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf6 sh070.ic88", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf9 sh001.ic91", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d), ROM_GROUPWORD | ROM_SKIP(2) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
+ ROM_LOAD( "1.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+ROM_START( sf2mdtb )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(0bdb9da2) SHA1(5224ee81d94be70a84ffaa3a56b8093aa36d6b4f) ) // sldh
+ ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(d88abbce) SHA1(57667a92710bb1d37daed09262c3064d09cbf4af) ) // sldh
+ ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) ) // sldh
+ ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) ) // sldh
+
+ ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
+ ROMX_LOAD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
+ ROM_LOAD( "5.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+ROM_START( sf2b )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "pf1-2-sg076.bin", 0x000000, 0x100000, CRC(1d15bc7a) SHA1(834627545f191f39de6beb008c89623f2b88c13b) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "pf4-sg072.bin", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf7-sg103.bin", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf5-sg095.bin", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf8-sg101.bin", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf6-sg068.bin", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797), ROM_GROUPWORD | ROM_SKIP(2) )
+ ROMX_LOAD( "pf9-sh001.bin", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d), ROM_GROUPWORD | ROM_SKIP(2) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
+ ROM_LOAD( "3snd.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ROM_END
+
+
+ROM_START( sf2m9 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27040.6", 0x000000, 0x80000, CRC(16c6372e) SHA1(5d5a49392f2fb806e66e0ac137df00425ca52e7f) )
+ ROM_LOAD16_BYTE( "27040.5", 0x000001, 0x80000, CRC(137d5f2e) SHA1(835e9b767e6499f161c5c4fd9a31a9f54b3ee68f) )
+ ROM_LOAD16_BYTE( "27010.4", 0x100000, 0x20000, CRC(8226c11c) SHA1(9588bd64e338901394805aca8a234f880674dc60) )
+ ROM_LOAD16_BYTE( "27010.3", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
+
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "tat-01.bin", 0x000000, 0x40000, CRC(a887f7d4) SHA1(d7e0c46b3ab1c6352f45033cb9e610d9c34d51fb), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROMX_LOAD( "tat-05.bin", 0x000001, 0x40000, CRC(9390ff23) SHA1(b234169615aa952e3b15c7b0dfb495e499ba49ef), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROMX_LOAD( "tat-02.bin", 0x000002, 0x40000, CRC(afb3b589) SHA1(9721fa705d62814e416c38a6c3e698efb9385a98), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROMX_LOAD( "tat-06.bin", 0x000003, 0x40000, CRC(90f2053e) SHA1(a78710421e702b410650c45c3dec21bf16799fb4), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+
+ ROMX_LOAD( "tat-03.bin", 0x200000, 0x40000, CRC(79fa8bf0) SHA1(9f8f7b8dc54a75226beb017b9ca9fd62a9e42f6b), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "tat-07.bin", 0x200001, 0x40000, CRC(6a5f153c) SHA1(f3d82ad01e2e4bdb2039815747fa14399c69753a), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "tat-04.bin", 0x200002, 0x40000, CRC(32518120) SHA1(56ffa5fffb714cff8be8be5a3675b8a5fa29b2bc), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "tat-08.bin", 0x200003, 0x40000, CRC(c16579ae) SHA1(42c9d6df9f3b015f5d1ad4fa2b34ea90bb37bcae), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000)
+
+ ROMX_LOAD( "tat-09.bin", 0x400000, 0x40000, CRC(169d85a6) SHA1(dd98c8807e80465858b2eac10825e598c37e1a93), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x40000)
+ ROMX_LOAD( "tat-11.bin", 0x400001, 0x40000, CRC(32a3a841) SHA1(6f9a13b8828998d194dd3933b032c75efed9cab3), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x40000)
+ ROMX_LOAD( "tat-10.bin", 0x400002, 0x40000, CRC(0c638630) SHA1(709d183d181a0509c7ed839c59214851468d2bb8), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x40000)
+ ROMX_LOAD( "tat-12.bin", 0x400003, 0x40000, CRC(6ee19b94) SHA1(c45119d04879b6ca23a3f7749175c56b381b43f2), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x40000)
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "27512.1", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "27020.2", 0x00000, 0x40000, CRC(6cfffb11) SHA1(995526183ffd35f92e9096500a3fe6237faaa2dd) )
+
+ ROM_REGION( 0x00c8d, "pld", 0 ) /* pal/gal */
+ ROM_LOAD( "gal20v8.68kadd", 0x00000, 0x00c8d, CRC(27cdd376) SHA1(9fb5844b33002bec80fb92d3e5d1bbc779087300) )//68k address decoder
+
+ROM_END
+
+DRIVER_INIT_MEMBER(cps_state, sf2mdt)
+{
+ int i;
+ uint32_t gfx_size = memregion( "gfx" )->bytes();
+ uint8_t *rom = memregion( "gfx" )->base();
+ uint8_t tmp;
+
+ for( i = 0; i < gfx_size; i += 8 )
+ {
+ tmp = rom[i + 1];
+ rom[i + 1] = rom[i + 4];
+ rom[i + 4] = tmp;
+ tmp = rom[i + 3];
+ rom[i + 3] = rom[i + 6];
+ rom[i + 6] = tmp;
+ }
+
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16_delegate(FUNC(cps_state::sf2mdt_layer_w),this));
+ DRIVER_INIT_CALL(sf2mdta);
+}
+
+
+
+DRIVER_INIT_MEMBER(cps_state, sf2mdtb)
+{
+ int i;
+ uint32_t gfx_size = memregion( "gfx" )->bytes();
+ uint8_t *rom = memregion( "gfx" )->base();
+ uint8_t tmp;
+
+ for( i = 0; i < gfx_size; i += 8 )
+ {
+ tmp = rom[i + 1];
+ rom[i + 1] = rom[i + 4];
+ rom[i + 4] = tmp;
+ tmp = rom[i + 3];
+ rom[i + 3] = rom[i + 6];
+ rom[i + 6] = tmp;
+ }
+
+ /* bootleg sprite ram */
+ m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get());
+ m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped */
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+
+DRIVER_INIT_MEMBER(cps_state, sf2mdta)
+{
+ /* bootleg sprite ram */
+ m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get());
+ m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped - see the "Magic Delta Turbo" text on the title screen */
+
+ m_bootleg_work_ram = std::make_unique<uint16_t[]>(0x8000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get()); /* this has moved */
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+DRIVER_INIT_MEMBER(cps_state, sf2b)
+{
+ /* bootleg sprite ram */
+ m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get());
+ m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get());
+
+ DRIVER_INIT_CALL(cps1);
+}
+
+// ************************************************************************* SLAMPIC
+
+MACHINE_START_MEMBER(cps_state, slampic)
+{
+ m_layer_enable_reg = 0x16;
+ m_layer_mask_reg[0] = 0x00;
+ m_layer_mask_reg[1] = 0x02;
+ m_layer_mask_reg[2] = 0x28;
+ m_layer_mask_reg[3] = 0x2a;
+ m_layer_scroll1x_offset = 0x40;
+ m_layer_scroll2x_offset = 0x40;
+ m_layer_scroll3x_offset = 0x40;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0x8000;
+ m_sprite_x_offset = 0;
+}
+
+static MACHINE_CONFIG_START( slampic, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 12000000)
+ MCFG_CPU_PROGRAM_MAP(slampic_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ //MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000)
+ //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, slampic)
+
+ MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+ROM_START( slampic )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(7dba63cd) SHA1(222e781ffc40c5c23f5789c0682f549f00beeb8d) )
+ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(d86671f3) SHA1(d95fae27b0f4d3688f1c2229c9d3780724a870a8) )
+ ROM_LOAD16_BYTE( "4.bin", 0x100000, 0x80000, CRC(d14d0e42) SHA1(b60c44193b247dc4856bd36d69cbbe9dcb2d21a7) )
+ ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x80000, CRC(38063cd8) SHA1(e647433414ff4fdc0b2c4c7036b8995a95289efa) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "9.bin", 0x000000, 0x40000, CRC(dc140351) SHA1(0e69e1c8ded85ba26eb8236449d38ead0243ae78), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000004, 0x40000)
+ ROMX_LOAD( "8.bin", 0x000001, 0x40000, CRC(9ae88035) SHA1(3329e9582ca052940e115e759bb3d96f4a9c87fa), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000005, 0x40000)
+ ROMX_LOAD( "7.bin", 0x000002, 0x40000, CRC(5321f759) SHA1(7538a6587cf1077921b938070185e0a0ce5ca922), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000006, 0x40000)
+ ROMX_LOAD( "6.bin", 0x000003, 0x40000, CRC(c8eb5f76) SHA1(a361d2d2dfe71789736666b744ae5f1e4bf7e1b2), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x000007, 0x40000)
+ ROMX_LOAD( "17.bin", 0x200000, 0x40000, CRC(21652214) SHA1(039335251f6553c4f36e2d33e8b43fb5726e833e), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200004, 0x40000)
+ ROMX_LOAD( "16.bin", 0x200001, 0x40000, CRC(d49d2eb0) SHA1(1af01575340730166975be93bae438e2b0492f98), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200005, 0x40000)
+ ROMX_LOAD( "15.bin", 0x200002, 0x40000, CRC(0d98bfd6) SHA1(c11fbf555880a933a4cbf6faa517f59f8443304f), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200006, 0x40000)
+ ROMX_LOAD( "14.bin", 0x200003, 0x40000, CRC(807284f1) SHA1(c747c3eaade31c2633fb0a0682dbea900bf2b092), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x200007, 0x40000)
+ ROMX_LOAD( "13.bin", 0x400000, 0x40000, CRC(293579c5) SHA1(9adafe29664b20834365b339f7ae379cdb9ee138), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400004, 0x40000)
+ ROMX_LOAD( "12.bin", 0x400001, 0x40000, CRC(c3727ce7) SHA1(c4abc2c59152c59a45f85393e9525505bc2c9e6e), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400005, 0x40000)
+ ROMX_LOAD( "11.bin", 0x400002, 0x40000, CRC(2919883b) SHA1(44ad979daae673c77b3157d2b352797d4ad0ec24), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400006, 0x40000)
+ ROMX_LOAD( "10.bin", 0x400003, 0x40000, CRC(f538e620) SHA1(354cd0548b067dfc8782bbe13b0a9c2083dbd290), ROM_SKIP(7) )
+ ROM_CONTINUE( 0x400007, 0x40000)
+
+ ROM_REGION( 0x2000, "audiocpu", 0 ) /* PIC16c57 - protected, dump isn't valid */
+ ROM_LOAD( "pic16c57-xt-p.bin", 0x00000, 0x2000, BAD_DUMP CRC(aeae5ccc) SHA1(553afb68f7bf130cdf34e24512f72b4ecef1576f) )
+
+ ROM_REGION( 0x80000, "oki", 0 ) /* OKI6295 samples */
+ ROM_LOAD( "18.bin", 0x00000, 0x80000, CRC(73a0c11c) SHA1(a66e1a964313e21c4436200d36c598dcb277cd34) )
+
+ ROM_REGION( 0x20000, "user1", 0 ) // not in the dump, but needed for protection
+ ROM_LOAD( "mb_qa.5k", 0x00000, 0x20000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) )
+ROM_END
+
+
+// ************************************************************************* DRIVER MACROS
+
+GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", MACHINE_SUPPORTS_SAVE ) // 901012 ETC
+GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", MACHINE_SUPPORTS_SAVE ) // 901012 ETC
+
+GAME( 1993, dinopic, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930201 ETC
+GAME( 1993, dinopic2, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 930201 ETC
+
+GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ffightbl, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ffightbla, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg on Final Crash PCB)", MACHINE_SUPPORTS_SAVE ) // same as Final Crash without the modified gfx
+
+GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910731 "ETC"
+GAME( 1991, knightsb, knights, knightsb, knights, cps_state, dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version
+
+GAME( 1993, punipic, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic3, punisher, punipic, punisher, cps_state, punipic3, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+
+GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
+GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version
+GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2mdtb, sf2ce, sf2mdt, sf2mdtb, cps_state, sf2mdtb, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+
+GAME( 1992, sf2b, sf2, sf2b, sf2mdt, cps_state, sf2b, ROT0, "bootleg", "Street Fighter II: The World Warrior (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) //910204 - based on World version
+
+GAME( 1992, sf2m9, sf2ce, sf2m1, sf2, cps_state, dinopic, ROT0, "bootleg", "Street Fighter II': Champion Edition (M9, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
+
+GAME( 1993, slampic, slammast, slampic, slammast, cps_state, dinopic, ROT0, "bootleg", "Saturday Night Slam Masters (bootleg with PIC16c57)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930713 ETC
+
+GAME( 1999, sgyxz, wof, sgyxz, sgyxz, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 921005 - Sangokushi 2
+
+// HBMAME **********************************************/
+
+
+GAME( 1990, cawingb, cawing, cawingb, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+static ADDRESS_MAP_START( captcommb2_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x1fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
+ AM_RANGE(0x800180, 0x800181) AM_WRITE(fcrash_soundlatch_w) /* Sound command */
+ AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
+
+MACHINE_START_MEMBER(cps_state, captcommb2)
+{
+ uint8_t *ROM = memregion("audiocpu")->base();
+
+ membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
+
+ save_item(NAME(m_sample_buffer1));
+ save_item(NAME(m_sample_buffer2));
+ save_item(NAME(m_sample_select1));
+ save_item(NAME(m_sample_select2));
+}
+
+static MACHINE_CONFIG_START( captcommb2, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 10000000)
+ MCFG_CPU_PROGRAM_MAP(captcommb2_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 3579545)
+ MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state,captcommb2)
+ MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cps_state, screen_vblank_cps1))
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", cps1)
+ MCFG_PALETTE_ADD("palette", 4096)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+
+ MCFG_YM2151_ADD("2151", 3579545)
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* has 2x MSM5205 instead of OKI6295 */
+ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int1)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(cps_state, m5205_int2)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+ROM_START( captcommb2 )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(c3a6ed28) SHA1(f79fed35f7b0dc383837a2ead846acc686dd3487) )
+ ROM_LOAD16_BYTE( "4.bin", 0x000001, 0x80000, CRC(28729335) SHA1(6dd23c2d41e4e182434fe80c03d5c90785e6c0ce) )
+ ROM_LOAD16_BYTE( "3.bin", 0x100000, 0x40000, CRC(1b526d73) SHA1(3dd8dec61db4f4f5546937602a8fb01c639d72f8) )
+ ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x40000, CRC(73c99709) SHA1(e122e3771b698c44fb998589af0542b1f2a3876a) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "cap.bin", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-5m.3a
+ ROMX_LOAD( "cbp.bin", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-7m.5a
+ ROMX_LOAD( "ccp.bin", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-1m.4a
+ ROMX_LOAD( "cdp.bin", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-3m.6a
+ ROMX_LOAD( "cai.bin", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-6m.7a
+ ROMX_LOAD( "cbi.bin", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-8m.9a
+ ROMX_LOAD( "cci.bin", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-2m.8a
+ ROMX_LOAD( "cdi.bin", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-4m.10a
+
+ ROM_REGION( 0x50000, "audiocpu", 0 ) /* Sound program + samples */
+ ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(aed2f4bd) SHA1(3bd567dc350bf6ac3a349548790ad49eb5bd8307) )
+ ROM_RELOAD( 0x10000, 0x40000 )
+ROM_END
+
+
+GAME( 1991, captcommb2,captcomm, captcommb2,captcomm, cps_state, cps1, ROT0, "bootleg", "Captain Commando (bootleg with YM2151 + 2xMSM5205)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/flower.cpp b/docs/release/src/hbmame/drivers/flower.cpp
new file mode 100644
index 00000000000..89df651bed3
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/flower.cpp
@@ -0,0 +1,964 @@
+/*
+
+Flower (c)1986 Komax (USA license)
+ (c)1986 Sega/Alpha (Sega game number 834-5998)
+*/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "screen.h"
+#include "speaker.h"
+
+class flower_state : public driver_device
+{
+public:
+ flower_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_sn_nmi_enable(*this, "sn_nmi_enable")
+ , m_spriteram(*this, "spriteram")
+ , m_textram(*this, "textram")
+ , m_bg0ram(*this, "bg0ram")
+ , m_bg1ram(*this, "bg1ram")
+ , m_bg0_scroll(*this, "bg0_scroll")
+ , m_bg1_scroll(*this, "bg1_scroll")
+ , m_maincpu(*this, "maincpu")
+ , m_audiocpu(*this, "audiocpu")
+ , m_subcpu(*this, "subcpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ { }
+
+ DECLARE_READ8_MEMBER(soundlatch_byte_r);
+ DECLARE_WRITE8_MEMBER(flower_maincpu_irq_ack);
+ DECLARE_WRITE8_MEMBER(flower_subcpu_irq_ack);
+ DECLARE_WRITE8_MEMBER(flower_soundcpu_irq_ack);
+ DECLARE_WRITE8_MEMBER(flower_coin_counter_w);
+ DECLARE_WRITE8_MEMBER(flower_coin_lockout_w);
+ DECLARE_WRITE8_MEMBER(sound_command_w);
+ DECLARE_WRITE8_MEMBER(flower_textram_w);
+ DECLARE_WRITE8_MEMBER(flower_bg0ram_w);
+ DECLARE_WRITE8_MEMBER(flower_bg1ram_w);
+ DECLARE_WRITE8_MEMBER(flower_flipscreen_w);
+ DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
+ TILE_GET_INFO_MEMBER(get_bg0_tile_info);
+ TILE_GET_INFO_MEMBER(get_bg1_tile_info);
+ TILE_GET_INFO_MEMBER(get_text_tile_info);
+ uint32_t screen_update_flower(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+private:
+
+ uint8_t m_soundlatch;
+ tilemap_t *m_bg0_tilemap;
+ tilemap_t *m_bg1_tilemap;
+ tilemap_t *m_text_tilemap;
+ tilemap_t *m_text_right_tilemap;
+ virtual void video_start() override;
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
+ required_shared_ptr<uint8_t> m_sn_nmi_enable;
+ required_shared_ptr<uint8_t> m_spriteram;
+ required_shared_ptr<uint8_t> m_textram;
+ required_shared_ptr<uint8_t> m_bg0ram;
+ required_shared_ptr<uint8_t> m_bg1ram;
+ required_shared_ptr<uint8_t> m_bg0_scroll;
+ required_shared_ptr<uint8_t> m_bg1_scroll;
+ required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_audiocpu;
+ required_device<cpu_device> m_subcpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+};
+
+
+// ======================> flower_sound_device
+
+
+/* this structure defines the parameters for a channel */
+struct flower_sound_channel
+{
+ uint32_t start;
+ uint32_t pos;
+ uint16_t freq;
+ uint8_t volume;
+ uint8_t voltab;
+ uint8_t oneshot;
+ uint8_t active;
+ uint8_t effect;
+ uint32_t ecount;
+
+};
+
+class flower_sound_device : public device_t, public device_sound_interface
+{
+public:
+ flower_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ~flower_sound_device() {}
+
+ enum
+ {
+ TIMER_CLOCK_EFFECT
+ };
+
+ DECLARE_WRITE8_MEMBER( sound1_w );
+ DECLARE_WRITE8_MEMBER( sound2_w );
+
+protected:
+ // device-level overrides
+ virtual void device_config_complete() override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ // sound stream update overrides
+ virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
+
+private:
+ void make_mixer_table(int voices, int gain);
+
+ // internal state
+ emu_timer *m_effect_timer;
+
+ /* data about the sound system */
+ flower_sound_channel m_channel_list[8];
+ flower_sound_channel *m_last_channel;
+
+ /* global sound parameters */
+ const uint8_t *m_sample_rom;
+ const uint8_t *m_volume_rom;
+ sound_stream * m_stream;
+
+ /* mixer tables and internal buffers */
+ std::unique_ptr<int16_t[]> m_mixer_table;
+ int16_t *m_mixer_lookup;
+ std::unique_ptr<short[]> m_mixer_buffer;
+
+ uint8_t m_soundregs1[0x40];
+ uint8_t m_soundregs2[0x40];
+
+};
+
+extern const device_type FLOWER;
+
+READ8_MEMBER( flower_state::soundlatch_byte_r )
+{
+ return m_soundlatch;
+}
+
+WRITE8_MEMBER(flower_state::flower_maincpu_irq_ack)
+{
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+WRITE8_MEMBER(flower_state::flower_subcpu_irq_ack)
+{
+ m_subcpu->set_input_line(0, CLEAR_LINE);
+}
+
+WRITE8_MEMBER(flower_state::flower_soundcpu_irq_ack)
+{
+ m_audiocpu->set_input_line(0, CLEAR_LINE);
+}
+
+WRITE8_MEMBER(flower_state::flower_coin_counter_w)
+{
+ //coin_counter_w(machine(), 0, data & 1);
+}
+
+WRITE8_MEMBER(flower_state::flower_coin_lockout_w)
+{
+ //coin_lockout_global_w(machine(), ~data & 1);
+}
+
+WRITE8_MEMBER(flower_state::sound_command_w)
+{
+ m_soundlatch = data;
+ //soundlatch_byte_w(space, 0, data);
+
+ if (*m_sn_nmi_enable & 1)
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
+static ADDRESS_MAP_START( flower_cpu1_2, AS_PROGRAM, 8, flower_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xa000, 0xa000) AM_WRITE(flower_coin_lockout_w)
+ AM_RANGE(0xa001, 0xa001) AM_WRITE(flower_flipscreen_w)
+ AM_RANGE(0xa002, 0xa002) AM_WRITE(flower_maincpu_irq_ack)
+ AM_RANGE(0xa003, 0xa003) AM_WRITE(flower_subcpu_irq_ack)
+ AM_RANGE(0xa004, 0xa004) AM_WRITE(flower_coin_counter_w)
+ AM_RANGE(0xa005, 0xa005) AM_WRITENOP // subcpu nmi (unused)
+ AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN0CPU1")
+ AM_RANGE(0xa101, 0xa101) AM_READ_PORT("IN1CPU1")
+ AM_RANGE(0xa102, 0xa102) AM_READ_PORT("IN0CPU0")
+ AM_RANGE(0xa103, 0xa103) AM_READ_PORT("IN1CPU0")
+ AM_RANGE(0xa400, 0xa400) AM_WRITE(sound_command_w)
+ AM_RANGE(0xc000, 0xddff) AM_RAM AM_SHARE("mainram1")
+ AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(flower_textram_w) AM_SHARE("textram")
+ AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("mainram2") // only cleared?
+ AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(flower_bg0ram_w) AM_SHARE("bg0ram")
+ AM_RANGE(0xf200, 0xf200) AM_RAM AM_SHARE("bg0_scroll")
+ AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(flower_bg1ram_w) AM_SHARE("bg1ram")
+ AM_RANGE(0xfa00, 0xfa00) AM_RAM AM_SHARE("bg1_scroll")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( flower_sound_cpu, AS_PROGRAM, 8, flower_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x4000) AM_WRITE(flower_soundcpu_irq_ack)
+ AM_RANGE(0x4001, 0x4001) AM_WRITEONLY AM_SHARE("sn_nmi_enable")
+ AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r)
+ AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("flower", flower_sound_device, sound1_w)
+ AM_RANGE(0xa000, 0xa03f) AM_DEVWRITE("flower", flower_sound_device, sound2_w)
+ AM_RANGE(0xc000, 0xc7ff) AM_RAM
+ADDRESS_MAP_END
+
+
+INPUT_CHANGED_MEMBER(flower_state::coin_inserted)
+{
+ m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
+}
+
+static INPUT_PORTS_START( flower )
+ PORT_START("IN0CPU0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, flower_state,coin_inserted, 0)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME( 0x08, 0x08, "Energy Decrease" ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x08, "Slow" )
+ PORT_DIPSETTING( 0x00, "Fast" )
+ PORT_DIPNAME( 0x10, 0x10, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Keep Weapons When Destroyed" ) PORT_DIPLOCATION("SW2:6") // check code at 0x74a2
+ PORT_DIPSETTING( 0x20, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7") // "Enemy Bullets"
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, "Shot Range" ) PORT_DIPLOCATION("SW2:8") // check code at 0x75f9
+ PORT_DIPSETTING( 0x80, "Short" )
+ PORT_DIPSETTING( 0x00, "Long" )
+
+ PORT_START("IN1CPU0")
+ PORT_DIPNAME( 0x07, 0x05, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2,3")
+ PORT_DIPSETTING( 0x07, "1" )
+ PORT_DIPSETTING( 0x06, "2" )
+ PORT_DIPSETTING( 0x05, "3" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x03, "5" )
+ PORT_DIPSETTING( 0x02, "6" )
+ PORT_DIPSETTING( 0x01, "7" )
+ PORT_DIPSETTING( 0x00, "Infinite (Cheat)")
+ PORT_DIPNAME( 0x18, 0x18, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5")
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6") // check code at 0x759f
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, "30k, then every 50k" )
+ PORT_DIPSETTING( 0x00, "50k, then every 80k" )
+
+ PORT_START("IN0CPU1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Laser")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Missile")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Cutter")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1CPU1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Laser")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Missile")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Cutter")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+static const gfx_layout flower_charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 2,
+ { 0, 4 },
+ { STEP4(0,1), STEP4(8,1) },
+ { STEP8(0,16) },
+ 8*8*2
+};
+
+static const gfx_layout flower_tilelayout =
+{
+ 16,16,
+ RGN_FRAC(1,2),
+ 4,
+ { 0, 4, RGN_FRAC(1,2), RGN_FRAC(1,2)+4 },
+ { STEP4(0,1), STEP4(8,1), STEP4(8*8*2,1), STEP4(8*8*2+8,1) },
+ { STEP8(0,16), STEP8(8*8*4,16) },
+ 16*16*2
+};
+
+static GFXDECODE_START( flower )
+ GFXDECODE_ENTRY( "gfx1", 0, flower_charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx2", 0, flower_tilelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, flower_tilelayout, 0, 16 )
+GFXDECODE_END
+
+void flower_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ gfx_element *gfx = m_gfxdecode->gfx(1);
+ uint8_t *source = m_spriteram + 0x200;
+ uint8_t *finish = source - 0x200;
+
+ source -= 8;
+
+ while( source>=finish )
+ {
+ int xblock,yblock;
+ int sy = 256-32-source[0]+1;
+ int sx = (source[4]|(source[5]<<8))-55;
+ int code = source[1] & 0x3f;
+ int color = (source[6]>>4);
+
+ /*
+ Byte 0: Y
+ Byte 1:
+ 0x80 - FlipY
+ 0x40 - FlipX
+ 0x3f - Tile
+ Byte 2:
+ 0x08 - Tile MSB
+ 0x01 - Tile MSB
+ Byte 3:
+ 0x07 - X Zoom
+ 0x08 - X Size
+ 0x70 - Y Zoom
+ 0x80 - Y Size
+ Byte 4: X LSB
+ Byte 5: X MSB
+ Byte 6:
+ 0xf0 - Colour
+ */
+
+ int flipy = source[1] & 0x80;
+ int flipx = source[1] & 0x40;
+
+ int size = source[3];
+
+ int xsize = ((size & 0x08)>>3);
+ int ysize = ((size & 0x80)>>7);
+
+ xsize++;
+ ysize++;
+
+ if (ysize==2) sy -= 16;
+
+ code |= ((source[2] & 0x01) << 6);
+ code |= ((source[2] & 0x08) << 4);
+
+ if(flip_screen())
+ {
+ flipx = !flipx;
+ flipy = !flipy;
+ sx = sx+16;
+ sy = 250-sy;
+
+ if (ysize==2) sy += 16;
+ }
+
+ for (xblock = 0; xblock<xsize; xblock++)
+ {
+ int xoffs=!flipx ? (xblock*8) : ((xsize-xblock-1)*8);
+ int zoomx=((size&7)+1)<<13;
+ int zoomy=((size&0x70)+0x10)<<9;
+ int xblocksizeinpixels=(zoomx*16)>>16;
+ int yblocksizeinpixels=(zoomy*16)>>16;
+
+ for (yblock = 0; yblock<ysize; yblock++)
+ {
+ int yoffs=!flipy ? yblock : (ysize-yblock-1);
+ int sxoffs=(16-xblocksizeinpixels)/2;
+ int syoffs=(16-yblocksizeinpixels)/2;
+ if (xblock) sxoffs+=xblocksizeinpixels;
+ if (yblock) syoffs+=yblocksizeinpixels;
+
+ gfx->zoom_transpen(bitmap,cliprect,
+ code+yoffs+xoffs,
+ color,
+ flipx,flipy,
+ sx+sxoffs,sy+syoffs,
+ zoomx,zoomy,15);
+ }
+ }
+ source -= 8;
+ }
+
+}
+
+TILE_GET_INFO_MEMBER(flower_state::get_bg0_tile_info)
+{
+ int code = m_bg0ram[tile_index];
+ int color = m_bg0ram[tile_index+0x100];
+ /* Todo - may be tile flip bits? */
+
+ SET_TILE_INFO_MEMBER(2, code, color>>4, 0);
+}
+
+TILE_GET_INFO_MEMBER(flower_state::get_bg1_tile_info)
+{
+ int code = m_bg1ram[tile_index];
+ int color = m_bg1ram[tile_index+0x100];
+ /* Todo - may be tile flip bits? */
+
+ SET_TILE_INFO_MEMBER(2, code, color>>4, 0);
+}
+
+TILE_GET_INFO_MEMBER(flower_state::get_text_tile_info)
+{
+ int code = m_textram[tile_index];
+ int color = m_textram[tile_index+0x400];
+ /* Todo - may be tile flip bits? */
+
+ SET_TILE_INFO_MEMBER(0, code, color>>2, 0);
+}
+
+void flower_state::video_start()
+{
+ m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_bg0_tile_info),this), TILEMAP_SCAN_ROWS,16,16,16,16);
+ m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS,16,16,16,16);
+ m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32);
+ m_text_right_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_text_tile_info),this),TILEMAP_SCAN_COLS, 8, 8, 2,32);
+
+ m_bg1_tilemap->set_transparent_pen(15);
+ m_text_tilemap->set_transparent_pen(3);
+ m_text_right_tilemap->set_transparent_pen(3);
+
+ m_text_tilemap->set_scrolly(0, 16);
+ m_text_right_tilemap->set_scrolly(0, 16);
+}
+
+uint32_t flower_state::screen_update_flower(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ rectangle myclip = cliprect;
+
+ m_bg0_tilemap->set_scrolly(0, m_bg0_scroll[0]+16);
+ m_bg1_tilemap->set_scrolly(0, m_bg1_scroll[0]+16);
+
+ m_bg0_tilemap->draw(screen, bitmap, cliprect, 0,0);
+ m_bg1_tilemap->draw(screen, bitmap, cliprect, 0,0);
+
+ draw_sprites(bitmap,cliprect);
+
+ if(flip_screen())
+ {
+ myclip.min_x = cliprect.min_x;
+ myclip.max_x = cliprect.min_x + 15;
+ }
+ else
+ {
+ myclip.min_x = cliprect.max_x - 15;
+ myclip.max_x = cliprect.max_x;
+ }
+
+ m_text_tilemap->draw(screen, bitmap, cliprect, 0,0);
+ m_text_right_tilemap->draw(screen, bitmap, myclip, 0,0);
+ return 0;
+}
+
+WRITE8_MEMBER(flower_state::flower_textram_w)
+{
+ m_textram[offset] = data;
+ m_text_tilemap->mark_tile_dirty(offset);
+ m_text_right_tilemap->mark_all_dirty();
+}
+
+WRITE8_MEMBER(flower_state::flower_bg0ram_w)
+{
+ m_bg0ram[offset] = data;
+ m_bg0_tilemap->mark_tile_dirty(offset & 0x1ff);
+}
+
+WRITE8_MEMBER(flower_state::flower_bg1ram_w)
+{
+ m_bg1ram[offset] = data;
+ m_bg1_tilemap->mark_tile_dirty(offset & 0x1ff);
+}
+
+WRITE8_MEMBER(flower_state::flower_flipscreen_w)
+{
+ flip_screen_set(data);
+}
+
+
+static MACHINE_CONFIG_START( flower, flower_state )
+
+ /* basic machine hardware */
+ // clock divider (of all cpus) is unknown. /6 (3.072 MHz) is too slow
+ // cpus are Z80 "A" type, official maximum speed of 4 MHz, but 4.6 MHz has been proven to work in practice
+ MCFG_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/4)
+ MCFG_CPU_PROGRAM_MAP(flower_cpu1_2)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", flower_state, irq0_line_hold)
+
+ MCFG_CPU_ADD("subcpu", Z80,XTAL_18_432MHz/4)
+ MCFG_CPU_PROGRAM_MAP(flower_cpu1_2)
+ MCFG_CPU_PERIODIC_INT_DRIVER(flower_state, irq0_line_hold, 120) // controls game speed? irqsource and frequency unknown
+
+ MCFG_CPU_ADD("audiocpu", Z80,XTAL_18_432MHz/4)
+ MCFG_CPU_PROGRAM_MAP(flower_sound_cpu)
+ MCFG_CPU_PERIODIC_INT_DRIVER(flower_state, irq0_line_hold, 90) // controls music speed. irqsource and frequency unknown, same as subcpu perhaps?
+
+ // tight sync, slowdowns otherwise
+// MCFG_QUANTUM_PERFECT_CPU("maincpu")
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60) // ?
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(34*8, 33*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(flower_state, screen_update_flower)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", flower)
+ MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("flower", FLOWER, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+ROM_START( flower ) /* Komax version */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* main cpu */
+ ROM_LOAD( "1.5j", 0x0000, 0x8000, CRC(a4c3af78) SHA1(d149b0e0d82318273dd9cc5a143b175cdc818d0d) )
+
+ ROM_REGION( 0x10000, "subcpu", 0 ) /* sub cpu */
+ ROM_LOAD( "2.5f", 0x0000, 0x8000, CRC(7c7ee2d8) SHA1(1e67bfe0f3585be5a6e6719ccf9db764bafbcb01) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
+ ROM_LOAD( "3.d9", 0x0000, 0x4000, CRC(8866c2b0) SHA1(d00f31994673e8087a1406f98e8832d07cedeb66) ) // 1xxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT ) /* tx layer */
+ ROM_LOAD( "10.13e", 0x0000, 0x2000, CRC(62f9b28c) SHA1(d57d06b99e72a4f68f197a5b6c042c926cc70ca0) ) // FIRST AND SECOND HALF IDENTICAL
+
+ ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* sprites */
+ ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
+ ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
+ ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
+ ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
+
+ ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* bg layers */
+ ROM_LOAD( "8.10e", 0x0000, 0x2000, CRC(f85eb20f) SHA1(699edc970c359143dee6de2a97cc2a552454785b) )
+ ROM_LOAD( "6.7e", 0x2000, 0x2000, CRC(3e97843f) SHA1(4e4e5625dbf78eca97536b1428b2e49ad58c618f) )
+ ROM_LOAD( "9.12e", 0x4000, 0x2000, CRC(f1d9915e) SHA1(158e1cc8c402f9ae3906363d99f2b25c94c64212) )
+ ROM_LOAD( "15.9e", 0x6000, 0x2000, CRC(1cad9f72) SHA1(c38dbea266246ed4d47d12bdd8f9fae22a5f8bb8) )
+
+ ROM_REGION( 0x8000, "sound1", 0 )
+ ROM_LOAD( "4.12a", 0x0000, 0x8000, CRC(851ed9fd) SHA1(5dc048b612e45da529502bf33d968737a7b0a646) ) /* 8-bit samples */
+
+ ROM_REGION( 0x4000, "sound2", 0 )
+ ROM_LOAD( "5.16a", 0x0000, 0x4000, CRC(42fa2853) SHA1(cc1e8b8231d6f27f48b05d59390e93ea1c1c0e4c) ) /* volume tables? */
+
+ ROM_REGION( 0x300, "proms", 0 ) /* RGB proms */
+ ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
+ ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
+ ROM_LOAD( "82s129.k3", 0x0000, 0x0100, CRC(5aab7b41) SHA1(8d44639c7c9f1ba34fe9c4e74c8a38b6453f7ac0) ) // b
+
+ ROM_REGION( 0x0520, "user1", 0 ) /* Other proms, (zoom table?) */
+ ROM_LOAD( "82s147.d7", 0x0000, 0x0200, CRC(f0dbb2a7) SHA1(03cd8fd41d6406894c6931e883a9ac6a4a4effc9) )
+ ROM_LOAD( "82s147.j18", 0x0200, 0x0200, CRC(d7de0860) SHA1(5d3d8c5476b1edffdacde09d592c64e78d2b90c0) )
+ ROM_LOAD( "82s123.k7", 0x0400, 0x0020, CRC(ea9c65e4) SHA1(1bdd77a7f3ef5f8ec4dbb9524498c0c4a356f089) )
+ ROM_LOAD( "82s129.a1", 0x0420, 0x0100, CRC(c8dad3fc) SHA1(8e852efac70223d02e45b20ed8a12e38c5010a78) )
+ROM_END
+
+ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* main cpu */
+ ROM_LOAD( "1", 0x0000, 0x8000, CRC(63a2ef04) SHA1(0770f5a18d58b780abcda7e000c2a5e46f96d319) ) // hacked? "AKINA.N" changed to "JUKYUNG"
+
+ ROM_REGION( 0x10000, "subcpu", 0 ) /* sub cpu */
+ ROM_LOAD( "2.5f", 0x0000, 0x8000, CRC(7c7ee2d8) SHA1(1e67bfe0f3585be5a6e6719ccf9db764bafbcb01) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
+ ROM_LOAD( "3.d9", 0x0000, 0x4000, CRC(8866c2b0) SHA1(d00f31994673e8087a1406f98e8832d07cedeb66) ) // 1xxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT ) /* tx layer */
+ ROM_LOAD( "10.13e", 0x0000, 0x2000, CRC(62f9b28c) SHA1(d57d06b99e72a4f68f197a5b6c042c926cc70ca0) ) // FIRST AND SECOND HALF IDENTICAL
+
+ ROM_REGION( 0x8000, "gfx2", ROMREGION_INVERT ) /* sprites */
+ ROM_LOAD( "14.19e", 0x0000, 0x2000, CRC(11b491c5) SHA1(be1c4a0fbe8fd4e124c21e0f700efa0428376691) )
+ ROM_LOAD( "13.17e", 0x2000, 0x2000, CRC(ea743986) SHA1(bbef4fd0f7d21cc89a52061fa50d7c2ea37287bd) )
+ ROM_LOAD( "12.16e", 0x4000, 0x2000, CRC(e3779f7f) SHA1(8e12d06b3cdc2fcb7b77cc35f8eca45544cc4873) )
+ ROM_LOAD( "11.14e", 0x6000, 0x2000, CRC(8801b34f) SHA1(256059fcd16b21e076db1c18fd9669128df1d658) )
+
+ ROM_REGION( 0x8000, "gfx3", ROMREGION_INVERT ) /* bg layers */
+ ROM_LOAD( "8.10e", 0x0000, 0x2000, CRC(f85eb20f) SHA1(699edc970c359143dee6de2a97cc2a552454785b) )
+ ROM_LOAD( "6.7e", 0x2000, 0x2000, CRC(3e97843f) SHA1(4e4e5625dbf78eca97536b1428b2e49ad58c618f) )
+ ROM_LOAD( "9.12e", 0x4000, 0x2000, CRC(f1d9915e) SHA1(158e1cc8c402f9ae3906363d99f2b25c94c64212) )
+ ROM_LOAD( "7.9e", 0x6000, 0x2000, CRC(e350f36c) SHA1(f97204dc95b4000c268afc053a2333c1629e07d8) )
+
+ ROM_REGION( 0x8000, "sound1", 0 )
+ ROM_LOAD( "4.12a", 0x0000, 0x8000, CRC(851ed9fd) SHA1(5dc048b612e45da529502bf33d968737a7b0a646) ) /* 8-bit samples */
+
+ ROM_REGION( 0x4000, "sound2", 0 )
+ ROM_LOAD( "5.16a", 0x0000, 0x4000, CRC(42fa2853) SHA1(cc1e8b8231d6f27f48b05d59390e93ea1c1c0e4c) ) /* volume tables? */
+
+ ROM_REGION( 0x300, "proms", 0 ) /* RGB proms */
+ ROM_LOAD( "82s129.k1", 0x0200, 0x0100, CRC(d311ed0d) SHA1(1d530c874aecf93133d610ab3ce668548712913a) ) // r
+ ROM_LOAD( "82s129.k2", 0x0100, 0x0100, CRC(ababb072) SHA1(a9d46d12534c8662c6b54df94e96907f3a156968) ) // g
+ ROM_LOAD( "82s129.k3", 0x0000, 0x0100, CRC(5aab7b41) SHA1(8d44639c7c9f1ba34fe9c4e74c8a38b6453f7ac0) ) // b
+
+ ROM_REGION( 0x0520, "user1", 0 ) /* Other proms, (zoom table?) */
+ ROM_LOAD( "82s147.d7", 0x0000, 0x0200, CRC(f0dbb2a7) SHA1(03cd8fd41d6406894c6931e883a9ac6a4a4effc9) )
+ ROM_LOAD( "82s147.j18", 0x0200, 0x0200, CRC(d7de0860) SHA1(5d3d8c5476b1edffdacde09d592c64e78d2b90c0) )
+ ROM_LOAD( "82s123.k7", 0x0400, 0x0020, CRC(ea9c65e4) SHA1(1bdd77a7f3ef5f8ec4dbb9524498c0c4a356f089) )
+ ROM_LOAD( "82s129.a1", 0x0420, 0x0100, CRC(c8dad3fc) SHA1(8e852efac70223d02e45b20ed8a12e38c5010a78) )
+ROM_END
+
+
+GAME( 1986, flower, 0, flower, flower, driver_device, 0, ROT0, "Clarue (Komax license)", "Flower (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, flowerj, flower, flower, flower, driver_device, 0, ROT0, "Clarue (Sega / Alpha Denshi Co. license)", "Flower (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+
+
+/* Clarue Flower sound driver.
+Initial version was based on the Wiping sound driver, which was based on the old namco.c sound driver.
+
+TODO:
+- timing (see main driver file), but also of samplerate and effects counter
+- what do the unknown bits in soundregs do?
+- Are channel effects correct? It's currently mostly guesswork, the pitch effects sound pretty convincing though.
+ Considering that the game sound hardware isn't complicated (no dedicated soundchip) these bits are possibly
+ for something way simpler, such as a length counter. PCB sound recordings would be useful!
+
+*/
+
+#define FLOWER_VERBOSE 0 // show register writes
+
+#define MIXER_SAMPLERATE 48000 /* ? (native freq is probably in the MHz range) */
+#define MIXER_DEFGAIN 48
+
+
+const device_type FLOWER = device_creator<flower_sound_device>;
+
+flower_sound_device::flower_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, FLOWER, "Flower Audio Custom", tag, owner, clock, "flower_sound", __FILE__),
+ device_sound_interface(mconfig, *this)
+{
+}
+
+//-------------------------------------------------
+// device_config_complete - perform any
+// operations now that the configuration is
+// complete
+//-------------------------------------------------
+
+void flower_sound_device::device_config_complete()
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void flower_sound_device::device_start()
+{
+ flower_sound_channel *voice;
+
+ m_effect_timer = timer_alloc(TIMER_CLOCK_EFFECT);
+ m_stream = machine().sound().stream_alloc(*this, 0, 1, MIXER_SAMPLERATE);
+ m_mixer_buffer = std::make_unique<short[]>(MIXER_SAMPLERATE);
+ make_mixer_table(8, MIXER_DEFGAIN);
+
+ /* extract globals from the interface */
+ m_last_channel = m_channel_list + 8;
+
+ m_sample_rom = machine().root_device().memregion("sound1")->base();
+ m_volume_rom = machine().root_device().memregion("sound2")->base();
+
+ /* register for savestates */
+ for (int i = 0; i < 8; i++)
+ {
+ voice = &m_channel_list[i];
+
+ save_item(NAME(voice->freq), i+1);
+ save_item(NAME(voice->pos), i+1);
+ save_item(NAME(voice->volume), i+1);
+ save_item(NAME(voice->voltab), i+1);
+ save_item(NAME(voice->effect), i+1);
+ save_item(NAME(voice->ecount), i+1);
+ save_item(NAME(voice->oneshot), i+1);
+ save_item(NAME(voice->active), i+1);
+ save_item(NAME(voice->start), i+1);
+ }
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void flower_sound_device::device_reset()
+{
+ flower_sound_channel *voice;
+ attotime period;
+
+ /* reset effect timer, period is unknown/guessed */
+ period = attotime::from_hz(MIXER_SAMPLERATE / 256);
+ m_effect_timer->adjust(period, 0, period);
+
+ /* reset all the voices */
+ for (auto & elem : m_channel_list)
+ {
+ voice = &elem;
+
+ voice->freq = 0;
+ voice->pos = 0;
+ voice->volume = 0;
+ voice->voltab = 0;
+ voice->effect = 0;
+ voice->ecount = 0;
+ voice->oneshot = 1;
+ voice->active = 0;
+ voice->start = 0;
+ }
+
+ memset(m_soundregs1, 0, 0x40);
+ memset(m_soundregs2, 0, 0x40);
+}
+
+/* build a table to divide by the number of voices; gain is specified as gain*16 */
+void flower_sound_device::make_mixer_table(int voices, int gain)
+{
+ int count = voices * 128;
+
+ /* allocate memory */
+ m_mixer_table = std::make_unique<int16_t[]>(256 * voices);
+
+ /* find the middle of the table */
+ m_mixer_lookup = m_mixer_table.get() + (128 * voices);
+
+ /* fill in the table - 16 bit case */
+ for (int i = 0; i < count; i++)
+ {
+ int val = i * gain * 16 / voices;
+ if (val > 32767) val = 32767;
+ m_mixer_lookup[ i] = val;
+ m_mixer_lookup[-i] =-val;
+ }
+}
+
+
+/* clock sound channel effect counters */
+void flower_sound_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_CLOCK_EFFECT:
+ flower_sound_channel *voice;
+ m_stream->update();
+
+ for (voice = m_channel_list; voice < m_last_channel; voice++)
+ voice->ecount += (voice->ecount < (1<<22));
+ break;
+
+ default:
+ assert_always(false, "Unknown id in flower_sound_device::device_timer");
+ }
+}
+
+/********************************************************************************/
+
+#if FLOWER_VERBOSE
+static int r_numwrites[2][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};
+void flower_sound_device::show_soundregs()
+{
+ int set,reg,chan;
+ char text[0x100];
+ char message[0x1000] = {0};
+ uint8_t *base = m_soundregs1;
+
+ for (set=0;set<2;set++)
+ {
+ for (reg=0;reg<8;reg++)
+ {
+ sprintf(text,"R%d%d:",set+1,reg);
+ strcat(message,text);
+
+ for (chan=0;chan<8;chan++)
+ {
+ sprintf(text," %02X",base[reg + 8*chan]);
+ strcat(message,text);
+ }
+ sprintf(text," - %07d\n",r_numwrites[set][reg]);
+ strcat(message,text);
+ }
+ strcat(message,"\n");
+ base = m_soundregs2;
+ }
+ popmessage("%s",message);
+}
+#endif // FLOWER_VERBOSE
+
+
+/* register functions (preliminary):
+offset: cccrrr c=channel, r=register
+
+set 1:
+R 76543210
+0 xxxxxxxx frequency (which nibble?)
+1 xxxxxxxx *
+2 xxxxxxxx *
+3 xxxxxxxx *
+4 ...x.... one-shot sample
+5 ...x.... ??? same as R4?
+6 ........ unused
+7 xxxx.... volume
+
+set 2:
+R 76543210
+0 ....xxxx start address
+1 ....xxxx *
+2 ....xxxx *
+3 ....xxxx *
+4 xxxx assume it's channel pitch/volume effects
+ xxxx start address
+5 x... ???
+ xxxx start address
+6 ........ unused
+7 ......xx volume table + start trigger
+
+*/
+
+WRITE8_MEMBER( flower_sound_device::sound1_w )
+{
+ flower_sound_channel *voice = &m_channel_list[offset >> 3 & 7];
+ int c = offset & 0xf8;
+ uint8_t *base1 = m_soundregs1;
+// uint8_t *base2 = m_soundregs2;
+
+ m_stream->update();
+ base1[offset] = data;
+#if FLOWER_VERBOSE
+ r_numwrites[0][offset & 7]++;
+ show_soundregs();
+#endif
+
+ // recompute voice parameters
+ voice->freq = (base1[c+2] & 0xf) << 12 | (base1[c+3] & 0xf) << 8 | (base1[c+0] & 0xf) << 4 | (base1[c+1] & 0xf);
+ voice->volume = base1[c+7] >> 4;
+}
+
+WRITE8_MEMBER( flower_sound_device::sound2_w )
+{
+ flower_sound_channel *voice = &m_channel_list[offset >> 3 & 7];
+ int i, c = offset & 0xf8;
+ uint8_t *base1 = m_soundregs1;
+ uint8_t *base2 = m_soundregs2;
+
+ m_stream->update();
+ base2[offset] = data;
+#if FLOWER_VERBOSE
+ r_numwrites[1][offset & 7]++;
+ show_soundregs();
+#endif
+
+ // reg 7 is start trigger!
+ if ((offset & 7) != 7)
+ return;
+
+ voice->voltab = (base2[c+7] & 3) << 4;
+ voice->oneshot = (~base1[c+4] & 0x10) >> 4;
+ voice->effect = base2[c+4] >> 4;
+ voice->ecount = 0;
+ voice->pos = 0;
+ voice->active = 1;
+
+ // full start address is 6 nibbles
+ voice->start = 0;
+ for (i = 5; i >= 0; i--)
+ voice->start = (voice->start << 4) | (base2[c+i] & 0xf);
+}
+
+
+//-------------------------------------------------
+// sound_stream_update - handle a stream update
+//-------------------------------------------------
+
+void flower_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+{
+ stream_sample_t *buffer = outputs[0];
+ flower_sound_channel *voice;
+ short *mix;
+ int i;
+
+ /* zap the contents of the mixer buffer */
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
+
+ /* loop over each voice and add its contribution */
+ for (voice = m_channel_list; voice < m_last_channel; voice++)
+ {
+ int f = voice->freq;
+ int v = voice->volume;
+
+ if (!voice->active)
+ continue;
+
+ // effects
+ // bit 0: volume slide down?
+ if (voice->effect & 1 && !voice->oneshot)
+ {
+ // note: one-shot samples are fixed volume
+ v -= (voice->ecount >> 4);
+ if (v < 0) v = 0;
+ }
+ // bit 1: used often, but hard to figure out what for
+ // bit 2: probably pitch slide
+ if (voice->effect & 4)
+ {
+ f -= (voice->ecount << 7);
+ if (f < 0) f = 0;
+ }
+ // bit 3: not used much, maybe pitch slide the other way?
+
+ v |= voice->voltab;
+ mix = m_mixer_buffer.get();
+
+ for (i = 0; i < samples; i++)
+ {
+ // add sample
+ if (voice->oneshot)
+ {
+ uint8_t sample = m_sample_rom[(voice->start + voice->pos) >> 7 & 0x7fff];
+ if (sample == 0xff)
+ {
+ voice->active = 0;
+ break;
+ }
+ else
+ *mix++ += m_volume_rom[v << 8 | sample] - 0x80;
+ }
+ else
+ {
+ uint8_t sample = m_sample_rom[(voice->start >> 7 & 0x7e00) | (voice->pos >> 7 & 0x1ff)];
+ *mix++ += m_volume_rom[v << 8 | sample] - 0x80;
+ }
+
+ // update counter
+ voice->pos += f;
+ }
+ }
+
+ /* mix it down */
+ mix = m_mixer_buffer.get();
+ for (i = 0; i < samples; i++)
+ *buffer++ = m_mixer_lookup[*mix++];
+}
diff --git a/docs/release/src/hbmame/drivers/galaga.cpp b/docs/release/src/hbmame/drivers/galaga.cpp
new file mode 100644
index 00000000000..5ba58db8eb2
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/galaga.cpp
@@ -0,0 +1,1105 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/galaga.cpp"
+
+// Produce pacman death sound in galagost
+WRITE8_MEMBER( galaga_hbmame::galaga_sample_w )
+{
+ switch ( data )
+ {
+ case 0x20: /* loud bang */
+ m_samples->start(0, 0);
+ case 0x10: /* soft bang */
+ break;
+ default:
+ m_06xx->data_w ( space, offset, data );
+ }
+}
+
+static const char *const galagost_sample_names[] =
+{
+ "*galagost",
+ "bang",
+ 0 /* end of array */
+};
+
+static ADDRESS_MAP_START( galagost_map, AS_PROGRAM, 8, galaga_hbmame )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */
+ AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r)
+ AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x6820, 0x6827) AM_WRITE(bosco_latch_w) /* misc latches */
+ AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x7000, 0x70ff) AM_DEVREAD("06xx", namco_06xx_device, data_r) AM_WRITE(galaga_sample_w)
+ AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w)
+ AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(galaga_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("galaga_ram1")
+ AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("galaga_ram2")
+ AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("galaga_ram3")
+ AM_RANGE(0xa000, 0xa005) AM_WRITEONLY AM_SHARE("starcontrol")
+ AM_RANGE(0xa007, 0xa007) AM_WRITE(galaga_flip_screen_w)
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED_CLASS( galagost, galaga, galaga_hbmame )
+ MCFG_CPU_MODIFY( "maincpu" )
+ MCFG_CPU_PROGRAM_MAP(galagost_map)
+
+ /* sound hardware */
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(1)
+ MCFG_SAMPLES_NAMES(galagost_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
+
+// galaga hacks
+
+ROM_START( galagabl )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1-1", 0x0000, 0x1000, CRC(a3a0f743) SHA1(6907773db7c002ecde5e41853603d53387c5c7cd) )
+ ROM_LOAD( "galagabl.1_2", 0x1000, 0x1000, CRC(f1d87ec3) SHA1(44034b4f015d9e876253d2827e05f3d41133e097) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1-4", 0x3000, 0x1000, CRC(83874442) SHA1(366cb0dbd31b787e64f88d182108b670d03b393e) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x10000, "sub3", 0 )
+ ROM_LOAD( "galagabl.1_6", 0x0000, 0x1000, CRC(001b70bc) SHA1(b465eee91e75257b7b049d49c0064ab5fd66c576) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "prom-4.2n", 0x0020, 0x0100, CRC(59b6edab) SHA1(0281de86c236c88739297ff712e0a4f5c8bf8ab9) )
+ ROM_LOAD( "prom-3.1c", 0x0120, 0x0100, CRC(4a04bb6b) SHA1(cdd4bc1013f5c11984fdc4fd10e2d2e27120c1e5) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "prom-1.1d", 0x0000, 0x0100, CRC(7a2815b4) SHA1(085ada18c498fdb18ecedef0ea8fe9217edb7b46) )
+ ROM_LOAD( "prom-2.5c", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( galagab2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1_1b.3p", 0x0000, 0x1000, CRC(ab036c9f) SHA1(ca7f5da42d4e76fd89bb0b35198a23c01462fbfe) )
+ ROM_LOAD( "gg1_2b.3m", 0x1000, 0x1000, CRC(d9232240) SHA1(ab202aa259c3d332ef13dfb8fc8580ce2a5a253d) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1_4b.2l", 0x3000, 0x1000, CRC(499fcc76) SHA1(ddb8b121903646c320939c7d13f4aa4ebb130378) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x10000, "sub3", 0 )
+ ROM_LOAD( "10h_g07.bin", 0x0000, 0x1000, CRC(035e300c) SHA1(cfda2467e71c27381b7150ff8fc7b69d61df123a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gallag.8", 0x0000, 0x1000, CRC(169a98a4) SHA1(edbeb11076061e744ea88d9899dbdfe0964c7e78) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galaga84 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1_1b.3p", 0x0000, 0x1000, CRC(ab036c9f) SHA1(ca7f5da42d4e76fd89bb0b35198a23c01462fbfe) )
+ ROM_LOAD( "gal84_u2", 0x1000, 0x1000, CRC(4d832a30) SHA1(88ee11df88cf08005efccd6305f87fb3e2797db6) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1_4b.2l", 0x3000, 0x1000, CRC(499fcc76) SHA1(ddb8b121903646c320939c7d13f4aa4ebb130378) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1_5b.3f", 0x0000, 0x1000, CRC(bb5caae3) SHA1(e957a581463caac27bc37ca2e2a90f27e4f62b6f) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x10000, "sub3", 0 )
+ ROM_LOAD( "10h_g07.bin", 0x0000, 0x1000, CRC(035e300c) SHA1(cfda2467e71c27381b7150ff8fc7b69d61df123a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gal84u4d", 0x0000, 0x1000, CRC(22e339d5) SHA1(9ac2887ede802d28daa4ad0a0a54bcf7b1155a2e) )
+ ROM_LOAD( "gal84u4e", 0x1000, 0x1000, CRC(60dcf940) SHA1(6530aa5b4afef4a8422ece76a93d0c5b1d93355e) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( nebulbee )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "nebulbee.01", 0x0000, 0x1000, CRC(f405f2c4) SHA1(9249afeffd8df0f24539ea9b4f88c23a6ad58d8c) )
+ ROM_LOAD( "nebulbee.02", 0x1000, 0x1000, CRC(31022b60) SHA1(90e64afb4128c6dfeeee89635ea9f97a34f70f5f) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "nebulbee.04", 0x3000, 0x1000, CRC(d76788a5) SHA1(adcb83cf64951d86c701a99b410e9230912f8a48) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galagads )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600fast.bin", 0x0000, 0x1000, CRC(23d586e5) SHA1(43346c69385e9091e64cff6c027ac2689cafcbb9) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galaga99 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1-1", 0x0000, 0x1000, CRC(a3a0f743) SHA1(6907773db7c002ecde5e41853603d53387c5c7cd) )
+ ROM_LOAD( "g99-04k_g02.bin", 0x1000, 0x1000, CRC(ab0df3ac) SHA1(29c5bce17baa6778fad5faff1a241021e143e29f) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "g99-04h_g04.bin", 0x3000, 0x1000, CRC(b9a315fb) SHA1(3422dbd1fe116f9193dcccb1dba691eb98eab3aa) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "g99-07m_g08.bin", 0x0000, 0x1000, CRC(cc091e8b) SHA1(b71b962d5cd71fa78f0709b5cccf549cb7f4e9f0) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "g99-07e_g10.bin", 0x0000, 0x1000, CRC(2b493359) SHA1(e006ee999277120f01d1669ffe28df0b96415af5) )
+ ROM_LOAD( "g99-07h_g09.bin", 0x1000, 0x1000, CRC(cdbb428d) SHA1(6c8dfb5da2bee99f07585e23ecfa21c67218cddb) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galagaf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg_5fast.bin", 0x0000, 0x1000, CRC(ae82145e) SHA1(146bd848e9783f34b1a006d793ee3f36e53baad0) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "prom-4.2n", 0x0020, 0x0100, CRC(59b6edab) SHA1(0281de86c236c88739297ff712e0a4f5c8bf8ab9) )
+ ROM_LOAD( "prom-3.1c", 0x0120, 0x0100, CRC(4a04bb6b) SHA1(cdd4bc1013f5c11984fdc4fd10e2d2e27120c1e5) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "prom-1.1d", 0x0000, 0x0100, CRC(7a2815b4) SHA1(085ada18c498fdb18ecedef0ea8fe9217edb7b46) )
+ ROM_LOAD( "prom-2.5c", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+/* This set has the fix proposed by Don Hodges at the page:
+ http://donhodges.com/galaga_stage_256_fix.htm */
+ROM_START( galagap )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1_1b.3p", 0x0000, 0x1000, CRC(ab036c9f) SHA1(ca7f5da42d4e76fd89bb0b35198a23c01462fbfe) )
+ ROM_LOAD( "gg1_2b.3m", 0x1000, 0x1000, CRC(d9232240) SHA1(ab202aa259c3d332ef13dfb8fc8580ce2a5a253d) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1_4b.2l", 0x3000, 0x1000, CRC(499fcc76) SHA1(ddb8b121903646c320939c7d13f4aa4ebb130378) )
+ ROM_FILL(0x25c4,1,0xa7)
+ ROM_FILL(0x25d0,1,0x00)
+ ROM_FILL(0x2fff,1,0xb2)
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1_5b.3f", 0x0000, 0x1000, CRC(bb5caae3) SHA1(e957a581463caac27bc37ca2e2a90f27e4f62b6f) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1_7b.2c", 0x0000, 0x1000, CRC(d016686b) SHA1(44c1a04fba3c7c826ff484185cb881b4b22e6657) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gg1_11.4d", 0x0000, 0x1000, CRC(ad447c80) SHA1(e697c180178cabd1d32483c5d8889a40633f7857) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "prom-4.2n", 0x0020, 0x0100, CRC(59b6edab) SHA1(0281de86c236c88739297ff712e0a4f5c8bf8ab9) )
+ ROM_LOAD( "prom-3.1c", 0x0120, 0x0100, CRC(4a04bb6b) SHA1(cdd4bc1013f5c11984fdc4fd10e2d2e27120c1e5) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "prom-1.1d", 0x0000, 0x0100, CRC(7a2815b4) SHA1(085ada18c498fdb18ecedef0ea8fe9217edb7b46) )
+ ROM_LOAD( "prom-2.5c", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( galagix )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1-1", 0x0000, 0x1000, CRC(a3a0f743) SHA1(6907773db7c002ecde5e41853603d53387c5c7cd) )
+ ROM_LOAD( "gg1-2", 0x1000, 0x1000, CRC(43bb0d5c) SHA1(666975aed5ce84f09794c54b550d64d95ab311f0) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1-4", 0x3000, 0x1000, CRC(83874442) SHA1(366cb0dbd31b787e64f88d182108b670d03b393e) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gx_07m_g08.bin", 0x0000, 0x1000, CRC(4b0a6b29) SHA1(1707bdfab7a17579b4171417d86ae76e065299c5) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gx_07e_g10.bin", 0x0000, 0x1000, CRC(b52a7dff) SHA1(1bf1cf9db72d16d1e6539d4fc05bbee071cc3420) )
+ ROM_LOAD( "gx_07h_g09.bin", 0x1000, 0x1000, CRC(ffd5c70e) SHA1(5eac91087129ec8038feabdb18cb3199e52cae23) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galagost )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600fast.bin", 0x0000, 0x1000, CRC(23d586e5) SHA1(43346c69385e9091e64cff6c027ac2689cafcbb9) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gost_07m_g08.bin", 0x0000, 0x1000, CRC(c7588555) SHA1(269362b7fe63007b317ee4b63ef7d09f24d9c362) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gost_07e_g10.bin", 0x0000, 0x1000, CRC(0758b90f) SHA1(89cc8db9457fa5f56b49930590f32aba1bc55323) )
+ ROM_LOAD( "gost_07h_g09.bin", 0x1000, 0x1000, CRC(53f1332b) SHA1(04136e52008c4ad4813529d633fd9b8c71e6ccc0) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galagosb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600fast.bin", 0x0000, 0x1000, CRC(23d586e5) SHA1(43346c69385e9091e64cff6c027ac2689cafcbb9) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gost_07m_g08.bin", 0x0000, 0x1000, CRC(c7588555) SHA1(269362b7fe63007b317ee4b63ef7d09f24d9c362) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gost_07e_g10.bin", 0x0000, 0x1000, CRC(0758b90f) SHA1(89cc8db9457fa5f56b49930590f32aba1bc55323) )
+ ROM_LOAD( "gosb_07h_g09.bin", 0x1000, 0x1000, CRC(0339291c) SHA1(4958a78b6afb9f2b4f46d3c0f654843c077686a9) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galaped )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600fast.bin", 0x0000, 0x1000, CRC(23d586e5) SHA1(43346c69385e9091e64cff6c027ac2689cafcbb9) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "ped_07m_g08.bin", 0x0000, 0x1000, CRC(d4fda6a5) SHA1(c1d39bfa2ad866e726b77f15ca22ef97ac3f51a4) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "ped_07e_g10.bin", 0x0000, 0x1000, CRC(1d0a2438) SHA1(66a4d7120f926a67dac0203b73c60917e5c140cf) )
+ ROM_LOAD( "ped_07h_g09.bin", 0x1000, 0x1000, CRC(11d9b093) SHA1(8f151f4813ca7a80a228f2123cc089de414bc3f9) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galgaxin )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600e.bin", 0x0000, 0x1000, CRC(bc556e76) SHA1(0d3d68243c4571d985b4d8f7e0ea9f6fcffa2116) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "2600j_4l.bin", 0x0000, 0x1000, CRC(10fa1481) SHA1(09f56503251cc29cf2131d2a0c5bcca4ee276e70) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "2800l_4d.bin", 0x0000, 0x1000, CRC(bf803b06) SHA1(ab0051b3b08f03ad93d100f38b106e761d4c4607) )
+ ROM_LOAD( "2700k.bin", 0x1000, 0x1000, CRC(020906a3) SHA1(72e63918556ae366ede3ffad64a9d3ad4df1e514) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( galagaef )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600e.bin", 0x0000, 0x1000, CRC(bc556e76) SHA1(0d3d68243c4571d985b4d8f7e0ea9f6fcffa2116) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "terror.bin", 0x0000, 0x1000, CRC(1b629f80) SHA1(6db66601fd357400edf3dc1d689255c64a46a72d) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "prom-4.2n", 0x0020, 0x0100, CRC(59b6edab) SHA1(0281de86c236c88739297ff712e0a4f5c8bf8ab9) )
+ ROM_LOAD( "prom-3.1c", 0x0120, 0x0100, CRC(4a04bb6b) SHA1(cdd4bc1013f5c11984fdc4fd10e2d2e27120c1e5) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "prom-1.1d", 0x0000, 0x0100, CRC(7a2815b4) SHA1(085ada18c498fdb18ecedef0ea8fe9217edb7b46) )
+ ROM_LOAD( "prom-2.5c", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( terror )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "gg1-1", 0x0000, 0x1000, CRC(a3a0f743) SHA1(6907773db7c002ecde5e41853603d53387c5c7cd) )
+ ROM_LOAD( "gg1-2", 0x1000, 0x1000, CRC(43bb0d5c) SHA1(666975aed5ce84f09794c54b550d64d95ab311f0) )
+ ROM_LOAD( "gg1_3.2m", 0x2000, 0x1000, CRC(753ce503) SHA1(481f443aea3ed3504ec2f3a6bfcf3cd47e2f8f81) )
+ ROM_LOAD( "gg1-4", 0x3000, 0x1000, CRC(83874442) SHA1(366cb0dbd31b787e64f88d182108b670d03b393e) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "gg1-5", 0x0000, 0x1000, CRC(3102fccd) SHA1(d29b68d6aab3217fa2106b3507b9273ff3f927bf) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "gg1-7", 0x0000, 0x1000, CRC(8995088d) SHA1(d6cb439de0718826d1a0363c9d77de8740b18ecf) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gg1_9.4l", 0x0000, 0x1000, CRC(58b2f47c) SHA1(62f1279a784ab2f8218c4137c7accda00e6a3490) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "terror.bin", 0x0000, 0x1000, CRC(1b629f80) SHA1(6db66601fd357400edf3dc1d689255c64a46a72d) )
+ ROM_LOAD( "gg1_10.4f", 0x1000, 0x1000, CRC(dd6f1afc) SHA1(c340ed8c25e0979629a9a1730edc762bd72d0cff) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( vgalaga )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600e.bin", 0x0000, 0x1000, CRC(bc556e76) SHA1(0d3d68243c4571d985b4d8f7e0ea9f6fcffa2116) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "v_07m_g08.bin", 0x0000, 0x1000, CRC(bf59992f) SHA1(78f1e01affca694693254ecfedebdb05cb8d3b82) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "v_07e_g10.bin", 0x0000, 0x1000, CRC(3cf64d44) SHA1(54035738c6b0eed3331f11c53477cf87f07a8422) )
+ ROM_LOAD( "v_07h_g09.bin", 0x1000, 0x1000, CRC(206bf7fc) SHA1(7510ed4a6c084f555cd5a6cd6fbc862f4797656f) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( vgalagam )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600e.bin", 0x0000, 0x1000, CRC(bc556e76) SHA1(0d3d68243c4571d985b4d8f7e0ea9f6fcffa2116) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "vgalagaf.08", 0x0000, 0x1000, CRC(c1bdeb1c) SHA1(7f07a9da708066401710b0b62b98e324ebbc2bca) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "vgalagaf.10", 0x0000, 0x1000, CRC(99367e04) SHA1(7e140e2b9dd4c6b0da41b21ed2cf1bf33f088a7e) )
+ ROM_LOAD( "vgalagaf.09", 0x1000, 0x1000, CRC(683585c4) SHA1(fdc89b72bf64e44c80f4ae601280fca9b0d1c18c) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+ROM_START( vgalagaf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "3200a.bin", 0x0000, 0x1000, CRC(3ef0b053) SHA1(0c04a362b737998c0952a753fb3fd8c8a17e9b46) )
+ ROM_LOAD( "3300b.bin", 0x1000, 0x1000, CRC(1b280831) SHA1(f7ea12e61929717ebe43a4198a97f109845a2c62) )
+ ROM_LOAD( "3400c.bin", 0x2000, 0x1000, CRC(16233d33) SHA1(a7eb799be5e23058754a92b15e6527bfbb47a354) )
+ ROM_LOAD( "3500d.bin", 0x3000, 0x1000, CRC(0aaf5c23) SHA1(3f4b0bb960bf002261e9c1278c88f594c6aa8ab6) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "3600fast.bin", 0x0000, 0x1000, CRC(23d586e5) SHA1(43346c69385e9091e64cff6c027ac2689cafcbb9) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "3700g.bin", 0x0000, 0x1000, CRC(b07f0aa4) SHA1(7528644a8480d0be2d0d37069515ed319e94778f) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "vgalagaf.08", 0x0000, 0x1000, CRC(c1bdeb1c) SHA1(7f07a9da708066401710b0b62b98e324ebbc2bca) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "vgalagaf.10", 0x0000, 0x1000, CRC(99367e04) SHA1(7e140e2b9dd4c6b0da41b21ed2cf1bf33f088a7e) )
+ ROM_LOAD( "vgalagaf.09", 0x1000, 0x1000, CRC(683585c4) SHA1(fdc89b72bf64e44c80f4ae601280fca9b0d1c18c) )
+
+ ROM_REGION( 0x0320, "proms", 0 )
+ ROM_LOAD( "prom-5.5n", 0x0000, 0x0020, CRC(54603c6b) SHA1(1a6dea13b4af155d9cb5b999a75d4f1eb9c71346) )
+ ROM_LOAD( "2n.bin", 0x0020, 0x0100, CRC(a547d33b) SHA1(7323084320bb61ae1530d916f5edd8835d4d2461) )
+ ROM_LOAD( "1c.bin", 0x0120, 0x0100, CRC(b6f585fb) SHA1(dd10147c4f05fede7ae6e7a760681700a660e87e) )
+ ROM_LOAD( "5c.bin", 0x0220, 0x0100, CRC(8bd565f6) SHA1(bedba65816abfc2ebeacac6ee335ca6f136e3e3d) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "1d.bin", 0x0000, 0x0100, CRC(86d92b24) SHA1(6bef9102b97c83025a2cf84e89d95f2d44c3d2ed) )
+ROM_END
+
+// xevious hacks
+
+ROM_START( battlesh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "b_1.bin", 0x0000, 0x2000, CRC(b6e4f4f3) SHA1(ceaaa63b50e75dcb05aeb68574336dfe56a8434a) )
+ ROM_LOAD( "b_2.bin", 0x2000, 0x2000, CRC(47017bc8) SHA1(0da73ae079fb6a64eed56197e2c88609ef34166c) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "b_3.bin", 0x0000, 0x2000, CRC(0ede5706) SHA1(65b235c5abe487612e11d0235410f1ca59b06e95) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x10000, "sub3", 0 )
+ ROM_LOAD( "b_5.bin", 0x0000, 0x1000, CRC(23107dfb) SHA1(74c49a5648faab632ae5ed8dd18a1d8b39837e2d) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "b_9.bin", 0x0000, 0x1000, CRC(5bd6e9ae) SHA1(f16c7eec39fce856c775b2b81ab55fb42376850e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "b_10.bin", 0x0000, 0x1000, CRC(b43ea55d) SHA1(06f4c4e7fc71b9e173c3bdf91c40f47750051b5e) )
+ ROM_LOAD( "b_11.bin", 0x1000, 0x1000, CRC(73603931) SHA1(1f7824b107a5a3d5c3434f02f17173a1f85fd29c) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xh_xvi_15.4m", 0x0000, 0x2000, CRC(308c5bad) SHA1(583a6c2b9a3c9fac6ed33de6ae5ee11543fe6164) )
+ ROM_LOAD( "xh_xvi_17.4p", 0x2000, 0x2000, CRC(b06b9ccb) SHA1(186442f0aa7bf0365adfb2da874110c01797b140) )
+ ROM_LOAD( "xh_xvi_16.4n", 0x4000, 0x1000, CRC(1cbbddce) SHA1(5fcf20b3ab335cfac01f1c2bcfca76b90c92618b) )
+ ROM_LOAD( "xh_xvi_18.4r", 0x5000, 0x2000, CRC(f56c3697) SHA1(4f5108a1bf6b828dbed4a34836c42fd359fb68c5) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x1400, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "b_-bpr.bin", 0x0300, 0x0400, CRC(d2d208b1) SHA1(6c8d29912c03ee93759e24085bc66ab738768bcc) )
+ ROM_LOAD( "b_6bpr.bin", 0x0700, 0x0400, CRC(0260c041) SHA1(1a7516e8b18ffdd9789eec8b834c17b3ba312afe) )
+ ROM_LOAD( "b_4bpr.bin", 0x0b00, 0x0400, CRC(33764974) SHA1(567b048b8a93e30090ccee4f6aadc0353524d8d1) )
+ ROM_LOAD( "b_5bpr.bin", 0x0f00, 0x0400, CRC(43674c7e) SHA1(94c19a9da81839cb1dfde3f11b2fd82ffe45efb9) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( gaous )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gao_12.3b", 0x0000, 0x1000, CRC(e24d7e32) SHA1(c78798944f717d2b20ceb846e4f98966756b0964) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "gao_13.3c", 0x0000, 0x1000, CRC(43ed5c90) SHA1(15f541fb7314c59fe56245f4dbfe05fa35ee2396) )
+ ROM_LOAD( "gao_14.3d", 0x1000, 0x1000, CRC(f361bdd0) SHA1(0ebae760617e8ff29d3f33856094f511f7a06dfa) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "gao_15.4m", 0x0000, 0x2000, CRC(ea41df4e) SHA1(8e7215654db77c7f8782dc4b909d1248952c10f0) )
+ ROM_LOAD( "gao_17.4p", 0x2000, 0x2000, CRC(79d65929) SHA1(ca60435cd4a64c82e4d263a57fe899e9e18b3389) )
+ ROM_LOAD( "gao_16.4n", 0x4000, 0x1000, CRC(ceb8a6f8) SHA1(5153cfe4aaeefd4f1faec133a120e8551c460d2f) )
+ ROM_LOAD( "gao_18.4r", 0x5000, 0x2000, CRC(2d95245d) SHA1(7e5409f1f787047d7825d59f1dfeefa26732d1cc) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "gao_4bpr.3l", 0x0700, 0x0200, CRC(bb0f377f) SHA1(451569602c83172132db76ee7652d174867639c0) )
+ ROM_LOAD( "gao_5bpr.3m", 0x0900, 0x0200, CRC(3fb201f3) SHA1(9e1c79c13bc285b7bff104c84baab9dd04fd42ab) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( sxvioush )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cpu_3p.rom", 0x0000, 0x1000, CRC(1c8d27d5) SHA1(2c41303d8c74acb5840295a4b460a39a9a8e21bb) )
+ ROM_LOAD( "cpu_3m.rom", 0x1000, 0x1000, CRC(fd04e615) SHA1(7169e7f3bd1e9cfae9671b89f2a45f56b968e1ff) )
+ ROM_LOAD( "cpu_2m.rom", 0x2000, 0x1000, CRC(294d5404) SHA1(ecc39fb2c0065a36f20541747089b4e30dfb99b1) )
+ ROM_LOAD( "cpu_2l.rom", 0x3000, 0x1000, CRC(6a44bf92) SHA1(0ca726f7f9528789f2a718df55e59406a283cdfa) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "cpu_3f.rom", 0x0000, 0x1000, CRC(d4bd3d81) SHA1(5831bb306bd650779207936bfd00f25864733abb) )
+ ROM_LOAD( "cpu_3j.rom", 0x1000, 0x1000, CRC(af06be5f) SHA1(5a020822387ab8c69214db961180760fa9853e6e) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xh_xvi_12.3b", 0x0000, 0x1000, CRC(9b8f4deb) SHA1(f6e1b557be3cbfc2d7755da8e48dc9a57f2cc2c0) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi_14.3d", 0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xh_xvi_15.4m", 0x0000, 0x2000, CRC(308c5bad) SHA1(583a6c2b9a3c9fac6ed33de6ae5ee11543fe6164) )
+ ROM_LOAD( "xh_xvi_17.4p", 0x2000, 0x2000, CRC(b06b9ccb) SHA1(186442f0aa7bf0365adfb2da874110c01797b140) )
+ ROM_LOAD( "xh_xvi_16.4n", 0x4000, 0x1000, CRC(1cbbddce) SHA1(5fcf20b3ab335cfac01f1c2bcfca76b90c92618b) )
+ ROM_LOAD( "xh_xvi_18.4r", 0x5000, 0x2000, CRC(f56c3697) SHA1(4f5108a1bf6b828dbed4a34836c42fd359fb68c5) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xviousah )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xea-1m-a.bin", 0x0000, 0x2000, CRC(8c2b50ec) SHA1(f770873b711d838556dde67a8aac8a7f572fcc5b) )
+ ROM_LOAD( "xea-1l-a.bin", 0x2000, 0x2000, CRC(0821642b) SHA1(c6c322c61d0985a2ac59f5e92d4e351107afb9eb) )
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xea-4c-a.bin", 0x0000, 0x2000, CRC(14d8fa03) SHA1(e8114141394adda86184b146f2497cfeef7fc2eb) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xh_xvi_12.3b", 0x0000, 0x1000, CRC(9b8f4deb) SHA1(f6e1b557be3cbfc2d7755da8e48dc9a57f2cc2c0) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi_14.3d", 0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xh_xvi_15.4m", 0x0000, 0x2000, CRC(308c5bad) SHA1(583a6c2b9a3c9fac6ed33de6ae5ee11543fe6164) )
+ ROM_LOAD( "xh_xvi_17.4p", 0x2000, 0x2000, CRC(b06b9ccb) SHA1(186442f0aa7bf0365adfb2da874110c01797b140) )
+ ROM_LOAD( "xh_xvi_16.4n", 0x4000, 0x1000, CRC(1cbbddce) SHA1(5fcf20b3ab335cfac01f1c2bcfca76b90c92618b) )
+ ROM_LOAD( "xh_xvi_18.4r", 0x5000, 0x2000, CRC(f56c3697) SHA1(4f5108a1bf6b828dbed4a34836c42fd359fb68c5) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xevioush )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xh_xvi_12.3b", 0x0000, 0x1000, CRC(9b8f4deb) SHA1(f6e1b557be3cbfc2d7755da8e48dc9a57f2cc2c0) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi_14.3d", 0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xh_xvi_15.4m", 0x0000, 0x2000, CRC(308c5bad) SHA1(583a6c2b9a3c9fac6ed33de6ae5ee11543fe6164) )
+ ROM_LOAD( "xh_xvi_17.4p", 0x2000, 0x2000, CRC(b06b9ccb) SHA1(186442f0aa7bf0365adfb2da874110c01797b140) )
+ ROM_LOAD( "xh_xvi_16.4n", 0x4000, 0x1000, CRC(1cbbddce) SHA1(5fcf20b3ab335cfac01f1c2bcfca76b90c92618b) )
+ ROM_LOAD( "xh_xvi_18.4r", 0x5000, 0x2000, CRC(f56c3697) SHA1(4f5108a1bf6b828dbed4a34836c42fd359fb68c5) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xeviousp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvip_1.3p", 0x0000, 0x1000, CRC(09c5fef9) SHA1(1111912763c818afc13e4dfd088877cf78bc30b4) )
+ ROM_LOAD( "xvip_2.3m", 0x1000, 0x1000, CRC(a2cf842d) SHA1(9bb24b3527f2cad8c9b916f9a815ea4f747dc337) )
+ ROM_LOAD( "xvip_3.2m", 0x2000, 0x1000, CRC(7ab657cd) SHA1(a27ad33b2808417dff8e27d0e2b503092f505bb0) )
+ ROM_LOAD( "xvip_4.2l", 0x3000, 0x1000, CRC(884837bd) SHA1(750b0b118a88ab09a0dcbdc10737910b2fc28a1a) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvip_5.3f", 0x0000, 0x1000, CRC(68c5268b) SHA1(265c86b2f547230d88276471864a45460198e129) )
+ ROM_LOAD( "xvip_6.3j", 0x1000, 0x1000, CRC(cafc97e6) SHA1(a3d8130b49fb941f6f05204793bf3226ca8eac5c) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xvip_12.3b", 0x0000, 0x1000, CRC(08f184f1) SHA1(bcbf89b92c311a78db516b557b982ed51907c49d) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi_14.3d", 0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xvi_15.4m", 0x0000, 0x2000, CRC(dc2c0ecb) SHA1(19ddbd9805f77f38c9a9a1bb30dba6c720b8609f) )
+ ROM_LOAD( "xvi_17.4p", 0x2000, 0x2000, CRC(dfb587ce) SHA1(acff2bf5cde85a16cdc98a52cdea11f77fadf25a) )
+ ROM_LOAD( "xvi_16.4n", 0x4000, 0x1000, CRC(605ca889) SHA1(3bf380ef76c03822a042ecc73b5edd4543c268ce) )
+ ROM_LOAD( "xvip_16.4n", 0x5000, 0x1000, CRC(00babaa1) SHA1(b946510a9c5b6c1dd6e6bab1ba3217a9d449a477) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvip_9.2a", 0x0000, 0x1000, CRC(529aecf0) SHA1(60c18f834933e01ecd22aa652d39a5d1a9a0fe0f) )
+ ROM_LOAD( "xvip_10.2b", 0x1000, 0x2000, CRC(f09eb6f9) SHA1(b189b4c23a2f9f185c75b096f44a083f8dbca3ae) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xevious3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "x3_xvi_12.3b", 0x0000, 0x1000, CRC(34f7940e) SHA1(6e289b36d14fea02f2fdf45caa4720ab05529fe2) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "x3_xvi_13.3c", 0x0000, 0x1000, CRC(6eab56b5) SHA1(00da56424e520c9de5967c1c233a20cb3ae037db) )
+ ROM_LOAD( "x3_xvi_14.3d", 0x1000, 0x1000, CRC(790b2f6c) SHA1(bc8e52d0ca4e97f38256ec3da1b23d266767ea9b) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "x3_xvi_15.4m", 0x0000, 0x2000, CRC(4dfaf4e1) SHA1(26456dc6c75e1a02cfc9c07fedfb2b7ece8e1692) )
+ ROM_LOAD( "x3_xvi_17.4p", 0x2000, 0x2000, CRC(9a135fe7) SHA1(278ab8c2805d138a47dfc89db7016c7438142a4f) )
+ ROM_LOAD( "x3_xvi_16.4n", 0x4000, 0x1000, CRC(dd6f34c8) SHA1(9fcc194ea2ee94f8bdf4c46ff8dead113a99bdce) )
+ ROM_LOAD( "x3_xvi_18.4r", 0x5000, 0x2000, CRC(d5378335) SHA1(892a762a050c8f3ae21544392444b289583b8ca0) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xevious4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "x4_xvi_12.3b", 0x0000, 0x1000, CRC(bdf15ccc) SHA1(0e6fba428cf56668e5c9218af3c6d58c8f261d32) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "x4_xvi_13.3c", 0x0000, 0x1000, CRC(b9832011) SHA1(ac7b266791fd39c17cf239405068e309478e6703) )
+ ROM_LOAD( "x4_xvi_14.3d", 0x1000, 0x1000, CRC(04677061) SHA1(3bf47661ddf1a8e98fcf8f7e46610e353483da9b) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "x4_xvi_15.4m", 0x0000, 0x2000, CRC(6cdeae2d) SHA1(5d43b11655e2952cec3c4e5df5855805273b0cb8) )
+ ROM_LOAD( "x4_xvi_17.4p", 0x2000, 0x2000, CRC(28ac2e0a) SHA1(8f85656d60439abc507ec09e9dfda31dad3e4e04) )
+ ROM_LOAD( "x4_xvi_16.4n", 0x4000, 0x1000, CRC(400e2c3e) SHA1(d46fc7a40ad2b8f822db21e8af9ec29e21f7f093) )
+ ROM_LOAD( "x4_xvi_18.4r", 0x5000, 0x2000, CRC(45b2daaf) SHA1(8bda7ee9900a64c74996e5790832f11983caf31b) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "x4_xvi_8bpr.6a", 0x0000, 0x0100, CRC(0e572608) SHA1(580acf168d13e5ba4448c6dbd077fe035dd9df3a) )
+ ROM_LOAD( "x4_xvi_9bpr.6d", 0x0100, 0x0100, CRC(0e12c2bb) SHA1(829d14781e67268ceba5f771466584025894fd96) )
+ ROM_LOAD( "x4_xvi10bpr.6e", 0x0200, 0x0100, CRC(6e235d02) SHA1(08378c12dfe190d33caf7bb0916dcc336dca42cd) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "x4_xvi_4bpr.3l", 0x0700, 0x0200, CRC(cce27181) SHA1(312d2f776f282354615f3a33a58a2744aafbc5a9) )
+ ROM_LOAD( "x4_xvi_5bpr.3m", 0x0900, 0x0200, CRC(e15ddec9) SHA1(531551ab5b0f0dc6c450e24ee973451ec0c21471) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xevious5 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xvi24_12.3b", 0x0000, 0x1000, CRC(935cb02d) SHA1(0800e2a643b2bbeae0f337bfbdc88d2eab16ada4) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi24_14.3d", 0x1000, 0x1000, CRC(e0fbfb86) SHA1(6e25609f2f70490d8f70a48e93b1abf9673b1d38) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xvi24_15.4m", 0x0000, 0x2000, CRC(51dcbd85) SHA1(a681000eb279d0f71da4ec4164f57e9877cb391f) )
+ ROM_LOAD( "xvi24_17.4p", 0x2000, 0x2000, CRC(b4753406) SHA1(404e911377614eda1e92093c5e3504216f16e143) )
+ ROM_LOAD( "xvi24_16.4n", 0x4000, 0x1000, CRC(eb0d690d) SHA1(1cc3a0e3647e36a925eab8e5aee73febeb41d4cc) )
+ ROM_LOAD( "xvi24_18.4r", 0x5000, 0x2000, CRC(490c1189) SHA1(a478d390a4931c43778cf24e5b01225c71dcac67) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvi-4.3l", 0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) )
+ ROM_LOAD( "xvi-5.3m", 0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( xeviblk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xvi_1.3p", 0x0000, 0x1000, CRC(09964dda) SHA1(4882b25b0938a903f3a367455ba788a30759b5b0) )
+ ROM_LOAD( "xvi_2.3m", 0x1000, 0x1000, CRC(60ecce84) SHA1(8adc60a5fcbca74092518dbc570ffff0f04c5b17) )
+ ROM_LOAD( "xvi_3.2m", 0x2000, 0x1000, CRC(79754b7d) SHA1(c6a154858716e1f073b476824b183de20e06d093) )
+ ROM_LOAD( "xvi_4.2l", 0x3000, 0x1000, CRC(c7d4bbf0) SHA1(4b846de204d08651253d3a141677c8a31626af07) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "xvi_5.3f", 0x0000, 0x1000, CRC(c85b703f) SHA1(15f1c005b9d806a384ab1f2240b9c580bfe83893) )
+ ROM_LOAD( "xvi_6.3j", 0x1000, 0x1000, CRC(e18cdaad) SHA1(6b79efee1a9642edb9f752101737132401248aed) )
+
+ ROM_REGION( 0x10000, "sub2", 0 )
+ ROM_LOAD( "xvi_7.2c", 0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "xvi_12.3b", 0x0000, 0x1000, CRC(088c8b26) SHA1(9c3b61dfca2f84673a78f7f66e363777a8f47a59) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "xvi_13.3c", 0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )
+ ROM_LOAD( "xvi_14.3d", 0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )
+
+ ROM_REGION( 0xa000, "gfx3", 0 )
+ ROM_LOAD( "xvi_15.4m", 0x0000, 0x2000, CRC(dc2c0ecb) SHA1(19ddbd9805f77f38c9a9a1bb30dba6c720b8609f) )
+ ROM_LOAD( "xvi_17.4p", 0x2000, 0x2000, CRC(dfb587ce) SHA1(acff2bf5cde85a16cdc98a52cdea11f77fadf25a) )
+ ROM_LOAD( "xvi_16.4n", 0x4000, 0x1000, CRC(605ca889) SHA1(3bf380ef76c03822a042ecc73b5edd4543c268ce) )
+ ROM_LOAD( "xvi_18.4r", 0x5000, 0x2000, CRC(02417d19) SHA1(b5f830dd2cf25cf154308d2e640f0ecdcda5d8cd) )
+ ROM_FILL( 0x9000, 0x1000, 0x00 )
+
+ ROM_REGION( 0x4000, "gfx4", 0 )
+ ROM_LOAD( "xvi_9.2a", 0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
+ ROM_LOAD( "xvi_10.2b", 0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
+ ROM_LOAD( "xvi_11.2c", 0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "xvi-8.6a", 0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) )
+ ROM_LOAD( "xvi-9.6d", 0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) )
+ ROM_LOAD( "xvi-10.6e", 0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) )
+ ROM_LOAD( "xvi-7.4h", 0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) )
+ ROM_LOAD( "xvi-6.4f", 0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) )
+ ROM_LOAD( "xvibl_4bpr.3l", 0x0700, 0x0200, CRC(83277522) SHA1(7c5edce9758fdb5aa2132da9d8aeb0f64d69d52e) )
+ ROM_LOAD( "xvibl_5bpr.3m", 0x0900, 0x0200, CRC(07b4bd0b) SHA1(36b467756c54120a20b82b4183a524b4867bc729) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "xvi-2.7n", 0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
+ ROM_LOAD( "xvi-1.5n", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+
+GAME( 1984, galaga84, galaga, galaga, galaga, galaga_state, galaga, ROT90, "hack", "Galaga '84", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, galaga99, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Jerky and Sil", "Galaga '99", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, galagab2, galaga, galaga, galaga, galaga_state, galaga, ROT90, "bootleg", "Galaga (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, galagabl, galaga, galaga, galaga, galaga_state, galaga, ROT90, "bootleg", "Galaga (Namco 1982)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, galagads, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "hack", "Galaga (fast shoot)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, galagaef, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "Hack", "Galaga (Enduring Freedom)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, galagaf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Fast Shoot Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, galagap, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Don Hodges", "Galaga (patched)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, galagix, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Grand Master Peter", "Galagix", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, galagost, galaga, galagost, galaga, galaga_state, galaga, ROT90, "Twisty", "Galaga Ghost (Set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, galagosb, galaga, galagost, galaga, galaga_state, galaga, ROT90, "Twisty", "Galaga Ghost (Set 2 - 2002-11-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, galaped, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Cary Barnhard", "Galapede (Fast Shoot)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, galgaxin, galaga, galaga, galaga, galaga_state, galaga, ROT90, "T-Bone", "Galagalaxian", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, nebulbee, galaga, galaga, galaga, galaga_state, galaga, ROT90, "hack", "Nebulous Bee", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, terror, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Hack", "Terrorist", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vgalaga, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Hack", "Vector Galaga", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vgalagam, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Hack", "Vector Galaga Midway", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vgalagaf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Hack", "Vector Galaga Fast Shoot", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, battlesh, xevious, battles, xevious, xevious_state, battles, ROT90, "bootleg", "Battles 2002", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, gaous, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco (Hack)", "Gaous", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, sxvioush, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious 2002", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, xeviblk, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious Black", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, xevious3, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious 2003", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, xevious4, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious 2004", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, xevious5, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious 2005", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, xevioush, xevious, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious 2002", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, xeviousp, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "bootleg", "Xevious Plus!", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, xviousah, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious 2002 (Atari set 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/galaxian.cpp b/docs/release/src/hbmame/drivers/galaxian.cpp
new file mode 100644
index 00000000000..856f9a4bacf
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/galaxian.cpp
@@ -0,0 +1,856 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/galaxian.cpp"
+
+
+/*************************************
+ *
+ * Four Play
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( fourplay_map, AS_PROGRAM, 8, galaxian_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x47ff) AM_RAM
+ AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+ AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
+ AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
+ AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
+ AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ AM_RANGE(0x6000, 0x6001) AM_WRITE(start_lamp_w)
+ AM_RANGE(0x6002, 0x6002) AM_WRITENOP // AM_WRITE(coin_lock_w)
+ AM_RANGE(0x6003, 0x6003) AM_WRITE(coin_count_0_w)
+ AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
+ AM_RANGE(0x6800, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
+ AM_RANGE(0x7001, 0x7001) AM_WRITE(irq_enable_w)
+ AM_RANGE(0x7002, 0x7003) AM_WRITE(fourplay_rombank_w)
+ AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxian_stars_enable_w)
+ AM_RANGE(0x7005, 0x7005) AM_WRITENOP /* bit 3 of rombank select - always 0 */
+ AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxian_flip_screen_x_w)
+ AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxian_flip_screen_y_w)
+ AM_RANGE(0x7008, 0x7008) AM_WRITENOP /* bit 4 of rombank select - always 0 */
+ AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED( fourplay, galaxian )
+ /* info can be found at http://www.ionpool.net/arcade/galaxian_hacks/fourplay.htm */
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(fourplay_map)
+
+ /* video hardware */
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gmgalax)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(64)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER( galaxian_state, fourplay )
+{
+ membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000);
+ membank("bank1")->set_entry(0);
+
+ /* video extensions */
+ common_init(NULL, NULL, &galaxian_state::pisces_extend_tile_info, &galaxian_state::pisces_extend_sprite_info);
+}
+
+
+
+/*************************************
+ *
+ * Galaxiab
+ *
+ *************************************/
+
+static INPUT_PORTS_START( galaxiab )
+ PORT_INCLUDE(galaxian)
+
+ PORT_MODIFY("IN2")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPSETTING( 0x01, "20000" )
+ PORT_DIPSETTING( 0x02, "40000" )
+ PORT_DIPSETTING( 0x03, "80000" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+
+/***********************************************************
+ *
+ * Jump Bug (with extra sounds via Galaxian sound board)
+ *
+ ***********************************************************/
+
+static ADDRESS_MAP_START( jumpbugx_map, AS_PROGRAM, 8, galaxian_state )
+ AM_IMPORT_FROM(jumpbug_map)
+/* HBMAME - added next lines */
+ AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
+ AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED( jumpbugx, jumpbug )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(jumpbugx_map)
+ MCFG_FRAGMENT_ADD(galaxian_audio)
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * Mr. Do Nightmare
+ *
+ *************************************/
+
+static INPUT_PORTS_START( mrdonm )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) )
+
+ PORT_START("IN2")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+/*************************************
+ *
+ * Trukker
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER( galaxian_state, trukker )
+{
+ uint16_t i;
+
+ /* video extensions */
+ common_init(NULL, &galaxian_state::frogger_draw_background, &galaxian_state::frogger_extend_tile_info, &galaxian_state::frogger_extend_sprite_info);
+ m_frogger_adjust = true;
+
+ /* the first ROM of the second CPU has data lines D0 and D1 swapped. Decode it. */
+ uint8_t *ROM = memregion("audiocpu")->base();
+ for (i = 0;i < 0x800;i++) ROM[i] = BITSWAP8(ROM[i],7,6,5,4,3,2,0,1);
+
+ /* fix gfx error in the alphabetic characters */
+ ROM = memregion("gfx1")->base();
+ for (i = 0;i < 0x160;i++) ROM[i] = BITSWAP8(ROM[i],7,6,5,4,3,2,0,1);
+
+ /* remove extraneous dot from steam rollers */
+ for (i = 0x1a0;i < 0x200;i++) ROM[i] = ROM[i] & 0xfc;
+
+ /* fix gfx error in sinking turtle */
+ for (i = 0x4c0;i < 0x4e0;i++) ROM[i] = BITSWAP8(ROM[i],7,6,5,4,3,2,0,1);
+
+ /* fix gfx error on left side of home bases */
+ ROM[0x234] = BITSWAP8(ROM[0x234],7,6,5,4,3,2,0,1);
+
+ /* fix gfx error in (c) sign and in square symbol */
+ for (i = 0x270;i < 0x27f;i++) ROM[i] = BITSWAP8(ROM[i],7,6,5,4,3,2,0,1);
+
+ /* fix gfx error in 200-point sign */
+ for (i = 0x330;i < 0x337;i++) ROM[i] = BITSWAP8(ROM[i],7,6,5,4,3,2,0,1);
+}
+
+
+
+/***************************************************************
+ *
+ * Frogger Sound Test rom - watchdog has been disabled.
+ * You can lengthen the time, but holding down an arrow key
+ * will still eventually trigger it.
+ *
+ ***************************************************************/
+
+static ADDRESS_MAP_START( tst_frog_map, AS_PROGRAM, 8, galaxian_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0x8800, 0x8800) AM_READNOP //AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+ AM_RANGE(0xb808, 0xb808) AM_MIRROR(0x07e3) AM_WRITE(irq_enable_w)
+ AM_RANGE(0xb80c, 0xb80c) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_y_w)
+ AM_RANGE(0xb810, 0xb810) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_x_w)
+ AM_RANGE(0xb818, 0xb818) AM_MIRROR(0x07e3) AM_WRITE(coin_count_0_w) /* IOPC7 */
+ AM_RANGE(0xb81c, 0xb81c) AM_MIRROR(0x07e3) AM_WRITE(coin_count_1_w) /* POUT1 */
+ AM_RANGE(0xc000, 0xffff) AM_READWRITE(frogger_ppi8255_r, frogger_ppi8255_w)
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED( tst_frog, frogger )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(tst_frog_map)
+ MCFG_DEVICE_REMOVE("watchdog")
+MACHINE_CONFIG_END
+
+
+
+/*************************************
+ *
+ * Video Eight
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( videight_map, AS_PROGRAM, 8, galaxian_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x47ff) AM_RAM
+ AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+ AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
+ AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
+ AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
+ AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
+ AM_RANGE(0x6000, 0x6002) AM_WRITE(videight_gfxbank_w)
+ AM_RANGE(0x6003, 0x6003) AM_WRITE(coin_count_0_w)
+ AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
+ AM_RANGE(0x6800, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
+ AM_RANGE(0x6808, 0x68ff) AM_WRITENOP
+ AM_RANGE(0x7001, 0x7001) AM_WRITE(irq_enable_w)
+ AM_RANGE(0x7002, 0x7005) AM_WRITE(videight_rombank_w)
+ AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxian_flip_screen_x_w)
+ AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxian_flip_screen_y_w)
+ AM_RANGE(0x7008, 0x7008) AM_WRITENOP /* bit 4 of rombank select - always 0 */
+ AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ADDRESS_MAP_END
+
+static GFXDECODE_START( videight )
+ GFXDECODE_SCALE( "gfx1", 0x0000, galaxian_charlayout, 0, 8*32, GALAXIAN_XSCALE,1)
+ GFXDECODE_SCALE( "gfx1", 0x0000, galaxian_spritelayout, 0, 8*32, GALAXIAN_XSCALE,1)
+GFXDECODE_END
+
+static MACHINE_CONFIG_DERIVED( videight, galaxian )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(videight_map)
+
+ /* video hardware */
+ MCFG_GFXDECODE_MODIFY("gfxdecode", videight)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(8*32)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER( galaxian_state, videight )
+{
+ membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
+ membank("bank1")->set_entry(0);
+
+ /* video extensions */
+ common_init(NULL, NULL, &galaxian_state::videight_extend_tile_info, &galaxian_state::videight_extend_sprite_info);
+}
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+
+
+
+/* this looks exactly like Galaxian, the word "Andromeda" never appears. The dipswitches are different. */
+ROM_START( andromd )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "and01", 0x0000, 0x0400, CRC(a0059ddd) SHA1(06bc3bd5eef9fea9e038ec08e5a228ab19f31a56) )
+ ROM_LOAD( "and02", 0x0400, 0x0400, CRC(da6421b8) SHA1(d3099d94d722e3e12ade712842261aac8b45f9f4) )
+ ROM_LOAD( "and03", 0x0800, 0x0400, CRC(30e28016) SHA1(07a621e5061d85a9559a920d76716ea4db61b674) )
+ ROM_LOAD( "and04", 0x0c00, 0x0400, CRC(de7e7770) SHA1(b06043a1d898eb323ddabffd3d2a3b1f63df0e5e) )
+ ROM_LOAD( "and05", 0x1000, 0x0400, CRC(a916c919) SHA1(b3e264ff92687022a0f2f551d5df36db848b48eb) )
+ ROM_LOAD( "and06", 0x1400, 0x0400, CRC(9175882b) SHA1(d9943efcb9245af7f01aecc533a699bdefc7d283) )
+ ROM_LOAD( "and07", 0x1800, 0x0400, CRC(1237b9da) SHA1(00e11532c599fca452a816683b361a24476b7100) )
+ ROM_LOAD( "and08", 0x1c00, 0x0400, CRC(8b181929) SHA1(c7e789d1a76e8db0251ac4c75aa85f0a4259fc81) )
+ ROM_LOAD( "and09", 0x2000, 0x0400, CRC(17fd5357) SHA1(abda92319f6851232a0dd26229fc55cf6d8361d8) )
+ ROM_LOAD( "and10", 0x2400, 0x0400, CRC(3032821c) SHA1(7ff45a9ddd86e77a550b10148147f44c4c934467) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "1h.bin", 0x0000, 0x0800, CRC(39fb43a4) SHA1(4755609bd974976f04855d51e08ec0d62ab4bc07) )
+ ROM_LOAD( "1k.bin", 0x0800, 0x0800, CRC(7e3f56a2) SHA1(a9795d8b7388f404f3b0e2c6ce15d713a4c5bafa) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+
+#if 0
+/* From CloneMAME 0.101 - this is galapx with different gfx roms */
+ROM_START( galaxni )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galx.u", 0x0000, 0x0800, CRC(79e4007d) SHA1(d55050498a670d1c022ba3caad34f8fcaccf4a30) )
+ ROM_LOAD( "galx.v", 0x0800, 0x0800, CRC(bc16064e) SHA1(4e3220fd63c8184bf9581a89dffb6944d8fae3bb) )
+ ROM_LOAD( "galx.w", 0x1000, 0x0800, CRC(72d2d3ee) SHA1(96e0c5824e46d7398c7e58dd6b75a9f4ead6f3f5) )
+ ROM_LOAD( "galx.y", 0x1800, 0x0800, CRC(afe397f3) SHA1(283c6f3b3f07581d88f7a6e11fc36947a9d90e2e) )
+ ROM_LOAD( "galx.z", 0x2000, 0x0800, CRC(778c0d3c) SHA1(6a81875abfea515d379c6212cb57f8e54573e943) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galaxni.1h", 0x0000, 0x0800, CRC(1b13ca05) SHA1(6999068771dacc6bf6c17eb858af593a929d09af) )
+ ROM_LOAD( "galaxni.1k", 0x0800, 0x0800, CRC(5cd7df03) SHA1(77873408c89546a17b1da3f64b7e96e314fadb17) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+#endif
+
+/* From CloneMAME 0.111 */
+ROM_START( galaxni )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galaxni.u", 0x0000, 0x0800, CRC(0701fcff) SHA1(b4fbc864fb9d95af63c32427779aad05934d95d0) )
+ ROM_LOAD( "galaxni.v", 0x0800, 0x0800, CRC(cb1136d8) SHA1(7be8c50bbd1b891ca7ded597e55b481efa6ac9d5) )
+ ROM_LOAD( "galaxni.w", 0x1000, 0x0800, CRC(f45ef2c7) SHA1(6b50383d98360afee8137a94c4c91d4d10db9221) )
+ ROM_LOAD( "galaxni.y", 0x1800, 0x0800, CRC(3f5c8a62) SHA1(7bde7f712c2cb97d40467062390097707b2896ae) )
+ ROM_LOAD( "galaxni.z", 0x2000, 0x0800, CRC(2d897370) SHA1(21c108712e7c00bd0f30d1fdddfaa71eed84158c) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galaxni.1h", 0x0000, 0x0800, CRC(6c14fa93) SHA1(0ac55adee875fde0488b4376c4ca5e0047d09fbf) )
+ ROM_LOAD( "galaxni.1k", 0x0800, 0x0800, CRC(2bd0ef95) SHA1(a17edda8940bca02820e270a3ec9e38666343b26) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "galaxni.clr", 0x0000, 0x0020, CRC(5aa5c5dd) SHA1(be74103889248f24123d1df553da02586681835e) )
+ROM_END
+
+
+ROM_START( buglaxn )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galmidw.u", 0x0000, 0x0800, CRC(745e2d61) SHA1(e65f74e35b1bfaccd407e168ea55678ae9b68edf) )
+ ROM_LOAD( "galmidw.v", 0x0800, 0x0800, CRC(9c999a40) SHA1(02fdcd95d8511e64c0d2b007b874112d53e41045) )
+ ROM_LOAD( "galmidw.w", 0x1000, 0x0800, CRC(b5894925) SHA1(0046b9ed697a34d088de1aead8bd7cbe526a2396) )
+ ROM_LOAD( "galmidw.y", 0x1800, 0x0800, CRC(6b3ca10b) SHA1(18d8714e5ef52f63ba8888ecc5a25b17b3bf17d1) )
+ ROM_LOAD( "galmidw.z", 0x2000, 0x0800, CRC(cb24f797) SHA1(e6bb977ded0654c2c7388aad188059e1e0647908) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "buglaxn.1j", 0x0000, 0x0800, CRC(b8d46e4b) SHA1(5fbf130912029fbe2aea5282b2201c6a17eae40b) )
+ ROM_LOAD( "buglaxn.1k", 0x0800, 0x0800, CRC(a00bde50) SHA1(c6519af48d2cf0a641b2f5aa327c3591f3184dbc) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+/* This is a combination of 2 EMMA dumps. E48 contained all roms except for "y" - even though the web page said
+ it was there. E423 contained all roms except the prom, because this board had been hacked to work without it.
+
+ The prom is the same except that the last 2 bytes are zeroed. This causes the explosions to be mostly missing,
+ and since the last byte also controls the colour of the floating scores, these are blanked. */
+
+ROM_START( galaxiab )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galaxiab.u", 0x0000, 0x0800, CRC(63e6d8ab) SHA1(ec2ade4d93903ba99bc9565b68328bd7d0830eac) )
+ ROM_LOAD( "galaxiab.v", 0x0800, 0x0800, CRC(f58283e3) SHA1(edc6e72516c50fd3402281d9936574d276581ce9) )
+ ROM_LOAD( "galaxiab.w", 0x1000, 0x0800, CRC(4c7031c0) SHA1(97f7ab0cedcd8eba1c8f6f516d84d672a2108258) )
+ ROM_LOAD( "galaxiab.y", 0x1800, 0x0800, CRC(faa0bd8c) SHA1(30dd130298609632212b34874a0819340b1c8037) )
+ ROM_LOAD( "galaxiab.z", 0x2000, 0x0800, CRC(5766c95b) SHA1(cf6c226df0cc9d088b04ade43d6db87d278f8b09) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galaxiab.1h", 0x0000, 0x0800, CRC(977e37cf) SHA1(88ff1e4edadf5cfc83413a1fe999aecf4ba72232) )
+ ROM_LOAD( "galaxiab.1k", 0x0800, 0x0800, CRC(bc7d0985) SHA1(550a44c9ddc8da66a29405591a590f91d2675cdf) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "galaxiab.6l", 0x0000, 0x0020, CRC(feea6525) SHA1(cdb207776f51411ed4e9536babff6050488d2808) )
+ ROM_FILL( 31,1,7 ) /* patch so floating scores can be seen, and explosions look better */
+ROM_END
+
+ROM_START( galaxkyo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galxk.u", 0x0000, 0x0800, CRC(acfde501) SHA1(4b72c1ffecaccadc541da2367f3ef70a2a9aed64) )
+ ROM_LOAD( "galxk.v", 0x0800, 0x0800, CRC(65cf3c77) SHA1(1c5249815816b395e1e04bf6a7dbb63e40faa0e3) )
+ ROM_LOAD( "galxk.w", 0x1000, 0x0800, CRC(9eef9ae6) SHA1(b2282e4edb8911e6aabfa936c3526f90381e1320) )
+ ROM_LOAD( "galxk.y", 0x1800, 0x0800, CRC(56a5ddd1) SHA1(1f87f647ebdffba28d5957f195448f6bce17f4d5) )
+ ROM_LOAD( "galxk.z", 0x2000, 0x0800, CRC(f4bc7262) SHA1(c4b70e474d49f45cec96f7c250bd77e01e18601a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galxk.1h", 0x0000, 0x0800, CRC(66a4335d) SHA1(0527a9ea99e525b3ba25c172034a61cde9307a9b) )
+ ROM_LOAD( "galxk.1k", 0x0800, 0x0800, CRC(2160265b) SHA1(97385e9c8012bc7fe85e29cfccefda72e4ca3320) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( galinvad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galnamco.7f", 0x0000, 0x1000, CRC(b10533fd) SHA1(ea8653e80000d607cd37a41f2de27ffe6e190f0f) )
+ ROM_LOAD( "galnamco.7j", 0x1000, 0x1000, CRC(9163454d) SHA1(683ce43c0e24fd5110b860e424e5de30d59e5223) )
+ ROM_LOAD( "galnamco.7l", 0x2000, 0x1000, CRC(952c6135) SHA1(e0989d5dce37ae421c34833d48b09e76d178680d) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galinv.1h", 0x0000, 0x0800, CRC(d3d42377) SHA1(4eae6b2b20cfb6841d679006f394c7081f8f426f) )
+ ROM_LOAD( "galinv.1k", 0x0800, 0x0800, CRC(7e515c84) SHA1(e15ff199f1db55e9abb30c403fc667a4e7143b4f) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( galnamco )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galnamco.7f", 0x0000, 0x1000, CRC(b10533fd) SHA1(ea8653e80000d607cd37a41f2de27ffe6e190f0f) )
+ ROM_LOAD( "galnamco.7j", 0x1000, 0x1000, CRC(9163454d) SHA1(683ce43c0e24fd5110b860e424e5de30d59e5223) )
+ ROM_LOAD( "galnamco.7l", 0x2000, 0x1000, CRC(952c6135) SHA1(e0989d5dce37ae421c34833d48b09e76d178680d) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "1h.bin", 0x0000, 0x0800, CRC(39fb43a4) SHA1(4755609bd974976f04855d51e08ec0d62ab4bc07) )
+ ROM_LOAD( "1k.bin", 0x0800, 0x0800, CRC(7e3f56a2) SHA1(a9795d8b7388f404f3b0e2c6ce15d713a4c5bafa) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( gaylaxn )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galx.u", 0x0000, 0x0800, CRC(79e4007d) SHA1(d55050498a670d1c022ba3caad34f8fcaccf4a30) )
+ ROM_LOAD( "galx.v", 0x0800, 0x0800, CRC(bc16064e) SHA1(4e3220fd63c8184bf9581a89dffb6944d8fae3bb) )
+ ROM_LOAD( "galx.w", 0x1000, 0x0800, CRC(72d2d3ee) SHA1(96e0c5824e46d7398c7e58dd6b75a9f4ead6f3f5) )
+ ROM_LOAD( "galx.y", 0x1800, 0x0800, CRC(afe397f3) SHA1(283c6f3b3f07581d88f7a6e11fc36947a9d90e2e) )
+ ROM_LOAD( "galx.z", 0x2000, 0x0800, CRC(778c0d3c) SHA1(6a81875abfea515d379c6212cb57f8e54573e943) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "galxn.1h", 0x0000, 0x0800, CRC(ce77d89b) SHA1(17de678c91e96bf3dc414cc2ad8631a8f617da3d) )
+ ROM_LOAD( "galxn.1k", 0x0800, 0x0800, CRC(08008d2c) SHA1(6600dbc42e5076f9ce3abe677134bf1677ae70ea) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( gmunch )
+ /* There was gmunch and gmunch2, using same roms, different proms. But colours are completely wrong in either case
+ Both games have now been removed (replaced by ghostmun) */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pac1.bin", 0x0000, 0x1000, CRC(19338c70) SHA1(cc2665b7d534d324627d12025ee099ff415d4214) )
+ ROM_LOAD( "pac2.bin", 0x1000, 0x1000, CRC(18db074d) SHA1(a70ed18f632e947493e648e6fc057dfb7a2a3322) )
+ ROM_LOAD( "pac3.bin", 0x2000, 0x1000, CRC(abb98b1d) SHA1(bb0109d353359bb192a3e6856a857c2f842838cb) )
+ ROM_LOAD( "pac4.bin", 0x3000, 0x1000, CRC(2403c78e) SHA1(52d8c8a4efcf47871485080ab217098a019e6579) )
+ /* this rom isn't loaded into rom space so what is it for? */
+ ROM_LOAD( "pac7.bin", 0x5000, 0x1000, CRC(6566c07b) SHA1(8047350e5f6a39d34dfc9242fa0747db9819fe99) )
+
+ ROM_REGION( 0x3000, "gfx1" , 0 )
+ ROM_LOAD( "pac5.bin", 0x0000, 0x1000, CRC(a5965fa6) SHA1(c746f90b4c4620ef6190f9ae85d5036bda3b81ae) )
+ ROM_LOAD( "pac8.bin", 0x1000, 0x1000, CRC(0491a967) SHA1(868f7c7efdbe40c8e0977557bc2cedefb9a3ea81) )
+ /* this rom contains gfx from uniwars and mame doesn't process it */
+ ROM_LOAD( "pac6.bin", 0x2000, 0x1000, CRC(2145e7ea) SHA1(a2e3a54fa25b030d72431f42e12783db08e95e2e) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "sk.bpr", 0x0000, 0x0020, CRC(bce79607) SHA1(49d60fde149240bcd025f721b0fbbbdbc549a42f) ) /* gmunch */
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) ) /* gmunch2 */
+ROM_END
+
+ROM_START( mooncmst )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mc1", 0x0000, 0x0800, CRC(7d954a7a) SHA1(a93ee403cfd7887538ad12d33f6dd6c71bea2a32) )
+ ROM_LOAD( "mc2", 0x0800, 0x0800, CRC(44bb7cfa) SHA1(349c2e23a9fce73f95bb8168d369082fa129fe3d) )
+ ROM_LOAD( "mc3", 0x1000, 0x0800, CRC(9c412104) SHA1(1b40054ebb1ace965a8522119bb23f09797bc5f6) )
+ ROM_LOAD( "mc4", 0x1800, 0x0800, CRC(7e9b1ab5) SHA1(435f603c0c3e788a509dd144a7916a34e791ae44) )
+ ROM_LOAD( "mc5.7r", 0x2000, 0x0800, CRC(16c759af) SHA1(3b48050411f65f9d3fb41ff22901e22d82bf1cf6) )
+ ROM_LOAD( "mc6.8d", 0x2800, 0x0800, CRC(69bcafdb) SHA1(939c8c6ed1cd4660a3d99b8f17ed99cbd7e1352a) )
+ ROM_LOAD( "mc7.8e", 0x3000, 0x0800, CRC(b50dbc46) SHA1(4fa084fd1ba5f78e7703e684c57af15ca7a844e4) )
+ ROM_LOAD( "mc8", 0x3800, 0x0800, CRC(18ca312b) SHA1(39219059003b949e38305553fea2d33071062c64) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mmcs_b", 0x0000, 0x0800, CRC(94d69a79) SHA1(d984ce68046244589e94cb526dc2fa11a85077d9) )
+ ROM_LOAD( "mmcs_d", 0x0800, 0x0800, CRC(44a6c84a) SHA1(464dc9a11fdf3015ce9d4735c27c1d6eab51cecb) )
+ ROM_LOAD( "mmcs_a", 0x1000, 0x0800, CRC(d8c9713c) SHA1(13f514bed011bb7f420e99bd9caeca0f2a1012ff) )
+ ROM_LOAD( "mmcs_c", 0x1800, 0x0800, CRC(50e37124) SHA1(ae07715733e864eadc3b4586c3e9f1852a4cf127) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "mmi6331.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
+ROM_END
+
+
+/* E78 - The dump was missing one rom (position "fake" below), I found that the equivalent code from fantazia
+ works perfectly well. The rom still fails the checksum test, which is why the test is patched. So
+ take note: It is a FAKE rom!!!
+
+ The colour prom supplied produced terrible colours, with most enemies barely visible. Substituting
+ the normal mooncrst prom fixes all the problems. */
+
+ROM_START( mooncrs5 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mooncrs5.7k", 0x0000, 0x1000, CRC(d62875a5) SHA1(2e162bf559a72acb5d23434497a9377a302b0440) )
+ ROM_LOAD( "mooncrs5.7j", 0x1000, 0x1000, CRC(1683e74c) SHA1(5887ddeed7d3399e93bc3146f54c23e9f8893866) )
+ ROM_LOAD( "mooncrs5.7h", 0x2000, 0x1000, CRC(46921e92) SHA1(7a3cec261a9e0baf969bd356a0766b4b266eaa39) )
+ ROM_LOAD( "mooncrs5.7a", 0x3000, 0x0400, CRC(5318be0c) SHA1(cca73501da8783e47f3f3c7d8a795011d5fd91a3) )
+ ROM_LOAD( "mooncrs5.7b", 0x3400, 0x0400, CRC(aed8acb2) SHA1(a2429daba96e6c064f4bc65cab2df6b15a43bf44) )
+ ROM_LOAD( "mooncrs5.fake", 0x3800, 0x0400, CRC(76db94a5) SHA1(f7d9c81d5e09f7e42258caf265606b1ba32439dd) ) /* fake rom */
+ ROM_LOAD( "mooncrs5.7d", 0x3c00, 0x0400, CRC(db0528cf) SHA1(be06b78d890e07fcbbfd6931d1a59ab0fb8b7a53) )
+ ROM_FILL(0x3FF4,1,0x2c ) /* patch unused byte so checksum test can be passed */
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mooncrs5.1h", 0x0800, 0x0800, CRC(60d783bc) SHA1(584a0600ef1c47fb8bce86f738af7691fdf91c9c) )
+ ROM_CONTINUE( 0x0000, 0x0800 )
+ ROM_LOAD( "mooncrs5.1k", 0x1800, 0x0800, CRC(bc25be88) SHA1(0e698a1e573f28e8aad07e79c11f38519d93286c) )
+ ROM_CONTINUE( 0x1000, 0x0800 )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+// ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ ROM_LOAD( "mmi6331.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
+ROM_END
+
+// Mr. Do. Nightmare
+ROM_START( mrdonm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mrdonm.u", 0x0000, 0x0800, CRC(197493a6) SHA1(f939fd712985db24dced4f7a66f4a804ca34ce60) )
+ ROM_LOAD( "mrdonm.v", 0x0800, 0x0800, CRC(b8ee84cf) SHA1(c5018f21da2f65fa573a2d5e9c8f96db1f0136e9) )
+ ROM_LOAD( "mrdonm.w", 0x1000, 0x0800, CRC(76879d31) SHA1(7aae5ee1eeaa5dacf4a232b3336f9e3df74018ca) )
+ ROM_LOAD( "mrdonm.y", 0x1800, 0x0800, CRC(d6d5e47e) SHA1(e5f41f90ca357f3e7ef1a6b055ca0cccc91ed391) )
+ ROM_LOAD( "mrdonm.z", 0x2000, 0x0800, CRC(34913886) SHA1(c1936ef6dc6080d080715d1c064513d581180fea) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "mrdonm.1h", 0x0000, 0x0800, CRC(f880af4b) SHA1(67d24ac48a6bd68de5b914675dc4cd5982d8ffc4) )
+ ROM_LOAD( "mrdonm.1k", 0x0800, 0x0800, CRC(40fd608a) SHA1(3a58d5ac17e98bea3d58d238d81bd6a5dd24bb81) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "mrdonm.6l", 0x0000, 0x0020, CRC(77f95861) SHA1(2acb3021e31b3c91bbf48763d2504dfad0d87f38) )
+ROM_END
+
+
+/* StarFighter II - This set came with a1,a2,b2,c1,e2 only. The rest I've used from Pisces */
+ROM_START( starfgh2 )
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "a1.bin", 0x0000, 0x0800, CRC(0d496c93) SHA1(c0f9a20d01a11045f6ad8a6c9c3980a52ba16495) )
+ ROM_LOAD( "a2.bin", 0x0800, 0x0800, CRC(4f0676eb) SHA1(7b4a230c723959261cb240fce52d378a01740942) )
+ ROM_LOAD( "b2.bin", 0x1000, 0x0800, CRC(1496a894) SHA1(d010cd02b1ffe351ef1abdd424cdefca44ea6b29) )
+ ROM_LOAD( "c1.bin", 0x1800, 0x0800, CRC(59820900) SHA1(d42b99573a44f76620d75647c1c253a869e9a403) )
+ ROM_LOAD( "p5.bin", 0x2000, 0x0800, CRC(fade512b) SHA1(ccef2650f1d9dc3fdde2d441774246d47febc2cc) )
+ ROM_LOAD( "e2.bin", 0x2800, 0x0800, CRC(153316b8) SHA1(c7de0c0f65723d3699e68f3b8b76cd1d69dbd0f3) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "g09.bin", 0x0000, 0x0800, CRC(9503a23a) SHA1(23848de56841dd1de9ef74d5a9c981c784098175) )
+ ROM_LOAD( "g11.bin", 0x0800, 0x0800, CRC(0adfc3fe) SHA1(a4da488632d9906066db45ae62747caf5ffbf2d8) )
+ ROM_LOAD( "g10.bin", 0x1000, 0x0800, CRC(3e61f849) SHA1(efa0059bc843af0c3bb94f4bc0a8286ca5069179) )
+ ROM_LOAD( "g12.bin", 0x1800, 0x0800, CRC(7130e9eb) SHA1(e6bb7a9b4f2fc001296e1060d0671b7a88599c8b) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "colour.bin", 0x0000, 0x0020, CRC(57a45057) SHA1(d4ec6a54f72640e5b485aa59e206c090e67ff640) )
+ROM_END
+
+ROM_START( vectrgal )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "galnamco.7f", 0x0000, 0x1000, CRC(b10533fd) SHA1(ea8653e80000d607cd37a41f2de27ffe6e190f0f) )
+ ROM_LOAD( "galnamco.7j", 0x1000, 0x1000, CRC(9163454d) SHA1(683ce43c0e24fd5110b860e424e5de30d59e5223) )
+ ROM_LOAD( "galnamco.7l", 0x2000, 0x1000, CRC(952c6135) SHA1(e0989d5dce37ae421c34833d48b09e76d178680d) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "vecgal.1h", 0x0000, 0x0800, CRC(02815aec) SHA1(94975ee5eff84a3ae483dd3d5766384859402477) )
+ ROM_LOAD( "vecgal.1k", 0x0800, 0x0800, CRC(11c9898c) SHA1(fb6bac221b3984a70a775bccf06f6e2f17d447cf) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( fourplay )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code & 64k for banked code */
+ ROM_LOAD( "fourplay.bin", 0x10000, 0x10000, CRC(b42b2c2c) SHA1(f3b6f136b39e7a6adadecb9acf906fcfe649f398) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "graph1.bin", 0x0000, 0x1000, CRC(359c0c1f) SHA1(9e39baae4ab5763db236d0a49a6665d2e69cba11) )
+ ROM_LOAD( "graph2.bin", 0x1000, 0x1000, CRC(b22a51c9) SHA1(cccfbab0c92dba81e3451de72d1f1899226e30e2) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
+ROM_START( videight )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "videight.bin", 0x10000, 0x20000, CRC(0601db09) SHA1(0c9cd1afb0034946261219bf42b2f9b1ed5bdb17) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "v8g1.bin", 0x0000, 0x8000, CRC(af771e33) SHA1(cdc960c5f548e19da4eabdaf8b789ca8ffb6a29f) )
+ ROM_LOAD( "v8g2.bin", 0x8000, 0x8000, CRC(776c34e6) SHA1(de70a29f73469a58ab15acb95aaad1efeb4de08d) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "v8c.bin", 0x0000, 0x0100, CRC(b35a6ca8) SHA1(d9195215bf2482a1b02a019bb708a9981eb0bdf8) )
+ROM_END
+
+ROM_START( offender )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "off-2d", 0x0000, 0x0800, CRC(bb09d91e) SHA1(f47cd3fd91fc569c7a9bb6e485a3281b92656b7f) )
+ ROM_LOAD( "2e", 0x0800, 0x0800, CRC(e9b4b9eb) SHA1(a8ee9ddfadf5e9accedfaf81da757a88a2e55a0a) )
+ ROM_LOAD( "2f", 0x1000, 0x0800, CRC(a1f14f4c) SHA1(3eae2b3e4596505a8afb5c5cfb108e823c2c4319) )
+ ROM_LOAD( "2h", 0x1800, 0x0800, CRC(591bc0d9) SHA1(170f9e92f0a3bee04407be27210b4fa825367688) )
+ ROM_LOAD( "2j", 0x2000, 0x0800, CRC(22f11b6b) SHA1(e426ef6a7444a39a34d59799973b07d11b89f372) )
+ ROM_LOAD( "2l", 0x2800, 0x0800, CRC(705ffe49) SHA1(174df3f281068c767344f751daace646360e26d6) )
+ ROM_LOAD( "2m", 0x3000, 0x0800, CRC(ea26c35c) SHA1(a2f3380982d93a022f46756f974fd16c4cd617de) )
+ ROM_LOAD( "2p", 0x3800, 0x0800, CRC(94d8f5e3) SHA1(f3a9c4d1d91836476fcad87ea0d243dde7171e0a) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "ot1.5c", 0x0000, 0x0800, CRC(bcd297f0) SHA1(8ed78487d76fd0a917ab7b258937a46e2cd9800c) )
+ ROM_LOAD( "ot2.5d", 0x0800, 0x0800, CRC(de7912da) SHA1(8558b4eff5d7e63029b325edef9914feda5834c3) )
+ ROM_LOAD( "ot3.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "off-5f", 0x0000, 0x0800, CRC(7015a2e1) SHA1(19bb4cb26c8b91cd79368e4ed48065df6fd6577e) )
+ ROM_LOAD( "off-5h", 0x0800, 0x0800, CRC(a36ac0fa) SHA1(b58412536833ab5ea705e919562b7b495ff3dff4) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
+ROM_END
+
+ROM_START( superdog )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "sdog-2d", 0x0000, 0x0800, CRC(99dc8bb5) SHA1(a7f533471df4482f67be0ed969e559f483fb147a) )
+ ROM_LOAD( "2e", 0x0800, 0x0800, CRC(e9b4b9eb) SHA1(a8ee9ddfadf5e9accedfaf81da757a88a2e55a0a) )
+ ROM_LOAD( "2f", 0x1000, 0x0800, CRC(a1f14f4c) SHA1(3eae2b3e4596505a8afb5c5cfb108e823c2c4319) )
+ ROM_LOAD( "2h", 0x1800, 0x0800, CRC(591bc0d9) SHA1(170f9e92f0a3bee04407be27210b4fa825367688) )
+ ROM_LOAD( "2j", 0x2000, 0x0800, CRC(22f11b6b) SHA1(e426ef6a7444a39a34d59799973b07d11b89f372) )
+ ROM_LOAD( "2l", 0x2800, 0x0800, CRC(705ffe49) SHA1(174df3f281068c767344f751daace646360e26d6) )
+ ROM_LOAD( "2m", 0x3000, 0x0800, CRC(ea26c35c) SHA1(a2f3380982d93a022f46756f974fd16c4cd617de) )
+ ROM_LOAD( "2p", 0x3800, 0x0800, CRC(94d8f5e3) SHA1(f3a9c4d1d91836476fcad87ea0d243dde7171e0a) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "ot1.5c", 0x0000, 0x0800, CRC(bcd297f0) SHA1(8ed78487d76fd0a917ab7b258937a46e2cd9800c) )
+ ROM_LOAD( "ot2.5d", 0x0800, 0x0800, CRC(de7912da) SHA1(8558b4eff5d7e63029b325edef9914feda5834c3) )
+ ROM_LOAD( "ot3.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "sdog-5f", 0x0000, 0x0800, CRC(7edbc59c) SHA1(53c9a7f46a968b2f804243f661479918870756b5) )
+ ROM_LOAD( "sdog-5h", 0x0800, 0x0800, CRC(5b130bea) SHA1(269df1344414c0d517084a32a348a856c25d499c) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
+ROM_END
+
+ROM_START( amidarf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "amidar.2c", 0x0000, 0x1000, CRC(c294bf27) SHA1(399325bf1559e8cdbddf7cfbf0dc739f9ed72ef0) )
+ ROM_LOAD( "amidar.2e", 0x1000, 0x1000, CRC(e6e96826) SHA1(e9c4f8c594640424b456505e676352a98b758c03) )
+ ROM_LOAD( "amidarf.2f", 0x2000, 0x1000, CRC(45b24635) SHA1(0a6b004803e67ed536b3213cc58ae976e4dc24be) )
+ ROM_LOAD( "amidar.2h", 0x3000, 0x1000, CRC(1be170bd) SHA1(c047bc393b297c0d47668a5f6f4870e3fac937ef) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "amidar.5c", 0x0000, 0x1000, CRC(c4b66ae4) SHA1(9d09dbde4019f7be3abe0815b0e06d542c01c255) )
+ ROM_LOAD( "amidar.5d", 0x1000, 0x1000, CRC(806785af) SHA1(c8c85e3a6a204feccd7859b4527bd649e96134b4) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "amidar.5f", 0x0000, 0x0800, CRC(5e51e84d) SHA1(dfe84db7e2b1a45a1d484fcf37291f536bc5324c) )
+ ROM_LOAD( "amidar.5h", 0x0800, 0x0800, CRC(2f7f1c30) SHA1(83c330eca20dfcc6a4099001943b9ed7a7c3db5b) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "amidar.clr", 0x0000, 0x0020, CRC(f940dcc3) SHA1(1015e56f37c244a850a8f4bf0e36668f047fd46d) )
+ROM_END
+
+ROM_START( amidargr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "amidarg.2c", 0x0000, 0x1000, CRC(e9822709) SHA1(ce7c76607a512b9b092a8bf83bdf6744a92a519a) )
+ ROM_LOAD( "amidar.2e", 0x1000, 0x1000, CRC(e6e96826) SHA1(e9c4f8c594640424b456505e676352a98b758c03) )
+ ROM_LOAD( "amidarg.2f", 0x2000, 0x1000, CRC(fd81b040) SHA1(f710cb192a50514f55b4aec859fd9c298b0b90f8) )
+ ROM_LOAD( "amidar.2h", 0x3000, 0x1000, CRC(1be170bd) SHA1(c047bc393b297c0d47668a5f6f4870e3fac937ef) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "amidar.5c", 0x0000, 0x1000, CRC(c4b66ae4) SHA1(9d09dbde4019f7be3abe0815b0e06d542c01c255) )
+ ROM_LOAD( "amidar.5d", 0x1000, 0x1000, CRC(806785af) SHA1(c8c85e3a6a204feccd7859b4527bd649e96134b4) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "amidar.5f", 0x0000, 0x0800, CRC(5e51e84d) SHA1(dfe84db7e2b1a45a1d484fcf37291f536bc5324c) )
+ ROM_LOAD( "amidarg.5h", 0x0800, 0x0800, CRC(141f8dbe) SHA1(3a627f5dd072909177f50920271f0d8ffb8a09c0) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "amidar.clr", 0x0000, 0x0020, CRC(f940dcc3) SHA1(1015e56f37c244a850a8f4bf0e36668f047fd46d) )
+ROM_END
+
+#define rom_jumpbugx rom_jumpbug
+
+
+ROM_START( kazzy )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "frogger.26", 0x0000, 0x1000, CRC(597696d6) SHA1(e7e021776cad00f095a1ebbef407b7c0a8f5d835) )
+ ROM_LOAD( "frogger.27", 0x1000, 0x1000, CRC(b6e6fcc3) SHA1(5e8692f2b0c7f4b3642b3ee6670e1c3b20029cdc) )
+ ROM_LOAD( "frsm3.7", 0x2000, 0x1000, CRC(aca22ae0) SHA1(5a99060ea2506a3ac7d61ca5876ce5cb3e493565) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "frogger.608", 0x0000, 0x0800, CRC(e8ab0256) SHA1(f090afcfacf5f13cdfa0dfda8e3feb868c6ce8bc) )
+ ROM_LOAD( "frogger.609", 0x0800, 0x0800, CRC(7380a48f) SHA1(75582a94b696062cbdb66a4c5cf0bc0bb94f81ee) )
+ ROM_LOAD( "frogger.610", 0x1000, 0x0800, CRC(31d7eb27) SHA1(2e1d34ae4da385fd7cac94707d25eeddf4604e1a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "kazzy.607", 0x0000, 0x0800, CRC(86f041e6) SHA1(61dd02bb2dda15d2f47ecc878a9dd6aa3118687d) )
+ ROM_LOAD( "kazzy.606", 0x0800, 0x0800, CRC(9ea43774) SHA1(d96eae151580f6ccef78049a73ec1fc5fa90aa63) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "pr-91.6l", 0x0000, 0x0020, CRC(413703bf) SHA1(66648b2b28d3dcbda5bdb2605d1977428939dd3c) )
+ROM_END
+
+ROM_START( trukker )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "frogger.ic5", 0x0000, 0x1000, CRC(efab0c79) SHA1(68c99b6cdcb9396bb473739a62ffc009b4bf57d5) )
+ ROM_LOAD( "frogger.ic6", 0x1000, 0x1000, CRC(aeca9c13) SHA1(cdf560adbd7f2813e86e378da7781cccf7928a44) )
+ ROM_LOAD( "frogger.ic7", 0x2000, 0x1000, CRC(dd251066) SHA1(4612e1fe1ab7182a277140b1a1976cc17e0746a5) )
+ ROM_LOAD( "frogger.ic8", 0x3000, 0x1000, CRC(bf293a02) SHA1(be94e9f5caa74c3de6fd95bd20928f4a9c514227) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "frogger.608", 0x0000, 0x0800, CRC(e8ab0256) SHA1(f090afcfacf5f13cdfa0dfda8e3feb868c6ce8bc) )
+ ROM_LOAD( "frogger.609", 0x0800, 0x0800, CRC(7380a48f) SHA1(75582a94b696062cbdb66a4c5cf0bc0bb94f81ee) )
+ ROM_LOAD( "frogger.610", 0x1000, 0x0800, CRC(31d7eb27) SHA1(2e1d34ae4da385fd7cac94707d25eeddf4604e1a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "trukker.606", 0x0000, 0x0800, CRC(f0c49466) SHA1(f88d02ada32a9f1e10004785d17659279fd1d651) )
+ ROM_LOAD( "trukker.607", 0x0800, 0x0800, CRC(6ab5c2eb) SHA1(d13fcd5669bd0f8f76505684ba5e788b395aeef1) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "pr-91.6l", 0x0000, 0x0020, CRC(413703bf) SHA1(66648b2b28d3dcbda5bdb2605d1977428939dd3c) )
+ROM_END
+
+ROM_START( tst_frog )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "frogtest.bin", 0x0000, 0x0226, CRC(1f5a7f35) SHA1(608ad6ac8c34aea66b13aac7e45c298a2083d642) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the audio CPU */
+ ROM_LOAD( "frogger.608", 0x0000, 0x0800, CRC(e8ab0256) SHA1(f090afcfacf5f13cdfa0dfda8e3feb868c6ce8bc) )
+ ROM_LOAD( "frogger.609", 0x0800, 0x0800, CRC(7380a48f) SHA1(75582a94b696062cbdb66a4c5cf0bc0bb94f81ee) )
+ ROM_LOAD( "frogger.610", 0x1000, 0x0800, CRC(31d7eb27) SHA1(2e1d34ae4da385fd7cac94707d25eeddf4604e1a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "frogger.607", 0x0000, 0x0800, CRC(05f7d883) SHA1(78831fd287da18928651a8adb7e578d291493eff) )
+ ROM_LOAD( "frogger.606", 0x0800, 0x0800, CRC(f524ee30) SHA1(dd768967add61467baa08d5929001f157d6cd911) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "pr-91.6l", 0x0000, 0x0020, CRC(413703bf) SHA1(66648b2b28d3dcbda5bdb2605d1977428939dd3c) )
+ROM_END
+
+/* Wriggly Beasties - bootleg of WarOfBug */
+ROM_START( wbeast )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "wbeast.7f", 0x0000, 0x1000, CRC(967e92ee) SHA1(319953fda4bedd447e95f93cd800fc036ce6a8e4) )
+ ROM_LOAD( "wbeast.7j", 0x1000, 0x1000, CRC(72c70fff) SHA1(e0e2cfafdce4d027f89a32542cdc2d724da9f6b0) )
+ ROM_LOAD( "wbeast.7l", 0x2000, 0x1000, CRC(2486d3a6) SHA1(93ac6178303bf65175b8b0b889c1dae11da46d0e) )
+
+ /* These 2 roms are overdumped */
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "wbeast.1h", 0x0000, 0x1000, CRC(623bb742) SHA1(081cc0cc2f3133338495e61a8e904448521c6c9a) )
+ ROM_LOAD( "wbeast.1k", 0x1000, 0x1000, CRC(c1b1143f) SHA1(72436840ff72f7f6341b11c43e25107ecb3ebb73) )
+
+ /* No prom supplied - using the one from warofbug */
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "warofbug.clr", 0x0000, 0x0020, CRC(8688e64b) SHA1(ed13414257f580b98b50c9892a14159c55e7838d) )
+ROM_END
+
+/* This is sort of playable - no sound, wrong colours. Reboots after defeating the boss. */
+ROM_START( monstrz )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "b-1e.a1", 0x0000, 0x1000, CRC(97886542) SHA1(01f4f9bd55f9eae28162cbb22a26f7cda22cd3f3) )
+ ROM_LOAD( "b-2e.c1", 0x1000, 0x1000, CRC(184ffcb4) SHA1(829d6ca13773aba7c3a81e122171befbe3666110) )
+ ROM_LOAD( "b-3e.d1", 0x2000, 0x1000, CRC(b7b10ac7) SHA1(51d544d4db456df756a95d7f1853fffed9259647) )
+ ROM_LOAD( "b-4e.e1", 0x3000, 0x1000, CRC(fb02c736) SHA1(24466116dd07b856b1afff62b8312c67ff466b95) )
+ ROM_LOAD( "b-5e.g1", 0xc000, 0x1000, CRC(b2788ab9) SHA1(eb1a6b41f4c7a243481bfccf2b068ce1bc292366) )
+ ROM_LOAD( "b-6e.h1", 0xd000, 0x1000, CRC(77d7aa8d) SHA1(62aaf582ba55f7b21f6cf13b4fb6c2c54bb729f5) )
+ // protection
+ ROM_FILL(0xc5d8,1,0)
+ ROM_FILL(0xc5fc,1,0)
+ ROM_FILL(0xc624,1,0)
+ ROM_FILL(0xc63c,1,0)
+ // fill the protection ram with RET so we don't run into the weeds.
+ ROM_FILL(0x3800,0x800,0xc9)
+ // enable attract mode
+ ROM_FILL(0x3918, 1, 0xC5)
+ ROM_FILL(0x3919, 1, 0xE5)
+ ROM_FILL(0x391A, 1, 0xF5)
+ ROM_FILL(0x391B, 1, 0x21)
+ ROM_FILL(0x391C, 1, 0x10)
+ ROM_FILL(0x391D, 1, 0x41)
+ ROM_FILL(0x391E, 1, 0xAF)
+ ROM_FILL(0x391F, 1, 0x06)
+ ROM_FILL(0x3920, 1, 0x08)
+ ROM_FILL(0x3921, 1, 0xAE)
+ ROM_FILL(0x3922, 1, 0x23)
+ ROM_FILL(0x3923, 1, 0x10)
+ ROM_FILL(0x3924, 1, 0xFC)
+ ROM_FILL(0x3925, 1, 0xFE)
+ ROM_FILL(0x3926, 1, 0x40)
+ ROM_FILL(0x3927, 1, 0x20)
+ ROM_FILL(0x3928, 1, 0x03)
+ ROM_FILL(0x3929, 1, 0x32)
+ ROM_FILL(0x392A, 1, 0x12)
+ ROM_FILL(0x392B, 1, 0x41)
+ ROM_FILL(0x392C, 1, 0xF1)
+ ROM_FILL(0x392D, 1, 0xE1)
+ ROM_FILL(0x392E, 1, 0xC1)
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a-1e.k1", 0x0000, 0x1000, CRC(b88ba44e) SHA1(85c141fb411d541b1e20412f5fefd18395f635ae) )
+ ROM_LOAD( "a-2.k2", 0x1000, 0x1000, CRC(8913c94e) SHA1(6c4fe065217a234d45761f8ad4d2c4e7078a0abd) )
+ ROM_LOAD( "a-3e.k3", 0x2000, 0x1000, CRC(a8fa5095) SHA1(5cabe5497a79a0c43e78a84ae87c824af60a2a3f) )
+ ROM_LOAD( "a-4.k4", 0x3000, 0x1000, CRC(93f81317) SHA1(167708be94cb9a47290067a20bc5ff6f018b93b6) )
+
+ ROM_REGION( 0x10000, "audio2", 0 )
+ ROM_LOAD( "a-5e.k5", 0x0000, 0x1000, CRC(b5bcdb4e) SHA1(db0965e5636e0f4e9cd4f4a7d808c413ecf733db) )
+ ROM_LOAD( "a-6.k6", 0x1000, 0x1000, CRC(24832b2e) SHA1(2a67888e86ce1a3182303e841513ba2a07977359) )
+ ROM_LOAD( "a-7e.k7", 0x2000, 0x1000, CRC(20ebea81) SHA1(473c688365b256d8593663ff95768f4a5bb1289d) )
+ // 0x3000 empty ?
+ ROM_LOAD( "a-8.k8", 0x4000, 0x1000, CRC(b833a15b) SHA1(0d21aaa0ca5ccba89118b205a6b3b36b15663c47) )
+ ROM_LOAD( "a-9.k9", 0x5000, 0x1000, CRC(cbd76ec2) SHA1(9434350ee93ca71efe78018b69913386353306ff) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "b-7e.a5", 0x0000, 0x1000, CRC(ddd4158d) SHA1(9701e2d8a0226455dfbed650e58bb4be05918fe8) )
+ ROM_LOAD( "b-8e.c5", 0x1000, 0x1000, CRC(b1331b4c) SHA1(fa1af406ecd6919b4846aea68d3edb70106f9273) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "prom.g9", 0x0000, 0x0020, CRC(b7ea00d7) SHA1(f658c6ac8123ae1e6b68ae513cc02c4d9d2b4e47) )
+ROM_END
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+
+// Year romname parent machine inputs init rot
+
+/* Frogger */
+GAME( 1981, kazzy, frogger, frogger, frogger, galaxian_state, frogger, ROT90, "Kazzy", "K-azzy", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, trukker, frogger, frogger, frogger, galaxian_state, trukker, ROT90, "Grimlick","Trukker", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, tst_frog, frogger, tst_frog, frogger, galaxian_state, frogger, ROT90, "msmcdoug", "Test Rom - Frogger Sound Test", MACHINE_SUPPORTS_SAVE )
+
+
+/* Amidar */
+GAME( 2007, amidarf, amidar, turtles, amidar, galaxian_state, turtles, ROT90, "Arkatrad", "Amidar (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, amidargr, amidar, turtles, amidar, galaxian_state, turtles, ROT90, "GreekRoms", "Amidar (Greek)", MACHINE_SUPPORTS_SAVE )
+
+
+/* Scramble */
+GAME( 1998, offender, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Chris Henry", "Offender", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, superdog, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Jerky", "Superdog", MACHINE_SUPPORTS_SAVE )
+
+
+/* Galaxian */
+GAME( 1979, andromd, galnamco, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Andromeda", MACHINE_SUPPORTS_SAVE)
+GAME( 1998, buglaxn, galnamco, galaxian, galaxian, galaxian_state, galaxian, ROT90, "The Dog", "Galaxian (Bug sprites)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, galaxiab, galnamco, galaxian, galaxiab, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxkyo, galnamco, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Galaxian (Kyoko)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, galaxni, galnamco, galaxian, superg, galaxian_state, galaxian, ROT90, "Petaco S.A.", "Galaxian (New Invasion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, galinvad, galnamco, galaxian, galaxian, galaxian_state, galaxian, ROT90, "T-Bone", "Galaxian (Space Invaders sprites)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galnamco, 0, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco", "Galaxians", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, gaylaxn, galnamco, galaxian, superg, galaxian_state, galaxian, ROT90, "The Dog", "Gaylaxian", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mrdonm, 0, galaxian, mrdonm, galaxian_state, galaxian, ROT90, "Krazy Ivan", "Mr. Do Nightmare", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, vectrgal, galnamco, galaxian, galaxian, galaxian_state, galaxian, ROT90, "T-Bone", "Galaxian (Vector Sim)", MACHINE_SUPPORTS_SAVE )
+
+
+/* Moon Cresta */
+GAME( 2000, mooncmst, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrst, ROT90, "Kazzy", "Moon Creamsta", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrs5, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon Cresta", MACHINE_SUPPORTS_SAVE )
+
+
+/* Multigames */
+GAME( 2002, fourplay, 0, fourplay, galaxian, galaxian_state, fourplay, ROT90, "Macro", "Four Play", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, videight, 0, videight, warofbug, galaxian_state, videight, ROT90, "Macro", "Video Eight", MACHINE_SUPPORTS_SAVE )
+
+
+/* Other */
+GAME( 1981, jumpbugx, 0, jumpbugx, jumpbug, galaxian_state, jumpbug, ROT90, "Rock-ola", "Jump Bug (Extra Sounds)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, monstrz, 0, sfx, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nihon Game Co", "Monster Zero", MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 19??, starfgh2, pisces, galaxian, piscesb, galaxian_state, pisces, ROT90, "bootleg", "Starfighter II", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, wbeast, 0, galaxian, warofbug, galaxian_state, nolock, ROT90, "Compost", "Wriggly Beasties", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/gauntlet.cpp b/docs/release/src/hbmame/drivers/gauntlet.cpp
new file mode 100644
index 00000000000..477f38ef311
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/gauntlet.cpp
@@ -0,0 +1,139 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/gauntlet.cpp"
+
+
+// There's some unknown hacks here. Need info on who the author is, and what the difference is.
+
+
+ROM_START( gaunt2s )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "136037-1307.9a", 0x000000, 0x008000, CRC(46fe8743) SHA1(d5fa19e028a2f43658330c67c10e0c811d332780) )
+ ROM_LOAD16_BYTE( "136037-1308.9b", 0x000001, 0x008000, CRC(276e15c4) SHA1(7467b2ec21b1b4fcc18ff9387ce891495f4b064c) )
+ ROM_LOAD16_BYTE( "136043-1105.10a", 0x038000, 0x004000, CRC(45dfda47) SHA1(a9a03150f5a0ad6ce62c5cfdffb4a9f54340590c) )
+ ROM_LOAD16_BYTE( "136043-1106.10b", 0x038001, 0x004000, CRC(343c029c) SHA1(d2df4e5b036500dcc537a1e0025abb2a8c730bdd) )
+ ROM_LOAD16_BYTE( "gaunt2s-1109.7a", 0x040000, 0x008000, CRC(32c909b4) SHA1(53c62d7a6660ccff4302ae9b8edcbe2949013e5e) )
+ ROM_LOAD16_BYTE( "gaunt2s-1110.7b", 0x040001, 0x008000, CRC(a1a2ac12) SHA1(bd939cf97f8c4d52bedc475ee1ce00c226aee234) )
+ ROM_LOAD16_BYTE( "136043-1121.6a", 0x050000, 0x008000, CRC(ae301bba) SHA1(3d93236aaffe6ef692e5073b1828633e8abf0ce4) )
+ ROM_LOAD16_BYTE( "136043-1122.6b", 0x050001, 0x008000, CRC(e94aaa8a) SHA1(378c582c360440b808820bcd3be78ec6e8800c34) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "136043-1120.16r", 0x004000, 0x004000, CRC(5c731006) SHA1(045ad571db34ef870b1bf003e77eea403204f55b) )
+ ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
+
+ ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
+ ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
+ ROM_LOAD( "136037-112.1b", 0x008000, 0x008000, CRC(869330be) SHA1(5dfaaf54ee2b3c0eaf35e8c17558313db9791616) )
+ ROM_LOAD( "136043-1123.1c", 0x010000, 0x004000, CRC(e4c98f01) SHA1(a24bece3196d13c38e4acdbf62783860253ba67d) )
+ ROM_RELOAD( 0x014000, 0x004000 )
+ ROM_LOAD( "136043-1113.1l", 0x018000, 0x008000, CRC(33cb476e) SHA1(e0757ee0120de2d38be44f8dc8702972c35b87b3) )
+ ROM_LOAD( "136037-114.1mn", 0x020000, 0x008000, CRC(29ef9882) SHA1(91e1465af6505b35cd97434c13d2b4d40a085946) )
+ ROM_LOAD( "136043-1124.1p", 0x028000, 0x004000, CRC(c4857879) SHA1(3b4ce96da0d178b4bc2d05b5b51b42c7ec461113) )
+ ROM_RELOAD( 0x02c000, 0x004000 )
+ ROM_LOAD( "136043-1115.2a", 0x030000, 0x008000, CRC(f71e2503) SHA1(244e108668eaef6b64c6ff733b08b9ee6b7a2d2b) )
+ ROM_LOAD( "136037-116.2b", 0x038000, 0x008000, CRC(11e0ac5b) SHA1(729b7561d59d94ef33874a134b97bcd37573dfa6) )
+ ROM_LOAD( "136043-1125.2c", 0x040000, 0x004000, CRC(d9c2c2d1) SHA1(185e38c75c06b6ca131a17ee3a46098279bfe17e) )
+ ROM_RELOAD( 0x044000, 0x004000 )
+ ROM_LOAD( "136043-1117.2l", 0x048000, 0x008000, CRC(9e30b2e9) SHA1(e9b513089eaf3bec269058b437fefe7075a3fd6f) )
+ ROM_LOAD( "136037-118.2mn", 0x050000, 0x008000, CRC(8bf3b263) SHA1(683d900ab7591ee661218be2406fb375a12e435c) )
+ ROM_LOAD( "136043-1126.2p", 0x058000, 0x004000, CRC(a32c732a) SHA1(abe801dff7bb3f2712e2189c2b91f172d941fccd) )
+ ROM_RELOAD( 0x05c000, 0x004000 )
+
+ ROM_REGION( 0x500, "proms", 0 )
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
+ROM_END
+
+ROM_START( gaunt2ls )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "136037-1307.9a", 0x000000, 0x008000, CRC(46fe8743) SHA1(d5fa19e028a2f43658330c67c10e0c811d332780) )
+ ROM_LOAD16_BYTE( "136037-1308.9b", 0x000001, 0x008000, CRC(276e15c4) SHA1(7467b2ec21b1b4fcc18ff9387ce891495f4b064c) )
+ ROM_LOAD16_BYTE( "136043-1105ls.10a", 0x038000, 0x004000, CRC(5426ab98) SHA1(7894b0ca989428819a9ed3e9a218eb466c167ecf) )
+ ROM_LOAD16_BYTE( "136043-1106ls.10b", 0x038001, 0x004000, CRC(b53cd674) SHA1(9dfd2b2e384c2e4d2640852a05c07765cc2f246a) )
+ ROM_LOAD16_BYTE( "136043-1109.7a", 0x040000, 0x008000, CRC(58a0a9a3) SHA1(7f51184840e3c96574836b8a00bfb4a7a5f508d0) )
+ ROM_LOAD16_BYTE( "136043-1110.7b", 0x040001, 0x008000, CRC(658f0da8) SHA1(dfce027ea50188659907be698aeb26f9d8bfab23) )
+ ROM_LOAD16_BYTE( "136043-1121.6a", 0x050000, 0x008000, CRC(ae301bba) SHA1(3d93236aaffe6ef692e5073b1828633e8abf0ce4) )
+ ROM_LOAD16_BYTE( "136043-1122.6b", 0x050001, 0x008000, CRC(e94aaa8a) SHA1(378c582c360440b808820bcd3be78ec6e8800c34) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "136043-1120.16r", 0x004000, 0x004000, CRC(5c731006) SHA1(045ad571db34ef870b1bf003e77eea403204f55b) )
+ ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "136043-1104.6p", 0x000000, 0x002000, CRC(1343cf6f) SHA1(4a9542bc8ede305e7e8f860eb4b47ca2f3017275) )
+
+ ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
+ ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
+ ROM_LOAD( "136037-112.1b", 0x008000, 0x008000, CRC(869330be) SHA1(5dfaaf54ee2b3c0eaf35e8c17558313db9791616) )
+ ROM_LOAD( "136043-1123.1c", 0x010000, 0x004000, CRC(e4c98f01) SHA1(a24bece3196d13c38e4acdbf62783860253ba67d) )
+ ROM_RELOAD( 0x014000, 0x004000 )
+ ROM_LOAD( "136043-1113.1l", 0x018000, 0x008000, CRC(33cb476e) SHA1(e0757ee0120de2d38be44f8dc8702972c35b87b3) )
+ ROM_LOAD( "136037-114.1mn", 0x020000, 0x008000, CRC(29ef9882) SHA1(91e1465af6505b35cd97434c13d2b4d40a085946) )
+ ROM_LOAD( "136043-1124.1p", 0x028000, 0x004000, CRC(c4857879) SHA1(3b4ce96da0d178b4bc2d05b5b51b42c7ec461113) )
+ ROM_RELOAD( 0x02c000, 0x004000 )
+ ROM_LOAD( "136043-1115.2a", 0x030000, 0x008000, CRC(f71e2503) SHA1(244e108668eaef6b64c6ff733b08b9ee6b7a2d2b) )
+ ROM_LOAD( "136037-116.2b", 0x038000, 0x008000, CRC(11e0ac5b) SHA1(729b7561d59d94ef33874a134b97bcd37573dfa6) )
+ ROM_LOAD( "136043-1125.2c", 0x040000, 0x004000, CRC(d9c2c2d1) SHA1(185e38c75c06b6ca131a17ee3a46098279bfe17e) )
+ ROM_RELOAD( 0x044000, 0x004000 )
+ ROM_LOAD( "136043-1117.2l", 0x048000, 0x008000, CRC(9e30b2e9) SHA1(e9b513089eaf3bec269058b437fefe7075a3fd6f) )
+ ROM_LOAD( "136037-118.2mn", 0x050000, 0x008000, CRC(8bf3b263) SHA1(683d900ab7591ee661218be2406fb375a12e435c) )
+ ROM_LOAD( "136043-1126.2p", 0x058000, 0x004000, CRC(a32c732a) SHA1(abe801dff7bb3f2712e2189c2b91f172d941fccd) )
+ ROM_RELOAD( 0x05c000, 0x004000 )
+
+ ROM_REGION( 0x500, "proms", 0 )
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "74s287-136037-103.4r", 0x400, 0x100, CRC(6c5ccf08) SHA1(ff5dbadd85aa2e07b383a302fa399e875db8f84f) ) /* MO position/size */
+ROM_END
+
+ROM_START( gaunt2f )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "136037-1307.9a", 0x000000, 0x008000, CRC(46fe8743) SHA1(d5fa19e028a2f43658330c67c10e0c811d332780) )
+ ROM_LOAD16_BYTE( "136037-1308.9b", 0x000001, 0x008000, CRC(276e15c4) SHA1(7467b2ec21b1b4fcc18ff9387ce891495f4b064c) )
+ ROM_LOAD16_BYTE( "136043-1105.10a", 0x038000, 0x004000, CRC(45dfda47) SHA1(a9a03150f5a0ad6ce62c5cfdffb4a9f54340590c) )
+ ROM_LOAD16_BYTE( "136043-1106.10b", 0x038001, 0x004000, CRC(343c029c) SHA1(d2df4e5b036500dcc537a1e0025abb2a8c730bdd) )
+ ROM_LOAD16_BYTE( "136043-1109.7a", 0x040000, 0x008000, CRC(58a0a9a3) SHA1(7f51184840e3c96574836b8a00bfb4a7a5f508d0) )
+ ROM_LOAD16_BYTE( "136043-1110.7b", 0x040001, 0x008000, CRC(658f0da8) SHA1(dfce027ea50188659907be698aeb26f9d8bfab23) )
+ ROM_LOAD16_BYTE( "136043-1121.6a", 0x050000, 0x008000, CRC(ae301bba) SHA1(3d93236aaffe6ef692e5073b1828633e8abf0ce4) )
+ ROM_LOAD16_BYTE( "136043-1122.6b", 0x050001, 0x008000, CRC(e94aaa8a) SHA1(378c582c360440b808820bcd3be78ec6e8800c34) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "136043-1120.16r", 0x004000, 0x004000, CRC(5c731006) SHA1(045ad571db34ef870b1bf003e77eea403204f55b) )
+ ROM_LOAD( "136043-1119.16s", 0x008000, 0x008000, CRC(dc3591e7) SHA1(6d0d8493609974bd5a63be858b045fe4db35d8df) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "gaunt2f.6p", 0x000000, 0x004000, CRC(d101905d) SHA1(6f50a84f4d263a7a459b642fa49a619e877535b6) )
+
+ ROM_REGION( 0x60000, "gfx2", ROMREGION_INVERT )
+ ROM_LOAD( "136043-1111.1a", 0x000000, 0x008000, CRC(09df6e23) SHA1(726984275c6a338c12ec0c4cc449f92f4a7a138c) )
+ ROM_LOAD( "136037-112.1b", 0x008000, 0x008000, CRC(869330be) SHA1(5dfaaf54ee2b3c0eaf35e8c17558313db9791616) )
+ ROM_LOAD( "136043-1123.1c", 0x010000, 0x004000, CRC(e4c98f01) SHA1(a24bece3196d13c38e4acdbf62783860253ba67d) )
+ ROM_RELOAD( 0x014000, 0x004000 )
+ ROM_LOAD( "136043-1113.1l", 0x018000, 0x008000, CRC(33cb476e) SHA1(e0757ee0120de2d38be44f8dc8702972c35b87b3) )
+ ROM_LOAD( "136037-114.1mn", 0x020000, 0x008000, CRC(29ef9882) SHA1(91e1465af6505b35cd97434c13d2b4d40a085946) )
+ ROM_LOAD( "136043-1124.1p", 0x028000, 0x004000, CRC(c4857879) SHA1(3b4ce96da0d178b4bc2d05b5b51b42c7ec461113) )
+ ROM_RELOAD( 0x02c000, 0x004000 )
+ ROM_LOAD( "136043-1115.2a", 0x030000, 0x008000, CRC(f71e2503) SHA1(244e108668eaef6b64c6ff733b08b9ee6b7a2d2b) )
+ ROM_LOAD( "136037-116.2b", 0x038000, 0x008000, CRC(11e0ac5b) SHA1(729b7561d59d94ef33874a134b97bcd37573dfa6) )
+ ROM_LOAD( "136043-1125.2c", 0x040000, 0x004000, CRC(d9c2c2d1) SHA1(185e38c75c06b6ca131a17ee3a46098279bfe17e) )
+ ROM_RELOAD( 0x044000, 0x004000 )
+ ROM_LOAD( "136043-1117.2l", 0x048000, 0x008000, CRC(9e30b2e9) SHA1(e9b513089eaf3bec269058b437fefe7075a3fd6f) )
+ ROM_LOAD( "136037-118.2mn", 0x050000, 0x008000, CRC(8bf3b263) SHA1(683d900ab7591ee661218be2406fb375a12e435c) )
+ ROM_LOAD( "136043-1126.2p", 0x058000, 0x004000, CRC(a32c732a) SHA1(abe801dff7bb3f2712e2189c2b91f172d941fccd) )
+ ROM_RELOAD( 0x05c000, 0x004000 )
+
+ ROM_REGION( 0x500, "proms", 0 )
+ ROM_LOAD( "74s472-136037-101.7u", 0x000, 0x200, CRC(2964f76f) SHA1(da966c35557ec1b95e1c39cd950c38a19bce2d67) ) /* MO timing */
+ ROM_LOAD( "74s472-136037-102.5l", 0x200, 0x200, CRC(4d4fec6c) SHA1(3541b5c6405ad5742a3121dfd6acb227933de25a) ) /* MO flip control */
+ ROM_LOAD( "gaunt2f.4r", 0x400, 0x100, CRC(32ae1fa9) SHA1(09eb56a0798456d73015909973ce2ba9660c1164) ) /* MO position/size */
+ROM_END
+
+
+
+GAME( 1987, gaunt2s, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Todd Bordelon", "Gauntlet II Speed Hack", MACHINE_SUPPORTS_SAVE ) // http://www.ionpool.net/arcade/gauntlet/hacks.html
+GAME( 1988, gaunt2ls, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "Orange Elf", "Gauntlet II New Levels", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gaunt2f, gaunt2, gauntlet2, gauntlet, gauntlet_state, gauntlet, ROT0, "hack", "Gauntlet II (graphics hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/gottlieb.cpp b/docs/release/src/hbmame/drivers/gottlieb.cpp
new file mode 100644
index 00000000000..bdc19e66bed
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/gottlieb.cpp
@@ -0,0 +1,99 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/gottlieb.cpp"
+
+ROM_START( 711qbert )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "mqb-rom2.bin", 0xa000, 0x2000, CRC(6860f957) SHA1(ebd68aeb6d54868295bd20cf64ee0187a52df0e3) )
+ ROM_LOAD( "mqb-rom1.bin", 0xc000, 0x2000, CRC(11f0a4e4) SHA1(a805e51c40042fae209ace277abd9b35a990905b) )
+ ROM_LOAD( "mqb-rom0.bin", 0xe000, 0x2000, CRC(12a90cb2) SHA1(a33203aea79fe43d1233a16e3fdddaceac6e4a20) )
+
+ ROM_REGION( 0x10000, "r1sound:audiocpu", 0 ) /* 64k for sound cpu */
+ ROM_LOAD( "mqb-snd1.bin", 0xf000, 0x0800, CRC(e704b450) SHA1(d509f54658e9f0264b9ab865a6f36e5423a28904) )
+ ROM_RELOAD( 0x7000, 0x0800 ) /* A15 is not decoded */
+ ROM_LOAD( "mqb-snd2.bin", 0xf800, 0x0800, CRC(c6a98bf8) SHA1(cc5b5bb5966f5d79226f1f665a3f9fc934f4ef7f) )
+ ROM_RELOAD( 0x7800, 0x0800 ) /* A15 is not decoded */
+
+ ROM_REGION( 0x2000, "bgtiles", 0 )
+ ROM_LOAD( "qb-bg0.bin", 0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) ) /* chars */
+ ROM_LOAD( "qb-bg1.bin", 0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
+
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD( "mqb-fg3.bin", 0x0000, 0x2000, CRC(ee595eda) SHA1(11777d95ba79bd0ec7b964b76c1dc129db857816) ) /* sprites */
+ ROM_LOAD( "mqb-fg2.bin", 0x2000, 0x2000, CRC(59884c78) SHA1(5e77ef46ccd55f79a5fa90521baa7c22e3783fe5) )
+ ROM_LOAD( "mqb-fg1.bin", 0x4000, 0x2000, CRC(2a60e3ad) SHA1(9ed83017f6c8e44337ad76c68b095f2c3300aadb) )
+ ROM_LOAD( "mqb-fg0.bin", 0x6000, 0x2000, CRC(b11ad9d8) SHA1(5264598f33aa76455ae4107d0f265c2a372ed67a) )
+ROM_END
+
+ROM_START( pbert )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "qb-rom2.bin", 0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
+ ROM_LOAD( "qb-rom1.bin", 0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
+ ROM_LOAD( "qb-rom0.bin", 0xe000, 0x2000, CRC(8e318641) SHA1(7f8f66d1e6a7905e93cce07fc92e8801370b7194) )
+
+ ROM_REGION( 0x10000, "r1sound:audiocpu", 0 ) /* 64k for sound cpu */
+ ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
+ ROM_RELOAD( 0x7000, 0x800 ) /* A15 is not decoded */
+ ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
+ ROM_RELOAD( 0x7800, 0x800 ) /* A15 is not decoded */
+
+ ROM_REGION( 0x2000, "bgtiles", 0 )
+ ROM_LOAD( "pb-bg0.bin", 0x0000, 0x1000, CRC(14e193e9) SHA1(5d67b3da848d4a90a4f9bf7f6145ce1aa33188f7) ) /* chars */
+ ROM_LOAD( "pb-bg1.bin", 0x1000, 0x1000, CRC(a91180f9) SHA1(c8a3ceae19afe9a0ad1e05bed99585e6bacbc09b) )
+
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD( "pb-fg3.bin", 0x0000, 0x2000, CRC(26def34c) SHA1(b36dd87e4c36d201aaec0c283e5f3d1ad4056d5d) ) /* sprites */
+ ROM_LOAD( "pb-fg2.bin", 0x2000, 0x2000, CRC(cf3309ca) SHA1(5be9a28b3681990729f0582f9d2c3dd0314bdd15) )
+ ROM_LOAD( "pb-fg1.bin", 0x4000, 0x2000, CRC(a5f3a203) SHA1(4d7d45e5ba87acd8c44421f2c7fb2129a1866f03) )
+ ROM_LOAD( "pb-fg0.bin", 0x6000, 0x2000, CRC(495d90e9) SHA1(d4d28c30901eb09da8933c03b2178152f0fc7b84) )
+ROM_END
+
+// E444
+ROM_START( qbertb )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "qb-rom2.bin", 0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
+ ROM_LOAD( "qb-rom1.bin", 0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
+ ROM_LOAD( "qbertb.rom0", 0xe000, 0x2000, CRC(415b4fc7) SHA1(e55fb1912260435be253597fd337e04219b7a034) )
+
+ ROM_REGION( 0x10000, "r1sound:audiocpu", 0 ) /* 64k for sound cpu */
+ ROM_LOAD( "qbertb.snd", 0xf000, 0x1000, CRC(ebcedba9) SHA1(94aee8e32bdc80bbc5dc1423ca97597bdb9d808c) )
+ ROM_RELOAD( 0x7000, 0x1000 ) /* A15 is not decoded */
+
+ ROM_REGION( 0x2000, "bgtiles", 0 )
+ ROM_LOAD( "qb-bg0.bin", 0x0000, 0x1000, CRC(7a9ba824) SHA1(12aa6df499eb6996ee35f56acac403ff6290f844) ) /* chars */
+ ROM_LOAD( "qb-bg1.bin", 0x1000, 0x1000, CRC(22e5b891) SHA1(5bb67e333255c0ea679ab4312256a8a71a950db8) )
+
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD( "qbertb.fg3", 0x1000, 0x1000, CRC(983e3e05) SHA1(14f21543c3301b15d179b3864676e76ad5dfcaf8) ) /* sprites */
+ ROM_LOAD( "qbertb.fg2", 0x3000, 0x1000, CRC(b3e6c7bc) SHA1(38e34e8712c5f677fa3fada68bc4c318e9bf7ca6) )
+ ROM_LOAD( "qbertb.fg1", 0x5000, 0x1000, CRC(6733d069) SHA1(3b4ac832f2475d51ae7586d3eb80e355afb64222) )
+ ROM_LOAD( "qbertb.fg0", 0x7000, 0x1000, CRC(3081c200) SHA1(137d95a2a58e2ed4da7145a539d1a1942c80674c) )
+ROM_END
+
+ROM_START( vbert )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "qb-rom2.bin", 0xa000, 0x2000, CRC(fe434526) SHA1(4cfc5d52dd6c82163e035af82d6112c0c93a3797) )
+ ROM_LOAD( "qb-rom1.bin", 0xc000, 0x2000, CRC(55635447) SHA1(ca6acdef1c9e06b33efe1f0a2df2dfb03723cfbe) )
+ ROM_LOAD( "qb-rom0.bin", 0xe000, 0x2000, CRC(8e318641) SHA1(7f8f66d1e6a7905e93cce07fc92e8801370b7194) )
+
+ ROM_REGION( 0x10000, "r1sound:audiocpu", 0 ) /* 64k for sound cpu */
+ ROM_LOAD( "qb-snd1.bin", 0xf000, 0x800, CRC(15787c07) SHA1(8b7d03fbf2ebaa71b3a7e2f636a0d1bb9b796e43) )
+ ROM_RELOAD( 0x7000, 0x800 ) /* A15 is not decoded */
+ ROM_LOAD( "qb-snd2.bin", 0xf800, 0x800, CRC(58437508) SHA1(09d8053e7e99679b602dcda230d64db7fe6cb7f5) )
+ ROM_RELOAD( 0x7800, 0x800 ) /* A15 is not decoded */
+
+ ROM_REGION( 0x2000, "bgtiles", 0 )
+ ROM_LOAD( "vb-bg0.bin", 0x0000, 0x1000, CRC(8963b939) SHA1(1416f56938163b4cdc212758eb2c3f6b773c7e32) ) /* chars */
+ ROM_LOAD( "vb-bg1.bin", 0x1000, 0x1000, CRC(96033c96) SHA1(0a5780377bfd3baeeb2d899aa230e503539f7c92) )
+
+ ROM_REGION( 0x8000, "sprites", 0 )
+ ROM_LOAD( "vb-fg3.bin", 0x0000, 0x2000, CRC(8cb4bdb4) SHA1(7b9b626b93daa4d2639a1e87ace61b1d254af96c) ) /* sprites */
+ ROM_LOAD( "vb-fg2.bin", 0x2000, 0x2000, CRC(79883cc3) SHA1(01cfca389021747e2d750fc8bb251abb2d5fe7a8) )
+ ROM_LOAD( "vb-fg1.bin", 0x4000, 0x2000, CRC(b0fe9bd5) SHA1(be2990904efff19adbe18eb674727214ffae9ad3) )
+ ROM_LOAD( "vb-fg0.bin", 0x6000, 0x2000, CRC(4c3db270) SHA1(212f1c353511fb4166a7ad0135dd295a2a16af8d) )
+ROM_END
+
+GAME( 1982, 711qbert, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Hack", "7-11 Q*bert", 0 )
+GAME( 2003, pbert, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Grand Master Peter", "P*bert", 0 )
+GAME( 1982, qbertb, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "bootleg", "Q*bert", 0 )
+GAME( 2003, vbert, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Grand Master Peter", "V*bert", 0 )
diff --git a/docs/release/src/hbmame/drivers/ir.cpp b/docs/release/src/hbmame/drivers/ir.cpp
new file mode 100644
index 00000000000..3401fe76a8d
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ir.cpp
@@ -0,0 +1,547 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/****************************************************************************************
+
+ Invader's Revenge
+
+ October, 2008 by Robbbert
+
+ No diagram available, so I threw this together
+
+
+ Invader's Revenge was made by the English company, Zenitone-Microsec Ltd.
+ Distributed in Germany by Dutchford.
+ Also distributed in America by Americade Amusement, Inc., of New Jersey.
+
+ It's basically a hardware hack of the normal Taito Space Invaders machine.
+
+ Changes (start with a Space Invaders with a colour CRT):
+
+ 1. The sound board is replaced with another that makes different sounds.
+
+ 2. A sardine-can-shaped potted black epoxy block containing a 4mhz crystal,
+ two large 40-pin ICs, at least 2 roms, and a number of TTL-shaped chips.
+ My assumption is that one of the big chips is a (slave sound) CPU.
+
+ 3. New main roms
+
+ 4. A small card contains a colour PROM. There's no RAM for this, so the colours
+ must be quite simplistic.
+
+ The main CPU communicates to the slave by sending sound codes via port 3,
+ while port 5 controls various aspects of the screen display.
+
+ The method of enabling cocktail mode is the same as for Space Invaders, that is,
+ changing the positions of SW5,6,7; cutting a track; and adding some jumpers.
+ Obviously this is a once-off change for the table model.
+
+ Known bugs in the original roms:
+
+ 1. If you turn on the machine, start a 1-player game and just let it run to the
+ end, it will congratulate player 2 for getting a high score. Of course, zero
+ points is not a high score, and there wasn't a player 2.
+
+ 2. If you die just after killing the last enemy in the 8th level, the docking
+ stage uses the wrong colour map. I've added a fix for this.
+
+
+ Notes about colour proms:
+
+ 1. The proms from sets 'invrvnga' and 'invrvng3' are the correct ones. The prom
+ from 'invrvng3' is used for the other sets, as their proms haven't shown up yet.
+
+ 2. Real name for 'invrvnga' prom is '3r.bin' ; for 'invrvng3' is 'ir.clr'.
+
+ Todo:
+
+ 1. Identify the slave CPU and make it work.
+ 2. Get schematic diagrams, and design a discrete sound board.
+
+ Changes:
+
+ 1. Added above documentation (MAME doesn't have any)
+ 2. Identified all sound codes. (We only need good samples now)
+
+*******************************************************************************************/
+
+#include "emu.h"
+#include "cpu/i8085/i8085.h"
+#include "machine/mb14241.h"
+#include "sound/samples.h"
+#include "screen.h"
+#include "speaker.h"
+
+#define MW8080BW_MASTER_CLOCK (19968000.0)
+#define MW8080BW_CPU_CLOCK (MW8080BW_MASTER_CLOCK / 10)
+#define MW8080BW_PIXEL_CLOCK (MW8080BW_MASTER_CLOCK / 4)
+#define MW8080BW_HTOTAL (0x140)
+#define MW8080BW_HBEND (0x000)
+#define MW8080BW_HBSTART (0x100)
+#define MW8080BW_VTOTAL (0x106)
+#define MW8080BW_VBEND (0x000)
+#define MW8080BW_VBSTART (0x0e0)
+#define MW8080BW_VCOUNTER_START_NO_VBLANK (0x020)
+#define MW8080BW_VCOUNTER_START_VBLANK (0x0da)
+#define MW8080BW_INT_TRIGGER_COUNT_1 (0x080)
+#define MW8080BW_INT_TRIGGER_VBLANK_1 (0)
+#define MW8080BW_INT_TRIGGER_COUNT_2 MW8080BW_VCOUNTER_START_VBLANK
+#define MW8080BW_INT_TRIGGER_VBLANK_2 (1)
+#define MW8080BW_HPIXCOUNT MW8080BW_HBSTART
+
+class ir_state : public driver_device
+{
+public:
+ ir_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this,"maincpu")
+ , m_p_ram(*this, "ram")
+ , m_samples(*this, "samples")
+ , m_screen(*this, "screen")
+ { }
+
+ DECLARE_READ8_MEMBER(mw8080bw_shift_result_rev_r);
+ DECLARE_READ8_MEMBER(mw8080bw_reversable_shift_result_r);
+ DECLARE_WRITE8_MEMBER(mw8080bw_reversable_shift_count_w);
+ DECLARE_READ8_MEMBER(port02_r);
+ DECLARE_WRITE8_MEMBER(port03_w);
+ DECLARE_WRITE8_MEMBER(port05_w);
+ DECLARE_MACHINE_START(ir);
+ DECLARE_MACHINE_RESET(ir);
+ TIMER_CALLBACK_MEMBER(mw8080bw_interrupt_callback);
+ uint32_t screen_update_ir(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+private:
+
+ bool m_flip_screen;
+ bool m_screen_red;
+ emu_timer *m_interrupt_timer;
+ uint8_t vpos_to_vysnc_chain_counter( int vpos );
+ int vysnc_chain_counter_to_vpos( uint8_t counter, int vblank );
+ void mw8080bw_create_interrupt_timer( );
+ void mw8080bw_start_interrupt_timer( );
+
+ /* device/memory pointers */
+ required_device<cpu_device> m_maincpu;
+ required_shared_ptr<uint8_t> m_p_ram;
+ required_device<samples_device> m_samples;
+ required_device<screen_device> m_screen;
+};
+
+
+READ8_MEMBER(ir_state::port02_r)
+{
+ uint8_t data = ioport("IN2")->read();
+ if (m_flip_screen) return data;
+ return (data & 0x8f) | (ioport("IN1")->read() & 0x70);
+}
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, ir_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x7fff)
+ AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP
+ AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("ram")
+ AM_RANGE(0x4000, 0x5fff) AM_ROM AM_WRITENOP
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( invrvnge_io_map, AS_IO, 8, ir_state )
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
+ AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
+ AM_RANGE(0x02, 0x02) AM_READ(port02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
+ AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(port03_w)
+ AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
+ AM_RANGE(0x05, 0x05) AM_WRITE(port05_w)
+ AM_RANGE(0x06, 0x06) AM_WRITENOP //(watchdog_reset_w)
+ADDRESS_MAP_END
+
+//static ADDRESS_MAP_START( invrvnge_sound_map, AS_PROGRAM, 8, ir_state )
+// ADDRESS_MAP_UNMAP_HIGH
+// AM_RANGE(0x0000, 0xffff) AM_ROM // dummy prg map, TODO: decrypt ROM
+//ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( ir )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_DIPNAME( 0x06, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5,6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) // [code: 0x3b1-3b5]
+ PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Harder ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( Hardest ) )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // must be low or game won't boot [code: 0x1a9-1af]
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_DIPNAME( 0x80, 0x80, "Fuel Destroyed by Comet" ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x80, "6" )
+ //PORT_DIPNAME( 0x80, 0x00, "Fuel Usage" ) // [code: 0x1cb0-1cb6]
+ //PORT_DIPSETTING( 0x80, "Fast" )
+ //PORT_DIPSETTING( 0x00, "Slow" )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // [code: 0x750-75B] causes this switch to be ineffective
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPSETTING( 0x02, "5" )
+ PORT_DIPSETTING( 0x03, "6" )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x00, "1500" ) // [code: 0x3b9-3c9]
+ PORT_DIPSETTING( 0x08, "2000" )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) // 1 play 10p, 2 play 20p, 6 play 50p
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) // 1 play 20p, 2 play 40p, 3 play 50p
+
+ PORT_START("CAB")
+ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( Cocktail ) )
+INPUT_PORTS_END
+
+uint8_t ir_state::vpos_to_vysnc_chain_counter( int vpos )
+{
+ /* convert from a vertical position to the actual values on the vertical sync counters */
+ uint8_t counter;
+ int vblank = (vpos >= MW8080BW_VBSTART);
+
+ if (vblank)
+ counter = vpos - MW8080BW_VBSTART + MW8080BW_VCOUNTER_START_VBLANK;
+ else
+ counter = vpos + MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return counter;
+}
+
+
+int ir_state::vysnc_chain_counter_to_vpos( uint8_t counter, int vblank )
+{
+ /* convert from the vertical sync counters to an actual vertical position */
+ int vpos;
+
+ if (vblank)
+ vpos = counter - MW8080BW_VCOUNTER_START_VBLANK + MW8080BW_VBSTART;
+ else
+ vpos = counter - MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return vpos;
+}
+
+
+TIMER_CALLBACK_MEMBER(ir_state::mw8080bw_interrupt_callback)
+{
+ uint8_t next_counter;
+ int next_vpos;
+ int next_vblank;
+
+ /* compute vector and set the interrupt line */
+ int vpos = m_screen->vpos();
+ uint8_t counter = vpos_to_vysnc_chain_counter(vpos);
+ uint8_t vector = 0xc7 | ((counter & 0x40) >> 2) | ((~counter & 0x40) >> 3);
+ m_maincpu->set_input_line_and_vector(0, HOLD_LINE, vector);
+
+ /* set up for next interrupt */
+ if (counter == MW8080BW_INT_TRIGGER_COUNT_1)
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_2;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_2;
+ }
+ else
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_1;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_1;
+ }
+
+ next_vpos = vysnc_chain_counter_to_vpos(next_counter, next_vblank);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(next_vpos));
+}
+
+
+void ir_state::mw8080bw_create_interrupt_timer( )
+{
+ m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ir_state::mw8080bw_interrupt_callback),this));
+}
+
+
+void ir_state::mw8080bw_start_interrupt_timer( )
+{
+ int vpos = vysnc_chain_counter_to_vpos(MW8080BW_INT_TRIGGER_COUNT_1, MW8080BW_INT_TRIGGER_VBLANK_1);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(vpos));
+}
+
+
+
+/*************************************
+ *
+ * Machine setup
+ *
+ *************************************/
+
+MACHINE_START_MEMBER( ir_state, ir )
+{
+ mw8080bw_create_interrupt_timer();
+}
+
+
+/*************************************
+ *
+ * Machine reset
+ *
+ *************************************/
+
+MACHINE_RESET_MEMBER( ir_state, ir )
+{
+ mw8080bw_start_interrupt_timer();
+}
+
+static const char *const ir_sample_names[] =
+{
+ "*invrvnge",
+ "02", /* insert coin */
+ "06", /* you shoot */
+ "14", /* hit alien */
+ "16", /* hit asteroid */
+ "18", /* low fuel */
+ "1a", /* successful docking */
+ "1e", /* die */
+ "22", /* start game */
+ "24", /* alien diving */
+ "26", /* alien steals fuel */
+ "28", /* background sound 1 */
+ "2a", /* background sound 2 */
+ "2c", /* background sound 3 */
+ "2e", /* background sound 4 */
+ "30", /* build up fuel */
+ "32", /* ufo fires */
+ "34", /* high score */
+ "36", /* docking stage */
+ "38", /* bonus ship */
+ "3a", /* thrust */
+ 0
+};
+
+
+/*************************************************************************************/
+/* Notes: */
+/* Init sequence: 0x01 (20 times), 0x40 (20 times), 0x4c, 0x40, 0x44, 0x40 (9 times).*/
+/* Player 1 start sequence: 0x0c, 0x20, 0x22. */
+/* Unknown codes: 0x0A, 0x0c */
+/*************************************************************************************/
+WRITE8_MEMBER(ir_state::port03_w)
+{
+ switch (data)
+ {
+ case 0x02: /* Coin */
+ machine().sound().system_enable(1); /* enable sound so we can hear coin drop */
+ m_samples->start(0, 0);
+ break;
+
+ case 0x04: /* Attract Mode */
+ machine().sound().system_enable(0); /* disable sound */
+ break;
+
+ case 0x06:
+ m_samples->start(1, 1); /* Shoot */
+ break;
+
+ case 0x14:
+ m_samples->start(2, 2); /* Hit Alien (0x0a happens at the same time) */
+ break;
+
+ case 0x16:
+ m_samples->start(2, 3); /* Hit Asteroid */
+ break;
+
+ case 0x18: /* Fuel Low */
+ m_samples->start(5, 4);
+ break;
+
+ case 0x1a: /* Successful docking */
+ m_samples->start(0, 5);
+ break;
+
+ case 0x1c: /* Finished fuelling */
+ m_samples->stop(0);
+ break;
+
+ case 0x1e:
+ m_samples->start(0, 6); /* Death */
+ break;
+
+ case 0x20:
+ machine().sound().system_enable(1); /* enable sound for game start */
+ case 0x22:
+ m_samples->start(0, 7); /* Start Game */
+ break;
+
+ case 0x24: /* Alien dropping to steal fuel */
+ m_samples->start(3, 8);
+ break;
+
+ case 0x26: /* Alien lifting with fuel */
+ m_samples->start(4, 9);
+ break;
+
+ case 0x28: /* background sound level 1 */
+ case 0x2a: /* background sound level 2 */
+ case 0x2c: /* background sound level 3 */
+ case 0x2e: /* background sound level 4 */
+ m_samples->start(0, data/2-10, 1);
+ break;
+
+ case 0x30: /* Fuel bar filling up */
+ m_samples->start(0, 14);
+ break;
+
+ case 0x32: /* UFO drops a bomb */
+ m_samples->start(6, 15);
+ break;
+
+ case 0x34: /* You got the highest score */
+ m_samples->start(0, 16);
+ break;
+
+ case 0x36: /* Docking stage */
+ m_screen_red = 0; /* fix bug (2) in documentation */
+ m_samples->start(0, 17);
+ break;
+
+ case 0x38: /* Bonus ship */
+ m_samples->start(8, 18);
+ break;
+
+ case 0x3a: /* Thrust */
+ m_samples->start(7, 19);
+ break;
+
+ case 0x4c:
+ m_samples->stop(0); // using this to stop sound if game tilted
+ case 0x01: /* These 3 play at boot time */
+ case 0x40: /* no idea if they are actual sounds */
+ case 0x44:
+
+ case 0x0a: /* with 0x14 */
+ case 0x0c: /* used a lot but for what? */
+ break;
+
+ default:
+ if (data) printf("Undefined sound code: %X\n",data);
+ }
+}
+
+WRITE8_MEMBER(ir_state::port05_w)
+{
+/*
+ 00 - normal play
+ 0A, 0E - alternate during play/attract at about once per second (invrvngegw only) purpose unknown
+ 01 - briefly at boot time
+ 10 - different colour map (or screen red) when you die
+ 20 - flip screen */
+
+ m_screen_red = BIT(data, 4);
+ m_flip_screen = BIT(data, 5) & ioport("CAB")->read();
+}
+
+uint32_t ir_state::screen_update_ir(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ pen_t pens[8];
+ offs_t offs, color_address;
+ uint8_t *prom;
+ uint8_t *color_map_base;
+ uint8_t i, x, y, data, fore_color, color;
+
+ for (i = 0; i < 8; i++)
+ pens[i] = rgb_t(pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1));
+
+ prom = memregion("proms")->base();
+ color_map_base = &prom[0x0000];
+
+ for (offs = 0; offs < m_p_ram.bytes(); offs++)
+ {
+ y = offs >> 5;
+ x = offs << 3;
+
+ color_address = (offs >> 8 << 5) | (offs & 0x1f);
+
+ data = m_p_ram[offs];
+ fore_color = m_screen_red ? 1 : color_map_base[color_address] & 0x07;
+
+ for (i = 0; i < 8; i++)
+ {
+ color = BIT(data, i) ? fore_color : 0;
+
+ if (y >= MW8080BW_VCOUNTER_START_NO_VBLANK)
+ {
+ if (m_flip_screen)
+ bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - x) = pens[color];
+ else
+ bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, x) = pens[color];
+ }
+
+ x++;
+ }
+ }
+
+ return 0;
+}
+
+static MACHINE_CONFIG_START( ir, ir_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",I8080,MW8080BW_CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_IO_MAP(invrvnge_io_map)
+ MCFG_MACHINE_START_OVERRIDE(ir_state, ir)
+ MCFG_MACHINE_RESET_OVERRIDE(ir_state, ir)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(ir_state, screen_update_ir)
+
+ //MCFG_CPU_ADD("audiocpu", M6808, XTAL_4MHz/2) // MC6808P
+ //MCFG_CPU_PROGRAM_MAP(invrvnge_sound_map)
+
+ /* add shifter */
+ MCFG_MB14241_ADD("mb14241")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ //MCFG_SOUND_ADD("ay1", AY8910, XTAL_4MHz/2)
+ //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
+
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(9)
+ MCFG_SAMPLES_NAMES(ir_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+ROM_START( ir )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "h.ic36", 0x0000, 0x0800, CRC(0e229b9f) SHA1(617197bf94e9700cbbb2f32487dc47b318d4f2af) )
+ ROM_LOAD( "g.ic35", 0x0800, 0x0800, CRC(26b38aa4) SHA1(f281c7ec47ce6ab61bfda2e7aa6a5b8a01f2c11e) )
+ ROM_LOAD( "f.ic34", 0x1000, 0x0800, CRC(b3b2749e) SHA1(4f854f981396e2d6a959dd48cff12234074fb69b) )
+ ROM_LOAD( "e.ic33", 0x1800, 0x0800, CRC(d8e75102) SHA1(86d5618944265947e3ce60fdf048d8fff4a55744) )
+
+ // not used
+ //ROM_REGION( 0x10000, "audiocpu", 0 ) // encrypted
+ //ROM_LOAD( "snd.2c", 0xf000, 0x0800, CRC(135f3b16) SHA1(d472a6ca32c4a16cc1faf09f4a4876d75cd4ba24) )
+ //ROM_LOAD( "snd.1c", 0xf800, 0x0800, CRC(152fc85e) SHA1(df207d6e690287a56e4e330deaa5ee40a179f1fc) )
+
+ ROM_REGION( 0x0800, "proms", 0 )
+ ROM_LOAD( "colour.bin", 0x0000, 0x0800, CRC(7de74988) SHA1(0b8c94b2bfdbc3921d60aad765df8af611f3fdd7) )
+ROM_END
+
+GAME( 1980?,ir, invrvnge, ir, ir, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (Extra Sounds)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/itech8.cpp b/docs/release/src/hbmame/drivers/itech8.cpp
new file mode 100644
index 00000000000..ef29ae3ad5b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/itech8.cpp
@@ -0,0 +1,22 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/itech8.cpp"
+
+ROM_START( itecdemo )
+ ROM_REGION( 0x1c000, "maincpu", 0 )
+ ROM_LOAD( "u5d.bin", 0x04000, 0x4000, CRC(749a1336) SHA1(f3f1220fbb9b61214e7b4e675a6ab5bbe9db50af) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+ ROM_COPY( "maincpu", 0x14000, 0x8000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "u27d.bin", 0x08000, 0x8000, CRC(f0cd7332) SHA1(770b5d9b531495df0ff6350942cbd5147a875e9b) )
+
+ ROM_REGION( 0xc0000, "grom", 0 )
+ ROM_LOAD( "grom0d.bin", 0x00000, 0x20000, CRC(e4f9fe36) SHA1(ad8cb4eb1d5d685bb22ca6fee5f1efcd682f8b38) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD_OPTIONAL( "srom0d.bin", 0x00000, 0x20000, CRC(7ee8cdcd) SHA1(67dfd19f3eb3649d6f3f6631e44d0bd36b8d8d19) )
+ROM_END
+
+
+GAME( 1989, itecdemo, 0, stratab_hi, gtg, driver_device, 0, ROT0, "Charles Doty", "Demo - Itec", 0 )
diff --git a/docs/release/src/hbmame/drivers/jrpacman.cpp b/docs/release/src/hbmame/drivers/jrpacman.cpp
new file mode 100644
index 00000000000..d056e1ff33e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/jrpacman.cpp
@@ -0,0 +1,1212 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***************************************************************************
+
+ Bally/Midway Jr. Pac-Man
+
+ Games supported:
+ * Jr. Pac-Man
+
+ Known issues:
+ * none
+
+****************************************************************************
+
+ Jr. Pac Man memory map (preliminary)
+
+ 0000-3fff ROM
+ 4000-47ff Video RAM (also color RAM)
+ 4800-4fff RAM
+ 8000-dfff ROM
+
+ memory mapped ports:
+
+ read:
+ 5000 P1
+ 5040 P2
+ 5080 DSW
+
+ *
+ * IN0 (all bits are inverted)
+ * bit 7 : CREDIT
+ * bit 6 : COIN 2
+ * bit 5 : COIN 1
+ * bit 4 : RACK TEST
+ * bit 3 : DOWN player 1
+ * bit 2 : RIGHT player 1
+ * bit 1 : LEFT player 1
+ * bit 0 : UP player 1
+ *
+ *
+ * IN1 (all bits are inverted)
+ * bit 7 : TABLE or UPRIGHT cabinet select (1 = UPRIGHT)
+ * bit 6 : START 2
+ * bit 5 : START 1
+ * bit 4 : TEST SWITCH
+ * bit 3 : DOWN player 2 (TABLE only)
+ * bit 2 : RIGHT player 2 (TABLE only)
+ * bit 1 : LEFT player 2 (TABLE only)
+ * bit 0 : UP player 2 (TABLE only)
+ *
+ *
+ * DSW1 (all bits are inverted)
+ * bit 7 : ?
+ * bit 6 : difficulty level
+ * 1 = Normal 0 = Harder
+ * bit 5 :\ bonus pac at xx000 pts
+ * bit 4 :/ 00 = 10000 01 = 15000 10 = 20000 11 = 30000
+ * bit 3 :\ nr of lives
+ * bit 2 :/ 00 = 1 01 = 2 10 = 3 11 = 5
+ * bit 1 :\ play mode
+ * bit 0 :/ 00 = free play 01 = 1 coin 1 credit
+ * 10 = 1 coin 2 credits 11 = 2 coins 1 credit
+ *
+
+ write:
+ 4ff2-4ffd 6 pairs of two bytes:
+ the first byte contains the sprite image number (bits 2-7), Y flip (bit 0),
+ X flip (bit 1); the second byte the color
+ 5000 interrupt enable
+ 5001 sound enable
+ 5002 unused
+ 5003 flip screen
+ 5004 unused
+ 5005 unused
+ 5006 unused
+ 5007 coin counter
+ 5040-5044 sound voice 1 accumulator (nibbles) (used by the sound hardware only)
+ 5045 sound voice 1 waveform (nibble)
+ 5046-5049 sound voice 2 accumulator (nibbles) (used by the sound hardware only)
+ 504a sound voice 2 waveform (nibble)
+ 504b-504e sound voice 3 accumulator (nibbles) (used by the sound hardware only)
+ 504f sound voice 3 waveform (nibble)
+ 5050-5054 sound voice 1 frequency (nibbles)
+ 5055 sound voice 1 volume (nibble)
+ 5056-5059 sound voice 2 frequency (nibbles)
+ 505a sound voice 2 volume (nibble)
+ 505b-505e sound voice 3 frequency (nibbles)
+ 505f sound voice 3 volume (nibble)
+ 5062-506d Sprite coordinates, x/y pairs for 6 sprites
+ 5070 palette bank
+ 5071 colortable bank
+ 5073 background priority over sprites
+ 5074 char gfx bank
+ 5075 sprite gfx bank
+ 5080 scroll
+ 50c0 Watchdog reset
+
+ I/O ports:
+ OUT on port $0 sets the interrupt vector
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "includes/pacman.h"
+#include "sound/namco.h"
+
+
+class jrpacman_state : public pacman_state
+{
+public:
+ jrpacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : pacman_state(mconfig, type, tag) { }
+ DECLARE_WRITE8_MEMBER(jrpacman_interrupt_vector_w);
+ DECLARE_WRITE8_MEMBER(irq_mask_w);
+ DECLARE_DRIVER_INIT(jrpacman);
+ INTERRUPT_GEN_MEMBER(vblank_irq);
+};
+
+
+
+WRITE8_MEMBER(jrpacman_state::jrpacman_interrupt_vector_w)
+{
+ machine().device("maincpu")->execute().set_input_line_vector(0, data);
+ machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
+}
+
+WRITE8_MEMBER(jrpacman_state::irq_mask_w)
+{
+ m_irq_mask = data & 1;
+}
+
+/*************************************
+ *
+ * Main CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, jrpacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4800, 0x4fef) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x503f) AM_READ_PORT("P1")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5040, 0x507f) AM_READ_PORT("P2")
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5070) AM_WRITE(pengo_palettebank_w)
+ AM_RANGE(0x5071, 0x5071) AM_WRITE(pengo_colortablebank_w)
+ AM_RANGE(0x5073, 0x5073) AM_WRITE(jrpacman_bgpriority_w)
+ AM_RANGE(0x5074, 0x5074) AM_WRITE(jrpacman_charbank_w)
+ AM_RANGE(0x5075, 0x5075) AM_WRITE(jrpacman_spritebank_w)
+ AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW")
+ AM_RANGE(0x5080, 0x5080) AM_WRITE(jrpacman_scroll_w)
+ AM_RANGE(0x50c0, 0x50c0) AM_WRITENOP
+ AM_RANGE(0x8000, 0xdfff) AM_ROM
+// HBMAME extras
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ //AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP
+ AM_RANGE(0x5007, 0x5007) AM_WRITENOP
+ AM_RANGE(0x5072, 0x5072) AM_WRITENOP
+ AM_RANGE(0x5076, 0x507f) AM_WRITENOP
+ AM_RANGE(0xfffc, 0xffff) AM_RAM /* for jrfast and fastjr */
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( port_map, AS_IO, 8, jrpacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0, 0) AM_WRITE(jrpacman_interrupt_vector_w)
+ADDRESS_MAP_END
+
+
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+static INPUT_PORTS_START( jrpacman )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ /* Press this to instantly finish the level - HBMAME */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Finish Level (Cheat)") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x10, "15000" )
+ PORT_DIPSETTING( 0x20, "20000" )
+ PORT_DIPSETTING( 0x30, "30000" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// HBMAME extras
+ PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat. */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+ PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+ PORT_DIPSETTING( 0x00, "Disabled" )
+ PORT_DIPSETTING( 0x02, "Enabled with Button" )
+ PORT_DIPSETTING( 0x04, "Enabled Always" )
+
+ PORT_START ("CONFIG")
+ PORT_CONFNAME( 0x01, 0x01, "Level" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * Graphics layouts
+ *
+ *************************************/
+
+static const gfx_layout tilelayout =
+{
+ 8,8,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, 4 },
+ { STEP4(8*8,1), STEP4(0*8,1) },
+ { STEP8(0*8,8) },
+ 16*8
+};
+
+
+static const gfx_layout spritelayout =
+{
+ 16,16,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, 4 },
+ { STEP4(8*8,1), STEP4(16*8,1), STEP4(24*8,1), STEP4(0*8,1) },
+ { STEP8(0*8,8), STEP8(32*8,8) },
+ 64*8
+};
+
+
+static GFXDECODE_START( jrpacman )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, tilelayout, 0, 128 )
+ GFXDECODE_ENTRY( "gfx1", 0x2000, spritelayout, 0, 128 )
+GFXDECODE_END
+
+
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+INTERRUPT_GEN_MEMBER(jrpacman_state::vblank_irq)
+{
+ if(m_irq_mask)
+ device.execute().set_input_line(0, HOLD_LINE);
+}
+
+static MACHINE_CONFIG_START( jrpacman, jrpacman_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_IO_MAP(port_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", jrpacman_state, vblank_irq)
+// MCFG_CPU_VBLANK_INT_DRIVER("screen", pacman_state, vblank_irq) // HBMAME
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.606060)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman)
+ MCFG_VIDEO_START_OVERRIDE(jrpacman_state,jrpacman)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", jrpacman)
+ MCFG_PALETTE_ADD("palette", 128*4)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32)
+ MCFG_PALETTE_INIT_OWNER(jrpacman_state,pacman)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("namco", NAMCO, 3072000/32)
+ MCFG_NAMCO_AUDIO_VOICES(3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( jrpacman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) ) /* tiles (bank 1 & 2) */
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) /* sprites (bank 1 & 2) */
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacmanf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "fast_jr.8d", 0x0000, 0x2000, CRC(461e8b57) SHA1(42e25d384e653efb95a97bd64f55a8c3b3f71239) ) // only 1 byte difference
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) ) /* tiles (bank 1 & 2) */
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) /* sprites (bank 1 & 2) */
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER(jrpacman_state,jrpacman)
+{
+ /* The encryption PALs garble bits 0, 2 and 7 of the ROMs. The encryption */
+ /* scheme is complex (basically it's a state machine) and can only be */
+ /* faithfully emulated at run time. To avoid the performance hit that would */
+ /* cause, here we have a table of the values which must be XORed with */
+ /* each memory region to obtain the decrypted bytes. */
+ /* Decryption table provided by David Caldwell (david@indigita.com) */
+ /* For an accurate reproduction of the encryption, see jrcrypt.c */
+ static const struct {
+ int count;
+ int value;
+ } table[] =
+ {
+ { 0x00C1, 0x00 },{ 0x0002, 0x80 },{ 0x0004, 0x00 },{ 0x0006, 0x80 },
+ { 0x0003, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0004, 0x80 },
+ { 0x9968, 0x00 },{ 0x0001, 0x80 },{ 0x0002, 0x00 },{ 0x0001, 0x80 },
+ { 0x0009, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0001, 0x80 },
+ { 0x00AF, 0x00 },{ 0x000E, 0x04 },{ 0x0002, 0x00 },{ 0x0004, 0x04 },
+ { 0x001E, 0x00 },{ 0x0001, 0x80 },{ 0x0002, 0x00 },{ 0x0001, 0x80 },
+ { 0x0002, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0002, 0x80 },
+ { 0x0009, 0x00 },{ 0x0002, 0x80 },{ 0x0083, 0x00 },{ 0x0001, 0x04 },
+ { 0x0001, 0x01 },{ 0x0001, 0x00 },{ 0x0002, 0x05 },{ 0x0001, 0x00 },
+ { 0x0003, 0x04 },{ 0x0003, 0x01 },{ 0x0002, 0x00 },{ 0x0001, 0x04 },
+ { 0x0003, 0x01 },{ 0x0003, 0x00 },{ 0x0003, 0x04 },{ 0x0001, 0x01 },
+ { 0x002E, 0x00 },{ 0x0078, 0x01 },{ 0x0001, 0x04 },{ 0x0001, 0x05 },
+ { 0x0001, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },
+ { 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },{ 0x0001, 0x01 },
+ { 0x0001, 0x04 },{ 0x0002, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },
+ { 0x0001, 0x05 },{ 0x0001, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },
+ { 0x0002, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },
+ { 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0001, 0x05 },{ 0x0001, 0x00 },
+ { 0x01B0, 0x01 },{ 0x0001, 0x00 },{ 0x0002, 0x01 },{ 0x00AD, 0x00 },
+ { 0x0031, 0x01 },{ 0x005C, 0x00 },{ 0x0005, 0x01 },{ 0x604E, 0x00 },
+ { 0,0 }
+ };
+
+ uint8_t *RAM = machine().root_device().memregion("maincpu")->base();
+ int i, j, A;
+
+ for (i = A = 0; table[i].count; i++)
+ for (j = 0; j < table[i].count; j++)
+ RAM[A++] ^= table[i].value;
+}
+
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+GAME( 1983, jrpacman, 0, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man (11/9/83)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrpacmanf, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "hack", "Jr. Pac-Man (speedup hack)", MACHINE_SUPPORTS_SAVE )
+
+
+// HBMAME roms
+
+ROM_START( jr1000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr1000.2c", 0x0000, 0x2000, CRC(8f93c273) SHA1(e672e0fdc8956967783110c0f36cfe0fd77cca90) )
+ ROM_LOAD( "jr1000.2e", 0x2000, 0x2000, CRC(eac97aec) SHA1(af5b88e1ce9d14851ae2db4e90cb6adb8df949c7) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) )
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) )
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( jr1000_2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr1000.2c", 0x0000, 0x2000, CRC(8f93c273) SHA1(e672e0fdc8956967783110c0f36cfe0fd77cca90) )
+ ROM_LOAD( "jr1000_2.2e", 0x2000, 0x2000, CRC(4f2010d4) SHA1(0835375487ccdb2ae77dd9e62229d0b6aeb9142a) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2000.2c", 0x0000, 0x2000, CRC(2784936b) SHA1(31ceeaa0a6c2ca042d829b0baa7b5455c3942790) )
+ ROM_LOAD( "jr2000.2e", 0x2000, 0x2000, CRC(a26f1a49) SHA1(86d51269db2f7d8f6a7f12bd2bc1e2ab82f8be83) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2001 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2001.2c", 0x0000, 0x2000, CRC(9171f08f) SHA1(d2af715feb9b5266edc24a0ea9eaecc456eb4fac) )
+ ROM_LOAD( "jr2001.2e", 0x2000, 0x2000, CRC(3164b853) SHA1(a3e23a902a9548a7025248a0e63fcbd4374de554) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2001p)
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2001p.2c", 0x0000, 0x2000, CRC(d56cb9c5) SHA1(e598a28c0a4f1cdce2312a8dc418cfa441fc5fe8) )
+ ROM_LOAD( "jr2001p.2e", 0x2000, 0x2000, CRC(1b534804) SHA1(b93764b6d6aacdcb4a50fffec58cab7778ada3ab) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2002 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2002.2c", 0x0000, 0x2000, CRC(e254096c) SHA1(f56127a6dcf8a6a5c916f33a29d761d36d55e543) )
+ ROM_LOAD( "jr2002.2e", 0x2000, 0x2000, CRC(e3240bec) SHA1(255669c33f88e39a5c5f041a800f14ec29d24f38) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2002p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2002p.2c", 0x0000, 0x2000, CRC(ad1d0360) SHA1(d401a4575899c64c35977c1c49dfe9ad38a804e7) )
+ ROM_LOAD( "jr2002p.2e", 0x2000, 0x2000, CRC(160321a1) SHA1(8e4ed3f8f5270fec8a00db92a6aebc9951074f33) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2003 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2003.2c", 0x0000, 0x2000, CRC(0ffe21f5) SHA1(3a5503f46d4813ff77aaa633122346228bba659b) )
+ ROM_LOAD( "jr2003.2e", 0x2000, 0x2000, CRC(1fd35d7a) SHA1(b04e25c1fd0a148c4caae8ccb07fd2e3b4120325) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2003p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2003p.2c", 0x0000, 0x2000, CRC(b24e9383) SHA1(ba82f2e58e7ba1b64cf52c5da3bb8bf3fac7cea3) )
+ ROM_LOAD( "jr2003p.2e", 0x2000, 0x2000, CRC(65ba2fb7) SHA1(3a0ee8798c72d13300712a2537b3a44a13f9338f) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2004 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2004.2c", 0x0000, 0x2000, CRC(3c20cf84) SHA1(8d34d50839b3f62bfbe9ee4ed633422be6459e73) )
+ ROM_LOAD( "jr2004.2e", 0x2000, 0x2000, CRC(f08575ab) SHA1(c5935f88fac7cc9f58e56d857e89c232582c1882) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2004p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2004p.2c", 0x0000, 0x2000, CRC(6e1db602) SHA1(27bf6776d044c602cf9da88cfd19e23d4771759d) )
+ ROM_LOAD( "jr2004p.2e", 0x2000, 0x2000, CRC(ab075ebe) SHA1(4cafb1019acf49111fdc5e695d95610219a0573d) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2005 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2005.2c", 0x0000, 0x2000, CRC(42eb8848) SHA1(79ee37c77ec8374c568699c4161cd46ef8631a17) )
+ ROM_LOAD( "jr2005.2e", 0x2000, 0x2000, CRC(502d286c) SHA1(7fcf21d4037f7ffaf68be4c9089b3b3aa0ad59d3) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr2005p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr2005p.2c", 0x0000, 0x2000, CRC(4d03cd0a) SHA1(eb3c5ed5d0a5d4d67baae2ad629ffbfadbe2bea3) )
+ ROM_LOAD( "jr2005p.2e", 0x2000, 0x2000, CRC(51cbce81) SHA1(37129228e8e92dd2a500ac2653364506129b7a2e) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr3000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr1000.2c", 0x0000, 0x2000, CRC(8f93c273) SHA1(e672e0fdc8956967783110c0f36cfe0fd77cca90) )
+ ROM_LOAD( "jr3000p.2e", 0x2000, 0x2000, CRC(0a8f7b5c) SHA1(2182b24330021faa447944e51bebc5159b2b4f0b) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr4000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr4000p.2c", 0x0000, 0x2000, CRC(c5f05f11) SHA1(9fdafd46adebb709b2b897b0b53b05c4392239b2) )
+ ROM_LOAD( "jr4000p.2e", 0x2000, 0x2000, CRC(944add80) SHA1(c391a2bb0d655da87d13581b16d09fe896106efd) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr5000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr5000p.2c", 0x0000, 0x2000, CRC(086979e1) SHA1(6c7fa4118fbb90417d3397c9f1f5eee14cb938de) )
+ ROM_LOAD( "jr5000p.2e", 0x2000, 0x2000, CRC(a0fce81b) SHA1(8704a18e43c5134fc758df3a443c3f0e6990c417) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr6000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr6000.2c", 0x0000, 0x2000, CRC(44bd3c24) SHA1(d0321f314f604bb268fd62fde2e6a536f2c735f2) )
+ ROM_LOAD( "jr6000.2e", 0x2000, 0x2000, CRC(83c8ff32) SHA1(ceae512347ca4c4aa1e88623894c3279281c0639) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr7000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr7000.2c", 0x0000, 0x2000, CRC(3dca34d5) SHA1(02b8ac91a683fa9688e5897ac206f344fbd71767) )
+ ROM_LOAD( "jr7000.2e", 0x2000, 0x2000, CRC(202f2f37) SHA1(337f7e7d123f914833115610a763fe7dc55c3d24) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr7000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr7000p.2c", 0x0000, 0x2000, CRC(3b3e60fe) SHA1(26ff62f8aa655fa927694f791ae8a361dc438f3c) )
+ ROM_LOAD( "jr7000p.2e", 0x2000, 0x2000, CRC(89b17c92) SHA1(2fc39e05fc35a69a6d224b6024f978b7c15bfb80) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr8000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr8000.2c", 0x0000, 0x2000, CRC(9653f563) SHA1(0a71d70645a8cd2e407a638e934deda43b41e56c) )
+ ROM_LOAD( "jr8000.2e", 0x2000, 0x2000, CRC(0b1791f8) SHA1(1d6d494d8acfd57301fc01a86a27df2b7e697f1b) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr8000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr8000p.2c", 0x0000, 0x2000, CRC(913a0bea) SHA1(005e3908956169648464dfdd6ae5e2b67ba2233f) )
+ ROM_LOAD( "jr8000p.2e", 0x2000, 0x2000, CRC(aed01226) SHA1(ae8022e36c7f7c083c1a697e54c7587044fcb491) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jr9000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jr9000p.2c", 0x0000, 0x2000, CRC(b2653891) SHA1(e96ab61f58bb9b47751e7e9397f2d44ff35897e6) )
+ ROM_LOAD( "jr9000p.2e", 0x2000, 0x2000, CRC(87f45bd7) SHA1(7a45e0d5479de3d867518354f108e62f7e4d9877) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrcheat )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cheat-8d.bin", 0x0000, 0x2000, CRC(8b5b8d72) SHA1(65af9245015480751b3714980caed81e421d102c) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) )
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrdeluxe )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrdeluxe.2c", 0x0000, 0x2000, CRC(90517001) SHA1(cfb4a43bf9ef732a940b027de383e7a6ec0ec671) )
+ ROM_LOAD( "jrdeluxe.2e", 0x2000, 0x2000, CRC(ef042965) SHA1(8497d2c7fdae6b1903df421ae1358a3b41e78599) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+/* The first rom (jppac1.bin) contains hacked jrpacman in first half, and unhacked in 2nd half.
+ Therefore the 2nd half is not needed. The only byte changed in the hack is the speedup byte at 0x180d */
+
+ROM_START( jrfast )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jppac1.bin", 0x0000, 0x2000, CRC(f3bcb240) SHA1(b1fbf28666d5f159daf8f6156e3e31c932bb4081) )
+ ROM_IGNORE (0x2000)
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) )
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrhearts )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrhearts.2c", 0x0000, 0x2000, CRC(40cafa63) SHA1(c68a7eefabe4d8b008533abe3cf4b1a6512cd25e) )
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrpacad.2c", 0x0000, 0x2000, CRC(1ecf940c) SHA1(035b1d44da3a010f8c158211d07f5c6e7d16b63d) )
+ ROM_LOAD( "jrvectr.2e", 0x2000, 0x2000, CRC(c0b35564) SHA1(c0c6de032023c301608c584489d564a61256345b) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacjr)
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrpacjr.2c", 0x0000, 0x2000, CRC(54e6c297) SHA1(fa3c5240ca8a9e0c520864189c8b18105af629a7) )
+ ROM_LOAD( "jrpacjr.2e", 0x2000, 0x2000, CRC(5b34dd98) SHA1(342393af97e13fe32b684e467bf48019f7c0c1c3) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacjrp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrpacjr.2c", 0x0000, 0x2000, CRC(54e6c297) SHA1(fa3c5240ca8a9e0c520864189c8b18105af629a7) )
+ ROM_LOAD( "jrpacjrp.2e", 0x2000, 0x2000, CRC(1ee279ef) SHA1(ec26313fdf82ff7e4ff0acef28e2ce21a0539c1f) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrpacp.2c", 0x0000, 0x2000, CRC(4fe4238e) SHA1(1175b3f9e3a9120a2149b124259097e8c574a76d) )
+ ROM_LOAD( "jrpacp.2e", 0x2000, 0x2000, CRC(5993c0fa) SHA1(d5eee63b06972b09668c3fd66e737668439e26b7) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrspeed )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "speed-8d.bin", 0x0000, 0x2000, CRC(461e8b57) SHA1(42e25d384e653efb95a97bd64f55a8c3b3f71239) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) )
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrvectr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrvectr.2c", 0x0000, 0x2000, CRC(4876ad83) SHA1(6ab405a622fe93bcea627635cb266712a4174ce5) )
+ ROM_LOAD( "jrvectr.2e", 0x2000, 0x2000, CRC(c0b35564) SHA1(c0c6de032023c301608c584489d564a61256345b) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jryumyum )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jryumyum.8e", 0x2000, 0x2000, CRC(934f1d34) SHA1(1c502edea62ee7fca11d54cb8ff0ea6263828056) )
+ ROM_LOAD( "jryumyum.8h", 0x8000, 0x2000, CRC(d59cb636) SHA1(f2e9c0d4c62706a9d7ec68633ccb0edadf5e5439) )
+ ROM_LOAD( "jryumyum.8j", 0xa000, 0x2000, CRC(010fb8dd) SHA1(4c1193d3a1abde76f8c28245a451873162ec6848) )
+ ROM_LOAD( "jryumyum.8k", 0xc000, 0x2000, CRC(191a176c) SHA1(ae5e3c4bd788dd56e0da4130388ee841002cab6c) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jryumyum.2c", 0x0000, 0x2000, CRC(f057d596) SHA1(66cbe2720ecc456e9cef5422cf060bd507967fc2) )
+ ROM_LOAD( "jryumyum.2e", 0x2000, 0x2000, CRC(e851bf29) SHA1(d31fd0bb3b0614a9750f07a55e93b94d16643899) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) )
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) )
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+
+
+GAME( 2000, jr1000, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 1000", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jr1000_2, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man 1000 (Alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2000, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2001, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2001", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2001p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2001 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2002, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2002", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2002p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2002 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2003, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2003", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2003p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2003 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2004, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2004", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2004p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2004 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2005, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2005", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr2005p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 2005 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr3000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 3000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr4000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 4000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr5000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 5000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr6000, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 6000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr7000, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 7000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr7000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 7000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr8000, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 8000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr8000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 8000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jr9000p, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man 9000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrcheat, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man Cheat [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jrdeluxe, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man Deluxe", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrfast, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. PacMan [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jrhearts, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man Hearts", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrpacad, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jrpacjr, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man Junior", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jrpacjrp, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man Junior Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jrpacp, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Blue Justice", "Jr. Pac-Man Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrspeed, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man Speed [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrvectr, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man Vector", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, jryumyum, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Tim Appleton", "Jr. Pac-Man Vs YumYum + Friends", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kaneko16.cpp b/docs/release/src/hbmame/drivers/kaneko16.cpp
new file mode 100644
index 00000000000..7c7b6850e60
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kaneko16.cpp
@@ -0,0 +1,66 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/kaneko16.cpp"
+
+ROM_START( fjbusterbh )
+ ROM_REGION( 0x040000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "fbbh030a.u61", 0x000000, 0x020000, CRC(c3a66037) SHA1(4ca1b440ca822d6c6adecb5c0a3d83126bc775a2) )
+ ROM_LOAD16_BYTE( "fbbh031j.u62", 0x000001, 0x020000, CRC(c104ca05) SHA1(6247ab05c6c88352a75d606961b98cd957709590) )
+
+ ROM_REGION( 0x020000, "calc3_rom", 0 )
+ ROM_LOAD( "fb040j.u33", 0x000000, 0x020000, CRC(299d0746) SHA1(67fe3a47ab01fa02ce2bb5836c2041986c19d875) )
+
+ ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASEFF )
+ ROM_LOAD( "fb-020a.u1", 0x000000, 0x100000, CRC(87e55c6d) SHA1(87886c045d7c30b8dee3c8fb0bf8f2cdbc5fd7fb) )
+ ROM_LOAD( "fb020b.u2", 0x100000, 0x100000, CRC(276b9d7b) SHA1(7a154f65b4737f2b6ac8effa3352711079f571dc) )
+ ROM_LOAD( "fb021a.u3", 0x200000, 0x100000, CRC(7da15d37) SHA1(345cf2242e8210a697294a45197f2b3b974de885) )
+ ROM_LOAD( "fb021b.u4", 0x300000, 0x100000, CRC(6a512d7b) SHA1(7fc3002d23262a9a590a283ea9e111e38d889ef2) )
+ ROM_LOAD( "fb-22a.u5", 0x400000, 0x100000, CRC(9039e5d3) SHA1(222452cd7947f7c99c68e495835cca62e0449b5c) )
+ ROM_LOAD( "fb-22b.u6", 0x500000, 0x100000, CRC(96ac9e54) SHA1(2b066375963dc57fe2ce89d65f6c0a9d183a838d) )
+ ROM_LOAD( "fb023.u7", 0x600000, 0x100000, CRC(132794bd) SHA1(bcc73c3183c59a4b66f79d04774773b8a9239501) )
+
+ ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_LOAD( "fb010.u65", 0x000000, 0x100000, CRC(296ffd92) SHA1(183a28e4594c428deb4726ed22d5166592b94b60) )
+ ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) )
+
+ ROM_REGION( 0x100000, "oki1", 0 )
+ ROM_LOAD( "fb000j.u43", 0x000000, 0x080000, CRC(a7522555) SHA1(ea88d90dda20bc309f98a1924c41551e7708e6af) )
+ ROM_LOAD( "fb001j_u.101", 0x080000, 0x080000, CRC(07d4e8e2) SHA1(0de911f452ddeb54b0b435b9c1cf5d5881175d44) )
+
+ ROM_REGION( 0x200000, "oki2", 0 )
+ ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) )
+ ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) )
+ROM_END
+
+ROM_START( shogwarrbh )
+ ROM_REGION( 0x040000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "fbbh030a.u61", 0x000000, 0x020000, CRC(c3a66037) SHA1(4ca1b440ca822d6c6adecb5c0a3d83126bc775a2) )
+ ROM_LOAD16_BYTE( "fbbh031a.u62", 0x000001, 0x020000, CRC(e382acf8) SHA1(50177a525fb6138490c70e50f5b9ae476cb8d6de) )
+
+ ROM_REGION( 0x020000, "calc3_rom", 0 )
+ ROM_LOAD( "fb040a.u33", 0x000000, 0x020000, CRC(4b62c4d9) SHA1(35c943dde70438a411714070e42a84366db5ef83) )
+
+ ROM_REGION( 0x1000000, "gfx1", ROMREGION_ERASEFF )
+ ROM_LOAD( "fb-020a.u1", 0x000000, 0x100000, CRC(87e55c6d) SHA1(87886c045d7c30b8dee3c8fb0bf8f2cdbc5fd7fb) )
+ ROM_LOAD( "fb020b.u2", 0x100000, 0x100000, CRC(276b9d7b) SHA1(7a154f65b4737f2b6ac8effa3352711079f571dc) )
+ ROM_LOAD( "fb021a.u3", 0x200000, 0x100000, CRC(7da15d37) SHA1(345cf2242e8210a697294a45197f2b3b974de885) )
+ ROM_LOAD( "fb021b.u4", 0x300000, 0x100000, CRC(6a512d7b) SHA1(7fc3002d23262a9a590a283ea9e111e38d889ef2) )
+ ROM_LOAD( "fb-22a.u5", 0x400000, 0x100000, CRC(9039e5d3) SHA1(222452cd7947f7c99c68e495835cca62e0449b5c) )
+ ROM_LOAD( "fb-22b.u6", 0x500000, 0x100000, CRC(96ac9e54) SHA1(2b066375963dc57fe2ce89d65f6c0a9d183a838d) )
+ ROM_LOAD( "fb023.u7", 0x600000, 0x100000, CRC(132794bd) SHA1(bcc73c3183c59a4b66f79d04774773b8a9239501) )
+
+ ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_LOAD( "fb010.u65", 0x000000, 0x100000, CRC(296ffd92) SHA1(183a28e4594c428deb4726ed22d5166592b94b60) )
+ ROM_LOAD( "fb011.u66", 0x100000, 0x080000, CRC(500a0367) SHA1(6dc5190f81b21f59ee56a3b2332c8d86d6599782) )
+
+ ROM_REGION( 0x100000, "oki1", 0 )
+ ROM_LOAD( "fb001e.u43", 0x000000, 0x080000, CRC(f524aaa1) SHA1(006a886f9df2e57c51b61c6cea70a6574fc20304) )
+ ROM_LOAD( "fb000e.u42", 0x080000, 0x080000, CRC(969f1465) SHA1(4f56d1ad341b08f4db41b7ab2498740612ff7c3d) )
+
+ ROM_REGION( 0x200000, "oki2", 0 )
+ ROM_LOAD( "fb-002.u45", 0x000000, 0x100000, CRC(010acc17) SHA1(2dc0897c7778eacf6bce12ff0adbadb307ea6c17) )
+ ROM_LOAD( "fb-003.u44", 0x100000, 0x100000, CRC(0aea4ac5) SHA1(8f3b30e505b0ba51c140a0a2c071680d4fa05db9) )
+ROM_END
+
+GAME( 1992, fjbusterbh, shogwarr, shogwarr, shogwarr, kaneko16_shogwarr_state, shogwarr, ROT0, "e107", "Fujiyama Buster (Japan) Boss Hack by e107", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, shogwarrbh, shogwarr, shogwarr, shogwarr, kaneko16_shogwarr_state, shogwarr, ROT0, "e107", "Shogun Warriors (World) Boss Hack by e107", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof2000.cpp b/docs/release/src/hbmame/drivers/kof2000.cpp
new file mode 100644
index 00000000000..a4ceb7f840b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof2000.cpp
@@ -0,0 +1,1204 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2000d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_sma_prot->kof2000_decrypt_68k(cpuregion);
+ m_sma_prot->kof2000_install_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2000h )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_sma_prot->kof2000_install_protection(m_maincpu, m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2000m )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2000_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2kbsd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2kxxx )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2000_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2knd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+ROM_START( kof2000d )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(71c6e6bb) SHA1(1bd29ded4c6b29780db8e8b772c452189699ca89) )
+ ROM_LOAD16_WORD_SWAP( "257-p1.p1", 0x100000, 0x400000, CRC(60947b4c) SHA1(5faa0a7ac7734d6c8e276589bd12dd574264647d) )
+ ROM_LOAD16_WORD_SWAP( "257-p2.p2", 0x500000, 0x400000, CRC(1b7ec415) SHA1(f19fa44e9ee5b5a6eb4a051349d6bc4acc3bbbdb) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257d.c7", 0x3000000, 0x800000, CRC(71dfc3e2) SHA1(1889a8dc88993e35f9fd93ce2bee1de52995932d) )
+ ROM_LOAD16_BYTE( "257d.c8", 0x3000001, 0x800000, CRC(0fa30e5f) SHA1(0cb7fa6b0219e1af2df9b97786c677651a78f37a) )
+ROM_END
+
+ROM_START( kof2000ev ) // all confirmed (alt m1 = d404db70)
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma.ev", 0x0c0000, 0x040000, CRC(329d80c9) SHA1(b1360c265a17a14b885dccfce67d14b3e5bc43a5) )
+ ROM_LOAD16_WORD_SWAP( "257ev.p1", 0x100000, 0x400000, CRC(70b76979) SHA1(d6543c5399f9064423923effe0558dbe2d46c1d7) )
+ ROM_LOAD16_WORD_SWAP( "257ev.p2", 0x500000, 0x400000, CRC(1ec748c2) SHA1(d2d9c78f35a148ed7629d6be02f4264956849beb) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257ev.c1", 0x0000000, 0x800000, CRC(c89d1994) SHA1(2eb8a27f39dea743907b4be9e9d99f1858a30ba4) )
+ ROM_LOAD16_BYTE( "257ev.c2", 0x0000001, 0x800000, CRC(19754968) SHA1(ca9692d5eac8e6eef5e5dd9888c5e8edcc9a0a7a) )
+ ROM_LOAD16_BYTE( "257ev.c3", 0x1000000, 0x800000, CRC(c76b919b) SHA1(3f6245580e55c63d248478818005348f0cb92a6b) )
+ ROM_LOAD16_BYTE( "257ev.c4", 0x1000001, 0x800000, CRC(5e03f2af) SHA1(85b7ec527a70411ad27d32a1169915b62230a3a7) )
+ ROM_LOAD16_BYTE( "257ev.c5", 0x2000000, 0x800000, CRC(6a3b2fbd) SHA1(dbcf018f96767f753a2bab87f8d31fa6f6ef98d2) )
+ ROM_LOAD16_BYTE( "257ev.c6", 0x2000001, 0x800000, CRC(ac4a8edc) SHA1(a305c8c5df3c2191fcdb73d799074a4191f2a252) )
+ ROM_LOAD16_BYTE( "257ev.c7", 0x3000000, 0x800000, CRC(608ffca9) SHA1(0d3b184e44b9833f7338514e5633ccb3b3e39fb1) )
+ ROM_LOAD16_BYTE( "257ev.c8", 0x3000001, 0x800000, CRC(73280ea8) SHA1(76bad66577b6d9618f2a190d54259eb3b1082d69) )
+ROM_END
+
+ROM_START( kof2000r )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257r.p3", 0x0c0000, 0x040000, CRC(11b98ae2) SHA1(fd901690334ccc26f0680427b05b5c4aad8b7e1a) )
+ ROM_LOAD16_WORD_SWAP( "257r.p1", 0x100000, 0x400000, CRC(a9f1fb34) SHA1(a09f2bac40f91fc6910edef9699b10197f08f589) )
+ ROM_LOAD16_WORD_SWAP( "257r.p2", 0x500000, 0x400000, CRC(9d26d55d) SHA1(ecb3b0bb98a24553d04c04c30f72f250ea86afeb) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kbh ) /* The King of Fighters 2000 - Hack by Dodowang - (AES mode: can choose Zero; Practice-can choose Zero - MVS mode: can choose Kula and Zero - Zero has icon) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257bh.p1", 0x000000, 0x100000, CRC(613d1fc2) SHA1(69a6d8add28291a14d69e9a098dd78a84f6c9b31) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+ ROM_LOAD( "257bh.s1", 0x000000, 0x80000, CRC(36ae018e) SHA1(f06c3a6f8607b7cb689f3edacb37db6fe8b8f0b6) )
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257bh.c7", 0x3000000, 0x800000, CRC(f7636227) SHA1(a76b331c96a7bf6fb4123c88a15f565c82b13373) )
+ ROM_LOAD16_BYTE( "257bh.c8", 0x3000001, 0x800000, CRC(b887fe36) SHA1(d6fc2fba39c8f22ddbe911345ba1d21561cc4eb2) )
+ROM_END
+
+ROM_START( kof2kbj ) /* The King of Fighters 2000 - Hack by Jason/K3 - (AES mode: can choose Zero; Practice-can choose Zero - MVS mode: can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257bj.p1", 0x000000, 0x100000, CRC(fafe059e) SHA1(6167c6a2f8d8b2d08d8a2dfd26e1722bdca9c3f7) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kbsd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257bsd.p1", 0x000000, 0x100000, CRC(391948a6) SHA1(a41759bdb587a8765e5f5cc7a4631e9b002d4cf4) )
+ ROM_LOAD16_WORD_SWAP( "257bsd.p2", 0x100000, 0x400000, CRC(7a6d80b8) SHA1(0a3bcf71a43b2b5dde0c33ed107c207a7c59e90c) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257bsd.c7", 0x3000000, 0x800000, CRC(110f72a3) SHA1(7540aa2be692fbbcd887c8377ca6891d1ba1b6ed) )
+ ROM_LOAD16_BYTE( "257bsd.c8", 0x3000001, 0x800000, CRC(4347f6af) SHA1(fc744d68e04905af1fa8d39d8772fba67e14777f) )
+ROM_END
+
+ROM_START( kof2kce ) /* The King of Fighters 2000 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257ce.p2", 0x100000, 0x400000, CRC(60b00b9b) SHA1(eb2ea3980dbd2fe4d15b9155d4de7593396f8555) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kch ) /* The King of Fighters 2000 - Remix by Chase - (Character move change 20030503) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257ch.p1", 0x000000, 0x100000, CRC(6a4ac2cf) SHA1(0120d712439c909b96607b487bfbc93444e3da04) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kcp ) /* The King of Fighters 2000 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257cp.p2", 0x100000, 0x400000, CRC(a73339fd) SHA1(cce171fdb4e3be4b8431eea60b0bea36630bd94f) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2keh ) /* The King of Fighters 2000 - Enhance by Ydmis - (Can choose Kula and Zero - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257eh.p1", 0x000000, 0x100000, CRC(3a301e5b) SHA1(a8fe40cc1577bcf1503726cd38b502e8e5c4f621) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kehr ) /* The King of Fighters 2000 - Remix by Raymonose - (Character move change - can choose Kula and Zero - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257ehr.p1", 0x000000, 0x100000, CRC(db0a8678) SHA1(d6f11011dfb9e7ee04cffbd9e1768a8fc9982fba) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kevo ) /* The King of Fighters 2000 - KOF2000 Evolution by Jason/K3 and Wesker - (KOF 2000 Evolution v1.2 - see readme for details) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257evo.p1", 0x000000, 0x100000, CRC(3107aa48) SHA1(e7240cc8697d63657ed59c8d2ea69e883d690d7d) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kevo1 ) /* [OLD] The King of Fighters 2000 N - (kof2kevo101) - KOF 2000 Evolution by Jason/K3 and Wesker - (KOF 2000 Evolution v1.01 - see readme for details) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257evo1.p1", 0x000000, 0x100000, CRC(ac684cce) SHA1(1fb72efd4fa0a4c40b0c16b913f5fa5fdd471d74) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kevo2 ) /* [OLD] The King of Fighters 2000 N - (kof2kevo10) - KOF 2000 Evolution by Jason/K3 and Wesker - (KOF 2000 Evolution v1.0 - see readme for details) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257evo2.p1", 0x000000, 0x100000, CRC(2331f409) SHA1(13344ccf1748be13e8605c8cd0f3e7786a0c250c) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kevo3 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257evo3.p1", 0x000000, 0x100000, CRC(93cc8aa5) SHA1(46226909fd182d9edefb529bfe4c91f8a5b02a9e) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257d.c7", 0x3000000, 0x800000, CRC(71dfc3e2) SHA1(1889a8dc88993e35f9fd93ce2bee1de52995932d) )
+ ROM_LOAD16_BYTE( "257d.c8", 0x3000001, 0x800000, CRC(0fa30e5f) SHA1(0cb7fa6b0219e1af2df9b97786c677651a78f37a) )
+ROM_END
+
+ROM_START( kof2kgbh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257gbh.p1", 0x000000, 0x100000, CRC(5527a8fb) SHA1(5c861ab496ab713d04fe26ad5e6f73c2bb52bf48) )
+ ROM_LOAD16_WORD_SWAP( "257gbh.p2", 0x100000, 0x400000, CRC(7992520d) SHA1(7718348355adbb05e64767ae5d075046ae9b5400) )
+
+ NEO_SFIX_MT_512K
+ // This came with the set but doesn't work
+ //NEO_SFIX_128K( "257gbh.s1", CRC(cabc287b) SHA1(dbf3adc0fe31d3c6c246ed4c996ca9b8c9bbfa4d) )
+
+ NEO_BIOS_AUDIO_256K( "257gbh.m1", CRC(a082f086) SHA1(809ef4a533cf541b86786f455a7f283a5acecd82) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257bh.c7", 0x3000000, 0x800000, CRC(f7636227) SHA1(a76b331c96a7bf6fb4123c88a15f565c82b13373) )
+ ROM_LOAD16_BYTE( "257bh.c8", 0x3000001, 0x800000, CRC(b887fe36) SHA1(d6fc2fba39c8f22ddbe911345ba1d21561cc4eb2) )
+ROM_END
+
+ROM_START( kof2kgold ) /* The King of Fighters 2000 - Colour fix by Anndy - (Character colour change - attack cremation gold) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257gbh.p2", 0x100000, 0x400000, CRC(7992520d) SHA1(7718348355adbb05e64767ae5d075046ae9b5400) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kice ) /* The King of Fighters 2000 - Colour fix by Zhangshee - (Character colour change - attack cremation ice blue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257ice.p2", 0x100000, 0x400000, CRC(95df1ddd) SHA1(faecf18584d5397a588a69d002968a341a12adcb) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kiori )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257iori.p1", 0x000000, 0x100000, CRC(d7cdca85) SHA1(2cdc6f528512a8d8eff800602f00f75797e4a5f1) )
+ ROM_LOAD16_WORD_SWAP( "257iori.p2", 0x100000, 0x400000, CRC(ce947e0f) SHA1(0d86e181a1a6244fb61ac18d013352c3a9722ebd) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257iori.c7", 0x3000000, 0x800000, CRC(4230c654) SHA1(7e5cb48cbec8b27047e5642af58bebd71a9f986b) )
+ ROM_LOAD16_BYTE( "257iori.c8", 0x3000001, 0x800000, CRC(80aa8ac2) SHA1(7a828725e8442e19b1ad34327d9d9025d04f4853) )
+ROM_END
+
+ROM_START( kof2kjlc ) /* The King of Fighters 2000 - Colour fix by Jui Lee - (Character colour change for Athena 2P and Kula 2P) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257jlc.p2", 0x100000, 0x400000, CRC(dc36885b) SHA1(b192edc43f598434877df3e2deddca53473bf537) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kkf1 ) /* The King of Fighters 2000 - Hack by Kurouri - (MVS protection removed, can select Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257kf1.p1", 0x000000, 0x100000, CRC(3a6bb418) SHA1(d794bf7ee14fcf3972360f7d47ed6cd08a3269d2) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kkvs ) /* The King of Fighters 2000 - Hack by KVS - (MVS protection removed - can select Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257kvs.p1", 0x000000, 0x100000, CRC(de23e8a0) SHA1(737a3e9c7cac2338f382c3a55d5caa9810fb87ce) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kkzs ) /* The King of Fighters 2000 - Hack by UNKNOWN - (MVS protection removed - can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257kzs.p1", 0x000000, 0x100000, CRC(e41f350c) SHA1(d0d4feb6f91714abe11ec57ba9eecc7bb7f5b354) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2knd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257d.c7", 0x3000000, 0x800000, CRC(71dfc3e2) SHA1(1889a8dc88993e35f9fd93ce2bee1de52995932d) )
+ ROM_LOAD16_BYTE( "257d.c8", 0x3000001, 0x800000, CRC(0fa30e5f) SHA1(0cb7fa6b0219e1af2df9b97786c677651a78f37a) )
+ROM_END
+
+ROM_START( kof2kpjc ) /* The King of Fighters 2000 - Colour fix by TcwLee - (Colour fix 20030720) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257pjc.p2", 0x100000, 0x400000, CRC(3f94a4d3) SHA1(8fd23e05bde49e9ff25f070338b947c53bbf603f) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kpjc1 ) /* [OLD] The King of Fighters 2000 N - (kof2kpjco) - Colour fix by TcwLee - (Colour fix - entire role change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257pjc1.p2", 0x100000, 0x400000, CRC(c954c944) SHA1(3ca35a5393351ee22ef651f8984067b18aa02144) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kpjc2 ) /* [OLD] The King of Fighters 2000 N - (kof2kc2) - Colour fix by TcwLee - (Colour fix ver. 2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257pjc2.p2", 0x100000, 0x400000, CRC(136bd0a4) SHA1(5549ba017a9c633a3652ad3fc0d1c41bc247cdcd) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kpjc3 ) /* [OLD] The King of Fighters 2000 N - (kof2kpjco2) - Colour fix by TcwLee - (Colour change - striker not perfect 20030302) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257pjc3.p2", 0x100000, 0x400000, CRC(22bf407a) SHA1(dba889edbe0bd641ce678f0ffc79afed24659bde) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kpls )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257pls.p1", 0x000000, 0x100000, CRC(052a5e17) SHA1(1f2c43981e1e762c0d0a81f23311e5d021e94472) )
+ ROM_LOAD16_WORD_SWAP( "257pls.p2", 0x100000, 0x400000, CRC(9d716a8b) SHA1(da32f57719155b8dfa86124312d03ee82fbc7151) )
+
+ NEO_SFIX_MT_512K
+ ROM_LOAD( "257pls.s1", 0x000000, 0x80000, CRC(5a8d9e10) SHA1(2eb244a28b891a6fadbbccf10afe47b78d7948f0) )
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257pls.c7", 0x3000000, 0x800000, CRC(eda5ea7f) SHA1(25e1d5279635eab65ba7b3f565d5cf0dd48ad201) )
+ ROM_LOAD16_BYTE( "257pls.c8", 0x3000001, 0x800000, CRC(6df754d8) SHA1(94469836ae8e08448a01f346a09e660ceed9371f) )
+ROM_END
+
+ROM_START( kof2krm ) /* The King of Fighters 2000 - Remix by Raymonose - (Character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257rm.p1", 0x000000, 0x100000, CRC(597fdfc7) SHA1(10bb9e4ad0c3ff53336cc0e06303f83bcb5c94e4) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2krp ) /* The King of Fighters 2000 - Remix PRO by FCHT - (Character move change v1.0a 20031103 - BETA) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257rp.p1", 0x000000, 0x100000, CRC(7c81d853) SHA1(b101b64a06ba6292d369d10f75a56de09b04823b) )
+ ROM_LOAD16_WORD_SWAP( "257rp.p2", 0x100000, 0x400000, CRC(82a6aeed) SHA1(36f369313999d23f50201c1e240736d00d4921da) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kryu )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257ryu.p1", 0x000000, 0x100000, CRC(47806bd7) SHA1(fd61bd7c6758870c24446b07175537ed1c2135af) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ ROM_LOAD16_BYTE( "257d.c7", 0x3000000, 0x800000, CRC(71dfc3e2) SHA1(1889a8dc88993e35f9fd93ce2bee1de52995932d) )
+ ROM_LOAD16_BYTE( "257d.c8", 0x3000001, 0x800000, CRC(0fa30e5f) SHA1(0cb7fa6b0219e1af2df9b97786c677651a78f37a) )
+ROM_END
+
+ROM_START( kof2kseh ) /* The King of Fighters 2000 - Super Enhance Hack by Creamymami and Ydmis - (Can choose Kula and Zero - ultra kill start is max - super power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257seh.p1", 0x000000, 0x100000, CRC(b84547e4) SHA1(1c01a764d5333d8acab392f24f9a2f8d00e257ca) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kst ) /* The King of Fighters 2000 N - Hack by KOF1995 - (Boss striker movement change - similar to kof2kevo from FGCH - can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257st.p1", 0x000000, 0x100000, CRC(e21736d5) SHA1(7ea8045775b5d9e111a94a641a372faaf2495a5e) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kwh ) /* The King of Fighters 2000 - Hack by Wesker - (Character move change for Takuma) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257wh.p1", 0x000000, 0x100000, CRC(5fa8d962) SHA1(8285b925c4edf3460ff5cf63fbcb7379568897ac) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kwh2 ) /* The King of Fighters 2000 - Hack by Wesker - (Character move change for Jhun) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257wh2.p1", 0x000000, 0x100000, CRC(06e47159) SHA1(45ae1f2c9c4393ff9cc0425a4a85c7bc1ad31c0e) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kxxx )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257xxx.p1", 0x000000, 0x100000, CRC(b88cd5eb) SHA1(81b5ef268991fe368c6efa836cb822fbcfe54920) )
+ ROM_LOAD16_WORD_SWAP( "257xxx.p2", 0x100000, 0x400000, CRC(1a10f2be) SHA1(67794176d3d834b85495fa653a8acd14901b1658) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257xxx.c1", 0x0000000, 0x800000, CRC(3006a5e4) SHA1(e1fa9c32306a7501cb4789ec85521fd6fd7ad28c) )
+ ROM_LOAD16_BYTE( "257xxx.c2", 0x0000001, 0x800000, CRC(366fd118) SHA1(36abc1e8e48e47afdab9541a4612b346799693de) )
+ ROM_LOAD16_BYTE( "257xxx.c3", 0x1000000, 0x800000, CRC(5b16d7e3) SHA1(3a5cbfc47b7db0ee4f15232066c4f79544dee20f) )
+ ROM_LOAD16_BYTE( "257xxx.c4", 0x1000001, 0x800000, CRC(7e57dfc1) SHA1(7a07d1547306646538d29ba9bd3acdaca7c70907) )
+ ROM_LOAD16_BYTE( "257xxx.c5", 0x2000000, 0x800000, CRC(671904f4) SHA1(7bfd66b7f1866c06b161eb6cf594aa017b7088b2) )
+ ROM_LOAD16_BYTE( "257xxx.c6", 0x2000001, 0x800000, CRC(68adf255) SHA1(a60ad8adbec8c4e6ed85fd3b251a8f187aca85b1) )
+ ROM_LOAD16_BYTE( "257xxx.c7", 0x3000000, 0x800000, CRC(8c6b22b3) SHA1(7f4a204de276a9acae2c6d58b2b5c03f76bcab69) )
+ ROM_LOAD16_BYTE( "257xxx.c8", 0x3000001, 0x800000, CRC(6223bd1d) SHA1(94b512eb202aec084110e477b283591bad54d027) )
+ // Alternate (decrypted) roms
+ //NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+ //ROM_LOAD16_BYTE( "257d.c1", 0x0000000, 0x800000, CRC(abcdd424) SHA1(1d52aae8a7806d48c098c2a7a77dff6e02ac4870) )
+ //ROM_LOAD16_BYTE( "257d.c2", 0x0000001, 0x800000, CRC(cda33778) SHA1(a619740364c952c443f27ed9b7c395610f2673c7) )
+ //ROM_LOAD16_BYTE( "257d.c3", 0x1000000, 0x800000, CRC(087fb15b) SHA1(f77cb6e670cdf7709d84d770ecf28533cbfbe6de) )
+ //ROM_LOAD16_BYTE( "257d.c4", 0x1000001, 0x800000, CRC(fe9dfde4) SHA1(23750ff0c4bc084d55eea66a5cdd0ef2d6c32cdc) )
+ //ROM_LOAD16_BYTE( "257d.c5", 0x2000000, 0x800000, CRC(03ee4bf4) SHA1(8f26c5bc525a5786de8e25797e2875a1dfe527be) )
+ //ROM_LOAD16_BYTE( "257d.c6", 0x2000001, 0x800000, CRC(8599cc5b) SHA1(9a05fc12273aebfbc4ac22e88b32ae9ecd269462) )
+ //ROM_LOAD16_BYTE( "257xxx1.c7", 0x300000, 0x800000, CRC(05125a94) SHA1(cdd77c649945e15088dd07ba282e6dc9ef883a75) )
+ //ROM_LOAD16_BYTE( "257xxx1.c8", 0x300001, 0x800000, CRC(300eba2a) SHA1(42defa20e3a0760f64c4c0346ab48d664960c638) )
+ROM_END
+
+ROM_START( kof2ky ) /* The King of Fighters 2000 - Hack by Ydmis - (Can choose Kula) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257y.p1", 0x000000, 0x100000, CRC(ca715980) SHA1(869268d27fc2628ac1fe817b2d0491096821b8de) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kyd ) /* The King of Fighters 2000 - Revise by Dodowang and Ydmis - (Style change - can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257yd.p1", 0x000000, 0x100000, CRC(09c64b87) SHA1(8ad7a2c9cf0e360364ad5ee58ed514fbee015a65) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kyg ) /* The King of Fighters 2000 - Hack by Ydmis - (Can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257yg.p1", 0x000000, 0x100000, CRC(684f6f70) SHA1(660a35e8db9d44b246dfc788e5576fe8d138e580) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kz ) /* The King of Fighters 2000 - Hack by Ydmis - (Can choose Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257z.p1", 0x000000, 0x100000, CRC(029a6b8a) SHA1(1179df1960dffc04860acb0a91c53e9c5cf7e107) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2kzs ) /* The King of Fighters 2000 - Hack by UNKNOWN - (MVS protection removed - can choose Kula and Zero) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257zs.p1", 0x000000, 0x100000, CRC(ca73f3a5) SHA1(d083a47ff19317855da866e29eea3aa66a1ffb03) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "257d.m1", CRC(d404db70) SHA1(8cd1f3e140a9a367de23544e76371b0491287909) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+
+GAME( 2000, kof2000d, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000d, ROT0, "SNK", "Kof2000 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2000ev, kof2000, neogeo_noslot, neogeo, neogeo_noslot_state, kof2000, ROT0, "hack", "Kof2000 (unknown ev)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2000r, kof2000, neogeo_noslot, neogeo, neogeo_noslot_state, kof2000, ROT0, "hack", "Kof2000 (KOF REMIX PRO)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kbh, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000h, ROT0, "Dodowang","Kof2000 (Add Char - Zero has icon)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kbj, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Jason/K3", "Kof2000 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kbsd, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2kbsd, ROT0, "Eddids / EGHT", "Kof2000 Boss Striker Pro ( Eddids, EGHT )", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kce, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "hack", "Kof2000 (Char color changed set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kch, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Chase", "Kof2000 (Diff Moves 030503)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kcp, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "hack", "Kof2000 (Char color changed set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2keh, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Guangzhou Game Team", "Kof2000 (Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kehr, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Raymonose", "Kof2000 (Add Char - Diff Moves - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kevo, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Jason/K3 and Wesker", "Kof2000 EVOLUTION (v1.2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kevo1, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Jason/K3 and Wesker", "Kof2000 EVOLUTION (v1.01)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kevo2, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Jason/K3 and Wesker", "Kof2000 EVO (Evolution v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kevo3, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2knd, ROT0, "FCHT-EGHT", "Kof2000 EVOLUTION (v1.3 by FCHT-EGHT)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kgold, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Anndy", "Kof2000 (Char color changed - Gold)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kgbh, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, cmc50sfix, ROT0, "hack", "Kof2000 (Boss Hack - Gold Color Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kice, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Zhangshee", "Kof2000 (Char color changed - Ice blue)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kiori, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2knd, ROT0, "ZKW", "Kof2000 (Iori Orochi by ZKW)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kjlc, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Jui Lee", "Kof2000 (Char color changed for Athena 2P and Kula 2P)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kkf1, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Guangzhou Game Team", "Kof2000 (Add Char - MVS protection rem set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kkvs, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "KVS", "Kof2000 (Add Char - MVS protection rem set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kkzs, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "hack", "Kof2000 (Add Char - MVS protection rem set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2knd, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2knd, ROT0, "hack", "Kof2000 (non encrypted P,decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kpjc, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "TcwLee", "Kof2000 (Color Fix 030720)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kpjc1, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "TcwLee", "Kof2000 (Color Fix - Entire role change)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kpjc2, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "TcwLee", "Kof2000 (Color Fix v. 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kpjc3, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "TcwLee", "Kof2000 (Color changed - Striker not Perfect 030302)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kpls, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2knd, ROT0, "Guangzhou Game Team", "Kof2000 PLUS (by Guangzhou Game Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2krm, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Raymonose", "Kof2000 (Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2krp, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "FCHT", "Kof2000 Remix Pro (Diff Moves v1.0a 031103 - Beta)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kryu, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2knd, ROT0, "Iori Yagami", "Kof2000 EVX TION (Ryu Hack by Iori Yagami)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kseh, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Guangzhou Game Team", "Kof2000 (Add Char - Ultra kill start max - Super pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kst, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "KOF1995", "Kof2000 (Add Char - Boss striker moves changed - Similar to kof2kevo from FGCH)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kwh, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Wesker", "Kof2000 (Diff Moves for Takuma)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kwh2, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Wesker", "Kof2000 (Diff Moves for Jhun)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kxxx, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2kxxx, ROT0, "Crispy", "Kof2000 XXX (Crispy SP Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2ky, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Ydmis", "Kof2000 (Add Kula)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kyd, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Dodowang and Ydmis", "Kof2000 (Style change - Select 2 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kyg, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Guangzhou Game Team", "Kof2000 (Add Char set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kz, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "Ydmis", "Kof2000 (Add Zero)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof2kzs, kof2000, neogeo_noslot, neogeo, neogeo_hbmame, kof2000m, ROT0, "hack", "Kof2000 (Add Char - MVS protection rem set 4)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof2001.cpp b/docs/release/src/hbmame/drivers/kof2001.cpp
new file mode 100644
index 00000000000..c7f2d0d1430
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof2001.cpp
@@ -0,0 +1,2260 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2001d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2001m )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2001_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+// use this if the set has a s1 rom
+DRIVER_INIT_MEMBER( neogeo_hbmame, kf2k1pls )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2001_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kf2k1pa )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2001_GFX_KEY);
+
+ int i, sx_size = memregion("fixed")->bytes();
+ uint8_t *rom = memregion("fixed")->base();
+
+ /* S-rom has its own unique encryption */
+ for( i = 0; i < sx_size; i++ )
+ rom[ i ] = BITSWAP8( rom[ i ], 3, 2, 4, 5, 1, 6, 0, 7 );
+}
+
+
+
+ROM_START( kof2001d )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2001n )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262n.p1", 0x000000, 0x100000, CRC(eaf3acf1) SHA1 (d697b9820d4832b944def118c30c82bbb1495b97) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1 (82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_128K( "262n.s1", CRC(de828076) SHA1 (7f79d0245b02e64bd4b50c103722f7e115d1e711) )
+
+ NEO_BIOS_AUDIO_256K( "262n.m1", CRC(4bcc537b) SHA1(9fcf1342bcd53d5eec12c46ee41a51bf543256c2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1ay ) /* The King of Fighters 2001 - Revise by Kurouri and Ydmis - (Based on kof2001h - revise) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ay.p1", 0x000000, 0x100000, CRC(069a0aa2) SHA1(3fd2218b8d94cff47e1e2369a163c82d1f3e5f41) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1b ) /* The King of Fighters 2001 - Hack by UNKNOWN - (Can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262b.p1", 0x000000, 0x100000, CRC(376ea3fd) SHA1(9bb9ec73f1ee543ea0c2fd5ee73c487ea93de05e) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1b1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262b1.p1", 0x000000, 0x100000, CRC(832ff765) SHA1 (93bc612249ecbeddb12a80caed5cc6bb15ecac0a) )
+ ROM_LOAD16_WORD_SWAP( "262b1.p2", 0x100000, 0x400000, CRC(6762cf94) SHA1 (7444554b6de83b11a4c1ffc0230e646a6d5a7c75) )
+
+ NEO_SFIX_128K( "262st2.s1", CRC(2e3229a3) SHA1 (feb028bf43ae30e3091a67abc7c23a9816a3412e) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262b1.c7", 0x3000000, 0x800000, CRC(f9814461) SHA1(0d83d4e740f11d6216dc00c1515766e27625f2ea) )
+ ROM_LOAD16_BYTE( "262b1.c8", 0x3000001, 0x800000, CRC(94b8544b) SHA1(4a02c6013a24beffe3b5ccfcc5b321ccbf0186af) )
+ROM_END
+
+ROM_START( kof2k1b3 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262b3.p1", 0x000000, 0x100000, CRC(31b99298) SHA1(66bd449b0daee4d266b0c994fd87111ebbd5ce6c) )
+ ROM_LOAD16_WORD_SWAP( "262b3.p2", 0x100000, 0x400000, CRC(83cdd046) SHA1(0228f8b9b65fcefc27fb6e844e5d4d72cede8e74) )
+
+ NEO_SFIX_128K( "262b3.s1", CRC(6d209796) SHA1(95fdb865e47d37916573ba12e8ba4a4aaece1cba) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1b4 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262b4.p1", 0x000000, 0x100000, CRC(a63c2c82) SHA1(22ccf21f1c54d21a8dbe26668ef5f52b5273b611) )
+ ROM_LOAD16_WORD_SWAP( "262b4.p2", 0x100000, 0x400000, CRC(676da28e) SHA1(1ff9d9228ab07e981e703b635e1abf2a8e4ea450) )
+
+ NEO_SFIX_128K( "262b4.s1", CRC(8c5c479e) SHA1(89a04bd980c4b1702aacbb76a5505cdbcdd016d5) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1bd2 ) /* The King of Fighters 2001 - Colour Fix by Ayane - (Character colour change - attack cremation scarlet) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262bd2.p2", 0x100000, 0x400000, CRC(13c14b1f) SHA1(c063e17f94994889ae6a576b7923eddabf3586a2) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1bh ) /* The King of Fighters 2001 - Hack by Dodowang - (Can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262bh.p1", 0x000000, 0x100000, CRC(f91b5329) SHA1(9b5375090072e5ea8b97bf4ebb55787476ff964d) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_128K( "262bh.s1", CRC(e600c595) SHA1(7133d879bff4854bead500c0928e0f1d918b7bed) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1bh1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262bh.p1", 0x000000, 0x100000, CRC(f91b5329) SHA1(9b5375090072e5ea8b97bf4ebb55787476ff964d) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1 (82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_128K( "262bh.s1", CRC(e600c595) SHA1(7133d879bff4854bead500c0928e0f1d918b7bed) )
+
+ NEO_BIOS_AUDIO_256K( "262n.m1", CRC(4bcc537b) SHA1(9fcf1342bcd53d5eec12c46ee41a51bf543256c2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+
+ROM_START( kof2k1bs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262bs.p1", 0x000000, 0x100000, CRC(b5becb3c) SHA1 (b3270392560205f321b58a5a5d0d6d9c7268242a) )
+ ROM_LOAD16_WORD_SWAP( "262bs.p2", 0x100000, 0x400000, CRC(295d0c5c) SHA1 (696aa96aeee38971015ddf4a1ed66ecf605a04c2) )
+
+ NEO_SFIX_128K( "262bs.s1", CRC(19b6587b) SHA1 (0d065d086a57c991ef90f24c5b44306463147294) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262bs.c7", 0x3000000, 0x800000, CRC(8d11aed2) SHA1(258d5c8bf229b9d1d4d4f1f766672c2b2bb6744b) )
+ ROM_LOAD16_BYTE( "262bs.c8", 0x3000001, 0x800000, CRC(9e7168f5) SHA1(5ce65e676d36a247f4d673f5e319e9b085c620be) )
+ROM_END
+
+ROM_START( kof2k1bs2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262bh.p1", 0x000000, 0x100000, CRC(f91b5329) SHA1(9b5375090072e5ea8b97bf4ebb55787476ff964d) )
+ ROM_LOAD16_WORD_SWAP( "262rp.p2", 0x100000, 0x400000, CRC(91668d86) SHA1(3df31baaa1c87b040f88eeffff1a174960f9f1fc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.m1", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* mask rom TC532000 */
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262bs2.c1", 0x0000000, 0x800000, CRC(634c374d) SHA1(d43086ef6e86ef39b2f9afda2aba47d17c55d943) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262bs2.c2", 0x0000001, 0x800000, CRC(6b9534f9) SHA1(c52ab7a2ec7df788b03e5f5ff1e906e2d6512da7) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262bs2.c3", 0x1000000, 0x800000, CRC(21d114db) SHA1(53789fae6cb07b7961f126e88fd2c97998885cd4) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262bs2.c4", 0x1000001, 0x800000, CRC(7f4678f2) SHA1(3f36bbbe63cac787b551992e1e7f10e7ba8abe8d) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262bs2.c5", 0x2000000, 0x800000, CRC(fe98132f) SHA1(1e21f3473d4786c44dcaa0018ad446ab50a86a3a) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262bs2.c6", 0x2000001, 0x800000, CRC(91e3ed85) SHA1(14a72d05a8496826beb9e3b0e373c0038bd1d8e5) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262bs2.c7", 0x3000000, 0x800000, CRC(e451915c) SHA1(9b4b2718e8ecf33c421a5b5363e7ff622bc3f4f2) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262bs2.c8", 0x3000001, 0x800000, CRC(831943ba) SHA1(ae7c79d28edaaaf3f792a8317cceb4ad9264b2d1) ) /* Plane 2,3 */
+ROM_END
+
+ROM_START( kof2k1ce ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262ce.p2", 0x100000, 0x400000, CRC(76d0b903) SHA1(a24a85defbbf282d2285e48119f42e3424a96e9d) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cf1 ) /* [OLD] The King of Fighters 2001 - (kof2k1cfco) - Colour fix by C6F8 - (Character colour change for Iori p1 and p2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cf1.p2", 0x100000, 0x400000, CRC(9060fc03) SHA1(cb831ff2e52087a551494772b1a0b4db83e23180) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ch ) /* The King of Fighters 2001 - Remix by Chase - (Character move change - can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ch.p1", 0x000000, 0x100000, CRC(18ef4629) SHA1(d34be181230f703eb96d29d8641ca975a581e1eb) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cfc ) /* [OLD] The King of Fighters 2001 - (kof2k1cfco) - Colour fix by C6F8 - (Character colour change for Iori p1 and p2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cfc.p2", 0x100000, 0x400000, CRC(3d91029f) SHA1(9024a521c519a9301cf4d041644cdf9406986184) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1clr ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262clr.p2", 0x100000, 0x400000, CRC(bb8f76e5) SHA1(3f59ab1b19c12816fcec129ae71f4b5f1e7a1baa) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (kof2k1cp) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp.p2", 0x100000, 0x400000, CRC(827825f6) SHA1(e23c1f4fee1acf032cfa5245991610d48b946ccb) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp1 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (kof2k1cp1) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp1.p2", 0x100000, 0x400000, CRC(6fb2a367) SHA1(1cbe328e7e9f14445f0fa31b9ab19fc83ebab19a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp2 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (kof2k1cp2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp2.p2", 0x100000, 0x400000, CRC(ab26df49) SHA1(c918ab87bfa0db990bfeb35651ff5b3e4af990d8) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp3 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp3.p2", 0x100000, 0x400000, CRC(53f5cd5b) SHA1(6012b3f33d98c6fc647c362401bb536e721c0dfd) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp4 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp4.p2", 0x100000, 0x400000, CRC(91cb1f4a) SHA1(fbcdd53621cd596d91632e4ac3bb4b8d5b980aa1) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp5 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp5.p2", 0x100000, 0x400000, CRC(ce1a6381) SHA1(87ba0b1d761705a213d34987a49b1c3a5e4ecd66) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp6 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp6.p2", 0x100000, 0x400000, CRC(eb1b7410) SHA1(810f6ec155a549d401f68e98f571b73aefee5e21) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cp7 ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Character colour change - attack cremation ice blue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262cp7.p2", 0x100000, 0x400000, CRC(69629013) SHA1(041630bf4f6a8aa3f2a53beb683852b3fd0e3b7a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1cr ) /* The King of Fighters 2001 - Revise by CrUmp - (Bases on kof2001h - revise) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262cr.p1", 0x000000, 0x100000, CRC(19f18567) SHA1(1dfb262d919107ef6173bfa5339fd2e39c1ca690) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1eh ) /* The King of Fighters 2001 - Enhance by Ydmis - (Bases on kof2001h - can choose Zero and Igniz - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262eh.p1", 0x000000, 0x100000, CRC(32c4a98b) SHA1(a4142ae4ac4053af65efc815a29574a839bad0e3) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ehc ) /* The King of Fighters 2001 - Enhance by Ydmis - (Bases on kof2001h - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ehc.p1", 0x000000, 0x100000, CRC(1ebb4962) SHA1(8f80953ecf0053b735e80c77a9a3b51315c8538d) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ehr ) /* The King of Fighters 2001 - Remix by Raymonose - (Bases on kof2001h - ultra kill start is max - ultra power hack - character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ehr.p1", 0x000000, 0x100000, CRC(afabe438) SHA1(3245650382a9f36cde7b66fe247bdd68b1adf30c) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1gm ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Colour style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262gm.p2", 0x100000, 0x400000, CRC(888d765a) SHA1(95c31e720f415a5f46f4cdbeb8eb9d19dee85732) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1guan )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262guan.p1", 0x000000, 0x100000, CRC(8db710c2) SHA1(f54b78977fa55073715e438628a83f918d1371fa) )
+ ROM_LOAD16_WORD_SWAP( "262guan.p2", 0x100000, 0x400000, CRC(3e854c2c) SHA1(154871e713a7f142d445d2d8159895f1634528b8) )
+
+ NEO_SFIX_128K( "262guan.s1", CRC(25261ef4) SHA1(18d68f74ca566d2a966b27888ba17c99d35efb1d) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1ha ) /* The King of Fighters 2001 - (kof2k1ha) - Revise by UNKNOWN - (Alternate home version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ha.p1", 0x000000, 0x100000, CRC(b03df3de) SHA1(a56bb40e557e73d74a352884cabfbc5556fdca5b) )
+ ROM_LOAD16_WORD_SWAP( "262ha.p2", 0x100000, 0x400000, CRC(ccff204a) SHA1(251b32e2ce902bc6af001b14e6f04379ef52ab27) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262ha.m1", CRC(7f4d8a65) SHA1(c01b57d97079f86011ffdf9c52f7878ab5a9bed9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ha2 ) /* The King of Fighters 2001 - (kof2k1ha2) - Revise by UNKNOWN - (Alternate home version revision 2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ha2.p1", 0x000000, 0x100000, CRC(833b91f8) SHA1(cc9fe3efdfc67cb1bea3f36c9e59c0b0252dc58a) )
+ ROM_LOAD16_WORD_SWAP( "262ha2.p2", 0x100000, 0x400000, CRC(616179f9) SHA1(12e7d372a0d0bf3af1b41af19c3242748135370c) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262ha.m1", CRC(7f4d8a65) SHA1(c01b57d97079f86011ffdf9c52f7878ab5a9bed9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1hao ) /* [OLD] The King of Fighters 2001 - (kof2k1hao) - Hack by UNKNOWN - (Alternate home version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ // This set is all the original one except for this rom
+ NEO_BIOS_AUDIO_128K( "262hao.m1", CRC(c504deaf) SHA1(7b8146d7a4c645ea0eabb748da4878ed5748adae) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1hb ) /* The King of Fighters 2001 - Hack by Kurouri - (Bases on kof2001h - can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262hb.p1", 0x000000, 0x100000, CRC(c17dddc5) SHA1(645c29343a56bc2de02ad913f7ebc74e5f496ee5) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1hgm ) /* The King of Fighters 2001 - Colour fix by UNKNOWN - (Colour style remix)? */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262hgm.p2", 0x100000, 0x400000, CRC(26a89686) SHA1(4b8fc3dd0fbab61b9205a79939feba15582aa26e) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ic2 ) /* The King of Fighters 2001 - Colour fix by Zhangshee - (Character colour change - attack cremation ice blue)? */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262ic2.p2", 0x100000, 0x400000, CRC(8675134d) SHA1(cabd218f5531e4721eeb954ad8996836d01097c4) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ice ) /* The King of Fighters 2001 - Colour fix by Zhangshee - (Character colour change - attack cremation ice blue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262ice.p2", 0x100000, 0x400000, CRC(99963006) SHA1(4ba2022bd429e4ce1a333712ef275d8d71ed7b44) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k32 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r2) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r2.txt for more 20030714) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k32.p1", 0x000000, 0x100000, CRC(7be1405a) SHA1(a85f6e6d360c2033abd8f36eb6bcc502a4e2a88e) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k33 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r3) - Remix by jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r3.txt for more 20030725) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k33.p1", 0x000000, 0x100000, CRC(75f6e824) SHA1(f1731dcec65051b14d048df329e7bf637bfe87f3) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k34 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r4) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r4.txt for more 20030730) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k34.p1", 0x000000, 0x100000, CRC(fef04a32) SHA1(efb5f70a722ed5825c8ad05456d0a98060af4430) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k35 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r5) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r5.txt for more 20030806) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k35.p1", 0x000000, 0x100000, CRC(2978b172) SHA1(7d8a3494e76f617fc198e61a5663281c27588f87) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k36 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r6) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r5.txt for more 20030815) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k36.p1", 0x000000, 0x100000, CRC(cfb88cd7) SHA1(5cbc2a0face3439c5c1f212fe6d93f18fb718942) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k37 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r7) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r7.txt for more 20030817) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k37.p1", 0x000000, 0x100000, CRC(1d7b445a) SHA1(99dc9ceb2c68473c268ae142539038dff83458af) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k38 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r8) - Remix by jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r8.txt for more 20030823) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k38.p1", 0x000000, 0x100000, CRC(8b513ac3) SHA1(0bb6e67d6b2924aec10a48dcc781a3e20bca8248) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k39 ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r9) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r9.txt for more 20030826) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k39.p1", 0x000000, 0x100000, CRC(28dfef34) SHA1(02a74b48d1c2f88c83e7249b7abce866fd7c9f8e) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3a ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r10) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r10.txt for more 20030907) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3a.p1", 0x000000, 0x100000, CRC(696ef78e) SHA1(c6c3bd3da1e839a676937027f948174cb2414530) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3b ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r11) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r11.txt for more 20031005) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3b.p1", 0x000000, 0x100000, CRC(27251457) SHA1(8a33cade6cc59b3e7407294faae692540721d4b6) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3c ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r12) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r12.txt for more 20031011) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3c.p1", 0x000000, 0x100000, CRC(720f4404) SHA1(59ea034c0b638dbc5da787738ac324c8ece36b08) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3d ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r13) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r13.txt for more 20031013) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3d.p1", 0x000000, 0x100000, CRC(bf7e6f7f) SHA1(a56927da0ff3bd914dbbc800faef4753c3fed1e6) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3e ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r14) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r14.txt for more 20031018) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3e.p1", 0x000000, 0x100000, CRC(531e2d77) SHA1(2b616c0ff7ca4612f5e639e27981d12d9b18f562) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3f ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r15) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3r15.txt for more 20031019) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3f.p1", 0x000000, 0x100000, CRC(dcdcf815) SHA1(57f152496a5e847119e9eb399ba071db5b245a2d) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3g ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r16) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style - ultra revision, see kof2k1k3r16.htm for more 20031120) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3g.p1", 0x000000, 0x100000, CRC(fead4731) SHA1(387097c6839e45ccb07139f6b8d41064e780421f) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3h ) /* [OLD] The King of Fighters 2001 - (kof2k1k3r17) - Remix by Jason/K3 - (Character move change ultra revision - can choose Igniz 20031202) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3h.p1", 0x000000, 0x100000, CRC(ac581390) SHA1(d3351eccee63292c01bb9fa338bfb6cb21421426) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1k3o ) /* [OLD] The King of Fighters 2001 - (kof2k1k3o) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k1k3o.txt for more 20030629) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262k3o.p1", 0x000000, 0x100000, CRC(3531998e) SHA1(5682044819777b9dc2e26d1d3b5fbc07b7c81f2b) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ki )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ki.p1", 0x000000, 0x100000, CRC(b6a4103e) SHA1(218e7d970810f30535980cca470811167978da97) )
+ ROM_LOAD16_WORD_SWAP( "262ki.p2", 0x100000, 0x400000, CRC(bb4b036f) SHA1(6f3bc151d24d90d5e22bcefca72874159e3bc525) )
+
+ NEO_SFIX_128K( "262ki.s1", CRC(290e8904) SHA1(0e5449e694a033309bee476b6481d0b5e0b84096) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262st.c7", 0x3000000, 0x800000, CRC(773f20e7) SHA1(fb01ac2c143583c12bb114c70f89b4d87528027d) )
+ ROM_LOAD16_BYTE( "262st.c8", 0x3000001, 0x800000, CRC(898fed6b) SHA1(47619d5aba883cd62d6a95cb8d1f07bb6672104c) )
+ROM_END
+
+ROM_START( kof2k1mk ) /* The King of Fighters 2001 - Revise by MasakiAnton - (Bases on kof2k1h - revise) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262mk.p1", 0x000000, 0x100000, CRC(97492f8e) SHA1(741f26907377aab55d16f34ec3e7906d59a087cc) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1mk2 ) /* The King of Fighters 2001 - Revise by MasakiAnton - (Bases on kof2001h - revise version 2.0) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262mk2.p1", 0x000000, 0x100000, CRC(e8e7d3b0) SHA1(11ab4f0fcf82fe72723e3a5e25561b89db1935c9) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1mke ) /* The King of Fighters 2001 - Revise by MasakiAnton - (Bases on kof2001h - revise) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262mke.p1", 0x000000, 0x100000, CRC(1d29382e) SHA1(a91929198fb6e16a5ccfac83a869d06afdff0bd8) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1lse ) /* The King of Fighters 2001 - Colour fix by CRC - LSE - (Character colour change for whip 2P, k'2P, VANESSA 2P, Angel 2P) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262lse.p2", 0x100000, 0x400000, CRC(e9ba7d37) SHA1(6d9ec274391c0177abe0f570f826a82caff8eb30) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pa )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262pa.p1", 0x000000, 0x100000, CRC(f8a71b6f) SHA1(e4cc249b36b8cb72aa162adff4cdb302ce220812) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_128K( "262pa.s1", CRC(50986eeb) SHA1(cdca34ba5afdd7b56cd5430b3df80da53de9b990) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pa2 ) // same as kof2k1pa except for s1
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262pa.p1", 0x000000, 0x100000, CRC(f8a71b6f) SHA1(e4cc249b36b8cb72aa162adff4cdb302ce220812) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_128K( "262pa2.s1", CRC(a4da10fd) SHA1(3b5f73d284f0f912d96e07d7b30122eaa43a04a8) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1pjc ) /* The King of Fighters 2001 - Colour fix by TcwLee - (Colour fix 20030302) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262pjc.p2", 0x100000, 0x400000, CRC(42a745a6) SHA1(c98c620ee41ba311b83d4484a2ec8c00f108524a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pjo ) /* [OLD] The King of Fighters 2001 - (kof2k1pjco) - Colour Fix by TcwLee - (Colour fix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262pjo.p2", 0x100000, 0x400000, CRC(1da00d8e) SHA1(a79535a963567ec2060dc2ca81ef2b9b5afcb21c) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pj1 ) /* [OLD] The King of Fighters 2001 - (kof2k1c1) - Colour fix by TcwLee - (Character colour change ?? rev.2 ?? 1508) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262pj1.p2", 0x100000, 0x400000, CRC(a287a90a) SHA1(dbccb523cba273d61b6a722d82e9013340c53d75) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pj2 ) /* [OLD] The King of Fighters 2001 - (kof2k1c2) - Colour fix by TcwLee - (Character colour change - home use machine repair menue colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262pj2.p2", 0x100000, 0x400000, CRC(fb2387e0) SHA1(589c8cd61193f4a4319ec2b5551ed35fc51e6037) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pj3 ) /* The King of Fighters 2001 - Colour fix by TcwLee - (Colour fix 20030720) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262pj3.p2", 0x100000, 0x400000, CRC(8adb985a) SHA1(2f96d06c2924308e9e072f7f24f57a6c3525f9d4) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1pls )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262pls.p1", 0x000000, 0x100000, CRC(758529a7) SHA1(cefdc7049772dcb77d658ac8571a12eedabda3c9) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_128K( "262pls.s1", CRC(088657e6) SHA1(7ab5eac3ff2a82e04fdc9dc8ee5d193db580e8d4) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1rm ) /* The King of Fighters 2001 - Remix by Raymonose - (Bases on kof2001h - character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262rm.p1", 0x000000, 0x100000, CRC(9be74a1b) SHA1(4785e08ab499dabcd37312ca15c1b9e0d61b2f08) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1rp ) /* The King of Fighters 2001 - Remix PRO by Fighters Kim, Jason/K3 and Raymonose - (Remix PRO V1.02 final 2004.03.11) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262rp.p1", 0x000000, 0x100000, CRC(e9e42e55) SHA1(2a254d056ab046d2704e16ebbaa2b68c6e867dc7) )
+ ROM_LOAD16_WORD_SWAP( "262rp.p2", 0x100000, 0x400000, CRC(91668d86) SHA1(3df31baaa1c87b040f88eeffff1a174960f9f1fc) )
+
+ NEO_SFIX_128K( "262rp.s1", CRC(492f5efe) SHA1(e18895da5c294245b6e119421affbd4f0e168c7a) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1rp0 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262rp.p1", 0x000000, 0x100000, CRC(e9e42e55) SHA1(2a254d056ab046d2704e16ebbaa2b68c6e867dc7) )
+ ROM_LOAD16_WORD_SWAP( "262rp.p2", 0x100000, 0x400000, CRC(91668d86) SHA1(3df31baaa1c87b040f88eeffff1a174960f9f1fc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.m1", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) ) /* mask rom TC532000 */
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262rp0.c1", 0x0000000, 0x800000, CRC(caeeb878) SHA1(233b5e1b864389e19fee16a1ab952c569dffc267) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262rp0.c2", 0x0000001, 0x800000, CRC(278a8934) SHA1(c56f2cd6725c06bb4cfc79cdb03419b6392475fe) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262rp0.c3", 0x1000000, 0x800000, CRC(ecfbe08f) SHA1(9459f62aaeb7b0187dbc33bd2e4bd116ef2ac425) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262rp0.c4", 0x1000001, 0x800000, CRC(7ae95994) SHA1(d2e1e6606388a84875832e67f0190f94d7b74f55) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262rp0.c5", 0x2000000, 0x800000, CRC(37f8e297) SHA1(4f40af3c55a9df3c252ac6e5ea466565cc254f8e) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262rp0.c6", 0x2000001, 0x800000, CRC(34372229) SHA1(5e121ca6d02d96893c29a5ec0672fe7ab18d5d05) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "262rp0.c7", 0x3000000, 0x800000, CRC(713e7150) SHA1(4c16d7ad96237dc98eec684f1a3646a7da2771a2) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "262rp0.c8", 0x3000001, 0x800000, CRC(9aa68c3a) SHA1(6a21de5a1676fec157ad01246352ddd838842512) ) /* Plane 2,3 */
+ROM_END
+
+ROM_START( kof2k1rpo ) /* [OLD] The King of Fighters 2001 - (kof2k1rpo) - Remix PRO by Fighters Kim, Jason/K3 and Raymonose - (Remix Pro V1.0a 200311xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262rpo.p1", 0x000000, 0x100000, CRC(a749e1af) SHA1(b3d463c9868ca246bf6f84157815543ab637e1d4) )
+ ROM_LOAD16_WORD_SWAP( "262rpo.p2", 0x100000, 0x400000, CRC(72b2a025) SHA1(c8ff8ce42ec1f51931346367008a555198919658) )
+
+ NEO_SFIX_128K( "262rpo.s1", CRC(9ae95cb7) SHA1(a3402ec2cb9352ce635c138f678a1a0b047e5e0f) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1rp1 ) /* [OLD] The King of Fighters 2001 - kof2k1rpo1 - Remix PRO by Fighters Kim, Jason/K3 and Raymonose - (Remix Pro V1.01 final1 2003.12.06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262rp1.p1", 0x000000, 0x100000, CRC(350f8571) SHA1(7ad5642b67b49025899ea925f96ddf910e9a5699) )
+ ROM_LOAD16_WORD_SWAP( "262rpo.p2", 0x100000, 0x400000, CRC(72b2a025) SHA1(c8ff8ce42ec1f51931346367008a555198919658) )
+
+ NEO_SFIX_128K( "262rpo.s1", CRC(9ae95cb7) SHA1(a3402ec2cb9352ce635c138f678a1a0b047e5e0f) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ru ) /* The King of Fighters 2001 - Remix Ultra by Jason/K3 - (Character move change ultra revision - can choose Igniz 20040507 - v2.3) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ru.p1", 0x000000, 0x100000, CRC(3377ebee) SHA1(52b70ba1bb0801db02be3862dde1fcaf8ae5075b) )
+ ROM_LOAD16_WORD_SWAP( "262ru.p2", 0x100000, 0x400000, CRC(394bcc59) SHA1(f08adf02bff87d7399e07f70acbecf1a3da3c731) )
+
+ NEO_SFIX_128K( "262ru.s1", CRC(a5d90035) SHA1(8c651aa58d135d4428f24cfc6b733b16812f33d6) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1ru0 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262ru.p1", 0x000000, 0x100000, CRC(3377ebee) SHA1(52b70ba1bb0801db02be3862dde1fcaf8ae5075b) )
+ ROM_LOAD16_WORD_SWAP( "262ru.p2", 0x100000, 0x400000, CRC(394bcc59) SHA1(f08adf02bff87d7399e07f70acbecf1a3da3c731) )
+
+ NEO_SFIX_128K( "262ru.s1", CRC(a5d90035) SHA1(8c651aa58d135d4428f24cfc6b733b16812f33d6) )
+
+ NEO_BIOS_AUDIO_256K( "262n.m1", CRC(4bcc537b) SHA1(9fcf1342bcd53d5eec12c46ee41a51bf543256c2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262d.c7", 0x3000000, 0x800000, CRC(d1408776) SHA1(E77C786070B2B851A8A36250722B4C902E7213ED) )
+ ROM_LOAD16_BYTE( "262d.c8", 0x3000001, 0x800000, CRC(954d0e16) SHA1(975803C130DF3A6E835B9BF0F8532D6586058C54) )
+ROM_END
+
+ROM_START( kof2k1seh ) /* The King of Fighters 2001 - Super Enhance Hack by Ydmis - (Bases on kof2001h - can choose Zero and Igniz - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262seh.p1", 0x000000, 0x100000, CRC(bcc84782) SHA1(31164d1f7303f0dbca5c4c2c43d081bf1b5db7df) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1sob ) /* The King of Fighters 2001 - Colour fix by Ayane - (Character colour change - 1P character turns to a corpse - style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262sob.p2", 0x100000, 0x400000, CRC(e8f7eef2) SHA1(400a31d2b863cf0b100149ab254ac3b6d6158c0e) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1st )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262st.p1", 0x000000, 0x100000, CRC(87c5979b) SHA1 (53d7fbe3f4ed582abccd87ca966e430ac9766467) )
+ ROM_LOAD16_WORD_SWAP( "262st.p2", 0x100000, 0x400000, CRC(49d5112d) SHA1 (5ec0deec05f79878edbaa38107afcc0de17102fa) )
+
+ NEO_SFIX_128K( "262pls.s1", CRC(088657e6) SHA1(7ab5eac3ff2a82e04fdc9dc8ee5d193db580e8d4) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262st.c7", 0x3000000, 0x800000, CRC(773f20e7) SHA1(fb01ac2c143583c12bb114c70f89b4d87528027d) )
+ ROM_LOAD16_BYTE( "262st.c8", 0x3000001, 0x800000, CRC(898fed6b) SHA1(47619d5aba883cd62d6a95cb8d1f07bb6672104c) )
+ROM_END
+
+ROM_START( kof2k1st2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262st2.p1", 0x000000, 0x100000, CRC(ce91a972) SHA1(2e2f42385a82b5f95ae461465c57890bf367f82d) )
+ ROM_LOAD16_WORD_SWAP( "262st2.p2", 0x100000, 0x400000, CRC(1420ef21) SHA1(af3d754a2d4d22d573a85bda5d8dda20f38fc369) )
+
+ NEO_SFIX_128K( "262st2.s1", CRC(2e3229a3) SHA1 (feb028bf43ae30e3091a67abc7c23a9816a3412e) )
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262d.c1", 0x0000000, 0x800000, CRC(103225b1) SHA1(41486C7BB421B6B54F3CA07621AABD907BF10E15) )
+ ROM_LOAD16_BYTE( "262d.c2", 0x0000001, 0x800000, CRC(f9d05d99) SHA1(C135DD3D5584DC58A46315D64F663E34BB64BEBF) )
+ ROM_LOAD16_BYTE( "262d.c3", 0x1000000, 0x800000, CRC(4c7ec427) SHA1(0156E2F79E7A62B15ACC2314AC6563A67AF0F256) )
+ ROM_LOAD16_BYTE( "262d.c4", 0x1000001, 0x800000, CRC(1d237aa6) SHA1(B007FE9F1F32F0FF947C6575741B47FB70976728) )
+ ROM_LOAD16_BYTE( "262d.c5", 0x2000000, 0x800000, CRC(c2256db5) SHA1(DAE6B7B0673B431F223D82F7C3A685DE70A1C035) )
+ ROM_LOAD16_BYTE( "262d.c6", 0x2000001, 0x800000, CRC(8d6565a9) SHA1(137C950D588D40C812C36967EC17D04D4FC56362) )
+ ROM_LOAD16_BYTE( "262st.c7", 0x3000000, 0x800000, CRC(773f20e7) SHA1(fb01ac2c143583c12bb114c70f89b4d87528027d) )
+ ROM_LOAD16_BYTE( "262st.c8", 0x3000001, 0x800000, CRC(898fed6b) SHA1(47619d5aba883cd62d6a95cb8d1f07bb6672104c) )
+ROM_END
+
+ROM_START( kof2k1wh ) /* The King of Fighters 2001 - Remix by Wesker - (Character move change) */
+ // there's a decrypted version of this set, using s1 and cx from kof2k1pa2
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262wh.p1", 0x000000, 0x100000, CRC(67788800) SHA1(be87196cee03a0ca209319d2fa577ddf61afcaf4) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1z1 ) /* The King of Fighters 2001 - Hack by Zhangshee - (Can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262z1.p1", 0x000000, 0x100000, CRC(d170a91d) SHA1(155e63a5af548f708228123f44c4c2776d470a1b) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2k1z2 ) /* The King of Fighters 2001 - Hack by Zhangshee - (Can choose Zero and Igniz - ??) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262z2.p1", 0x000000, 0x100000, CRC(71b5d0ff) SHA1(78ad8da1c97883e8580137dcdc8538ce090b37c4) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "262d.m1", CRC(2fb0a8a5) SHA1(9878370ff8cef3e9c9f307ad64c29522dd625c8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+
+
+GAME( 2001, kof2001d, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001d, ROT0, "Eolith / SNK", "Kof2001 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2001n, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2001 (fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ay, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Kurouri and Ydmis", "Kof2001 (Revised set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1b, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1b1, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof1996 / KQZ / Zuojie", "Kof2001 (Boss Fixed Version by KOF1996, KQZ & ZUOJIE)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1b3, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NeHt", "Kof2001 (Bloodlust)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1b4, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Katana", "Kof2001 (Bloodlust Reload hack by Katana)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1bd2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Ayane", "Kof2001 (Char color changed - Attack cremation scarlet)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1bh, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "Dodowang", "Kof2001 (Add Char set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1bh1, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2001 (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1bs, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids", "Kof2001 PS2 PLUS ( Eddids )", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1bs2, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, kof2001, ROT0, "EGCG / Dodowang", "Kof2001 Boss Enabler v2.0 by Dodowang [EGCG]", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ce, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 9)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cfc, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "C6F8", "Kof2001 (Char color changed set 9 - rel 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cf1, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "C6F8", "Kof2001 (Iori p1 and p2 Color Changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ch, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Chase", "Kof2001 (Add Char - Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1clr, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 8)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp1, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp3, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp4, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp5, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp6, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed set 7)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cp7, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Char color changed - Attack cremation ice blue set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1cr, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "CrUmp", "Kof2001 (Revised set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1eh, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Ydmis", "Kof2001 (Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ehc, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Ydmis", "Kof2001 (Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ehr, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Raymonose", "Kof2001 (Ultra kill start max - Ultra pow hack - Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1gm, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Color style remix set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1guan, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NGRT", "Kof2001 (Guan Version (Remix by NGRT))", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ha, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Alternate home ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ha2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Alternate home ver rev.2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1hao, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Alternate home ver old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1hb, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Kurouri", "Kof2001 (Add Char set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1hgm, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "hack", "Kof2001 (Color style remix set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ice, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Zhangshee", "Kof2001 (Char color changed - Attack cremation ice blue set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ic2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Zhangshee", "Kof2001 (Char color changed - Attack cremation ice blue set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3o, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030629)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k32, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030714)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k33, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030725)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k34, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030730)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k35, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030806)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k36, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030815)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k37, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030817)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k38, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030823)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k39, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030826)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3a, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 030907)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3b, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 031005)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3c, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 031011)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3d, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 031013)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3e, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 031018)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3f, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - 031019)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3g, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - Ultra rev - 031120)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1k3h, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Jason/K3", "Kof2001 (Moves KOF 98 style - Add Igniz - 031202)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ki, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kalce", "Kof2001 PLUS (Special ST V0.5 by Kalce)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1lse, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "CRC-LSE", "Kof2001 (Char color changed for whip 2P, k'2P, VANESSA 2P, Angel 2P)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1mk, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "MasakiAnton", "Kof2001 (Revised set 3 Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1mk2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "MasakiAnton", "Kof2001 (Revised set 3 v2.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1mke, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "MasakiAnton", "Kof2001 (Revised set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1pa, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pa, ROT0, "bootleg", "Kof2001 Plus (set 2, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1pa2, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2001 PLUS (Other Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1pjc, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "TcwLee", "Kof2001 (Color Fix 030302)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1pjo, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "TcwLee", "Kof2001 (Color Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1pj1, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "TcwLee", "Kof2001 (Char color changed ?? rev.2 ?? 1508)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1pj2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "TcwLee", "Kof2001 (Char color changed - Machine repair menu col changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1pj3, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "TcwLee", "Kof2001 (Color Fix 030720)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k1pls, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "bootleg", "Kof2001 Plus (set 1, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1rm, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Raymonose", "Kof2001 (Diff Moves set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k1rp, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "Fighters Kim, Jason/K3 and Raymonose", "Kof2001 Remix Pro (v1.02 final 040311)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1rp0, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, kof2001, ROT0, "FGCH / Jason / Kim / Raymonose", "Kof2001 REMIX PRO v1.02 Final by Jason, Kim & Raymonose [FGCH]", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1rp1, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "Fighters Kim, Jason/K3 and Raymonose", "Kof2001 Remix Pro (V1.01 final1 031206)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k1rpo, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "Fighters Kim, Jason/K3 and Raymonose", "Kof2001 Remix Pro (V1.0a 0311xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k1ru, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kf2k1pls, ROT0, "Jason/K3", "Kof2001 Remix Ultra (Diff Moves ultra rev - Add Igniz - 20040507 - v2.3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1ru0, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "Kof2001 REMIX ULTRA Ver 2.3 by Jason", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1seh, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Ydmis", "Kof2001 (Add Char - Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1sob, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Ayane", "Kof2001 (Char color changed - 1P char corpse-style remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k1st, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof1996", "Kof2001 Special ST Version (Hack by KOF1996)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1st2, kof2001, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof1996", "Kof2001 (Special ST Version hack by Kof1996)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1wh, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Wesker", "Kof2001 (Diff Moves set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1z1, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Zhangshee", "Kof2001 (Add Char set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kof2k1z2, kof2001, neogeo_noslot, neogeo, neogeo_hbmame, kof2001m, ROT0, "Zhangshee", "Kof2001 (Add Char set 5)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof2002.cpp b/docs/release/src/hbmame/drivers/kof2002.cpp
new file mode 100644
index 00000000000..0c239bbde8e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof2002.cpp
@@ -0,0 +1,3717 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2002d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2002m )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+// S1-rom is scrambled. This code looks right but doesn't work.
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k2bd )
+{
+ DRIVER_INIT_CALL(neogeo);
+#if 0
+ std::vector<UINT8> src( fix_region_size );
+ int i,j;
+ UINT8 *dst = fix_region;
+ memcpy (&src[0], &dst[0], fix_region_size);
+
+ for (i = 1; i < fix_region_size/0x80; i++)
+ {
+ j = BITSWAP16(i, 15, 14, 13, 12, 11, 10, 9, 7, 6, 2, 5, 4, 3, 1, 0, 8);
+ memcpy(&dst[i*0x80], &src[j*0x80], 0x80);
+ }
+#endif
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k2dbh )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k2h )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k2lb )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k2ps2a )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+}
+
+
+
+ROM_START( kof200215 ) // all confirmed
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265_15.p1", 0x000000, 0x4551cc, CRC(d64def5c) SHA1(8a973b3dff88969fcd890fba321fc56382c08bf6) )
+ ROM_LOAD16_WORD_SWAP( "265_15.p2", 0x100000, 0x454f52, CRC(53317848) SHA1(3b24f3c9ab36c47609abbac66e5508e545646381) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265_15.c1", 0x0000000, 0x800000, CRC(ede8dfa4) SHA1(bc33796215918832faac32adfc6a0a4b2a723760) )
+ ROM_LOAD16_BYTE( "265_15.c2", 0x0000001, 0x800000, CRC(98773563) SHA1(d64f31ccff699ee12554ed9a7c703a514bcfa054) )
+ ROM_LOAD16_BYTE( "265_15.c3", 0x1000000, 0x800000, CRC(5b8deef8) SHA1(55f78ae33bce5ca4886c620f02cef463d86f58f0) )
+ ROM_LOAD16_BYTE( "265_15.c4", 0x1000001, 0x800000, CRC(cb69cd39) SHA1(deaa9a5c5db75bd515fb6a532d5353207f763fbb) )
+ ROM_LOAD16_BYTE( "265_15.c5", 0x2000000, 0x800000, CRC(8e0937d8) SHA1(5ccd8a56bc6a1d646879f3a7d4992da11c44ee4c) )
+ ROM_LOAD16_BYTE( "265_15.c6", 0x2000001, 0x800000, CRC(42acb491) SHA1(d81bbbac95091e0a4ccf626c0d7f9ed870cd6600) )
+ ROM_LOAD16_BYTE( "265_15.c7", 0x3000000, 0x800000, CRC(f4b5e445) SHA1(dff6fe887cdf6d0eb758f891ede85ed31463c513) )
+ ROM_LOAD16_BYTE( "265_15.c8", 0x3000001, 0x800000, CRC(598d8826) SHA1(7432299d265af95835d82a43d0d4e322cd487c55) )
+ROM_END
+
+ROM_START( kof2002d )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2002x )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265x.p1", 0x000000, 0x100000, CRC(ec7402a2) SHA1(a3d94c709d4c23cc7d1502a9e92a34f49cbcc878) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ath )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ath.p1", 0x000000, 0x100000, CRC(5bb7eedb) SHA1(5d2566ae008c34e91799e1cd5c771be6e4de02df) )
+ ROM_LOAD16_WORD_SWAP( "265ath.p2", 0x100000, 0x400000, CRC(4ecfc414) SHA1(e8b991f35d850e88f2f360438ba72748129342c9) )
+
+ NEO_SFIX_128K( "265ath.s1", CRC(df4ce33b) SHA1(1287c84c16e17df7d5887af57fc6657da452d0ae) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2b ) /* The King of Fighters 2002 - Hack by Alphax2? - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265b.p1", 0x000000, 0x100000, CRC(f03a9769) SHA1(558eaf60244b7b01588dc773a31d5e3f3ffdbb29) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2b1 ) /* The King of Fighters 2002 - Hack by Alphax2? - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265b1.p1", 0x000000, 0x100000, CRC(9b5a47e3) SHA1(62609f623982cf6eecf855ebd1ad30e20e0846b8) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2bd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9EDE7323) SHA1(AD9D45498777FDA9FA58E75781F48E09AEE705A6) )
+ ROM_LOAD16_WORD_SWAP( "265bd.p2", 0x100000, 0x400000, CRC(65DF650D) SHA1(C13E466E3FDB349BA2E0D3FE01DAEDE759130828) )
+
+ NEO_SFIX_128K( "265bld.s1", CRC(4c09cb82) SHA1(24c412d6bd11d16a9d6975f0eada776d1229ea4b) )
+ //NEO_SFIX_128K( "265bd.s1", CRC(2255f5bf) SHA1(8a82b3e9717df30b580b9d0bac0b403f8102a002) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2E0627FC5D689BF64FE36F02A489408D103C4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2bh ) /* The King of Fighters 2002 - Hack by Aplhax2 - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bh.p1", 0x000000, 0x100000, CRC(ca96f87d) SHA1(b0daca398c5c67400540f774dbc2afe393e09fd6) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2bjh ) /* The King of Fighters 2002 - Remix by Ben Jeremy - (Character move change 20031025) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bjh.p1", 0x000000, 0x100000, CRC(16554c00) SHA1(7915a667a9669fd3bf97d4cf1cf6a91e6965753f) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2bjo ) /* [OLD] The King of Fighters 2002 - (kof2k2bjho) - Remix by Ben Jeremy - (Character move change 20031013) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bjo.p1", 0x000000, 0x100000, CRC(cc0be314) SHA1(72f0c36bcab70094a875c47f555a4d3ff6e3a491) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2bl3 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bl3.p1", 0x000000, 0x100000, CRC(94a95838) SHA1(a872a92b828d976eabd332e8d22b451dd709eca6) )
+ ROM_LOAD16_WORD_SWAP( "265bl3.p2", 0x100000, 0x400000, CRC(2bada9e2) SHA1(48cdeb9d828d2be6e212f460ce5b1105802fd8e2) )
+
+ NEO_SFIX_128K( "265bl3.s1", CRC(9acd7f92) SHA1(827534f914b9cf91e907e8532c28abdcd8da71d7) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265bl4.c1", 0x0000000, 0x800000, CRC(325399a6) SHA1(50a565941ac805759872176ebb1506a736c05917) )
+ ROM_LOAD16_BYTE( "265bl4.c2", 0x0000001, 0x800000, CRC(76374796) SHA1(d4adf26ed356d271838c40aea2a84f604da2f8cb) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2bl4 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bl4.p1", 0x000000, 0x100000, CRC(938af736) SHA1(27b0301ed208c155b56a2775ad6d1b683ead667e) )
+ ROM_LOAD16_WORD_SWAP( "265bl4.p2", 0x100000, 0x400000, CRC(9ff989fb) SHA1(d17528aa2aacdbd731ec30edb17fcdb1ebe34e62) )
+
+ NEO_SFIX_128K( "265bl4.s1", CRC(2aacaf8e) SHA1(3b09ef3215180de70327313c573c870d33a54714) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265bl4.c1", 0x0000000, 0x800000, CRC(325399a6) SHA1(50a565941ac805759872176ebb1506a736c05917) )
+ ROM_LOAD16_BYTE( "265bl4.c2", 0x0000001, 0x800000, CRC(76374796) SHA1(d4adf26ed356d271838c40aea2a84f604da2f8cb) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2bld )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bld.p1", 0x000000, 0x100000, CRC(0a6b5e22) SHA1(0db2c458e79a0380ccfa3e1772e42223f0edaaa9) )
+ ROM_LOAD16_WORD_SWAP( "265bld.p2", 0x100000, 0x400000, CRC(f951b913) SHA1(d1b2025d363b280f40c823d11c277c81d8087ee4) )
+
+ NEO_SFIX_128K( "265bld.s1", CRC(4c09cb82) SHA1(24c412d6bd11d16a9d6975f0eada776d1229ea4b) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2E0627FC5D689BF64FE36F02A489408D103C4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2blood2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265blood2.p1", 0x000000, 0x100000, CRC(9573364c) SHA1(1fcb64aa30ef3ee3519ca7b77318f6f87ea24c82) )
+ ROM_LOAD16_WORD_SWAP( "265blood2.p2", 0x100000, 0x400000, CRC(670a8b89) SHA1(090f80381cf5a02fc1eed25a781388e246d2fa10) )
+
+ NEO_SFIX_128K( "265blood2.s1", CRC(59bda320) SHA1(0d8846ad307d1ca778bdcc89c16efe766266f1b7) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2br ) /* KOF 2002 Portuguese */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265br.p1", 0x000000, 0x100000, CRC(0f6dbacc) SHA1(c28bff82dc1d802cb1c398f4aaac0d2052418b87) )
+ ROM_LOAD16_WORD_SWAP( "265br.p2", 0x100000, 0x400000, CRC(c7ca77ff) SHA1(1ac9b9a37ddb11979514eba1d67551dfa8e6bc36) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2br1 ) /* KOF 2002 Portuguese */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265br1.p1", 0x000000, 0x100000, CRC(b73033df) SHA1(c8e1ce1d35be1dd537709a533e7dac37e047f428) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2br2 ) /* KOF 2002 Portuguese */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265br2.p1", 0x000000, 0x100000, CRC(95986d7a) SHA1(3f9da8385c0c9bfbbe088860816c247696904c24) )
+ ROM_LOAD16_WORD_SWAP( "265br2.p2", 0x100000, 0x400000, CRC(9b4d2ba4) SHA1(7b07788be06031d7261b4f8d8e5a34c0536846ed) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2bs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265bs.p1", 0x000000, 0x100000, CRC(d9ccb672) SHA1(9d24c9d27120c379e0ec9d3717a4bb40be2f7027) )
+ ROM_LOAD16_WORD_SWAP( "265bs.p2", 0x100000, 0x400000, CRC(96c45626) SHA1(57f58de4051b73848cb6622e223777030e4ef954) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2c2 ) // hack of kof2k2or
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265or.p1", 0x000000, 0x100000, CRC(eb84d68f) SHA1(8dccf250cf04e129529793abcc655f5fc7fb6629) )
+ ROM_LOAD16_WORD_SWAP( "265c2.p2", 0x100000, 0x400000, CRC(5b307583) SHA1(283dffc62c279e7b237da3a30a15e06cccda7a80) )
+
+ NEO_SFIX_128K( "265kc2.s1", CRC(67e7cbe1) SHA1(3582c2073f04e71a6d5a34145727d148a11ab375) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265or.c7", 0x3000000, 0x800000, CRC(201e75e0) SHA1(7805d7a753df4d97bd73e05f22f31fe6440eaf6c) )
+ ROM_LOAD16_BYTE( "265or.c8", 0x3000001, 0x800000, CRC(ff0fd53b) SHA1(68289ab3f808b9c067a948948f48d5a3f1787e6c) )
+ROM_END
+
+ROM_START( kof2k2cf1 ) /* [OLD] The King of Fighters 2002 - (kof2k2cfco) - Colour fix by C6F8 - (Character colour change for Iori p3 and p4) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265cf1.p2", 0x100000, 0x400000, CRC(7df52bd4) SHA1(37dddfca361012c8e04ad6fa45e8a56d80aa5f31) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cf2 ) /* [OLD] The King of Fighters 2002 - (kof2k2cfco2) - Colour fix by C6F8 - (Character colour change - release 2 built 20030827) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265cf2.p2", 0x100000, 0x400000, CRC(f65d9dd1) SHA1(81ca014633385bc1e4e13b962b8aa35b246f63a7) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cf3 ) /* [OLD] The King of Fighters 2002 - (kof2k2cfco3) - Colour fix by C6F8 - (Character colour change - release 3 built 20030831) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265cf3.p2", 0x100000, 0x400000, CRC(9b2be0af) SHA1(069ab514aceda7ba43c9557afef9320b84b7eb25) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cfc ) /* The King of Fighters 2002 - Fix by C6F8 - (Character colour change release 4 built 20031017) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265cfc.p2", 0x100000, 0x400000, CRC(e22d4ab6) SHA1(7ebab455645c428819d208d66b7b630c58d8f172) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ch ) /* [OLD] The King of Fighters 2002 - (kof2k2ch) - Revise by Coolhot - (Fighter combat moves revision - bases on CHL´s and Riky´s work 2003/05) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ch.p1", 0x000000, 0x100000, CRC(9bc19d92) SHA1(6535304911aad8901d13fa254369b0b0c726382f) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2chl ) /* [OLD] The King of Fighters 2002 - (kof2k2chl) - Revise by CHL - (Enhanced game play by chl 20030410) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265chl.p1", 0x000000, 0x100000, CRC(4824e27d) SHA1(038a109dda37fda2b43614cadabb1e1672f054c4) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cl2 ) /* [OLD] The King of Fighters 2002 - (kof2k2chl2) - Revise by CHL - (Enhanced game play by chl revision 2 20030413) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265chl2.p1", 0x000000, 0x100000, CRC(6b9cdd9c) SHA1(8764ec6c56eea54c86acc3b80d3f8cae5941f1d6) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cl3 ) /* [OLD] The King of Fighters 2002 - (kof2k2chl3) - Revise by CHL - (Enhanced game play by chl revision 3 20030413) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265chl3.p1", 0x000000, 0x100000, CRC(4ae81447) SHA1(add9e5a6737c4b00da326a947043e227d5dfcbb8) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2cn )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265cn.p1", 0x000000, 0x100000, CRC(07de031f) SHA1(6d2c6caea4d94388da597e89cde61ed6efba96fa) )
+ ROM_LOAD16_WORD_SWAP( "265cn.p2", 0x100000, 0x400000, CRC(9cb1dd35) SHA1(5e04716cf02e3321fac7bd4551fa352d8a54c7a3) )
+
+ NEO_SFIX_128K( "265cn.s1", CRC(a449f9ba) SHA1(f1744fd91d85a6391e3e5ff69d868ea9976f04c7) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265cn.c1", 0x0000000, 0x800000, CRC(35b6ee83) SHA1(1ee4fdd0482ae391544535020c96dba1fd4fb9a4) )
+ ROM_LOAD16_BYTE( "265cn.c2", 0x0000001, 0x800000, CRC(9d4bd32f) SHA1(ed0dce5dd6cffce2c55a62559b368ccc46115497) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265cn.c7", 0x3000000, 0x800000, CRC(204c1b0e) SHA1(4e44371fc4d0abbd455554eb066ede07ab5f68f9) )
+ ROM_LOAD16_BYTE( "265cn.c8", 0x3000001, 0x800000, CRC(b44c1d54) SHA1(22f9fb31b4f36f5c4fce66b5bd64b45737db43d9) )
+ROM_END
+
+ROM_START( kof2k2cori )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265cori.p1", 0x000000, 0x100000, CRC(0a3a1f32) SHA1(1f53828a441e025ca5940ed54caa10eb1dde8b32) )
+ ROM_LOAD16_WORD_SWAP( "265cori.p2", 0x100000, 0x400000, CRC(7bf474a9) SHA1(8d836a408ae7c754dd7994ce329e649c3714ad6f) )
+
+ NEO_SFIX_128K( "265kc2.s1", CRC(67e7cbe1) SHA1(3582c2073f04e71a6d5a34145727d148a11ab375) )
+
+ NEO_BIOS_AUDIO_128K( "265cori.m1", CRC(4cd619bb) SHA1(5dc0d5e923985072e87b485dd8e5ef805f583e15) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2dbh ) /* The King of Fighters 2002 - Hack by Dodowang - (Can choose Kusanagi and Rugal - when using NrX have icons in character select menu -> MVS timer flaw) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265dbh.p1", 0x000000, 0x100000, CRC(e9d96cf7) SHA1(fc9fe5ac13cf328867538a474171a6878a09a731) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_128K( "265dbh.s1", CRC(491510d1) SHA1(506fb00c1b1a0e8077bdeba9acee4245df918a98) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2e1 ) /* The King of Fighters 2002 - Hack by Kurouri - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265e1.p1", 0x000000, 0x100000, CRC(b1ad673f) SHA1(013928acacb501384a597e9c5fce96e1745043b7) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2e2 ) /* The King of Fighters 2002 - Hack by Creamymami - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265e2.p1", 0x000000, 0x100000, CRC(4a07c6be) SHA1(7f8558b1938f03d2f64034aefb774b4553863e45) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2e3 ) /* The King of Fighters 2002 - Enhance by Creamymami - (Can choose Kusanagi and Rugal - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265e3.p1", 0x000000, 0x100000, CRC(7b560cdb) SHA1(6589a7e39d72bb87be62baa89f07a92bdaa6fc0a) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ehr ) /* [OLD] The King of Fighters 2002 - (kof2k2ehr) - Remix by Raymonose - (Can choose 95-Kyo and Rugal - ultra kill start is max - style revision 33%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ehr.p1", 0x000000, 0x100000, CRC(526ab059) SHA1(526e1bbde1fb5425b780a6de2f5f9d7d843ca6be) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2er2 ) /* [OLD] The King of Fighters 2002 - (kof2k2ehr2) - Remix by Raymonose - (Can choose 95-Kyo and Rugal - ultra kill start is max - style revision 66%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265er2.p1", 0x000000, 0x100000, CRC(d41c1a04) SHA1(60d222ede6d6815d504204711272b11238e402b2) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2er3 ) /* [OLD] The King of Fighters 2002 - (kof2k2ehr3) - Remix by Raymonose - (Can choose 95-Kyo and Rugal - ultra kill start is max - style revision 80% 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265er3.p1", 0x000000, 0x100000, CRC(f322ad04) SHA1(7bc2fb5e97742201877d2d980cc4801b69b6d3a2) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2er4 ) /* [OLD] The King of Fighters 2002 - (kof2k2ehr4) - Remix by Raymonose) - (Can choose 95-Kyo and Rugal - ultra kill start is max - style revision 89% 20030420) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265er4.p1", 0x000000, 0x100000, CRC(75e595b6) SHA1(2460216721a254dc941b4d00368d67e46ed4e551) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2erx ) /* [OLD] The King of Fighters 2002 - (kof2k2ehrx) - Remix by Raymonose - (Can choose 95-Kyo and Rugal - ultra kill start is max - style revision xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265erx.p1", 0x000000, 0x100000, CRC(5a6e94e5) SHA1(bbc7e2c9eaec287fc65a0dfb6d2c7934ec7afc4c) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2evo )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265evo.p1", 0x000000, 0x100000, CRC(60AF82AB) SHA1(dfa4b99f16ca3f7fbe06604788272acf82ba57fa) )
+ ROM_LOAD16_WORD_SWAP( "k2k2m2p2.bin", 0x100000, 0x400000, CRC(432fdf53) SHA1(d7e542cd84d948162c60768e40ee4ed33d8e7913) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265evo.c7", 0x3000000, 0x800000, CRC(B4C87865) SHA1(8df7ac8bbf5f61d2fbca4cd7424074e95887ad3d) )
+ ROM_LOAD16_BYTE( "265evo.c8", 0x3000001, 0x800000, CRC(74C10CB6) SHA1(2979ab21e3632c478ad3f70148691a1a69abd378) )
+ROM_END
+
+ROM_START( kof2k2evo2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265evo2.p1", 0x000000, 0x100000, CRC(6e886994) SHA1(e67764738a83b5f34fe0fc4a9e33f2c1d67507db) )
+ ROM_LOAD16_WORD_SWAP( "265evo2.p2", 0x100000, 0x400000, CRC(4c91603b) SHA1(f9db61348220a4a626dee5fbd0498b24aa74f77d) )
+
+ NEO_SFIX_128K( "265evo2.s1", CRC(ca56e755) SHA1(ee8b05164682baef782111996f18927683acf577) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ibp.c7", 0x3000000, 0x800000, CRC(f501b9b2) SHA1(84e969243170382e3782cfe70ec0ad1b5638cb7b) )
+ ROM_LOAD16_BYTE( "265ibp.c8", 0x3000001, 0x800000, CRC(2ebcf142) SHA1(8129ed1aa7d201d4b9ed3447ffca829d07783571) )
+ ROM_LOAD16_BYTE( "265evo.c7", 0x3000000, 0x800000, CRC(B4C87865) SHA1(8df7ac8bbf5f61d2fbca4cd7424074e95887ad3d) )
+ ROM_LOAD16_BYTE( "265evo.c8", 0x3000001, 0x800000, CRC(74C10CB6) SHA1(2979ab21e3632c478ad3f70148691a1a69abd378) )
+ROM_END
+
+ROM_START( kof2k2fy ) /* The King of Fighters 2002 - Colour fix by UNKNOWN - (Lifebar + K', Vanessa, Iori, Kula and Angel colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265fy.p2", 0x100000, 0x400000, CRC(40bf4372) SHA1(d6bbf637ae064d5d9cfc1acc71ef69cb19b03062) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2gc ) /* The King of Fighters 2002 - Colour fix by Lewis67 - (Colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265gc.p2", 0x100000, 0x400000, CRC(c0ce3064) SHA1(14179ed2c851411710f391058c6d93d829f6a821) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2gc2 ) /* The King of Fighters 2002 - Colour fix by Lewis67 - (Colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265gc2.p2", 0x100000, 0x400000, CRC(ceb56128) SHA1(f29f37efe7d18cd18c2ebaaba57ee1cfc0ccb144) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2gf ) /* The King of Fighters 2002 - Colour fix by Kumagorou - (Colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265gf.p2", 0x100000, 0x400000, CRC(23850b59) SHA1(e8ef5c834e2ef20b877713ea99e357438eb55a40) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2green )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265green.p2", 0x100000, 0x400000, CRC(74df4436) SHA1(266ccc13fe144403215527bfabbec14240f2bb33) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2ht )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ht.p1", 0x000000, 0x100000, CRC(3852f80e) SHA1(eca7670b368f9fbf2242f52a87fd18adf6afc24c) )
+ ROM_LOAD16_WORD_SWAP( "265ht.p2", 0x100000, 0x400000, CRC(dec98282) SHA1(8a3c055c6c728a77134bda1f379995ebca623654) )
+
+ NEO_SFIX_128K( "265ht.s1", CRC(8d2eb52e) SHA1(b3807f982e29da326c30147c2d73e1174082a05e) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2ibp ) // A few bugs with the text caused by someone in KOFON team
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ibp.p1", 0x000000, 0x100000, CRC(5133b7e4) SHA1(50ce61dd601d94dd3fd975aa0498dd082de74e82) )
+ ROM_LOAD16_WORD_SWAP( "265ibp.p2", 0x100000, 0x400000, CRC(63ec01c0) SHA1(e2557e67c2dca098e03635df84b8c17ec39cbd29) )
+ ROM_FILL(0xb1460,1,0x49)
+ ROM_FILL(0xb1461,1,0x4e) // Fix INSERT COIN // There's another bug if you insert 2 coins
+ ROM_FILL(0xb1462,1,0x53)
+
+ NEO_SFIX_128K( "265ibp.s1", CRC(00e7d96c) SHA1(b7c6141fa8cd55524725f55fa396f502de9e8be3) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ibp.c7", 0x3000000, 0x800000, CRC(f501b9b2) SHA1(84e969243170382e3782cfe70ec0ad1b5638cb7b) )
+ ROM_LOAD16_BYTE( "265ibp.c8", 0x3000001, 0x800000, CRC(2ebcf142) SHA1(8129ed1aa7d201d4b9ed3447ffca829d07783571) )
+ROM_END
+
+ROM_START( kof2k2ice ) /* The King of Fighters 2002 - Colour fix by Fighters Kim - (Colour change - attack cremation ice blue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265ice.p2", 0x100000, 0x400000, CRC(6319dd5a) SHA1(0dfb67938aab5e1aa1e27cd80f8448ac5f4b3237) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ic1 ) /* [OLD] The King of Fighters 2002 - (kof2k2i) - Colour fix by Fighters Kim - (Colour change - attack cremation ice blue - 80%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265ic1.p2", 0x100000, 0x400000, CRC(cb07680b) SHA1(e6c9aae1fea99ade21a3bf97cd74b48128d78a43) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ic2 ) /* [OLD] The King of Fighters 2002 - (kof2k2iceo) - Colour fix by Fighters Kim - (Colour change - attack cremation ice blue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265ic2.p2", 0x100000, 0x400000, CRC(dcbf29a9) SHA1(c48744476405c2b5a23e0c3b09c65e67487d81bb) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2jc ) /* The King of Fighters 2002 - Colour fix by Jui Lee - (Character colour change for Athena 3P, Kula 3P and Kula 4P) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265jc.p2", 0x100000, 0x400000, CRC(3f515638) SHA1(e902c2d47486ad57928c60067ce24033e294f6bf) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2js )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265js.p1", 0x000000, 0x100000, CRC(b486fca8) SHA1(44aab663711c0591d5f93557ac9620853ca65e01) )
+ ROM_LOAD16_WORD_SWAP( "265js.p2", 0x100000, 0x400000, CRC(75185760) SHA1(5501d4d9ac7fcd83102f6fbee7d986006566bf9d) )
+
+ NEO_SFIX_128K( "265rm13.s1", CRC(BD19C308) SHA1(38a9055bbd981a794e1fd9065985b4c033b78e93) )
+
+ NEO_BIOS_AUDIO_128K( "265rm13.m1", CRC(9956CCD8) SHA1(ed0f5e87360dfa89a58e1b333f4a66e91c2faf56) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265js.v1", 0x000000, 0x400000, CRC(3961af5a) SHA1(483662b9ec1da54e6786a34327837a48eed3501f) )
+ ROM_LOAD( "265rm13.v2", 0x400000, 0x400000, CRC(0a1e505a) SHA1(62d128909b21cef4605ed35195e5503d1e056659) )
+ ROM_LOAD( "265rm13.v3", 0x800000, 0x400000, CRC(15bc1d92) SHA1(bc22e274f279a01518de8cd519847eb01ff675ef) )
+ ROM_LOAD( "265rm13.v4", 0xc00000, 0x400000, CRC(b5f43393) SHA1(7bbbff6aeb44e8964bbb46372b856ffe6c530076) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265js.c3", 0x1000000, 0x800000, CRC(ca656090) SHA1(ed7f79eeabb965f5cdfbdd1c2d137ef5db366e03) )
+ ROM_LOAD16_BYTE( "265js.c4", 0x1000001, 0x800000, CRC(eb898849) SHA1(eac79b04382fc20dd9f7b9345d929aff58889e8f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rm13.c7", 0x3000000, 0x800000, CRC(2A9D505C) SHA1(dcd3899aebc4602e4249b3e61299a0c8bf2e5e56) )
+ ROM_LOAD16_BYTE( "265rm13.c8", 0x3000001, 0x800000, CRC(93D8501F) SHA1(470f29de0bad8c15d924fffbbfa85926b551a8ae) )
+ROM_END
+
+ROM_START( kof2k2js2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265js2.p1", 0x000000, 0x100000, CRC(8da72d5c) SHA1(315d104da120fe1df041221209dc609a2f1d41a8) )
+ ROM_LOAD16_WORD_SWAP( "265js.p2", 0x100000, 0x400000, CRC(75185760) SHA1(5501d4d9ac7fcd83102f6fbee7d986006566bf9d) )
+
+ NEO_SFIX_128K( "265rm13.s1", CRC(BD19C308) SHA1(38a9055bbd981a794e1fd9065985b4c033b78e93) )
+
+ NEO_BIOS_AUDIO_128K( "265rm13.m1", CRC(9956CCD8) SHA1(ed0f5e87360dfa89a58e1b333f4a66e91c2faf56) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265js2.v1", 0x000000, 0x800000, CRC(6e7e3508) SHA1(9d995fd9e9665da26153704a9fa539259759c105) )
+ ROM_LOAD( "265js2.v2", 0x800000, 0x800000, CRC(2157b90f) SHA1(407422df7a24530d21119ef9233b831fb0166661) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265js.c3", 0x1000000, 0x800000, CRC(ca656090) SHA1(ed7f79eeabb965f5cdfbdd1c2d137ef5db366e03) )
+ ROM_LOAD16_BYTE( "265js.c4", 0x1000001, 0x800000, CRC(eb898849) SHA1(eac79b04382fc20dd9f7b9345d929aff58889e8f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rm13.c7", 0x3000000, 0x800000, CRC(2A9D505C) SHA1(dcd3899aebc4602e4249b3e61299a0c8bf2e5e56) )
+ ROM_LOAD16_BYTE( "265rm13.c8", 0x3000001, 0x800000, CRC(93D8501F) SHA1(470f29de0bad8c15d924fffbbfa85926b551a8ae) )
+ROM_END
+
+ROM_START( kof2k2js4 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265js4.p1", 0x000000, 0x100000, CRC(1003a13b) SHA1(a4a722a5319be46c6b5ac735142f50aab75defff) )
+ ROM_LOAD16_WORD_SWAP( "265js4.p2", 0x100000, 0x400000, CRC(27b26aad) SHA1(12ab5034ab4bf302599ffe1bc1c841f56cc083f5) )
+
+ NEO_SFIX_128K( "265js4.s1", CRC(1ac24409) SHA1(6c294e4651c4fef66a68845d3281accf5afc2d84) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2k2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265chl3.p1", 0x000000, 0x100000, CRC(4ae81447) SHA1(add9e5a6737c4b00da326a947043e227d5dfcbb8) )
+ ROM_LOAD16_WORD_SWAP( "265k2.p2", 0x100000, 0x400000, CRC(7cc7cad3) SHA1(b09c628b0d4f177cd9ce8c51bcb4c68ca7afd26d) )
+
+ NEO_SFIX_128K( "265k2.s1", CRC(10de5d7c) SHA1(44f4f523a787cf3094923483b824d7795858aff6) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2k3o ) /* [OLD] The King of Fighters 2002 - (kof2k2k3o) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3o.txt for more 20030629) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3o.p1", 0x000000, 0x100000, CRC(3e63f35d) SHA1(1943c1b7619229c59802828543e2138d033e87a8) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k32 ) /* [OLD] The King of Fighters 2002 - [OLD] The King of Fighters 2002 - (kof2k2k3r2) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r2.txt for more 20030725) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k32.p1", 0x000000, 0x100000, CRC(06404013) SHA1(a0ea9b1bfcf3a046f9faa6e8fe4fdaa2eeae1c5a) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k33 ) /* (kof2k2k3r3) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r3.txt for more 20030730) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k33.p1", 0x000000, 0x100000, CRC(f1b0e086) SHA1(5c99e2f3c8297ff99aaadd0e677fda2d2d27a57c) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k34 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r4) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r4.txt for more 20030805) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k34.p1", 0x000000, 0x100000, CRC(8e696bc6) SHA1(85b7687c7609dddd6e8a4aa876b143804d2fca67) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k35 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r5) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r5.txt for more 20030815) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k35.p1", 0x000000, 0x100000, CRC(7be62755) SHA1(bc8c9fcfee147477065957f0e6d4c6e69d1979d9) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k36 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r6) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r6.txt for more 20030818) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k36.p1", 0x000000, 0x100000, CRC(ee866a5f) SHA1(2d4a37f874a6636948013eddde52d82a769c6111) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k37 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r7) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r7.txt for more 20030823) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k37.p1", 0x000000, 0x100000, CRC(b61f27ee) SHA1(8a74527696a6b019241fb0ad2468123cfbc09b79) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k38 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r8) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r8.txt for more 20030824) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k38.p1", 0x000000, 0x100000, CRC(7aab9c67) SHA1(4e6eb6acada027e91b943e359a291f1713f37ec8) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k39 ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r9) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r9.txt for more 20030829) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k39.p1", 0x000000, 0x100000, CRC(7d6e0295) SHA1(d8cd5c9650858bc8af35cc31e932ae024af2963a) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3a ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r10) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r10.txt for more 20030907) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3a.p1", 0x000000, 0x100000, CRC(aa2539b4) SHA1(b8ed72edc7811afd117ccf4db0ba05bb8f39862f) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3b ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r11) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r11.txt for more 20030908) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3b.p1", 0x000000, 0x100000, CRC(88aad54e) SHA1(03aff6b613a6f1e5198803e4ee0c931b81940653) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3c ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r12) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r12.txt for more 20031005) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3c.p1", 0x000000, 0x100000, CRC(a54ef179) SHA1(a6bc835b2803c26d915dbb6c5496997134fde085) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3d ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r13) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r13.txt for more 20031009) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3d.p1", 0x000000, 0x100000, CRC(07ba5eaf) SHA1(f6e51f1240c38991886fd23185f45d72702aca07) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3e ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r14) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof2k2k3r14.txt for more 20031016) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3e.p1", 0x000000, 0x100000, CRC(1fd40e4d) SHA1(b0f355c5b99d2f3a2281c63d3f3d23fa809ceb2e) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3f ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r15) - Remix by Jason/K3 - (Character move change ultra revision - can choose Kusanagi and Rugal 20031202) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3f.p1", 0x000000, 0x100000, CRC(2d7cd2b8) SHA1(a7a6c23431d01a0a8d6d8d63b4dbae78e9a762cb) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2k3g ) /* [OLD] The King of Fighters 2002 - (kof2k2k3r16) - Remix by Jason/K3 - (Character move change ultra revision - can choose Kusanagi and Rugal 20040418) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265k3g.p1", 0x000000, 0x100000, CRC(035d16f9) SHA1(7472fe8887d4f88e85838913821aac7452391aef) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2kai )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265kai.p1", 0x000000, 0x100000, CRC(243bd906) SHA1(ec7c2034b050dbe93a2b3bc23a1e9dc22f5b1d40) )
+ ROM_LOAD16_WORD_SWAP( "265kai.p2", 0x100000, 0x400000, CRC(c1200d66) SHA1(73b6c449c5de4dae84f5a3bbad67799a39a6a5d5) )
+
+ NEO_SFIX_128K( "265rm13.s1", CRC(BD19C308) SHA1(38a9055bbd981a794e1fd9065985b4c033b78e93) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2kc ) /* The King of Fighters 2002 - Colour fix by Fighters Kim - (Colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265kc.p2", 0x100000, 0x400000, CRC(86b62f43) SHA1(f9afbce58843258d236144b4de8c3370a9185f1a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2kc2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265kc2.p1", 0x000000, 0x100000, CRC(811512bb) SHA1(510f5bb0ba8c72ca5377b18f75d71816e8eb79d1) )
+ ROM_LOAD16_WORD_SWAP( "265kc2.p2", 0x100000, 0x400000, CRC(7808c018) SHA1(2d671596de7a878b324d81ba464b58530088eb33) )
+
+ NEO_SFIX_128K( "265kc2.s1", CRC(67e7cbe1) SHA1(3582c2073f04e71a6d5a34145727d148a11ab375) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265kc2.c7", 0x3000000, 0x800000, CRC(54fa8789) SHA1(71311275bed0c47af2ddbcd1c5f77664c6a73a56) )
+ ROM_LOAD16_BYTE( "265kc2.c8", 0x3000001, 0x800000, CRC(ce62cb09) SHA1(30f17893ce6441bf41257ab93df5b99683098cfc) )
+ROM_END
+
+ROM_START( kof2k2kk )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265kk.p1", 0x000000, 0x100000, CRC(69301bc9) SHA1(6f5d0ebe12e88c98ec1f416d440ad7d569886966) )
+ ROM_LOAD16_WORD_SWAP( "265kk.p2", 0x100000, 0x400000, CRC(816c5aa2) SHA1(8821f91d4eeab58e3df669f3ab8817a94010f297) )
+
+ NEO_SFIX_128K( "265kk.s1", CRC(dd1dcb5b) SHA1(a24b4d725e1a3640f9a5cc46ed26192ffef79862) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265smg.c7", 0x3000000, 0x800000, CRC(febfa475) SHA1(ed69f7536d39522b85bfaa512e75b85d08b439e9) )
+ ROM_LOAD16_BYTE( "265smg.c8", 0x3000001, 0x800000, CRC(8f9b7991) SHA1(9c6e6af48c18e81ecba68563f8fb9caa85899672) )
+ROM_END
+
+ROM_START( kof2k2lb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265lb.p1", 0x000000, 0x100000, CRC(1602f059) SHA1(8a94d7f5efadd2a4e5a0bd360825746592e351b3) )
+ ROM_LOAD16_WORD_SWAP( "265lb.p2", 0x100000, 0x400000, CRC(7f8298fb) SHA1(b902d72793e0de74ed44b30475999ef0e3722394) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2leon ) // Credit display is incorrect
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265leon.p1", 0x000000, 0x100000, CRC(eba68160) SHA1(1d226e00782df71556666222e20f48268c17968c) )
+ ROM_LOAD16_WORD_SWAP( "265leon.p2", 0x100000, 0x400000, CRC(952fae3d) SHA1(09f868eb02b8df425c80f59ad43adbc3107755ab) )
+
+ NEO_SFIX_128K( "265leon.s1", CRC(adf096e9) SHA1(812e321319d9426dbeeb55f14b2bf61bd9c2998e) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265leon.c7", 0x3000000, 0x800000, CRC(c02c8a0c) SHA1(f757dc124d8375c47af05b650bfc69997a27c63b) )
+ ROM_LOAD16_BYTE( "265leon.c8", 0x3000001, 0x800000, CRC(45ac1284) SHA1(d59357d629557c09d559518d235c0379fa88dd70) )
+ROM_END
+
+ROM_START( kof2k2mcr )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265mcr.p1", 0x000000, 0x100000, CRC(1aeb806a) SHA1(a79d0021c4076efe4aae00994dfa7f3ddfd41bc5) )
+ ROM_LOAD16_WORD_SWAP( "265mcr.p2", 0x100000, 0x400000, CRC(4134dc22) SHA1(20d887b96957d5255f2b18950ea45b6ecd782b51) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265spls.c7", 0x3000000, 0x800000, CRC(31e7aaa3) SHA1(733710493cd885701f5f34078a875bc77ed57442) )
+ ROM_LOAD16_BYTE( "265spls.c8", 0x3000001, 0x800000, CRC(f26a445b) SHA1(3fba6d95c1af77a6fe2e65af39eba0ce3e4134b7) )
+ROM_END
+
+ROM_START( kof2k2moi2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265moi2.p1", 0x000000, 0x100000, CRC(0851940b) SHA1(5f374412c783b2d2392693d64c084dac4a7f3438) )
+ ROM_LOAD16_WORD_SWAP( "265moi2.p2", 0x100000, 0x400000, CRC(95c2783d) SHA1(49eb7ceba441988ff974bc5b9b935036b8701291) )
+
+ NEO_SFIX_128K( "265k2.s1", CRC(10de5d7c) SHA1(44f4f523a787cf3094923483b824d7795858aff6) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265moi2.c1", 0x0000000, 0x800000, CRC(4d15a195) SHA1(68e4fd57a32e671f259ce1d3a98727af3d91d0ba) )
+ ROM_LOAD16_BYTE( "265moi2.c2", 0x0000001, 0x800000, CRC(4468df56) SHA1(979973716d75f319c265969555a939d15424b74e) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2moir )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265moir.p1", 0x000000, 0x100000, CRC(adb10912) SHA1(1b352dc12010822b54893ae291b0cc19c20475f8) )
+ ROM_LOAD16_WORD_SWAP( "265moir.p2", 0x100000, 0x400000, CRC(e9204705) SHA1(421f50e90753c97a497172e655094871cd99b43c) )
+
+ NEO_SFIX_128K( "265moir.s1", CRC(627af296) SHA1(f2a24587896d05927456a35ef3e749505ac27dbb) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2mp1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265mp1.p1", 0x000000, 0x100000, CRC(aba169fe) SHA1(934dd20f6e3da261cb9f3587cdd8145ecdcdfa84) )
+ ROM_LOAD16_WORD_SWAP( "265ht.p2", 0x100000, 0x400000, CRC(dec98282) SHA1(8a3c055c6c728a77134bda1f379995ebca623654) )
+
+ NEO_SFIX_128K( "265mp1.s1", CRC(29c0693e) SHA1(a852d15a8558b4a1cadf1ed9ef357d765ff88d35) )
+
+ NEO_BIOS_AUDIO_128K( "265nu.m1", CRC(f80eb346) SHA1(7affe04a8e19c33ea99359ffe5f2936f7e724fa1) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2mp3 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265mp3.p1", 0x000000, 0x100000, CRC(0cdbe99c) SHA1(d1c0c953a1c313d10105a7882dadd5927bca3e4f) )
+ ROM_LOAD16_WORD_SWAP( "265ori.p2", 0x100000, 0x400000, CRC(DE6FFD21) SHA1(0f9108aae7541d0d754ce764b195c921c021c373) )
+
+ NEO_SFIX_128K( "265mp3.s1", CRC(4d0c4e77) SHA1(6e65b3e0ec2a04de4553f8ccf9c3197a0126e332) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2mpu )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265mpu.p1", 0x000000, 0x100000, CRC(96388f42) SHA1(4129ca8d2a3f6543303bafafef479a48460e58ec) )
+ ROM_LOAD16_WORD_SWAP( "265mpu.p2", 0x100000, 0x400000, CRC(d8a309e1) SHA1(a0625455f8d72bc9bcf1c880bf00e8d1814a830b) )
+
+ NEO_SFIX_128K( "265mpu.s1", CRC(561a7dd9) SHA1(5e57c6e670e2ecaaa0937a6bede9c391af8a38d4) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265or.c7", 0x3000000, 0x800000, CRC(201e75e0) SHA1(7805d7a753df4d97bd73e05f22f31fe6440eaf6c) )
+ ROM_LOAD16_BYTE( "265or.c8", 0x3000001, 0x800000, CRC(ff0fd53b) SHA1(68289ab3f808b9c067a948948f48d5a3f1787e6c) )
+ROM_END
+
+ROM_START( kof2k2ngp ) // colour change of kof2k2br1
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265br1.p1", 0x000000, 0x100000, CRC(b73033df) SHA1(c8e1ce1d35be1dd537709a533e7dac37e047f428) )
+ ROM_LOAD16_WORD_SWAP( "265ngp.p2", 0x100000, 0x400000, CRC(644fc435) SHA1(35de9b2db631a41d66dc7e141131d79b5fbeff42) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2nu )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265nu.p1", 0x000000, 0x100000, CRC(ebedae17) SHA1(5f84562f9ef7a6b007290e59b31a62aca208f579) )
+ ROM_LOAD16_WORD_SWAP( "265nu.p2", 0x100000, 0x400000, CRC(2c4b2098) SHA1(8468149138c06cd98152c71d0064d04d9befc713) )
+
+ NEO_SFIX_128K( "265nu.s1", CRC(c401c4fd) SHA1(ff3289d9320fc461cd57dda847d98c8c22094368) )
+
+ NEO_BIOS_AUDIO_128K( "265nu.m1", CRC(f80eb346) SHA1(7affe04a8e19c33ea99359ffe5f2936f7e724fa1) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265nu.c3", 0x1000000, 0x800000, CRC(263c7a65) SHA1(9b7532c63aad57cd9c274e4b8ec857e9d695b2af) )
+ ROM_LOAD16_BYTE( "265nu.c4", 0x1000001, 0x800000, CRC(bdfd88a2) SHA1(a3ac23eeb883616d25207ad872cca8ae28b93292) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2olp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265olp.p1", 0x000000, 0x100000, CRC(76bb0cfc) SHA1(243b6daeaf573e48cc99df343232cfb5e66de564) )
+ ROM_LOAD16_WORD_SWAP( "265olp.p2", 0x100000, 0x400000, CRC(9240c85c) SHA1(6ed323d31deaae3db6a4faa908b37a5b14440199) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2omg ) // kof02omg
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265omg.p1", 0x000000, 0x100000, CRC(62174834) SHA1(7bdfa0260bba90b0325b90849fb8f9acef34c3f4) )
+ ROM_IGNORE( 0x2bd4c1 )
+ ROM_LOAD16_WORD_SWAP( "265omg.p2", 0x100000, 0x400000, CRC(6fadc5c3) SHA1(8336d339013d3357b11b8e0c1816b560a755f935) )
+
+ NEO_SFIX_128K( "265omg.s1", CRC(6145daf4) SHA1(81bf405e8862854f3ae003ca840c0de05326a54f) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2omg8 ) // KOF-ON Team omega 0.8
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265omg8.p1", 0x000000, 0x100000, CRC(53086581) SHA1(a548625cfe62bc6f164276fda8e589a0e734af25) )
+ ROM_LOAD16_WORD_SWAP( "265omg8.p2", 0x100000, 0x400000, CRC(40228fe5) SHA1(6beb7be722c1b0da70f1127b262b1e8a737cb22c) )
+
+ NEO_SFIX_128K( "265omg8.s1", CRC(65351d40) SHA1(84035a80c1d0a35e487da831063cd4a77790a86f) )
+
+ NEO_BIOS_AUDIO_256K( "265omg8.m1", CRC(9a3d5c65) SHA1(382a104c1637622b6e1e44af2db331c5832cd09c) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265omg8.c1", 0x0000000, 0x800000, CRC(e144302d) SHA1(8156a7f52b4c0f73d0f770314ccd8da07eab7266) )
+ ROM_LOAD16_BYTE( "265omg8.c2", 0x0000001, 0x800000, CRC(b10c6958) SHA1(e2112d1640cbcdeaaa0cb2bbf87d759184d4a6f0) )
+ ROM_LOAD16_BYTE( "265omg8.c3", 0x1000000, 0x800000, CRC(2367927c) SHA1(31a5b58feaeb2ecbde5573b48b50cdd8bcaa6ab4) )
+ ROM_LOAD16_BYTE( "265omg8.c4", 0x1000001, 0x800000, CRC(4ad48c29) SHA1(9908a7c2d579059a97927d58f4ea95b17deb9952) )
+ ROM_LOAD16_BYTE( "365ru.c5", 0x2000000, 0x800000, CRC(11126545) SHA1(4ae58848c8a6701c9cfcd60e6674e8fb7491c0c0) )
+ ROM_LOAD16_BYTE( "365ru.c6", 0x2000001, 0x800000, CRC(d225bb9b) SHA1(ee627dab6aeebfb1af9dbdc315a927245243817c) )
+ ROM_LOAD16_BYTE( "265omg8.c7", 0x3000000, 0x800000, CRC(890c2a4a) SHA1(04e8720ee62782b8fd6621ef4dc4e7469f57b10c) )
+ ROM_LOAD16_BYTE( "265omg8.c8", 0x3000001, 0x800000, CRC(b726009d) SHA1(29e84e7012cd5c109937ea2e6a455ed9829776ac) )
+ROM_END
+
+ROM_START( kof2k2omg9 ) // omega v9
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265omg9.p2", 0x100000, 0x400000, CRC(cd503fcf) SHA1(8f83fd34f441d706fabac6eee1357e27cb55d60b) )
+
+ NEO_SFIX_128K( "265omg9.s1", CRC(4562fb20) SHA1(623bc397f5fa9e2686ea098d16e8c11215bfd61d) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265omg9b.c1", 0x0000000, 0x800000, CRC(c8314ae2) SHA1(7d89b556de98e0d89448e5118ffeea4239461635) )
+ ROM_LOAD16_BYTE( "265omg9b.c2", 0x0000001, 0x800000, CRC(e0ddced5) SHA1(d8b5bd419bc825b99c206f54fbce97305839bcc9) )
+ ROM_LOAD16_BYTE( "265omg9b.c3", 0x1000000, 0x800000, CRC(6898f6e2) SHA1(4d8101534f85838eff3823ead72bdbcee57a3a50) )
+ ROM_LOAD16_BYTE( "265omg9b.c4", 0x1000001, 0x800000, CRC(9232e491) SHA1(e56b5657842d5e147e56c485dfa9a5a0a6ffba2d) )
+ ROM_LOAD16_BYTE( "365ru.c5", 0x2000000, 0x800000, CRC(11126545) SHA1(4ae58848c8a6701c9cfcd60e6674e8fb7491c0c0) )
+ ROM_LOAD16_BYTE( "365ru.c6", 0x2000001, 0x800000, CRC(d225bb9b) SHA1(ee627dab6aeebfb1af9dbdc315a927245243817c) )
+ ROM_LOAD16_BYTE( "265omg9b.c7", 0x3000000, 0x800000, CRC(6954ef57) SHA1(807f7bcdac379c5dce7745f10925e5c4a10c2c85) )
+ ROM_LOAD16_BYTE( "265omg9b.c8", 0x3000001, 0x800000, CRC(3e394883) SHA1(03e92267bdef8651bac6278c8068892dadba3ad8) )
+ROM_END
+
+ROM_START( kof2k2omg9b ) // omega v9 beta
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265omg9b.p2", 0x100000, 0x400000, CRC(a171b684) SHA1(2b8ef67c0e2709e77a07d3c139cf411961470e49) )
+
+ NEO_SFIX_128K( "265omg9b.s1", CRC(7e3f391a) SHA1(2680cdf630f8c726d8efaee4b4108108028c4c38) )
+
+ NEO_BIOS_AUDIO_256K( "265omg8.m1", CRC(9a3d5c65) SHA1(382a104c1637622b6e1e44af2db331c5832cd09c) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265omg9b.c1", 0x0000000, 0x800000, CRC(c8314ae2) SHA1(7d89b556de98e0d89448e5118ffeea4239461635) )
+ ROM_LOAD16_BYTE( "265omg9b.c2", 0x0000001, 0x800000, CRC(e0ddced5) SHA1(d8b5bd419bc825b99c206f54fbce97305839bcc9) )
+ ROM_LOAD16_BYTE( "265omg9b.c3", 0x1000000, 0x800000, CRC(6898f6e2) SHA1(4d8101534f85838eff3823ead72bdbcee57a3a50) )
+ ROM_LOAD16_BYTE( "265omg9b.c4", 0x1000001, 0x800000, CRC(9232e491) SHA1(e56b5657842d5e147e56c485dfa9a5a0a6ffba2d) )
+ ROM_LOAD16_BYTE( "365ru.c5", 0x2000000, 0x800000, CRC(11126545) SHA1(4ae58848c8a6701c9cfcd60e6674e8fb7491c0c0) )
+ ROM_LOAD16_BYTE( "365ru.c6", 0x2000001, 0x800000, CRC(d225bb9b) SHA1(ee627dab6aeebfb1af9dbdc315a927245243817c) )
+ ROM_LOAD16_BYTE( "265omg9b.c7", 0x3000000, 0x800000, CRC(6954ef57) SHA1(807f7bcdac379c5dce7745f10925e5c4a10c2c85) )
+ ROM_LOAD16_BYTE( "265omg9b.c8", 0x3000001, 0x800000, CRC(3e394883) SHA1(03e92267bdef8651bac6278c8068892dadba3ad8) )
+ROM_END
+
+ROM_START( kof2k2on )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265on.p1", 0x000000, 0x100000, CRC(398ebaff) SHA1(6055bca69cd1cc922d269ff0c5a036e5482ca9b8) )
+ ROM_LOAD16_WORD_SWAP( "k2k2m2p2.bin", 0x100000, 0x400000, CRC(432fdf53) SHA1(d7e542cd84d948162c60768e40ee4ed33d8e7913) )
+
+ NEO_SFIX_128K( "265ori2.s1", CRC(99ca0abc) SHA1(cb0e5646590f1ed998e02a70a009c432fbaef2e2) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2or ) /* The King of Fighters 2002 - Third Strike of Orochi */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265or.p1", 0x000000, 0x100000, CRC(eb84d68f) SHA1(8dccf250cf04e129529793abcc655f5fc7fb6629) )
+ ROM_LOAD16_WORD_SWAP( "265or.p2", 0x100000, 0x400000, CRC(293bbf78) SHA1(647eea522d0a163675205aeab9b0b9ebb3a47eea) )
+
+ NEO_SFIX_128K( "265ps2.s1", CRC(714ade47) SHA1(a46115ed89454d8090fae59cfa4aea61a4a81ebf) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265or.c7", 0x3000000, 0x800000, CRC(201e75e0) SHA1(7805d7a753df4d97bd73e05f22f31fe6440eaf6c) )
+ ROM_LOAD16_BYTE( "265or.c8", 0x3000001, 0x800000, CRC(ff0fd53b) SHA1(68289ab3f808b9c067a948948f48d5a3f1787e6c) )
+ROM_END
+
+ROM_START( kof2k2ori )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ori.p1", 0x000000, 0x100000, CRC(081406DB) SHA1(3fbf24c222ebb5e4d6084f3664ab00caae24e156) )
+ ROM_LOAD16_WORD_SWAP( "265ori.p2", 0x100000, 0x400000, CRC(DE6FFD21) SHA1(0f9108aae7541d0d754ce764b195c921c021c373) )
+
+ NEO_SFIX_128K( "265ori.s1", CRC(98622D30) SHA1(dad20e619a3158b890e6b129179befc5770cf4c0) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2ori2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ori2.p1", 0x000000, 0x100000, CRC(42a7a398) SHA1(355edf6c75a52c535118b1ed58c3eb348e0770ca) )
+ ROM_LOAD16_WORD_SWAP( "265ori.p2", 0x100000, 0x400000, CRC(DE6FFD21) SHA1(0f9108aae7541d0d754ce764b195c921c021c373) )
+
+ NEO_SFIX_128K( "265ori2.s1", CRC(99ca0abc) SHA1(cb0e5646590f1ed998e02a70a009c432fbaef2e2) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2pa ) /* same as kof2k2plb except s1 from smg, p1 is new */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265pa.p1", 0x000000, 0x100000, CRC(6a3a02f3) SHA1(c9973b64e9a87fa38dde233ee3e9a73ba085b013) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_128K( "265smg.s1", CRC(1a3ed064) SHA1(9749bb55c750e6b65d651998c2649c5fb68db68e) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2pjw ) /* The King of Fighters 2002 - Enhance by Jason/K3 and Wesker - ('Plus' version by Jason/K3 and Wesker) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265pjw.p1", 0x000000, 0x100000, CRC(a87c318e) SHA1(58703a572cf37565e024dec570723b8e8f2c22e2) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2plb ) /* bootleg - same as MAME kf2k2pls except m1 & s1 are different */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k2-p1p.bin",0x000000, 0x100000, CRC(3ab03781) SHA1(86946c19f1c4d9ab5cde86688d698bf63118a39d) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_128K( "265plb.s1", CRC(2072d5e9) SHA1(45f9eb101f4b58ce40c307fd9fa8b1e95215a81b) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2pr ) /* [OLD] The King of Fighters 2002 - (kof2k2pr) - Remix by Raymonose - (Character move change 20% 20030607) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265pr.p1", 0x000000, 0x100000, CRC(a950f9e2) SHA1(769d4b4d8e8dd1cf8db95398534a1242ab12a0ae) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2pro ) /* [OLD] The King of Fighters 2002 - (kof2k2pre) - Remix by Raymonose - (Character move change 20% 20030607) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265pro.p1", 0x000000, 0x100000, CRC(76efe13e) SHA1(c280e942cfdae74da19dbb37e69f29a99fe5eed3) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ps2 ) /* The King of Fighters 2002 - PS2 ver */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ps2.p1", 0x000000, 0x100000, CRC(5a8c7f2f) SHA1(c661a189b5e83c457135cb535c551f68afe82c0d) )
+ ROM_LOAD16_WORD_SWAP( "265ps2.p2", 0x100000, 0x500000, CRC(cb0032bf) SHA1(4bb3176f3a7f06871698b0493d9c3feb7f8f015c) )
+
+ NEO_SFIX_128K( "265ps2.s1", CRC(714ade47) SHA1(a46115ed89454d8090fae59cfa4aea61a4a81ebf) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ps2.c7", 0x3000000, 0x800000, CRC(1b1d35fb) SHA1(474e956a627c90508fcda5c12de83743339814aa) )
+ ROM_LOAD16_BYTE( "265ps2.c8", 0x3000001, 0x800000, CRC(a5e35d11) SHA1(dccd445754a07e243f39d06b4b31cb9937f3b3bd) )
+ ROM_LOAD16_BYTE( "265ps2.c9", 0x4000000, 0x800000, CRC(aa8bbc97) SHA1(f0dde66eceb34609473d83e2514b7056a0a22851) )
+ ROM_LOAD16_BYTE( "265ps2.c10", 0x4000001, 0x800000, CRC(9832713d) SHA1(899c00ea88ef536441b9358b4620402ca9851cf5) )
+ROM_END
+
+ROM_START( kof2k2ps2a )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ps2a.p1", 0x000000, 0x100000, CRC(336c4ca8) SHA1(132d6444d63c065205357adabd437adf9cdea585) )
+ ROM_LOAD16_WORD_SWAP( "265ps2.p2", 0x100000, 0x500000, CRC(cb0032bf) SHA1(4bb3176f3a7f06871698b0493d9c3feb7f8f015c) )
+
+ NEO_SFIX_128K( "265ps2.s1", CRC(714ade47) SHA1(a46115ed89454d8090fae59cfa4aea61a4a81ebf) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ps2.c7", 0x3000000, 0x800000, CRC(1b1d35fb) SHA1(474e956a627c90508fcda5c12de83743339814aa) )
+ ROM_LOAD16_BYTE( "265ps2.c8", 0x3000001, 0x800000, CRC(a5e35d11) SHA1(dccd445754a07e243f39d06b4b31cb9937f3b3bd) )
+ ROM_LOAD16_BYTE( "265ps2.c9", 0x4000000, 0x800000, CRC(aa8bbc97) SHA1(f0dde66eceb34609473d83e2514b7056a0a22851) )
+ ROM_LOAD16_BYTE( "265ps2.c10", 0x4000001, 0x800000, CRC(9832713d) SHA1(899c00ea88ef536441b9358b4620402ca9851cf5) )
+ROM_END
+
+ROM_START( kof2k2ps2mp )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ps2mp.p1", 0x000000, 0x100000, CRC(8c111128) SHA1(6a8017a236e331786a5eaaee50daf9a7d8d5f358) )
+ ROM_LOAD16_WORD_SWAP( "265ps2.p2", 0x100000, 0x500000, CRC(cb0032bf) SHA1(4bb3176f3a7f06871698b0493d9c3feb7f8f015c) )
+
+ NEO_SFIX_128K( "265ps2.s1", CRC(714ade47) SHA1(a46115ed89454d8090fae59cfa4aea61a4a81ebf) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ps2.c7", 0x3000000, 0x800000, CRC(1b1d35fb) SHA1(474e956a627c90508fcda5c12de83743339814aa) )
+ ROM_LOAD16_BYTE( "265ps2.c8", 0x3000001, 0x800000, CRC(a5e35d11) SHA1(dccd445754a07e243f39d06b4b31cb9937f3b3bd) )
+ ROM_LOAD16_BYTE( "265ps2.c9", 0x4000000, 0x800000, CRC(aa8bbc97) SHA1(f0dde66eceb34609473d83e2514b7056a0a22851) )
+ ROM_LOAD16_BYTE( "265ps2.c10", 0x4000001, 0x800000, CRC(9832713d) SHA1(899c00ea88ef536441b9358b4620402ca9851cf5) )
+ROM_END
+
+ROM_START( kof2k2pur )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265pur.p1", 0x000000, 0x100000, CRC(e3fbd156) SHA1(a71cdef591a7d15e40d05617fb73929607d1a895) )
+ ROM_LOAD16_WORD_SWAP( "265pur.p2", 0x100000, 0x400000, CRC(fd3c0e06) SHA1(50b10e7838c683852811dcdfb7d6b4297cd8597c) )
+
+ NEO_SFIX_128K( "265evo.s1", CRC(E0EAABA3) SHA1(831b642da9fe7617498cdb1c86475b3b3d3043bc) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2ra ) /* [OLD] The King of Fighters 2002 - (kof2k2ra) - Revise by Ruin Angel - (Fighter combat moves revision - bases on CHL´s work 2003/04) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ra.p1", 0x000000, 0x100000, CRC(e08d9418) SHA1(b99fd8cea5b0cb16c8b58f748898d6bdaf8035f1) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rgl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rgl.p1", 0x000000, 0x100000, CRC(188d4288) SHA1(f745718329718852b42267cd9a17ea5cd107d0bf) )
+ ROM_LOAD16_WORD_SWAP( "265rgl.p2", 0x100000, 0x400000, CRC(f0a176a9) SHA1(5344fd686f03d4fc9c9aded4556b42ae5d5150c5) )
+
+ NEO_SFIX_128K( "265rgl.s1", CRC(ca827be9) SHA1(0f2acadb0f840809420e6f96f0f89d357815ef4c) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265js.c3", 0x1000000, 0x800000, CRC(ca656090) SHA1(ed7f79eeabb965f5cdfbdd1c2d137ef5db366e03) )
+ ROM_LOAD16_BYTE( "265js.c4", 0x1000001, 0x800000, CRC(eb898849) SHA1(eac79b04382fc20dd9f7b9345d929aff58889e8f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rgl.c7", 0x3000000, 0x800000, CRC(0e13aace) SHA1(419eb29e3a479cb5dbd5d99f1d79e8846770d0cb) )
+ ROM_LOAD16_BYTE( "265rgl.c8", 0x3000001, 0x800000, CRC(986d4825) SHA1(558f929929c207207442798d72459baed837c1a3) )
+ROM_END
+
+ROM_START( kof2k2rm ) /* [OLD] The King of Fighters 2002 - (kof2k2rm) - Remix by Raymonose - (Remix 33%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rm.p1", 0x000000, 0x100000, CRC(8dd5a885) SHA1(80959a2909b499c61c815929b17df05efa59ba46) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rma )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rma.p1", 0x000000, 0x100000, CRC(b98ba35a) SHA1(14c3e255da8d1b75b9d47a1d5a8eb0172e35abf0) )
+ ROM_LOAD16_WORD_SWAP( "265rma.p2", 0x100000, 0x400000, CRC(26ea77d2) SHA1(4a63fd6296c9e0e3cb663602d478b3fde60ad9df) )
+
+ NEO_SFIX_128K( "265rma.s1", CRC(8544b8ea) SHA1(bb25fae3aedba6023ca6bfdc0dd3db0c57ad14d0) )
+
+ NEO_BIOS_AUDIO_128K( "265rm13.m1", CRC(9956CCD8) SHA1(ed0f5e87360dfa89a58e1b333f4a66e91c2faf56) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265js.v1", 0x000000, 0x400000, CRC(3961af5a) SHA1(483662b9ec1da54e6786a34327837a48eed3501f) )
+ ROM_LOAD( "265rm13.v2", 0x400000, 0x400000, CRC(0a1e505a) SHA1(62d128909b21cef4605ed35195e5503d1e056659) )
+ ROM_LOAD( "265rm13.v3", 0x800000, 0x400000, CRC(15bc1d92) SHA1(bc22e274f279a01518de8cd519847eb01ff675ef) )
+ ROM_LOAD( "265rm13.v4", 0xc00000, 0x400000, CRC(b5f43393) SHA1(7bbbff6aeb44e8964bbb46372b856ffe6c530076) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rma.c7", 0x3000000, 0x800000, CRC(5e79a235) SHA1(610a8073c61c5346f23e95a79369ed7950a02d63) )
+ ROM_LOAD16_BYTE( "265rma.c8", 0x3000001, 0x800000, CRC(a2b54e2d) SHA1(3f534ac51f3c2b1efe8a76cabd7e154ea9f1f13e) )
+ROM_END
+
+ROM_START( kof2k2rmb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rma.p1", 0x000000, 0x100000, CRC(b98ba35a) SHA1(14c3e255da8d1b75b9d47a1d5a8eb0172e35abf0) )
+ ROM_LOAD16_WORD_SWAP( "265rmb.p2", 0x100000, 0x400000, CRC(8684acf0) SHA1(364cde00d3c35b3aca60fe5d0bf6ffa774898787) )
+
+ NEO_SFIX_128K( "265rm13.s1", CRC(BD19C308) SHA1(38a9055bbd981a794e1fd9065985b4c033b78e93) )
+
+ NEO_BIOS_AUDIO_128K( "265rm13.m1", CRC(9956CCD8) SHA1(ed0f5e87360dfa89a58e1b333f4a66e91c2faf56) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265js.v1", 0x000000, 0x400000, CRC(3961af5a) SHA1(483662b9ec1da54e6786a34327837a48eed3501f) )
+ ROM_LOAD( "265rm13.v2", 0x400000, 0x400000, CRC(0a1e505a) SHA1(62d128909b21cef4605ed35195e5503d1e056659) )
+ ROM_LOAD( "265rm13.v3", 0x800000, 0x400000, CRC(15bc1d92) SHA1(bc22e274f279a01518de8cd519847eb01ff675ef) )
+ ROM_LOAD( "265rm13.v4", 0xc00000, 0x400000, CRC(b5f43393) SHA1(7bbbff6aeb44e8964bbb46372b856ffe6c530076) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rm13.c7", 0x3000000, 0x800000, CRC(2A9D505C) SHA1(dcd3899aebc4602e4249b3e61299a0c8bf2e5e56) )
+ ROM_LOAD16_BYTE( "265rm13.c8", 0x3000001, 0x800000, CRC(93D8501F) SHA1(470f29de0bad8c15d924fffbbfa85926b551a8ae) )
+ROM_END
+
+ROM_START( kof2k2rm1 ) /* [OLD] The King of Fighters 2002 - (kof2k2rm1) - Remix by Raymonose - (Remix revision 1 - 66%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rm1.p1", 0x000000, 0x100000, CRC(0ba302d8) SHA1(ce919c4acd305e8c5e0412fdc4fcb84ec2da9c9d) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rm2 ) /* [OLD] The King of Fighters 2002 - (kof2k2rm2) - Remix by Raymonose - (Remix revision 2 - 80% 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rm2.p1", 0x000000, 0x100000, CRC(2c9db5d8) SHA1(0ba62a1012114e40a30c7d437930397274e30920) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rm3 ) /* [OLD] The King of Fighters 2002 - (kof2k2rm3) - Remix by Raymonose - (Remix revision 3 - 89% 20030420) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rm3.p1", 0x000000, 0x100000, CRC(aa5a8d6a) SHA1(1bc7666d255c9c6e076b396030dff3b71dd7ca02) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rm13 ) // kf2k2rm13 at gametroniks
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rm13.p1", 0x000000, 0x100000, CRC(D4CA84AC) SHA1(df33693f980b1db4d2baef562364bf9d7172b53a) )
+ ROM_LOAD16_WORD_SWAP( "265rm13.p2", 0x100000, 0x400000, CRC(3CAA9FF2) SHA1(a55099baba9df85c45c1449289ffb89cd2a486d7) )
+
+ NEO_SFIX_128K( "265rm13.s1", CRC(BD19C308) SHA1(38a9055bbd981a794e1fd9065985b4c033b78e93) )
+
+ NEO_BIOS_AUDIO_128K( "265rm13.m1", CRC(9956CCD8) SHA1(ed0f5e87360dfa89a58e1b333f4a66e91c2faf56) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265rm13.v1", 0x000000, 0x400000, CRC(fbb908d7) SHA1(35805022a36a539033fa4ec07cfbebcaac4cb972) )
+ ROM_LOAD( "265rm13.v2", 0x400000, 0x400000, CRC(0a1e505a) SHA1(62d128909b21cef4605ed35195e5503d1e056659) )
+ ROM_LOAD( "265rm13.v3", 0x800000, 0x400000, CRC(15bc1d92) SHA1(bc22e274f279a01518de8cd519847eb01ff675ef) )
+ ROM_LOAD( "265rm13.v4", 0xc00000, 0x400000, CRC(b5f43393) SHA1(7bbbff6aeb44e8964bbb46372b856ffe6c530076) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rm13.c7", 0x3000000, 0x800000, CRC(2A9D505C) SHA1(dcd3899aebc4602e4249b3e61299a0c8bf2e5e56) )
+ ROM_LOAD16_BYTE( "265rm13.c8", 0x3000001, 0x800000, CRC(93D8501F) SHA1(470f29de0bad8c15d924fffbbfa85926b551a8ae) )
+ROM_END
+
+ROM_START( kof2k2rr ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr.p1", 0x000000, 0x100000, CRC(8c66baae) SHA1(bed090cf6b2a0ebfdde891ef2f319b9bb79236e1) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr1 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr1.p1", 0x000000, 0x100000, CRC(a0929b00) SHA1(0539553e9a8778ef0f1d613527b316b6f0e99a7c) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr2 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr2.p1", 0x000000, 0x100000, CRC(13b61d63) SHA1(0649f25bc6a64a8059b82d6b09e62eb1f2537e50) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr3 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr3.p1", 0x000000, 0x100000, CRC(67b64636) SHA1(d9537596bcbc86d9f5a162501829212ee9f941dd) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr4 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr4.p1", 0x000000, 0x100000, CRC(4a12ef24) SHA1(dfe2f34d4181643f3f06d8223fdf1e43dbe3110a) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr5 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr5.p1", 0x000000, 0x100000, CRC(aba2827f) SHA1(6477110e0649db35a0494f5f63b37626a5af6391) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr6 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr6.p1", 0x000000, 0x100000, CRC(c6b9d2c7) SHA1(d49613a2f9793ea684c9aa6af4685a4b25cab596) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr7 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr7.p1", 0x000000, 0x100000, CRC(56c9e089) SHA1(248b9c4c00179fbd6b877ba8df2b8acd45f71adf) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rr8 ) /* [OLD] The King of Fighters 2002 - (kof2k2rr) - Revise by Ricky - (Fighter combat moves revision - bases on CHL´s work 2003/05 - 2003/06) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rr8.p1", 0x000000, 0x100000, CRC(f0a14d18) SHA1(6b4e4ceda6d516966e02906b30e861508addc705) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rs.p1", 0x000000, 0x100000, CRC(fcd1b366) SHA1(403103f959ad36026924f62701f9ef465950215e) )
+ ROM_LOAD16_WORD_SWAP( "265rs.p2", 0x100000, 0x400000, CRC(346d0bae) SHA1(9c01a1767b3ba79cabcc7f86634d486a30c1cf62) )
+
+ NEO_SFIX_128K( "265rs.s1", CRC(914bd3f7) SHA1(b2db65fac73367b0f956bf5a0d80a9aaffd432f1) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rs.c7", 0x3000000, 0x800000, CRC(ea3405d4) SHA1(9d3291a2dd3b50f8f9a82ce1c56dd3695e32a7cc) )
+ ROM_LOAD16_BYTE( "265rs.c8", 0x3000001, 0x800000, CRC(41c547fa) SHA1(b08f86a56a78e7080275031da2c590417a21b2e9) )
+ROM_END
+
+ROM_START( kof2k2rs2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rs.p1", 0x000000, 0x100000, CRC(fcd1b366) SHA1(403103f959ad36026924f62701f9ef465950215e) )
+ ROM_LOAD16_WORD_SWAP( "265rs2.p2", 0x100000, 0x400000, CRC(4fc9c70c) SHA1(99c97634af60fc54318685f1a8e90e8c402195fd) )
+
+ NEO_SFIX_128K( "265rs.s1", CRC(914bd3f7) SHA1(b2db65fac73367b0f956bf5a0d80a9aaffd432f1) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265rs.c7", 0x3000000, 0x800000, CRC(ea3405d4) SHA1(9d3291a2dd3b50f8f9a82ce1c56dd3695e32a7cc) )
+ ROM_LOAD16_BYTE( "265rs.c8", 0x3000001, 0x800000, CRC(41c547fa) SHA1(b08f86a56a78e7080275031da2c590417a21b2e9) )
+ROM_END
+
+ROM_START( kof2k2ru ) /* The King of Fighters 2002 - Remix Ultra by Jason/K3 - (Character move change ultra revision - can choose Kusanagi and Rugal 20040820 - v2.5) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ru.p1", 0x000000, 0x100000, CRC(4455e4b3) SHA1(ac607cb5620f757e4707503e01582e6049212135) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2rw ) /* The King of Fighters 2002 - Remix by Wesker - (Character move change - can choose Kusanagi and Rugal 200310xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265rw.p1", 0x000000, 0x100000, CRC(4cb3582e) SHA1(e990d8159d4ab9d20ad563b144a5d789a2a25087) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2sb ) /* [OLD] The King of Fighters 2002 - (kof2k2sb) - Revise by Streetboy - (Fighter combat moves revision - bases on CHL´s work 2003/04) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265sb.p1", 0x000000, 0x100000, CRC(a3c73508) SHA1(b2ab64f8828bf2a1d94f129e2b8a911b2f3f461e) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2seh ) /* The King of Fighters 2002 - Super Enhance Hack by Creamymami - (Can choose Kusanagi and Rugal - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265seh.p1", 0x000000, 0x100000, CRC(41616bff) SHA1(cc75e2704a6058c4775978b58003d7b46a7f114c) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2se2 ) /* The King of Fighters 2002 - Super Enhance Hack by Creamymami - (Can select Rugal and Kusanagi - ultra kill start is max - ultra power hack - modif. kf2k2seh) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265se2.p1", 0x000000, 0x100000, CRC(c02f73c1) SHA1(e7c1d0c18f1f3ba4044aca4337ed1f9302f42909) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2sm ) // bad gfx on train scene
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265sm.p1", 0x000000, 0x100000, CRC(8599ad97) SHA1(d5d1225bcc57ae7bc980ab43072e66936367c419) )
+ ROM_LOAD16_WORD_SWAP( "265sm.p2", 0x100000, 0x400000, CRC(7633f140) SHA1(a6b1f582290b8212c6f74a4b944186b1bb0e0a01) )
+
+ NEO_SFIX_128K( "265sm.s1", CRC(f060242d) SHA1(4bc27e74f49ef924916de653c34339f77f648f35) )
+
+ NEO_BIOS_AUDIO_128K( "265nu.m1", CRC(f80eb346) SHA1(7affe04a8e19c33ea99359ffe5f2936f7e724fa1) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265sm.c1", 0x0000000, 0x800000, CRC(2c6642dd) SHA1(19cf4a674b7f78e5639c9b5517242f20695c6713) )
+ ROM_LOAD16_BYTE( "265sm.c2", 0x0000001, 0x800000, CRC(1410aaa2) SHA1(2698ba6dd348feb0b7fc8e331e2e6a59f7fc6ef3) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265rm13.c4", 0x1000001, 0x800000, CRC(2558972F) SHA1(2e0627fc5d689bf64fe36f02a489408d103c4499) )
+ ROM_LOAD16_BYTE( "265sm.c5", 0x2000000, 0x800000, CRC(59ccfd5a) SHA1(b532a8a5ce96ab73cfc6b1e19144797a04837df6) )
+ ROM_LOAD16_BYTE( "265sm.c6", 0x2000001, 0x800000, CRC(2bfa516d) SHA1(89971bc824093684f3ac3f97e3c1b152f18f7502) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2smf ) // kf2k2smf
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265smf.p1", 0x000000, 0x100000, CRC(d8010414) SHA1(4a6e509e25b819188181375238f5b086ee28ff6e) )
+ ROM_LOAD16_WORD_SWAP( "265smf.p2", 0x100000, 0x400000, CRC(1647a83a) SHA1(2415636880cfb5a65255d9248a3034d247eff8d4) )
+
+ NEO_SFIX_128K( "265smf.s1", CRC(c7282dbc) SHA1(7fd82850a35a6ea0c2877aaf39cc46d7dcbd939b) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265smg.c7", 0x3000000, 0x800000, CRC(febfa475) SHA1(ed69f7536d39522b85bfaa512e75b85d08b439e9) )
+ ROM_LOAD16_BYTE( "265smg.c8", 0x3000001, 0x800000, CRC(8f9b7991) SHA1(9c6e6af48c18e81ecba68563f8fb9caa85899672) )
+ROM_END
+
+ROM_START( kof2k2smg )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265smg.p1", 0x000000, 0x100000, CRC(8c07ce4e) SHA1(754d588fb41cbaf9466c677e9daccac4e2025925) )
+ ROM_LOAD16_WORD_SWAP( "265smg.p2", 0x100000, 0x400000, CRC(dc836917) SHA1(b0d6701d07cadc7e202c7ef3755872f721dca679) )
+
+ NEO_SFIX_128K( "265smg.s1", CRC(1a3ed064) SHA1(9749bb55c750e6b65d651998c2649c5fb68db68e) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265smg.c7", 0x3000000, 0x800000, CRC(febfa475) SHA1(ed69f7536d39522b85bfaa512e75b85d08b439e9) )
+ ROM_LOAD16_BYTE( "265smg.c8", 0x3000001, 0x800000, CRC(8f9b7991) SHA1(9c6e6af48c18e81ecba68563f8fb9caa85899672) )
+ROM_END
+
+ROM_START( kof2k2smg2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265smg.p1", 0x000000, 0x100000, CRC(8c07ce4e) SHA1(754d588fb41cbaf9466c677e9daccac4e2025925) )
+ ROM_LOAD16_WORD_SWAP( "265smg2.p2", 0x100000, 0x400000, CRC(ba178ab6) SHA1(94dd06bbac4d38f78d186a02f0b808821b00a621) )
+
+ NEO_SFIX_128K( "265smg.s1", CRC(1a3ed064) SHA1(9749bb55c750e6b65d651998c2649c5fb68db68e) )
+
+ NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof2k2soi )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265soi.p1", 0x000000, 0x100000, CRC(f4390d0f) SHA1(36cbb7bca856220667d42d94061d295cee655bf9) )
+ ROM_LOAD16_WORD_SWAP( "265soi.p2", 0x100000, 0x400000, CRC(5114896e) SHA1(c7e468ea8087b19bebf10ace9e57b28ec3888c43) )
+
+ NEO_SFIX_128K( "265soi.s1", CRC(5ea6a39b) SHA1(095d6bc61ca742db8553c441c97cb526acdd3f30) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) )
+ ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) )
+ ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) )
+ ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265rs.c1", 0x0000000, 0x800000, CRC(c1a21b4c) SHA1(235938175d6011c5c8a37fc94f8fb604132d8038) )
+ ROM_LOAD16_BYTE( "265rs.c2", 0x0000001, 0x800000, CRC(9b3d7e8d) SHA1(38c16541862636934a456f23632f64ff0f5ae617) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) )
+ ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) )
+ROM_END
+
+ROM_START( kof2k2sp ) /* The King of Fighters 2002 - Remix by Wesker - (Character special move change - can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265sp.p1", 0x000000, 0x100000, CRC(22599a10) SHA1(93ffd9569179e176d7b2a532b47e6a6b806e6cb8) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2spl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265spl.p1", 0x000000, 0x100000, CRC(ed966da6) SHA1(9e6a284da9605a6bb5816c85b9936ef620ef9087) )
+ ROM_LOAD16_WORD_SWAP( "265spl.p2", 0x100000, 0x400000, CRC(a871ab1e) SHA1(99d1e5805b194c179bb544d588eadd5174be897c) )
+
+ NEO_SFIX_128K( "265spl.s1", CRC(aeed9b6f) SHA1(afd41686b70e37149f5ae8ff956c9166ef481559) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265spl.c7", 0x3000000, 0x800000, CRC(d5c5712b) SHA1(ff1f32a44a2e42355d5148614771b52074dea672) )
+ ROM_LOAD16_BYTE( "265spl.c8", 0x3000001, 0x800000, CRC(7dfbea39) SHA1(f698308ef7d8a7019c21005089d7a5f801e3a07a) )
+ROM_END
+
+ROM_START( kof2k2spls )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265spls.p1", 0x000000, 0x100000, CRC(7481af02) SHA1(32561e4d6481123f580322c4e5d4b8f6a28258a5) )
+ ROM_LOAD16_WORD_SWAP( "265spls.p2", 0x100000, 0x400000, CRC(6578f2c6) SHA1(7881dd50fd1e613a9b448799e19257d57ff215ed) )
+
+ NEO_SFIX_128K( "265spls.s1", CRC(196592f6) SHA1(67f64aa251d65220ddaa69a10c526c1cd85540a6) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) )
+ ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265spls.c7", 0x3000000, 0x800000, CRC(31e7aaa3) SHA1(733710493cd885701f5f34078a875bc77ed57442) )
+ ROM_LOAD16_BYTE( "265spls.c8", 0x3000001, 0x800000, CRC(f26a445b) SHA1(3fba6d95c1af77a6fe2e65af39eba0ce3e4134b7) )
+ROM_END
+
+ROM_START( kof2k2spo ) /* [OLD] The King of Fighters 2002 - (kof2k2spo) - Remix by Wesker - (Character special move change - can choose Kusanagi and Rugal 20030830) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265spo.p1", 0x000000, 0x100000, CRC(546b71bb) SHA1(0fb3e5600a5ae07be3d7e736012163b66ab9800e) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2tc ) /* The King of Fighters 2002 - Colour fix by T.Com - (Character colour change - attack spark colour change for Iori and Orochi-Chris) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265tc.p2", 0x100000, 0x400000, CRC(35186b8a) SHA1(d82a4a4d8fbb5a5725166756e11fc4c45b00c0b7) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ul ) /* The King of Fighters 2002 - Remix Ultra by Raymonose - (Character move change 20030515) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ul.p1", 0x000000, 0x100000, CRC(a54ef7f2) SHA1(16623a51f54b598b8fcdcfeda662c5482956df91) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2ule ) /* The King of Fighters 2002 - Remix Ultra by Raymonose - (Character move change - can choose Kusanagi and Rugal - ultra kill start is max - ultra power hack 20030515) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265ule.p1", 0x000000, 0x100000, CRC(7af1ef2e) SHA1(2ede44cf00b3ce23d891b03afd492c1ebdbf5f87) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2wuk ) /* The King of Fighters 2002 - Enhance by Wesker - (Ultra kill style revision max2 - perfect) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265wuk.p1", 0x000000, 0x100000, CRC(4d63b5fb) SHA1(f3409543c8a72a944cf26cdc91252096887835c0) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof2k2xxx )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265xxx.p1", 0x000000, 0x100000, CRC(E8E548B5) SHA1(77e13e4a8ec6031bd956378ab95913f91e35ded4) )
+ //ROM_LOAD16_WORD_SWAP( "265xxx.p2", 0x100000, 0x400000, CRC(5E7866B6) SHA1(da0c9d677f73661856d3ad294dc790fcbd8448d3) )
+ // alternate rom
+ ROM_LOAD16_WORD_SWAP( "265xxx.p2", 0x100000, 0x400000, CRC(51c6d9de) SHA1(e0ff1b78b159cc1afa6ed9b868697687ab3054e8) )
+
+ NEO_SFIX_128K( "265xxx.s1", CRC(0F78A636) SHA1(465d438e7edbb38ae5c29a59d4829a8e10c92321) )
+
+ NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) )
+ ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+
+
+GAME( 2002, kof200215, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2002, ROT0, "hack", "Kof2002 (MAGIC PLUS II)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2002d, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002d, ROT0, "Eolith / Playmore", "Kof2002 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof2002x, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2002, ROT0, "hack", "Kof2002 (Babel ice field remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ath, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Athena hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2b, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Alphax2?", "Kof2002 (Add Char set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2b1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Alphax2?", "Kof2002 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2bd, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2bd, ROT0, "hack", "Kof2002 Challenge to Ultimate Battle (Bootleg, Decrypted)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2bh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Alphax2", "Kof2002 (Add Char set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2bjh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ben Jeremy", "Kof2002 (Diff Moves 031025)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2bjo, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ben Jeremy", "Kof2002 (Diff Moves 031013)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof2k2bl3, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neo Nebuwaks/Ismamj", "Kof2002 BLOOD S.PLUS (BL3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof2k2bl4, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neo Nebuwaks/Ismamj", "Kof2002 BLOOD S.PLUS (BL4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2bld, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 BLOOD PLUS", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2blood2,kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 BLOOD PLUS 2", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2br, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "hack", "Kof2002 (Portuguese set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2br1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "hack", "Kof2002 (Portuguese set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2br2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "hack", "Kof2002 (Portuguese set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2bs, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Kof2002 (Boss Dodowang Hack (red flame))", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2c2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / EGHT", "Kof2002 (3rd Strike of the Orochi)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2cf1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "C6F8", "Kof2002 (Iori p3 and p4 Color Changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2cf2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "C6F8", "Kof2002 (Char color changed - rel.2 030827)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2cf3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "C6F8", "Kof2002 (Char color changed - rel.3 030831)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2cfc, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "C6F8", "Kof2002 (Char color changed - rel.4 031017)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ch, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Coolhot", "Kof2002 (Move rev - Based on CHL and Ricky)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2chl, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "CHL", "Kof2002 (Enhanced gameplay - 030410)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2cl2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "CHL", "Kof2002 (Enhanced gameplay - Rev.2 030413)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2cl3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "CHL", "Kof2002 (Enhanced gameplay - Rev.3 030413)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2cn, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FoxUU / ZUOJIE", "Kof2002 (Chinese Translation by FoxUU & ZUOJIE)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof2k2cori, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ismamj / EGCG / EGHT", "Kof2002 (3rd Strike By IsmaMj)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2dbh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2dbh,ROT0, "Dodowang","Kof2002 (Add Char- MVS timer flaw)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2e1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Kurouri", "Kof2002 (Add Char set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2e2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2e3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ehr, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Ultra kill start max - Style rev. 33%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2er2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Ultra kill start max - Style rev. 66%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2er3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Ultra kill start max - Style rev. 80% 030414)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2er4, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Ultra kill start max - Style rev. 89% 030420)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2erx, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Ultra kill start max - Style rev. xx%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2evo, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jimmyi", "Kof2002 (Evolution)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2evo2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT / EGHT", "Kof2002 (Evolution v1.3, by FCHT/EGHT)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2fy, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Unk", "Kof2002 (Lifebar + K', Vanessa, Iori, Kula and Angel color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2gc, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Lewis67", "Kof2002 (Color changed set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2gc2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Lewis67", "Kof2002 (Color changed set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2gf, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Kumagorou", "Kof2002 (Color changed set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2green, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Green colour hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof2k2ht, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FMG CO", "Kof2002 (HT)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof2k2ibp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ismamj", "Kof2002 (Ice Blue Perfect)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ic1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Fighters Kim", "Kof2002 (Color changed - Attack cremation ice blue - 80%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ic2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Fighters Kim", "Kof2002 (Color changed - Attack cremation ice blue - Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ice, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Fighters Kim", "Kof2002 (Color changed - Attack cremation ice blue)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2jc, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Jui Lee", "Kof2002 (Char color changed for Athena 3P, Kula 3P and Kula 4P)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2js, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason / FCHT", "Kof2002 KOF REMIX ULTRA (v3.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2js2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason / FCHT", "Kof2002 KOF REMIX ULTRA (v3.5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2js4, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "Kof2002 KOF REMIX ULTRA (v2.5 SDM)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof2k2k2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 10th Style", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3o, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030629)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k32, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030725)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k33, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030730)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k34, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030805)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k35, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030815)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k36, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030818)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k37, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030823)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k38, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3","Kof2002 (Moves KOF 98 style - 030824)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k39, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030829)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3a, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3","Kof2002 (Moves KOF 98 style - 030907)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3b, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Moves KOF 98 style - 030908)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3c, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3","Kof2002 (Moves KOF 98 style - 031005)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3d, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3","Kof2002 (Moves KOF 98 style - 031009)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3e, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3","Kof2002 (Moves KOF 98 style - 031016)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2k3f, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Ultra - Add Char - Diff Moves 031202)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k2k3g, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 (Remix Ultra - Add Char - Diff Moves 040418)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2kai, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Boss Hack Kai Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2kc, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "Fighters Kim", "Kof2002 (Color changed set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2kc2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG-EGHT / KOF-ON Team", "Kof2002 (3rd Strike Remixed by Kof ON Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2kk, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Hack Johnkof Remixed by KalcenTin)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2lb, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2lb, ROT0, "LB70", "Kof2002 RETROPOKTER: VER 1.0", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2leon, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (dedicated to Leon9000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2mcr, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neht", "Kof2002 MERRY X'MAS MIX", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2moi2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof2002ex2", "Kof2002 2002EX 2(Magic Orochi Iori 2.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2moir, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof2002 (Retropokter Ver 1.0 - Magic Orochi Iori Remake)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2mp1, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Magic Plus)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof2k2mp3, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ismamj", "Kof2002 (Magic Plus III)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2mpu, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof2002 (Plus)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ngp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Portuguese negative colour)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof2k2nu, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack by BXX", "Kof2002 (Super Black Nude Mix)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2olp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Orochi Leona 97 color style)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2omg, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (hack omg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof2k2omg8, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.8)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof2k2omg9, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.9)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof2k2omg9b, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.9 beta)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2on, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 ONTEAM", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2or, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG-EGHT", "Kof2002 (3rd strike of Orochi)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ori, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Orochi's Iori Remixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ori2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof2002 (Orochi's Iori by (FCHT) - Remixed by NEHT (Set 2))", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2pa, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2dbh,ROT0, "hack", "Kof2002 (Plus (hack 2))", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2pjw, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3 and Wesker", "Kof2002 Plus (Jason/K3 and Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2plb, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2dbh,ROT0, "bootleg", "Kof2002 Plus (set 3, bootleg)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2pr, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Diff Moves 20% - 030607)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2pro, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Diff Moves 20% - 030607 Older?)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2ps2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG-EGHT", "Kof2002 (PS2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2ps2a, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2ps2a, ROT0, "EGHT", "Kof2002 (PlayStation 2 ver 0.4, EGHT hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof2k2ps2mp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG-EGHT", "Kof2002 (PlayStation 2 Beta (Magic Plus))", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2pur, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kawada7278", "Kof2002 (Boss Purple Kawada7278 Hack)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ra, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ruin Angel", "Kof2002 (Diff Moves - Based on CHL set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rgl, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 Magic Unique Crazy Rugal Plus (Kof on Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rm, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Remix 33%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rm1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Remix rev.1 - 66%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rm2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Remix rev.2 - 80% - 030414)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rm3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Remix rev.3 - 89% - 030420)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rm13, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof2002 KOF REMIX ULTRA (1.3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rma, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 KOF REMIX ULTRA (2010-07-23)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rmb, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 KOF REMIX ULTRA", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030430)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr1, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030508)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030508 Boss)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr3, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030509)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr4, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030509 Boss)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr5, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030517)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr6, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - 030610)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr7, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - rev.u)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rr8, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ricky", "Kof2002 (Diff Moves - Based on CHL set 3 - rev.u1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rs, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Slovakia", "Kof2002 (Iori Special Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2rs2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Slovakia", "Kof2002 Super Plus (Ultimate Edition v2.0 by Slovakia)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ru, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Jason/K3", "Kof2002 Remix Ultra v2.5 (Add Char - Diff Moves ultra rev - 040820)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2rw, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Wesker", "Kof2002 (Add Char - Diff Moves - 0310xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2sb, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Streetboy", "Kof2002 (Diff Moves - Based on CHL set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2se2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char - Ultra kill start max - Ultra pow hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2seh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char - Ultra kill start max - Ultra pow hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof2k2sm, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maitry Maker", "Kof2002 (Super Mix)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2smf, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team/Abbas", "Kof2002 (SMF)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2smg, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker/Abbas", "Kof2002 (SMG by Abbas)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2smg2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arn", "Kof2002 (Recompilation of SMG by Arn)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2soi, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ACM1PT", "Kof2002 Super Orochi Iori (by ADM1PT)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2sp, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Wesker", "Kof2002 (Add Char - Special move change)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2spl, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NeHt", "Kof2002 Super Plus (Ultimate Edition by NeHt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2spls, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "JasonK, Danpaji1, Marcochen", "Kof2002 Super Plus (JasonK, Danpaji1, Marcochen)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k2spo, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Wesker", "Kof2002 (Add Char - Special move change Old 030830)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2tc, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "T.Com", "Kof2002 (Char color changed - Attack spark color changed for Iori and Orochi-Chris)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ul, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Diff Moves 030515)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2ule, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Raymonose", "Kof2002 (Add Char - Diff Move - Ultra kill start max - Ultra pow hack 030515)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2wuk, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Wesker", "Kof2002 (Ultra kill style - rev max2 - perfect)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof2k2xxx, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Peggy / Kim", "Kof2002 (Perfect revised edition)", MACHINE_SUPPORTS_SAVE )
+///GAME( 2002, kof2002d, kof2002, neogeo_noslot, neogeo, neogeo_state, kof2002d, ROT0, "hack", "Kof2002 (NGM-2650)(NGH-2650) (decrypted C)", MACHINE_SUPPORTS_SAVE )
+///GAME( 2002, kf2k2plb, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k2pls, ROT0, "bootleg", "Kof2002 Plus (set 3, bootleg / hack)", MACHINE_SUPPORTS_SAVE )
+///GAME( 2002, kf2k2plc, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k2plc, ROT0, "bootleg", "Kof2002 Super (set 4, bootleg / hack)", MACHINE_SUPPORTS_SAVE ) \ No newline at end of file
diff --git a/docs/release/src/hbmame/drivers/kof2003.cpp b/docs/release/src/hbmame/drivers/kof2003.cpp
new file mode 100644
index 00000000000..887f59f239b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof2003.cpp
@@ -0,0 +1,753 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2003b ) // hacks of kf2k3bl
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->kf2k3bl_install_protection(m_maincpu, m_banked_cart, cpuregion, cpuregion_size);
+
+ // decrypt m1 if needed
+ if (memregion("audiocrypt"))
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // decrypt v roms if needed
+ u8 *ram = memregion("ymsnd")->base();
+ if (ram[0x91] != 0x33)
+ {
+ //printf("ym=%X\n",ram[0x91]);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ }
+
+ // decrypt c roms if needed
+ ram = memregion("sprites")->base();
+ if (ram[0] != 0)
+ {
+ //printf("Sprites=%X\n",ram[0]);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ }
+
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size, 1);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2003hb ) // hacks of kof2003
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2; // for those sets with 512k of s1
+
+ // decrypt p roms if needed
+ u8 *ram = memregion("maincpu")->base();
+ if (ram[0x100] != 0x45)
+ {
+ //printf("Maincpu=%X\n",ram[0x100]);fflush(stdout);
+ m_pvc_prot->kof2003_decrypt_68k(cpuregion, cpuregion_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+ }
+
+ // decrypt m1 if needed
+ if (memregion("audiocrypt"))
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // decrypt v roms if needed
+ ram = memregion("ymsnd")->base();
+ if (ram[0x91] != 0x33)
+ {
+ //printf("ym=%X\n",ram[0x91]);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ }
+
+ // decrypt c roms if needed
+ ram = memregion("sprites")->base();
+ if (ram[0] != 0)
+ {
+ //printf("Sprites=%X\n",ram[0]);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ }
+
+ // if no s rom, copy info from end of c roms
+ ram = memregion("fixed")->base();
+ if (ram[0x100] == 0)
+ {
+ //printf("Fixed1=%X\n",ram[0x100]);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ }
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k3hd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_pvc_prot->kof2003h_decrypt_68k(cpuregion, cpuregion_size); // different to kof2k3d
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof2k3pcd ) // decrypted C & decrypted Bios
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_pvc_prot->kf2k3pcb_decrypt_68k(cpuregion, cpuregion_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // Extra m1 decryption
+ uint8_t* rom = memregion("audiocpu")->base();
+ for (int i = 0; i < 0x90000; i++)
+ rom[i] = BITSWAP8(rom[i], 5, 6, 1, 4, 3, 0, 7, 2);
+
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_sma_prot->kf2k3pcb_decrypt_s1data(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_maincpu->space(AS_PROGRAM).install_rom(0xc00000, 0xc7ffff, 0x080000, memregion("mainbios")->base()); // 512k bios
+}
+
+
+
+ROM_START( kof2003d )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271d.p0", 0x000000, 0x100000, CRC(7c2aee16) SHA1(b4373569c4a26829a93759ba6917879518f2fb20) )
+ ROM_LOAD16_WORD_SWAP( "271b.p1", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
+ ROM_LOAD16_WORD_SWAP( "271d.p2", 0x500000, 0x200000, CRC(0d0a5861) SHA1(823dd3d11574a42f98588a6d1f9bb5d721f34be2) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.m1", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271d.c7", 0x3000000, 0x800000, CRC(8ee6b43c) SHA1(c78b749c7c8e1d8ab8335b96da03764cc8e9eb21) )
+ ROM_LOAD16_BYTE( "271d.c8", 0x3000001, 0x800000, CRC(6d8d2d60) SHA1(841698eead0f7d422937ce2f2329e17c383d90a6) )
+ROM_END
+
+ROM_START( kof2003f )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271f.p1", 0x000000, 0x400000, CRC(d29a0d06) SHA1(a5ba68ceac0b4bceb0c37d65844d96835eb244e4) )
+ ROM_LOAD16_WORD_SWAP( "271f.p2", 0x400000, 0x400000, CRC(95477dd4) SHA1(3a57befa3e0772b2989ba5b76afd95f3aed1936b) )
+
+ NEO_SFIX_128K( "271f.s1", CRC(7c7829aa) SHA1(22f8d38d1d0891295d0593741d9477fbe6b4f48c) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271f.v1", 0x000000, 0x1000000, CRC(2964f36e) SHA1(bfc52f81354eb57e27acb3b80fe1547b9e070293) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271pcd.c1", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) )
+ ROM_LOAD16_BYTE( "271pcd.c2", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) )
+ ROM_LOAD16_BYTE( "271pcd.c3", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) )
+ ROM_LOAD16_BYTE( "271pcd.c4", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) )
+ ROM_LOAD16_BYTE( "271pcd.c5", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) )
+ ROM_LOAD16_BYTE( "271pcd.c6", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) )
+ROM_END
+
+ROM_START( kof2003rebh ) // no watchdog
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271rebh.p1", 0x000000, 0x800000, CRC(cd7c9f42) SHA1(d99f25a0d7c640c8594aef25e818ee017845de90) )
+
+ NEO_SFIX_128K( "271rebh.s1", CRC(e146f5cc) SHA1(1ca3e36ec87b40c8eaa7c92d1bf7a066fdb0b26c) )
+
+ NEO_BIOS_AUDIO_128K( "271rebh.m1", CRC(396e17cd) SHA1(b2962aef711883402e67fcfb475265abe68e2cba) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3b ) /* The King of Fighters 2003 BOOTLEG - (kof2k3b) - Hack by Gledson01 - (Can choose Kusanagi, Chizuru, Maki, Mukai and Adelheid) */
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271b.p1", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
+ ROM_LOAD16_WORD_SWAP( "271b.p2", 0x500000, 0x200000, CRC(fb01a5b3) SHA1(3c8e92362f8169f5e64d6e1d1fea41edd2e7a6a3) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3bl2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271bl2.p1", 0x100000, 0x400000, CRC(8383c34b) SHA1(62cdc1d37e9b7385d83dda2e17fea6c0a16fee83) )
+ ROM_LOAD16_WORD_SWAP( "271bl2.p2", 0x500000, 0x200000, CRC(7ba616fe) SHA1(c613a5eb7db5dbfb58e9ccb7f46b948ed095b4a4) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271bl2.s1", CRC(c125df44) SHA1(9294a4da63fdbcd7dbac7a625d65c44884687eeb) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.m1", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kof2k3br )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271br.p1", 0x000000, 0x800000, CRC(a131786e) SHA1(3754e6361063221138c95c52a3edb3e88a74048a) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271br.c7", 0x3000000, 0x800000, CRC(f3d81b6e) SHA1(62bf0c9d1d9f7a016d125df64c8328e01e003e43) )
+ ROM_LOAD16_BYTE( "271br.c8", 0x3000001, 0x800000, CRC(5310c6dc) SHA1(e9cb89392fa5604d3ac3ba58acdb1b739d1267be) )
+ROM_END
+
+ROM_START( kof2k3bs1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271bs1.p1", 0x000000, 0x800000, CRC(54f55bad) SHA1(b5005d6d8b6a6855fd5d244cc68774f8372fe5d4) )
+
+ NEO_SFIX_128K( "271bs1.s1", CRC(8b176a55) SHA1(600a0c9c2e5b17dc2c345756d71a08a9c4a3f26e) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271bs1.v1", 0x000000, 0x800000, CRC(dd6c6a85) SHA1(e32b16d0b716a4f3b95868457347303d020147fb) )
+ ROM_LOAD( "271bs1.v2", 0x800000, 0x800000, CRC(0e84f8c1) SHA1(28c964fe89c800b445d3a65c965de32b4e504726) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271bs1.c7", 0x3000000, 0x800000, CRC(0ff993d7) SHA1(c7d6ce90b84d566dcee85dba5591f8f394fcf032) )
+ ROM_LOAD16_BYTE( "271bs1.c8", 0x3000001, 0x800000, CRC(22e36002) SHA1(bb3a9e1ded0af2db058cfbe773ed5c1a1b4e888a) )
+ROM_END
+
+ROM_START( kof2k3bs2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271bs2.p1", 0x000000, 0x800000, CRC(d49993ec) SHA1(71454cd40715799b10fb21864507b7864917c1ad) )
+
+ NEO_SFIX_128K( "271bs1.s1", CRC(8b176a55) SHA1(600a0c9c2e5b17dc2c345756d71a08a9c4a3f26e) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271bs1.v1", 0x000000, 0x800000, CRC(dd6c6a85) SHA1(e32b16d0b716a4f3b95868457347303d020147fb) )
+ ROM_LOAD( "271bs1.v2", 0x800000, 0x800000, CRC(0e84f8c1) SHA1(28c964fe89c800b445d3a65c965de32b4e504726) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271bs1.c7", 0x3000000, 0x800000, CRC(0ff993d7) SHA1(c7d6ce90b84d566dcee85dba5591f8f394fcf032) )
+ ROM_LOAD16_BYTE( "271bs1.c8", 0x3000001, 0x800000, CRC(22e36002) SHA1(bb3a9e1ded0af2db058cfbe773ed5c1a1b4e888a) )
+ROM_END
+
+ROM_START( kof2k3bs3 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271bs3.p1", 0x000000, 0x800000, CRC(16a09744) SHA1(dbdb7700fc7244ce295044eb0b473914749959d9) )
+
+ NEO_SFIX_128K( "271bs1.s1", CRC(8b176a55) SHA1(600a0c9c2e5b17dc2c345756d71a08a9c4a3f26e) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271bs1.v1", 0x000000, 0x800000, CRC(dd6c6a85) SHA1(e32b16d0b716a4f3b95868457347303d020147fb) )
+ ROM_LOAD( "271bs1.v2", 0x800000, 0x800000, CRC(0e84f8c1) SHA1(28c964fe89c800b445d3a65c965de32b4e504726) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271bs1.c7", 0x3000000, 0x800000, CRC(0ff993d7) SHA1(c7d6ce90b84d566dcee85dba5591f8f394fcf032) )
+ ROM_LOAD16_BYTE( "271bs1.c8", 0x3000001, 0x800000, CRC(22e36002) SHA1(bb3a9e1ded0af2db058cfbe773ed5c1a1b4e888a) )
+ROM_END
+
+ROM_START( kof2k3bs4 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271bs4.p1", 0x000000, 0x800000, CRC(536d02e7) SHA1(5432c79d3808da3bbf47521a0e2f0ed3f9e7a435) )
+
+ NEO_SFIX_128K( "271bs1.s1", CRC(8b176a55) SHA1(600a0c9c2e5b17dc2c345756d71a08a9c4a3f26e) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271bs1.v1", 0x000000, 0x800000, CRC(dd6c6a85) SHA1(e32b16d0b716a4f3b95868457347303d020147fb) )
+ ROM_LOAD( "271bs1.v2", 0x800000, 0x800000, CRC(0e84f8c1) SHA1(28c964fe89c800b445d3a65c965de32b4e504726) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271bs1.c7", 0x3000000, 0x800000, CRC(0ff993d7) SHA1(c7d6ce90b84d566dcee85dba5591f8f394fcf032) )
+ ROM_LOAD16_BYTE( "271bs1.c8", 0x3000001, 0x800000, CRC(22e36002) SHA1(bb3a9e1ded0af2db058cfbe773ed5c1a1b4e888a) )
+ROM_END
+
+ROM_START( kof2k3d )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1c.p1", 0x000000, 0x400000, CRC(530ecc14) SHA1(812cf7e9902af3f5e9e330b7c05c2171b139ad2b) )
+ ROM_LOAD32_WORD_SWAP( "271-p2c.p2", 0x000002, 0x400000, CRC(fd568da9) SHA1(46364906a1e81dc251117e91a1a7b43af1373ada) )
+ ROM_LOAD16_WORD_SWAP( "271-p3c.p3", 0x800000, 0x100000, CRC(aec5b4a9) SHA1(74087f785590eda5898ce146029818f86ced42b6) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.m1", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271d.c7", 0x3000000, 0x800000, CRC(8ee6b43c) SHA1(c78b749c7c8e1d8ab8335b96da03764cc8e9eb21) )
+ ROM_LOAD16_BYTE( "271d.c8", 0x3000001, 0x800000, CRC(6d8d2d60) SHA1(841698eead0f7d422937ce2f2329e17c383d90a6) )
+ROM_END
+
+ROM_START( kof2k3evo )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271evo.p1", 0x000000, 0x800000, CRC(ce221039) SHA1(755feabb4a3b2b02f72bd2747b13051fe3d0116c) )
+
+ NEO_SFIX_128K( "271evo.s1", CRC(2849fbfb) SHA1(1c46decf77c9802589bbd445344f6e3b9e82afd2) )
+
+ NEO_BIOS_AUDIO_128K( "271rebh.m1", CRC(396e17cd) SHA1(b2962aef711883402e67fcfb475265abe68e2cba) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3gc ) /* The King of Fighters 2003 BOOTLEG - (kof2k3gc) - Colour fix by Gledson01 - (Character colour change for Terry (4P), Athena (3P), Ash (3P), Leona (3P), K' (4P) and King (2P) ) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271gc.p1", 0x100000, 0x400000, CRC(ba621186) SHA1(061e072fb5baaf8454f362a9a81bf51a324cc73d) )
+ ROM_LOAD16_WORD_SWAP( "271gc.p2", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3hd ) // decrypted version of kof2003h
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1k.p1", 0x000000, 0x400000, CRC(d0d0ae3e) SHA1(538d054ac50c91694fbbfefcce548b063713e14e) )
+ ROM_LOAD32_WORD_SWAP( "271-p2k.p2", 0x000002, 0x400000, CRC(fb3f79d9) SHA1(f253d10e732d6e23ae82d74ac9269d21f69ddb4d) )
+ ROM_LOAD16_WORD_SWAP( "271-p3k.p3", 0x800000, 0x100000, CRC(232702ad) SHA1(6045046027dac1cbd4cbd14b5c1ece522bc6197f) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1k.m1", CRC(48d9affe) SHA1(68f01560b91bbada39001ce01bdeeed5c9bb29f2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271d.c7", 0x3000000, 0x800000, CRC(8ee6b43c) SHA1(c78b749c7c8e1d8ab8335b96da03764cc8e9eb21) )
+ ROM_LOAD16_BYTE( "271d.c8", 0x3000001, 0x800000, CRC(6d8d2d60) SHA1(841698eead0f7d422937ce2f2329e17c383d90a6) )
+ROM_END
+
+ROM_START( kof2k3nd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271nd.p1", 0x000000, 0x800000, CRC(11624854) SHA1(a7488a0f5d731656aa82cc51282adcfe6ad9f658) )
+
+ NEO_SFIX_128K( "271nrx.s1", CRC(df422440) SHA1(ed84dfd6cc5a73f3ef35db6616bcc3b45754aa4d) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271f.v1", 0x000000, 0x1000000, CRC(2964f36e) SHA1(bfc52f81354eb57e27acb3b80fe1547b9e070293) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3nrx ) // first ever kof2003 set to run on an emulator (in this case, a special version of NeorageX)
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271nrx.p1", 0x000000, 0x800000, CRC(57a1981d) SHA1(0bc21c09c127e9abb3b03924166c0065ddec2057) )
+
+ NEO_SFIX_128K( "271nrx.s1", CRC(df422440) SHA1(ed84dfd6cc5a73f3ef35db6616bcc3b45754aa4d) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271nrx.v1", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271pcd.c1", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) )
+ ROM_LOAD16_BYTE( "271pcd.c2", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) )
+ ROM_LOAD16_BYTE( "271pcd.c3", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) )
+ ROM_LOAD16_BYTE( "271pcd.c4", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) )
+ROM_END
+
+ROM_START( kof2k3pcd )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1.p1", 0x000000, 0x400000, CRC(b9da070c) SHA1(1a26325af142a4dd221c336061761468598c4634) )
+ ROM_LOAD32_WORD_SWAP( "271-p2.p2", 0x000002, 0x400000, CRC(da3118c4) SHA1(582e4f44f03276adecb7b2848d3b96bf6da57f1e) )
+ ROM_LOAD16_WORD_SWAP( "271-p3.p3", 0x800000, 0x100000, CRC(5cefd0d2) SHA1(cddc3164629fed4b6f715e12b109ad35d1009355) )
+
+ ROM_Y_ZOOM
+ ROM_REGION( 0x100000, "fixed", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "271pcd.sp1", 0x00000, 0x080000, CRC(e873f1ef) SHA1(e7f7a6084b9d7f4b4f8819ea0fd115b1f2cac2c2) )
+
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "271-m1.m1", 0x00000, 0x80000, CRC(d6bcf2bc) SHA1(df78bc95990eb8e8f3638dde6e1876354df7fe84) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1.v1", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271pcd.c1", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) )
+ ROM_LOAD16_BYTE( "271pcd.c2", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) )
+ ROM_LOAD16_BYTE( "271pcd.c3", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) )
+ ROM_LOAD16_BYTE( "271pcd.c4", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) )
+ ROM_LOAD16_BYTE( "271pcd.c5", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) )
+ ROM_LOAD16_BYTE( "271pcd.c6", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) )
+ROM_END
+
+ROM_START( kof2k3pch )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271pch.p1", 0x000000, 0x400000, CRC(f2be8247) SHA1(50ce38027cca73420cd864681de6149c9ce69041) )
+ ROM_LOAD32_WORD_SWAP( "271pch.p2", 0x000002, 0x400000, CRC(56316905) SHA1(ce9bb7d872e44fcc887d08a5faa7a355a88f0830) )
+ ROM_LOAD16_WORD_SWAP( "271pch.p3", 0x800000, 0x100000, CRC(d9750d7b) SHA1(c5016de367800d3b0b277eff1da788209910cd82) )
+
+ ROM_Y_ZOOM
+ ROM_REGION( 0x100000, "fixed", ROMREGION_ERASE00 )
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "spj.sp1", 0x00000, 0x080000, CRC(148dd727) SHA1(2cf592a16c7157de02a989675d47965f2b3a44dd) )
+
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "271-m1.m1", 0x00000, 0x80000, CRC(d6bcf2bc) SHA1(df78bc95990eb8e8f3638dde6e1876354df7fe84) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1.v1", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD32_WORD( "271-c1.c1", 0x0000000, 0x1000000, CRC(f5ebb327) SHA1(e4f799a54b09adcca13b1b0cf95971a1f4291b61) )
+ ROM_LOAD32_WORD( "271-c2.c2", 0x0000002, 0x1000000, CRC(2be21620) SHA1(872c658f53bbc558e90f18d5db9cbaa82e748a6a) )
+ ROM_LOAD32_WORD( "271-c3.c3", 0x2000000, 0x1000000, CRC(ddded4ff) SHA1(ff7b356125bc9e6637b164f5e81b13eabeb8d804) )
+ ROM_LOAD32_WORD( "271-c4.c4", 0x2000002, 0x1000000, CRC(d85521e6) SHA1(62278fa8690972ed32aca07a4f7f97e7203d9f3a) )
+ ROM_LOAD32_WORD( "271pch.c5", 0x4000000, 0x1000000, CRC(eadc4839) SHA1(f831d71c0f60556909a0aa918e0552a3cabb8b13) )
+ ROM_LOAD32_WORD( "271pch.c6", 0x4000002, 0x1000000, CRC(d873e0dd) SHA1(725421b1cb5578e3fa6488f2783369789b6a4f2e) )
+ROM_END
+
+ROM_START( kof2k3ps2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271ps2.p1", 0x000000, 0x800000, CRC(8e66056d) SHA1(8ddbbf66bdcefbae15e9c0597aea846bbcfccadd) )
+
+ NEO_SFIX_128K( "271ps2.s1", CRC(c2e48e98) SHA1(8734c3d1c936aff3d7d1f460b5d211e25a816cc5) )
+
+ NEO_BIOS_AUDIO_512K( "271ps2.m1", CRC(4374cb5c) SHA1(d245a09fcebc8fe59f4af2de2fc30a0871e56d68) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271bs1.v1", 0x000000, 0x800000, CRC(dd6c6a85) SHA1(e32b16d0b716a4f3b95868457347303d020147fb) )
+ ROM_LOAD( "271bs1.v2", 0x800000, 0x800000, CRC(0e84f8c1) SHA1(28c964fe89c800b445d3a65c965de32b4e504726) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271bs1.c7", 0x3000000, 0x800000, CRC(0ff993d7) SHA1(c7d6ce90b84d566dcee85dba5591f8f394fcf032) )
+ ROM_LOAD16_BYTE( "271bs1.c8", 0x3000001, 0x800000, CRC(22e36002) SHA1(bb3a9e1ded0af2db058cfbe773ed5c1a1b4e888a) )
+ROM_END
+
+ROM_START( kof2k3ps3 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271ps3.p1", 0x000000, 0x800000, CRC(65a5e73d) SHA1(eec26ceedf67ee3ff0b6b192a7cb2978353c3bc3) )
+
+ NEO_SFIX_128K( "271ps2.s1", CRC(c2e48e98) SHA1(8734c3d1c936aff3d7d1f460b5d211e25a816cc5) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271f.v1", 0x000000, 0x1000000, CRC(2964f36e) SHA1(bfc52f81354eb57e27acb3b80fe1547b9e070293) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271ps3.c7", 0x3000000, 0x800000, CRC(18742a1e) SHA1(2a822c2a0698f7301e3d395fb9366593a64fbffe) )
+ ROM_LOAD16_BYTE( "271ps3.c8", 0x3000001, 0x800000, CRC(aa921e8e) SHA1(0c4d7fff4843d4d3498649b9de5bebfb67fe5312) )
+ROM_END
+
+ROM_START( kof2k3ryu )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271ryu.p1", 0x000000, 0x800000, CRC(0e82da28) SHA1(61fd4cf63f804752095f47450e4aac10672bd53f) )
+
+ NEO_SFIX_128K( "271ryu.s1", CRC(d05be6db) SHA1(a523e6b7b8f07e6636043d13626a2286c79de930) )
+
+ NEO_BIOS_AUDIO_512K( "271br.m1", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271f.v1", 0x000000, 0x1000000, CRC(2964f36e) SHA1(bfc52f81354eb57e27acb3b80fe1547b9e070293) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271pcd.c1", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) )
+ ROM_LOAD16_BYTE( "271pcd.c2", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) )
+ ROM_LOAD16_BYTE( "271pcd.c3", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) )
+ ROM_LOAD16_BYTE( "271pcd.c4", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) )
+ ROM_LOAD16_BYTE( "271pcd.c5", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) )
+ ROM_LOAD16_BYTE( "271pcd.c6", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) )
+ROM_END
+
+ROM_START( kof2k3sc ) /* The King of Fighters 2003 BOOTLEG - (kof2k3sc) - Colour fix by SHIPDS - (Colour change) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271sc.p1", 0x100000, 0x400000, CRC(ef4ee94e) SHA1(f3b8b9e7279dfc4c04dc5971c323134d8db3b42c) )
+ ROM_LOAD16_WORD_SWAP( "271gc.p2", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3ss )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271ss.p1", 0x100000, 0x400000, CRC(3b6ce72b) SHA1(9c44a4adb993a8fa63fc44b29ca0bfe8a166e049) )
+ ROM_LOAD16_WORD_SWAP( "271gc.p2", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kof2k3tc ) /* The King of Fighters 2003 BOOTLEG - (kof2k3tc) - Colour fix by T.Com - (Character colour change for Kyo (2P/4P), DUOLON (4P), K' (4P) ) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271tc.p1", 0x100000, 0x400000, CRC(0d1a1da9) SHA1(0ba0d11c3bb3c30bc95f9aae181769ea874da096) )
+ ROM_LOAD16_WORD_SWAP( "271gc.p2", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+ROM_START( kof2k3zgf ) /* The King of Fighters 2003 BOOTLEG - (kof2k3zgf) - Colour fix by Zhaolu94 - (Attack cremation green) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "271zgf.p1", 0x100000, 0x400000, CRC(9a76d66f) SHA1(4697b521105759d135f859e47940e3696f49506b) )
+ ROM_LOAD16_WORD_SWAP( "271gc.p2", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_IGNORE( 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "271b.s1", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "271b.m1", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "271b.v1", 0x000000, 0x400000, CRC(d2b8aa5e) SHA1(498f0556c1de56822141f8043f1ce20444f4ed0a) )
+ ROM_LOAD( "271b.v2", 0x400000, 0x400000, CRC(71956ee2) SHA1(a890941e60db358cf45b58909f4719f4826f3bb1) )
+ ROM_LOAD( "271b.v3", 0x800000, 0x400000, CRC(ddbbb199) SHA1(0eea4b064bdb8daa03c354fe0a0aa27c4c665bda) )
+ ROM_LOAD( "271b.v4", 0xc00000, 0x400000, CRC(01b90c4f) SHA1(387164aa1995d8c11ed939b3afbc294d86d2e27f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "271b.c1", 0x0000000, 0x800000, CRC(e42fc226) SHA1(1cd9364993e141facdcdd53ec2277df7b275d8a7) )
+ ROM_LOAD16_BYTE( "271b.c2", 0x0000001, 0x800000, CRC(1b5e3b58) SHA1(0eb254477a9479541291e43e415310852a0f0bed) )
+ ROM_LOAD16_BYTE( "271b.c3", 0x1000000, 0x800000, CRC(d334fdd9) SHA1(1efe30b4f56a55e25ab518cf6999de797b5e407c) )
+ ROM_LOAD16_BYTE( "271b.c4", 0x1000001, 0x800000, CRC(0d457699) SHA1(ec73d0c9fc7094d0ac6c0986a6e07cde25893e57) )
+ ROM_LOAD16_BYTE( "271b.c5", 0x2000000, 0x800000, CRC(8a91aae4) SHA1(802f4baacf801646be1ef686e105b2e867a6a5df) )
+ ROM_LOAD16_BYTE( "271b.c6", 0x2000001, 0x800000, CRC(9f8674b8) SHA1(65964f40b2227d020023fb436579927e65807dcd) )
+ ROM_LOAD16_BYTE( "271b.c7", 0x3000000, 0x800000, CRC(374ea523) SHA1(613827d72c6181f3e08353750c9af0c4dbad020b) )
+ ROM_LOAD16_BYTE( "271b.c8", 0x3000001, 0x800000, CRC(75211f4d) SHA1(d82f044e816ee539ff131d9c931200c818d34cd0) )
+ROM_END
+
+
+
+GAME( 2003, kof2003d, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003hb, ROT0, "hack", "Kof2003 (Decrypted P&C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2003f, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2003 Original (Fully Decrypted - Fixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2003rebh,kof2003, no_watchdog, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2003 (hack rebh)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3b, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "Gledson01", "Kof2003 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3bl2, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "hack", "Kof2003 (Bootleg Boss hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3br, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003hb, ROT0, "Neogeo BR team", "Kof2003 Portuguese Brazilian Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3bs1, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (Boss PS2 EGCG/FCHT Hack Set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3bs2, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (Boss PS2 EGCG/FCHT Hack Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3bs3, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (Boss PS2 EGCG/FCHT Hack Set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3bs4, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (Boss PS2 EGCG/FCHT Hack Set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3d, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003hb, ROT0, "hack", "Kof2003 (NGM-2710)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3evo, kof2003, no_watchdog, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2003 (Evolution 1.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3gc, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "Gledson01", "Kof2003 (Char color changed for Terry (4P), Athena (3P), Ash (3P), Leona (3P), K' (4P) and King (2P) )", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3hd, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2k3hd, ROT0, "hack", "Kof2003 (NGH-2710)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3nd, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2003 (Fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3nrx, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2003 (Neoragex)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3pcd, kf2k3pcb, neogeo_noslot, neogeo, neogeo_hbmame, kof2k3pcd, ROT0, "hack", "Kof2003 (Japan, JAMMA PCB / decrypted C&Bios)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3pch, kf2k3pcb, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3pcb, ROT0, "ZKW", "Kof2003 (Boss hack remixed by ZKW japan jamma pcb)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof2k3ps2, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (PS2 2008-03-03 beta 1.0 (EGCG/FCHT))", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof2k3ps3, kof2003, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG / FCHT", "Kof2003 (PS2 2008-10-31 (EGCG/FCHT))", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3ryu, kof2003, no_watchdog, neogeo, neogeo_state, neogeo, ROT0, "Iori Yagami", "Kof2003 (Ryu Hack by Iori Yagami)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3sc, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "SHIPDS", "Kof2003 (Color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3ss, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "hack", "Kof2003 (Silver Style Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3tc, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "T.Com", "Kof2003 (Char color changed for Kyo (2P/4P), DUOLON (4P), K' (4P) )", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2k3zgf, kof2003, neogeo_noslot, neogeo, neogeo_hbmame, kof2003b, ROT0, "Zhaolu94", "Kof2003 (Attack cremation green)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof94.cpp b/docs/release/src/hbmame/drivers/kof94.cpp
new file mode 100644
index 00000000000..ed9ca485630
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof94.cpp
@@ -0,0 +1,476 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+ROM_START( kof94b ) /* The King of Fighters '94 - Hack by Ydmis - (Can choose Rugal) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055b.p1", 0x100000, 0x100000, CRC(c4c1b20a) SHA1(963befa89ea08104cae0e195f9ed6b153af67f9c) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94bc )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055bc.p1", 0x100000, 0x100000, CRC(67ea805b) SHA1(56575a538dc030ce081c4ec98ac3f8fd3e97ad59) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94blk )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055blk.p1", 0x100000, 0x100000, CRC(b1107150) SHA1(b85edff511eb7d04c3c4a1f83f522e187033a130) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94br )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055br.p1", 0x100000, 0x100000, CRC(0138a992) SHA1(48c857ed371de236861d172552e3b5bf38def776) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055br.c1", 0x000000, 0x200000, CRC(6fb14154) SHA1(bdc0e1933b9e903a69a2303c2e0e4243d3e1c95e) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94cg )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055cg.p1", 0x100000, 0x100000, CRC(d96b311e) SHA1(3879c3794a1cd156b73cb25d8584ee2717d1cbb7) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94cn ) // some chinese text on player select screen
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055-p1.p1", 0x100000, 0x100000, CRC(f10a2042) SHA1(d08a3f3c28be4b1793de7d362456281329fe1828) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055cn.s1", CRC(80eeeaf6) SHA1(cfeb8cce91798f80f022c490cc983b67310da454) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94cyk )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055cyk.p1", 0x100000, 0x100000, CRC(c66acf73) SHA1(a0fd5281362b00fe6891a6313c85c21e6c2a5d91) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94eh ) /* The King of Fighters '94 - Enhance by Ydmis - (Can choose Rugal - power hack ABC) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055eh.p1", 0x100000, 0x100000, CRC(255487ea) SHA1(49e26566b52cd8588b5e34d1c9a5d6803d3e809e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94h )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ // rom missing
+ ROM_LOAD16_WORD_SWAP( "055h.p1", 0x100000, 0x100000, CRC(2b0bc82d) SHA1(131906f00ed3c5854e251518c3074b3c19cb23d5) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94k )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055k.p1", 0x100000, 0x100000, CRC(7dff8b81) SHA1(86198059a921cb97646e2e39bf842e7b291c83a2) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055k.c1", 0x000000, 0x200000, CRC(fcf9ac7c) SHA1(3ff7d34264188764f411168ef0aa2ad6174c2289) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94kh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055kh.p1", 0x100000, 0x100000, CRC(dbecb405) SHA1(1829ce3dfce5e7fff115a0a71588613b75fed879) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055kh.c1", 0x000000, 0x200000, CRC(bf987727) SHA1(d77dcc0f83e80d9b55a62269e13cc6e29c59c8f1) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94qaq )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055qaq.p1", 0x100000, 0x100000, CRC(c3dbc23e) SHA1(91cfd1e95df87ce2cff213bc4a0c846231c3cebd) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94ru ) /* The King of Fighters '94 - Remix Ultra by Jason/K3 - (Character move change ultra revision v1.0) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055ru.p1", 0x100000, 0x100000, CRC(DA5FA694) SHA1(9E937556F821477F6538A0785DF377A2DEA2831A) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94ruj ) // Remix Ultra 1.0 by JasonK3
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055ruj.p1", 0x100000, 0x100000, CRC(29c916b2) SHA1(6057aea20398e7e4849cf5bac942a02e244893d2) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94rz ) // Hack Boss Remixed by ZKW
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055rz.p1", 0x100000, 0x100000, CRC(38410fdf) SHA1(e4053b41afd8c8934b7b2977df6d64d8b6338370) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055rz.s1", CRC(286ab67d) SHA1(c414c1543d13097c49090e46c474c5dd3c524c9c) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94seh ) /* The King of Fighters '94 - Super Enhance Hack by Creamymami and Ydmis - (Can choose Rugal - ultra power hack ABC) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055seh.p1", 0x100000, 0x100000, CRC(3b29945c) SHA1(bac514690165a07886fce08680a26d75487f896c) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94sri ) // Super Remixed By IsmaMj
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055sri.p1", 0x100000, 0x100000, CRC(c689c85b) SHA1(00661821128225e0d5264d4b1e09fbc32bbe7ed9) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+ROM_START( kof94y ) // Hack Boss By Ydmis
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055y.p1", 0x100000, 0x100000, CRC(3757022c) SHA1(2da01b9304cf470d8718f70e37ee448f1b31c864) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+
+
+GAME( 1994, kof94b, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'94 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94bc, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'94 (Boss Colour Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94blk, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'94 (Boss Fix Black Xtreme 0.8)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof94br, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neogeo BR team", "Kof'94 (Portuguese Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94cg, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'94 (Colour Patch)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94cn, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'94 (Chinese Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94cyk, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji & Kawada7278", "Kof'94 (Hack Boss and Color)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94eh, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'94 (Add Char - Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94h, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "Kof'94 Remix Ultra", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94k, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'94 (Korean Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94kh, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'94 (Korean Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94qaq, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xuyongsheng90", "Kof'94 (Power Enhanced hack by Xuyongsheng90)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94ru, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3", "Kof'94 KOF REMIX ULTRA (v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94ruj, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3", "Kof'94 KOF REMIX ULTRA (1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94rz, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Kof'94 (Hack Boss Remixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94seh, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Kof'94 (Add Char - Ultra pow hack ABC)", MACHINE_SUPPORTS_SAVE ) // Rugal
+GAME( 1994, kof94sri, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'94 KOF REMIX ULTRA (Super Remixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94y, kof94, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'94 (Hack Boss)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof95.cpp b/docs/release/src/hbmame/drivers/kof95.cpp
new file mode 100644
index 00000000000..258a219e74d
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof95.cpp
@@ -0,0 +1,369 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+ROM_START( kof95b ) /* The King of Fighters '95 - Hack by UNKNOWN - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084b.p1", 0x100000, 0x100000, CRC(64d9aa39) SHA1(2f1f1adf33e4944bd4d1ae913bb48c73a97d6ea2) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95bln ) // Boss - Like NeogeoCD Version (Eddids hack)
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084bln.p1", 0x100000, 0x100000, CRC(66f5db66) SHA1(742c8e1d8f6135004bd025ecccc0c61e14368d54) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95brz ) // Boss Remixed by ZKW
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084brz.p1",0x100000, 0x100000, CRC(754261d7) SHA1(195d10c0748b1d4607e6ca2297c59893e978fc58) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084brz.s1", CRC(4b7e9b31) SHA1(32d29be92881879ef5ce6ad74dc8640e6f70346e) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) ) /* TC531001 */
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) ) /* TC5332201 */
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) ) /* TC5316200 */
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) ) /* TC538200 */
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) ) /* Plane 0,1 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) ) /* Plane 2,3 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) ) /* Plane 0,1 */ /* TC5316200 */
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) ) /* Plane 2,3 */ /* TC5316200 */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) ) /* Plane 0,1 */ /* TC538200 */
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) ) /* Plane 2,3 */ /* TC538200 */
+ROM_END
+
+ROM_START( kof95ce ) // Color Edit
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084ce.p1",0x100000, 0x100000, CRC(86ffcab0) SHA1(124211a9a85f46cd14eb0b70783147ea9a216a24) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084brz.s1", CRC(4b7e9b31) SHA1(32d29be92881879ef5ce6ad74dc8640e6f70346e) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) ) /* TC531001 */
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) ) /* TC5332201 */
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) ) /* TC5316200 */
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) ) /* TC538200 */
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) ) /* Plane 0,1 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) ) /* Plane 2,3 */ /* TC5332202 */
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) ) /* Plane 0,1 */ /* TC5316200 */
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) ) /* Plane 2,3 */ /* TC5316200 */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) ) /* Plane 0,1 */ /* TC538200 */
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) ) /* Plane 2,3 */ /* TC538200 */
+ROM_END
+
+ROM_START( kof95d )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084d.p1", 0x000000, 0x200000, CRC(467a442f) SHA1(d58a5a0b0ac253caf1186ee6a688b16154bf145d) )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084d.c5", 0x1000000, 0x400000, CRC(fd45472a) SHA1(e2d370bf629390e54c6c124570970ae7e568eee7) )
+ ROM_LOAD16_BYTE( "084d.c6", 0x1000001, 0x400000, CRC(5ab5ea75) SHA1(f68ce2f621e6b6c94080cad00e84e8b42d1d68a9) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95eh ) /* The King of Fighters '95 - Enhance by Ydmis - (Can choose Kusanagi and Rugal - power hack ABC) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084eh.p1", 0x100000, 0x100000, CRC(fe421168) SHA1(2970b26c851d486493eb5fd127d1ed5e42578816) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95hp ) /* The King of Fighters '95 - Hack by HackPlus - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084hp.p1", 0x100000, 0x100000, CRC(865642a4) SHA1(726d918b1f4a8e9b7dccd57944979d57448e9f3e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95k ) // can't see any difference
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084k.p1", 0x100000, 0x100000, CRC(a974521b) SHA1(053744af529dcebda83964efdf0bacad536971da) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084k.s1", CRC(0d07a5ab) SHA1(d5426bb91fe31cbb1633d2ca90479869c8d2210d) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084k.c1", 0x0000000, 0x400000, CRC(4bb4eb90) SHA1(b14ed655272a13cc189bc6bc3a5f327c55e2182b) )
+ ROM_LOAD16_BYTE( "084k.c2", 0x0000001, 0x400000, CRC(7e94c968) SHA1(e188e6c714ec7600f1275b01c56c8e836fc00a05) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95neo )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084neo.p1", 0x000000, 0x200000, CRC(77ae1281) SHA1(bbd8105a2ea0e1b9f42cbb2c6760a05dc37d4e67) )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95pjc ) /* The King of Fighters '95 - Colour fix by TcwLee - (Character colour change - can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084pjc.p1", 0x100000, 0x100000, CRC(da14c25e) SHA1(03309a228783864bbb3cb70295c874812e63e959) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95ru ) /* The King of Fighters '95 - Remix Ultra by Jason/K3 - (Character move change ultra revision v1.0) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084ru.p1", 0x100000, 0x100000, CRC(08492B09) SHA1(25AF69066E96958B25CCECE77013945E640F7B83) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95seh ) /* The King of Fighters '95 - Super Enhance Hack by Creamymami and Ydmis - (Can choose Kusanagi and Rugal - ultra power hack ABC) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084seh.p1", 0x100000, 0x100000, CRC(7b39effe) SHA1(2d19defbb01f74d46d8d303705d6ff8b48c6391e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95xg )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084xg.p1", 0x100000, 0x100000, CRC(2b54003a) SHA1(9def4100b72c50a8c9138f0ac7985bae85eae198) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) ) /* Plane 2,3 */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) ) /* Plane 0,1 */
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) ) /* Plane 2,3 */
+ROM_END
+
+ROM_START( kof95y ) /* The King of Fighters '95 - Hack by Ydmis - (Can choose Kusanagi and Rugal) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084y.p1", 0x100000, 0x100000, CRC(c838b32b) SHA1(7fa1a21f4e3b975989eaa86cad4679bad579908d) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+
+
+GAME( 1995, kof95b, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'95 (Add Char set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95bln, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids", "Kof'95 (Boss - Like NeogeoCD Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95brz, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Kof'95 (Boss Remixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95ce, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'95 (Colour Edit)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95d, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'95 (unknown d)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95eh, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'95 (Add Char - Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95hp, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "HackPlus", "Kof'95 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95k, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'95 (Korean Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95neo, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'95 (Boss Like NGCD v1.1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95pjc, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Kof'95 (Add Char - Char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95ru, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3", "Kof'95 KOF REMIX PRO (Diff Moves ultra rev v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95seh, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Kof'95 (Add Char - Ultra pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95xg, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "PPX Hack Team", "Kof'95 (Boss)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95y, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'95 (Add Char set 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof96.cpp b/docs/release/src/hbmame/drivers/kof96.cpp
new file mode 100644
index 00000000000..443119a68d2
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof96.cpp
@@ -0,0 +1,1574 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+// kof96ep has an extra rom with crossed wires which overrides part of the
+// main p1 rom. This init unscrambles the extra rom and inserts the new
+// code into the correct place.
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof96ep )
+{
+ DRIVER_INIT_CALL(neogeo);
+ int i,j;
+ uint8_t *rom = cpuregion;
+ for ( i=0; i < 0x080000; i++ )
+ {
+ j=i+0x300000;
+ if (rom[j] - rom[i] == 8) rom[j]=rom[i];
+ }
+ memcpy(rom, rom+0x300000, 0x080000);
+}
+
+
+
+ROM_START( kof96a )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214a.ep1", 0x000000, 0x080000, CRC(a6101486) SHA1(51357c216cc8e52fc4ecf5b2db4814e87d016132) )
+ ROM_LOAD16_WORD_SWAP( "214a.ep2", 0x080000, 0x080000, CRC(6abc7ae5) SHA1(1bcbed38ef1934a0701d1c95b30ffe63316f92a8) )
+ ROM_LOAD16_WORD_SWAP( "214a.ep3", 0x100000, 0x080000, CRC(a588dff4) SHA1(32d30bdf9b7bc9201b3930f5a0f126c79af97f3d) )
+ ROM_LOAD16_WORD_SWAP( "214a.ep4", 0x180000, 0x080000, CRC(6d6f17eb) SHA1(51f61c9a4215584493cf1dc37c4e307e1216626c) )
+ ROM_LOAD16_WORD_SWAP( "214a.p5", 0x200000, 0x100000, CRC(9f3c6bc9) SHA1(90370a2ad42421a533182569e63ab81822e37878) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ae ) // 10th Anniversary 2009
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ae.p1", 0x000000, 0x100000, CRC(c038e932) SHA1(ad9cbe9d82a07378d901323eb721ab171164286b) )
+ ROM_LOAD16_WORD_SWAP( "214ae.p2", 0x100000, 0x400000, CRC(66da868f) SHA1(8bada399828d0c55c82a00bfe605de95b8ca07f6) )
+
+ NEO_SFIX_128K( "214ae.s1", CRC(0f902790) SHA1(9f7d95299f828af7bd62cb18680c8127e0e10ecc) )
+
+ NEO_BIOS_AUDIO_128K( "214lx.m1", CRC(c9dd0348) SHA1(6b1003bb7ec01295c71d025c464f922bd555ba55) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214ae.v3", 0x800000, 0x400000, CRC(3cfd1295) SHA1(cfc6ed642ab736592673e96652232534b0e88080) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214ae.c1", 0x0000000, 0x400000, CRC(b308c1f9) SHA1(0c026b49ef45065c0691255a538921b0b4ad11dd) )
+ ROM_LOAD16_BYTE( "214ae.c2", 0x0000001, 0x400000, CRC(220a92b2) SHA1(4f33fc76a199aef2880b3ba1760f92973315edfa) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214ae.c5", 0x1000000, 0x400000, CRC(41dbd677) SHA1(447d081bd8c390df63b9800ef302d2ada660796a) )
+ ROM_LOAD16_BYTE( "214ae.c6", 0x1000001, 0x400000, CRC(1e6a3961) SHA1(ac09dc3e38209033e7797ec6896dd176f3ce6272) )
+ ROM_LOAD16_BYTE( "214ae.c7", 0x1800000, 0x400000, CRC(08021fd6) SHA1(77c8fed7ac39e6a1a24a294f95c095c098a85c11) )
+ ROM_LOAD16_BYTE( "214ae.c8", 0x1800001, 0x400000, CRC(bbd21b08) SHA1(4e060195b632e99634ca9c67fb2398c5a91c3341) )
+ ROM_LOAD16_BYTE( "214ae.c9", 0x2000000, 0x400000, CRC(2efceab8) SHA1(e38c4d2be4d1101d9463cb7c7295f42676cbedb9) )
+ ROM_LOAD16_BYTE( "214ae.c10", 0x2000001, 0x400000, CRC(9f7e1492) SHA1(11315f6ef47210b56004036162767d2e1f7b39b2) )
+ ROM_LOAD16_BYTE( "214ae.c11", 0x2800000, 0x400000, CRC(183cd8fd) SHA1(bd4d47780bf80e382759fd4bbe25fefd4a180610) )
+ ROM_LOAD16_BYTE( "214ae.c12", 0x2800001, 0x400000, CRC(b3d30499) SHA1(34e8009e05cdc8a2fc41e8551df4a5f681a329c1) )
+ROM_END
+
+ROM_START( kof96ae1 ) // 10th Anniversary 2007
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214lx.p1", 0x000000, 0x100000, CRC(47660e7c) SHA1(d6e4595c1c4cc14896bea187668580c73da6c1e7) )
+ ROM_LOAD16_WORD_SWAP( "214ae1.p2", 0x100000, 0x400000, CRC(824ff3eb) SHA1(c3efdcd7e72ac4164721f80b097e874b98539720) )
+
+ NEO_SFIX_128K( "214ae1.s1", CRC(203b3aaf) SHA1(5a82e9130c9218ca163e195863e3a759130a4594) )
+
+ NEO_BIOS_AUDIO_128K( "214lx.m1", CRC(c9dd0348) SHA1(6b1003bb7ec01295c71d025c464f922bd555ba55) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214lx.v3", 0x800000, 0x400000, CRC(143923a7) SHA1(1ba0fc91fd8bdf51c3cab6191ec275a3da5d75bb) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214ae.c1", 0x0000000, 0x400000, CRC(b308c1f9) SHA1(0c026b49ef45065c0691255a538921b0b4ad11dd) )
+ ROM_LOAD16_BYTE( "214ae.c2", 0x0000001, 0x400000, CRC(220a92b2) SHA1(4f33fc76a199aef2880b3ba1760f92973315edfa) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214ae1.c5", 0x1000000, 0x400000, CRC(6e03cb0c) SHA1(b75bef8025ab84e8b36404e94901092d19b3543a) )
+ ROM_LOAD16_BYTE( "214ae1.c6", 0x1000001, 0x400000, CRC(a90bc55d) SHA1(75e141fc9debe5cb1db3875094c51afc9d852fac) )
+ ROM_LOAD16_BYTE( "214ae.c7", 0x1800000, 0x400000, CRC(08021fd6) SHA1(77c8fed7ac39e6a1a24a294f95c095c098a85c11) )
+ ROM_LOAD16_BYTE( "214ae.c8", 0x1800001, 0x400000, CRC(bbd21b08) SHA1(4e060195b632e99634ca9c67fb2398c5a91c3341) )
+ ROM_LOAD16_BYTE( "214ae1.c9", 0x2000000, 0x400000, CRC(57e5bf80) SHA1(ef9a8f08ba094376257f29beb3fce04324edc4bf) )
+ ROM_LOAD16_BYTE( "214ae1.c10", 0x2000001, 0x400000, CRC(cbe44c81) SHA1(be87a92a1f8f1985b5441608db7329aabb745bbb) )
+ ROM_LOAD16_BYTE( "214ae1.c11", 0x2800000, 0x400000, CRC(5c7ddc8b) SHA1(34e0ae91968a58392db273f209dccfa11890fd26) )
+ ROM_LOAD16_BYTE( "214ae1.c12", 0x2800001, 0x400000, CRC(48d8b574) SHA1(fa9be64f0cde68b9685146d5768dc95ddf9d54b8) )
+ROM_END
+
+ROM_START( kof96ae1a ) // 10th Anniversary 2007, different gfx roms
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214lx.p1", 0x000000, 0x100000, CRC(47660e7c) SHA1(d6e4595c1c4cc14896bea187668580c73da6c1e7) )
+ ROM_LOAD16_WORD_SWAP( "214ae1.p2", 0x100000, 0x400000, CRC(824ff3eb) SHA1(c3efdcd7e72ac4164721f80b097e874b98539720) )
+
+ NEO_SFIX_128K( "214ae1.s1", CRC(203b3aaf) SHA1(5a82e9130c9218ca163e195863e3a759130a4594) )
+
+ NEO_BIOS_AUDIO_128K( "214lx.m1", CRC(c9dd0348) SHA1(6b1003bb7ec01295c71d025c464f922bd555ba55) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214lx.v3", 0x800000, 0x400000, CRC(143923a7) SHA1(1ba0fc91fd8bdf51c3cab6191ec275a3da5d75bb) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214ae1a.c1", 0x0000000, 0x1800000, CRC(c68508df) SHA1(f7e9ad7cfe506658a7aec51c79ebc119db456655) )
+ ROM_LOAD16_BYTE( "214ae1a.c2", 0x0000001, 0x1800000, CRC(078d9390) SHA1(ef78328ee7e663a38318bb4c20f4c9c3316536ea) )
+ROM_END
+
+ROM_START( kof96ae1b ) // 10th Anniversary 2007, different gfx roms
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214lx.p1", 0x000000, 0x100000, CRC(47660e7c) SHA1(d6e4595c1c4cc14896bea187668580c73da6c1e7) )
+ ROM_LOAD16_WORD_SWAP( "214ae1.p2", 0x100000, 0x400000, CRC(824ff3eb) SHA1(c3efdcd7e72ac4164721f80b097e874b98539720) )
+
+ NEO_SFIX_128K( "214ae1.s1", CRC(203b3aaf) SHA1(5a82e9130c9218ca163e195863e3a759130a4594) )
+
+ NEO_BIOS_AUDIO_128K( "214lx.m1", CRC(c9dd0348) SHA1(6b1003bb7ec01295c71d025c464f922bd555ba55) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214lx.v3", 0x800000, 0x400000, CRC(143923a7) SHA1(1ba0fc91fd8bdf51c3cab6191ec275a3da5d75bb) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214ae.c1", 0x0000000, 0x400000, CRC(b308c1f9) SHA1(0c026b49ef45065c0691255a538921b0b4ad11dd) )
+ ROM_LOAD16_BYTE( "214ae.c2", 0x0000001, 0x400000, CRC(220a92b2) SHA1(4f33fc76a199aef2880b3ba1760f92973315edfa) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214ae1.c5", 0x1000000, 0x400000, CRC(6e03cb0c) SHA1(b75bef8025ab84e8b36404e94901092d19b3543a) )
+ ROM_LOAD16_BYTE( "214ae1.c6", 0x1000001, 0x400000, CRC(a90bc55d) SHA1(75e141fc9debe5cb1db3875094c51afc9d852fac) )
+ ROM_LOAD16_BYTE( "214ae.c7", 0x1800000, 0x400000, CRC(08021fd6) SHA1(77c8fed7ac39e6a1a24a294f95c095c098a85c11) )
+ ROM_LOAD16_BYTE( "214ae.c8", 0x1800001, 0x400000, CRC(bbd21b08) SHA1(4e060195b632e99634ca9c67fb2398c5a91c3341) )
+ ROM_LOAD16_BYTE( "214ae1b.c9", 0x2000000, 0x800000, CRC(824f5fdd) SHA1(79664e30b01bb5f4b3aa6e73c8b785bc253101aa) )
+ ROM_LOAD16_BYTE( "214ae1b.c10", 0x2000001, 0x800000, CRC(850a1f6e) SHA1(7918a6ef11681a7d3b0f0a115d2138e89ca87346) )
+ROM_END
+
+ROM_START( kof96b ) /* The King of Fighters '96 - Hack by UNKNOWN - (Can choose Chizuru Kagura and Goenitz) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214b.p1", 0x000000, 0x100000, CRC(0b385fab) SHA1(ea544d95438b373e3f5f530528413ff583d2b329) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96b1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214b1.p1", 0x000000, 0x100000, CRC(9ec8c837) SHA1(bcf2286fc8ba0128a3f597ae6411949d3dac1db7) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96bb )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) )
+ ROM_LOAD16_WORD_SWAP( "214bb.p2", 0x100000, 0x200000, CRC(6d4ca2ec) SHA1(9bac19d64e3fb058610df451622fcc927642006d) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96c ) /* The King of Fighters '96 - (kof96c) - Hack by Kyofun - (Chinese Ver.1.0) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214c.p1", 0x000000, 0x800000, CRC(51990a7f) SHA1(eef003e5a7e43d670fe916c983c161d213337627) )
+
+ NEO_SFIX_128K( "214c.s1", CRC(f917527a) SHA1(8c4778f9dc5e0651042f8ff6f1a18e3f40d0bf7c) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214c.c1", 0x0000000, 0x1800000, CRC(a89789ba) SHA1(25632122b747eb97a4ffb94d8e0cd7c20940d118) )
+ ROM_LOAD16_BYTE( "214c.c2", 0x0000001, 0x1800000, CRC(e4a5e70d) SHA1(4f4691d386cfd63015812475bc58b1e8ae4b23ff) )
+ROM_END
+
+ROM_START( kof96cbi ) // Change Blood For Other Hack By IsmaMj (02-03-11)
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214cbi.p1", 0x000000, 0x100000, CRC(4110ab9f) SHA1(f45eb631ceccac6d7d94ad6d0bdb1bc1bc198246) )
+ ROM_LOAD16_WORD_SWAP( "214cbi.p2", 0x100000, 0x200000, CRC(2b5fa72a) SHA1(3b44765a3155cb830fdfb1d1ddc357405a42d1cf) )
+
+ NEO_SFIX_128K( "214cbi.s1", CRC(46a20a2c) SHA1(ef9584afee4cef53f166f247ec9e6b2ff0c29da8) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214cbi.c7", 0x1800000, 0x400000, CRC(e306d179) SHA1(dbacbb4a8417ca9cc3578a91121a8f98ce7c1974) )
+ ROM_LOAD16_BYTE( "214cbi.c8", 0x1800001, 0x400000, CRC(7a8cdac6) SHA1(59a61a5764859ea141d6caa9c10e9e8fed4be877) )
+ROM_END
+
+ROM_START( kof96ckvs ) /* The King of Fighters '96 - (kof96ckvs) - Hack by KVS - (Chinese Version) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ckvs.p1", 0x000000, 0x800000, CRC(802a8874) SHA1(c76857acf29366af9e3ac8bf07fad0976ec2607f) )
+
+ NEO_SFIX_128K( "214ckvs.s1", CRC(3e9c7f67) SHA1(8d08e7861fbc3c8305b7160b8856326d8d407237) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214ckvs.v1", 0x000000, 0xa00000, CRC(4f14a72b) SHA1(fb1105aa271ea14016f777017cf6079ff61e176f) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214ckvs.c1", 0x0000000, 0x1800000, CRC(252e41e9) SHA1(2844b65dce7a47c04da4473d5ef519cbbdab0e09) )
+ ROM_LOAD16_BYTE( "214c.c2", 0x0000001, 0x1800000, CRC(e4a5e70d) SHA1(4f4691d386cfd63015812475bc58b1e8ae4b23ff) )
+ROM_END
+
+ROM_START( kof96chj ) /* [OLD] The King of Fighters '96 - (kof96chj) - Remix by CHL and Jason/K3 - (Character move change - ultra kill style change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214chj.p1", 0x000000, 0x100000, CRC(2a2a63ad) SHA1(92fca18b6bfc77569572262fcfbee732510dc3d6) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96cn )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214cn.p1", 0x000000, 0x100000, CRC(a8c25f0a) SHA1(f6b0f82ec7baa235fa68713bb1b12e3e83db8be5) )
+ ROM_LOAD16_WORD_SWAP( "214cn.p2", 0x100000, 0x200000, CRC(0edface5) SHA1(2fb7a3e84758a6ce3977b6a1f306867cb52fe0f5) )
+ ROM_LOAD16_WORD_SWAP( "214cn.p3", 0x300000, 0x500000, CRC(8724a441) SHA1(409a93e3bd7f40dfd623c2ed1f7173fa55f597b8) )
+
+ NEO_SFIX_128K( "214c.s1", CRC(f917527a) SHA1(8c4778f9dc5e0651042f8ff6f1a18e3f40d0bf7c) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ ROM_LOAD16_BYTE( "214cn.c9", 0x2000000, 0x400000, CRC(a9f811d2) SHA1(abd1bd95d2f44fc4b604294c12c5509b41509ed7) )
+ ROM_LOAD16_BYTE( "214cn.c10", 0x2000001, 0x400000, CRC(1147406a) SHA1(2bccbd2f38f15c13eb7d5a89fd9d85f595e23bc3) )
+ROM_END
+
+ROM_START( kof96cr ) /* The King of Fighters '96 - Remix by CHL - (Character move and behaviour change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214cr.p1", 0x000000, 0x100000, CRC(7d07f47d) SHA1(bc539a4cd318a3d68e97a71ae572c53827bcfcd6) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96de ) // Dragon Edition set 2
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214de.p1", 0x000000, 0x100000, CRC(d2a9a727) SHA1(ecfcfc0a537827707cf7e4f4789c23b376362198) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96dr1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214dr1.p1", 0x000000, 0x100000, CRC(23bca98e) SHA1(76182ebbcb4ae2c6e8e9248f0cc9af0f5befc00f) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96eh ) /* The King of Fighters '96 - Enhance by Ydmis - (Can choose Chizuru Kagura and Goenitz - power hack ABC) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214eh.p1", 0x000000, 0x100000, CRC(103ba0e4) SHA1(dd4964f2ad5f0c3540dff495d103890b9ecf0cbb) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ep )
+ ROM_REGION( 0x380000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+ ROM_LOAD16_WORD_SWAP( "214ep.p1", 0x300000, 0x080000, CRC(e5f2fb43) SHA1(5efff9873b30679ea924b7770606c889a1076315) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ep2 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ep2.p1", 0x000000, 0x100000, CRC(8233b2cf) SHA1(14fd815d80ff6f719539f746e5bd041d4fe85ecb) )
+ ROM_LOAD16_WORD_SWAP( "214ep2.p2", 0x100000, 0x200000, CRC(9c57ae89) SHA1(65140219665938fe5365c2e4d1efd3424eaadd2f) )
+
+ NEO_SFIX_128K( "214ep2.s1", CRC(773aeb80) SHA1(04db79cba617b5c0634cb0f1cef6c9f1228eb31c) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214rf.c7", 0x1800000, 0x400000, CRC(3459297a) SHA1(cc839fdf327a7e3c107132d871d617d3cdef9f94) )
+ ROM_LOAD16_BYTE( "214rf.c8", 0x1800001, 0x400000, CRC(8266c111) SHA1(3b3046e896b2720f6a34c2091ce1d68e581cc44e) )
+ROM_END
+
+ROM_START( kof96ep3 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ep3.p1", 0x000000, 0x100000, CRC(687f1ba8) SHA1(9734e1b7ad9e13c8d5a7fbe411aae338373acf4a) )
+ ROM_LOAD16_WORD_SWAP( "214ep2.p2", 0x100000, 0x200000, CRC(9c57ae89) SHA1(65140219665938fe5365c2e4d1efd3424eaadd2f) )
+
+ NEO_SFIX_128K( "214ep2.s1", CRC(773aeb80) SHA1(04db79cba617b5c0634cb0f1cef6c9f1228eb31c) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214rf.c7", 0x1800000, 0x400000, CRC(3459297a) SHA1(cc839fdf327a7e3c107132d871d617d3cdef9f94) )
+ ROM_LOAD16_BYTE( "214rf.c8", 0x1800001, 0x400000, CRC(8266c111) SHA1(3b3046e896b2720f6a34c2091ce1d68e581cc44e) )
+ROM_END
+
+ROM_START( kof96evo ) /* The King of Fighters '96 - KOF96 Evolution by Wesker - (Character move and style revision) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214evo.p1", 0x000000, 0x200000, CRC(6e10e1af) SHA1(f013e827e74a296d462bd00594b823dd02b4dc76) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96evoo ) /* [OLD] The King of Fighters '96 - (kof96evoo) - Remix by Wesker - (Character move change and style revision) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214evoo.p1", 0x000000, 0x200000, CRC(1e970d76) SHA1(2904241785c2544f270263f9203eef5207defef4) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96evsp )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214evsp.p1", 0x000000, 0x100000, CRC(61099e5a) SHA1(41fa30c070e28024b54793c4953959f4508f7f86) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ey ) /* The King of Fighters '96 - Enhance by Ydmis - (Power hack ABC) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ey.p1", 0x000000, 0x100000, CRC(2342fd92) SHA1(0901db47ff1f504d1635da0b2fdd417bbdd71839) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96hp ) /* The King of Fighters '96 - Hack by HackPlus - (Can choose Chizuru Kagura and Goenitz) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214hp.p1", 0x000000, 0x100000, CRC(fcf57652) SHA1(c423bf3ea2d02b3d8df338b69559861479360b02) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96hp1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214hp1.p1", 0x000000, 0x100000, CRC(be961ca2) SHA1(21c431082fe8fdf242651efb12a30cf157c77e49) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96hpr ) /* The King of Fighters '96 - Hack by HackPlus - (Can choose Chizuru Kagura and Goenitz - revised) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214hpr.p1", 0x000000, 0x100000, CRC(92c9df44) SHA1(f9d42176858c7c466c6e34ca3b360cb87cbf131c) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96k ) /* The King of Fighters '96 -Hack by Kurouri - (Can choose Chizuru Kagura and Goenitz - power hack ABC) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214k.p1", 0x000000, 0x100000, CRC(e0256484) SHA1(3b7b281962665c6198329e64b4c5d9c4ef871a04) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96k1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) )
+ ROM_LOAD16_WORD_SWAP( "214k1.p2", 0x100000, 0x200000, CRC(93ac7dff) SHA1(e8a8679c2b0860ace773eb48f021045d3ad02d1a) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96k3 ) /* The King of Fighters '96 - Remix by Jason/K3 - (Character move change to Kof98 style 20030725) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214k3.p1", 0x000000, 0x100000, CRC(800b8213) SHA1(06622e0bfa615195b888858c5806bd262434761b) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96k3o ) /* [OLD] The King of Fighters '96 - (kof96k3o) - Remix by Jason/K3 - (Changed move behaviour to KOF 98 style, see kof96k3o.txt for more 20030710) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214k3o.p1", 0x000000, 0x100000, CRC(09173d9f) SHA1(85d60c976d04468b7c9dc3247c00ff99ec6fd4cc) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96kt ) // Korean Translation
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214kt.p1", 0x000000, 0x100000, CRC(a54e1812) SHA1(46b6eee1303a8d0efdd4659080a30a53ae2aeb15) )
+ ROM_LOAD16_WORD_SWAP( "214kt.p2", 0x100000, 0x200000, CRC(2ad66289) SHA1(2d6be57436c84eadb0f1c59f0fa021c2799d1518) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214kt.c1", 0x0000000, 0x400000, CRC(0524e33e) SHA1(f844f2b075f1982ccb75691a422d957500ba8623) )
+ ROM_LOAD16_BYTE( "214kt.c2", 0x0000001, 0x400000, CRC(e1374ccc) SHA1(7bff6465c21b53fbe85ea49fdb1fe8ea4b77394d) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96lx ) /* The King of Fighters '96 - Hack by Luxo */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214lx.p1", 0x000000, 0x100000, CRC(47660e7c) SHA1(d6e4595c1c4cc14896bea187668580c73da6c1e7) )
+ ROM_LOAD16_WORD_SWAP( "214lx.p2", 0x100000, 0x400000, CRC(3cb8c583) SHA1(7863c1518fea1ef02e60d9456e68b4c2591b7716) )
+
+ NEO_SFIX_128K( "214lx.s1", CRC(f8984c6f) SHA1(f8aba219c2be132f21d9dbc4f13b127170a245e8) )
+
+ NEO_BIOS_AUDIO_128K( "214lx.m1", CRC(c9dd0348) SHA1(6b1003bb7ec01295c71d025c464f922bd555ba55) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214lx.v3", 0x800000, 0x400000, CRC(143923a7) SHA1(1ba0fc91fd8bdf51c3cab6191ec275a3da5d75bb) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214lx.c1", 0x000000, 0x1800000, CRC(c8dbad80) SHA1(8b18b5b6f91e7f47cc04f370ed6218c084df6575) )
+ ROM_LOAD16_BYTE( "214lx.c2", 0x000001, 0x1800000, CRC(8139ac33) SHA1(6200460abd7d00d7d85d00ffb8117dcf8a99016a) )
+ROM_END
+
+ROM_START( kof96ncd )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ncd.p1", 0x000000, 0x100000, CRC(18acfd90) SHA1(3da8848dfb06602684ceb2da097568aaccb2e709) )
+ ROM_LOAD16_WORD_SWAP( "214ncd.p2", 0x100000, 0x200000, CRC(8dee366d) SHA1(bd05fb7a0481d2b6e64cd847239c39aad319fca8) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96oib )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214oib.p1", 0x000000, 0x100000, CRC(ab7e5fe8) SHA1(ce162e826d713ebe1743296889626c454ed81ba8) )
+ ROM_LOAD16_WORD_SWAP( "214oib.p2", 0x100000, 0x200000, CRC(229d74d4) SHA1(b1384c18bc07f30b7c082f5befde20b72a9c0818) )
+
+ NEO_SFIX_128K( "214oib.s1", CRC(794769b4) SHA1(45b74cc5f875ff2c95545a4a21599af4b3a54078) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214oib.c5", 0x1000000, 0x400000, CRC(5ad89fe4) SHA1(4e53740ebd0f87bf33947c4ca6f6b64f98f1846a) )
+ ROM_LOAD16_BYTE( "214oib.c6", 0x1000001, 0x400000, CRC(77dd026e) SHA1(410ddfd9901cdab8dfca1e44c1b583f218e208d9) )
+ ROM_LOAD16_BYTE( "214oib.c7", 0x1800000, 0x400000, CRC(5e690993) SHA1(9de1771f643a9c4f433c256b3a23d9d380ecc07b) )
+ ROM_LOAD16_BYTE( "214oib.c8", 0x1800001, 0x400000, CRC(ec6d3c59) SHA1(8387cc622b8e310c6d187f5e8ab42be31701017b) )
+ROM_END
+
+ROM_START( kof96oib2 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214oib.p1", 0x000000, 0x100000, CRC(ab7e5fe8) SHA1(ce162e826d713ebe1743296889626c454ed81ba8) )
+ ROM_LOAD16_WORD_SWAP( "214oib2.p2", 0x100000, 0x200000, CRC(2e6fe5e2) SHA1(cfd8e35201bff14a76cdfbec42ef01b7abad5a60) )
+
+ NEO_SFIX_128K( "214oib.s1", CRC(794769b4) SHA1(45b74cc5f875ff2c95545a4a21599af4b3a54078) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214oib.c5", 0x1000000, 0x400000, CRC(5ad89fe4) SHA1(4e53740ebd0f87bf33947c4ca6f6b64f98f1846a) )
+ ROM_LOAD16_BYTE( "214oib.c6", 0x1000001, 0x400000, CRC(77dd026e) SHA1(410ddfd9901cdab8dfca1e44c1b583f218e208d9) )
+ ROM_LOAD16_BYTE( "214oib2.c7", 0x1800000, 0x400000, CRC(87348536) SHA1(df871243a15e9fbe0e6c9c6210c83c4853aa11c8) )
+ ROM_LOAD16_BYTE( "214oib2.c8", 0x1800001, 0x400000, CRC(bee6c915) SHA1(884ff9f7b4262d55fdc8750de471a7067a17ea7d) )
+ROM_END
+
+ROM_START( kof96oih ) // Orochi Iori (unknown hack)
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214oih.p1", 0x000000, 0x100000, CRC(db7eb010) SHA1(d19336fffcc7df186416b90d783c984237226113) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96oir ) // Orochi Iori Remix by IsmaMj
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214oir.p1", 0x000000, 0x100000, CRC(da24ce88) SHA1(0e6d7b3b142dee026a41ca3a3996a6692bd10fdf) )
+ ROM_LOAD16_WORD_SWAP( "214rf.p2", 0x100000, 0x200000, CRC(3a7912f0) SHA1(27f2e82e543d5d8c66613babd0012e5bb2f3d0ec) )
+
+ NEO_SFIX_128K( "214oir.s1", CRC(39ef1161) SHA1(1366895edcc541091f2405d16ba99b16b72b6218) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96pch ) // All confirmed
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214pch.p1", 0x000000, 0x100000, CRC(71db3c3e) SHA1(39770e938067b7f4d434d7af93fbe77f0a3d9a3d) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96pjc ) /* The King of Fighters '96 - Colour fix by TcwLee - (Character colour change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) )
+ ROM_LOAD16_WORD_SWAP( "214pjc.p2", 0x100000, 0x200000, CRC(fde97cb6) SHA1(676ca59ef75844d9b398126b352d82683d890867))
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96pm )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214pm.p1", 0x000000, 0x100000, CRC(f8cdadde) SHA1(efc37896946a445c7b86f0e14615634f960a2097) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rcw) /* The King of Fighters '96 - Remix by CHL and Wesker - (Character move and ultra kill style change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rcw.p1", 0x000000, 0x200000, CRC(7b12a4f1) SHA1(f3bcf418d8ecd63d9373c70b138ea7ea391b0cb9) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rf )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rf.p1", 0x000000, 0x100000, CRC(3ef73a54) SHA1(e82dc88aeef611249ff4a39d61de23d961230f37) )
+ ROM_LOAD16_WORD_SWAP( "214rf.p2", 0x100000, 0x200000, CRC(3a7912f0) SHA1(27f2e82e543d5d8c66613babd0012e5bb2f3d0ec) )
+
+ NEO_SFIX_128K( "214rf.s1", CRC(d4899497) SHA1(d40c7f1d9b6e39d668cb635182b29f3ce03b802b) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214rf.c7", 0x1800000, 0x400000, CRC(3459297a) SHA1(cc839fdf327a7e3c107132d871d617d3cdef9f94) )
+ ROM_LOAD16_BYTE( "214rf.c8", 0x1800001, 0x400000, CRC(8266c111) SHA1(3b3046e896b2720f6a34c2091ce1d68e581cc44e) )
+ROM_END
+
+ROM_START( kof96rfs ) // Remix Final Standard
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rfs.p1", 0x000000, 0x300000, CRC(8f9cf253) SHA1(e212ae9b092ebdf0435cc0f84bcb7bf43a0ffaf4) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214rfs.s1", CRC(08811ec1) SHA1(4a2f20999e8333763897b3b5d852b693a8c81c3e) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rfsa )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rfsa.p1", 0x000000, 0x100000, CRC(c36be9c7) SHA1(c8204c2b6044c009db9cb4afdc7aaaf4929f29b7) )
+ ROM_LOAD16_WORD_SWAP( "214rfsa.sp2", 0x100000, 0x200000, CRC(7ec1c31e) SHA1(4db183ef0a7df0aa0ad3c864d2787fc6c0acab4f) )
+
+ NEO_SFIX_128K( "214rfs.s1", CRC(08811ec1) SHA1(4a2f20999e8333763897b3b5d852b693a8c81c3e) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030601) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri.p1", 0x000000, 0x100000, CRC(b327398e) SHA1(698fbfd310994e5cc20001f28f5d327bf4a997f2) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri1 ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030601) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri1.p1", 0x000000, 0x100000, CRC(1eb17023) SHA1(ceed639edfcc1b120c420f08aeb036d8912bbcb5) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri2 ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030601) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri2.p1", 0x000000, 0x100000, CRC(abef3f56) SHA1(563f77eb86068ed70bc0484291499d220a07dd84) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri3 ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030601) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri3.p1", 0x000000, 0x100000, CRC(c58d9eea) SHA1(287d679c0caf00e163ac2d55d17809e8d5e911a6) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri4 ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030527) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri4.p1", 0x000000, 0x100000, CRC(ef2b1662) SHA1(eb23ea0875f6b19dcc400699fd9fb0e846caedf3) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ri5 ) /* [OLD] The King of Fighters '96 - (kof96ri) - Revision by Igniz - (Revise 20030527) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ri5.p1", 0x000000, 0x100000, CRC(386420b2) SHA1(7ce3eee22112f53d808cc798c0e15b16cc290a0b) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rm ) // Remix 2.5 by Marcochen
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rm.p1", 0x000000, 0x100000, CRC(76913b21) SHA1(265f233baf200e7e591e5e463a7bac45fb1aeb52) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rp ) // Remix Pro 1
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rp.p1", 0x000000, 0x100000, CRC(4f75f758) SHA1(81ff5ffb6f41c922fa25cd5eb720abdf44abd572) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rp1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rp1.p1", 0x000000, 0x100000, CRC(e412a600) SHA1(3040b7704fd124725f38a1954914119cc09aa0e5) )
+ ROM_LOAD16_WORD_SWAP( "214rp1.p2", 0x100000, 0x200000, CRC(6bd3d75e) SHA1(c1e517f575d2dc4148360b27dee55fba2251e59e) )
+
+ NEO_SFIX_128K( "214rp1.s1", CRC(36a14c3b) SHA1(2ab1a75bc8ba6b69fd8f99ff31d8082ac3d50c34) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rss ) // Remix Spring Special
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rss.p1", 0x000000, 0x300000, CRC(93abe27c) SHA1(478032f51ebd0b6f22d9ce4cbe17a4808218dd70) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214rss.s1", CRC(f304df75) SHA1(f696aed96dba4a086415374c7bbdf8c3b4f5b457) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ru ) /* The King of Fighters '96 - Remix Ultra by CHL and Jason/K3 - (Character move change - ultra kill style change - can choose Chizuru Kagura and Goenitz 20031203) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ru.p1", 0x000000, 0x100000, CRC(620da697) SHA1(146d396903fed547f586f095d6b7b4ec519c1479) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ru2 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ru2.p1", 0x000000, 0x100000, CRC(f1e97d01) SHA1(ed5681dddd205f79c0011a2db46d1fbbc7263979) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96rw ) /* The King of Fighters '96 - Remix By Wesker - (Character move change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214rw.p1", 0x000000, 0x100000, CRC(1de99755) SHA1(69740ffc88d287d6f2bc218665a3f1fa358e5fc3) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96ryu ) // Ryu Hack by Iori Yagami
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214ryu.p1", 0x000000, 0x100000, CRC(ff399656) SHA1(27895e26ac82461850a594e1384b994bfa3772e5) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96seh ) /* The King of Fighters '96 - Super Enhance Hack by Ydmis - (Can choose Chizuru Kagura and Goenitz - ultra power hack ABC) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214seh.p1", 0x000000, 0x100000, CRC(76fc560c) SHA1(618b01b00235e1ff3d083e5c077e43482864f774) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+
+
+GAME( 1996, kof96a, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof96ae, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 (10th Anniversary Edition set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof96ae1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 (10th Anniversary Edition set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof96ae1a, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 (10th Anniversary Edition set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof96ae1b, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 (10th Anniversary Edition set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96b, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96b1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 Boss Hack (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96bb, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 Boss Hack (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof96c, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Guangzhou Game Team", "Kof'96 (Chinese Ver.1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof96cbi, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Change Blood For Other Hack (2011-03-02))", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ckvs, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KVS", "Kof'96 (Chinese ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96chj, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL and Jason/K3", "Kof'96 (Diff Moves - Ultra kill style changed set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof96cn, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Guangzhou Game Team", "Kof'96 (CN)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96cr, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'96 (Diff Moves and Style)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96de, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Dragon Edition set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96dr1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Dragon Edition set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96eh, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'96 (Add Char - Pow hack ABC set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ep, kof96, neogeo_noslot, neogeo, neogeo_hbmame, kof96ep, ROT0, "bootleg", "Kof'96 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ep2, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Bootleg / Hack Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ep3, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Bootleg / Hack Set 3 All Boss)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof96evo, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker, FGCH", "Kof'96 WESKER HACK (Evolution)", MACHINE_SUPPORTS_SAVE ) // Moves and style rev
+GAME( 2004, kof96evoo, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker, FGCH", "Kof'96 WESKER HACK (Evolution Old)", MACHINE_SUPPORTS_SAVE ) // Moves and style rev Old
+GAME( 2004, kof96evsp, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker, FGCH", "Kof'96 WESKER HACK (Evolution Special v1.2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ey, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'96 (Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96hp, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "HackPlus", "Kof'96 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof96hp1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Pipi899", "Kof'96 (Hack by Pipi899 2007-08-31)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96hpr, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "HackPlus", "Kof'96 (Add Char set 2 - revised)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof96k, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Guangzhou Game Team", "Kof'96 (Add Char - Pow hack ABC set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96k1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Korean Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96k3, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3", "Kof'96 Remix (Kof98 Moves 030725)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96k3o, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3", "Kof'96 Remix (Kof98 Moves 030710)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96kt, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Korean Translation)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof96lx, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 (10th Anniversary set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ncd, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids FCHT", "Kof'96 (Boss, Like NEOGEOCD Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof96oib, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Special Orochi Iori/Boss Hack v3.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof96oib2, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Special Orochi Iori/Boss Hack v3.0 alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96oih, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Orochi Iori (OIH))", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof96oir, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Orochi Iori Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96pjc, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Kof'96 (Char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof96pch, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "C-17", "Kof'96 (C-17 hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96pm, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF1996", "Kof'96 Practice Mode (Hack by KOF1996)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof96rcw, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker/Fight China", "Kof'96 (Diff Moves - Ultra kill style changed set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96rf, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003", "Kof'96 Remix Final (2007 Revised Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof96rfs, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003", "Kof'96 (Remix Final Standard v1.4 set 1 hack by SNK2003)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof96rfsa, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003", "Kof'96 (Remix Final Standard v1.4 set 2 hack by SNK2003)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz", "Kof'96 (Igniz rev 030601 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz", "Kof'96 (Igniz rev 030601 set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri2, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz", "Kof'96 (Igniz rev 030601 set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri3, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz", "Kof'96 (Igniz rev 030601 set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri4, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz", "Kof'96 (Igniz rev 030527 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ri5, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Igniz","Kof'96 (Igniz rev 030527 set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96rm, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Marcochen", "Kof'96 (Remix 2.5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96rp, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Remix Pro 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof96rp1, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'96 Remix Plus 2008 SP", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96rss, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003", "Kof'96 (Remix Spring Special 1.5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ru, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL, Jason/K3", "Kof'96 Remix Ultra (Diff Moves - Ultra kill style changed - Add Char 031203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ru2, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL, Jason/K3", "Kof'96 (Remix Ultra v1.1 hack by CHL/Jason/K3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96rw, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'96 (Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96ryu, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Iori Yagami", "Kof'96 (Ryu Hack by Iori Yagami)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96seh, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'96 (Add Char - Ultra pow hack ABC)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof97.cpp b/docs/release/src/hbmame/drivers/kof97.cpp
new file mode 100644
index 00000000000..9d681620aca
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof97.cpp
@@ -0,0 +1,2249 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof97pla )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ // The following was used in Ash build, purpose unknown:
+ //m_bootleg_prot->patch_kof97pla(cpuregion, cpuregion_size);
+ // This contains:
+ //void ngbootleg_prot_device::patch_kof97pla(UINT8* cpurom, UINT32 cpurom_size)
+ //cpurom[0x1394A] = 0x6C;
+ //cpurom[0x1394B] = 0xD1;
+ //cpurom[0x1394C] = 0x3A;
+ //cpurom[0x1394D] = 0x1;
+ //cpurom[0x1394E] = 0x6C;
+ //cpurom[0x1394F] = 0x91;
+}
+
+
+
+ROM_START( kof97aa )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232aa.p1", 0x000000, 0x100000, CRC(35a1a664) SHA1(5fc3835e5a3747f5e5d6bfe63e1562e33d26526e) )
+ ROM_LOAD16_WORD_SWAP( "232aa.p2", 0x100000, 0x400000, CRC(6a732dff) SHA1(c3199941b69db945a7d754c52261aa97d39bb316) )
+
+ NEO_SFIX_128K( "kf97-s1p.bin", CRC(73254270) SHA1(8d06305f9d8890da1327356272b88bdd0dc089f5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ae )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ae.p1", 0x000000, 0x100000, CRC(02ac80f0) SHA1(3273b537f927ed819f39d13be37c40eea4cc5db0) )
+ ROM_LOAD16_WORD_SWAP( "232ae.p2", 0x100000, 0x400000, CRC(8cffe3f3) SHA1(c2dcac7d41576ddf97b585f515a9418f6b931e29) )
+
+ NEO_SFIX_128K( "232ae.s1", CRC(d4957067) SHA1(b756c97b050296db9b00e0bc6cdd79e4d2e2273e) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232ae.c1", 0x0000000, 0x800000, CRC(ea16b711) SHA1(e54d1a0b559f1ef326ee86bc89e9f1b399f08b32) )
+ ROM_LOAD16_BYTE( "232ae.c2", 0x0000001, 0x800000, CRC(b7bef674) SHA1(378a67dfa7dba03900dd7c70a3473c12f9879af1) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ae1 )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ae1.p1", 0x000000, 0x100000, CRC(49cfaded) SHA1(e42d4ccd8e91747e4f87799bb813a0e6382b79db) )
+ ROM_LOAD16_WORD_SWAP( "232ae1.p2", 0x100000, 0x600000, CRC(030a85fb) SHA1(afe2249bde61ef401c2cfae9dddb3a6b51c258d9) )
+
+ NEO_SFIX_128K( "232ae1.s1", CRC(67d4cd7a) SHA1(b4f7d6a10523aa1d6322a04dc755ed4258003de0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232ae1.c1", 0x0000000, 0x800000, CRC(bc35a6dc) SHA1(81d0b5a2c7fb6f5d0f19e3ab3ef2cc9d98806532) )
+ ROM_LOAD16_BYTE( "232ae1.c2", 0x0000001, 0x800000, CRC(66bf2938) SHA1(a45933a286cf6c1d4e63f687819262751650a9cd) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97aot ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232aot.p1", 0x000000, 0x100000, CRC(edd3bd8f) SHA1(7c422db860c9b8c8caf933bfabbc43b891fc0a5e) )
+ ROM_LOAD16_WORD_SWAP( "232zm.p2", 0x100000, 0x400000, CRC(ca11478d) SHA1(484533266ba677fa2930e977226c4b72a59de8e2) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97bh ) /* The King of Fighters '97 - Hack by Dodowang - (Can choose Orochi + add. Iori, Yashiro, Shermie, Chris and Leona - Orochi has icon in menue - extra stage select) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232bh.p1", 0x000000, 0x100000, CRC(b49a3fcf) SHA1(2dcb95e184b86a455ef23b70aca00bbcd28f23c5) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232bh.s1", CRC(71c426e6) SHA1(1fd4a2537daf6a26e1e2707183b0f1762d7a25ff) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97bng )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232bng.p1", 0x000000, 0x100000, CRC(8d699492) SHA1(a70958426a6de040f3af5a6050e6e8f82c016aa0) )
+ ROM_LOAD16_WORD_SWAP( "232bng.p2", 0x100000, 0x400000, CRC(d86d0095) SHA1(53d76659dacc6a7d3113fd51c29904e2ef0cf171) )
+
+ NEO_SFIX_128K( "232bng.s1", CRC(c24e2cb7) SHA1(79f298997b773ed869a49a897aa38b74a43b051c) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) )
+ ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232bng.c5", 0x2000000, 0x400000, CRC(e749d4d2) SHA1(8f4c54c0355decebfc47b8d11b863dcd84647688) )
+ ROM_LOAD16_BYTE( "232bng.c6", 0x2000001, 0x400000, CRC(dc7c5cd7) SHA1(f33b62a1ded71edf0b2bd8e6f2495da34c7b1984) )
+ROM_END
+
+ROM_START( kof97bs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232bs.p1", 0x000000, 0x100000, CRC(6802a9d1) SHA1(e5ccd06e96a12133d5176f154209b4c766009cb0) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232bs.c1", 0x0000000, 0x800000, CRC(47932f00) SHA1(3dcedd194a2138cd8b006462a42b52e925f6b5ce) )
+ ROM_LOAD16_BYTE( "232bs.c2", 0x0000001, 0x800000, CRC(f87c3d84) SHA1(0de2dcb6a475ea6475d67c60a254e6b7cbcde951) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97cb2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232cb2.p1", 0x000000, 0x100000, CRC(4fb095a5) SHA1(1d8ae617967c8d96aa219b674568063e5a0d9b27) )
+ ROM_LOAD16_WORD_SWAP( "232cb2.p2", 0x100000, 0x400000, CRC(203d656a) SHA1(e3ee823a881527483908d4466fefcd0875503193) )
+
+ NEO_SFIX_128K( "232cb2.s1", CRC(8fe6d842) SHA1(e209b7fca380093f711d3b3396f1160beb7b33bd) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97chl ) /* [OLD] The King of Fighters '97 - (kof97chl) - Revise by CHL - (Character move change by chl 20030325) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232chl.p1", 0x000000, 0x100000, CRC(ce99174b) SHA1(3ff2e0c71e24c55741c9718725d214368a144c53) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97chl2 ) /* [OLD] The King of Fighters '97 - (kof97chl2) - Revise by CHL - (Character move change by chl revision 2 20030409) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232chl2.p1", 0x000000, 0x100000, CRC(fd7efa7d) SHA1(383aa8054ec1a1b832983fbacfc93e6740712e18) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97chris )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232chris.p2", 0x100000, 0x400000, CRC(2b43d718) SHA1(e932a7d5f215baaf799cfc64f80bb8a1312ab82a) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232chris.c5", 0x2000000, 0x800000, CRC(7a47b7c7) SHA1(a12a0cf57f5d81bb6d8eab0429f6204427c52c75) )
+ ROM_LOAD16_BYTE( "232chris.c6", 0x2000001, 0x800000, CRC(867c138b) SHA1(fa9c5237ed5d59aed23b8df5bb2504e629433e01) )
+ROM_END
+
+ROM_START( kof97cn )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232cn.p1", 0x000000, 0x100000, CRC(082933c8) SHA1(e6f8bc7eb0e4ed25b37cc9324ccf170c69331212) )
+ ROM_LOAD16_WORD_SWAP( "232cn.p2", 0x100000, 0x600000, CRC(d22d3ca3) SHA1(f7cb7cbd7dd043c5436030b8280456271a4d782a) )
+
+ NEO_SFIX_128K( "232cn.s1", CRC(de5ad278) SHA1(3d041c5e51b5076dacef235cd2847b09722e86a2) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232cn.c1", 0x0000000, 0x800000, CRC(8c3d2c0c) SHA1(e61e0e3620a35695a80403a91ba9b889e38c2581) )
+ ROM_LOAD16_BYTE( "232cn.c2", 0x0000001, 0x800000, CRC(43ce69ae) SHA1(16b65a55d4631602d751bd91ef9bdc49fedd41fe) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97co )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232co.p1", 0x000000, 0x100000, CRC(117cb452) SHA1(df7fad0484e486fe743899cc07ac2a9eb5e98ebd) )
+ ROM_LOAD16_WORD_SWAP( "232co.p2", 0x100000, 0x400000, CRC(4a97480c) SHA1(a12b05c4f8c4305d809fafe8d525cdb2ee0e0e7e) )
+
+ NEO_SFIX_128K( "232cb2.s1", CRC(8fe6d842) SHA1(e209b7fca380093f711d3b3396f1160beb7b33bd) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97co6 ) // Ivex's KOF97 COMBO 2006
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232co6.p1", 0x000000, 0x100000, CRC(9a8762e2) SHA1(c4b6c330acc9dfd1cb8bb3389dfe3881ed689cb4) )
+ ROM_LOAD16_WORD_SWAP( "232co6.p2", 0x100000, 0x400000, CRC(3586a046) SHA1(3eb354d929bbf36188a7e99798ee37ce18c4a377) )
+
+ NEO_SFIX_128K( "232co6.s1", CRC(e9960efa) SHA1(2af54d22368204e70ac7b6697ba4ad148271c08b) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97cr ) /* The King of Fighters '97 - Remix by CHL Hack by Leather - (Character move and behaviour change - extra stage select) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232cr.p1", 0x000000, 0x100000, CRC(76ec749d) SHA1(7b8c208eb6559f350a0fac031b936d6e04928ae6) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97cy ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232cy.p1", 0x000000, 0x4550c4, CRC(070d8bd6) SHA1(2565bd372bb2a1aa88b55b770e48e7bfc82823d8) )
+ ROM_LOAD16_WORD_SWAP( "232cy.p2", 0x100000, 0x400000, CRC(97fd8943) SHA1(2127846451507769d49747f42c97be5b1a82ad93) )
+
+ //NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "232cy.s1", 0x000000, 0x20000, CRC(aaef5283) SHA1(e2b3fcedebf22cc40e671a651678b5a68868f701) )
+ ROM_IGNORE( 0x434f55 )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232cy.c1", 0x0000000, 0x800000, CRC(503850f7) SHA1(004cc243a424bbe3b81c32ba513999c2fdd2b430) )
+ ROM_LOAD16_BYTE( "232cy.c2", 0x0000001, 0x800000, CRC(ce3b418b) SHA1(8f605f0ea992b954bd540435156ce0cafaa5abed) )
+ ROM_LOAD16_BYTE( "232cy.c3", 0x1000000, 0x800000, CRC(52e5f3a7) SHA1(bae549239b0422dfb26b24c6d4a1e501dbb00cf0) )
+ ROM_LOAD16_BYTE( "232cy.c4", 0x1000001, 0x800000, CRC(b97c21e3) SHA1(8d79460de1ac0cf147292b9018661a729140e3f9) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97dse ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232dse.p1", 0x000000, 0x100000, CRC(8f00511f) SHA1(7c04420f8d35034ac3995bc0764d444c843184f1) )
+ ROM_LOAD16_WORD_SWAP( "232dse.p2", 0x100000, 0x400000, CRC(0fa5639a) SHA1(ead4d2c4d6d13160170d121b9244eaf427637aaa) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97eh ) /* The King of Fighters '97 - Super Enhance Hack by Creamymami, Leather and Ydmis - (Can choose Orochi + 5 add. characters - ultra kill start is max in Advanced Mode - ultra power hack ABC - extra stage select) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232eh.p1", 0x000000, 0x100000, CRC(3d4eb515) SHA1(7d1ca643fb3872495fa681bc28a975d92822b7f0) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97eh2 ) /* The King of Fighters '97 - Super Enhance Hack by Leather and Ydmis - (Can choose Orochi + 5 add. characters - ultra kill start is max in Advanced Mode - power hack ABC - extra stage select) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232eh2.p1", 0x000000, 0x100000, CRC(dc81f242) SHA1(24457a3570b8ef802d90576f4e32f1701ebf2018) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97eho ) /* The King of Fighters '97 - Enhance by Ydmis - (Can choose Orochi + 5 add. characters - ultra kill start is max in Advanced Mode - power hack ABC) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232eho.p1", 0x000000, 0x100000, CRC(83caa31c) SHA1(8db7f86464b91a56a168ec3d639f4c1fbaaa0499) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ei ) // all confirmed (diff colours of kof97co)
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ei.p1", 0x000000, 0x100000, CRC(5d8e9114) SHA1(5d9262c17758d64524f1af8266d16f336df283f9) )
+ ROM_LOAD16_WORD_SWAP( "232ei.p2", 0x100000, 0x400000, CRC(39259db2) SHA1(741a9ab344f182c06806b1ee4d2e2b8f5521bf6e) )
+
+ NEO_SFIX_128K( "232ae.s1", CRC(d4957067) SHA1(b756c97b050296db9b00e0bc6cdd79e4d2e2273e) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232ae.c1", 0x0000000, 0x800000, CRC(ea16b711) SHA1(e54d1a0b559f1ef326ee86bc89e9f1b399f08b32) )
+ ROM_LOAD16_BYTE( "232ae.c2", 0x0000001, 0x800000, CRC(b7bef674) SHA1(378a67dfa7dba03900dd7c70a3473c12f9879af1) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97evo ) // Evolution
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232evo.p1", 0x000000, 0x100000, CRC(8ee0d743) SHA1(7bfd8428efb0a738decccf0f2120dac1c4bc3a6a) )
+ ROM_LOAD16_WORD_SWAP( "232evo.p2", 0x100000, 0x400000, CRC(5cbb2499) SHA1(58e21c1ff7afbfcca0a733e2b3e9f54b2317ed42) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97evoa ) // Old evolution
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232evoa.p1", 0x000000, 0x100000, CRC(d439c4ed) SHA1(67117ffce3c95615d75eb298c50224685df5f0b7) )
+ ROM_LOAD16_WORD_SWAP( "232evoa.p2", 0x100000, 0x400000, CRC(d7da3056) SHA1(85327e846a60dbe24d997fe2dc1714e884bb46d1) )
+
+ NEO_SFIX_128K( "232evoa.s1", CRC(f3c0e90a) SHA1(257f20127a39e8534fe84fbcf2565b162feef4a5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97frb ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232frb.p1", 0x000000, 0x100000, CRC(3c5e84fc) SHA1(b71391369293a81cb22a849e1682e141e9d8c0b3) )
+ //ROM_LOAD16_WORD_SWAP( "232frb.pg1", 0x000000, 0x100000, CRC(5c2400b7) SHA1(49e23f80c012c62146a1bb8f254a7597823de430) ) // alternate rom in the set
+ ROM_LOAD16_WORD_SWAP( "232frb.p2", 0x100000, 0x400000, CRC(f7e09607) SHA1(f64d394226876e1d189549ba0fd7fb3c4fd9df82) )
+
+ NEO_SFIX_128K( "232frb.s1", CRC(3c9af3f7) SHA1(7320fa38fc6db4f3ab6077d2541bb16fa5fb31ef) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232frb.c1", 0x0000000, 0x800000, CRC(6f837a71) SHA1(dfc6dcb9e3def1c78fb43550a332657fae68650f) )
+ ROM_LOAD16_BYTE( "232frb.c2", 0x0000001, 0x800000, CRC(c1a51c17) SHA1(38b8862267daf7975a235dc72cf787256ca108fb) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97hk ) // Evolution Hakeshu
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232evoa.p1", 0x000000, 0x100000, CRC(d439c4ed) SHA1(67117ffce3c95615d75eb298c50224685df5f0b7) )
+ ROM_LOAD16_WORD_SWAP( "232hk.p2", 0x100000, 0x400000, CRC(e912c4b8) SHA1(78df184e5000f871e0188b1b7785291525ca11e6) )
+
+ NEO_SFIX_128K( "232evoa.s1", CRC(f3c0e90a) SHA1(257f20127a39e8534fe84fbcf2565b162feef4a5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232xxx.c1", 0x0000000, 0x800000, CRC(91697765) SHA1(19ea6bf74da9dd4fed4213d82cb7d003a871599b) )
+ ROM_LOAD16_BYTE( "232xxx.c2", 0x0000001, 0x800000, CRC(0c069a41) SHA1(094f587325acc55b6663a17fce6ea0920331a3ff) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232hk.c5", 0x2000000, 0x800000, CRC(03aa727d) SHA1(e8e571fb00252dccc68ecfc9e20cf5e64491e6a4) )
+ ROM_LOAD16_BYTE( "232hk.c6", 0x2000001, 0x800000, CRC(d7663c50) SHA1(790c761a5fab033851700de3d63d7ab4257f6caf) )
+ROM_END
+
+ROM_START( kof97hl ) // Fall Ban Edition
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232hl.p1", 0x000000, 0x100000, CRC(16767f2b) SHA1(84ee5c13d437611706a429635cb51fe61d477c02) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97hxd ) /* The King of Fighters '97 - Hack by Hxdhome - (Can choose Orochi + 5 add. characters) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232hxd.p1", 0x000000, 0x100000, CRC(ec95b2cf) SHA1(0f5ac8bc9eaeb32441ee72a9ce93fbb9d9462359) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ice ) /* The King of Fighters '97 - Colour fix by Cz-Kyo97 - (Colour change - ice) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232ice.p2", 0x100000, 0x400000, CRC(b26e3767) SHA1(6b3d513b523d3513e9300db54891abd1079a5865) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97irgc ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232irgc.p1", 0x000000, 0x100000, CRC(fbc9341f) SHA1(fb9605f94a438aa79ad03fb9fd6f5fca7a6d1edb) )
+ ROM_LOAD16_WORD_SWAP( "232irgc.p2", 0x100000, 0x400000, CRC(6c9092ba) SHA1(d17d4349c799dcba22b383d36f0cfc8e2bac7adf) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232rev.c5", 0x2000000, 0x400000, CRC(9c543bc6) SHA1(cb227c71aca5e632a08fbd7f5af53581b5b28f93) )
+ ROM_LOAD16_BYTE( "232rev.c6", 0x2000001, 0x400000, CRC(e3feb991) SHA1(978b106bccd31c8229c9abcc6e682a7b5fc98154) )
+ROM_END
+
+ROM_START( kof97irgc2 ) // All confirmed (was "kof97yb" when found)
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232irgc2.p1", 0x000000, 0x100000, CRC(14532350) SHA1(093d1da101a39c371512416ee90cd2e15c92723a) )
+ ROM_LOAD16_WORD_SWAP( "232irgc2.p2", 0x100000, 0x400000, CRC(696ae4a5) SHA1(be8341ef598bd95c07a1218d1cfcc3f82bbbd6b7) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232rev.c5", 0x2000000, 0x400000, CRC(9c543bc6) SHA1(cb227c71aca5e632a08fbd7f5af53581b5b28f93) )
+ ROM_LOAD16_BYTE( "232rev.c6", 0x2000001, 0x400000, CRC(e3feb991) SHA1(978b106bccd31c8229c9abcc6e682a7b5fc98154) )
+ROM_END
+
+ROM_START( kof97kai )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232kai.p1", 0x000000, 0x100000, CRC(e96524fe) SHA1(e9a523233228ed57bdbc2b8eb620054cadb381f2) )
+ ROM_LOAD16_WORD_SWAP( "232kai.p2", 0x100000, 0x400000, CRC(839c4b8c) SHA1(23ae586feef65ab091fe02eb9d845cedfc4e00b1) )
+
+ NEO_SFIX_128K( "232kai.s1", CRC(1455f002) SHA1(6e164be5303e75f366eb1172423b8552a9257a9c) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97kp ) /* The King of Fighters '97 - Hack by KofPerfect - (Can choose Orochi) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232kp.p1", 0x000000, 0x100000, CRC(f29de6b6) SHA1(aafb7925df9fed83762ecf363855b971baaf614f) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97kp1 )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232kp1.p1", 0x000000, 0x100000, CRC(d0c63184) SHA1(71cc96a0388a09695cfa5b5f7c04dbb40ab49615) )
+ ROM_LOAD16_WORD_SWAP( "232kp1.p2", 0x100000, 0x600000, CRC(fddde211) SHA1(6e8280ad7a9dda204f30e40d9575e31d3e436ef2) )
+
+ NEO_SFIX_128K( "232yk1.s1", CRC(c7dbe270) SHA1(0b81b31da6c18dd02e8d0442100685d5ff61bece) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk1.c1", 0x0000000, 0x800000, CRC(f748da71) SHA1(5012e8537e7d16d365d9c088a70323b3b71cd6f5) )
+ ROM_LOAD16_BYTE( "232kp1.c2", 0x0000001, 0x800000, CRC(5869e4ad) SHA1(17b3d921ad0118e9fb61fd665639901c4b3bc2f5) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232yk1.c5", 0x2000000, 0x800000, CRC(00a77a26) SHA1(a86054fd3870be49ad6055a2fab663cb5ef27de2) )
+ ROM_LOAD16_BYTE( "232yk1.c6", 0x2000001, 0x800000, CRC(0b504e35) SHA1(597cabd5077670827ad3e809d6cd52c9c7f3013a) )
+ROM_END
+
+ROM_START( kof97lb ) // LB70's Quanhuang Shaman 3.0
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232lb.p1", 0x000000, 0x100000, CRC(2e88c8e6) SHA1(87b947e735b52803f87b77033471b156c2e83a4d) )
+ ROM_LOAD16_WORD_SWAP( "232lb.p2", 0x100000, 0x400000, CRC(76111847) SHA1(a7791f28d6f63379b03ea8af292524ffd7784872) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97lc ) /* The King of Fighters '97 - Colour fix by Liuzheng0131 - (Colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232lc.p2", 0x100000, 0x400000, CRC(852cfee6) SHA1(8db51a12a05f2312c2a241027c61711137a0ca94) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97lr )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232lr.p1", 0x000000, 0x100000, CRC(447e81b2) SHA1(26c1056488803782f49d4f8f4ae2df3c840fcf57) )
+ ROM_LOAD16_WORD_SWAP( "232lr.p2", 0x100000, 0x400000, CRC(a9ecc9d7) SHA1(5860da51bd304b2837d30aef698d498c12a13d20) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232lr.c1", 0x0000000, 0x800000, CRC(6c224c0b) SHA1(54ace1387646728ddd2fe3feea4b22c46e75fc7d) )
+ ROM_LOAD16_BYTE( "232lr.c2", 0x0000001, 0x800000, CRC(badf8fa5) SHA1(07381d1d64f5fd4cd11989a2f715298c6d4827cd) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97m )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232m.p1", 0x000000, 0x100000, CRC(eaea9193) SHA1(ca3d9216ae1e092f369f197335ae57fe40d5dcc0) )
+ ROM_LOAD16_WORD_SWAP( "232m.p2", 0x100000, 0x400000, CRC(a50f6113) SHA1(ebe5f66b482e3e3818de0c894cf4b1cb1c262ece) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97mit ) /* The King of Fighters '97 - Enhance by MIT - (Character style enhance, see kof97mit.txt for more 20050324) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232mit.p1", 0x000000, 0x100000, CRC(B96600CE) SHA1(260A42AAF117DE392A32A473E552E73253FC0EA7) )
+ ROM_LOAD16_WORD_SWAP( "232mit.p2", 0x100000, 0x400000, CRC(44FECE8E) SHA1(F1604613267297FF3B375DAD397CE6E1256078E6) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97mj )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232mj.p1", 0x000000, 0x100000, CRC(21f97218) SHA1(8433172fe2df08f608c54479671153803da9d8cf) )
+ ROM_LOAD16_WORD_SWAP( "232mj.p2", 0x100000, 0x400000, CRC(acfec2d1) SHA1(2bb218bcc1bbadb94af0ad2bda49b71cad8e5ef5) )
+
+ NEO_SFIX_128K( "232mj.s1", CRC(436a47bd) SHA1(051185a2ab766e7ab5e6e81628c478c3e89c70b2) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232mj.c1", 0x0000000, 0x800000, CRC(6099f8fa) SHA1(77df1bc28e983d485a92c44b290334052e096d58) )
+ ROM_LOAD16_BYTE( "232mj.c2", 0x0000001, 0x800000, CRC(c7440dfd) SHA1(83040bf02153de6529a163348e6b8aeceeb8799e) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232bng.c5", 0x2000000, 0x400000, CRC(e749d4d2) SHA1(8f4c54c0355decebfc47b8d11b863dcd84647688) )
+ ROM_LOAD16_BYTE( "232bng.c6", 0x2000001, 0x400000, CRC(dc7c5cd7) SHA1(f33b62a1ded71edf0b2bd8e6f2495da34c7b1984) )
+ROM_END
+
+ROM_START( kof97nd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232nd.p1", 0x000000, 0x100000, CRC(fb677720) SHA1(a27205842835564b364f442fd21e95aa70ac0f89) )
+ ROM_LOAD16_WORD_SWAP( "232nd.p2", 0x100000, 0x400000, CRC(edd56448) SHA1(5ce8ac573ffffce0408c2a5f57d44eb9a0d63bd1) )
+
+ NEO_SFIX_128K( "232nd.s1", CRC(85cec2a2) SHA1(476ddddc7aafe0042f0fe07a95398ba1ca96e944) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232xxx.c1", 0x0000000, 0x800000, CRC(91697765) SHA1(19ea6bf74da9dd4fed4213d82cb7d003a871599b) )
+ ROM_LOAD16_BYTE( "232xxx.c2", 0x0000001, 0x800000, CRC(0c069a41) SHA1(094f587325acc55b6663a17fce6ea0920331a3ff) )
+ ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) )
+ ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) )
+ ROM_LOAD16_BYTE( "232nd.c5", 0x2000000, 0x400000, CRC(07064635) SHA1(66608e7291c05a10d897c3c342b3a2d98c8cb0a6) )
+ ROM_LOAD16_BYTE( "232nd.c6", 0x2000001, 0x400000, CRC(0f33ade8) SHA1(1228c312d2a77f1678f14606289754a22ad8d03b) )
+ROM_END
+
+ROM_START( kof97ne )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ne.p1", 0x000000, 0x100000, CRC(E742C038) SHA1(018a0273c959a7885bda850aade75e411c11c633) )
+ ROM_LOAD16_WORD_SWAP( "232ne.p2", 0x100000, 0x400000, CRC(A028904B) SHA1(f099a31d9f61fc9c63f8816f942c13fb67f56d52) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232ne.c5", 0x2000000, 0x400000, CRC(6FE02054) SHA1(47b3a6f0867e15900deb3ffd5f888cbcf6e2bbdd) )
+ ROM_LOAD16_BYTE( "232ne.c6", 0x2000001, 0x400000, CRC(0F96C84A) SHA1(79a8e1ff71051ece0ca6c8f75b0bd1cd567f2e33) )
+ROM_END
+
+ROM_START( kof97neo )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232neo.p1", 0x000000, 0x100000, CRC(676504e1) SHA1(0a802cf782a97a52251582ff35e70f16fb77fc44) )
+ ROM_LOAD16_WORD_SWAP( "232neo.p2", 0x100000, 0x400000, CRC(10f61d2a) SHA1(b687c3813fc262d351a37c6f47cc141a3f4fba00) )
+
+ NEO_SFIX_128K( "232neo.s1", CRC(7995d156) SHA1(d218dd4829b5c4891975a1da9c277a116ab6ecb4) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97nude )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232xxx.c1", 0x0000000, 0x800000, CRC(91697765) SHA1(19ea6bf74da9dd4fed4213d82cb7d003a871599b) )
+ ROM_LOAD16_BYTE( "232xxx.c2", 0x0000001, 0x800000, CRC(0c069a41) SHA1(094f587325acc55b6663a17fce6ea0920331a3ff) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232xxx.c5", 0x2000000, 0x400000, CRC(f0336a63) SHA1(aefb4ac0341d1b35d1b61395b3baf99af2e9ab98) )
+ ROM_LOAD16_BYTE( "232xxx.c6", 0x2000001, 0x400000, CRC(52968b9f) SHA1(9f3be2219e3c1a19626624ec16f175ac25723bce) )
+ROM_END
+
+ROM_START( kof97phl ) // Plus Hack by Liyang1983
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232phl.p1", 0x000000, 0x100000, CRC(195cb02f) SHA1(6ced6f7c94b0c8a850ee1ae4ffdf2ab5a3c4627f) )
+ ROM_LOAD16_WORD_SWAP( "232phl.p2", 0x100000, 0x400000, CRC(4cb23f07) SHA1(efd888c5cde03a687547e42e494aac2886198b00) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97pj ) /* The King of Fighters '97 - Hack by TcwLee - (A fixed HXD version - can choose Orochi + add. Iori, Yashiro, Shermie, Chris and Leona) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232pj.p1", 0x000000, 0x100000, CRC(91692771) SHA1(ef1c2d7be60798bd778785d6a8d4fd2250b64679) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97pjc ) /* The King of Fighters '97 - (kof97pjc) - Colour fix by TcwLee - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232pjc.p2", 0x100000, 0x400000, CRC(a42ff099) SHA1(498d14dbf18640e543cb417733c90e7d2f93d715) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97pl2 ) /* Plus hack set 2 */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232pl2.p1", 0x000000, 0x100000, CRC(1a20007a) SHA1 (70d92f1c848b4303d037423549c7b6d596680b23) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232bh.s1", CRC(71c426e6) SHA1(1fd4a2537daf6a26e1e2707183b0f1762d7a25ff) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97pl3 ) /* Plus hack set 3 */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xxx.p1", 0x000000, 0x100000, CRC(d5d92967) SHA1(04079b92fe73ee8ee2c08f63388a74435e894945) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232pl3.s1", CRC(cf6afb00) SHA1(aca3d9f571af3195a96bf044f353b3f0bc4cfc3a) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97pla )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232pla.p1", 0x000000, 0x100000, CRC(035911c5) SHA1(3321862384ec91174f1822cfdbc2bf1d1407e775) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232pla.s1", CRC(4ee2149a) SHA1(180a1a90021031eac1a643b769d9cdeda56518f5) ) // scrambled
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97plc ) // Plus Black Edition by ZKW
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232plc.p1", 0x000000, 0x100000, CRC(1fc4c254) SHA1(77d6cca4f27c30965f44b39f38bc2cce471d0f92) )
+ ROM_LOAD16_WORD_SWAP( "232plc.p2", 0x100000, 0x400000, CRC(c6901879) SHA1(bcd2998750f89421bef0ae3bae401914cac973df) )
+
+ NEO_SFIX_128K( "232plc.s1", CRC(d8266286) SHA1(ce59a15ec4d8c8a8ae759c10d0ebb5df0bef85d9) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232plc.c5", 0x2000000, 0x400000, CRC(763040eb) SHA1(998df039fce45b13a1dbeecaf44e2f9e290141da) )
+ ROM_LOAD16_BYTE( "232plc.c6", 0x2000001, 0x400000, CRC(60b303b1) SHA1(5da1d5fcdd0dcdf1ff583378ac34a977273e4f2b) )
+ROM_END
+
+ROM_START( kof97plus )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232plus.p1", 0x000000, 0x100000, CRC(0b124634) SHA1(1c272a5601447ee26629eb99482c5de9148615a7) )
+ ROM_LOAD16_WORD_SWAP( "232plus.p2", 0x100000, 0x400000, CRC(1cb2023c) SHA1(6a81f7e7e8aa88e21f50fff1117a051056c90c41) )
+
+ NEO_SFIX_128K( "232kai.s1", CRC(1455f002) SHA1(6e164be5303e75f366eb1172423b8552a9257a9c) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) )
+ ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) )
+ ROM_LOAD16_BYTE( "232z.c5", 0x2000000, 0x400000, CRC(9af776d3) SHA1(a054ca17e6b35c8743286a025488b04186eebdbe) )
+ ROM_LOAD16_BYTE( "232z.c6", 0x2000001, 0x400000, CRC(9428d70c) SHA1(c0122ef6f83645f57edef6956400fe49fd94dfca) )
+ROM_END
+
+ROM_START( kof97pm )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232pm.p1", 0x000000, 0x100000, CRC(34ccabae) SHA1(9d631b5dfac3d7564aa60a17bd15b565081bca02) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ps ) // Playstation Hack
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ps.p1", 0x000000, 0x100000, CRC(fc25feec) SHA1(5e2677ce1011789bd74c208cd6b1286f4ca8f4bd) )
+ ROM_LOAD16_WORD_SWAP( "232ps.p2", 0x100000, 0x400000, CRC(90723643) SHA1(62d95957ae51732de30af903dc8f07f5556d15f5) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232ps.c1", 0x0000000, 0x800000, CRC(748ade86) SHA1(3b4d84e978b03f8cd8f2155da524870096e3734f) )
+ ROM_LOAD16_BYTE( "232ps.c2", 0x0000001, 0x800000, CRC(3270fa6e) SHA1(16d6afdf0ed437303a069184bbbbcbc0719f3db6) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232ps.c5", 0x2000000, 0x400000, CRC(47711a8c) SHA1(4105b1326a83d042dd998431c7bea18ee08f124c) )
+ ROM_LOAD16_BYTE( "232ps.c6", 0x2000001, 0x400000, CRC(6703a48a) SHA1(ffdc3f8e65a0197d9fcb9bd0d1d945061bf9736e) )
+ROM_END
+
+ROM_START( kof97rev ) // KOF97 revival
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rev.p1", 0x000000, 0x100000, CRC(565adea2) SHA1(fa179e2b958096033692bd523571e130f8f52b77) )
+ ROM_LOAD16_WORD_SWAP( "232rev.p2", 0x100000, 0x400000, CRC(96848312) SHA1(198ddbbbc0834b8cdabf1f765d6c82e382de95ff) )
+
+ NEO_SFIX_128K( "232rev.s1", CRC(61a87d84) SHA1(3e5c17c13eacf48c92fbb3863c0af89570e44b31) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232rev.c1", 0x0000000, 0x800000, CRC(ba114558) SHA1(8e66d600b3c65061f83622934585f58ba8809691) )
+ ROM_LOAD16_BYTE( "232rev.c2", 0x0000001, 0x800000, CRC(cb287153) SHA1(d08559131d0fc9900de12433733af176d698dff4) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232rev.c5", 0x2000000, 0x400000, CRC(9c543bc6) SHA1(cb227c71aca5e632a08fbd7f5af53581b5b28f93) )
+ ROM_LOAD16_BYTE( "232rev.c6", 0x2000001, 0x400000, CRC(e3feb991) SHA1(978b106bccd31c8229c9abcc6e682a7b5fc98154) )
+ROM_END
+
+ROM_START( kof97ribe ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ribe.p1", 0x000000, 0x4551c6, CRC(21863b47) SHA1(e3e2b1f6818cd37d5482be9108269b4bbfd7d459) )
+ ROM_LOAD16_WORD_SWAP( "232ribe.p2", 0x100000, 0x400000, CRC(5ad1ecc6) SHA1(83ffffa98013ca8fcec9157846e272b0e1184968) )
+ ROM_IGNORE( 0x054f64 )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "232ribe.v1", 0x000000, 0x20000, CRC(dcefb4c5) SHA1(9d3aebf0af27bc8e148621e3da7b73994e0725a1) )
+ ROM_IGNORE( 0x434f50 )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97rk ) // Hack by Risko
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rk.p1", 0x000000, 0x100000, CRC(940409b7) SHA1(94d1e0ec3460f5a2087f5fc1e1455df123f18c28) )
+ ROM_LOAD16_WORD_SWAP( "232rk.p2", 0x100000, 0x400000, CRC(b5cc5323) SHA1(30d156629a6cf69a2a9f6efb679c206e4ed9b2bf) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97rst ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rst.p1", 0x000000, 0x100000, CRC(c20d3712) SHA1(f55f781f0affab4d78fa5484ec9ed4254f359c0e) )
+ ROM_LOAD16_WORD_SWAP( "232rst.p2", 0x100000, 0x400000, CRC(ca32e3d2) SHA1(a1c540f9a6e305c3d73b04117a630abe6ba6f0fc) )
+
+ NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) )
+ ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) )
+ ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) )
+ ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) )
+ ROM_LOAD16_BYTE( "232rst.c5", 0x2000000, 0x400000, CRC(6eba5e06) SHA1(939ba1b47e69a3d578f17256dd97d2f4f9238ad4) )
+ ROM_LOAD16_BYTE( "232rst.c6", 0x2000001, 0x400000, CRC(168e4ac5) SHA1(437db7a1388cdd1ff80b703a64655a73443b438f) )
+ROM_END
+
+ROM_START( kof97rst2 ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rst2.p1", 0x000000, 0x100000, CRC(7d6ad86d) SHA1(9b2e9430b11a7c29e547a5a2af5ba9f914925f95) )
+ ROM_LOAD16_WORD_SWAP( "232rst.p2", 0x100000, 0x400000, CRC(ca32e3d2) SHA1(a1c540f9a6e305c3d73b04117a630abe6ba6f0fc) )
+
+ NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) )
+ ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) )
+ ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) )
+ ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) )
+ ROM_LOAD16_BYTE( "232rst.c5", 0x2000000, 0x400000, CRC(6eba5e06) SHA1(939ba1b47e69a3d578f17256dd97d2f4f9238ad4) )
+ ROM_LOAD16_BYTE( "232rst.c6", 0x2000001, 0x400000, CRC(168e4ac5) SHA1(437db7a1388cdd1ff80b703a64655a73443b438f) )
+ROM_END
+
+ROM_START( kof97rst3 ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rst3.p1", 0x000000, 0x100000, CRC(b7e4b5bd) SHA1(1fe4d492492dd4716f1b31319ad68b757c7fab3a) )
+ ROM_LOAD16_WORD_SWAP( "232rst3.p2", 0x100000, 0x400000, CRC(620a63ed) SHA1(20fa7c8d694a7f15715840240192c8d6e34e68b4) )
+
+ NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) )
+ ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97rv )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232rv.p1", 0x000000, 0x100000, CRC(eff2926f) SHA1(d9a64806ace1d2b08d8a5b2092bbfeb93c3230fd) )
+ ROM_LOAD16_WORD_SWAP( "232rv.p2", 0x100000, 0x400000, CRC(478a61bd) SHA1(e826fcf4c3392a833045a285d354a72421a527bc) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232z.c5", 0x2000000, 0x400000, CRC(9af776d3) SHA1(a054ca17e6b35c8743286a025488b04186eebdbe) )
+ ROM_LOAD16_BYTE( "232z.c6", 0x2000001, 0x400000, CRC(9428d70c) SHA1(c0122ef6f83645f57edef6956400fe49fd94dfca) )
+ROM_END
+
+ROM_START( kof97saw ) /* The King of Fighters '97 - (kof97saw) - Hack by Wesker - (Shingo: The content must kill the technique entire flame special effect is the red flame) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232saw.p1", 0x000000, 0x100000, CRC(eb99d0d0) SHA1(43d7495ec873b3c1f9cc33ecdc124f020851e1f7) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97sex )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232sex.p2", 0x100000, 0x400000, CRC(ca63e700) SHA1(1b6a4d3491e467eb3cb0d2d947707482cac3ea34) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232sex.c1", 0x0000000, 0x800000, CRC(085bcdfa) SHA1(042deb49b20763bbe0a3e8236a6d5798b3036536) )
+ ROM_LOAD16_BYTE( "232sex.c2", 0x0000001, 0x800000, CRC(78613707) SHA1(68f244a83e7314fe62a61bad0d0e5253a493da54) )
+ ROM_LOAD16_BYTE( "232sex.c3", 0x1000000, 0x800000, CRC(afde78ed) SHA1(2075d68980a867b498fe812f3265a36bddd57a81) )
+ ROM_LOAD16_BYTE( "232sex.c4", 0x1000001, 0x800000, CRC(9d61d6ca) SHA1(03d81bcda5d1d08fbe2eb2569937bcb0fdf83269) )
+ ROM_LOAD16_BYTE( "232sex.c5", 0x2000000, 0x400000, CRC(10ea56c6) SHA1(8324418820f88264c19be5fd73a0fe98fe5b0c0e) )
+ ROM_LOAD16_BYTE( "232sex.c6", 0x2000001, 0x400000, CRC(d48fe6c9) SHA1(6fec93dcc562b7243b2f550857073323f81d3db7) )
+ROM_END
+
+ROM_START( kof97shi ) // Evolution Shin Edition
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232shi.p1", 0x000000, 0x100000, CRC(dbcec604) SHA1(5bf014bad8ce228f9683151e2e4b0e359108c920) )
+ ROM_LOAD16_WORD_SWAP( "232shi.p2", 0x100000, 0x400000, CRC(5a500cf6) SHA1(3239e819cc68011e460160b534fb6c5c26604c8a) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97sm ) // Smoke Version
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232sm.p2", 0x100000, 0x400000, CRC(d7e62250) SHA1(34d56d01e4e15a05ea7890bda0148994a7763c39) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97svs )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232svs.p1", 0x000000, 0x454fd8, CRC(8edbfb69) SHA1(1c5893f24d0cdb7fe275a7b14f844ef9e2296417) )
+ ROM_LOAD16_WORD_SWAP( "232svs.p2", 0x100000, 0x454f46, CRC(9deca038) SHA1(dbb756ad859e8ec4f7ed1400f5d839401068ee58) )
+
+ NEO_SFIX_128K( "232svs.s1", CRC(867a9aec) SHA1(9483eb67ce8bad9a5933554e25a34f68b1ad6f13) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232svs.c1", 0x0000000, 0x800000, CRC(7173901b) SHA1(a0eb2c269560baaabb083f733b7bea6aab954eae) )
+ ROM_LOAD16_BYTE( "232svs.c2", 0x0000001, 0x800000, CRC(404ef620) SHA1(e3ca4e677c6f76e467e482172d9acbb60cc819b8) )
+ ROM_LOAD16_BYTE( "232svs.c3", 0x1000000, 0x800000, CRC(27a27dd5) SHA1(658000df70768f3ca257d64eaedadad26e34fc95) )
+ ROM_LOAD16_BYTE( "232svs.c4", 0x1000001, 0x800000, CRC(e6a91916) SHA1(b21fda210dac93174585c70fd58735ed42a5b7f0) )
+ ROM_LOAD16_BYTE( "232svs.c5", 0x2000000, 0x800000, CRC(89dc1ee5) SHA1(4eda0211a3e59ca3c70cec294fa671c789ec905e) )
+ ROM_LOAD16_BYTE( "232svs.c6", 0x2000001, 0x800000, CRC(6f047b36) SHA1(9df4cb34f3b28a97c0b903394b3e2cdb79906582) )
+ROM_END
+
+ROM_START( kof97svsb2 ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232svsb2.p1", 0x000000, 0x454fd8, CRC(c9a489de) SHA1(b93dd3aa9e91456c7d92b81dc96d60c1c94797d3) )
+ ROM_LOAD16_WORD_SWAP( "232svsb2.p2", 0x100000, 0x400000, CRC(9f2c57dd) SHA1(3cf16a8b0d79f95279ca7ba19678c50499b470e4) )
+ ROM_IGNORE( 0x054f64 )
+
+ NEO_SFIX_128K( "232xt.s1", CRC(d6fe166f) SHA1(55e70395466ab68e7a170be3aa6f5978e704701b) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) )
+ ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232svsb2.c5", 0x2000000, 0x800000, CRC(2cb9f438) SHA1(a358f81e937504b6bc087bf0e40a17ac07a968b2) )
+ ROM_LOAD16_BYTE( "232svsb2.c6", 0x2000001, 0x800000, CRC(95029580) SHA1(51cc1186269da68c89af2e2f491477e0e2eb244f) )
+ROM_END
+
+ROM_START( kof97sw ) /* The King of Fighters '97 - (kof97sw) - Hack by Wesker - (Shingo: 26a\c the 623a\c special effect is the red flame) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232sw.p1", 0x000000, 0x100000, CRC(b4378ad4) SHA1(18210a5259f1499123277532dabb00b0c7bee50e) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97tse ) // All confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232tse.p1", 0x000000, 0x454f50, CRC(30408a6a) SHA1(71fee1b90a6e19baa98b6bb3c9a34034fbfe132c) )
+ ROM_LOAD16_WORD_SWAP( "232tse.p2", 0x100000, 0x400000, CRC(b157888a) SHA1(fa791e9abb7f6f8ac1497888f720bf62ad907949) )
+ ROM_IGNORE( 0x54f64 )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97wh ) /* The King of Fighters '97 - (kof97wh) - Hack by Wesker - (Style change for Kyo to 95' Kyo) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232wh.p1", 0x000000, 0x100000, CRC(a2534a20) SHA1(5717e30eeac96de6e23e0e5d4e9b1792362c8ae3) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97wpls ) /* The King of Fighters '97 - (kof97wpls) - Hack by Wesker - ('PLUS' version by Wesker) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232wpls.p1", 0x000000, 0x100000, CRC(036c885d) SHA1(7c5b1c2901a11f627c3552c6846a2aca35397eaf) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97xbt )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xbt.p1", 0x000000, 0x100000, CRC(518416bd) SHA1(db1f1f739ddb182d4215482a41ecf177909fe2c5) )
+ ROM_LOAD16_WORD_SWAP( "232xbt.p2", 0x100000, 0x400000, CRC(3a1f7c4e) SHA1(a4f2059543e0d31b6e7e27775966955a9a41e049) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232ne.c5", 0x2000000, 0x400000, CRC(6fe02054) SHA1(47b3a6f0867e15900deb3ffd5f888cbcf6e2bbdd) )
+ ROM_LOAD16_BYTE( "232ne.c6", 0x2000001, 0x400000, CRC(0f96c84a) SHA1(79a8e1ff71051ece0ca6c8f75b0bd1cd567f2e33) )
+ROM_END
+
+ROM_START( kof97xi )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xi.p1", 0x000000, 0x100000, CRC(acc7bfb2) SHA1(64e0b8897a7f80627ac020452daaa1aa2a073ffe) )
+ ROM_LOAD16_WORD_SWAP( "232xi.p2", 0x100000, 0x400000, CRC(098f4871) SHA1(d4e7bfe953f6602b71ccb69bb91fc8e78d911467) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232bs.c1", 0x0000000, 0x800000, CRC(47932f00) SHA1(3dcedd194a2138cd8b006462a42b52e925f6b5ce) )
+ ROM_LOAD16_BYTE( "232bs.c2", 0x0000001, 0x800000, CRC(f87c3d84) SHA1(0de2dcb6a475ea6475d67c60a254e6b7cbcde951) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232xi.c5", 0x2000000, 0x800000, CRC(1e441dd9) SHA1(5ae1973f87abec4b84ab76a64dd30c56d8a535ac) )
+ ROM_LOAD16_BYTE( "232xi.c6", 0x2000001, 0x800000, CRC(69d1435a) SHA1(21a1f739dd77ea6d4112896608cde0158c2adf6b) )
+ROM_END
+
+ROM_START( kof97xp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xp.p1", 0x000000, 0x100000, CRC(265396cd) SHA1(aac58b1582bef6de401f70455da26b835e6fd0af) )
+ ROM_LOAD16_WORD_SWAP( "232xp.p2", 0x100000, 0x400000, CRC(da48eb75) SHA1(da516b2fe5de0b740b9126302528805b433335ea) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232lr.c1", 0x0000000, 0x800000, CRC(6c224c0b) SHA1(54ace1387646728ddd2fe3feea4b22c46e75fc7d) )
+ ROM_LOAD16_BYTE( "232lr.c2", 0x0000001, 0x800000, CRC(badf8fa5) SHA1(07381d1d64f5fd4cd11989a2f715298c6d4827cd) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97xt )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xt.p1", 0x000000, 0x100000, CRC(2e4f4e3b) SHA1(122b749fe68057fa030d4f0af270883e99246a31) )
+ ROM_LOAD16_WORD_SWAP( "232xt.p2", 0x100000, 0x400000, CRC(6d4503ce) SHA1(95217d0b8f51a92cb98eb17d4a9c106a1a0a7920) )
+
+ NEO_SFIX_128K( "232xt.s1", CRC(d6fe166f) SHA1(55e70395466ab68e7a170be3aa6f5978e704701b) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) )
+ ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232xt.c5", 0x2000000, 0x800000, CRC(c1bd2375) SHA1(1fbd0e714d5e0e61b90a7a04c5eab3fa4652dfe5) )
+ ROM_LOAD16_BYTE( "232xt.c6", 0x2000001, 0x800000, CRC(a7c8506a) SHA1(c545b5ca9a8559caa17593c5dc137f939f4f42e7) )
+ROM_END
+
+ROM_START( kof97xt1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xt1.p1", 0x000000, 0x100000, CRC(a6cd80ee) SHA1(948f977b19f05a971bb54a7c416a05c05b31caaa) )
+ ROM_LOAD16_WORD_SWAP( "232xt1.p2", 0x100000, 0x400000, CRC(541fdd36) SHA1(64ce02fd84b326bdf1e5857374441ff1dba0976b) )
+
+ NEO_SFIX_128K( "232xt.s1", CRC(d6fe166f) SHA1(55e70395466ab68e7a170be3aa6f5978e704701b) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232xt1.c1", 0x0000000, 0x800000, CRC(e6ad03e0) SHA1(18caab6d6c4d1f26b5f7cca9fc5f715d82086dac) )
+ ROM_LOAD16_BYTE( "232xt1.c2", 0x0000001, 0x800000, CRC(ca25742c) SHA1(69dd52092baf917d00ab7f16235780cbb9f8bfa1) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232xt1.c5", 0x2000000, 0x800000, CRC(780bdd4b) SHA1(f44c3da9f0938a9bcc3ea78a044511e8a5e3fd9f) )
+ ROM_LOAD16_BYTE( "232xt1.c6", 0x2000001, 0x800000, CRC(9e68846d) SHA1(1d389b48d7be965ac7ee7b97f49aace372f266c8) )
+ROM_END
+
+ROM_START( kof97xxx )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232xxx.p1", 0x000000, 0x100000, CRC(d5d92967) SHA1(04079b92fe73ee8ee2c08f63388a74435e894945) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232xxx.c1", 0x0000000, 0x800000, CRC(91697765) SHA1(19ea6bf74da9dd4fed4213d82cb7d003a871599b) )
+ ROM_LOAD16_BYTE( "232xxx.c2", 0x0000001, 0x800000, CRC(0c069a41) SHA1(094f587325acc55b6663a17fce6ea0920331a3ff) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232xxx.c5", 0x2000000, 0x400000, CRC(f0336a63) SHA1(aefb4ac0341d1b35d1b61395b3baf99af2e9ab98) )
+ ROM_LOAD16_BYTE( "232xxx.c6", 0x2000001, 0x400000, CRC(52968b9f) SHA1(9f3be2219e3c1a19626624ec16f175ac25723bce) )
+ROM_END
+
+ROM_START( kof97y ) /* The King of Fighters '97 - Hack by Ydmis - (Can choose add. Iori, Yashiro, Shermie, Chris and Leona) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232y.p1", 0x000000, 0x100000, CRC(d1893f4e) SHA1(64258216d12cd7445062574c4e6690a6bf5b1541) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ya ) /* The King of Fighters '97 - Hack by Ydmis - (Can choose Orochi) (set 1) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ya.p1", 0x000000, 0x100000, CRC(36a82fb7) SHA1(5f45d51b0e28d3b0cc71388934d8cd6830654f53) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yb ) /* The King of Fighters '97 - Hack by Ydmis - (Can choose Orochi) (set 2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yb.p1", 0x000000, 0x100000, CRC(55557bf2) SHA1(46f681a86b6f0e70d2a177e346937e9ef8d33fc9) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97ye ) /* The King of Fighters '97 - Enhance by Ydmis - (Can choose add. Iori, Yashiro, Shermie, Chris and Leona - power hack ABC in Extra Mode) (set 1) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232ye.p1", 0x000000, 0x100000, CRC(35e1bbab) SHA1(beb43970025e9e04eae52386c93621feb4373d7f) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yg ) /* The King of Fighters '97 - Enhance by Ydmis - (Can choose Orochi + add. Iori, Yashiro, Shermie, Chris and Leona - power hack ABC in Extra Mode) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yg.p1", 0x000000, 0x100000, CRC(2ef7c10d) SHA1(b223ddad9547f2899885cd7306bb2baa188c64f2) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yh ) /* The King of Fighters '97 - Enhance by Ydmis - (Can choose add. Iori, Yashiro, Shermie, Chris and Leona - power hack ABC in Extra Mode) (set 2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yh.p1", 0x000000, 0x100000, CRC(a1d23d62) SHA1(3ddb3a5f917c2b4ed3505fd13b1e8c4d0bfdaaa6) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yk )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yk.p1", 0x000000, 0x100000, CRC(e10200f8) SHA1(9a224395b601c2df6616f888ab6b69e2039fd19f) )
+ ROM_LOAD16_WORD_SWAP( "232yk.p2", 0x100000, 0x400000, CRC(e6bfaee4) SHA1(36ddfabe092aaa0604d34838785624857d7ff5ef) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) )
+ ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) )
+ ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) )
+ ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) )
+ ROM_LOAD16_BYTE( "232yk.c5", 0x2000000, 0x800000, CRC(94f234e1) SHA1(0eb67d21572fa1e7b0503d88f526caac65e23a78) )
+ ROM_LOAD16_BYTE( "232yk.c6", 0x2000001, 0x800000, CRC(c794f747) SHA1(242fe9b75f86719dc02493ea6f295cf3b3d7fc7e) )
+ROM_END
+
+ROM_START( kof97yk1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yk1.p1", 0x000000, 0x100000, CRC(cdbcdf48) SHA1(4ac5649955afcbf06a44c4a265db9e6262f00f82) )
+ ROM_LOAD16_WORD_SWAP( "232yk1.p2", 0x100000, 0x400000, CRC(89716899) SHA1(55c3bd5f12dbaf4e6f11582986d8f8e73fbe3c4b) )
+
+ NEO_SFIX_128K( "232yk1.s1", CRC(c7dbe270) SHA1(0b81b31da6c18dd02e8d0442100685d5ff61bece) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk1.c1", 0x0000000, 0x800000, CRC(f748da71) SHA1(5012e8537e7d16d365d9c088a70323b3b71cd6f5) )
+ ROM_LOAD16_BYTE( "232yk1.c2", 0x0000001, 0x800000, CRC(6b77e767) SHA1(7f625fa348754a248d9b58bd2f085c47142faf91) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232yk1.c5", 0x2000000, 0x800000, CRC(00a77a26) SHA1(a86054fd3870be49ad6055a2fab663cb5ef27de2) )
+ ROM_LOAD16_BYTE( "232yk1.c6", 0x2000001, 0x800000, CRC(0b504e35) SHA1(597cabd5077670827ad3e809d6cd52c9c7f3013a) )
+ROM_END
+
+ROM_START( kof97yk2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yk2.p1", 0x000000, 0x100000, CRC(03086c94) SHA1(52fe6701f215b60d4fc1771b7c06474ff6d2cfbc) )
+ ROM_LOAD16_WORD_SWAP( "232yk2.p2", 0x100000, 0x400000, CRC(387561f1) SHA1(d03da7857a2d379e899f9556d05eb7d79f49b2c9) )
+
+ NEO_SFIX_128K( "232evoa.s1", CRC(f3c0e90a) SHA1(257f20127a39e8534fe84fbcf2565b162feef4a5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) )
+ ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232yk2.c5", 0x2000000, 0x800000, CRC(d82772b2) SHA1(87626ad6ab30063e9784a1b2748c510219c17fcc) )
+ ROM_LOAD16_BYTE( "232yk2.c6", 0x2000001, 0x800000, CRC(0b06fba8) SHA1(528b66d6d53682316dd1f33d1cf8b689b3642364) )
+ROM_END
+
+ROM_START( kof97yk83 ) // all confirmed
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232kp83.p1", 0x000000, 0x100000, CRC(b983abb8) SHA1(e3d3f222b883b82c686b52b7042401ac8a922992) )
+ ROM_LOAD16_WORD_SWAP( "232kp1.p2", 0x100000, 0x600000, CRC(fddde211) SHA1(6e8280ad7a9dda204f30e40d9575e31d3e436ef2) )
+
+ NEO_SFIX_128K( "232yk1.s1", CRC(c7dbe270) SHA1(0b81b31da6c18dd02e8d0442100685d5ff61bece) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk1.c1", 0x0000000, 0x800000, CRC(f748da71) SHA1(5012e8537e7d16d365d9c088a70323b3b71cd6f5) )
+ ROM_LOAD16_BYTE( "232yk1.c2", 0x0000001, 0x800000, CRC(6b77e767) SHA1(7f625fa348754a248d9b58bd2f085c47142faf91) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232yk1.c5", 0x2000000, 0x800000, CRC(00a77a26) SHA1(a86054fd3870be49ad6055a2fab663cb5ef27de2) )
+ ROM_LOAD16_BYTE( "232yk1.c6", 0x2000001, 0x800000, CRC(0b504e35) SHA1(597cabd5077670827ad3e809d6cd52c9c7f3013a) )
+ROM_END
+
+ROM_START( kof97yk85 )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yk85.p1", 0x000000, 0x100000, CRC(821b0dc4) SHA1(402488249d4e2984fb5c42f0bb4c00b179ea4d12) )
+ ROM_IGNORE( 0x354f67 )
+ ROM_LOAD16_WORD_SWAP( "232yk85.p2", 0x100000, 0x600000, CRC(170e7302) SHA1(3952ca4fbf8aa71e372372881efc4f4aafa9562c) )
+
+ NEO_SFIX_128K( "232yk85.s1", CRC(d8826314) SHA1(5d3ffdf709ee8f84e451464866d0ddcaf98bdb89) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+ //ROM_LOAD( "265-nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) in romset but m1 is not changed so i doubt it is used
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232yk85.c1", 0x0000000, 0x800000, CRC(e47371bb) SHA1(e0e107f4edfbac0a7638b240405745bf31dbadf9) )
+ ROM_LOAD16_BYTE( "232yk85.c2", 0x0000001, 0x800000, CRC(e09108b0) SHA1(b19e0101ed500dec65156a6c19334125a4012521) )
+ ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) )
+ ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) )
+ ROM_LOAD16_BYTE( "232yk85.c5", 0x2000000, 0x800000, CRC(c61653cc) SHA1(05674fb5b0007f200b090e93863335fdf474fa64) )
+ ROM_LOAD16_BYTE( "232yk85.c6", 0x2000001, 0x800000, CRC(a01a762f) SHA1(68df7a1753745b9468c4f464779c2c5033f16458) )
+ ROM_LOAD16_BYTE( "232yk85.c7", 0x3000000, 0x800000, CRC(52ac1bcf) SHA1(51f026db5bac479b82297260b55575f8a60306c7) )
+ ROM_LOAD16_BYTE( "232yk85.c8", 0x3000001, 0x800000, CRC(76de561d) SHA1(8f27e746372daf77ff41c4ee431fa36ae22c7b8d) )
+ ROM_LOAD16_BYTE( "232yk85.c9", 0x4000000, 0x800000, CRC(46eb506a) SHA1(1b64fb31dfdc95b901b2e3d359bdee38f764358f) )
+ ROM_LOAD16_BYTE( "232yk85.c10", 0x4000001, 0x800000, CRC(33595746) SHA1(1532ce71b27beace35f359568d506eaf75ad578d) )
+ROM_END
+
+ROM_START( kof97yl ) /* The King of Fighters '97 - Hack by Leather and Ydmis - (Can choose Orochi + 5 add. characters - extra stage select) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yl.p1", 0x000000, 0x100000, CRC(b74278b8) SHA1(5fe72fa346c54229b3b80121720af624a7eca95c) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yl2 ) /* The King of Fighters '97 - Hack by Leather and Ydmis - (Can choose Orochi + 5 add. characters - extra stage select - based on kof97eh/eh2) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yl2.p1", 0x000000, 0x100000, CRC(ce22762f) SHA1(1be39a25a51db1f50633412aec35db79846938ee) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97yo )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232yo.p1", 0x000000, 0x100000, CRC(3aeeba44) SHA1(71329e0b141bd1507f750a046b9e718abd653840) )
+ ROM_LOAD16_WORD_SWAP( "232yo.p2", 0x100000, 0x400000, CRC(1bb72a6e) SHA1(7edc3f44619c72debeba7d4cd2965ad27b5f0a90) )
+
+ NEO_SFIX_128K( "kf97-s1p.bin", CRC(73254270) SHA1(8d06305f9d8890da1327356272b88bdd0dc089f5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232yo.c5", 0x2000000, 0x800000, CRC(10475333) SHA1(244f209925525fe9f9aca2a57e3e8d10ea28c7a3) )
+ ROM_LOAD16_BYTE( "232yo.c6", 0x2000001, 0x800000, CRC(1d8a90fe) SHA1(5ee10a7d5fbf3f31e5efc02177a1111aaafa361e) )
+ROM_END
+
+ROM_START( kof97z ) // Hack by Zuojie
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232z.p1", 0x000000, 0x100000, CRC(2d0d243d) SHA1(96234897b91a90cbdee0ead735a00615dffa4ca1) )
+ ROM_LOAD16_WORD_SWAP( "232z.p2", 0x100000, 0x400000, CRC(505e3981) SHA1(a8bcddcffc5e6a3f1879e91fc07ea5c9177b8f37) )
+
+ NEO_SFIX_128K( "232z.s1", CRC(ece9abba) SHA1(608ea08ef8fd5f32e97a99df4edf285eb9f2e108) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232z.c1", 0x0000000, 0x800000, CRC(972bea52) SHA1(236d70abceb993d340a89cfa0cd0bd5f2c5753b1) )
+ ROM_LOAD16_BYTE( "232z.c2", 0x0000001, 0x800000, CRC(301a1328) SHA1(2b30a2576a663e01f34aca3b1136ae870108f8c1) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232z.c5", 0x2000000, 0x400000, CRC(9af776d3) SHA1(a054ca17e6b35c8743286a025488b04186eebdbe) )
+ ROM_LOAD16_BYTE( "232z.c6", 0x2000001, 0x400000, CRC(9428d70c) SHA1(c0122ef6f83645f57edef6956400fe49fd94dfca) )
+ROM_END
+
+ROM_START( kof97zm )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232zm.p1", 0x000000, 0x100000, CRC(a2c45045) SHA1(511c96507c39e4c58543caf56dbe40f40c821b19) )
+ ROM_LOAD16_WORD_SWAP( "232zm.p2", 0x100000, 0x400000, CRC(ca11478d) SHA1(484533266ba677fa2930e977226c4b72a59de8e2) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+
+
+GAME( 1997, kof97aa, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Simaguang", "Kof'97 (Plus Athena)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ae, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex, EGHT", "Kof'97 10TH ANNIVERSARY (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ae1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex, EGHT", "Kof'97 10TH ANNIVERSARY (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97aot, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 RISK01983 (AOT)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97bh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Kof'97 (Add Char - Orochi icon - Extra stage select)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof97bng, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2006 set 1", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97bs, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "0-DAY", "Kof'97 (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof97cb2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2006 set 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97cr, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL and Leather", "Kof'97 (Moves and Style changed - Extra stage select)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97chl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'97 (Diff Moves - 030325)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97chl2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'97 (Diff Moves rev.2 - 030409)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97chris,kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Chris Like 2k2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof97cn, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'97 (10th Anniversary Chinese Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof97co, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2010-02-07", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof97co6, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2006", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof97cy, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Emu_Max", "Kof'97 (CY)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof97dse, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maerd", "Kof'97 MAERD 2012-06-28 (DSE)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97eh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Leather and Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Ultra pow hack ABC - Extra stage select)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97eh2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Pow hack ABC - Extra stage select)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97eho, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ei, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 COMBO 2010-02-07 (EI)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97evo, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'97 EVOLUTION", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97evoa, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 EVOLUTION (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97frb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (FRB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97hk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 EVOLUTION (Hakeshu)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97hl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Fall Ban Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97hxd, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Hxdhome", "Kof'97 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ice, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Cz-Kyo97", "Kof'97 Ice", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97irgc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (IRGC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97irgc2,kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (IRGC2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97kai, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kai", "Kof'97 PLUS", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97kp, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KofPerfect", "Kof'97 (Add Orochi set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, kof97kp1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (KP 2000)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97lb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof'97 (Quanhuang Shaman 3.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97lc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Liuzheng0131", "Kof'97 (Color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof97lr, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Lover Red)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof97m, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maerd", "Kof'97 KOF97 MAERD 2012-06-28", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97mit, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MIT", "Kof'97 (Char style enhanced 050324)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof97mj, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 SHION EDITION HACK", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97nd, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Baidu", "Kof'97 (Baidu)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ne, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NeHt", "Kof'97 (Remixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97neo, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neo Charity Team", "Kof'97 (hack by Neo Charity Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97nude, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Nude", MACHINE_SUPPORTS_SAVE ) // no nudes here??
+GAME( 1997, kof97pj, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Kof'97 (hxd fixed ver - Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97pjc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Kof'97 (Char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97phl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Liyang1983", "Kof'97 (Plus Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97pl2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Kof'97 PLUS set 2", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97pl3, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Kof'97 PLUS set 3", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97pla, kof97, neogeo_noslot, neogeo, neogeo_hbmame,kof97pla, ROT0, "bootleg", "Kof'97 PLUS set 1", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97plc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Kof'97 PLUS (Black Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof97plus, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS 2006", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97pm, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF1996", "Kof'97 Practice Mode", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ps, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Playstation Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof97rev, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BisMill Hassan", "Kof'97 (The Revival 2016)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97ribe, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RIBE)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97rk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Risko", "Kof'97 (Hack by Risko)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97rst, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RST)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97rst2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RST2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof97rst3, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RISK012003)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97rv, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (revised edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97saw, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (Kill red flame special effect)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97sex, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Katana", "Kof'97 (Extra/Sexy Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97shi, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'97 (Evolution Shin Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97sm, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Smoke Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97svs, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (SVS)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97svsb2,kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (SVSB2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97sw, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (26a-c and 623a-c red flame special effect)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97tse, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (TSE)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97wh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (Style Kyo to 95' Kyo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97wpls, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97xbt, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 BT X Version", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97xi, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jacky", "Kof'97 XI Flash Version", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof97xp, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xuhui", "Kof'97 (Xuhui plus)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof97xt, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Final Battle", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97xt1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Chris Love", "Kof'97 (Unfinished version by Cross Love)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97xxx, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Nude mix)", MACHINE_SUPPORTS_SAVE ) // no nudes here??
+GAME( 1997, kof97y, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ya, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Orochi set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Orochi set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97ye, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi - Pow hack ABC in Extra Mode set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yg, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - Pow hack ABC in Extra Mode)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi - Pow hack ABC in Extra Mode set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof97yk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yk1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yk2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yk83, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK83)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yk85, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK85)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Extra stage select set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yl2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Extra stage select set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97yo, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Seven Yoga Community Imitation 98", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97z, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie", "Kof'97 (Hack by Zoujie)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97zm, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof'97 RISK01983 ZMonanger", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof98.cpp b/docs/release/src/hbmame/drivers/kof98.cpp
new file mode 100644
index 00000000000..220cf78cd65
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof98.cpp
@@ -0,0 +1,4028 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+ROM_START( kof98aas ) // Asamiya Athena 99 Style by Ivex
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-pn1.p1", 0x000000, 0x100000, CRC(61ac868a) SHA1(26577264aa72d6af272952a876fcd3775f53e3fa) )
+ ROM_LOAD16_WORD_SWAP( "242aas.p2", 0x100000, 0x400000, CRC(c42a4608) SHA1(8cb95c85e0590400645b771352f6c361055269f6) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242aas.c3", 0x1000000, 0x800000, CRC(39c4210d) SHA1(aca8198441acbe3d8b4680b1446bd5616355c4b2) )
+ ROM_LOAD16_BYTE( "242aas.c4", 0x1000001, 0x800000, CRC(9089241f) SHA1(ec9845914f8f817bbe92ce20a1c72a65ba0701ee) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ae ) // not used, for experimentation
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ //ROM_LOAD16_WORD_SWAP( "242ae.p1", 0x000000, 0x100000, CRC(c9188c66) SHA1(9b248df5438cd555314ec71e52e7da6cfb192219) )
+ //ROM_LOAD16_WORD_SWAP( "242ae.p1", 0x000000, 0x100000, CRC(74e20ae9) SHA1(84d17fb0ee462fe491e3220e935cb588f8121611) )
+ //ROM_LOAD16_WORD_SWAP( "242ae.p1", 0x000000, 0x100000, CRC(23a80b3e) SHA1(b1afaf382ffd5a1d72ae5ca18c11a751a11d7654) )
+ ROM_LOAD16_WORD_SWAP( "242ae.p2", 0x100000, 0x600000, CRC(609fac6b) SHA1(8010f4f5bd70308d027c1c5ae672117ab76f8d89) )
+
+ NEO_SFIX_128K( "242ae.s1", CRC(f1fee5c0) SHA1(e0d7b6c3c4a1c24003f25de6a5238e0a8ad32269) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242ae.c1", 0x0000000, 0x800000, CRC(0319cfc9) SHA1(f275015d6bddf392936b35cd7399f929a6d63d29) )
+ ROM_LOAD16_BYTE( "242ae.c2", 0x0000001, 0x800000, CRC(553f6714) SHA1(9c14963ce9ac0cfd125defe2fe80206deb1bc896) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242ae.c11", 0x5000000, 0x800000, CRC(e893277f) SHA1(a87db547821c63d162aac3ad178c8f794ef6a060) )
+ ROM_LOAD16_BYTE( "242ae.c12", 0x5000001, 0x800000, CRC(f165589e) SHA1(6bdcb1dd9ce507fcae40d0aba42a2c1300987479) )
+ROM_END
+
+ROM_START( kof98ae0 ) // Anniversary Edition
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242ae0.p1", 0x000000, 0x100000, CRC(23a80b3e) SHA1(b1afaf382ffd5a1d72ae5ca18c11a751a11d7654) )
+ ROM_LOAD16_WORD_SWAP( "242ae.p2", 0x100000, 0x600000, CRC(609fac6b) SHA1(8010f4f5bd70308d027c1c5ae672117ab76f8d89) )
+
+ NEO_SFIX_128K( "242ae.s1", CRC(f1fee5c0) SHA1(e0d7b6c3c4a1c24003f25de6a5238e0a8ad32269) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242ae.c1", 0x0000000, 0x800000, CRC(0319cfc9) SHA1(f275015d6bddf392936b35cd7399f929a6d63d29) )
+ ROM_LOAD16_BYTE( "242ae.c2", 0x0000001, 0x800000, CRC(553f6714) SHA1(9c14963ce9ac0cfd125defe2fe80206deb1bc896) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242ae.c11", 0x5000000, 0x800000, CRC(e893277f) SHA1(a87db547821c63d162aac3ad178c8f794ef6a060) )
+ ROM_LOAD16_BYTE( "242ae.c12", 0x5000001, 0x800000, CRC(f165589e) SHA1(6bdcb1dd9ce507fcae40d0aba42a2c1300987479) )
+ROM_END
+
+ROM_START( kof98ae1 ) // Anniversary Edition
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242ae1.p1", 0x000000, 0x100000, CRC(c9188c66) SHA1(9b248df5438cd555314ec71e52e7da6cfb192219) )
+ ROM_LOAD16_WORD_SWAP( "242ae.p2", 0x100000, 0x600000, CRC(609fac6b) SHA1(8010f4f5bd70308d027c1c5ae672117ab76f8d89) )
+
+ NEO_SFIX_128K( "242ae.s1", CRC(f1fee5c0) SHA1(e0d7b6c3c4a1c24003f25de6a5238e0a8ad32269) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242ae.c1", 0x0000000, 0x800000, CRC(0319cfc9) SHA1(f275015d6bddf392936b35cd7399f929a6d63d29) )
+ ROM_LOAD16_BYTE( "242ae.c2", 0x0000001, 0x800000, CRC(553f6714) SHA1(9c14963ce9ac0cfd125defe2fe80206deb1bc896) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242ae.c11", 0x5000000, 0x800000, CRC(e893277f) SHA1(a87db547821c63d162aac3ad178c8f794ef6a060) )
+ ROM_LOAD16_BYTE( "242ae.c12", 0x5000001, 0x800000, CRC(f165589e) SHA1(6bdcb1dd9ce507fcae40d0aba42a2c1300987479) )
+ROM_END
+
+ROM_START( kof98ae2 ) // Anniversary Edition
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242ae2.p1", 0x000000, 0x100000, CRC(74e20ae9) SHA1(84d17fb0ee462fe491e3220e935cb588f8121611) )
+ ROM_LOAD16_WORD_SWAP( "242ae.p2", 0x100000, 0x600000, CRC(609fac6b) SHA1(8010f4f5bd70308d027c1c5ae672117ab76f8d89) )
+
+ NEO_SFIX_128K( "242ae.s1", CRC(f1fee5c0) SHA1(e0d7b6c3c4a1c24003f25de6a5238e0a8ad32269) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242ae.c1", 0x0000000, 0x800000, CRC(0319cfc9) SHA1(f275015d6bddf392936b35cd7399f929a6d63d29) )
+ ROM_LOAD16_BYTE( "242ae.c2", 0x0000001, 0x800000, CRC(553f6714) SHA1(9c14963ce9ac0cfd125defe2fe80206deb1bc896) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242ae.c11", 0x5000000, 0x800000, CRC(e893277f) SHA1(a87db547821c63d162aac3ad178c8f794ef6a060) )
+ ROM_LOAD16_BYTE( "242ae.c12", 0x5000001, 0x800000, CRC(f165589e) SHA1(6bdcb1dd9ce507fcae40d0aba42a2c1300987479) )
+ROM_END
+
+ROM_START( kof98ae3 ) // All confirmed: kof98ae2 with new p roms
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242ae3.p1", 0x000000, 0x100000, CRC(ad987ba2) SHA1(aa7803e3193f551171f908650cab921b9daf7ab9) )
+ ROM_LOAD16_WORD_SWAP( "242ae3.p2", 0x100000, 0x600000, CRC(0409fb1e) SHA1(8e73ea6a68503b6bd434f9b044bd454fb7e371df) )
+
+ NEO_SFIX_128K( "242ae.s1", CRC(f1fee5c0) SHA1(e0d7b6c3c4a1c24003f25de6a5238e0a8ad32269) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242ae.c1", 0x0000000, 0x800000, CRC(0319cfc9) SHA1(f275015d6bddf392936b35cd7399f929a6d63d29) )
+ ROM_LOAD16_BYTE( "242ae.c2", 0x0000001, 0x800000, CRC(553f6714) SHA1(9c14963ce9ac0cfd125defe2fe80206deb1bc896) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242ae.c11", 0x5000000, 0x800000, CRC(e893277f) SHA1(a87db547821c63d162aac3ad178c8f794ef6a060) )
+ ROM_LOAD16_BYTE( "242ae.c12", 0x5000001, 0x800000, CRC(f165589e) SHA1(6bdcb1dd9ce507fcae40d0aba42a2c1300987479) )
+ROM_END
+
+ROM_START( kof98ae20160308 ) // Anniversary Edition, all confirmed.
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242aea.p1", 0x000000, 0x100000, CRC(c7fddbd8) SHA1(b9ded8cd3414a5f11e41436ee3aa79515e33a8d9) )
+ ROM_LOAD16_WORD_SWAP( "242aea.p2", 0x100000, 0x600000, CRC(d84dbe5b) SHA1(76f08aa5c15b654b5d080c5537cb91be1f16555c) )
+
+ NEO_SFIX( 0x40000, "242aea.s1", CRC(345c20b0) SHA1(ff844e47667297f09f8b49ae19987542e253095e) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242aea.c1", 0x0000000, 0x800000, CRC(086ec060) SHA1(dace47c251e5c9bea771e221bf550e1b4af5212d) )
+ ROM_LOAD16_BYTE( "242aea.c2", 0x0000001, 0x800000, CRC(16b9a9a2) SHA1(c8b757e6a84bae33caab07de27ca6c3d84d1893a) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242aea.c11", 0x5000000, 0x800000, CRC(56d361cb) SHA1(594826cf58b7cd3b0bee05cdab1265d03c057b58) )
+ ROM_LOAD16_BYTE( "242aea.c12", 0x5000001, 0x800000, CRC(f8cb115b) SHA1(ba8a152a59acfcf72c73c6e29cd6e133630e100d) )
+ROM_END
+
+ROM_START( kof98ae20160827 ) // all confirmed. Same as 20160308 except p roms.
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ // These are corrupt during attract mode fight (where cars are driving past), do not use
+ ROM_LOAD16_WORD_SWAP( "242aeb.p1", 0x000000, 0x100000, CRC(d69ecaa9) SHA1(924741bfab19a43d14704aeb305970de616788e4) )
+ ROM_LOAD16_WORD_SWAP( "242aeb.p2", 0x100000, 0x600000, CRC(ac1e9e79) SHA1(95caf44bb771a7ce5663f60127cf5ae798f7dd4c) )
+
+ NEO_SFIX( 0x40000, "242aea.s1", CRC(345c20b0) SHA1(ff844e47667297f09f8b49ae19987542e253095e) )
+
+ NEO_BIOS_AUDIO_256K( "242ae.m1", CRC(9ade0528) SHA1(67d0c3b146d369416b84c081544fe51fc6c2a140) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+ ROM_LOAD( "242ae.v5", 0x1000000, 0x400000, CRC(afdd9660) SHA1(0d67fb61111256c0d74d4f2b473ab5a42d1909b9) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242aea.c1", 0x0000000, 0x800000, CRC(086ec060) SHA1(dace47c251e5c9bea771e221bf550e1b4af5212d) )
+ ROM_LOAD16_BYTE( "242aea.c2", 0x0000001, 0x800000, CRC(16b9a9a2) SHA1(c8b757e6a84bae33caab07de27ca6c3d84d1893a) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242ae.c5", 0x2000000, 0x800000, CRC(71641718) SHA1(b88a00aca2fc34230d2d2da0b235195a5eb1ecf0) )
+ ROM_LOAD16_BYTE( "242ae.c6", 0x2000001, 0x800000, CRC(982ba2b3) SHA1(232ce3be7beaad13b35865da770157ef4b29a7a9) )
+ ROM_LOAD16_BYTE( "242ae.c7", 0x3000000, 0x800000, CRC(8d495552) SHA1(20ff76b681b2e544c5a57060bb98ab6bb91bea3c) )
+ ROM_LOAD16_BYTE( "242ae.c8", 0x3000001, 0x800000, CRC(8bfc3417) SHA1(38bb85563d0a7f008a64cf76d71d82b935cd98e5) )
+ ROM_LOAD16_BYTE( "242ae.c9", 0x4000000, 0x800000, CRC(128256d1) SHA1(948af62545756165890e950fcd67bbd6304b3366) )
+ ROM_LOAD16_BYTE( "242ae.c10", 0x4000001, 0x800000, CRC(4bd8412d) SHA1(72e9cc6e3df8000d0a7fc7a89257dd0ce56fc909) )
+ ROM_LOAD16_BYTE( "242aea.c11", 0x5000000, 0x800000, CRC(56d361cb) SHA1(594826cf58b7cd3b0bee05cdab1265d03c057b58) )
+ ROM_LOAD16_BYTE( "242aea.c12", 0x5000001, 0x800000, CRC(f8cb115b) SHA1(ba8a152a59acfcf72c73c6e29cd6e133630e100d) )
+ROM_END
+
+ROM_START( kof98bge ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242bge.p1", 0x000000, 0x200000, CRC(3d0e3c74) SHA1(4b7bf2deb96592990cb79ed4dc70a1d2dc2d787e) )
+ ROM_LOAD16_WORD_SWAP( "242gold.p2", 0x200000, 0x400000, CRC(c0f6802d) SHA1(f86c141efe454e949cb28585f1e88088b3894b16) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98bh ) // Boss Hack 2006
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242bh.p1", 0x000000, 0x100000, CRC(5b5c822b) SHA1(0c4652630ff2122167f2defe4edff2a4e97f0ce0) )
+ ROM_LOAD16_WORD_SWAP( "242bh.p2", 0x100000, 0x400000, CRC(289b09d7) SHA1(25f14caf6b57c516c484e50ddee6867de4513406) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cd.c1", 0x0000000, 0x800000, CRC(05edf0ff) SHA1(99afddc2d59ba274f2d9d9f5ef86c925518b8278) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98bvi ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242bvi.p1", 0x000000, 0x200000, CRC(822038a7) SHA1(193382395b60b310851fd33761951843cbcd373e) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c2006 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242c2006.p1", 0x000000, 0x100000, CRC(68dbd3ca) SHA1(839d8ed003351809b1d8b8a4529b29a57af23333) )
+ ROM_LOAD16_WORD_SWAP( "242c2006.p2", 0x100000, 0x400000, CRC(4fc4544c) SHA1(b8912e61b26813237c46ca6511a6c88f5c5e511e) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242c2006.c1", 0x0000000, 0x800000, CRC(efc547b0) SHA1(badb1147729e187cc395ade357b49444e27810e5) )
+ ROM_LOAD16_BYTE( "242c2006.c2", 0x0000001, 0x800000, CRC(395ed6af) SHA1(543286e4f346f38c4866ab9a84080b6839d53412) )
+ ROM_LOAD16_BYTE( "242c2006.c3", 0x1000000, 0x800000, CRC(882e5246) SHA1(6cf81cd540a1511e085f2534511f8fa93f44d51f) )
+ ROM_LOAD16_BYTE( "242c2006.c4", 0x1000001, 0x800000, CRC(4f3f2123) SHA1(5cc61e82b0c7ee3d162c89262379f36f21ee5311) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20060214 ) // multijet kof98co2
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cfb14.p1", 0x000000, 0x100000, CRC(3c803e5d) SHA1(9da1b6a8c7c85d0c4cae780af157c85c587d99a9) )
+ ROM_LOAD16_WORD_SWAP( "242cfb14.p2", 0x100000, 0x400000, CRC(d3a9d5a6) SHA1(af02622494db4ebb7e1916ba0016412dafab1c23) )
+
+ NEO_SFIX_128K( "242cfb14.s1", CRC(e19b7e13) SHA1(4c8e85ffb8e2f9dcc10e946a53ff84494950aed7) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20070720 ) // kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cgg20.p1", 0x000000, 0x100000, CRC(549b46bf) SHA1(bbed5b2a131ba4ed9161aa5c246cf7d324aacf3d) )
+ ROM_LOAD16_WORD_SWAP( "242cgg20.p2", 0x100000, 0x400000, CRC(d256446d) SHA1(821365a7e7fe65488171633b8218207b70dcd0f6) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20070923 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cgi23.p1", 0x000000, 0x100000, CRC(07c7e389) SHA1(e0df96dd1dc3459d3017a6b3b53c25d89431abc0) )
+ ROM_LOAD16_WORD_SWAP( "242cgi23.p2", 0x100000, 0x400000, CRC(45c64fc4) SHA1(922fee0ab1377123acde003cb96b5790c90ca84c) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20080330 ) // multijet kof98co3
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242chc30.p1", 0x000000, 0x100000, CRC(a606b28c) SHA1(a9c93234742107a0274ae48b3b7b63fc985e47b8) )
+ ROM_LOAD16_WORD_SWAP( "242chc30.p2", 0x100000, 0x400000, CRC(baac7267) SHA1(8124d82169830c4493655a0a440e7430d67f47e8) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20080524 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242che24.p1", 0x000000, 0x100000, CRC(f2dc0ec8) SHA1(90901c20f56d08ef05da66ec7cba327820909f9a) )
+ ROM_LOAD16_WORD_SWAP( "242che24.p2", 0x100000, 0x400000, CRC(e2149cc5) SHA1(7d66bdf54b4bbf7f0aa163287a526cf48502bc3b) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20080616 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242chf16.p1", 0x000000, 0x100000, CRC(de3c91fe) SHA1(706a75fe92780ea68707b37e42b1f70d507bb1c7) )
+ ROM_LOAD16_WORD_SWAP( "242chf16.p2", 0x100000, 0x400000, CRC(52314cc5) SHA1(83416affb1a789647647992ea8492a55c0a62b8d) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20080712 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242chg12.p1", 0x000000, 0x100000, CRC(c0b4095a) SHA1(b8c027ccf3bdda62e8bb21766ac1ad716b7cdb9a) )
+ ROM_LOAD16_WORD_SWAP( "242chg12.p2", 0x100000, 0x400000, CRC(7e8d3bd3) SHA1(811c563146c1827a6322a61090570c956cdb4df0) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cta ) // Combo 10th Anniversary - this is kof98c20080801
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cta.p1", 0x000000, 0x100000, CRC(d5646ed9) SHA1(9c0f7eb5b27f0787d6390dcde9c1566a83232890) )
+ ROM_LOAD16_WORD_SWAP( "242cta.p2", 0x100000, 0x400000, CRC(2b78c216) SHA1(4e47d9ef6dd8b82c652688ca7fb3d51c869a55e1) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20090620 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cif20.p1", 0x000000, 0x100000, CRC(fc3a3397) SHA1(538e04ce5bf495374e9bf3af5bd18efb3d7dabe7) )
+ ROM_LOAD16_WORD_SWAP( "242cif20.p2", 0x100000, 0x400000, CRC(c2e6e6c7) SHA1(f2217bda316986a3c5730dd7927b472f20094952) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20090923 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cii23.p1", 0x000000, 0x100000, CRC(35cbbaa7) SHA1(e9d773b24d999ad55c3813e627836e4d91f239f6) )
+ ROM_LOAD16_WORD_SWAP( "242cii23.p2", 0x100000, 0x400000, CRC(658e3940) SHA1(b71f08491db50aeb8e0b20541808f3c31e9c598c) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20100214 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cjb14.p1", 0x000000, 0x100000, CRC(eb02e1d2) SHA1(9217827f905580851343b78e26c1494e76584454) )
+ ROM_LOAD16_WORD_SWAP( "242cjb14.p2", 0x100000, 0x400000, CRC(9afe10b6) SHA1(1c5fb7e099c8790b44313a9b412a93bc80421791) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20100304 ) // multijet kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cjc04.p1", 0x000000, 0x100000, CRC(6ad285ae) SHA1(80caa8d0a169bbd0a4eb2b1441bd2033fae231fd) )
+ ROM_LOAD16_WORD_SWAP( "242cjc04.p2", 0x100000, 0x400000, CRC(2359f183) SHA1(da687d5723a7c39b2c60d01f316a1005196ec46d) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20110114 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cka14.p1", 0x000000, 0x100000, CRC(8b520854) SHA1(2e6d8677b343abb6d85b62a1996fc3cec2d86477) )
+ ROM_LOAD16_WORD_SWAP( "242cka14.p2", 0x100000, 0x400000, CRC(bbfa3154) SHA1(7dbe0d6eb3850c6f8c30a5e49e5bf914d0f23b7f) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20110314 ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ckc14.p1", 0x000000, 0x100000, CRC(e997a3e9) SHA1(c53d09931a1f2f97623cbfd390b703412dfde535) )
+ ROM_LOAD16_WORD_SWAP( "242ckc14.p2", 0x100000, 0x400000, CRC(3f2266bf) SHA1(f4fbdde4c2b9cd9f12b3f6942926993ca56fed3b) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20120116 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cla16.p1", 0x000000, 0x100000, CRC(99255778) SHA1(d6eb448f06cebabff3aea71cade6c7b742bad337) )
+ ROM_LOAD16_WORD_SWAP( "242cla16.p2", 0x100000, 0x400000, CRC(fc1582fb) SHA1(6be894251c7a91cf1821a48a5f2d9e1bea6251ec) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20120915 ) // no idea what other roms go with this, using ones from kof98co
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cli15.p1", 0x000000, 0x100000, CRC(9e86180d) SHA1(67772aa99452a8b8ace0a770c09d2ae503ac298f) )
+ ROM_LOAD16_WORD_SWAP( "242cli15.p2", 0x100000, 0x400000, CRC(e88dfce2) SHA1(e16e98eec8d27a1f125fd69b58108d7621bff968) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130213 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmb13.p1", 0x000000, 0x100000, CRC(1192b05d) SHA1(a5bfb8f303d0c59897d18695344c6d643aca0992) )
+ ROM_LOAD16_WORD_SWAP( "242cmb13.p2", 0x100000, 0x400000, CRC(44d6f231) SHA1(f23aa553d2ce326fdd87c6a0de61c0f8a190a5d6) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130311 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmc11.p1", 0x000000, 0x100000, CRC(a840d48e) SHA1(f95246ea20174bfb6ffa1421d5e3691d5a4d57ac) )
+ ROM_LOAD16_WORD_SWAP( "242cmc11.p2", 0x100000, 0x400000, CRC(a125307b) SHA1(fea9a7d945d51bdc137a7a5cc47009f77d1b2f11) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130509 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cme09.p1", 0x000000, 0x100000, CRC(04f0ee1b) SHA1(6b0c61bf769e3a1f8e16bf80f998a16231b1d37f) )
+ ROM_LOAD16_WORD_SWAP( "242cme09.p2", 0x100000, 0x400000, CRC(7a3d7339) SHA1(68e6d693e1010c75e235cb732c186edfcf5ee121) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130528 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cme28.p1", 0x000000, 0x100000, CRC(3a2c9ecf) SHA1(f18534a4332d6162d1d7c0797c2aabafe9b3ae8d) )
+ ROM_LOAD16_WORD_SWAP( "242cme28.p2", 0x100000, 0x400000, CRC(d1f608a3) SHA1(20f0ac8a696f47fc122a876b5892b7982f643101) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130617 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmf17.p1", 0x000000, 0x100000, CRC(871c1400) SHA1(7c543dfe62151eea0479b0d6685ff99a79d7b99d) )
+ ROM_LOAD16_WORD_SWAP( "242cmf17.p2", 0x100000, 0x400000, CRC(5f6a6827) SHA1(df507f8367bb03bb404a7c978123fccf2cfee2bf) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130808 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmh08.p1", 0x000000, 0x100000, CRC(5c45d223) SHA1(04617aaea513e5c7e8cf014e89945aa2eb5948e2) )
+ ROM_LOAD16_WORD_SWAP( "242cmh08.p2", 0x100000, 0x400000, CRC(ae323e72) SHA1(fe204f78faef8be01e8664a57f4cec380457cea6) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20130820 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmh20.p1", 0x000000, 0x100000, CRC(f17061ad) SHA1(2b99224bc32526e811fa46b934531ecc25bb5f48) )
+ ROM_LOAD16_WORD_SWAP( "242cmh20.p2", 0x100000, 0x400000, CRC(8b7afee8) SHA1(88080f59588b2e8360af126519e547bbf55f80fb) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20131113 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cmk13.p1", 0x000000, 0x100000, CRC(6c60a3ef) SHA1(d9437ee77ad3ff38a56c2d90b8c0334fb3404342) )
+ ROM_LOAD16_WORD_SWAP( "242cmk13.p2", 0x100000, 0x400000, CRC(fe685f71) SHA1(aaf84b3f6c44662b8a6696cf1a48ead10eae7e30) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140101 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cna01.p1", 0x000000, 0x100000, CRC(fc6edddc) SHA1(06096bf35bd19aa816541a0db2e517ab9ea6f108) )
+ ROM_LOAD16_WORD_SWAP( "242cna01.p2", 0x100000, 0x400000, CRC(ae9cc41b) SHA1(2b3b433eca1da8836ccdae4648af9f742abb3c3a) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140110 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cna10.p1", 0x000000, 0x100000, CRC(f5173db2) SHA1(3ed5de29fe05bd42f1e61db99bb62a21dd18ee45) )
+ ROM_LOAD16_WORD_SWAP( "242cna10.p2", 0x100000, 0x400000, CRC(277c46ad) SHA1(3d718bb9b6a616c912d0b61bf04c25acf9edd19b) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140118 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cna18.p1", 0x000000, 0x100000, CRC(d0e11829) SHA1(a1ad8372e24315e4e5d7a2e2b730065d3e63419d) )
+ ROM_LOAD16_WORD_SWAP( "242cna18.p2", 0x100000, 0x400000, CRC(57710699) SHA1(c1dd6677b61b3bced57441160560ef52636e43a6) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140204 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnb04.p1", 0x000000, 0x100000, CRC(281a0134) SHA1(23231f74c82a2c130e5323338f5b85e61e464f52) )
+ ROM_LOAD16_WORD_SWAP( "242cnb04.p2", 0x100000, 0x400000, CRC(5c0b42ed) SHA1(835c075fb30f96b69eec89980279a9fa516bf839) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140213 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnb13.p1", 0x000000, 0x100000, CRC(338fe20c) SHA1(149dd81dc7dda509ace4fadf796908a9af0b2111) )
+ ROM_LOAD16_WORD_SWAP( "242cnb13.p2", 0x100000, 0x400000, CRC(138577d5) SHA1(97592df7350f9741b0b2b686a136f62cae650d5c) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140217 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnb17.p1", 0x000000, 0x100000, CRC(52ef6564) SHA1(46a9ada52dd44db8697f118a1e7b43e11d9878c5) )
+ ROM_LOAD16_WORD_SWAP( "242cnb17.p2", 0x100000, 0x400000, CRC(a31b7b2a) SHA1(a5324f49f19850cd6bcc8d3e66edf0dda220bd41) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140228 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnb28.p1", 0x000000, 0x100000, CRC(97e9c8cc) SHA1(b38ef0f8e55f24e96c09cf5f28954661cd8ea8b8) )
+ ROM_LOAD16_WORD_SWAP( "242cnb28.p2", 0x100000, 0x400000, CRC(7b99f052) SHA1(ea204a7a14b6620e64a5ac0b34d048ccd0c6fc0e) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140302 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnc02.p1", 0x000000, 0x100000, CRC(c478dd93) SHA1(759311b986b9606acc9e735f83cc33e6c4cfe151) )
+ ROM_LOAD16_WORD_SWAP( "242cnc02.p2", 0x100000, 0x400000, CRC(5b81a4f0) SHA1(f0dd68bb17fa76671a08ee77a22bda773c93e810) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140310 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnc10.p1", 0x000000, 0x100000, CRC(25d26cd5) SHA1(65e301dbc2d57ba657eae49edeb53ef07a21b85e) )
+ ROM_LOAD16_WORD_SWAP( "242cnc10.p2", 0x100000, 0x400000, CRC(f109629f) SHA1(827f3f6a0f66a0741c72ebc85ea5b203acb56ae0) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140317 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnc17.p1", 0x000000, 0x100000, CRC(952efa43) SHA1(2cc2a1c9b4e7159f6b42bcd7c7d4215de046dd71) )
+ ROM_LOAD16_WORD_SWAP( "242cnc17.p2", 0x100000, 0x400000, CRC(43dfe9b0) SHA1(128c0d18d1d71a01ba2f8a66b9432dbbe0b58f8a) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140403 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnd03.p1", 0x000000, 0x100000, CRC(57fe473e) SHA1(d83eef73825611abaac1df9ecc81a85a910e6a23) )
+ ROM_LOAD16_WORD_SWAP( "242cnd03.p2", 0x100000, 0x400000, CRC(96f73721) SHA1(fc910b437eb527244a063b519776ae54af31db77) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140412 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnd12.p1", 0x000000, 0x100000, CRC(4cb73079) SHA1(db5d0663f91936bfa68d389766ad1d2849cee300) )
+ ROM_LOAD16_WORD_SWAP( "242cnd12.p2", 0x100000, 0x400000, CRC(3d30dad4) SHA1(097ead60f133fa00f7d5a903cff6c10915b1ba0b) )
+
+ NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140416 ) // no idea what other roms go with this, using ones from kof98c20120915
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnd16.p1", 0x000000, 0x100000, CRC(25783b16) SHA1(e3748583ab2e4fa934f489e6a46a8725ae8dda35) )
+ ROM_LOAD16_WORD_SWAP( "242cnd16.p2", 0x100000, 0x400000, CRC(23f70495) SHA1(73975803d48cc37b92153dc3519d9efb4a86df49) )
+
+ NEO_SFIX_128K( "242cnd16.s1", CRC(06186f52) SHA1(714415c30626fd4cd2eed80b0af32a4a1d8db19f) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) )
+ ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140419 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnd19.p1", 0x000000, 0x100000, CRC(95853626) SHA1(7db1ab39ff7c908c81c915c587247b9f101b28dc) )
+ ROM_LOAD16_WORD_SWAP( "242cnd19.p2", 0x100000, 0x400000, CRC(43475633) SHA1(f57f9744e7d041a9428602b82335038ec3d85f6d) )
+
+ NEO_SFIX_128K( "242cnd19.s1", CRC(75e932d8) SHA1(d8ebd9ecab29fb52994d1fdd5fbeceba3213620a) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140428 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnd28.p1", 0x000000, 0x100000, CRC(9ff156f0) SHA1(18879b3a82172613ef3e744303b00560bac27dda) )
+ ROM_LOAD16_WORD_SWAP( "242cnd28.p2", 0x100000, 0x400000, CRC(ee298a6b) SHA1(5c556142abb0ddd57db33f6dac5675ca5a8e8f8c) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140504 ) // no idea what other roms go with this, using ones from kof98c20140428
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cne04.p1", 0x000000, 0x100000, CRC(d965cbf5) SHA1(e87ceb1ffe9b0757d2d9a5af970ea0f5f416767a) )
+ ROM_LOAD16_WORD_SWAP( "242cne04.p2", 0x100000, 0x400000, CRC(6e96ab13) SHA1(19800094015ed659023d49dfd8b63c0578ea2952) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140524 ) // no idea what other roms go with this, using ones from kof98c20140428
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cne24.p1", 0x000000, 0x100000, CRC(f97629ad) SHA1(8fb4329907780f8508c39f6463d7a2447f81ca08) )
+ ROM_LOAD16_WORD_SWAP( "242cne24.p2", 0x100000, 0x400000, CRC(89f1bf6c) SHA1(01e09eaf7a288652eef26054ddfeb3d2148265ee) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140606 ) // no idea what other roms go with this, using ones from kof98c20140428
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnf06.p1", 0x000000, 0x100000, CRC(b030bd09) SHA1(254aa86a78af1f893efda3db151dee32c9aa6b1a) )
+ ROM_LOAD16_WORD_SWAP( "242cnf06.p2", 0x100000, 0x400000, CRC(0178de06) SHA1(69bab33a6e1e2c5f7d1dd13e863aed3d77e42a2a) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140620 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnf20.p1", 0x000000, 0x100000, CRC(da4e1cc5) SHA1(d139cf4dd437c5c39385e6cd199ccc71a1ea919e) )
+ ROM_LOAD16_WORD_SWAP( "242cnf20.p2", 0x100000, 0x400000, CRC(a21eb0fc) SHA1(adb826e45128bd24d1d65ead2e85483fe3b79257) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140717 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cng17.p1", 0x000000, 0x100000, CRC(7048bed4) SHA1(1a8704d6d993c45f623352821ff7c7718a73197c) )
+ ROM_LOAD16_WORD_SWAP( "242cng17.p2", 0x100000, 0x400000, CRC(8435b965) SHA1(f4da383de4d13636b4b26ce1674f8ef7f7245e89) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140809 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnh09.p1", 0x000000, 0x100000, CRC(0d88b29e) SHA1(c3232ab3abf7fbb51bebac652b8eed6fec2c12d9) )
+ ROM_LOAD16_WORD_SWAP( "242cnh09.p2", 0x100000, 0x400000, CRC(b42ebf83) SHA1(c4405f07b8ef96eb5d9b624bc518171b5de1c546) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140816 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnh16.p1", 0x000000, 0x100000, CRC(59ae0525) SHA1(da283d53479973202046929f47b78d3a378eeb74) )
+ ROM_LOAD16_WORD_SWAP( "242cnh16.p2", 0x100000, 0x400000, CRC(cfff4986) SHA1(2434b58db6e6acb87799888cee12cd7eadafb46c) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140824 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnh24.p1", 0x000000, 0x100000, CRC(ac02f016) SHA1(ce8a4c5d4adb77ceaa2c4fb02ecae639a58b1e11) )
+ ROM_LOAD16_WORD_SWAP( "242cnh24.p2", 0x100000, 0x400000, CRC(224ef92b) SHA1(e104f085eb7f090c49c7fb6270d8d0cf20e26858) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140906 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cni06.p1", 0x000000, 0x100000, CRC(2b67d1fd) SHA1(b00d1cde6e70f0800722e3f676b419a24dc730a5) )
+ ROM_LOAD16_WORD_SWAP( "242cni06.p2", 0x100000, 0x400000, CRC(1d935839) SHA1(eaf2c03dda42f00d1346108dda593ba669da15de) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20140924 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cni24.p1", 0x000000, 0x100000, CRC(37fa2233) SHA1(0e84d11835d4a6516dec82e56dc1075a19c50697) )
+ ROM_LOAD16_WORD_SWAP( "242cni24.p2", 0x100000, 0x400000, CRC(eaa3890e) SHA1(b8f783a5ce948b69bd98f6f0514714cf9a592378) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20141002 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnj02.p1", 0x000000, 0x100000, CRC(d1085e45) SHA1(c718cc7bf444c240d114e286f7c4d864ffc774dd) )
+ ROM_LOAD16_WORD_SWAP( "242cnj02.p2", 0x100000, 0x400000, CRC(80511be2) SHA1(4e2922f92f3d0ef7c13c50419c57d4fb7878a9e4) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20141020 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cnj20.p1", 0x000000, 0x100000, CRC(93cae16e) SHA1(1445a267a299b733bd0c67d79b197fa55ac6d95a) )
+ ROM_LOAD16_WORD_SWAP( "242cnj20.p2", 0x100000, 0x400000, CRC(e3c2e36d) SHA1(bf9b7b830f24e4682b0e6abe431e96103372d7e6) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150201 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cob01.p1", 0x000000, 0x100000, CRC(b127666b) SHA1(3d852d55dc728622e31b160ac178a5efb9c86d8c) )
+ ROM_LOAD16_WORD_SWAP( "242cob01.p2", 0x100000, 0x400000, CRC(745606f4) SHA1(2d50a6b42365b02248c286f39293e760ae68381a) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150228 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cob28.p1", 0x000000, 0x100000, CRC(385de2db) SHA1(f07e764595a4da02a4517e2e244aeb6d4dd68049) )
+ ROM_LOAD16_WORD_SWAP( "242cob28.p2", 0x100000, 0x400000, CRC(e68be25d) SHA1(44170fc9ebed30d2a8cac44210692b4693224ad0) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150302 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242coc02.p1", 0x000000, 0x100000, CRC(803afe36) SHA1(78b0787eeffb4f53decf0f6eee2fdce93dafc6d9) )
+ ROM_LOAD16_WORD_SWAP( "242coc02.p2", 0x100000, 0x400000, CRC(7e76f991) SHA1(fab7479337e00c93f75cb9a613b18a5c81513d91) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150310 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242coc10.p1", 0x000000, 0x100000, CRC(e7b69efe) SHA1(d641b7419d18ffca5dba199af7d6197fa824a238) )
+ ROM_LOAD16_WORD_SWAP( "242coc10.p2", 0x100000, 0x400000, CRC(b4e8d712) SHA1(62d437d6c4aec43f50959d121ffb99293c68099f) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150330 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242coc30.p1", 0x000000, 0x100000, CRC(7693c342) SHA1(a78907075247a4aad74060025f179ed0ac522cdf) )
+ ROM_LOAD16_WORD_SWAP( "242coc30.p2", 0x100000, 0x400000, CRC(0d03f931) SHA1(bc2694d653ad28310de2ecb321b815e8f85dd1de) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150528 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242coe28.p1", 0x000000, 0x100000, CRC(82a247f9) SHA1(e472633878a993e5ada4a78b654e775dc5647544) )
+ ROM_LOAD16_WORD_SWAP( "242coc30.p2", 0x100000, 0x400000, CRC(0d03f931) SHA1(bc2694d653ad28310de2ecb321b815e8f85dd1de) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150614 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cof14.p1", 0x000000, 0x100000, CRC(1df50acf) SHA1(4a13e5e92781b42d91da8c6b3c625715213f0bfe) )
+ ROM_LOAD16_WORD_SWAP( "242cof14.p2", 0x100000, 0x400000, CRC(0e4c921c) SHA1(a0879fc90051111dec8e2bcc0f7177b892661b03) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150705 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cog05.p1", 0x000000, 0x100000, CRC(fe8c3218) SHA1(0426ba382e1207dd517a2f950651b383c786564d) )
+ ROM_LOAD16_WORD_SWAP( "242cog05.p2", 0x100000, 0x400000, CRC(30477896) SHA1(d3834c7353e4b3781874742fc0a0154656806cef) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150729 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cog29.p1", 0x000000, 0x100000, CRC(9c485873) SHA1(bdbd18de319723f4a6730236f5b22b54489fce09) )
+ ROM_LOAD16_WORD_SWAP( "242cog29.p2", 0x100000, 0x400000, CRC(8ab6db32) SHA1(fa8d317a5e4185343f91c8dd2a84d3e375b1ec4b) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20150827 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242coh27.p1", 0x000000, 0x100000, CRC(4cb8bd3d) SHA1(968f859f48f8893e9376d9777022ffc5cd56ea3b) )
+ ROM_LOAD16_WORD_SWAP( "242coh27.p2", 0x100000, 0x400000, CRC(83590f75) SHA1(808b13f90a437651372872fd47d921854555c4ca) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20151103 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cok03.p1", 0x000000, 0x100000, CRC(e5d553c0) SHA1(bee0d432276a534e1ba511a2c1eb73722079b42f) )
+ ROM_LOAD16_WORD_SWAP( "242cok03.p2", 0x100000, 0x400000, CRC(0bba8a3e) SHA1(9f8278b5c9b61e4ecc7849efedfbdc8692fbc9be) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20151108 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cok08.p1", 0x000000, 0x100000, CRC(971bae37) SHA1(9b66bd0d893eae0cf6d17d7c4ff3d5f6f7a3d83a) )
+ ROM_LOAD16_WORD_SWAP( "242cok08.p2", 0x100000, 0x400000, CRC(9cdd6455) SHA1(24014e66b5e773456987acef055f8307f731874e) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20151110 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cok10.p1", 0x000000, 0x100000, CRC(4d1ffdf4) SHA1(9630499b8f88d332bbfea965b55854fd6d40c134) )
+ ROM_LOAD16_WORD_SWAP( "242cok10.p2", 0x100000, 0x400000, CRC(064a18c9) SHA1(cc68ee70f738365674c63cc31954c994a6b2aeba) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20151223 ) // only p1,p2 are confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242col23.p1", 0x000000, 0x100000, CRC(7549069f) SHA1(3c083f77f4598c1525fc327f41dbd25a89a66723) )
+ ROM_LOAD16_WORD_SWAP( "242col23.p2", 0x100000, 0x400000, CRC(c53f8c35) SHA1(005b52da53dd57053d0123febfd004c2137cbace) )
+
+ NEO_SFIX_128K( "242cnd28.s1", CRC(8e37c589) SHA1(44b9f1cd06cd029fcc39bf29724b03e021974c20) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20160320 ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cpc20.p1", 0x000000, 0x100000, CRC(3a6baeb5) SHA1(100cfaf7f8478ef0f480c1453d268aef6758952a) )
+ ROM_LOAD16_WORD_SWAP( "242cpc20.p2", 0x100000, 0x400000, CRC(d6c78a73) SHA1(6ec63abaf39c1c7ddf4830a9a0e71618b539ea05) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98c20160907 ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cpi07.p1", 0x000000, 0x100000, CRC(eb7e9f57) SHA1(085881730d6f4565e5a67ffc8b4293ba624932bb) )
+ ROM_LOAD16_WORD_SWAP( "242cpi07.p2", 0x100000, 0x400000, CRC(919807ea) SHA1(bdb42da3b13aa68c785d5f50c14fc96c0d8b60e7) )
+
+ NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) )
+
+ NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) )
+ ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) )
+ ROM_LOAD16_BYTE( "242cnd19.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) )
+ ROM_LOAD16_BYTE( "242cnd19.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cd.p1", 0x000000, 0x100000, CRC(1a748f96) SHA1(bddb07fa6dc59ae547aed32218a6601b8b80816e) )
+ ROM_LOAD16_WORD_SWAP( "242cd.p2", 0x100000, 0x400000, CRC(5e4405b2) SHA1(f503c52c1ddec204c498351aae52528ccfe6ab6c) )
+
+ NEO_SFIX_128K( "242cd.s1", CRC(53f14b31) SHA1(c9aa1627bd4d55196dc2efa72c2b3bea1d90e699) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cd.c1", 0x0000000, 0x800000, CRC(05edf0ff) SHA1(99afddc2d59ba274f2d9d9f5ef86c925518b8278) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cd1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cd1.p1", 0x000000, 0x100000, CRC(0a411dda) SHA1(7c45fb93b9285d1bd63ab79576392205d6f2b2c5) )
+ ROM_LOAD16_WORD_SWAP( "242cd.p2", 0x100000, 0x400000, CRC(5e4405b2) SHA1(f503c52c1ddec204c498351aae52528ccfe6ab6c) )
+
+ NEO_SFIX_128K( "242sp.s1", CRC(9ccbae05) SHA1(f89dcce6a804b86e0f7362df7c16c7a4a978ee62) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242nc.c1", 0x0000000, 0x800000, CRC(6b458741) SHA1(a2157247763fae325ef0fcd93bc72df6dfd4fa33) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cd2 ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cd2.p1", 0x000000, 0x100000, CRC(8a7094e2) SHA1(0d2692c136976266145925b7cda5c75b821b7055) )
+ ROM_LOAD16_WORD_SWAP( "242cd.p2", 0x100000, 0x400000, CRC(5e4405b2) SHA1(f503c52c1ddec204c498351aae52528ccfe6ab6c) )
+
+ NEO_SFIX_128K( "242sp.s1", CRC(9ccbae05) SHA1(f89dcce6a804b86e0f7362df7c16c7a4a978ee62) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242nc.c1", 0x0000000, 0x800000, CRC(6b458741) SHA1(a2157247763fae325ef0fcd93bc72df6dfd4fa33) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ch ) /* The King of Fighters '98 - Remix by Chase - (Character move change 20030503) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ch.p1", 0x000000, 0x100000, CRC(c6244126) SHA1(c99b20917c5ad2780f7ecabe95f6aded6a7f0038) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ch1 ) // multijet kof98ch, looks like a hack of kof98cn
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cn.p1", 0x000000, 0x100000, CRC(9f8cb001) SHA1(0d159627815175a25e39b2d84aa0f9c7afb16b68) )
+ ROM_LOAD16_WORD_SWAP( "242ch1.p2", 0x100000, 0x400000, CRC(8a167905) SHA1(b6487e2df6450b8c192a7782d4514c1f740df41a) )
+
+ NEO_SFIX_128K( "242ch1.s1", CRC(c045e32a) SHA1(496f9123a50840064a1bf2d5dc8e768bc10aded1) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cn.c1", 0x0000000, 0x800000, CRC(40aceac9) SHA1(c9b7aee462e47bb70dc3644aa20b0698e7841ac1) )
+ ROM_LOAD16_BYTE( "242cn.c2", 0x0000001, 0x800000, CRC(3aa0b16b) SHA1(fbc063e85a6fa33ae189fe0e74ad53c6b29e3dd9) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98chl ) /* [OLD] The King of Fighters '98 - Revise by CHL - (Character move change 20030320) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242chl.p1", 0x000000, 0x100000, CRC(8dff0265) SHA1(9a1ffaf13ed95dcb035e081f93b8eb461212c713) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98chris ) // Chris 2k2 Style
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-pn1.p1", 0x000000, 0x100000, CRC(61ac868a) SHA1(26577264aa72d6af272952a876fcd3775f53e3fa) )
+ ROM_LOAD16_WORD_SWAP( "242chris.p2", 0x100000, 0x400000, CRC(99adc897) SHA1(4f8b3e58c8509a765536fb1f4895e8594c2237c2) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242chris.c7", 0x3000000, 0x800000, CRC(5ef4d3c3) SHA1(312cc9aa1c4657b7bc745348f3bac7476ef3c894) )
+ ROM_LOAD16_BYTE( "242chris.c8", 0x3000001, 0x800000, CRC(d8b5d903) SHA1(3c5f0cf4b7cec79a81ad3af8cafeca2a14509995) )
+ROM_END
+
+ROM_START( kof98cn )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cn.p1", 0x000000, 0x100000, CRC(9f8cb001) SHA1(0d159627815175a25e39b2d84aa0f9c7afb16b68) )
+ ROM_LOAD16_WORD_SWAP( "242cn.p2", 0x100000, 0x400000, CRC(d7d3ad2c) SHA1(f344a6093dc0ed08b77c786c4272be065039cf67) )
+
+ NEO_SFIX_128K( "242cn.s1", CRC(65080259) SHA1(6c531bb975ab338981db8337fd787b53ac48ece6) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cn.c1", 0x0000000, 0x800000, CRC(40aceac9) SHA1(c9b7aee462e47bb70dc3644aa20b0698e7841ac1) )
+ ROM_LOAD16_BYTE( "242cn.c2", 0x0000001, 0x800000, CRC(3aa0b16b) SHA1(fbc063e85a6fa33ae189fe0e74ad53c6b29e3dd9) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cn1 ) // hack of kof98y
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242y.p1", 0x000000, 0x100000, CRC(20848b37) SHA1(eb44baa6f273d6ab596204f89427078343c0ace5) )
+ ROM_LOAD16_WORD_SWAP( "242cn.p2", 0x100000, 0x400000, CRC(d7d3ad2c) SHA1(f344a6093dc0ed08b77c786c4272be065039cf67) )
+
+ NEO_SFIX_128K( "242cn1.s1", CRC(3b054e79) SHA1(4a56fa412065efb159f283f2bbab9f76e4160d85) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cn.c1", 0x0000000, 0x800000, CRC(40aceac9) SHA1(c9b7aee462e47bb70dc3644aa20b0698e7841ac1) )
+ ROM_LOAD16_BYTE( "242cn.c2", 0x0000001, 0x800000, CRC(3aa0b16b) SHA1(fbc063e85a6fa33ae189fe0e74ad53c6b29e3dd9) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cos )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cos.p1", 0x000000, 0x100000, CRC(1db1c200) SHA1(2fcac911720ecfc878c0d47b2a4c8ca17eec5588) )
+ ROM_LOAD16_WORD_SWAP( "242cos.p2", 0x100000, 0x400000, CRC(48c87162) SHA1(e29d90f101a4b585d98cd51a941e876356cc77f0) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cos.c1", 0x0000000, 0x800000, CRC(9f8b0ee6) SHA1(a13b07a2cfdb5e318a11cdd054d0f3ec612cbc15) )
+ ROM_LOAD16_BYTE( "242cos.c2", 0x0000001, 0x800000, CRC(2e21efeb) SHA1(35eeb1657fc62c1298c019f16978e3108c25d068) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cos1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cos1.p1", 0x000000, 0x100000, CRC(fb883c88) SHA1(6136a051afc714f3e190f05dcf35b77e06151c66) )
+ ROM_LOAD16_WORD_SWAP( "242cos1.p2", 0x100000, 0x400000, CRC(8b303816) SHA1(63501eb059bd0afe4a77b891cb8eabfefd344648) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cos1.c1", 0x0000000, 0x800000, CRC(8dd08778) SHA1(1e7ab8b8111d7584789781f6b8d9949f85b601bc) )
+ ROM_LOAD16_BYTE( "242cos1.c2", 0x0000001, 0x800000, CRC(c2618f28) SHA1(085b39c5eb730df8a9e4d5fe439098c5bc000ac3) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98cos2 ) // Cosmic 2.0
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cos2.p1", 0x000000, 0x100000, CRC(ab79dd93) SHA1(3b59df27be009dd19508cdd028bf260c6141c2ad) )
+ ROM_LOAD16_WORD_SWAP( "242cos2.p2", 0x100000, 0x400000, CRC(6df5820b) SHA1(608c4f4987d8174dd8b60b274b773e6978fdbc92) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cos2.c1", 0x0000000, 0x800000, CRC(96762b9a) SHA1(5d62188c1a4816b6cd5001b618d695597c9b61a6) )
+ ROM_LOAD16_BYTE( "242cos2.c2", 0x0000001, 0x800000, CRC(e7617290) SHA1(371441d1f204e83783a2a5c0e86d1a3968e0892d) )
+ ROM_LOAD16_BYTE( "242cos2.c3", 0x1000000, 0x800000, CRC(21a545b4) SHA1(90e29b07034fa7c03ec366fd716bc6e60849102f) )
+ ROM_LOAD16_BYTE( "242cos2.c4", 0x1000001, 0x800000, CRC(21adcb7b) SHA1(70c6ccef09349747a751da2e74700cc54ba9741f) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98dc ) /* The King of Fighters '98 - Colour fix by Dodowang - (character colour change - the "negative colour style */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242dc.p2", 0x200000, 0x400000, CRC(4bce4de3) SHA1(5c210782853250772cf27c1492f018d92a5357fc) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ecm ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ecm.p1", 0x000000, 0x100000, CRC(c84c975a) SHA1(0abcb78eb1f3970bfcb5f55cbbf1d4d9174311db) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ehr ) /* The King of Fighters '98 - Remix by Raymonose - (Character move change - ultra kill start is max in Advanced Mode - ultra power hack ABC - bases on kof98eh) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ehr.p1", 0x000000, 0x100000, CRC(451acfca) SHA1(2d0ec5f999c54749b39dd2a03fedf62f4bf79cd4) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98evl ) // Ultra Evolution Lite
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242evl.p1", 0x000000, 0x100000, CRC(91fec4c3) SHA1(4a0a4c340f67d8f11fee1d2851b6aec0b1feae08) )
+ ROM_LOAD16_WORD_SWAP( "242evl.p2", 0x100000, 0x400000, CRC(3c76d7cc) SHA1(0385bd3860add3431097ed207d9de80491482fa0) )
+
+ NEO_SFIX_128K( "242evl.s1", CRC(33429d5b) SHA1(68e0c1a6408029b034b7f7936bbb12152aa6d5bc) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242evl.c1", 0x0000000, 0x800000, CRC(e7f6e015) SHA1(c7efac1dee18e1f29a1d80ef5be5574cb12c2d6c) )
+ ROM_LOAD16_BYTE( "242evl.c2", 0x0000001, 0x800000, CRC(8c2dfa52) SHA1(2ba4235abf78e360129b6d5643889ccb3155cb30) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9 ) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151 ) )
+ROM_END
+
+ROM_START( kof98evo ) // Evolution
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242new.p1", 0x000000, 0x100000, CRC(f9a22b2f) SHA1(730e9ae8391d8fa70141c5d73479cf9cff91a672) )
+ ROM_LOAD16_WORD_SWAP( "242evo.p2", 0x100000, 0x400000, CRC(65547465) SHA1(6f3d8bc995e2ef195e682885c050715a274913e7) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9 ) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151 ) )
+ROM_END
+
+ROM_START( kof98evo2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242evo2.p1", 0x000000, 0x100000, CRC(39ef1761) SHA1(5e4267ae5d63b44ff18ec26117d779eb9b2b7613) )
+ ROM_LOAD16_WORD_SWAP( "242evo2.p2", 0x100000, 0x400000, CRC(230faff7) SHA1(8df8a15c09adf7fad96204567e848ac0f7afcdc0) )
+
+ NEO_SFIX_128K( "242evo2.s1", CRC(536defd3) SHA1(dda5e94531f8009013185a243227f775a574c6c2) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242sp2.c1", 0x0000000, 0x800000, CRC(3c4458cc) SHA1(0869f72a9d7226b19ffea5108f618d0f62c01291) )
+ ROM_LOAD16_BYTE( "242sp2.c2", 0x0000001, 0x800000, CRC(f060b0f4) SHA1(b4230c5c8dd35c0907b7c7d23f964051e6c24723) )
+ ROM_LOAD16_BYTE( "242new.c3", 0x1000000, 0x800000, CRC(3e554882) SHA1(c2a0dd3621180e9aae0f41adb46ea7fcce0764e8) )
+ ROM_LOAD16_BYTE( "242new.c4", 0x1000001, 0x800000, CRC(e9e0f676) SHA1(4b46dc18b9ce502097e615c9c236ca0ac5b280e0) )
+ ROM_LOAD16_BYTE( "242sp2.c5", 0x2000000, 0x800000, CRC(7e98340a) SHA1(35881c2a3e4025a7a18d85d80ba5ec91e33cddc7) )
+ ROM_LOAD16_BYTE( "242sp2.c6", 0x2000001, 0x800000, CRC(4adce5a2) SHA1(a6d4549db97584c529ac728e1f239f6168b77c6b) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151) )
+ROM_END
+
+ROM_START( kof98evr ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242evr.p1", 0x000000, 0x100000, CRC(2cd3d8e9) SHA1(81014dd7e4ac6bd4d2f155dcee3930e1eb5174a1) )
+ ROM_LOAD16_WORD_SWAP( "242evr.p2", 0x100000, 0x400000, CRC(c1e80581) SHA1(466d41a3390bf655e2dba5a42c566ec5bcd626a6) )
+
+ NEO_SFIX_128K( "242evr.s1", CRC(88355acf) SHA1(bbcb0d7c5f6ad73d049a94f03d5ee1af23b99754) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cn.c1", 0x0000000, 0x800000, CRC(40aceac9) SHA1(c9b7aee462e47bb70dc3644aa20b0698e7841ac1) )
+ ROM_LOAD16_BYTE( "242cn.c2", 0x0000001, 0x800000, CRC(3aa0b16b) SHA1(fbc063e85a6fa33ae189fe0e74ad53c6b29e3dd9) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242evr.c7", 0x3000000, 0x800000, CRC(737249a8) SHA1(4ced30143182bd09596697600b2c4801cd66d274) )
+ ROM_LOAD16_BYTE( "242evr.c8", 0x3000001, 0x800000, CRC(3489c788) SHA1(b47ba5d64e7aad2d3f263f9fd659c1ae83b06284) )
+ROM_END
+
+ROM_START( kof98f )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242f.p1", 0x000000, 0x100000, CRC(c17a0ace) SHA1(b5496062954bdc3ab45a9b4e7787ab3426ff7404) )
+ ROM_LOAD16_WORD_SWAP( "242f.p2", 0x100000, 0x400000, CRC(d7477a42) SHA1(f20980ab53ebc36907712b0e0b8db18c42d1198c) )
+ ROM_FILL(0x182,1,0x00)
+ ROM_FILL(0x183,1,0x0A)
+
+ NEO_SFIX_128K( "242f.s1", CRC(bdd8c78e) SHA1(2df58aad109ac3012f7814f873d8c966faef8aa1) )
+
+ NEO_BIOS_AUDIO_256K( "242f.m1", CRC(d73ccd25) SHA1(54dfdf4baf8efb621e234f602939929b17330bfc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242f.v1", 0x000000, 0x400000, CRC(5c6d6b00) SHA1(ef87aa9573d66e3ee35d7fa0bb680dfea52da144) )
+ ROM_LOAD( "242f.v2", 0x400000, 0x400000, CRC(392953d5) SHA1(53468da327e64cb471fb3f0ea71977ec2bfb31f7) )
+ ROM_LOAD( "242f.v3", 0x800000, 0x400000, CRC(a2e57162) SHA1(6c3f010035d6426a420dbbfbe8d3cecc879e8ee7) )
+ ROM_LOAD( "242f.v4", 0xc00000, 0x400000, CRC(91c353c5) SHA1(58f1fb75191b662f087929f8a401719375274d1f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242f.c1", 0x0000000, 0x800000, CRC(69a77e68) SHA1(4b0a0d6b52b1136b2c0ce237536532e9333f918a) )
+ ROM_LOAD16_BYTE( "242f.c2", 0x0000001, 0x800000, CRC(315609de) SHA1(44d92b59e93f8340b27bbd91b6a6ed74c1e88cf4) )
+ ROM_LOAD16_BYTE( "242f.c3", 0x1000000, 0x800000, CRC(bd6ba838) SHA1(5142ca697b2b6e203df7737e6a4ada126706bac3) )
+ ROM_LOAD16_BYTE( "242f.c4", 0x1000001, 0x800000, CRC(ad1a89a2) SHA1(ab470673d561955c9d0640c06c5d6b931f2d095c) )
+ ROM_LOAD16_BYTE( "242f.c5", 0x2000000, 0x800000, CRC(6cb4a77c) SHA1(73bcefd2e090db70d9bc693d6086cf6ab2af049b) )
+ ROM_LOAD16_BYTE( "242f.c6", 0x2000001, 0x800000, CRC(7bf63b7d) SHA1(6e5c38dc450272d4410c150d5906b0870e753480) )
+ ROM_LOAD16_BYTE( "242f.c7", 0x3000000, 0x800000, CRC(c4a3ef6b) SHA1(28fc5b7d1e0bf641483190ff27f30e4b9f48d80a) )
+ ROM_LOAD16_BYTE( "242f.c8", 0x3000001, 0x800000, CRC(1c506f21) SHA1(5a96a8649c1027fdcbdd34be6176c3110271f74d) )
+ROM_END
+
+ROM_START( kof98fr ) /* The King of Fighters '98 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242fr.p1", 0x000000, 0x100000, CRC(2f29984c) SHA1(6feb8412d335e8b38a0d7231f51af91251901dd4) )
+ ROM_LOAD16_WORD_SWAP( "242fr.p2", 0x100000, 0x400000, CRC(c2fc3506) SHA1(ddcedbc30474d2e1db70d640a6a258171ecb900c) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242fr.c1", 0x0000000, 0x800000, CRC(07bd2146) SHA1(124c580667887d9f027b3fb2dbb6db39b346359c) )
+ ROM_LOAD16_BYTE( "242fr.c2", 0x0000001, 0x800000, CRC(c935e740) SHA1(375624da3f24ea3b752c0cc3d9b75457e27c31d0) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98fro ) /* [OLD] The King of Fighters '98 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242fro.p1", 0x000000, 0x100000, CRC(6500efce) SHA1(933de9a1b3ee32ac0043179448b4dda776eb86ba) )
+ ROM_LOAD16_WORD_SWAP( "242fro.p2", 0x100000, 0x400000, CRC(c7fa95ee) SHA1(4de91d9151fbc510751f2c5277da7c8f49872c26) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242fro.c1", 0x0000000, 0x800000, CRC(bae65fc5) SHA1(933f587955ee29f3beca9be495a35331530e7206) )
+ ROM_LOAD16_BYTE( "242fr.c2", 0x0000001, 0x800000, CRC(c935e740) SHA1(375624da3f24ea3b752c0cc3d9b75457e27c31d0) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98fro2 ) /* [OLD] The King of Fighters '98 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242fro2.p1", 0x000000, 0x100000, CRC(71d4650f) SHA1(d0719d54070c3dea1d72b95c1fc830bd911ea49c) )
+ ROM_LOAD16_WORD_SWAP( "242fro.p2", 0x100000, 0x400000, CRC(c7fa95ee) SHA1(4de91d9151fbc510751f2c5277da7c8f49872c26) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98frp ) // The Slutfest: French satire by Cigarette Patch
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242frp.p1", 0x000000, 0x100000, CRC(b9d5d3a5) SHA1(f58e1bae237c271e9f3e0c081b89118e5f910f94) )
+ ROM_LOAD16_WORD_SWAP( "242frp.p2", 0x100000, 0x400000, CRC(dccb944f) SHA1(9bd4fe01c44ddfd74583f9f46dd3342aef1bae68) )
+
+ NEO_SFIX_128K( "242frp.s1", CRC(6db59470) SHA1(e4333cd4dac667779958a72249202082df74b00f) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242frp.c1", 0x0000000, 0x800000, CRC(3833c1aa) SHA1(4e4f1c3c932b0da708d48af0ce0473ac51d0908d) )
+ ROM_LOAD16_BYTE( "242frp.c2", 0x0000001, 0x800000, CRC(c3a8234f) SHA1(ba55e5c0cc61e828a71f9dcdba4c4b6ea40beab2) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98fv )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242fv.p1", 0x000000, 0x100000, CRC(81ddbea9) SHA1(5e805944372bbb10801836da50bcd03a2879287e) )
+ ROM_LOAD16_WORD_SWAP( "242fv.p2", 0x100000, 0x400000, CRC(0bb089f2) SHA1(6a96300699d50d15f4579a9d6f64bd4a0f08ff79) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242evr.c7", 0x3000000, 0x800000, CRC(737249a8) SHA1(4ced30143182bd09596697600b2c4801cd66d274) )
+ ROM_LOAD16_BYTE( "242evr.c8", 0x3000001, 0x800000, CRC(3489c788) SHA1(b47ba5d64e7aad2d3f263f9fd659c1ae83b06284) )
+ROM_END
+
+ROM_START( kof98fv2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242fv2.p1", 0x000000, 0x100000, CRC(027b7cfb) SHA1(f51bc40a82dbbc47d3bc60cdfc80db391003fca8) )
+ ROM_LOAD16_WORD_SWAP( "242fv.p2", 0x100000, 0x400000, CRC(0bb089f2) SHA1(6a96300699d50d15f4579a9d6f64bd4a0f08ff79) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242evr.c7", 0x3000000, 0x800000, CRC(737249a8) SHA1(4ced30143182bd09596697600b2c4801cd66d274) )
+ ROM_LOAD16_BYTE( "242evr.c8", 0x3000001, 0x800000, CRC(3489c788) SHA1(b47ba5d64e7aad2d3f263f9fd659c1ae83b06284) )
+ROM_END
+
+ROM_START( kof98gold ) // Gold Color Hack
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-pn1.p1", 0x000000, 0x100000, CRC(61ac868a) SHA1(26577264aa72d6af272952a876fcd3775f53e3fa) )
+ ROM_LOAD16_WORD_SWAP( "242gold.p2", 0x100000, 0x400000, CRC(c0f6802d) SHA1(f86c141efe454e949cb28585f1e88088b3894b16) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98hk ) // Hakeshu
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242hk.p1", 0x000000, 0x100000, CRC(701423b1) SHA1(3f062282ef119800ee7e0a7dc8e7fdbc1de69edb) )
+ ROM_LOAD16_WORD_SWAP( "242hk.p2", 0x100000, 0x400000, CRC(8fe4e5ae) SHA1(247c5eded83c1b59ec601a4be98fd88edc1ae4ac) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242cos2.c1", 0x0000000, 0x800000, CRC(96762b9a) SHA1(5d62188c1a4816b6cd5001b618d695597c9b61a6) )
+ ROM_LOAD16_BYTE( "242cos2.c2", 0x0000001, 0x800000, CRC(e7617290) SHA1(371441d1f204e83783a2a5c0e86d1a3968e0892d) )
+ ROM_LOAD16_BYTE( "242hk.c3", 0x1000000, 0x800000, CRC(3a731ff6) SHA1(bf1dedd95b4f387f474b38118763722f1e45a135) )
+ ROM_LOAD16_BYTE( "242hk.c4", 0x1000001, 0x800000, CRC(ba6b4f20) SHA1(adfca3d095a0d5f25f223263c9c241d029ba000f) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242chris.c7", 0x3000000, 0x800000, CRC(5ef4d3c3) SHA1(312cc9aa1c4657b7bc745348f3bac7476ef3c894) )
+ ROM_LOAD16_BYTE( "242chris.c8", 0x3000001, 0x800000, CRC(d8b5d903) SHA1(3c5f0cf4b7cec79a81ad3af8cafeca2a14509995) )
+ROM_END
+
+ROM_START( kof98ice ) /* The King of Fighters '98 - Colour fix by Diablo_Hu - (Colour change - ice) */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242ice.p2", 0x200000, 0x400000, CRC(43449225) SHA1(0ac7154ecee354e9c9a3fde27ec195062e6f3cee) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ico ) /* [OLD] The King of Fighters '98 - Colour fix by Diablo_Hu - (Colour change - ice) */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242ico.p2", 0x200000, 0x400000, CRC(7d018eab) SHA1(cea90992777ffe43d3921a4c0151b371c63bc204) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98iori ) // Iori Special Hack by Qiou2719 (13-02-10)
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242iori.p1", 0x000000, 0x100000, CRC(ba59819e) SHA1(afcc1dadec63563d0c4de20871d972d251fbbaba) )
+ ROM_LOAD16_WORD_SWAP( "242iori.p2", 0x100000, 0x400000, CRC(273e2232) SHA1(123c5541b21fcbaa85f3a687d9c738b083ab7b9e) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242evl.c1", 0x0000000, 0x800000, CRC(e7f6e015) SHA1(c7efac1dee18e1f29a1d80ef5be5574cb12c2d6c) )
+ ROM_LOAD16_BYTE( "242evl.c2", 0x0000001, 0x800000, CRC(8c2dfa52) SHA1(2ba4235abf78e360129b6d5643889ccb3155cb30) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242sp2.c5", 0x2000000, 0x800000, CRC(7e98340a) SHA1(35881c2a3e4025a7a18d85d80ba5ec91e33cddc7) )
+ ROM_LOAD16_BYTE( "242sp2.c6", 0x2000001, 0x800000, CRC(4adce5a2) SHA1(a6d4549db97584c529ac728e1f239f6168b77c6b) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98izh ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242izh.p2", 0x200000, 0x400000, CRC(a1dc47bf) SHA1(5cab964df8ac80ee0f78daa0a9f5835fe2fb542c) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98jh ) /* The King of Fighters '98 - Enhance by Jason/K3 and Ydmis - (Secret character enable for Rugal - Athena style change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242jh.p1", 0x000000, 0x100000, CRC(238ed528) SHA1(9f0155cf298886842cd20d5a797a057889e65e04) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98k95 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242k95.p1", 0x000000, 0x100000, CRC(f3e75f06) SHA1(ac5c848030a50da9d96f2e974f50f6fb6e7152ba) )
+ ROM_LOAD16_WORD_SWAP( "242k95.p2", 0x100000, 0x400000, CRC(417e154f) SHA1(6dfad87d49ea14a25844746179e82bd47bca6a8d) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242k95.c7", 0x3000000, 0x800000, CRC(936ee534) SHA1(f447da4b0dc2f36ee72305a9cdd6726b87b819b5) )
+ ROM_LOAD16_BYTE( "242k95.c8", 0x3000001, 0x800000, CRC(b874ead0) SHA1(0f16e017fcb05a6cc4ffd18c50a857bd31e71cc4) )
+ROM_END
+
+ROM_START( kof98klc ) // Hack of Ivex combo 20090923
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242cii23.p1", 0x000000, 0x100000, CRC(35cbbaa7) SHA1(e9d773b24d999ad55c3813e627836e4d91f239f6) )
+ ROM_LOAD16_WORD_SWAP( "242klc.p2", 0x100000, 0x400000, CRC(5d10ed32) SHA1(974622115a7d157259b5e4f2a18ede14ebe6c5e4) )
+
+ NEO_SFIX_128K( "242klc.s1", CRC(30441357) SHA1(87e4a0e003092044a13a84b18a7a25026aca4d43) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242co.c1", 0x0000000, 0x800000, CRC(2a4eea4f) SHA1(dd29f64715392ed44507849c25dbcf7a30547899) )
+ ROM_LOAD16_BYTE( "242co.c2", 0x0000001, 0x800000, CRC(76368d7d) SHA1(aa7d7313985bcc275520aedfa451f99545dd1927) )
+ ROM_LOAD16_BYTE( "242co.c3", 0x1000000, 0x800000, CRC(93f80804) SHA1(b320b6b5222801ffbc55b8b0862fb5386520817f) )
+ ROM_LOAD16_BYTE( "242co.c4", 0x1000001, 0x800000, CRC(d4f9a578) SHA1(86f2d4f2fb60259d84a31af40cb0074930a37476) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98lb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242lb.p1", 0x000000, 0x100000, CRC(da7c4acc) SHA1(a99133c37ceb07c7fe5f0d821488b26d85351bc8) )
+ ROM_LOAD16_WORD_SWAP( "242lb.p2", 0x100000, 0x400000, CRC(ec048f7b) SHA1(9af19079461c8a05817de064b13801e79c7f528b) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151) )
+ROM_END
+
+ROM_START( kof98lv )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242lv.p1", 0x000000, 0x100000, CRC(bf81f196) SHA1(e92b86844b0c5f77327b0f51b24c60db664bf70d) )
+ ROM_LOAD16_WORD_SWAP( "242lv.p2", 0x100000, 0x400000, CRC(c9ade63f) SHA1(bf4cc7dd3cff29d8b3bd5b5bf1cdcd42021233e3) )
+
+ NEO_SFIX_128K( "242lv.s1", CRC(c6d05b6b) SHA1(787e4f8db203ce380d4ec5e911ac438f356e8c31) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242lv.c1", 0x0000000, 0x800000, CRC(835fa4e1) SHA1(72fdbc671204b46b90254c6d106d37c4ebaa0281) )
+ ROM_LOAD16_BYTE( "242lv.c2", 0x0000001, 0x800000, CRC(e2ef9582) SHA1(3b53d7137b461019a7ff0b0646130e8c49b752f7) )
+ ROM_LOAD16_BYTE( "242cos2.c3", 0x1000000, 0x800000, CRC(21a545b4) SHA1(90e29b07034fa7c03ec366fd716bc6e60849102f) )
+ ROM_LOAD16_BYTE( "242cos2.c4", 0x1000001, 0x800000, CRC(21adcb7b) SHA1(70c6ccef09349747a751da2e74700cc54ba9741f) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242lv.c7", 0x3000000, 0x800000, CRC(7786c5bf) SHA1(baad4060949a886e89502ea1711cf1739071dc17) )
+ ROM_LOAD16_BYTE( "242lv.c8", 0x3000001, 0x800000, CRC(5f8a130b) SHA1(3e93a22f165dc3bd2cc02abb19951117f45d6022) )
+ROM_END
+
+ROM_START( kof98m )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242m.p1", 0x000000, 0x100000, CRC(4ebfc026) SHA1(70dfe1522d8f6aa64ba0ec1ce5021db40fe67403) )
+ ROM_LOAD16_WORD_SWAP( "242m.p2", 0x100000, 0x400000, CRC(45430595) SHA1(523218c133eabba081ff1aed59860addf9ebc009) )
+
+ NEO_SFIX_128K( "242-s1.bin", CRC(935d55a4) SHA1(5bca2169dd64e4f4d71220ac59f0d5be50e35e0b) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242m.c7", 0x3000000, 0x800000, CRC(924a1e4b) SHA1(6de2c48b63cab647bca5d554a01d6a39c24924dc) )
+ ROM_LOAD16_BYTE( "242m.c8", 0x3000001, 0x800000, CRC(fa1cfd45) SHA1(1922cf380f8d61770080cc0d7bc7727b78509384) )
+ ROM_LOAD16_BYTE( "242m.c9", 0x4000000, 0x800000, CRC(cad3eae8) SHA1(39557e0f559761b60e03062d99251b1056ecd8db) )
+ ROM_LOAD16_BYTE( "242m.c10", 0x4000001, 0x800000, CRC(930f41f8) SHA1(6e0349f9fe622890bc0111c8a554f67909cd810f) )
+ROM_END
+
+ROM_START( kof98mev ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242mev.p1", 0x000000, 0x100000, CRC(d1a6a8be) SHA1(0197f00b5ac2452e8b8b5597c4edf98509ae14be) )
+ ROM_LOAD16_WORD_SWAP( "242mev.p2", 0x100000, 0x400000, CRC(73d3505d) SHA1(74f581aa2fdc968b403fc19c2b719aa12177ba42) )
+
+ NEO_SFIX_128K( "242mev.s1", CRC(9acd571d) SHA1(a3520208766e65ae8e0c7cd0977794098974ff18) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242mix.c7", 0x3000000, 0x800000, CRC(374eb904) SHA1(060ccdca943b6493890c9e42eacf943cf4acc100) )
+ ROM_LOAD16_BYTE( "242mix.c8", 0x3000001, 0x800000, CRC(eddd2789) SHA1(e1fe8238ed51ee328d8c7eebb58fa6230b9e48c5) )
+ ROM_LOAD16_BYTE( "242mev.c9", 0x4000000, 0x800000, CRC(1823dfa3) SHA1(f9f16465ec7564a812fb093d12adcba5f4660d85) )
+ ROM_LOAD16_BYTE( "242mev.c10", 0x4000001, 0x800000, CRC(6a04ab8c) SHA1(4c000e595cab2749bbee26b45527f5a7b573dfbc) )
+ROM_END
+
+ROM_START( kof98mix ) // 2011-10-01 version
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242mix.p1", 0x000000, 0x100000, CRC(4a0525b1) SHA1(14c0356fd63ba55040b1f744f3b4450bfbf32a93) )
+ ROM_LOAD16_WORD_SWAP( "242mix.p2", 0x100000, 0x400000, CRC(75aeef82) SHA1(5fdd52b88160ef670e1e5b592967db4e1ae8f407) )
+
+ NEO_SFIX_128K( "242mix.s1", CRC(07999beb) SHA1(e72372ca3c43083f39a9e0279af0f64d0994e9ba) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x5000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242mix.c7", 0x3000000, 0x800000, CRC(374eb904) SHA1(060ccdca943b6493890c9e42eacf943cf4acc100) )
+ ROM_LOAD16_BYTE( "242mix.c8", 0x3000001, 0x800000, CRC(eddd2789) SHA1(e1fe8238ed51ee328d8c7eebb58fa6230b9e48c5) )
+ ROM_LOAD16_BYTE( "242mix.c9", 0x4000000, 0x800000, CRC(83ef6611) SHA1(c65415d1933e6d2c19265047a22172d46484d900) )
+ ROM_LOAD16_BYTE( "242mix.c10", 0x4000001, 0x800000, CRC(c22c67f8) SHA1(4f4bc61af37a2a14fa059785a0de0e82078b89e5) )
+ROM_END
+
+ROM_START( kof98nc )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242nc.p1", 0x000000, 0x100000, CRC(a9ebe406) SHA1(7c72271ae2da41547d06fb244c245760c32c0259) )
+ ROM_LOAD16_WORD_SWAP( "242cd.p2", 0x100000, 0x400000, CRC(5e4405b2) SHA1(f503c52c1ddec204c498351aae52528ccfe6ab6c) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242nc.c1", 0x0000000, 0x800000, CRC(6b458741) SHA1(a2157247763fae325ef0fcd93bc72df6dfd4fa33) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ncdh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ncdh.p1", 0x000000, 0x100000, CRC(6cd3c533) SHA1(5d7b223e394930345f3988e13dd268233ab43b70) )
+ ROM_LOAD16_WORD_SWAP( "242ncdh.p2", 0x100000, 0x400000, CRC(5e05df14) SHA1(1bd1729d15a29f9cfba79d90b690d53467cec790) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242ncdh.c7", 0x3000000, 0x800000, CRC(a5747386) SHA1(2e0dc5f1edef45bd1028c02d1b2882102fb3c454) )
+ ROM_LOAD16_BYTE( "242ncdh.c8", 0x3000001, 0x800000, CRC(80bb019f) SHA1(5beff8332b9ba4b839da0e07e992caab84df5d9e) )
+ROM_END
+
+ROM_START( kof98new )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242new.p1", 0x000000, 0x100000, CRC(f9a22b2f) SHA1(730e9ae8391d8fa70141c5d73479cf9cff91a672) )
+ ROM_LOAD16_WORD_SWAP( "242new.p2", 0x100000, 0x400000, CRC(5c650818) SHA1(7b3a0d5a4448de3d3e010e7ce5b521d3bf008a08) )
+
+ NEO_SFIX_128K( "242cos.s1", CRC(554c4b66) SHA1(0fa53c7433ed4b66515890ad0526f292ae88c7ad) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242new.c3", 0x1000000, 0x800000, CRC(3e554882) SHA1(c2a0dd3621180e9aae0f41adb46ea7fcce0764e8) )
+ ROM_LOAD16_BYTE( "242new.c4", 0x1000001, 0x800000, CRC(e9e0f676) SHA1(4b46dc18b9ce502097e615c9c236ca0ac5b280e0) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151) )
+ROM_END
+
+ROM_START( kof98pjc ) /* The King of Fighters '98 - Colour fix by TcwLee - (Character colour change) */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242pjc.p2", 0x200000, 0x400000, CRC(d7e4ca54) SHA1(b325f46494b31ce5a1ad7cdfae6c25ad7d061d23) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98rh ) /* The King of Fighters '98 - Hack by Raymonose - (Style change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rh.p1", 0x000000, 0x100000, CRC(f3cf5e74) SHA1(aac4a1f355bb2b0f45030fafd8e0360b7990540a) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98rh1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rh1.p1", 0x000000, 0x100000, CRC(87e30f4e) SHA1(68d776bfb8b4a017d9853ead31b643930cb0486a) )
+ ROM_LOAD16_WORD_SWAP( "242rh1.p2", 0x100000, 0x400000, CRC(8196b644) SHA1(b0c2fbe2874c58eb8d5955faa0f6c1b26390666b) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98rl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rl.p1", 0x000000, 0x100000, CRC(cb209c51) SHA1(62023af00595e1921ff2e076ec6b39226e094a14) )
+ ROM_LOAD16_WORD_SWAP( "242rl.p2", 0x100000, 0x400000, CRC(404ef576) SHA1(ab0d85d033f4102f7b5181661cc08d676173fc14) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9 ) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151 ) )
+ROM_END
+
+ROM_START( kof98rm ) /* The King of Fighters '98 - Remix by Raymonose - (Character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rm.p1", 0x000000, 0x100000, CRC(6232a4e8) SHA1(56f1e69f3e16992d956f33b48478af3e56cb8c96) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98rsa ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rsa.p1", 0x000000, 0x200000, CRC(7ccbd666) SHA1(4d338cd055893234040b550c17ddca465239e849) )
+ ROM_LOAD16_WORD_SWAP( "242rsa.p2", 0x200000, 0x400000, CRC(bb80b351) SHA1(da0f7d9b021269064c82fd6c06e66e8202f47862) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98rup ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242rup.p1", 0x000000, 0x100000, CRC(daeeae3c) SHA1(a24c87b414b1ba34227b939f5eeaee34ea5a6393) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98seh ) /* The King of Fighters '98 - Super Enhance Hack by Creamymami and Ydmis - (Ultra kill start is max in Advanced Mode - ultra power hack ABC) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242seh.p1", 0x000000, 0x100000, CRC(4684eda8) SHA1(0987bd16a9246a34046183cc06d543224aaf2e31) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98seho ) /* The King of Fighters '98 - Super Enhance Hack by Ydmis - (Ultra kill start is max in Advanced Mode - power hack ABC) (Old) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242seho.p1", 0x000000, 0x100000, CRC(86c9d1e6) SHA1(cfd987ee06e07528ad53f4107f3cf6771f401a5a) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98sof )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242sof.p1", 0x000000, 0x115470, CRC(b1619062) SHA1(ddf3d90e6484c33b86cc5eb0c96e989bc9a75dcc) )
+ ROM_LOAD16_WORD_SWAP( "242sof.p2", 0x100000, 0x400000, CRC(d3b724e0) SHA1(8fe6b39abb3300ab17ef00c7e2093e9a7cabd31d) )
+
+ NEO_SFIX_128K( "242sof.s1", CRC(7cfe20af) SHA1(80e23884e0e30a990da73853eaf6570cdf4b611f) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242evl.c1", 0x0000000, 0x800000, CRC(e7f6e015) SHA1(c7efac1dee18e1f29a1d80ef5be5574cb12c2d6c) )
+ ROM_LOAD16_BYTE( "242evl.c2", 0x0000001, 0x800000, CRC(8c2dfa52) SHA1(2ba4235abf78e360129b6d5643889ccb3155cb30) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98sp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242sp.p1", 0x000000, 0x100000, CRC(058127d8) SHA1(9dd6e5a34d69670ef84fa6186e0001c7adb05a52) )
+ ROM_LOAD16_WORD_SWAP( "242sp.p2", 0x100000, 0x400000, CRC(c3dd89f7) SHA1(6aef3c92688a2af4e63165a92555258954a9da94) )
+
+ NEO_SFIX_128K( "242sp.s1", CRC(9ccbae05) SHA1(f89dcce6a804b86e0f7362df7c16c7a4a978ee62) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sp.c7", 0x3000000, 0x800000, CRC(35839069) SHA1(830dcc84f91ef5498019604fecd9a8db1e3e22a9 ) )
+ ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151 ) )
+ROM_END
+
+ROM_START( kof98sp2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242sp2.p1", 0x000000, 0x100000, CRC(ce56bf36) SHA1(2f8b28b4e35c74f6ce9976186fe004a4daf0def2) )
+ ROM_LOAD16_WORD_SWAP( "242sp2.p2", 0x100000, 0x400000, CRC(bec83808) SHA1(bcdae4c9493ce7595fa3315cc02e2da7e434a14f) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242sp2.c1", 0x0000000, 0x800000, CRC(3c4458cc) SHA1(0869f72a9d7226b19ffea5108f618d0f62c01291) )
+ ROM_LOAD16_BYTE( "242sp2.c2", 0x0000001, 0x800000, CRC(f060b0f4) SHA1(b4230c5c8dd35c0907b7c7d23f964051e6c24723) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242sp2.c5", 0x2000000, 0x800000, CRC(7e98340a) SHA1(35881c2a3e4025a7a18d85d80ba5ec91e33cddc7) )
+ ROM_LOAD16_BYTE( "242sp2.c6", 0x2000001, 0x800000, CRC(4adce5a2) SHA1(a6d4549db97584c529ac728e1f239f6168b77c6b) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98sr )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242sr.p1", 0x000000, 0x100000, CRC(63ee75b8) SHA1(d4443b97bbbae428992b8577369c9b82e008b95c) )
+ ROM_LOAD16_WORD_SWAP( "242sr.p2", 0x100000, 0x400000, CRC(44695e4d) SHA1(4194e9da6a93192c26b32532252e5bd5275b8a10) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242nc.c1", 0x0000000, 0x800000, CRC(6b458741) SHA1(a2157247763fae325ef0fcd93bc72df6dfd4fa33) )
+ ROM_LOAD16_BYTE( "242cd.c2", 0x0000001, 0x800000, CRC(3723515e) SHA1(a2f0ae12cdd10e74a19188d774e833eb8501f20c) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242sr.c7", 0x3000000, 0x800000, CRC(bf1810e5) SHA1(03eed63bad855b00a666332982e2933685eaf740) )
+ ROM_LOAD16_BYTE( "242sr.c8", 0x3000001, 0x800000, CRC(7919b330) SHA1(fd7cc8360307ba8527e3c596c4412df5eed42b3f) )
+ROM_END
+
+ROM_START( kof98sv ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242sv.p2", 0x200000, 0x400000, CRC(a7854dbd) SHA1(db414679899e6b45db54c4b24ffa688fa01eac22) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98tim )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242tim.p1", 0x000000, 0x100000, CRC(dbd6ab5a) SHA1(b4f1fe9feebc063c90ebc2b401d1590ddeb6fe3d) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ul )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ul.p1", 0x000000, 0x100000, CRC(4a4cf2f4) SHA1(7bf35c9cbb86d4335902abd6606c48eed8813f5c) )
+ ROM_LOAD16_WORD_SWAP( "242ul.p2", 0x100000, 0x400000, CRC(b821e275) SHA1(89df56bcd5da6a75f4e2c7fc8d859994933d26db) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ur )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242ur.p1", 0x000000, 0x100000, CRC(8c41b391) SHA1(fef64fc10d95c5e4eeeac758f3f2d3ccacb3899b) )
+ ROM_LOAD16_WORD_SWAP( "242ur.p2", 0x100000, 0x400000, CRC(6a48c7bc) SHA1(0791092ecf87678758549e49f8d5d53a5e66eeb4) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98urf )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242urf.p1", 0x000000, 0x100000, CRC(e1960b0f) SHA1(ea6516a0e93d35c63f3dabdb8b785531304ad807) )
+ ROM_LOAD16_WORD_SWAP( "242urf.p2", 0x100000, 0x400000, CRC(cde0fa91) SHA1(da56d2e6e2095a0c3d3682acebef9a4790828424) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98wh ) /* The King of Fighters '98 - Hack by Wesker - (Style change for Kyo to 95' Kyo) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242wh.p1", 0x000000, 0x100000, CRC(0c24ce14) SHA1(8bc889b16803c912640c39305a95812aed4e4323) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98wh1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242wh1.p1", 0x000000, 0x100000, CRC(676650af) SHA1(7f7650c83a46625d34654f303b17aaa43032c225) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98wh2 ) /* The King of Fighters '98 N - (kof98wh2) - Hack by Wesker - (Style change for Kyo to 95' Kyo, Iori and Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242wh2.p1", 0x000000, 0x100000, CRC(63267ea9) SHA1(fb82a8519cf5d164a9456f9f11aca36243b76f62) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98xi )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242xi.p1", 0x000000, 0x100000, CRC(8cd47f05) SHA1(db19d8457d4ac250b102d8af50d1d1b676997c60) )
+ ROM_LOAD16_WORD_SWAP( "242xi.p2", 0x100000, 0x400000, CRC(8dcf495d) SHA1(9cafdaaad215f8f912b93a0ba7fa1fb8a4d20ece) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242xi.c5", 0x2000000, 0x800000, CRC(d4e28d5f) SHA1(bd93278bb610565f24d468f596121ae1dd7d2686) )
+ ROM_LOAD16_BYTE( "242xi.c6", 0x2000001, 0x800000, CRC(fcfa6e58) SHA1(14da7d42692da09ed4d489459270bd83fe83cf4a) )
+ ROM_LOAD16_BYTE( "242xi.c7", 0x3000000, 0x800000, CRC(960f0df4) SHA1(0bf8381d14be1fe16ffc122df0f49a425cfef9bc) )
+ ROM_LOAD16_BYTE( "242xi.c8", 0x3000001, 0x800000, CRC(f1eab90b) SHA1(224f829bbc75d51f1152e16e60e58951c62d188c) )
+ROM_END
+
+ROM_START( kof98y ) /* The King of Fighters '98 - Hack by Ydmis - (Secret character enable for Rugal) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242y.p1", 0x000000, 0x100000, CRC(20848b37) SHA1(eb44baa6f273d6ab596204f89427078343c0ace5) )
+ ROM_LOAD16_WORD_SWAP( "242y.p2", 0x100000, 0x400000, CRC(3ae6a0b6) SHA1(d3fb3d24da69d590095b183ce5eb5715e0d46e96) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98yh ) /* The King of Fighters '98 - Enhance by Ydmis - (Secret character enable for Rugal - power hack ABC in Extra Mode) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242yh.p1", 0x000000, 0x100000, CRC(4ee6f162) SHA1(66036540d459268198c556397db3ab3c175165a4) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98zy ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242zy.p2", 0x200000, 0x400000, CRC(b258c011) SHA1(77045b46b079099d84eeb0b2ea518fa7988bde2f) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+
+
+GAME( 1998, kof98aas, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 (Asamiya Athena 99 Style)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98ae, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 Anniversary Edition", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98ae0, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 Anniversary Edition (set 0)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98ae1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 Anniversary Edition (set 1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98ae2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 Anniversary Edition (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98ae3, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 Anniversary Edition (set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof98ae20160308,kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 Anniversary Edition (2016-03-08)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof98ae20160827,kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 Anniversary Edition (2016-08-27)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98bge, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "hack", "Kof'98 (Boss Gold Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof98bh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Boss Hack 2006)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98bvi, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "hack", "Kof'98 (Blocking Version hack by Ivex 2009-05-31)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // crashes in first demo
+GAME( 2006, kof98c2006, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo 2006", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof98c20060214, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2006-02-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof98c20070720, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2007-07-20)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2007, kof98c20070923, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2007-09-23)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2008, kof98c20080330, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-03-30)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2008, kof98c20080524, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-05-24)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2008, kof98c20080616, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-06-16)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2008, kof98c20080712, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-07-12)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2009, kof98c20090620, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-06-20)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2009, kof98c20090923, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-09-23)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 2010, kof98c20100214, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2010-02-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof98c20100304, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2010-03-04)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof98c20110114, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2011-01-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof98c20110314, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2011-03-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof98c20120116, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2012-01-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kof98c20120915, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2012-09-15)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130213, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-02-13)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130311, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-03-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130509, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-05-09)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130528, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-05-30)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130617, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-06-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130808, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-08-08)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20130820, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-08-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof98c20131113, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-11-13)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140101, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-01-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140110, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-01-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140118, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-01-18)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140204, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-02-04)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140213, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-02-13)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140217, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-02-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140228, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-02-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140302, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-03-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140310, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-03-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140317, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-03-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140403, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-04-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140412, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-04-12)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140416, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-04-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140419, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-04-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140428, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-04-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140504, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-05-04)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140524, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-05-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140606, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-06-06)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140620, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-06-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140717, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-07-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140809, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-08-09)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140816, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-08-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140824, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-08-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140906, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-09-06)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20140924, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-09-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20141002, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-10-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof98c20141020, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2014-10-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150201, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-02-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150228, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-02-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150302, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-03-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150310, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-03-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150330, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-03-30)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150528, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-05-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150614, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-06-14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150705, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-07-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150729, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-07-29)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20150827, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-08-27)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20151103, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20151108, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-08)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20151110, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof98c20151223, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-12-23)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof98c20160320, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2016-03-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof98c20160907, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2016-09-07)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cd, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cd1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 (NGCD v1.04f [EGHT])", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cd2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 (NGCD v1.04 (EGHT))", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof98ch, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Chase", "Kof'98 (Diff Moves 2003-05-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ch1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Chinese Translation hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof98chl, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'98 (Diff Moves 2003-03-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98chris,kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Chris 2k2 Style)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cn, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FoxUU, Zuojie", "Kof'98 (Chinese Translation)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cn1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FoxUU, Zuojie", "Kof'98 (Chinese Translation, hack of kof98y)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cos, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Qiou2719", "Kof'98 (Cosmic)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cos1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Qiou2719", "Kof'98 (Cosmic 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98cos2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Qiou2719", "Kof'98 (Cosmic 2.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof98cta, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo 10th Anniversary", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 1998, kof98dc, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "Dodowang", "Kof'98 (Char color changed - Negative style)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ecm, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Enhanced Chris Moves hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ehr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Raymonose", "Kof'98 (Diff Moves - Ultra kill start max in Adv Mode - Ultra pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98evl, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Ultra Evolution Lite)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98evo, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Evolution)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98evo2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Evolution Orochi Baozou Hack Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98evr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (EVR)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98f, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 ('fake')", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof98fr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Kof'98 (French 2004)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof98fro, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Kof'98 (French 2003)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof98fro2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Kof'98 (French 2002)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof98frp, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Cigarette Patch", "Kof'98 Slutfest (French parody)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98fv, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Flash Revision)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98fv2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Flash Version UK)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98gold, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Gold Color Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98hk, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Hakeshu)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ice, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "Diablo_Hu", "Kof'98 Ice", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ico, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "Diablo_Hu", "Kof'98 Ice (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof98iori, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Qiou2719", "Kof'98 (Iori Special Hack by Qiou2719 (2010-02-13))", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof98izh, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "hack", "Kof'98 (Imitates Kof2002 Attacks Version hack by Zuojie 2008-12-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98jh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason/K3 and Ydmis", "Kof'98 (Add Rugal - Athena style changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98k95, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (EX KYO SP)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98klc, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-09-23)(Kalce combo mix)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself
+GAME( 1998, kof98lb, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof'98 (hack by lb70)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof98lv, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Love Edition (2009-12-27))", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98m, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 MIX", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98mev, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (MEV)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof98mix, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 Mix (2011-10-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98nc, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'98 (Neo-Geo CD 1.2 by Eddids from FCHT)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ncdh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof1996", "Kof'98 (CD to MVS Conversion hack by Kof1996)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98new, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 New Version", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98pjc, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "TcwLee", "Kof'98 (Char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Raymonose", "Kof'98 (Style changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rh1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'98 (Real Rugal Hack - Yashional)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rl, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Risko", "Kof'98 (Relive by Risko)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rm, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Raymonose", "Kof'98 (Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rsa, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "Wanglins", "Kof'98 (Ralf Special Attack hack by Wanglins)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98rup, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Ultimate Edition v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98seh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Kof'98 (Ultra kill start max in Adv Mode - Ultra pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98seho, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'98 (Ultra kill start max in Adv Mode - Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98sof, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Silver Omega Tributo a Fliperman)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98sp, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZWJ", "Kof'98 Super Plus (Hack by ZWJ)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98sp2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZWJ", "Kof'98 Super Plus (Alternate Set, Hack by ZWJ)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98sr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 SR ( EGHT )", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98sv, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "hack", "Kof'98 (Silver Style Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98tim, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT, Creamymami, Raymonose", "Kof'98 (Triple Impact Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ul, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Ultra Leona)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ur, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'98 (Ultra Rugal)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98urf, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'98 (Ultra Rugal Final Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98wh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'98 (Style changes for Kyo to 95' Kyo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98wh1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Remix BT Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98wh2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'98 (Style changes for Kyo to 95' Kyo, Iori and Rugal)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98xi, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (XI Flash Version (Jacky hack))", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98y, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'98 (Add Rugal)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98yh, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'98 (Add Rugal - Pow hack ABC in Extra Mode)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98zy, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "hack", "Kof'98 (Purple Remix)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/kof99.cpp b/docs/release/src/hbmame/drivers/kof99.cpp
new file mode 100644
index 00000000000..6880ac0309c
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kof99.cpp
@@ -0,0 +1,3030 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+// Rules: no encryption, has s1 rom -> neogeo_state,neogeo
+// no s1 rom -> neogeo_hbmame,cmc42sfix
+// encrypted gfx -> m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
+// encrypted gfx and no s1 rom -> above plus m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF99_GFX_KEY);
+
+// encrypted gfx and has s1 rom
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof99bh )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
+}
+
+// encrypted except for cx roms
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof99d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->kof99_decrypt_68k(cpuregion);
+ m_sma_prot->kof99_install_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+
+ROM_START( kof99ab ) /* The King of Fighters '99 - Hack by Marcochen/PPX Hack Team - (Rolls moves sideways version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ab.p1", 0x000000, 0x100000, CRC(8ABC720E) SHA1(3D8FDC2F3AE1F4F1DC121587EF37240C15548280) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+/* The King of Fighters '99 - Anniversary Edition.
+ Unfortunately Yashional does not put revision dates in his games,
+ so we've had to guess which roms to use.
+ For the name, we go by the date on the zipfile (if provided). */
+ROM_START( kof99ae )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ae.p1", 0x000000, 0x100000, CRC(67f52d45) SHA1(cadf1c5c8c3e234204c8b32677f347e66d0373e5) )
+ ROM_LOAD16_WORD_SWAP( "251ae.p2", 0x100000, 0x400000, CRC(67134a67) SHA1(c853f67ec66b0f01273c3ce1e1003262cbca0a60) )
+
+ NEO_SFIX_128K( "251ae.s1", CRC(6243a70b) SHA1(452371f20e31c4d79022a128fc5335e951a6af1e) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251ae.c1", 0x0000000, 0x800000, CRC(d0048356) SHA1(3a5a381f531751c8469d74b59e9e668d21cbc06b) )
+ ROM_LOAD16_BYTE( "251ae.c2", 0x0000001, 0x800000, CRC(1d405bb0) SHA1(76c4b1d6e5ff0d5814b19203fbdd1f02d663de3e) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251ae.c9", 0x4000000, 0x800000, CRC(7d90d06d) SHA1(a72e91d689ef23b4bab43266c4360f663fc7836f) )
+ ROM_LOAD16_BYTE( "251ae.c10", 0x4000001, 0x800000, CRC(3e2bf178) SHA1(e606e69595c0e9601c1dea142f0fcf77c2964347) )
+ ROM_LOAD16_BYTE( "251ae.c11", 0x5000000, 0x800000, CRC(90016920) SHA1(6686e98a25d906131f73ed83c712096a6946c62e) )
+ ROM_LOAD16_BYTE( "251ae.c12", 0x5000001, 0x800000, CRC(49cfed23) SHA1(63fa8682b86802967b36489c7483c59039f35aa5) )
+ROM_END
+
+ROM_START( kof99ae0 ) /* Original Version - Decrypted GFX */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ae0.p1", 0x000000, 0x100000, CRC(17aec0ae) SHA1(ca88256c9dc118667165ae66fae34ee49bfa1b09) )
+ ROM_LOAD16_WORD_SWAP( "251ae0.p2", 0x100000, 0x400000, CRC(e9630204) SHA1(f5f88eaf4563163c5ddeb39223f1dc5d56658987) )
+
+ NEO_SFIX_128K( "251ae0.s1", CRC(9f515051) SHA1(c5d6553b7c84db3c72b3d2feb9b0a580afa35382) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251ae.c1", 0x0000000, 0x800000, CRC(d0048356) SHA1(3a5a381f531751c8469d74b59e9e668d21cbc06b) )
+ ROM_LOAD16_BYTE( "251ae.c2", 0x0000001, 0x800000, CRC(1d405bb0) SHA1(76c4b1d6e5ff0d5814b19203fbdd1f02d663de3e) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251ae.c9", 0x4000000, 0x800000, CRC(7d90d06d) SHA1(a72e91d689ef23b4bab43266c4360f663fc7836f) )
+ ROM_LOAD16_BYTE( "251ae.c10", 0x4000001, 0x800000, CRC(3e2bf178) SHA1(e606e69595c0e9601c1dea142f0fcf77c2964347) )
+ ROM_LOAD16_BYTE( "251ae.c11", 0x5000000, 0x800000, CRC(90016920) SHA1(6686e98a25d906131f73ed83c712096a6946c62e) )
+ ROM_LOAD16_BYTE( "251ae.c12", 0x5000001, 0x800000, CRC(49cfed23) SHA1(63fa8682b86802967b36489c7483c59039f35aa5) )
+ROM_END
+
+ROM_START( kof99ae20140408 ) // latest date on the roms
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aend.p1", 0x000000, 0x100000, CRC(8913d6e4) SHA1(2cd0d9db1b521f123c20105dc95d3319e39c60ce) )
+ ROM_LOAD16_WORD_SWAP( "251aend.p2", 0x100000, 0x400000, CRC(9c458ee5) SHA1(c2bd37c6d53e2119724160c9626e38f7138f6c8b) )
+ ROM_LOAD16_WORD_SWAP( "251aend.p3", 0x500000, 0x400000, CRC(64979453) SHA1(730ad832959cc9eab8fb30fd1266f4ed8902ae03) )
+
+ NEO_SFIX_128K( "251ae.s1", CRC(6243a70b) SHA1(452371f20e31c4d79022a128fc5335e951a6af1e) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aend.c9", 0x4000000, 0x800000, CRC(0b7a7f25) SHA1(1582f85ce96b74b361565408cccf35815267ac52) )
+ ROM_LOAD16_BYTE( "251aend.c10", 0x4000001, 0x800000, CRC(4b840d63) SHA1(4cb4c5cb34aef6f1e188f08984e870a50b41b9f2) )
+ ROM_LOAD16_BYTE( "251ae.c11", 0x5000000, 0x800000, CRC(90016920) SHA1(6686e98a25d906131f73ed83c712096a6946c62e) )
+ ROM_LOAD16_BYTE( "251ae.c12", 0x5000001, 0x800000, CRC(49cfed23) SHA1(63fa8682b86802967b36489c7483c59039f35aa5) )
+ROM_END
+
+ROM_START( kof99ae20140624 ) /* The King of Fighters '99 - Anniversary Edition */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aenf.p1", 0x000000, 0x100000, CRC(924122bc) SHA1(5240c2317e79ee27abcdb484800c569e78a1172f) )
+ ROM_LOAD16_WORD_SWAP( "251aenf.p2", 0x100000, 0x400000, CRC(6ba36969) SHA1(18cb69260f5592a4279f07bfd0d3af2f3e7ff288) )
+ ROM_LOAD16_WORD_SWAP( "251aenf.p3", 0x500000, 0x400000, CRC(99697d6e) SHA1(c505afdfb7ea506c30d2d581d166f49f7fd7c88c) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aenf.s1", CRC(18c1562d) SHA1(afeaa541998a3c23a0ecb87da0231370f08213f2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aenf.c9", 0x4000000, 0x800000, CRC(53d028c0) SHA1(be59fc381e3b9c3bc42a5ca691b3dfa05e1f2b1c) )
+ ROM_LOAD16_BYTE( "251aenf.c10", 0x4000001, 0x800000, CRC(707ce1a7) SHA1(afc41c9ee37eca8f2a77b2b40a120bb01d8eb4bd) )
+ ROM_LOAD16_BYTE( "251ae.c11", 0x5000000, 0x800000, CRC(90016920) SHA1(6686e98a25d906131f73ed83c712096a6946c62e) )
+ ROM_LOAD16_BYTE( "251ae.c12", 0x5000001, 0x800000, CRC(49cfed23) SHA1(63fa8682b86802967b36489c7483c59039f35aa5) )
+ROM_END
+
+ROM_START( kof99ae20150121 ) /* The King of Fighters '99 - Anniversary Edition */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aeoa.p1", 0x000000, 0x100000, CRC(110a01b4) SHA1(df16c7c0e79717d939f594e80469a525eed62b07) )
+ ROM_LOAD16_WORD_SWAP( "251aeoa.p2", 0x100000, 0x400000, CRC(0f8e548a) SHA1(f195d02793f3f139975bc8789ec288438622abdb) )
+ ROM_LOAD16_WORD_SWAP( "251aeoa.p3", 0x500000, 0x400000, CRC(84280fed) SHA1(06f8afac0dcaff5b9ec7d5fd36a88760f329c482) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aenf.s1", CRC(18c1562d) SHA1(afeaa541998a3c23a0ecb87da0231370f08213f2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aeoa.c9", 0x4000000, 0x800000, CRC(cd0911ba) SHA1(01a2e644532bc483ce8ee2f9ea7cba2fa7492cd1) )
+ ROM_LOAD16_BYTE( "251aeoa.c10", 0x4000001, 0x800000, CRC(a910b5bb) SHA1(976686caec9727fd0e028bd7007806d2962af2cd) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99ae20150520 ) /* The King of Fighters '99 - Anniversary Edition */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aeoe.p1", 0x000000, 0x100000, CRC(149bd289) SHA1(c1818ce416c7036b8cc51d6ec752b2a612b7d2b1) )
+ ROM_LOAD16_WORD_SWAP( "251aeoe.p2", 0x100000, 0x400000, CRC(86658d87) SHA1(d3d8a2f596b145a1bc98d65fcf3715d86b7a6dd6) )
+ ROM_LOAD16_WORD_SWAP( "251aeoe.p3", 0x500000, 0x400000, CRC(e66a79c0) SHA1(a13bf66ceb15a4d42855c539a658427845c7d148) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aex.s1", CRC(3c31ee43) SHA1(f3bf265ad41037c2317702818136eb08e3ade3a2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aex.c9", 0x4000000, 0x800000, CRC(f33d51d5) SHA1(b7d95afc0e85fec3c3279a766e22227cce91f3f4) )
+ ROM_LOAD16_BYTE( "251aex.c10", 0x4000001, 0x800000, CRC(852770d7) SHA1(734520728d7e8162021fd1cc93f2fe2f8bd02e75) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99ae20150711 ) /* The King of Fighters '99 - Anniversary Edition */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aeog.p1", 0x000000, 0x100000, CRC(78057e71) SHA1(f027654620c2490ef834713265deec1ada542e9b) )
+ ROM_LOAD16_WORD_SWAP( "251aeog.p2", 0x100000, 0x800000, CRC(b7e50e35) SHA1(9706fe6bce816d75893ee8882eb4e9cd0590daac) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aex.s1", CRC(3c31ee43) SHA1(f3bf265ad41037c2317702818136eb08e3ade3a2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aeog.c9", 0x4000000, 0x800000, CRC(86a3550d) SHA1(ec74bcadb315a004297dc9e02c72efe5f2e2c5b0) )
+ ROM_LOAD16_BYTE( "251aeog.c10", 0x4000001, 0x800000, CRC(986bb897) SHA1(14572621122e97c3ae96a3b85069b9cde062ef19) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99ae20160411 ) // all confirmed
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aepc.p1", 0x000000, 0x100000, CRC(5cbb24fd) SHA1(082bdbce405138ef08ccb274d48de2272494b62a) )
+ ROM_LOAD16_WORD_SWAP( "251aepc.p2", 0x100000, 0x800000, CRC(55418995) SHA1(419258fc68ae35cde605cc3f89ff05d426299d27) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aex.s1", CRC(3c31ee43) SHA1(f3bf265ad41037c2317702818136eb08e3ade3a2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aeog.c9", 0x4000000, 0x800000, CRC(86a3550d) SHA1(ec74bcadb315a004297dc9e02c72efe5f2e2c5b0) )
+ ROM_LOAD16_BYTE( "251aeog.c10", 0x4000001, 0x800000, CRC(986bb897) SHA1(14572621122e97c3ae96a3b85069b9cde062ef19) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99ae20160419 ) // all confirmed
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aepd.p1", 0x000000, 0x100000, CRC(c19447eb) SHA1(45c25eaaf1a03a5756e2df4a54abf2f7ebfab45a) )
+ ROM_LOAD16_WORD_SWAP( "251aepc.p2", 0x100000, 0x800000, CRC(55418995) SHA1(419258fc68ae35cde605cc3f89ff05d426299d27) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aex.s1", CRC(3c31ee43) SHA1(f3bf265ad41037c2317702818136eb08e3ade3a2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aeog.c9", 0x4000000, 0x800000, CRC(86a3550d) SHA1(ec74bcadb315a004297dc9e02c72efe5f2e2c5b0) )
+ ROM_LOAD16_BYTE( "251aeog.c10", 0x4000001, 0x800000, CRC(986bb897) SHA1(14572621122e97c3ae96a3b85069b9cde062ef19) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99aes ) // all confirmed
+ ROM_REGION( 0xd00000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251aes.p1", 0x000000, 0x100000, CRC(5dfe36ed) SHA1(d27a2abf3aa7e8a87faf55ff15e4b87905fa0061) )
+ ROM_LOAD16_WORD_SWAP( "251aepc.p2", 0x100000, 0x800000, CRC(55418995) SHA1(419258fc68ae35cde605cc3f89ff05d426299d27) )
+ ROM_LOAD16_WORD_SWAP( "251aes.p3", 0x900000, 0x400000, CRC(de66edce) SHA1(57d773552cfd22e6d301aa5350dd4d049ef247ac) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ NEO_SFIX_128K( "251aex.s1", CRC(3c31ee43) SHA1(f3bf265ad41037c2317702818136eb08e3ade3a2) )
+
+ ROM_REGION( 0xe00000, "ymsnd", 0 )
+ ROM_LOAD( "251aex.v1", 0x000000, 0x400000, CRC(ceaa3bae) SHA1(ec598f92e7d3b41f38448fee2dd2ee599a482f8f) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251aex.c1.bin", 0x000000, 0x800000, CRC(497c2e83) SHA1(379887e839dd4e33b41ab634a54789621bdfea98) )
+ ROM_LOAD16_BYTE( "251aex.c2.bin", 0x000001, 0x800000, CRC(0a13eeb7) SHA1(2cb196a955a3472f922d0085cee2ddc0111fdbd3) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ae.c7", 0x3000000, 0x800000, CRC(f22760ad) SHA1(a503898d9b6141c76f63b7c505ac78d3575530b2) )
+ ROM_LOAD16_BYTE( "251ae.c8", 0x3000001, 0x800000, CRC(396c3a70) SHA1(6cd0acd05c138ac85ad63a04dfc015a3e70fa572) )
+ ROM_LOAD16_BYTE( "251aeog.c9", 0x4000000, 0x800000, CRC(86a3550d) SHA1(ec74bcadb315a004297dc9e02c72efe5f2e2c5b0) )
+ ROM_LOAD16_BYTE( "251aeog.c10", 0x4000001, 0x800000, CRC(986bb897) SHA1(14572621122e97c3ae96a3b85069b9cde062ef19) )
+ ROM_LOAD16_BYTE( "251aex.c11", 0x5000000, 0x800000, CRC(7fe785c2) SHA1(b49c3ab1ebf89090388c4757f24d1c02c730cc99) )
+ ROM_LOAD16_BYTE( "251aex.c12", 0x5000001, 0x800000, CRC(a7541483) SHA1(3b3f0e67acfae1c3b6c5549ac350d855482f285f) )
+ROM_END
+
+ROM_START( kof99bh ) /* The King of Fighters '99 - Hack by Dodowang - (Can choose Krizalid and Krizalid' - have icons in character select menu) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ndh.p1", 0x000000, 0x100000, CRC(eedcc5bd) SHA1(8280c4329d666b4831c766853f5334355dc40cc9) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99bhp2 ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251bhp2.p1", 0x000000, 0x100000, CRC(a4deff9a) SHA1(a445cd48bc0a8b386cd232bcc5b0d82c9d757c6d) )
+ ROM_LOAD16_WORD_SWAP( "251bhp2.p2", 0x100000, 0x400000, CRC(23339a53) SHA1(e76564ae5464abf06235f813b70b38c492c2f7dc) )
+
+ NEO_SFIX_128K( "251pb.s1", CRC(0b3d79d3) SHA1(2647c617c52d9955ee29520c416b59febfe7c0db) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251bhp2.c7", 0x3000000, 0x800000, CRC(a0fb0a24) SHA1(89b01efb4b5352efd3e1483e424e319d5a1f1451) )
+ ROM_LOAD16_BYTE( "251bhp2.c8", 0x3000001, 0x800000, CRC(fbc1112c) SHA1(3f3789b8bbc335a4f9b66fc66a350767ec7bc32c) )
+ROM_END
+
+ROM_START( kof99bhs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251bhs.p1", 0x000000, 0x100000, CRC(c2d1b2fc) SHA1(016f168e5d657abbfb1b81389b1b1613a225d1ad) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99bs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251bs.p1", 0x000000, 0x100000, CRC(43ce0028) SHA1(7f6ee38c5eb89410f56907f66e6c45f38384da2c) )
+ ROM_LOAD16_WORD_SWAP( "251bs.p2", 0x100000, 0x400000, CRC(e20677c4) SHA1(3ada6a734a5ec274f96b012146ca3416b66b6865) )
+
+ NEO_SFIX_128K( "251bs.s1", CRC(697c1f85) SHA1(117d12908b060db62716a8ac8a155c8303287746) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251bs.c1", 0x0000000, 0x800000, CRC(a472f1db) SHA1(f941f39e95da3a866e5b05e61fffabe7731bdfcf) )
+ ROM_LOAD16_BYTE( "251bs.c2", 0x0000001, 0x800000, CRC(11037779) SHA1(93a9c5031844aa8a13e758283621bf32cf41bb5b) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251bs.c7", 0x3000000, 0x800000, CRC(165607a2) SHA1(7899a0cff743a942fa3af7def57dac6684e76231) )
+ ROM_LOAD16_BYTE( "251bs.c8", 0x3000001, 0x800000, CRC(720c9304) SHA1(ecd5813bd0ab8df55191b21c9f425176945726c3) )
+ROM_END
+
+ROM_START( kof99bs2 ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251bs2.p1", 0x000000, 0x100000, CRC(3adcedbb) SHA1(ce21a4d981354303031fee17e8db9f9961ebe5c9) )
+ ROM_LOAD16_WORD_SWAP( "251bs2.p2", 0x100000, 0x400000, CRC(62b11826) SHA1(13113692b43c3d1b5c8572d2024777e6a1a15e2b) )
+
+ NEO_SFIX_128K( "251bs.s1", CRC(697c1f85) SHA1(117d12908b060db62716a8ac8a155c8303287746) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251bs2.c1", 0x0000000, 0x800000, CRC(598cc558) SHA1(451d3f9fadb1810e383057591c46b736b6f595cb) )
+ ROM_LOAD16_BYTE( "251bs2.c2", 0x0000001, 0x800000, CRC(5b4c297b) SHA1(147342a115b0237d1cb55eceae093a7ee4a3c438) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251bs2.c7", 0x3000000, 0x800000, CRC(3ac342ad) SHA1(325d0c407129a2cbf30c52e5317bbeb8fc056448) )
+ ROM_LOAD16_BYTE( "251bs2.c8", 0x3000001, 0x800000, CRC(500aea52) SHA1(a0c03d1c27c0f5013aff713b53e4e61bc76ff748) )
+ROM_END
+
+ROM_START( kof99ch ) /* The King of Fighters '99 - Remix by Chase - (Character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ch.p1", 0x000000, 0x100000, CRC(6efd349b) SHA1(f876df9137801125b8f142102d4165295607ba02) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99chf ) /* The King of Fighters '99 - Remix by Chase - (Character move change - fixed) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251chf.p1", 0x000000, 0x100000, CRC(34387e01) SHA1(cc56d936d931d793a7d02dddf4a4521ed09e1e52) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99co ) // combo
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251co.p1", 0x000000, 0x100000, CRC(99242c0c) SHA1(11d9d52783e4958a53f12469a75a784846d7ba49) )
+ ROM_LOAD16_WORD_SWAP( "251co.p2", 0x100000, 0x400000, CRC(c3ddba7b) SHA1(1890a3cbf33b76d532b4d31eb602698dbff840ea) )
+
+ NEO_SFIX_128K( "251co.s1", CRC(6c36e84f) SHA1(80052ce8e9f09c4e2f7edf5c6423f3b5588eb33b) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99co2 ) // combo
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251co2.p1", 0x000000, 0x100000, CRC(857276bd) SHA1(722ab77fea24a0db8691e64c4c3ed098d1dc5360) )
+ ROM_LOAD16_WORD_SWAP( "251co2.p2", 0x100000, 0x400000, CRC(c79df28d) SHA1(352edc22d5b5ecb84748cb703135de5c2a7a0032) )
+
+ NEO_SFIX_128K( "251co2.s1", CRC(10b87e35) SHA1(f466e9b3ecc7b14cde42a767c3fac73a9eed282b) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99d )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kc.neo-sma", 0x0c0000, 0x040000, CRC(6c9d0647) SHA1(2a0ce62ca6c18007e8fbe1b60475c7874ab79389) )
+ ROM_LOAD16_WORD_SWAP( "251-p1.p1", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) )
+ ROM_LOAD16_WORD_SWAP( "251-pg2.p2", 0x500000, 0x400000, CRC(d9057f51) SHA1(8d365b4dd40351495df99d6c765df1434b0b0548) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99eh ) /* The King of Fighters '99 - Enhance by Ydmis - (Can choose Krizalid, Krizalid', Kyo and Iori - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eh.p1", 0x000000, 0x100000, CRC(93f05c57) SHA1(e92e18e0572ae313952b2416c76d06c86202f755) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99ehr ) /* The King of Fighters '99 - Remix by Raymonose - (Can choose Krizalid, Krizalid', Kyo and Iori - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ehr.p1", 0x000000, 0x100000, CRC(08dfc6cb) SHA1(5f3fed5e1c598c580aa33b66aeb92d5d95d2b2e6) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99eur )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eur.p1", 0x000000, 0x100000, CRC(66fa20fd) SHA1(6fbda6db41558e4d7a073c7d5fc568f7cc57df2d) )
+ ROM_LOAD16_WORD_SWAP( "251eur.p2", 0x100000, 0x400000, CRC(aec93904) SHA1(9270e1a920c6f99dc2b716fc1d3536ce7783cd74) )
+
+ NEO_SFIX_128K( "251eur.s1", CRC(a6747969) SHA1(6577c00aceb0d612819c703b3334ebb6c760e126) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251eur.c1", 0x0000000, 0x800000, CRC(c7e8bf32) SHA1(ede68ac10356f6824fa6b30e558038e78b604caf) )
+ ROM_LOAD16_BYTE( "251eur.c2", 0x0000001, 0x800000, CRC(4e8f9f7d) SHA1(3a60df66bb24702041facb71025241483e5a1832) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251eur.c7", 0x3000000, 0x800000, CRC(f0b5ff02) SHA1(b9a25e6dad48547acce8edb5623be9d35bff1b4c) )
+ ROM_LOAD16_BYTE( "251eur.c8", 0x3000001, 0x800000, CRC(7107b8d5) SHA1(6754113de3eb6a34c1913bb5117dd12d705b961c) )
+ROM_END
+
+ROM_START( kof99eur1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eur1.p1", 0x000000, 0x100000, CRC(a10ddd49) SHA1(0d524db74f414d2ac5694b9f0fd8a39e1bc41322) )
+ ROM_LOAD16_WORD_SWAP( "251eur1.p2", 0x100000, 0x400000, CRC(cbb73011) SHA1(984a0581a146bde46834ea3672c6003c5eb4539a) )
+
+ NEO_SFIX_128K( "251eur1.s1", CRC(f0c559ea) SHA1(43f7409fa56a851e621d42d76c7be440427c6ad3) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251eur.c1", 0x0000000, 0x800000, CRC(c7e8bf32) SHA1(ede68ac10356f6824fa6b30e558038e78b604caf) )
+ ROM_LOAD16_BYTE( "251eur.c2", 0x0000001, 0x800000, CRC(4e8f9f7d) SHA1(3a60df66bb24702041facb71025241483e5a1832) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251eur1.c7", 0x3000000, 0x800000, CRC(295e8e9c) SHA1(26c6df1ec94b0c524b2477223b645dc797e1e198) )
+ ROM_LOAD16_BYTE( "251eur1.c8", 0x3000001, 0x800000, CRC(638614a6) SHA1(8a9d8fee7272e13eb500faefc5125ed0844acf07) )
+ROM_END
+
+ROM_START( kof99eur2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eur2.p1", 0x000000, 0x100000, CRC(df07d4f6) SHA1(b14c6449bffcb3b6719408e5ea48a18b43536f64) )
+ ROM_LOAD16_WORD_SWAP( "251eur2.p2", 0x100000, 0x400000, CRC(4b6fdd2b) SHA1(2321c4e0f8da21fc47b3db782c50598810ebae9a) )
+
+ NEO_SFIX_128K( "251sr.s1", CRC(08055c7a) SHA1(682e0084e62b547482929babe828027fdd64cde0) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251eur.c1", 0x0000000, 0x800000, CRC(c7e8bf32) SHA1(ede68ac10356f6824fa6b30e558038e78b604caf) )
+ ROM_LOAD16_BYTE( "251eur.c2", 0x0000001, 0x800000, CRC(4e8f9f7d) SHA1(3a60df66bb24702041facb71025241483e5a1832) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251eur2.c7", 0x3000000, 0x800000, CRC(52da5196) SHA1(956fc48d62f397c45b576f08003c1360ecd7f9ed) )
+ ROM_LOAD16_BYTE( "251eur2.c8", 0x3000001, 0x800000, CRC(f5276981) SHA1(0a70429be7a8488f73b4f2d071ccfe9c24c9cdb4) )
+ROM_END
+
+ROM_START( kof99eur3 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eur3.p1", 0x000000, 0x100000, CRC(31ebbcd6) SHA1(236dc2b5b53bbde0e0fb3fe5101341dd1ffee1cd) )
+ ROM_LOAD16_WORD_SWAP( "251eur3.p2", 0x100000, 0x400000, CRC(b777285d) SHA1(ed613324ded46983dd3a40bd3f00c34b37166c31) )
+
+ NEO_SFIX_128K( "251eur.s1", CRC(a6747969) SHA1(6577c00aceb0d612819c703b3334ebb6c760e126) )
+
+ NEO_BIOS_AUDIO_128K( "251ae.m1", CRC(f847e188) SHA1(0b98595a457292b04f518afcc82c2d6b8f249a7b) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251ae.v1", 0x000000, 0x400000, CRC(4ae46226) SHA1(77dbd53772e1e5000a091b9ff4b3cdc14b62ab0b) )
+ ROM_LOAD( "251ae.v2", 0x400000, 0x400000, CRC(07d70650) SHA1(70d274771c07215268292f91517ec61634e32611) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251eur.c1", 0x0000000, 0x800000, CRC(c7e8bf32) SHA1(ede68ac10356f6824fa6b30e558038e78b604caf) )
+ ROM_LOAD16_BYTE( "251eur.c2", 0x0000001, 0x800000, CRC(4e8f9f7d) SHA1(3a60df66bb24702041facb71025241483e5a1832) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251eur.c7", 0x3000000, 0x800000, CRC(f0b5ff02) SHA1(b9a25e6dad48547acce8edb5623be9d35bff1b4c) )
+ ROM_LOAD16_BYTE( "251eur.c8", 0x3000001, 0x800000, CRC(7107b8d5) SHA1(6754113de3eb6a34c1913bb5117dd12d705b961c) )
+ROM_END
+
+ROM_START( kof99eur4 ) // multijet kof99eur
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251eur4.p1", 0x000000, 0x100000, CRC(327b963c) SHA1(c6a61f2d1ab7339d6b56d5f88575c4d8e1b8f261) )
+ ROM_LOAD16_WORD_SWAP( "251eur4.p2", 0x100000, 0x400000, CRC(09d34c25) SHA1(40de394d28b86b63382226cc8943e06740d0eaf5) )
+
+ NEO_SFIX_128K( "251eur1.s1", CRC(f0c559ea) SHA1(43f7409fa56a851e621d42d76c7be440427c6ad3) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251eur.c1", 0x0000000, 0x800000, CRC(c7e8bf32) SHA1(ede68ac10356f6824fa6b30e558038e78b604caf) )
+ ROM_LOAD16_BYTE( "251eur.c2", 0x0000001, 0x800000, CRC(4e8f9f7d) SHA1(3a60df66bb24702041facb71025241483e5a1832) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251eur2.c7", 0x3000000, 0x800000, CRC(52da5196) SHA1(956fc48d62f397c45b576f08003c1360ecd7f9ed) )
+ ROM_LOAD16_BYTE( "251eur2.c8", 0x3000001, 0x800000, CRC(f5276981) SHA1(0a70429be7a8488f73b4f2d071ccfe9c24c9cdb4) )
+ROM_END
+
+ROM_START( kof99ev2 ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ev2.p1", 0x000000, 0x100000, CRC(e97d9d67) SHA1(bcb77706868757de09c74a0af664747e7e8c412a) )
+ ROM_LOAD16_WORD_SWAP( "251ev2.p2", 0x100000, 0x400000, CRC(947241fa) SHA1(66aac76cfe54e7aa874bb2b2e10de2eee2952400) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99evo )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251evo.p1", 0x000000, 0x100000, CRC(18960f8b) SHA1(41dae74f7d429873946752b28527655466dd38c9) )
+ ROM_LOAD16_WORD_SWAP( "251evo.p2", 0x100000, 0x400000, CRC(c6431b4a) SHA1(cd30903f200428b9ea6901aab1bd7fdd1672713f) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251wet.m1", CRC(8c96b012) SHA1(8ae72cd0d88c742791b1f1f1d2af2253bf4f762d) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99fc ) /* The King of Fighters '99 - Remix Pro200 Final - FCHT */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fc.p1", 0x000000, 0x100000, CRC(6d3d14c4) SHA1(f40784505b82f59d289ce45e3de8f7fb8e87069b) )
+ ROM_LOAD16_WORD_SWAP( "251fc.p2", 0x100000, 0x400000, CRC(01e111b3) SHA1(4ae2fbd552246779146684d2191a7bc9a3554c59) )
+
+ NEO_SFIX_128K( "251fc.s1", CRC(ca942904) SHA1(f84b79282bb2de61d24faacca1feda0187e42dcd) )
+
+ NEO_BIOS_AUDIO_128K( "251fc.m1", CRC(0cb24d46) SHA1(7e6f41c093e2cc7353592cfda53e855b5e03c4e3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251fc.v3", 0x800000, 0x400000, CRC(403628da) SHA1(e9fddfbedfdb70ba345820d95b154c1c73101a1c) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251fc.c1", 0x0000000, 0x800000, CRC(f0409101) SHA1(419ca1ea525f76d92b562e30bb043d39bd9a6c41) )
+ ROM_LOAD16_BYTE( "251fc.c2", 0x0000001, 0x800000, CRC(3a9eff54) SHA1(8eb1918e7d6f823c8965546cd064f44b1b6982f2) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251fc.c5", 0x2000000, 0x800000, CRC(dd023649) SHA1(e65c3e82a66553a4f87277984e630ec7e288626a) )
+ ROM_LOAD16_BYTE( "251fc.c6", 0x2000001, 0x800000, CRC(b8f60a8c) SHA1(f6a31066ffbf87937701df80abed8d9603629a5d) )
+ ROM_LOAD16_BYTE( "251fc.c7", 0x3000000, 0x800000, CRC(1dfd5103) SHA1(edbe56d9434abdff58e7e9ceed7ea3d7975c40d2) )
+ ROM_LOAD16_BYTE( "251fc.c8", 0x3000001, 0x800000, CRC(23fe3c43) SHA1(b601a14cd023b28f8e8eed8afd6a05d2c3df115a) )
+ROM_END
+
+ROM_START( kof99fc1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fc1.p1", 0x000000, 0x100000, CRC(48b8641d) SHA1(cb8e9992762d00cdb04f019398975d8d3b0cf1eb) )
+ ROM_LOAD16_WORD_SWAP( "251fc1.p2", 0x100000, 0x400000, CRC(143a7080) SHA1(29007713d2f1298e890d82d8a11c5700a6e680e6) )
+
+ NEO_SFIX_128K( "251fc.s1", CRC(ca942904) SHA1(f84b79282bb2de61d24faacca1feda0187e42dcd) )
+
+ NEO_BIOS_AUDIO_128K( "251fc.m1", CRC(0cb24d46) SHA1(7e6f41c093e2cc7353592cfda53e855b5e03c4e3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251fc.v3", 0x800000, 0x400000, CRC(403628da) SHA1(e9fddfbedfdb70ba345820d95b154c1c73101a1c) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251fc.c1", 0x0000000, 0x800000, CRC(f0409101) SHA1(419ca1ea525f76d92b562e30bb043d39bd9a6c41) )
+ ROM_LOAD16_BYTE( "251fc.c2", 0x0000001, 0x800000, CRC(3a9eff54) SHA1(8eb1918e7d6f823c8965546cd064f44b1b6982f2) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251fc.c5", 0x2000000, 0x800000, CRC(dd023649) SHA1(e65c3e82a66553a4f87277984e630ec7e288626a) )
+ ROM_LOAD16_BYTE( "251fc.c6", 0x2000001, 0x800000, CRC(b8f60a8c) SHA1(f6a31066ffbf87937701df80abed8d9603629a5d) )
+ ROM_LOAD16_BYTE( "251fc.c7", 0x3000000, 0x800000, CRC(1dfd5103) SHA1(edbe56d9434abdff58e7e9ceed7ea3d7975c40d2) )
+ ROM_LOAD16_BYTE( "251fc.c8", 0x3000001, 0x800000, CRC(23fe3c43) SHA1(b601a14cd023b28f8e8eed8afd6a05d2c3df115a) )
+ROM_END
+
+ROM_START( kof99fc2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fc2.p1", 0x000000, 0x100000, CRC(7f14f664) SHA1(0f17b6fbe919b78f63de4e10fc95c6e7e688206d) )
+ ROM_LOAD16_WORD_SWAP( "251fc.p2", 0x100000, 0x400000, CRC(01e111b3) SHA1(4ae2fbd552246779146684d2191a7bc9a3554c59) )
+
+ NEO_SFIX_128K( "251fc.s1", CRC(ca942904) SHA1(f84b79282bb2de61d24faacca1feda0187e42dcd) )
+
+ NEO_BIOS_AUDIO_128K( "251fc.m1", CRC(0cb24d46) SHA1(7e6f41c093e2cc7353592cfda53e855b5e03c4e3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251fc.v3", 0x800000, 0x400000, CRC(403628da) SHA1(e9fddfbedfdb70ba345820d95b154c1c73101a1c) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251fc.c1", 0x0000000, 0x800000, CRC(f0409101) SHA1(419ca1ea525f76d92b562e30bb043d39bd9a6c41) )
+ ROM_LOAD16_BYTE( "251fc.c2", 0x0000001, 0x800000, CRC(3a9eff54) SHA1(8eb1918e7d6f823c8965546cd064f44b1b6982f2) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251fc.c5", 0x2000000, 0x800000, CRC(dd023649) SHA1(e65c3e82a66553a4f87277984e630ec7e288626a) )
+ ROM_LOAD16_BYTE( "251fc.c6", 0x2000001, 0x800000, CRC(b8f60a8c) SHA1(f6a31066ffbf87937701df80abed8d9603629a5d) )
+ ROM_LOAD16_BYTE( "251fc.c7", 0x3000000, 0x800000, CRC(1dfd5103) SHA1(edbe56d9434abdff58e7e9ceed7ea3d7975c40d2) )
+ ROM_LOAD16_BYTE( "251fc.c8", 0x3000001, 0x800000, CRC(23fe3c43) SHA1(b601a14cd023b28f8e8eed8afd6a05d2c3df115a) )
+ROM_END
+
+ROM_START( kof99fmi )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fmi.p1", 0x000000, 0x100000, CRC(ac853905) SHA1(e72abc420f3213ca90a60e46674ced48b0ef2f30) )
+ ROM_LOAD16_WORD_SWAP( "251fmi.p2", 0x100000, 0x400000, CRC(abbc9bf3) SHA1(72ac57e9b12f1533712379d1d33b6a80bcd7a4e1) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251xxx.c7", 0x3000000, 0x800000, CRC(a02acaf8) SHA1(4136b4bedf51e02f0e22488bf8ca21847ad63f93) )
+ ROM_LOAD16_BYTE( "251xxx.c8", 0x3000001, 0x800000, CRC(e3cee593) SHA1(1ea4b9f13344b33348ef3fb95b325509399ef756) )
+ROM_END
+
+ROM_START( kof99hbi )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251hbi.p1", 0x000000, 0x100000, CRC(0b17b5fb) SHA1(72e0ad53fa4081df04c5aec193caf83c5baaaa7b) )
+ ROM_LOAD16_WORD_SWAP( "251hbi.p2", 0x100000, 0x400000, CRC(b73cabf7) SHA1(8c2e387c8f66ca6f710be5acf21bf56284f1bbda) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251hbi.c7", 0x3000000, 0x800000, CRC(0e12697e) SHA1(65a8d5666d98ba53c3d3e5b29f24f4306c32534c) )
+ ROM_LOAD16_BYTE( "251hbi.c8", 0x3000001, 0x800000, CRC(ca3b76c8) SHA1(d28c818f6561b06c2ac2d95b76f704d566549caa) )
+ROM_END
+
+ROM_START( kof99iori ) /* The King of Fighters '99 - iori */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251iori.p1", 0x000000, 0x100000, CRC(6140956d) SHA1(e4dabd3b134701459c1360fffec4bcb27a48dac0) )
+ ROM_LOAD16_WORD_SWAP( "251iori.p2", 0x100000, 0x400000, CRC(d31111e3) SHA1(c6396c0eefd464320b0c3d68f7bcfaddb31b63ba) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99jh ) /* The King of Fighters '99 - Hack by Jason/K3 - (Simple move revision - Athena style change - can choose Krizalid - can choose Kyo and Iori in MVS mode 20031018) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251jh.p1", 0x000000, 0x100000, CRC(855936ca) SHA1(bf788fa7c49cf3365e1e859df3811a5ca0ff69cc) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99jho ) /* [OLD] The King of Fighters '99 N - Hack by Jason/K3 - (Simple move revision - Athena style change - can choose Krizalid - can choose Kyo and Iori in MVS mode 20030924) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251jho.p1", 0x000000, 0x100000, CRC(690ea82d) SHA1(2938738e57514a672c79abe1d3696c51f9fdc04d) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99lb ) /* The King of Fighters '99 - Hack by lb70 */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251lb.p1", 0x000000, 0x100000, CRC(38d49ceb) SHA1(474e5bca53cfb78727fbe17577fbd7f710b78c9b) )
+ ROM_LOAD16_WORD_SWAP( "251lb.p2", 0x100000, 0x400000, CRC(095524ce) SHA1(59009b5f74d0c02f85bf2e59f2833d65863ba8c3) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251lb.c7", 0x3000000, 0x800000, CRC(c5a4d2e6) SHA1(ca0e8b45b126bc091242ad62c846c1b2a685b396) )
+ ROM_LOAD16_BYTE( "251lb.c8", 0x3000001, 0x800000, CRC(7160d0dd) SHA1(37a3fb72a32bcfdd2ba3ae7a957c4b3ba593b528) )
+ROM_END
+
+ROM_START( kof99m ) /* The King of Fighters '99 - Hack by MasakiAnton - (Can choose Krizalid and Krizalid') */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251m.p1", 0x000000, 0x100000, CRC(e056b767) SHA1(86cc38fa6158aa6b72fe0cb74a43f98ef4b285c6) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99nd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99ndh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ndh.p1", 0x000000, 0x100000, CRC(eedcc5bd) SHA1(8280c4329d666b4831c766853f5334355dc40cc9) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99ndis ) // all complete
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ndis.p1", 0x000000, 0x4550f6, CRC(0ca863be) SHA1(4da27476f81fd1d10ff2ba8fc7d12b662804cc5d) )
+ ROM_LOAD16_WORD_SWAP( "251ndis.p2", 0x100000, 0x400000, CRC(c012ff9f) SHA1(ef53386e34464eaaed1fcba3d4d1dcfb269f995c) )
+
+ NEO_SFIX_128K( "251ndis.s1", CRC(16edaa55) SHA1(d8601a14c703e56c0635e2f7540492b164447d6b) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99nevo ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251nevo.p1", 0x000000, 0x100000, CRC(1afba5f1) SHA1(646c04030f85e1b1e06d830379f6c9b6b3bca505) )
+ ROM_LOAD16_WORD_SWAP( "251nevo.p2", 0x100000, 0x400000, CRC(7f86d784) SHA1(a2ca66b5f04ed9855c6fff8d5b1e9c426df8aa3d) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251wet.m1", CRC(8c96b012) SHA1(8ae72cd0d88c742791b1f1f1d2af2253bf4f762d) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99ob )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ob.p1", 0x000000, 0x100000, CRC(b6147b23) SHA1(921dad6a2f1011ad67a82a6f9874b30658f233b0) )
+ ROM_LOAD16_WORD_SWAP( "251ob.p2", 0x100000, 0x400000, CRC(f88a4970) SHA1(6cce092f0d60aff7c0fcad796e9604cdf440219f) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251ob.s1", CRC(151c7a8d) SHA1(ccf557d1818edb579aa72e05f494305e5449d5ee) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251ob.v1", 0x000000, 0x400000, CRC(33d2e8b4) SHA1(f1ff9facc59eadc257edc06ba6bb3dddf27cfae2) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ob.c7", 0x3000000, 0x800000, CRC(f3b25375) SHA1(80d6b06adce5190bb71f2f0233db60008a33c51e) )
+ ROM_LOAD16_BYTE( "251ob.c8", 0x3000001, 0x800000, CRC(d2d0041a) SHA1(02283e2ac22e2f0521c3b2d126aff624ac820b63) )
+ROM_END
+
+ROM_START( kof99ob2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ob2.p1", 0x000000, 0x100000, CRC(13f57712) SHA1(d08cc331049950d19e59a6016a2dcd8cdc733a14) )
+ ROM_LOAD16_WORD_SWAP( "251ob2.p2", 0x100000, 0x400000, CRC(7a747b84) SHA1(dd38867d055d51465630254dcff32e9fdc9f523e) )
+
+ NEO_SFIX_128K( "251sr.s1", CRC(08055c7a) SHA1(682e0084e62b547482929babe828027fdd64cde0) )
+
+ NEO_BIOS_AUDIO_128K( "251ob.s1", CRC(151c7a8d) SHA1(ccf557d1818edb579aa72e05f494305e5449d5ee) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251ob.v1", 0x000000, 0x400000, CRC(33d2e8b4) SHA1(f1ff9facc59eadc257edc06ba6bb3dddf27cfae2) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251ob2.c7", 0x3000000, 0x800000, CRC(b9123865) SHA1(1f99321a2695a8be372c27bd012b5d476fbef318) )
+ ROM_LOAD16_BYTE( "251ob2.c8", 0x3000001, 0x800000, CRC(f34606e5) SHA1(7ba4b28afda82383361e935dd83dc9d158fc2e5e) )
+ROM_END
+
+ROM_START( kof99pb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251pb.p1", 0x000000, 0x100000, CRC(1cdf4d3e) SHA1(2019ffe300651d9faabc65e53e95d4dc98bba6bf) )
+ ROM_LOAD16_WORD_SWAP( "251pb.p2", 0x100000, 0x400000, CRC(e0a0100a) SHA1(21a723818faa1bfbeff850caa1837f1ad566adda) )
+
+ NEO_SFIX_128K( "251pb.s1", CRC(0b3d79d3) SHA1(2647c617c52d9955ee29520c416b59febfe7c0db) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251pb.c7", 0x3000000, 0x800000, CRC(65c896fb) SHA1(7d673bca1b38438f7ceb7aab26fe2beb452c74e7) )
+ ROM_LOAD16_BYTE( "251pb.c8", 0x3000001, 0x800000, CRC(6db9afe1) SHA1(beeed20292320e2a742d31c2a3ad05ffeb0d6f61) )
+ROM_END
+
+ROM_START( kof99pjc1 ) /* The King of Fighters '99 - Colour fix by TcwLee - (Character colour change revision 1 200209xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "251pjc1.p2", 0x100000, 0x400000, CRC(79aa31b0) SHA1(04a15e211b4453cb4e249f8cbd175ce09136d92a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99pjc2 ) /* The King of Fighters '99 - Colour fix by TcwLee - (Character colour change revision 2 20030302) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "251pjc2.p2", 0x100000, 0x400000, CRC(024c5b3f) SHA1(e52b9035c5853027b37534c97872fdd1dd0a2791) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99pjc3 ) /* The King of Fighters '99 N - (kof99pjcr3) - Colour fix by TcwLee - (Character colour change revision 3 20030720) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "251pjc3.p2", 0x100000, 0x400000, CRC(8054a5d5) SHA1(b240d427baf1c68cdc4ce2ab9e8d93471afa701a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99pjco ) /* [OLD] The King of Fighters '99 N - Colour fix by TcwLee - (Character colour change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "251pjco.p2", 0x100000, 0x400000, CRC(4b08d6b3) SHA1(481b740bde2141abbdc6c516d27564d9ffa03662) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99pt ) /* The King of Fighters '99 - Hack by Creamymami - (Ultra kill hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251pt.p1", 0x000000, 0x100000, CRC(c14497cc) SHA1(ce275b3c146b48b40ded3a7754c71b722d6eab67) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99r ) /* The King of Fighters '99 - Hack by Raymonose - (General character move change 200310xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251r.p1", 0x000000, 0x100000, CRC(7374f261) SHA1(1277e33d4ae4e40b0dbb49c9ac156cd132b6d890) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rd ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "251rd.p2", 0x100000, 0x400000, CRC(316672c6) SHA1(a8738e8ee3f4618e313a978f831483bb45329c04) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rev ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rev.p1", 0x000000, 0x100000, CRC(b53286e7) SHA1(f0d143f21a679943caa6b94645210fd4c332c1eb) )
+ ROM_LOAD16_WORD_SWAP( "251rev.p2", 0x100000, 0x400000, CRC(7a7dcf34) SHA1(df424b6b44f007721bb1cf3fee00f4bedb5a63e6) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99revo )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251revo.p1", 0x000000, 0x100000, CRC(38FD8609) SHA1(fded1624a670835ae107dc19707c2fa8b06d6cea) )
+ ROM_LOAD16_WORD_SWAP( "251revo.p2", 0x100000, 0x400000, CRC(361F64DB) SHA1(a789df74ff197f2c552a87be4db8d321603d404e) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251revo.c7", 0x3000000, 0x800000, CRC(4E8865B2) SHA1(8d7283d3782278b4fd5344a8986b1c9611118c32) )
+ ROM_LOAD16_BYTE( "251revo.c8", 0x3000001, 0x800000, CRC(040FCFCB) SHA1(27cb93f13ffa6f1ef97d2b967ffd4b4d757b1ca0) )
+ROM_END
+
+ROM_START( kof99roll )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251roll.p1", 0x000000, 0x100000, CRC(4afaaadc) SHA1(afb68252a57f4e67aadf7a9eb1b289d1e5d3dc8a) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99rp ) /* The King of Fighters '99 - KOF Remix PRO by FCHT - (Character move change v1.07a 20041224) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp.p1", 0x000000, 0x100000, CRC(5806CDD2) SHA1(279A8181374ECF77DA4605D1CBE1152324784B97) )
+ ROM_LOAD16_WORD_SWAP( "251rp.p2", 0x100000, 0x400000, CRC(C923EE2B) SHA1(98B4F40812D5479F7D6E683E5EF4002F4C86785C) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp0 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp0.p1", 0x000000, 0x100000, CRC(0570df7e) SHA1(f6a66cf39e8aff68b2962115aa65c79ca222cc74) )
+ ROM_LOAD16_WORD_SWAP( "251rp.p2", 0x100000, 0x400000, CRC(c923ee2b) SHA1(98b4f40812d5479f7d6e683e5ef4002f4c86785c) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963d51b3) SHA1(b50a585e1cf7b47052a3d6fd85f47ea739b08ba8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99rp1 ) /* [OLD] The King of Fighters '99 N - KOF Remix PRO by FCHT - (Character move change v1.02 final1 20031010) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp1.p1", 0x000000, 0x100000, CRC(c21d1580) SHA1(a81380d9f2e66036f92e02fe5b3b54741f2e59fc) )
+ ROM_LOAD16_WORD_SWAP( "251rp.p2", 0x100000, 0x400000, CRC(C923EE2B) SHA1(98B4F40812D5479F7D6E683E5EF4002F4C86785C) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp2 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp101c-b) - Remix PRO by FCHT - (Remix pro 1.01c by FCHT Built 0309h 200309xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp2.p1", 0x000000, 0x100000, CRC(07c52235) SHA1(2ca600d7c0d4bf2780c1313f31e23ec767d1f636) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp3 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp101b-b) - Remix PRO by FCHT - (Remix pro 1.01b by FCHT Built 0309e 200309xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp3.p1", 0x000000, 0x100000, CRC(7e2da123) SHA1(4a5275ccce118244fb02416ef1cca72b71a55b1a) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp4 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp101a2-b) - Remix PRO by FCHT - (Remix pro 1.01a2 by FCHT 200309xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp4.p1", 0x000000, 0x100000, CRC(0758dfef) SHA1(3a3254a2dcb073da00351921291fb9595a504a3c) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp5 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp101a-b) - Remix PRO by FCHT - (Remix pro 1.01a by FCHT 200309xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp5.p1", 0x000000, 0x100000, CRC(b00aa815) SHA1(bf199a9977d542b38d953cf9c9347e22f8c31fbb) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp6 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp101-b) - Remix PRO by FCHT - (Remix pro 1.01 by FCHT Built 0308b 200309xx) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp6.p1", 0x000000, 0x100000, CRC(9c3308e7) SHA1(e443a8bd184f6fc49f9d288b2884d95a5c7bca63) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp7 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rpcex-b) - Remix PRO by FCHT - (Remix pro 1.00c by FCHT Built 0308e EX-Version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp7.p1", 0x000000, 0x100000, CRC(da91f15c) SHA1(64e2b0bc6592b5ca148ccec9f4ccfa0d6ac4aaf7) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp8 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rpc-b) - Remix PRO by FCHT - (Remix pro 1.00c by FCHT Built 0308e) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp8.p1", 0x000000, 0x100000, CRC(55d97c9a) SHA1(35b176cc4005c07478df1dc99fe40344210e690b) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rp9 ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rse-b) - Remix PRO by FCHT - (Remix pro 1.00b by FCHT - Enhance) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rp9.p1", 0x000000, 0x100000, CRC(9ef748b0) SHA1(8f2cccc36d2ce019f8d0e69dec267240978bef4e) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rpa ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rps-b) - Remix PRO by FCHT - (Remix pro 1.00b by FCHT) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rpa.p1", 0x000000, 0x100000, CRC(e390960c) SHA1(992f9ca6bffb34d589287ed1ab3c7a53d5940078) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rpb ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rpe-b) - Remix PRO by FCHT - (Remix pro 1.00a by FCHT - Enhance) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rpb.p1", 0x000000, 0x100000, CRC(69f172ce) SHA1(c40f72d58331cd416154eef6f58d5398effe75ef) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rpc ) /* [OLD][BETA] The King of Fighters '99 N - (kof99rp-b) - Remix PRO by FCHT - (Remix pro 1.00a by FCHT) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rpc.p1", 0x000000, 0x100000, CRC(1496ac72) SHA1(60b4cb55ad8cfa27342b489fd2b53c5d41feea18) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rpp ) /* [OLD] The King of Fighters '99 N - KOF Remix PRO PLUS by FCHT - (Character move change v1.02 FINAL PRO PLUS 20040327) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rpp.p1", 0x000000, 0x100000, CRC(f954fc44) SHA1(654d1252dec3dfcf3fd3b8b19689bc68cd221e39) )
+ ROM_LOAD16_WORD_SWAP( "251rp.p2", 0x100000, 0x400000, CRC(C923EE2B) SHA1(98B4F40812D5479F7D6E683E5EF4002F4C86785C) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99rr ) /* The King of Fighters '99 - Remix by Raymonose - (Character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rr.p1", 0x000000, 0x100000, CRC(fd7399b5) SHA1(bac6892fec986942bb02c00fe96d00fc11a0ddda) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99seh ) /* The King of Fighters '99 - Super Enhance Hack by Creamymami and Ydmis - (Can choose Krizalid, Krizalid', Kyo and Iori - ultra power hack - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251seh.p1", 0x000000, 0x100000, CRC(3dd574cf) SHA1(9005041b52e196639f70675abbc8949f3f52e6af) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99sp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251sp.p1", 0x000000, 0x100000, CRC(48017E49) SHA1(67b84e227a1b8389b660008d326cd2b4c2830101) )
+ ROM_LOAD16_WORD_SWAP( "251sp.p2", 0x100000, 0x400000, CRC(0B1396A9) SHA1(dbd0d462a0a7558dc35d8cfd01359e6fbf6e1f68) )
+
+ NEO_SFIX_128K( "251sp.s1", CRC(C72989A5) SHA1(c23bc663610340259a29aeaf536f90c244e218f8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "251sp.c7", 0x3000000, 0x800000, CRC(4E8BB555) SHA1(f68c597c1f10fb0f756e8252fa83de41ded27417) )
+ ROM_LOAD16_BYTE( "251sp.c8", 0x3000001, 0x800000, CRC(D79A6E0D) SHA1(f6b1b930a62982ef20d1374b213d246f6352d558) )
+ROM_END
+
+ROM_START( kof99spd ) // multijet
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kc.neo-sma", 0x0c0000, 0x040000, CRC(6c9d0647) SHA1(2a0ce62ca6c18007e8fbe1b60475c7874ab79389) )
+ ROM_LOAD16_WORD_SWAP( "251spd.p1", 0x100000, 0x400000, CRC(11b8a2b5) SHA1(89f95746b76b4f730080921292970898dc296051) )
+ ROM_LOAD16_WORD_SWAP( "251-pg2.p2", 0x500000, 0x400000, CRC(d9057f51) SHA1(8d365b4dd40351495df99d6c765df1434b0b0548) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99sr )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251sr.p1", 0x000000, 0x100000, CRC(b96da0bf) SHA1(260b8fd7888b54f5f61fa07175dacd1743f1c6bb) )
+ ROM_LOAD16_WORD_SWAP( "251sr.p2", 0x100000, 0x400000, CRC(9f1d1660) SHA1(d23466a5aac70c69d10c6bec59f019419940d914) )
+
+ NEO_SFIX_128K( "251sr.s1", CRC(08055c7a) SHA1(682e0084e62b547482929babe828027fdd64cde0) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251sr.c7", 0x3000000, 0x800000, CRC(65de862c) SHA1(83c0446f19ca567cd7664956f617f4f7625422b7) )
+ ROM_LOAD16_BYTE( "251sr.c8", 0x3000001, 0x800000, CRC(3ff457fe) SHA1(1838de77ceaf78cb75604f227ffdf59311c0bbe5) )
+ROM_END
+
+ROM_START( kof99srr ) /* The King of Fighters '99 - Remix by Raymonose - (Character move change) Super Remix Red */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251srr.p1", 0x000000, 0x100000, CRC(c7cd6ffe) SHA1(f0130b9bd80b4b9d452f53fac85853d9fa563144) )
+ ROM_LOAD16_WORD_SWAP( "251srr.p2", 0x100000, 0x400000, CRC(a7f4ed1d) SHA1(5f3024c66370c8b4be3a1b7bbe7225574c19fc4c) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99srr1 ) // multijet kof99srr
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251srr.p1", 0x000000, 0x100000, CRC(c7cd6ffe) SHA1(f0130b9bd80b4b9d452f53fac85853d9fa563144) )
+ ROM_LOAD16_WORD_SWAP( "251rd.p2", 0x100000, 0x400000, CRC(316672c6) SHA1(a8738e8ee3f4618e313a978f831483bb45329c04) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99the4 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251the4.p1", 0x000000, 0x100000, CRC(6055c72c) SHA1(45089a3e17e6476113f2c471632b3029b3344743) )
+ ROM_LOAD16_WORD_SWAP( "251the4.p2", 0x100000, 0x400000, CRC(62757ec3) SHA1(ad1d1f5b341e08ebb17a247c42b3e28dde989f12) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99the42 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251the42.p1", 0x000000, 0x100000, CRC(d7d0b651) SHA1(de739b9f9ba5816a12ce7936d3f285d3ec8fc1f7) )
+ ROM_LOAD16_WORD_SWAP( "251the4.p2", 0x100000, 0x400000, CRC(62757ec3) SHA1(ad1d1f5b341e08ebb17a247c42b3e28dde989f12) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99vor ) // all confirmed
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "vor.ka.neo-sma", 0x0c0000, 0x040000, CRC(ca267237) SHA1(9f7c3fbef8e9ae3a9e8990b93589b1d3325468f5) )
+ ROM_LOAD16_WORD_SWAP( "251vor.p1", 0x100000, 0x400000, CRC(a466e66d) SHA1(41653d6ca325d084cda851fecb677976f469978a) )
+ ROM_LOAD16_WORD_SWAP( "251vor.p2", 0x500000, 0x400000, CRC(2bf8ac94) SHA1(d6a9a9740819b91d01990ab999f41eef84361760) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251vor.c1", 0x000000, 0x800000, CRC(4b3b9454) SHA1(ee0178c9f90d43c704450ef3e39861826e9d3dad) )
+ ROM_LOAD16_BYTE( "251vor.c2", 0x000001, 0x800000, CRC(74f028c4) SHA1(2d1e1768a5d842292c5367c861e093f6cae02379) )
+ ROM_LOAD16_BYTE( "251vor.c3", 0x100000, 0x800000, CRC(51ecbae7) SHA1(2cf2e2ae3856a7e5d77af7f97d9dc3532d396b27) )
+ ROM_LOAD16_BYTE( "251vor.c4", 0x100001, 0x800000, CRC(96c0594b) SHA1(503844cc4c937caa6fe4a0a76f13cc6fbb47e94f) )
+ ROM_LOAD16_BYTE( "251vor.c5", 0x200000, 0x800000, CRC(8875aee9) SHA1(29e79c3a2f40ddcdd2d5432e37c5629cbbecd37f) )
+ ROM_LOAD16_BYTE( "251vor.c6", 0x200001, 0x800000, CRC(585786b7) SHA1(acfb462d467e914f165f67b8cc2be56937c0feaa) )
+ ROM_LOAD16_BYTE( "251vor.c7", 0x300000, 0x800000, CRC(a25152d1) SHA1(bb1dc7d5bff9a599e7ed234abd199c26d8103bbd) )
+ ROM_LOAD16_BYTE( "251vor.c8", 0x300001, 0x800000, CRC(2d8a1014) SHA1(dc729bc19b775bb62301d7f98cc9566b9aa8bf7a) )
+ROM_END
+
+ROM_START( kof99wet )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251ndh.p1", 0x000000, 0x100000, CRC(eedcc5bd) SHA1(8280c4329d666b4831c766853f5334355dc40cc9) )
+ ROM_LOAD16_WORD_SWAP( "251wet.p2", 0x100000, 0x400000, CRC(bdb6e48c) SHA1(af0ce253e48df64693c45a123c3ddb03e5679cba) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251wet.m1", CRC(8c96b012) SHA1(8ae72cd0d88c742791b1f1f1d2af2253bf4f762d) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) )
+ ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) )
+ROM_END
+
+ROM_START( kof99xxx )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251xxx.p1", 0x000000, 0x100000, CRC(29ac1595) SHA1(db2452de23dfbbb27c06c4d9abc9da4c9f3adacb) )
+ ROM_LOAD16_WORD_SWAP( "251xxx.p2", 0x100000, 0x400000, CRC(3d930046) SHA1(1f04c000f1b16b334240f88bea386a8435185989) )
+
+ NEO_SFIX_128K( "251xxx.s1", CRC(d55f8b72) SHA1(6843e41836611fcdb5db084047ab35a4606999c3) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) )
+ ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) )
+ ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) )
+ ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) )
+ ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) )
+ ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) )
+ ROM_LOAD16_BYTE( "251xxx.c7", 0x3000000, 0x800000, CRC(a02acaf8) SHA1(4136b4bedf51e02f0e22488bf8ca21847ad63f93) )
+ ROM_LOAD16_BYTE( "251xxx.c8", 0x3000001, 0x800000, CRC(e3cee593) SHA1(1ea4b9f13344b33348ef3fb95b325509399ef756) )
+ROM_END
+
+ROM_START( kof99y ) /* The King of Fighters '99 - Hack by Ydmis - (Can choose Krizalid, Krizalid', Kyo and Iori) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251y.p1", 0x000000, 0x100000, CRC(17a293ae) SHA1(b0f84a6c7688995eb93e5a4a13a4ca2a4e3645eb) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99yd ) /* The King of Fighters '99 - Hack by Ydmis - (Ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251yd.p1", 0x000000, 0x100000, CRC(9caffc4d) SHA1(100bb80ffc9f938b107dbd7994a2b6febd7b3a9c) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+/* Hacks of the Prototype */
+
+ROM_START( kof99evos ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251evos.p1", 0x000000, 0x100000, CRC(a40dbe6d) SHA1(a1db02bd804edcbee32bb38edc416e1b81a9073c) )
+ ROM_LOAD16_WORD_SWAP( "251evos.p2", 0x100000, 0x400000, CRC(f5831e0e) SHA1(ce8a34584b075d2568344e5ecb669bfff3d0d0f4) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99fc0 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fc0.p1", 0x000000, 0x100000, CRC(ab81c822) SHA1(6091c9018b9384c34fd87bcad03e3e17d984bc56) )
+ ROM_LOAD16_WORD_SWAP( "251rp.p2", 0x100000, 0x400000, CRC(C923EE2B) SHA1(98B4F40812D5479F7D6E683E5EF4002F4C86785C) )
+
+ NEO_SFIX_128K( "251rp.s1", CRC(963D51B3) SHA1(B50A585E1CF7B47052A3D6FD85F47EA739B08BA8) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99fix )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fix.p1", 0x000000, 0x100000, CRC(a71a0541) SHA1(49cac7ceedd6ef986987b2efed32f93a983d2319) )
+ ROM_LOAD16_WORD_SWAP( "251fix.p2", 0x100000, 0x400000, CRC(e45ffa4f) SHA1(1ee1956eaba2283ffadfd7fd70618e9fcbeda7a8) )
+
+ NEO_SFIX_128K( "251fix.s1", CRC(1d264e1b) SHA1(6e694465c31b75a8d75711abf653c2d878927f25) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "251sp.c7", 0x3000000, 0x800000, CRC(4e8bb555) SHA1(f68c597c1f10fb0f756e8252fa83de41ded27417) )
+ ROM_LOAD16_BYTE( "251sp.c8", 0x3000001, 0x800000, CRC(d79a6e0d) SHA1(f6b1b930a62982ef20d1374b213d246f6352d558) )
+ROM_END
+
+ROM_START( kof99fix1 ) // multijet kof99fix
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fix1.p1", 0x000000, 0x100000, CRC(62bcb221) SHA1(956e245cdbf8afa11f85017225ed303a40218959) )
+ ROM_LOAD16_WORD_SWAP( "251fix1.p2", 0x100000, 0x400000, CRC(84519898) SHA1(acba79a5d6dfcfc9e68ba3b27b12d5608e76c819) )
+
+ NEO_SFIX_128K( "251bh.s1", CRC(b696a8c9) SHA1(3388feab11374a6eca6f1615fdfd93464f86dcee) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99fix2 ) // multijet kof99fx2
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251fix2.p1", 0x000000, 0x100000, CRC(e62d039d) SHA1(e358707e6954c07bf6b53b877463d1d8e6e973c2) )
+ ROM_LOAD16_WORD_SWAP( "251fix.p2", 0x100000, 0x400000, CRC(e45ffa4f) SHA1(1ee1956eaba2283ffadfd7fd70618e9fcbeda7a8) )
+
+ NEO_SFIX_128K( "251fix2.s1", CRC(7fbf6061) SHA1(c4af13c28b1aaa198d117debedee1896b13a9e5d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "251sp.c7", 0x3000000, 0x800000, CRC(4e8bb555) SHA1(f68c597c1f10fb0f756e8252fa83de41ded27417) )
+ ROM_LOAD16_BYTE( "251sp.c8", 0x3000001, 0x800000, CRC(d79a6e0d) SHA1(f6b1b930a62982ef20d1374b213d246f6352d558) )
+ROM_END
+
+ROM_START( kof99hp ) /* The King of Fighters '99 PROTOTYPE - Hack by HackPlus - (Can choose Krizalid and Krizalid') */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251hp.p1", 0x000000, 0x100000, CRC(15c044a1) SHA1(c78b627e7667952094066fbdb4dbb5ecd0032af3) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99kp ) /* The King of Fighters '99 PROTOTYPE - Colour fix by Fighters Kim - (Colour change - 10%) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p1.p1", 0x000000, 0x100000, CRC(f37929c4) SHA1(226e7e3d629568399b88275e5bcd4e5b3839be95) )
+ ROM_LOAD16_WORD_SWAP( "251kp.p2", 0x100000, 0x400000, CRC(b3aff1ed) SHA1(683561e36417152386317c30629732a1d718e188) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99phl ) // multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251phl.p1", 0x000000, 0x100000, CRC(e3923237) SHA1(356c036c9ffc903ba1663ce687b3fc7ec6afdfe3) )
+ ROM_LOAD16_WORD_SWAP( "251phl.p2", 0x100000, 0x400000, CRC(58e3b94a) SHA1(010024bb779d5d346879c4d03857936c3a0b103b) )
+
+ NEO_SFIX_128K( "251revo.s1", CRC(1b0133fe) SHA1(7f8e743bc0c8384dec12ca7007d32b23fef8875d) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99pk ) /* The King of Fighters '99 PROTOTYPE - Hack by Kryso Fun - (Can choose Krizalid and Krizalid´ - bases on RS - Version + fix? data) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251pk.p1", 0x000000, 0x100000, CRC(9006f3a3) SHA1(1f09da2e94afd7f44087174a19ba4c74ea2a3d86) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99pko ) /* The King of Fighters '99 PROTOTYPE - Hack by Kryso Fun - (Can choose Krizalid and Krizalid´ - bases on RS - Version without fix? data */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251pko.p1", 0x000000, 0x100000, CRC(f7a95104) SHA1(51fd3befe4e439d9a5a17d99efa439d5f2091ed0) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99pm ) /* The King of Fighters '99 PROTOTYPE - Fix by UNKNOWN - (Mengele Fix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251pm.p1", 0x000000, 0x100000, CRC(ed68b5f5) SHA1(5a7ec30350dcba08f7617f6c53a051b5284bc00a) )
+ ROM_LOAD16_WORD_SWAP( "251pm.p2", 0x100000, 0x400000, CRC(dc81f711) SHA1(2a00f9301e0e81ec00bc5eee5d39faeefa0eba8a) )
+
+ NEO_SFIX_128K( "251pm.s1", CRC(841a498c) SHA1(b9bb31dd9638bad0304e16f2de268e8c1cc4adb1) )
+
+ NEO_BIOS_AUDIO_128K( "251pm.m1", CRC(0659d262) SHA1(cea6c861a15025ad2bc1ad6b787534cfdd5bab53) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99py ) /* The King of Fighters '99 PROTOTYPE - Hack by Ydmis - (Can choose Kyo and Iori - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251py.p1", 0x000000, 0x100000, CRC(4db24015) SHA1(1103eb498eb54e4787ed4da84a99978803041366) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99rs ) /* The King of Fighters '99 PROTOTYPE - (Prototype RS-Version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rs.p1", 0x000000, 0x100000, CRC(9ae7ab90) SHA1(4783042353b2bc796b4e3f8545308fe406019eb2) )
+ ROM_LOAD16_WORD_SWAP( "251rs.p2", 0x100000, 0x400000, CRC(838e9331) SHA1(f009382b5a99f6818f83f37f76af2d14f006237f) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99rsm ) /* The King of Fighters '99 PROTOTYPE - Fix by UNKNOWN - (Mengele fix for RS-Version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rsm.p1", 0x000000, 0x100000, CRC(788ebe35) SHA1(760d50701b8cd9a824b2b8e3e12b045bd0c0eaf1) )
+ ROM_LOAD16_WORD_SWAP( "251rsm.p2", 0x100000, 0x400000, CRC(2c98268d) SHA1(552388a4ecb5318bdf654c0fac7ccac77795e760) )
+
+ NEO_SFIX_128K( "251pm.s1", CRC(841a498c) SHA1(b9bb31dd9638bad0304e16f2de268e8c1cc4adb1) )
+
+ NEO_BIOS_AUDIO_128K( "251pm.m1", CRC(0659d262) SHA1(cea6c861a15025ad2bc1ad6b787534cfdd5bab53) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99rsp ) /* The King of Fighters '99 PROTOTYPE- Fix by UNKNOWN - (Bug Fix for Prototype RS-Version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251rsp.p1", 0x000000, 0x100000, CRC(4827d835) SHA1(aac22e61c2b2e9e4ae8f6a19ed52020c42351271) )
+ ROM_LOAD16_WORD_SWAP( "251rsp.p2", 0x100000, 0x400000, CRC(b09c980d) SHA1(df6d30f01056695de4214c8273a35794faa1652a) )
+
+ NEO_SFIX_128K( "251rsp.s1", CRC(ee8f28a5) SHA1(b6531e6ee6bdd38f7d1f7f682dddff5426250015) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99wh1 ) /* [OLD][BETA] The King of Fighters '99 PROTOTYPE - (kof99wh-b) - Remix by Wesker - (Character move change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251wh1.p1", 0x000000, 0x100000, CRC(9e492265) SHA1(2448485e59ae2f921089f03be77a17bb32d0dd9d) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99wh2 ) /* [OLD][BETA] The King of Fighters '99 PROTOTYPE - (kof99wh-b) - Remix by Wesker - (Character move change Ver. 0.02) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251wh2.p1", 0x000000, 0x100000, CRC(505a8ded) SHA1(cd939b018c43712e69aa9f3de8975a8df310503e) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99wh3 ) /* [OLD][BETA] The King of Fighters '99 PROTOTYPE - (kof99wh-b) - Remix by Wesker - (Character move change Ver. 0.03) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251wh3.p1", 0x000000, 0x100000, CRC(9a312383) SHA1(29eba75aac66c5fec8ab5937312dc41155f243f8) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99wh4 ) /* [OLD][BETA] The King of Fighters '99 PROTOTYPE - (kof99wh-b) - Remix by Wesker - (Character move change Ver. 0.04) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251wh4.p1", 0x000000, 0x100000, CRC(5092e49f) SHA1(09bd471e0c0951677bf76e7fc69cda8dc751e06b) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99xpsa ) /* The King of Fighters '99 PROTOTYPE - (kof99xpsa) - Fix by XPS - (00409 XPSLibrary alternate Andy striker voice fix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251xpsa.p1", 0x000000, 0x100000, CRC(5d4be286) SHA1(5052c6852cd02452ca4e103b5ef214120aae0452) )
+ ROM_LOAD16_WORD_SWAP( "251xpsf.p2", 0x100000, 0x400000, CRC(6533070c) SHA1(1eff1d11ab1463bd9578055f43684949ac6602e4) )
+
+ NEO_SFIX_128K( "251xpsf.s1", CRC(56bc7e7a) SHA1(c6b642243148ac89e2cfc1863edd369828a0ffb2) )
+
+ NEO_BIOS_AUDIO_128K( "251pm.m1", CRC(0659d262) SHA1(cea6c861a15025ad2bc1ad6b787534cfdd5bab53) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99xpsf ) /* The King of Fighters '99 PROTOTYPE - Fix by XPS - (00731 XPSLibrary final fix 20000409 - RS-Version) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251xpsf.p1", 0x000000, 0x100000, CRC(51dd4482) SHA1(71200ca31bb6fc0ac045f303c15a096fc1848901) )
+ ROM_LOAD16_WORD_SWAP( "251xpsf.p2", 0x100000, 0x400000, CRC(6533070c) SHA1(1eff1d11ab1463bd9578055f43684949ac6602e4) )
+
+ NEO_SFIX_128K( "251xpsf.s1", CRC(56bc7e7a) SHA1(c6b642243148ac89e2cfc1863edd369828a0ffb2) )
+
+ NEO_BIOS_AUDIO_128K( "251pm.m1", CRC(0659d262) SHA1(cea6c861a15025ad2bc1ad6b787534cfdd5bab53) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99xpsp ) /* The King of Fighters '99 PROTOTYPE - Fix by XPS - (00731 XPSLibrary final fix 20000409) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251xpsp.p1", 0x000000, 0x100000, CRC(6fad557f) SHA1(a647d8faf44a0ae6d600c1fb2d0b5f5cd63dc854) )
+ ROM_LOAD16_WORD_SWAP( "251xpsp.p2", 0x100000, 0x400000, CRC(952ad690) SHA1(c0aa19462f3451f355b36793a95009b808914329) )
+
+ NEO_SFIX_128K( "251xpsf.s1", CRC(56bc7e7a) SHA1(c6b642243148ac89e2cfc1863edd369828a0ffb2) )
+
+ NEO_BIOS_AUDIO_128K( "251pm.m1", CRC(0659d262) SHA1(cea6c861a15025ad2bc1ad6b787534cfdd5bab53) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+ROM_START( kof99yb ) /* The King of Fighters '99 PROTOTYPE - Hack by Ydmis - (Can choose Kyo and Iori) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "251yb.p1", 0x000000, 0x100000, CRC(fd2eaf53) SHA1(10dcb41674d236be9560ab442d3e3a8c542ab5f1) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+
+
+GAME( 1999, kof99ab, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Marcochen/PPX Hack Team", "Kof'99 (Rolls moves sideways ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, kof99ae, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ae0, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (unknown date)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof99ae20140408, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2014-04-08)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, kof99ae20140624, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2014-06-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof99ae20150121, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2015-01-21)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof99ae20150520, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2015-05-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof99ae20150711, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2015-07-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof99ae20160411, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2016-04-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof99ae20160419, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition (2016-04-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, kof99aes, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Anniversary Edition Special", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99bh, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "Dodowang", "Kof'99 (2 Add Char with Icons)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof99bhp2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kof1996", "Kof'99 (Perfect Boss Edition hack by Kof1996 2009-10-08)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99bhs, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (Boss Striker Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99bs, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 (Boss Hack - DC version by FightChina KOF Hackteamwork)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99bs2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 (Boss Like DC v1.2f (KOF hackteamwork))", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ch, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Chase", "Kof'99 (Diff Moves set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99chf, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Chase", "Kof'99 (Diff Moves set 3 - Fixed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99co, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'99 COMBO 2006 (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99co2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'99 COMBO 2006 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99d, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99d, ROT0, "SNK", "Kof'99 Millennium Battle (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99eh, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Ydmis", "Kof'99 (4 Add Char - Ultra kill start max set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ehr, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Raymonose", "Kof'99 (4 Add Char - Ultra kill start max - Ultra pow hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99eur, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Evolution Ultra Remix (Yashional)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99eur1, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Evolution Ultra Remix (old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99eur2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Evolution Ultra Remix", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, kof99eur3, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Evolution Ultra Remix (2011-02-25)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof99eur4, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 (Evolution Ultra Remix hack by Yashional 2009-07-17)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ev2, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "hack", "Kof'99 (Evolution Special)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99evo, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 Evolution", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99fc, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 REMIX PRO (Pro200 Final)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof99fc0, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCGH", "Kof'99 REMIX PRO (1.07A)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99fc1, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 REMIX PRO (2.00B)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99fc2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 REMIX PRO (2.00F)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99fmi, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Marcochen", "Kof'99 Orochi Iori (Hack by marcochen)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99hbi, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Okukochi", "Kof'99 (Happy Birthday to Iori)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kof99iori, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "hack", "Kof'99 (hack 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99jh, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Jason/K3", "Kof'99 (3 Add Char - Simple moves rev - Athena style changed 2003-10-18)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99jho, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Jason/K3", "Kof'99 (3 Add Char - Simple moves rev - Athena style changed 2003-09-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kof99lb, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "lb70", "Kof'99 (Hack by lb70)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99m, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "MasakiAnton", "Kof'99 (2 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99nd, kof99, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix,ROT0, "SNK", "Kof'99 (non encrypted P,decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ndh, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ndis, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 REMIX PRO (ndis)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99nevo, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Chl, Robert", "Kof'99 (Evolution Revision hack by Chl, Robert)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ob, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 Orochi's Blood-Another part of Leona & Iori", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99ob2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Orochi's Blood (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pb, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 Perfect Boss", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kof99pjc1, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "TcwLee", "Kof'99 (Char color changed rev 1 2002-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99pjc2, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "TcwLee", "Kof'99 (Char color changed rev 2 2003-03-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99pjc3, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "TcwLee", "Kof'99 (Char color changed rev 3 2003-07-20)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pjco, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "TcwLee", "Kof'99 (Char color changed old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pt, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Creamymami", "Kof'99 (Ultra kill hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99r, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Raymonose", "Kof'99 (Moves changed 0310xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rd, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "hack", "Kof'99 (Red Evil Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rev, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "hack", "Kof'99 OKUHOSHI HACK (Revolution Merry Christmas set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99revo, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Okuhoshi", "Kof'99 (Christmas Revolution v1.2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99roll, kof99, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix,ROT0, "KofOnTeam", "Kof'99 (Advanced Roll (KOFONTEAM))", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof99rp, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - v1.07a 2004-12-24)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof99rp0, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FGCH", "Kof'99 REMIX PRO (Edition v1.07a)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp1, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - v1.02 final1 2003-10-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp2, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.01c 2003-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp3, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.01b 2003-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp4, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.01a2 2003-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp5, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.01a 2003-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp6, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.01 2003-09-xx)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp7, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00c built 0308e - EX ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp8, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00c built 0308e)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rp9, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00b enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rpa, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00b)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rpb, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00a enhanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof99rpc, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO (Diff Moves - Beta v1.00a)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof99rpp, kof99, neogeo_noslot, neogeo, neogeo_hbmame, kof99bh, ROT0, "FCHT", "Kof'99 Remix PRO PLUS (Diff Moves v1.02 final 2004-03-27)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rr, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Raymonose", "Kof'99 (Diff Moves set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99seh, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Creamymami and Ydmis", "Kof'99 (4 Add Char - Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99sp, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Kof'99 (Super Plus)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99spd, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99, ROT0, "Star07", "Kof'99 (Special Dialogue hack by Star07)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99sr, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'99 (Summer Revolution)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99srr, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Raymonose", "Kof'99 (Super Remix Red)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99srr1, kof99, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix,ROT0, "hack", "Kof'99 (Super Remix Red Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99the4, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 The 4 Flame Manipulators (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99the42, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 The 4 Flame Manipulators (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99vor, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99, ROT0, "hack", "Kof'99 (hack vor)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99wet, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (hack colour wet)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99xxx, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (Special Boss)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99y, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Ydmis", "Kof'99 (4 Add Char", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99yd, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Ydmis", "Kof'99 (Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+
+/* Hacks of the Prototype */
+GAME( 1999, kof99evos, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (proto)(Evolution Balanced)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99hp, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "HackPlus", "Kof'99 (proto)(2 Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kof99fix, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (Happy birthday to Iori special 2009)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99fix1, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (proto)(Happy Birthday to Iori Special set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99fix2, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (proto)(Happy Birthday to Iori Special set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99kp, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Fighters Kim", "Kof'99 (proto)(Color changed - 10%)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99phl, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Liyang1983", "Kof'99 (proto)(Plus hack by Liyang1983)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pk, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KrysoFun", "Kof'99 (proto)(2 Add Char - Based on RS - ver + Fix? data)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pko, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KrysoFun", "Kof'99 (proto)(2 Add Char - Based on RS - ver without Fix? data)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99pm, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Kof'99 (proto)(Mengele Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99py, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis","Kof'99 (proto)(2 Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rs, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (proto)(Proto RS-ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rsm, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Kof'99 (proto)(Mengele Fix for RS-ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99rsp, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Kof'99 (proto)(Bug Fix for RS-ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99wh1, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'99 (proto)(Diff Moves)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99wh2, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'99 (proto)(Diff Moves - v.02)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99wh3, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'99 (proto)(Diff Moves - v.03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99wh4, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'99 (proto)(Diff Moves - v.04)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99xpsa, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "XPS", "Kof'99 (proto)(00409 XPSLibrary alternate Andy striker voice Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99xpsf, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "XPS", "Kof'99 (proto)(00731 XPSLibrary final Fix 000409 - RS-ver)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99xpsp, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "XPS", "Kof'99 (proto)(00731 XPSLibrary final Fix 000409)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99yb, kof99hp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'99 (proto)(2 Add Char set 1)", MACHINE_SUPPORTS_SAVE )
+
diff --git a/docs/release/src/hbmame/drivers/kyugo.cpp b/docs/release/src/hbmame/drivers/kyugo.cpp
new file mode 100644
index 00000000000..96f621f8a05
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/kyugo.cpp
@@ -0,0 +1,46 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/kyugo.cpp"
+
+ROM_START( airwolffr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "bfr.2s", 0x0000, 0x8000, CRC(ccf90d88) SHA1(6f88c0c4f5985d8033efdbc5e5516552007b7bdf) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "a.7s", 0x0000, 0x8000, CRC(a3c7af5c) SHA1(0f70ca94f3d168d38e0e93252e9441973f72441a) )
+
+ ROM_REGION( 0x01000, "gfx1", 0 )
+ ROM_LOAD( "f.4a", 0x00000, 0x1000, CRC(4df44ce9) SHA1(145986009d4ae6f7dd98ce715838d0331dea005d) ) /* chars */
+
+ ROM_REGION( 0x06000, "gfx2", 0 )
+ ROM_LOAD( "09h_14.bin", 0x00000, 0x2000, CRC(25e57e1f) SHA1(bef24bced102cd470e10bd4aa19da3c608211258) )
+ ROM_LOAD( "10h_13.bin", 0x02000, 0x2000, CRC(cf0de5e9) SHA1(32f3eb4c9298d59aca1dc2530b0e92f64311946d) )
+ ROM_LOAD( "11h_12.bin", 0x04000, 0x2000, CRC(4050c048) SHA1(ca21e0750f01342d9791067160339eec436c9458) )
+
+ ROM_REGION( 0x18000, "gfx3", 0 )
+ ROM_LOAD( "e.6a", 0x00000, 0x2000, CRC(e8fbc7d2) SHA1(a9a651b4a714f490a051a89fd0327a665353d64b) )
+ ROM_CONTINUE( 0x04000, 0x2000 )
+ ROM_CONTINUE( 0x02000, 0x2000 )
+ ROM_CONTINUE( 0x06000, 0x2000 )
+ ROM_LOAD( "d.8a", 0x08000, 0x2000, CRC(c5d4156b) SHA1(f66ec33b67e39f3df016231b00e48c9757e322f3) )
+ ROM_CONTINUE( 0x0c000, 0x2000 )
+ ROM_CONTINUE( 0x0a000, 0x2000 )
+ ROM_CONTINUE( 0x0e000, 0x2000 )
+ ROM_LOAD( "c.10a", 0x10000, 0x2000, CRC(de91dfb1) SHA1(9f338542f44905d0b895d99510475113eb860f0d) )
+ ROM_CONTINUE( 0x14000, 0x2000 )
+ ROM_CONTINUE( 0x12000, 0x2000 )
+ ROM_CONTINUE( 0x16000, 0x2000 )
+
+ ROM_REGION( 0x0340, "proms", 0 )
+ ROM_LOAD( "01j.bin", 0x0000, 0x0100, CRC(6a94b2a3) SHA1(b1f9bd97aa26c9fb6377ef32d5dd125583361f48) )
+ ROM_LOAD( "01h.bin", 0x0100, 0x0100, CRC(ec0923d3) SHA1(26f9eda4260a8b767893b8dea42819f192ef0b20) )
+ ROM_LOAD( "01f.bin", 0x0200, 0x0100, CRC(ade97052) SHA1(cc1b4cd57d7bc55ce44de6b89a322ff08eabb1a0) )
+ ROM_LOAD( "m1.2c", 0x0320, 0x0020, CRC(83a39201) SHA1(4fdc722c9e20ee152c890342ef0dce18e35e2ef8) )
+
+ ROM_REGION( 0x0400, "plds", 0 )
+ ROM_LOAD_OPTIONAL( "pal16l8a.2j", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD_OPTIONAL( "epl12p6a.9j", 0x0200, 0x0034, CRC(19808f14) SHA1(d5043237be8857d2cecaf7dec079461f6b53efa9) )
+ ROM_LOAD_OPTIONAL( "epl12p6a.9k", 0x0300, 0x0034, CRC(f5acad85) SHA1(ee3caeedf3e91793b12895f109eae5417f5c7631) )
+ROM_END
+
+GAME( 2007, airwolffr, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Arkatrad", "Airwolf (French)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/m52.cpp b/docs/release/src/hbmame/drivers/m52.cpp
new file mode 100644
index 00000000000..2c9eeddc170
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/m52.cpp
@@ -0,0 +1,39 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/m52.cpp"
+
+ROM_START( spatrol )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mpa-1.3m", 0x0000, 0x1000, CRC(5873a860) SHA1(8c03726d6e049c3edbc277440184e31679f78258) )
+ ROM_LOAD( "mpa-2.3l", 0x1000, 0x1000, CRC(f4b85974) SHA1(dfb2efb57378a20af6f20569f4360cde95596f93) )
+ ROM_LOAD( "mpa-3.3k", 0x2000, 0x1000, CRC(2e1a598c) SHA1(112c3c9678db8a8540a8df3708020c87fd10c91b) )
+ ROM_LOAD( "mpa-4.3j", 0x3000, 0x1000, CRC(dd05b587) SHA1(727961b0dafa4a96b580d51013336db2a18aff1e) )
+
+ ROM_REGION( 0x8000, "irem_audio:iremsound", 0 )
+ ROM_LOAD( "mp-s1.1a", 0x7000, 0x1000, CRC(561d3108) SHA1(4998c68a9e9a8002251fa8f07aa1082444a9dc80) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "spatrol.3e", 0x0000, 0x1000, CRC(130709e8) SHA1(fa3d0aca3179073c92a39c50f535d945f9b58725) )
+ ROM_LOAD( "spatrol.3f", 0x1000, 0x1000, CRC(1ac58abc) SHA1(1a945c4efa6ef4a7d68cb6cb7b91a76be956837e) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "spatrol.3m", 0x0000, 0x1000, CRC(09e18f9a) SHA1(9f41aacbc5352b8783422fdffef949426bada588) )
+ ROM_LOAD( "spatrol.3n", 0x1000, 0x1000, CRC(36b1891e) SHA1(e204c259ca9c37d0843b5c877debf2171c40249a) )
+
+ ROM_REGION( 0x1000, "gfx3", 0 )
+ ROM_LOAD( "spatrol.3l", 0x0000, 0x1000, CRC(49877023) SHA1(a76b18afb20ab416318812f66bfdd57733441cb5) )
+
+ ROM_REGION( 0x1000, "gfx4", 0 )
+ ROM_LOAD( "mpe-2.3k", 0x0000, 0x1000, CRC(c7aa1fb0) SHA1(14c6c76e1d0db2c0745e5d6d33ea6945fac8e9ee) )
+
+ ROM_REGION( 0x1000, "gfx5", 0 )
+ ROM_LOAD( "spatrol.3h", 0x0000, 0x1000, CRC(091045ad) SHA1(715b5b964fe06ab015e30ce6e38d6737f0033510) )
+
+ ROM_REGION( 0x0340, "proms", 0 )
+ ROM_LOAD( "mpc-4.2a", 0x0000, 0x0200, CRC(07f99284) SHA1(dfc52958f2520e1ce4446dd4c84c91413bbacf76) )
+ ROM_LOAD( "mpc-3.1m", 0x0200, 0x0020, CRC(6a57eff2) SHA1(2d1c12dab5915da2ccd466e39436c88be434d634) )
+ ROM_LOAD( "mpc-1.1f", 0x0220, 0x0020, CRC(26979b13) SHA1(8c41a8cce4f3384c392a9f7a223a50d7be0e14a5) )
+ ROM_LOAD( "mpc-2.2h", 0x0240, 0x0100, CRC(7ae4cd97) SHA1(bc0662fac82ffe65f02092d912b2c2b0c7a8ac2b) )
+ROM_END
+
+GAME( 2008, spatrol, mpatrol, m52, mpatrol, driver_device, 0, ROT0, "Gatinho", "Sponge Patrol", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/maketrax.cpp b/docs/release/src/hbmame/drivers/maketrax.cpp
new file mode 100644
index 00000000000..2e7bb03f220
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/maketrax.cpp
@@ -0,0 +1,824 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*************************************
+ *
+ * Make Trax input handlers
+ *
+ *************************************/
+
+READ8_MEMBER(pacman_state::maketrax_special_port2_r)
+{
+ int data = ioport("DSW1")->read();
+ int pc = space.device().safe_pcbase();
+
+ if ((pc == 0x1973) || (pc == 0x2389)) return data | 0x40;
+
+ switch (offset)
+ {
+ case 0x01:
+ case 0x04:
+ data |= 0x40; break;
+ case 0x05:
+ data |= 0xc0; break;
+ default:
+ data &= 0x3f; break;
+ }
+
+ return data;
+}
+
+READ8_MEMBER(pacman_state::maketrax_special_port3_r)
+{
+ int pc = space.device().safe_pcbase();
+
+ if (pc == 0x040e) return 0x20;
+
+ if ((pc == 0x115e) || (pc == 0x3ae2)) return 0x00;
+
+ switch (offset)
+ {
+ case 0x00:
+ return 0x1f;
+ case 0x09:
+ return 0x30;
+ case 0x0c:
+ return 0x00;
+ default:
+ return 0x20;
+ }
+}
+
+WRITE8_MEMBER(pacman_state::piranha_interrupt_vector_w)
+{
+ if (data == 0xfa) data = 0x78;
+ m_maincpu->set_input_line_vector(0, data );
+}
+
+
+
+/*************************************
+ *
+ * Main CPU memory handlers
+ *
+ *************************************/
+
+/*************************************
+ *
+ * Main CPU port handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( piranha_writeport, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(piranha_interrupt_vector_w)
+ADDRESS_MAP_END
+
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+static INPUT_PORTS_START( eyes )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
+
+ PORT_START ("DSW1")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x0c, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x30, "50000" )
+ PORT_DIPSETTING( 0x20, "75000" )
+ PORT_DIPSETTING( 0x10, "100000" )
+ PORT_DIPSETTING( 0x00, "125000" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) /* Not accessed */
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START ("DSW2")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( maketrax )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Protection */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Protection */
+
+ PORT_START ("DSW1")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x08, "5" )
+ PORT_DIPSETTING( 0x0c, "6" )
+ PORT_DIPNAME( 0x10, 0x10, "First Pattern" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x20, 0x20, "Teleport Holes" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Protection */
+
+ PORT_START ("DSW2")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * Graphics layouts
+ *
+ *************************************/
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+static MACHINE_CONFIG_DERIVED( piranha, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(piranha_writeport)
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+void pacman_state::maketrax_rom_decode()
+{
+ uint8_t *rom = memregion("maincpu")->base();
+
+ /* patch protection using a copy of the opcodes so ROM checksum */
+ /* tests will not fail */
+
+ memcpy(m_patched_opcodes,rom,0x4000);
+
+ m_patched_opcodes[0x0415] = 0xc9;
+ m_patched_opcodes[0x1978] = 0x18;
+ m_patched_opcodes[0x238e] = 0xc9;
+ m_patched_opcodes[0x3ae5] = 0xe6;
+ m_patched_opcodes[0x3ae7] = 0x00;
+ m_patched_opcodes[0x3ae8] = 0xc9;
+ m_patched_opcodes[0x3aed] = 0x86;
+ m_patched_opcodes[0x3aee] = 0xc0;
+ m_patched_opcodes[0x3aef] = 0xb0;
+}
+
+DRIVER_INIT_MEMBER(pacman_state,maketrax)
+{
+ /* set up protection handlers */
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50bf, read8_delegate(FUNC(pacman_state::maketrax_special_port2_r),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x50c0, 0x50ff, read8_delegate(FUNC(pacman_state::maketrax_special_port3_r),this));
+
+ maketrax_rom_decode();
+}
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( aa )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "aa.1", 0x0000, 0x1000, CRC(7b73ff28) SHA1(3b05c9ecaa418291b9b3501fbfd4a1e48be7281e) )
+ ROM_LOAD( "aa.2", 0x1000, 0x1000, CRC(848ca2fa) SHA1(d11e874a0bd0dcf88ed0781d7dc7b7d98b4ac1e8) )
+ ROM_LOAD( "aa.3", 0x2000, 0x1000, CRC(b3d3ff37) SHA1(0df28470eb70f4a84f24c2a86b4b9d338b9b6a76) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "aa.5e", 0x0000, 0x1000, CRC(e69596af) SHA1(b53ef6fce2d9fa1163f722a1a6be56085bde415c) )
+ ROM_LOAD( "aa.5f", 0x1000, 0x1000, CRC(c26ecd63) SHA1(40d618b171c7ea164384c2ded098520c77941cbc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( abscam )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "as0.bin", 0x0000, 0x0800, CRC(0b102302) SHA1(97f6399182db4f84efe482bf3a710aa45ca104ec) )
+ ROM_LOAD( "as4.bin", 0x0800, 0x0800, CRC(3116a8ec) SHA1(259169bcc8fbe9fc73ca5100c3835a233351f530) )
+ ROM_LOAD( "as1.bin", 0x1000, 0x0800, CRC(bc0281e0) SHA1(bcc6d63ede728d9b29f903489bfa80d94ec5cc00) )
+ ROM_LOAD( "as5.bin", 0x1800, 0x0800, CRC(428ee2e8) SHA1(1477d1a86b32483ac0fdeea93512f517c9f66ce2) )
+ ROM_LOAD( "as2.bin", 0x2000, 0x0800, CRC(e05d46ad) SHA1(87da57dbbe6ab5e1dd005fd68a982f1df917459c) )
+ ROM_LOAD( "as6.bin", 0x2800, 0x0800, CRC(3ae9a8cb) SHA1(72896ad32cbdde90793788182958a943e35672f9) )
+ ROM_LOAD( "as3.bin", 0x3000, 0x0800, CRC(b39eb940) SHA1(e144a1553c76ddee1c22ad1ed0cca241c2d03998) )
+ ROM_LOAD( "as7.bin", 0x3800, 0x0800, CRC(16cf1c67) SHA1(0015fe64d476de87f1a030e7f2e735380dfcfd41) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0)
+ ROM_LOAD( "as8.bin", 0x0000, 0x0800, CRC(61daabe5) SHA1(00503916d1d1011afe68898e3416718c0e63a298) )
+ ROM_LOAD( "as10.bin", 0x0800, 0x0800, CRC(81d50c98) SHA1(6b61c666f68b5948e4facb8bac1378f986f993a7) )
+ ROM_LOAD( "as9.bin", 0x1000, 0x0800, CRC(a3bd1613) SHA1(c59bb0a4d1fa5cbe596f41ee7b1a4a661ab5614b) )
+ ROM_LOAD( "as11.bin", 0x1800, 0x0800, CRC(9d802b68) SHA1(4e8f37c2faedcfce91221a34c14f6490d578c80a) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "as4a.bin", 0x0020, 0x0100, CRC(1605b324) SHA1(336fce22caedbe69bcba9cea2b43e00f6f8e8067) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+/* This game is not complete. Should a better version emerge, it will replace this one */
+/* QuadBlok works, you need to move joystick to select it, then insert coin */
+/* No sound */
+ROM_START( absurd )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "absurd.1", 0x0000, 0x1000, CRC(cbda6dcb) SHA1(e17628ecc06b8877c6c9e55e2c8983272dd38e1e) )
+ ROM_LOAD( "absurd.2", 0x1000, 0x1000, CRC(3b669ec6) SHA1(94db6cb04f74384a2ef1830e48b9fb79e1636739) )
+ ROM_LOAD( "absurd.3", 0x2000, 0x1000, CRC(beb9024b) SHA1(9fb296e6f27373a1364a7ef439e36276e19e09f6) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "absurd.5e", 0x0000, 0x1000, CRC(0a4f5731) SHA1(0023b3175da4f25b5c59550c20b0435ac85cec2f) )
+ ROM_LOAD( "absurd.5f", 0x1000, 0x1000, CRC(ae9805ee) SHA1(fd90b8bb2492a39f27216e0cda09f9594a9dada7) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "glob.7f", 0x0000, 0x0020, CRC(1f617527) SHA1(448845cab63800a05fcb106897503d994377f78f) )
+ ROM_LOAD( "absurd.4a", 0x0020, 0x0100, CRC(9379a246) SHA1(88c84668f67afc4a5ff12e794ac37a0636bd7153) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( alpaca7 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "alpaca7.6e", 0x0000, 0x1000, CRC(AF4AFCBF) SHA1(F11E2FE309818B41CB2A28408B06D18419879C09) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "alpaca.5e", 0x0000, 0x1000, CRC(3E879F02) SHA1(0B084DD449E57476231E59F15F85A209A919959C) )
+ ROM_LOAD( "alpaca7.5f", 0x1000, 0x1000, CRC(A6103847) SHA1(4376996FF8C19AFD65F1757CE159B70071A4BD3B) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( alpaca8 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "alpaca8.6e", 0x0000, 0x1000, CRC(86027944) SHA1(C47FC62522A3BAE0D49F4B68C218F73C43ED19B5) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "alpaca.5e", 0x0000, 0x1000, CRC(3E879F02) SHA1(0B084DD449E57476231E59F15F85A209A919959C) )
+ ROM_LOAD( "alpaca8.5f", 0x1000, 0x1000, CRC(856E53AE) SHA1(95460212107B3371600569DBD4DA482EC631ABDB) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2FC650BD) SHA1(8D0268DEE78E47C712202B0EC4F1F51109B1F2A5) )
+ ROM_LOAD( "crush.4a", 0x0020, 0x0100, CRC(2BC5D339) SHA1(446E234DF94D9EF34C3191877BB33DD775ACFDF5) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( bace )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "bace.1", 0x0000, 0x1000, CRC(8b60ff7c) SHA1(c787246f0ae080fc9088631acb923a2df37c14b2) )
+ ROM_LOAD( "bace.2", 0x1000, 0x1000, CRC(25d8361a) SHA1(20792c3d4c583dfc0297c6b5db1c14194e053088) )
+ ROM_LOAD( "bace.3", 0x2000, 0x1000, CRC(fc38d994) SHA1(319691caf79292f21282006337df3c637c033602) )
+ ROM_LOAD( "bace.4", 0x3000, 0x1000, CRC(5853f341) SHA1(0794324ee1bab92baaa6f5bf2cd647ce10614200) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "bace.5e", 0x0000, 0x1000, CRC(6da99c7b) SHA1(dcd488e0117662caf77f453b73330740ae34ca55) )
+ ROM_LOAD( "bace.5f", 0x1000, 0x1000, CRC(b81cdc64) SHA1(67f4cde661dbcdcf0192289e31ee80cbd0dc9dc5) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( crashh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "crashh.1", 0x0000, 0x1000, CRC(04353b41) SHA1(28b774fd5b429569f44651cfe4df6a9929310190) )
+ ROM_LOAD( "crashh.2", 0x1000, 0x1000, CRC(e03205c0) SHA1(8c5ae42a9e2d551f9184e952723a750abc3dfb52) )
+ ROM_LOAD( "crashh.3", 0x2000, 0x1000, CRC(b0fa8e46) SHA1(2caf94d1a14d96ddc401375b54bf2b1edb13c68b) )
+ ROM_LOAD( "crashh.4", 0x3000, 0x1000, CRC(bfa4d2fe) SHA1(76ef449173c01f8943049330dba9c6a54a5e760a) )
+ ROM_LOAD( "crashh.5", 0x8000, 0x1000, CRC(12f2f224) SHA1(95528aaef908173e1374a7c6ed1a9cda4b685a20) )
+ ROM_LOAD( "pacman.6j", 0x9000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "crashh.5e", 0x0000, 0x1000, CRC(0a25969b) SHA1(2cd54477a5cc15f91ae2cba3c4270002ac15967e) )
+ ROM_LOAD( "crashh.5f", 0x1000, 0x1000, CRC(447ea79c) SHA1(886d0113608616b01e4395485c6106586adcb65a) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "crush.4a", 0x0020, 0x0100, CRC(2bc5d339) SHA1(446e234df94d9ef34c3191877bb33dd775acfdf5) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( dderby )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "dderby.6e", 0x0000, 0x1000, CRC(6f373bd4) SHA1(e2c4f9def801c5664cf2b9684a36f762e97d12d6) )
+ ROM_LOAD( "dderby.6f", 0x1000, 0x1000, CRC(2fbf16bf) SHA1(9f3714ecc40707cfa4ff1942d5fe87a03888f548) )
+ ROM_LOAD( "dderby.6h", 0x2000, 0x1000, CRC(6e16cd16) SHA1(7f13a2b181e4a62d7d71294cac8fe09fd9ac64a9) )
+ ROM_LOAD( "dderby.6j", 0x3000, 0x1000, CRC(f7e09874) SHA1(7080aaa47e0bc893cd8bd038de7af769ef4eddf6) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "dderby.5e", 0x0000, 0x1000, CRC(7e2c0a53) SHA1(c3c62b32927ac3c5948faeff28d4c2148fe18d0b) )
+ ROM_LOAD( "dderby.5f", 0x1000, 0x1000, CRC(cb2dd072) SHA1(e5813cc4247b9799e9513ff1a624fabc066582e3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( eyes )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "eyes.7d", 0x0000, 0x1000, CRC(3b09ac89) SHA1(a8f1c918da74495bb73172f39364dada38ae4713) )
+ ROM_LOAD( "eyes.7f", 0x1000, 0x1000, CRC(97096855) SHA1(10d3b164bbbe5eee86e881a1434f0c114ee8adff) )
+ ROM_LOAD( "eyes.7h", 0x2000, 0x1000, CRC(731e294e) SHA1(96c0308c146dbd85e244c4530af9ae8df78c86de) )
+ ROM_LOAD( "eyes.7j", 0x3000, 0x1000, CRC(22f7a719) SHA1(eb000b606ecedd52bebbb232e661fb1ef205f8b0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "eyes.5d", 0x0000, 0x1000, CRC(d6af0030) SHA1(652b779533e3f00e81cc102b78d367d503b06f33) )
+ ROM_LOAD( "eyes.5e", 0x1000, 0x1000, CRC(a42b5201) SHA1(2e5cede3b6039c7bd5230de27d02aaa3f35a7b64) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "82s129.4a", 0x0020, 0x0100, CRC(d8d78829) SHA1(19820d1651423210083a087fb70ebea73ad34951) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+/* E204 - Rockola presents and copyright notice are all removed. Where it should say "EYES" on title screen,
+ it has some corrupt gfx instead. The rest is fine. */
+ROM_START( eyesb ) /* E204 */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "eyesb.7d", 0x0000, 0x1000, CRC(7e7dd02d) SHA1(a0026fec57c089dd500efa107b0e884ed9edd4d6) )
+ ROM_LOAD( "eyesb.7f", 0x1000, 0x1000, CRC(d6d73eb5) SHA1(b0c51afc09dd62bdda70710d57ae5b90a5e981ac) )
+ ROM_LOAD( "eyesb.7h", 0x2000, 0x1000, CRC(951ad5dd) SHA1(9aed1044256070ae6555d561856d0bea454f97a8) )
+ ROM_LOAD( "eyesb.7j", 0x3000, 0x1000, CRC(acc9cd8b) SHA1(d7fcf1b4b3466ee2187f82080634346a5427385e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "eyes.5d", 0x0000, 0x1000, CRC(d6af0030) SHA1(652b779533e3f00e81cc102b78d367d503b06f33) )
+ ROM_LOAD( "eyes.5e", 0x1000, 0x1000, CRC(a42b5201) SHA1(2e5cede3b6039c7bd5230de27d02aaa3f35a7b64) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "82s129.4a", 0x0020, 0x0100, CRC(d8d78829) SHA1(19820d1651423210083a087fb70ebea73ad34951) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( ghohunt )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ghohunt.6e", 0x0000, 0x1000, CRC(b9e9965c) SHA1(8026e792fd474c2cc8ad8917da4d57a7930d30b4) )
+ ROM_LOAD( "ghohunt.6f", 0x1000, 0x1000, CRC(9da32395) SHA1(8b4d7309de9dab4f58fcdbb29d98ca6c03a2b6fe) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ghohunt.5e", 0x0000, 0x1000, CRC(c69b5669) SHA1(c4f641ff218aee92dd784968b3e1a030c85d61f6) )
+ ROM_LOAD( "ghohunt.5f", 0x1000, 0x1000, CRC(3ad83b13) SHA1(d2ce7ab45cb540f35cb23264e7628ac0ee6b8559) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( kangaroh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "kangaroh.1", 0x0000, 0x1000, CRC(bcdd9dff) SHA1(0243d9aaeaa82afb04d40eee192fdd65197fb87e) )
+ ROM_LOAD( "kangaroh.2", 0x1000, 0x1000, CRC(1a381ee4) SHA1(04c6ceb5baa9f94cfd7235a89adf0bc0dbc8b4d1) )
+ ROM_LOAD( "kangaroh.3", 0x2000, 0x1000, CRC(d4018655) SHA1(fb1720045c7c7ab58af894a5d2b86d289a6cd32d) )
+ ROM_LOAD( "kangaroh.4", 0x3000, 0x1000, CRC(6c3f60eb) SHA1(51fc5df0ea3effdff765ea20d69f9f14575794cf) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "kangaroh.5e", 0x0000, 0x1000, CRC(c2afaa18) SHA1(138321b5efca381fb6be053aa76b37fdc7ad6afb) )
+ ROM_LOAD( "kangaroh.5f", 0x1000, 0x1000, CRC(dd792694) SHA1(ded7dd8e5d184ec09d25aa3429c29e9a4ead6e92) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "crush.4a", 0x0020, 0x0100, CRC(2bc5d339) SHA1(446e234df94d9ef34c3191877bb33dd775acfdf5) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( ladybugh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lazybug.1", 0x0000, 0x1000, CRC(8cee62ee) SHA1(f33b114f3c133cb62f962ca1b2586314b73c8270) )
+ ROM_LOAD( "lazybug.2", 0x1000, 0x1000, CRC(c17a5571) SHA1(24bae96cf95f009825fd06916eeae8a06e2e35ae) )
+ ROM_LOAD( "lazybug.3", 0x2000, 0x1000, CRC(ac53ee82) SHA1(a69a71ee936ae73d5a27025528ff2c666893866d) )
+ ROM_LOAD( "ladybugh.4", 0x3000, 0x1000, CRC(4ac90450) SHA1(7777777777777777777777777777777777777777) ) /* unavailable */
+ ROM_LOAD( "lazybug.5", 0x8000, 0x1000, CRC(ba11a997) SHA1(8dde84e9071bfa3e60d522a02ae5bf4464e730cf) )
+ ROM_LOAD( "lazybug.6", 0x9000, 0x1000, CRC(c8b79a5b) SHA1(abaa9c585da1ee62d4b79968bedb429a5bbb739b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "lazybug.5e", 0x0000, 0x1000, CRC(4e72e4f5) SHA1(05188aa854034e5cd9779d4b7034ec0658ccc805) )
+ ROM_LOAD( "lazybug.5f", 0x1000, 0x1000, CRC(35eaf3a5) SHA1(6a0e5a5289003b0d8ccb9dd585a1e12a4486977c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( lazybug )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lazybug.1", 0x0000, 0x1000, CRC(8cee62ee) SHA1(f33b114f3c133cb62f962ca1b2586314b73c8270) )
+ ROM_LOAD( "lazybug.2", 0x1000, 0x1000, CRC(c17a5571) SHA1(24bae96cf95f009825fd06916eeae8a06e2e35ae) )
+ ROM_LOAD( "lazybug.3", 0x2000, 0x1000, CRC(ac53ee82) SHA1(a69a71ee936ae73d5a27025528ff2c666893866d) )
+ ROM_LOAD( "lazybug.4", 0x3000, 0x1000, CRC(22a4e136) SHA1(e41e4d3cc0b3ca29ae8cb9591bf36e009c76f2b2) )
+ ROM_LOAD( "lazybug.5", 0x8000, 0x1000, CRC(ba11a997) SHA1(8dde84e9071bfa3e60d522a02ae5bf4464e730cf) )
+ ROM_LOAD( "lazybug.6", 0x9000, 0x1000, CRC(c8b79a5b) SHA1(abaa9c585da1ee62d4b79968bedb429a5bbb739b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "lazybug.5e", 0x0000, 0x1000, CRC(4e72e4f5) SHA1(05188aa854034e5cd9779d4b7034ec0658ccc805) )
+ ROM_LOAD( "lazybug.5f", 0x1000, 0x1000, CRC(35eaf3a5) SHA1(6a0e5a5289003b0d8ccb9dd585a1e12a4486977c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( lazybug1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lazybug.1", 0x0000, 0x1000, CRC(8cee62ee) SHA1(f33b114f3c133cb62f962ca1b2586314b73c8270) )
+ ROM_LOAD( "lazyalt.2", 0x1000, 0x1000, CRC(3df8767b) SHA1(67ee2c2357a9a6e1f4d6ab95427d0c44dc3ebc1f) )
+ ROM_LOAD( "lazybug.3", 0x2000, 0x1000, CRC(ac53ee82) SHA1(a69a71ee936ae73d5a27025528ff2c666893866d) )
+ ROM_LOAD( "lazybug.4", 0x3000, 0x1000, CRC(22a4e136) SHA1(e41e4d3cc0b3ca29ae8cb9591bf36e009c76f2b2) )
+ ROM_LOAD( "lazybug.5", 0x8000, 0x1000, CRC(ba11a997) SHA1(8dde84e9071bfa3e60d522a02ae5bf4464e730cf) )
+ ROM_LOAD( "lazybug.6", 0x9000, 0x1000, CRC(c8b79a5b) SHA1(abaa9c585da1ee62d4b79968bedb429a5bbb739b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "lazybug.5e", 0x0000, 0x1000, CRC(4e72e4f5) SHA1(05188aa854034e5cd9779d4b7034ec0658ccc805) )
+ ROM_LOAD( "lazybug.5f", 0x1000, 0x1000, CRC(35eaf3a5) SHA1(6a0e5a5289003b0d8ccb9dd585a1e12a4486977c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mtturbo )
+ ROM_REGION( 2*0x10000, "maincpu", 0 ) /* 64k for code + 64k for opcode copy to hack protection */
+ ROM_LOAD( "maketrax.6e", 0x0000, 0x1000, CRC(0150fb4a) SHA1(ba41582d5432670654479b4bf6d938d2168858af) )
+ ROM_LOAD( "maketrax.6f", 0x1000, 0x1000, CRC(77531691) SHA1(68a450bcc8d832368d0f1cb2815cb5c03451796e) )
+ ROM_LOAD( "mtturbo.6h", 0x2000, 0x1000, CRC(77e0e153) SHA1(8be5cf8c0337e05eaf4635f19580d6c1477e6bcc) )
+ ROM_LOAD( "maketrax.6j", 0x3000, 0x1000, CRC(0b4b5e0a) SHA1(621aece612df612065f776696956ef3671421fac) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "maketrax.5e", 0x0000, 0x1000, CRC(91bad2da) SHA1(096197d0cb6d55bf72b5be045224f4bd6a9cfa1b) )
+ ROM_LOAD( "maketrax.5f", 0x1000, 0x1000, CRC(aea79f55) SHA1(279021e6771dfa5bd0b7c557aae44434286d91b7) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "2s140.4a", 0x0020, 0x0100, CRC(63efb927) SHA1(5c144a613fc4960a1dfd7ead89e7fee258a63171) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( pachello )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pachello.6e", 0x0000, 0x1000, CRC(A8227949) SHA1(793B7BA579C7E4771094D281C2589435A1BF2FDA) )
+ ROM_LOAD( "pachello.6f", 0x1000, 0x1000, CRC(D5690D97) SHA1(51A4D63265F1D848359CA8C78BA111D72A3BC2CF) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "at.5e", 0x0000, 0x1000, CRC(EEB359BF) SHA1(36F153B5CE53475FD144AF50E4BD67B0E0B3A01F) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958FEDF9) SHA1(4A937AC02216EA8C96477D4A15522070507FB599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmatri )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacmatri.6e", 0x0000, 0x1000, CRC(29B0497E) SHA1(E45B225AABDF2F0549718885C02AE8A8EEF3BAEB) )
+ ROM_LOAD( "pacmatri.6f", 0x1000, 0x1000, CRC(EAA7B145) SHA1(4C0ABF30F2C962B6EB2BDDA833236B9D58544A89) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "at.5e", 0x0000, 0x1000, CRC(EEB359BF) SHA1(36F153B5CE53475FD144AF50E4BD67B0E0B3A01F) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958FEDF9) SHA1(4A937AC02216EA8C96477D4A15522070507FB599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( deathstar ) // No text, no scores. From level 3, you need to use a 2nd joystick (RDFG keys).
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "deathstar.1", 0x0000, 0x1000, CRC(decc3963) SHA1(cbc291c767def5c92b82d6e00ebb5e61e45cbc41) )
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pactest )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pactest.1", 0x0000, 0x1000, CRC(c0423406) SHA1(51630780dd7fa32a827d81a060906130fbe57345) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ptest.5e", 0x0000, 0x1000, CRC(a650e73e) SHA1(e51df8e976259ea8b431dd13b6bc4728ba213d19) )
+ ROM_LOAD( "ptest.5f", 0x1000, 0x1000, CRC(51aa0303) SHA1(59fdfc5393e883d65bf00f8b3bbfb7173440dec3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pactetris ) // No text, no scores. When the game ends, it goes crazy.
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pactetris.1", 0x0000, 0x1929, CRC(f67b4604) SHA1(21dfb16e524734cf180b7a3c514575dfc9cb8bbc) )
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( piranha )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "pir1.bin", 0x0000, 0x0800, CRC(69a3e6ea) SHA1(c54e5d039a03d3cbee7a5e21bf1e23f4fd913ea6) )
+ ROM_LOAD( "pir5.bin", 0x0800, 0x0800, CRC(245e753f) SHA1(4c1183b8449e4e7995f81079953fe0e251251c60) )
+ ROM_LOAD( "pir2.bin", 0x1000, 0x0800, CRC(62cb6954) SHA1(0e01c8463b130ab5518ce23368ad028c86cd0a32) )
+ ROM_LOAD( "pir6.bin", 0x1800, 0x0800, CRC(cb0700bc) SHA1(1f5e91791ea25eb58d26b9627e98e0b6c1d9becf) )
+ ROM_LOAD( "pir3.bin", 0x2000, 0x0800, CRC(843fbfe5) SHA1(6671a3c55ef70447f2a127438e0c39857f8bf6b1) )
+ ROM_LOAD( "pir7.bin", 0x2800, 0x0800, CRC(73084d5e) SHA1(cb04a4c9dbf1672ddf478d2fe92b0ffd0159bb9e) )
+ ROM_LOAD( "pir4.bin", 0x3000, 0x0800, CRC(4cdf6704) SHA1(97af8bbd08896dffd73e359ec46843dd673c4c9c) )
+ ROM_LOAD( "pir8.bin", 0x3800, 0x0800, CRC(b86fedb3) SHA1(f5eaf7ccc1ecaa2417bcc077561efca8e7cb691a) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0)
+ ROM_LOAD( "pir9.bin", 0x0000, 0x0800, CRC(0f19eb28) SHA1(0335189a06be01b97ca376d3682ed54df9b121e8) )
+ ROM_LOAD( "pir11.bin", 0x0800, 0x0800, CRC(5f8bdabe) SHA1(eb6a0515a381a885b087d165aaefb0277a223715) )
+ ROM_LOAD( "pir10.bin", 0x1000, 0x0800, CRC(d19399fb) SHA1(c0a75a08f77adb9d0010511c4b6ea99324c33c50) )
+ ROM_LOAD( "pir12.bin", 0x1800, 0x0800, CRC(cfb4403d) SHA1(1642a4917be0621ebf5f705c7f68a2b75d1c78d3) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "piranha.4a", 0x0020, 0x0100, CRC(08c9447b) SHA1(5e4fbfcc7179fc4b1436af9bb709ffc381479315) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( piranhah )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pr1.cpu", 0x0000, 0x1000, CRC(bc5ad024) SHA1(a3ed781b514a1068b24a7146a28f0a2adfaa2719) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pr3.cpu", 0x2000, 0x1000, CRC(473c379d) SHA1(6e7985367c3e544b4cb98ba8291908df88eafe7f) )
+ ROM_LOAD( "pr4.cpu", 0x3000, 0x1000, CRC(63fbf895) SHA1(d328bf3b8f307fb774614834edec211117148e64) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pr5.cpu", 0x0000, 0x0800, CRC(3fc4030c) SHA1(5e45f0c19cf96daa17afd2fa1c628d7ac7f4a79c) )
+ ROM_LOAD( "pr7.cpu", 0x0800, 0x0800, CRC(30b9a010) SHA1(b0ba8b6cd430feb32d11d092e1959b9f5d240f1b) )
+ ROM_LOAD( "pr6.cpu", 0x1000, 0x0800, CRC(f3e9c9d5) SHA1(709a75b2457f21f0f1a3d9e7f4c8579468ee5cad) )
+ ROM_LOAD( "pr8.cpu", 0x1800, 0x0800, CRC(133d720d) SHA1(8af75ed9e115a996379acedd44d0c09332ec5a03) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( piranhao )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "p1.bin", 0x0000, 0x0800, CRC(c6ce1bfc) SHA1(da145d67331cee292654a185fb09e773dd9d40cd) )
+ ROM_LOAD( "p5.bin", 0x0800, 0x0800, CRC(a2655a33) SHA1(2253dcf5c8cbe278118aa1569cf456b13d8cf029) )
+ ROM_LOAD( "pir2.bin", 0x1000, 0x0800, CRC(62cb6954) SHA1(0e01c8463b130ab5518ce23368ad028c86cd0a32) )
+ ROM_LOAD( "pir6.bin", 0x1800, 0x0800, CRC(cb0700bc) SHA1(1f5e91791ea25eb58d26b9627e98e0b6c1d9becf) )
+ ROM_LOAD( "pir3.bin", 0x2000, 0x0800, CRC(843fbfe5) SHA1(6671a3c55ef70447f2a127438e0c39857f8bf6b1) )
+ ROM_LOAD( "pir7.bin", 0x2800, 0x0800, CRC(73084d5e) SHA1(cb04a4c9dbf1672ddf478d2fe92b0ffd0159bb9e) )
+ ROM_LOAD( "p4.bin", 0x3000, 0x0800, CRC(9363a4d1) SHA1(4cb4a86d92a1f9bf233cac01aa266485a8bb7a34) )
+ ROM_LOAD( "p8.bin", 0x3800, 0x0800, CRC(2769979c) SHA1(581592da26199b325de51791ddab66b474ab0413) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "p9.bin", 0x0000, 0x0800, CRC(94eb7563) SHA1(c99741ce1aebdfb89628fbfaecf5ae6b2719a0ca) )
+ ROM_LOAD( "p11.bin", 0x0800, 0x0800, CRC(a3606973) SHA1(72297e1a33102c6a48b4c65f2a0b9bfc75a2df36) )
+ ROM_LOAD( "p10.bin", 0x1000, 0x0800, CRC(84165a2c) SHA1(95b24620fbf9bd0ec4dd2aeeb6d9305bd475dce2) )
+ ROM_LOAD( "p12.bin", 0x1800, 0x0800, CRC(2699ba9e) SHA1(b91ff586defe65b200bea5ade7374c2c7579cd80) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "piranha.4a", 0x0020, 0x0100, CRC(08c9447b) SHA1(5e4fbfcc7179fc4b1436af9bb709ffc381479315) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( ppong )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ppong.1", 0x0000, 0x1000, CRC(abf90af3) SHA1(785059f68b69d031e8017fc5c6f44d22208ba1d1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ppong.5e", 0x0000, 0x1000, CRC(57fe0ace) SHA1(87b9e980c8c30b73ebf7c2750dd40806754bed51) )
+ ROM_LOAD( "ppong.5f", 0x1000, 0x1000, CRC(8bbd8de5) SHA1(feec6c9d413c6767edf2a521da439b21ccdf3d9a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ppong2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ppong2.1", 0x0000, 0x1000, CRC(b0d6d512) SHA1(1d1ccc0cf0436680fc3b2bbd1a77292506b7514b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ppong.5e", 0x0000, 0x1000, CRC(57fe0ace) SHA1(87b9e980c8c30b73ebf7c2750dd40806754bed51) )
+ ROM_LOAD( "ppong.5f", 0x1000, 0x1000, CRC(8bbd8de5) SHA1(feec6c9d413c6767edf2a521da439b21ccdf3d9a) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "ppong2.7f", 0x0000, 0x0020, CRC(e3a96194) SHA1(6eb54a64e9d1df6052fecb754852bd44dd9ed69e) )
+ ROM_LOAD( "ppong2.4a", 0x0020, 0x0100, CRC(dbd17cc2) SHA1(072e20975ae0453df57cfc54c344238aa311c373) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "ppong2.1m", 0x0000, 0x0100, CRC(0d968558) SHA1(b376885ac8452b6cbf9ced81b1080bfd570d9b91) )
+ ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( rainboh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "rainboh.1", 0x0000, 0x1000, CRC(676b742e) SHA1(0ec4bd459533f3f66782d0b978a0972c66b69ed4) )
+ ROM_LOAD( "rainboh.2", 0x1000, 0x1000, CRC(3c9f1ada) SHA1(8951170cf75e5397136193ed69d920d2b9744f29) )
+ ROM_LOAD( "rainboh.3", 0x2000, 0x1000, CRC(fbad5604) SHA1(4cdc2a87712471ed2bba7dc215b584e9e2c37c39) )
+ ROM_LOAD( "rainboh.4", 0x3000, 0x1000, CRC(1af32a9b) SHA1(9830816c11342b40c056d555d6208ef1c6537557) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "rainboh.5e", 0x0000, 0x1000, CRC(c3292da2) SHA1(11d2b8cb36dfa86c08f6072e603f18074d56c2c2) )
+ ROM_LOAD( "rainboh.5f", 0x1000, 0x1000, CRC(2b7455d8) SHA1(9decb7671a97e7fd248cc05798119d82b7830097) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( seq1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "seq1.6e", 0x0000, 0x1000, CRC(7063B724) SHA1(3A291D26BDFBF5C895D5F6AA70FC164299E8D9F1) )
+ ROM_LOAD( "seq1.6f", 0x1000, 0x1000, CRC(95DB4723) SHA1(A0C47EA05E14CEBC6493705CD2D46D1E3D12B23A) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "at.5e", 0x0000, 0x1000, CRC(EEB359BF) SHA1(36F153B5CE53475FD144AF50E4BD67B0E0B3A01F) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958FEDF9) SHA1(4A937AC02216EA8C96477D4A15522070507FB599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( seq2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "seq2.6e", 0x0000, 0x1000, CRC(0EC135BE) SHA1(F2BA6F8EE4256420E6149853A34A2B11A3545EEA) )
+ ROM_LOAD( "seq2.6f", 0x1000, 0x1000, CRC(1B95F321) SHA1(F9D76544CCE43CE779A1BF59A01AC00297BAA82C) )
+ ROM_LOAD( "seq2.6h", 0x2000, 0x1000, CRC(5892650A) SHA1(7C63F42EA3F75FAA15C6F5864569CB6A8F8C7C79) )
+ ROM_LOAD( "seq2.6j", 0x3000, 0x1000, CRC(8612016A) SHA1(4E144069F194D240E503B24DF9B10BCDE68B2C6C) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "at.5e", 0x0000, 0x1000, CRC(EEB359BF) SHA1(36F153B5CE53475FD144AF50E4BD67B0E0B3A01F) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958FEDF9) SHA1(4A937AC02216EA8C96477D4A15522070507FB599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( snakes ) // No text, no scores. Need 2 joysticks (2nd stick is RDFG keys). If you run the snake next to an edge, gfx break.
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "snakes.1", 0x0000, 0x1000, CRC(5cba3718) SHA1(c093acd0f38e24d68c5dd618b742360976f1a3fa) )
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* No sound */
+ROM_START( tinyworld )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "tinyworld.1", 0x0000, 0x1000, CRC(b485503b) SHA1(c868587529f73b4e52a9a20bc04fd8a9a9543a1e) )
+ ROM_LOAD( "tinyworld.2", 0x1000, 0x1000, CRC(37862299) SHA1(bfaec22fcb6c59b0e26980b68936ae2bf2312b40) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "tinyworld.5e", 0x0000, 0x1000, CRC(38db47a4) SHA1(ae85b7d39d36b92d519653d65132ff213f6caecc) )
+ ROM_LOAD( "absurd.5f", 0x1000, 0x1000, CRC(ae9805ee) SHA1(fd90b8bb2492a39f27216e0cda09f9594a9dada7) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "glob.7f", 0x0000, 0x0020, CRC(1f617527) SHA1(448845cab63800a05fcb106897503d994377f78f) )
+ ROM_LOAD( "absurd.4a", 0x0020, 0x0100, CRC(9379a246) SHA1(88c84668f67afc4a5ff12e794ac37a0636bd7153) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+/* note: the original rom was only 3154 bytes with a CRC of 0E67D062 - the one here is padded out to normal size */
+ROM_START( tst_pacm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "test.6e", 0x0000, 0x1000, CRC(fb645998) SHA1(ff57155533e1ec0fdc5c407dce8d270e86d33882) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( wavybug )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lazybug.1", 0x0000, 0x1000, CRC(8cee62ee) SHA1(f33b114f3c133cb62f962ca1b2586314b73c8270) )
+ ROM_LOAD( "lazybug.2", 0x1000, 0x1000, CRC(c17a5571) SHA1(24bae96cf95f009825fd06916eeae8a06e2e35ae) )
+ ROM_LOAD( "lazybug.3", 0x2000, 0x1000, CRC(ac53ee82) SHA1(a69a71ee936ae73d5a27025528ff2c666893866d) )
+ ROM_LOAD( "wavybug.4", 0x3000, 0x1000, CRC(830c47fc) SHA1(bc802de8c89417c4df91c26c2f365e471ea5efaf) )
+ ROM_LOAD( "lazybug.5", 0x8000, 0x1000, CRC(ba11a997) SHA1(8dde84e9071bfa3e60d522a02ae5bf4464e730cf) )
+ ROM_LOAD( "lazybug.6", 0x9000, 0x1000, CRC(c8b79a5b) SHA1(abaa9c585da1ee62d4b79968bedb429a5bbb739b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "lazybug.5e", 0x0000, 0x1000, CRC(4e72e4f5) SHA1(05188aa854034e5cd9779d4b7034ec0658ccc805) )
+ ROM_LOAD( "lazybug.5f", 0x1000, 0x1000, CRC(35eaf3a5) SHA1(6a0e5a5289003b0d8ccb9dd585a1e12a4486977c) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* No sound */
+ROM_START( zap )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zap.1", 0x0000, 0x1000, CRC(74e6e3a0) SHA1(3d953bfd57aa56f8fe61d1abd01db84d027df3bb) )
+ ROM_LOAD( "zap.2", 0x1000, 0x1000, CRC(40e1884b) SHA1(ce303b6a6c9e765c256997c19f64e9ebfd8f435e) )
+ ROM_LOAD( "zap.4", 0x3000, 0x1000, CRC(17c357e6) SHA1(6486f58592b784d53a5c14f59b25c8cd513b2a0d) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "zap.5e", 0x0000, 0x1000, CRC(a0578404) SHA1(329f3e869eecff96191642e54dbfc7b6b268f026) )
+ ROM_LOAD( "zap.5f", 0x1000, 0x1000, CRC(039b5c78) SHA1(36a96c996f20d1b5fb4f674393a03d10cdf4a091) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "crush.4a", 0x0020, 0x0100, CRC(2bc5d339) SHA1(446e234df94d9ef34c3191877bb33dd775acfdf5) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+/* Official MAME */
+
+/* rom parent machine inp init */
+GAME( 1981, abscam, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards License)", "Abscam", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, eyes, 0, pacman, eyes, pacman_state, eyes, ROT90, "Digitrex Techstar (Rock-ola license)", "Eyes (Digitrex Techstar)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, piranha, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards License)", "Piranha", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, piranhah, puckman, pacman, mspacman, driver_device, 0, ROT90, "hack", "Piranha (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, piranhao, puckman, piranha, mspacman, pacman_state, eyes, ROT90, "GL (US Billiards License)", "Piranha (older)", MACHINE_SUPPORTS_SAVE )
+
+
+/* Dave Widel's Games - http://www.widel.com */
+
+GAME( 2003, aa, 0, widel, mspacpls, driver_device, 0, ROT90, "David Widel", "Alien Armada", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, bace, 0, widel, mspacpls, driver_device, 0, ROT90, "David Widel", "Balloon Ace", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, dderby, 0, widel, mspacpls, driver_device, 0, ROT90, "David Widel", "Death Derby", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kangaroh, 0, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Kagaroo (Qbertish) (incomplete)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ladybugh, lazybug, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Ladybug on Pacman Hardware", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, lazybug, 0, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Lazy Bug", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, lazybug1, lazybug, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Lazy Bug (Slower)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, pactest, 0, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Test - Pacman board test", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ppong, 0, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Pong (Pacman Hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ppong2, ppong, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Pong (Pacman Hardware) v2", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, rainboh, 0, pacman, mspacpls, driver_device, 0, ROT90, "David Widel", "Rainbow (Incomplete)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, wavybug, lazybug, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Wavy Bug", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, zap, 0, woodpek, mspacpls, driver_device, 0, ROT90, "David Widel", "Space Zap Tribute", MACHINE_SUPPORTS_SAVE )
+
+/* Jerronimo's Progs - www.umlautllama.com */
+
+GAME( 2006, absurd, 0, pacman, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Absurd!/QuadBlok (non-working alpha ver 3)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
+GAME( 2003, alpaca7, alpaca8, pacman, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.7 (Pacman Hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, alpaca8, 0, pacman, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.8 (Pacman Hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pachello, 0, pachack, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Hello, World!", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pacmatri, 0, pachack, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Matrix Effect", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, seq1, 0, pachack, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "16 Step Simple Sequencer", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, seq2, seq1, pachack, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Sequencer and Music Player", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, tinyworld, 0, pacman, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Tiny World 82 (demo)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
+
+/* Other Misc Hacks */
+
+GAME( 2002, crashh, 0, woodpek, mspacpls, driver_device, 0, ROT90, "hack", "Crash", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mtturbo, 0, pacmanp, maketrax, pacman_state, maketrax, ROT270, "Tim Arcadecollecting", "Make Trax (Turbo Hack)", MACHINE_SUPPORTS_SAVE ) // http://www.arcadecollecting.com/hacks/maketrax
+GAME( 1999, tst_pacm, 0, pacman, mspacpls, driver_device, 0, ROT90, "David Caldwell", "Test - Pacman Hardware", MACHINE_SUPPORTS_SAVE ) // http://www.porkrind.org/arcade/
+GAME( 1982, eyesb, eyes, pacman, eyes, pacman_state, eyes, ROT90, "bootleg", "Eyes (unknown bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, ghohunt, puckman, pacman, pacman0, driver_device, 0, ROT90, "Hurray Banana", "Ghost Hunt", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, pactetris, puckman, pacman, pacman0, driver_device, 0, ROT90, "Ben Leperchey", "Tetris on Pacman hardware (incomplete)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, deathstar, puckman, pacman, pacman0, driver_device, 0, ROT90, "Stefano Bodrato", "Death Star", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, snakes, puckman, pacman, pacman0, driver_device, 0, ROT90, "Stefano Bodrato", "Snakes", MACHINE_SUPPORTS_SAVE )
+
+
+/*************************************************************************************************************************/
diff --git a/docs/release/src/hbmame/drivers/mappy.cpp b/docs/release/src/hbmame/drivers/mappy.cpp
new file mode 100644
index 00000000000..d80b517f855
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mappy.cpp
@@ -0,0 +1,202 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mappy.cpp"
+
+ROM_START( crackhea )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mpx_3.1d", 0xa000, 0x2000, CRC(52e6c708) SHA1(b9722941438e93325e84691ada4e95620bec73b2) )
+ ROM_LOAD( "mp1_2.1c", 0xc000, 0x2000, CRC(a958a61c) SHA1(e5198703cdf47b2cd7fc9f2a5fde7bf4ab2275db) )
+ ROM_LOAD( "mpx_1.1b", 0xe000, 0x2000, CRC(203766d4) SHA1(1dbc4f42d4c16a08240a221bec27dcc3a8dd7461) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
+
+ ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "crackh3b.32", 0x0000, 0x1000, CRC(912ffa7e) SHA1(e2fc4992ef7214e62acdcda6605a1e27b2739cbf) )
+
+ ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_LOAD( "crackh3m.64", 0x0000, 0x2000, CRC(a263d078) SHA1(344fae10fab0f9646f5a2b39cac09faa9745ec9b) )
+ ROM_LOAD( "crackh3n.64", 0x2000, 0x2000, CRC(3758ceb2) SHA1(152ba5a14514c0c160886d5c9a1296dea7a298aa) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) )
+ ROM_LOAD( "mp1-6.4c", 0x0020, 0x0100, CRC(50765082) SHA1(f578e14f15783acb2073644db4a2f0d196cc0957) )
+ ROM_LOAD( "mp1-7.5k", 0x0120, 0x0100, CRC(5396bd78) SHA1(2e387e5d8b8cab005f67f821b4db65d0ae8bd362) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "mp1-3.3m", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) )
+ROM_END
+
+ROM_START( housepty )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "housep1d.64", 0xa000, 0x2000, CRC(6f778a5d) SHA1(afe1a317f8f355ad2e83d13835c2e28137d5a5e5) )
+ ROM_LOAD( "mp1_2.1c", 0xc000, 0x2000, CRC(a958a61c) SHA1(e5198703cdf47b2cd7fc9f2a5fde7bf4ab2275db) )
+ ROM_LOAD( "housep1b.64", 0xe000, 0x2000, CRC(41a0c5b4) SHA1(74f74d679b42d51b8c850daaadc9df8889403712) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
+
+ ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "housep3b.32", 0x0000, 0x1000, CRC(8d565a7e) SHA1(b2730de5ea2d19ba1e2851c27a73c6b03225a479) )
+
+ ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_LOAD( "housep3m.64", 0x0000, 0x2000, CRC(23a3c108) SHA1(266e7ca7db5f7d481f99fd295b6bdb2da3b34b93) )
+ ROM_LOAD( "housep3n.64", 0x2000, 0x2000, CRC(c6822529) SHA1(1d8658a0e014d67b5b84f33cb19a9bdd8a88f623) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) )
+ ROM_LOAD( "mp1-6.4c", 0x0020, 0x0100, CRC(50765082) SHA1(f578e14f15783acb2073644db4a2f0d196cc0957) )
+ ROM_LOAD( "mp1-7.5k", 0x0120, 0x0100, CRC(5396bd78) SHA1(2e387e5d8b8cab005f67f821b4db65d0ae8bd362) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "mp1-3.3m", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) )
+ROM_END
+
+ROM_START( marpy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mpx_3.1d", 0xa000, 0x2000, CRC(52e6c708) SHA1(b9722941438e93325e84691ada4e95620bec73b2) )
+ ROM_LOAD( "mp1_2.1c", 0xc000, 0x2000, CRC(a958a61c) SHA1(e5198703cdf47b2cd7fc9f2a5fde7bf4ab2275db) )
+ ROM_LOAD( "mpx_1.1b", 0xe000, 0x2000, CRC(203766d4) SHA1(1dbc4f42d4c16a08240a221bec27dcc3a8dd7461) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) )
+
+ ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "marpy3b.32", 0x0000, 0x1000, CRC(2aa99047) SHA1(1ad2488066e433f2833b179b16d6500dd68ebecd) )
+
+ ROM_REGION( 0x4000, "gfx2", 0 )
+ ROM_LOAD( "marpy3m.64", 0x0000, 0x2000, CRC(ce61b84d) SHA1(33ff0ca22f347aceda084b4b8c3444a18b3d27e6) )
+ ROM_LOAD( "marpy3n.64", 0x2000, 0x2000, CRC(5d0572a7) SHA1(9afecab321dd4558efe27b00dc95a5e22154eb68) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) )
+ ROM_LOAD( "mp1-6.4c", 0x0020, 0x0100, CRC(50765082) SHA1(f578e14f15783acb2073644db4a2f0d196cc0957) )
+ ROM_LOAD( "mp1-7.5k", 0x0120, 0x0100, CRC(5396bd78) SHA1(2e387e5d8b8cab005f67f821b4db65d0ae8bd362) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "mp1-3.3m", 0x0000, 0x0100, CRC(16a9166a) SHA1(847cbaf7c88616576c410177e066ae1d792ac0ba) )
+ROM_END
+
+ROM_START( superpc1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sp1-2.1c", 0xc000, 0x2000, CRC(4bb33d9c) SHA1(dd87f71b4db090a32a6b791079eedd17580cc741) )
+ ROM_LOAD( "superpc1.1b", 0xe000, 0x2000, CRC(cec50857) SHA1(d8470064bf8a334accedcb767f5da05d5dce00a1) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "superpc1.3c", 0x0000, 0x1000, CRC(1c72ed9e) SHA1(31833bd244ff0b61419566eae4f53bdd76a5a0e8) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "superpc1.3f", 0x0000, 0x2000, CRC(89f07757) SHA1(642ca413cf27496322e4840998cdb711e3c682e0) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) )
+ ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) )
+ ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "superpc1.3m", 0x0000, 0x0100, CRC(e35238c7) SHA1(c55bd51a44b4c9899ca65f47ede952ca2714ce8e) )
+ROM_END
+
+ROM_START( superpcn )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "spc-2.1c", 0xc000, 0x2000, CRC(1a38c30e) SHA1(ae0ee9f3df0991a80698fe745a7a853a4bb60710) )
+ ROM_LOAD( "spc-1.1b", 0xe000, 0x2000, CRC(730e95a9) SHA1(ca73c8bcb03c2f5c05968c707a5d3f7f9956b886) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "sp1-6.3c", 0x0000, 0x1000, CRC(91c5935c) SHA1(10579edabc26a0910253fab7d41b4c19ecdaaa09) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) )
+ ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) )
+ ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "superpac.3m", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
+ROM_END
+
+ROM_START( superpcp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "spc-2.1c", 0xc000, 0x2000, CRC(1a38c30e) SHA1(ae0ee9f3df0991a80698fe745a7a853a4bb60710) )
+ ROM_LOAD( "spc-1.1b", 0xe000, 0x2000, CRC(730e95a9) SHA1(ca73c8bcb03c2f5c05968c707a5d3f7f9956b886) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "spv-1.3c", 0x0000, 0x1000, CRC(78337e74) SHA1(11222adb55e6bce508896ccb1f6dbab0c1d44e5b) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "spcp-2.3f", 0x0000, 0x2000, CRC(0d52ef4d) SHA1(9db8d36d80db8622dd129e8db01ef507f0e5e926) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) )
+ ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) )
+ ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "superpac.3m", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
+ROM_END
+
+ROM_START( superpcs )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sp1-2.1c", 0xc000, 0x2000, CRC(4bb33d9c) SHA1(dd87f71b4db090a32a6b791079eedd17580cc741) )
+ ROM_LOAD( "superpcs.1b", 0xe000, 0x2000, CRC(8df321c2) SHA1(f8e0a004042be3003534b226a80ab7104f684e26) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "superpcs.3c", 0x0000, 0x1000, CRC(3a4f438d) SHA1(ca333d02c94380d4fc4b56c8cc5f7269157ac371) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "superpcs.3f", 0x0000, 0x2000, CRC(d477484e) SHA1(edf724a3a53c0bfd18aaa55e452b47c8b54b223e) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "superpcs.4c", 0x0000, 0x0020, CRC(5508bfda) SHA1(29aaf77e2a1dda241da31ad83e43186b9ec491f1) )
+ ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) )
+ ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "superpcs.3m", 0x0000, 0x0100, CRC(06acd480) SHA1(4963bd69e8718cf3fd08f06a5f03fe153c380af4) )
+ROM_END
+
+ROM_START( vectrsup )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "spc-2.1c", 0xc000, 0x2000, CRC(1a38c30e) SHA1(ae0ee9f3df0991a80698fe745a7a853a4bb60710) )
+ ROM_LOAD( "spc-1.1b", 0xe000, 0x2000, CRC(730e95a9) SHA1(ca73c8bcb03c2f5c05968c707a5d3f7f9956b886) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "vecsup-1.3c", 0x0000, 0x1000, CRC(618db633) SHA1(3930a12c0d76d55b3ff40cc9deca20b01c6c9f9b) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "vecsup-2.3f", 0x0000, 0x2000, CRC(62c09c6c) SHA1(f1c65b594c293b6a4eb459eac80fe28929c64eb6) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "superpac.4c", 0x0000, 0x0020, CRC(9ce22c46) SHA1(d97f53ef4c5ef26659a22ed0de4ce7ef3758c924) )
+ ROM_LOAD( "superpac.4e", 0x0020, 0x0100, CRC(1253c5c1) SHA1(df46a90170e9761d45c90fbd04ef2aa1e8c9944b) )
+ ROM_LOAD( "superpac.3l", 0x0120, 0x0100, CRC(d4d7026f) SHA1(a486573437c54bfb503424574ad82655491e85e1) )
+
+ ROM_REGION( 0x0100, "namco", 0 )
+ ROM_LOAD( "superpac.3m", 0x0000, 0x0100, CRC(ad43688f) SHA1(072f427453efb1dda8147da61804fff06e1bc4d5) )
+ROM_END
+
+GAME( 1998, crackhea, mappy, mappy, mappy, mappy_state, mappy, ROT90, "Cary Barnhard", "Crackhead", MACHINE_SUPPORTS_SAVE ) // transparency error
+GAME( 1998, housepty, mappy, mappy, mappy, mappy_state, mappy, ROT90, "Jerky", "House Party", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, marpy, mappy, mappy, mappy, mappy_state, mappy, ROT90, "Marks Hacks", "Marpy", MACHINE_SUPPORTS_SAVE ) // transparency error
+GAME( 2011, superpc1, superpac, superpac, superpac, mappy_state, superpac, ROT90, "Paul Smith", "Super Pac-Man (Super Locksmith sound and gfx hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, superpcn, superpac, superpac, superpac, mappy_state, superpac, ROT90, "Namco", "Super Pac-Man (Namco)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, superpcp, superpac, superpac, superpac, mappy_state, superpac, ROT90, "Blue Justice", "Super Pac-Man Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, superpcs, superpac, superpac, superpac, mappy_state, superpac, ROT90, "Paul Smith", "Super Pac-Man (always small)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectrsup, superpac, superpac, superpac, mappy_state, superpac, ROT90, "T-Bone", "Super Pac-Man (Vector sim)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/marinedt.cpp b/docs/release/src/hbmame/drivers/marinedt.cpp
new file mode 100644
index 00000000000..d37d07cac16
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/marinedt.cpp
@@ -0,0 +1,699 @@
+/*
+---------------------------
+Marine Date by TAITO (1981)
+---------------------------
+a static underwater scene with obstacles in it, like seaweed,
+crabs and other stuff. You have a limited number of "strokes"
+per screen as well as a timer to work against. Your goal is
+to *bounce* yourself around the screen using *Strokes* on the
+trackball to try to reach a *female* octopus before you run out
+of strokes or time. You sort of bounce yourself around the screen
+like a billiard ball would bounce, but once in a while bubbles
+and other stuff will come up from underneath you and carry you
+away from where you are trying to get. When you reach your goal
+you get another more difficult screen, etc.
+
+-------------------------------------------------------------------------
+
+
+todo:
+in cocktail mode p1 is flipped
+after inking the shark on the far right octi was moved to goal?
+for the colours, goal has to be black otherwise it would register
+ as a hit, is goal pen 0 or 6?
+rom writes when finishing a game
+ worth looking at before the collision is correct?
+playing dot hit when eaten by a shark?
+dont use any ints, s/b uint8_t?
+enemy sprite not disabled at end of game
+tilemap
+palette may only be around 4 colours
+ is 14 the palette?
+how do you know if you've got any ink left?
+prom 14 is the top bits? 4 bpp? or so?
+why is level 37 chosen?
+should it be 30fps?
+ check other taito games of the time
+look at other taito 1981 games for ideas on the ports
+ bking
+ jhunt?
+"Marine Deto" or "Marine Date"
+ look in the roms for all the text
+simplify gfx decode
+why does the player sprite need 4 colours?
+ check if more than 1 are used
+check service test ram wipes for confirmation of ram spots
+ anything after trackball test?
+obj1 to obj2 draw order
+2nd trackball
+flip/cocktail issues
+
+done:
+timer?
+ you get 200 for each shot, don't think it's actually a timer
+have I been using x/y consistently, i.e. non rotated or rotated origin?
+ yes, seems to be best using xy raw (i.e. non-rotated)
+p2 ink doesn't always light up in test mode
+ after p1 ink pressed, p2 ink doesn't light up
+ this is correct behavior if DSW set as Upright mode
+
+Background should be blue. In-game, it is black above the water. Scores have a blue background.
+*/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "screen.h"
+
+class marinedt_state : public driver_device
+{
+public:
+ marinedt_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_tx_tileram(*this, "tx_tileram")
+ , m_maincpu(*this, "maincpu")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ { }
+
+ DECLARE_WRITE8_MEMBER(tx_tileram_w);
+ DECLARE_READ8_MEMBER(marinedt_port1_r);
+ DECLARE_READ8_MEMBER(marinedt_coll_r);
+ DECLARE_READ8_MEMBER(marinedt_obj1_x_r);
+ DECLARE_READ8_MEMBER(marinedt_obj1_yr_r);
+ DECLARE_READ8_MEMBER(marinedt_obj1_yq_r);
+ DECLARE_WRITE8_MEMBER(marinedt_obj1_a_w);
+ DECLARE_WRITE8_MEMBER(marinedt_obj1_x_w);
+ DECLARE_WRITE8_MEMBER(marinedt_obj1_y_w);
+ DECLARE_WRITE8_MEMBER(marinedt_obj2_a_w);
+ DECLARE_WRITE8_MEMBER(marinedt_obj2_x_w);
+ DECLARE_WRITE8_MEMBER(marinedt_obj2_y_w);
+ DECLARE_WRITE8_MEMBER(marinedt_music_w);
+ DECLARE_WRITE8_MEMBER(marinedt_sound_w);
+ DECLARE_WRITE8_MEMBER(marinedt_pd_w);
+ DECLARE_WRITE8_MEMBER(marinedt_pf_w);
+ TILE_GET_INFO_MEMBER(get_tile_info);
+ DECLARE_PALETTE_INIT(marinedt);
+ uint32_t screen_update_marinedt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+private:
+
+ std::unique_ptr<bitmap_ind16> m_tile;
+ std::unique_ptr<bitmap_ind16> m_obj1;
+ std::unique_ptr<bitmap_ind16> m_obj2;
+ tilemap_t *m_tx_tilemap;
+ uint8_t m_obj1_a;
+ uint8_t m_obj1_x;
+ uint8_t m_obj1_y;
+ uint8_t m_obj2_a;
+ uint8_t m_obj2_x;
+ uint8_t m_obj2_y;
+ uint8_t m_pd;
+ uint8_t m_pf;
+ uint8_t m_music;
+ uint8_t m_sound;
+ uint8_t m_coll;
+ uint8_t m_cx;
+ uint8_t m_cyr;
+ uint8_t m_cyq;
+ uint8_t m_collh;
+ uint8_t m_cxh;
+ uint8_t m_cyrh;
+ uint8_t m_cyqh;
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void video_start() override;
+ required_shared_ptr<uint8_t> m_tx_tileram;
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+};
+
+
+WRITE8_MEMBER(marinedt_state::tx_tileram_w)
+{
+ m_tx_tileram[offset] = data;
+ m_tx_tilemap->mark_tile_dirty(offset);
+}
+
+READ8_MEMBER(marinedt_state::marinedt_port1_r)
+{
+ //might need to be reversed for cocktail stuff
+
+ /* x/y multiplexed */
+ return ioport(((m_pf & 0x08) >> 3) ? "TRACKY" : "TRACKX")->read();
+}
+
+READ8_MEMBER(marinedt_state::marinedt_coll_r)
+{
+ //76543210
+ //x------- obj1 to obj2 collision
+ //-xxx---- unused
+ //----x--- obj1 to playfield collision
+ //-----xxx unused
+
+ return m_coll | m_collh;
+}
+
+//are these returning only during a collision?
+//I'd imagine they are returning the pf char where the collision took place?
+//what about where there is lots of collisions?
+//maybe the first on a scanline basis
+READ8_MEMBER(marinedt_state::marinedt_obj1_x_r)
+{
+ //76543210
+ //xxxx---- unknown
+ //----xxxx x pos in tile ram
+
+ uint8_t *RAM = memregion("maincpu")->base();
+
+ if (RAM[0x430e])
+ --m_cx;
+ else
+ ++m_cx;
+
+ //figure out why inc/dec based on 430e?
+ return m_cx | (m_cxh << 4);
+}
+
+READ8_MEMBER(marinedt_state::marinedt_obj1_yr_r)
+{
+ //76543210
+ //xxxx---- unknown
+ //----xxxx row in current screen quarter
+
+
+ //has to be +1 if cx went over?
+ if (m_cx == 0x10)
+ m_cyr++;
+
+ return m_cyr | (m_cyrh << 4);
+}
+
+READ8_MEMBER(marinedt_state::marinedt_obj1_yq_r)
+{
+ //76543210
+ //xx------ unknown
+ //--xx---- screen quarter when flipped?
+ //----xx-- unknown
+ //------xx screen quarter
+
+ return m_cyq | (m_cyqh << 4);
+}
+
+WRITE8_MEMBER(marinedt_state::marinedt_obj1_a_w){ m_obj1_a = data; }
+WRITE8_MEMBER(marinedt_state::marinedt_obj1_x_w){ m_obj1_x = data; }
+WRITE8_MEMBER(marinedt_state::marinedt_obj1_y_w){ m_obj1_y = data; }
+WRITE8_MEMBER(marinedt_state::marinedt_obj2_a_w){ m_obj2_a = data; }
+WRITE8_MEMBER(marinedt_state::marinedt_obj2_x_w){ m_obj2_x = data; }
+WRITE8_MEMBER(marinedt_state::marinedt_obj2_y_w){ m_obj2_y = data; }
+
+WRITE8_MEMBER(marinedt_state::marinedt_music_w){ m_music = data; }
+
+WRITE8_MEMBER(marinedt_state::marinedt_sound_w)
+{
+ //76543210
+ //xx------ ??
+ //--x----- jet sound
+ //---x---- foam
+ //----x--- ink
+ //-----x-- collision
+ //------x- dots hit
+ //-------x ??
+
+ m_sound = data;
+}
+
+WRITE8_MEMBER(marinedt_state::marinedt_pd_w)
+{
+ //76543210
+ //xxx----- ?? unused
+ //---x---- ?? the rest should be used based on the table
+ //----x--- ??
+ //-----x-- ??
+ //------x- obj2 enable
+ //-------x obj1 enable
+
+ m_pd = data;
+}
+
+/*
+upright
+marinedt_pf_w: 00 // upright
+marinedt_pf_w: 01 // ??
+
+cocktail
+marinedt_pf_w: 02 // cocktail
+marinedt_pf_w: 03 // ??
+
+marinedt_pf_w: 01 // upright
+marinedt_pf_w: 05 // flip sprite?
+
+marinedt_pf_w: 07 // cocktail
+marinedt_pf_w: 03 // non-flip sprite?
+*/
+WRITE8_MEMBER(marinedt_state::marinedt_pf_w)
+{
+ //76543210
+ //xxxx---- ?? unused (will need to understand table of written values)
+ //----x--- xy trackball select
+ //-----x-- ?? flip screen/controls
+ //------x- ?? upright/cocktail
+ //-------x ?? service mode (coin lockout??)
+
+
+ //if ((m_pf & 0x07) != (data & 0x07))
+ // osd_printf_debug("marinedt_pf_w: %02x\n", data & 0x07);
+
+ if ((m_pf & 0x02) != (data & 0x02))
+ {
+ if (data & 0x02)
+ osd_printf_debug("tile flip\n");
+ else
+ osd_printf_debug("tile non-flip\n");
+
+ if (data & 0x02)
+ m_tx_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY);
+ else
+ m_tx_tilemap->set_flip(0);
+ }
+
+ m_pf = data;
+
+ //if (data & 0xf0)
+ // logerror("pf:%02x %d\n", m_pf);
+ //logerror("pd:%02x %d\n", m_pd, m_screen->frame_number());
+
+}
+
+static ADDRESS_MAP_START( marinedt_map, AS_PROGRAM, 8, marinedt_state )
+ AM_RANGE(0x0000, 0x37ff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_RAM
+ AM_RANGE(0x4400, 0x47ff) AM_RAM //unused, vram mirror?
+ AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(tx_tileram_w) AM_SHARE("tx_tileram")
+ AM_RANGE(0x4c00, 0x4c00) AM_WRITENOP //?? maybe off by one error
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( marinedt_io_map, AS_IO, 8, marinedt_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW0") //dips coinage
+ AM_RANGE(0x01, 0x01) AM_READ(marinedt_port1_r) //trackball xy muxed
+ AM_RANGE(0x02, 0x02) AM_READWRITE(marinedt_obj1_x_r, marinedt_obj1_a_w)
+ AM_RANGE(0x03, 0x03) AM_READ_PORT("IN0") AM_WRITE(marinedt_obj1_x_w)
+ AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") AM_WRITE(marinedt_obj1_y_w)
+ AM_RANGE(0x05, 0x05) AM_WRITE(marinedt_music_w)
+ AM_RANGE(0x06, 0x06) AM_READWRITE(marinedt_obj1_yr_r, marinedt_sound_w)
+ AM_RANGE(0x08, 0x08) AM_WRITE(marinedt_obj2_a_w)
+ AM_RANGE(0x09, 0x09) AM_WRITE(marinedt_obj2_x_w)
+ AM_RANGE(0x0a, 0x0a) AM_READWRITE(marinedt_obj1_yq_r, marinedt_obj2_y_w)
+ AM_RANGE(0x0d, 0x0d) AM_WRITE(marinedt_pd_w)
+ //AM_RANGE(0x0e, 0x0e) AM_READWRITE(marinedt_coll_r, watchdog_reset_w)
+ AM_RANGE(0x0e, 0x0e) AM_READ(marinedt_coll_r) AM_WRITENOP
+ AM_RANGE(0x0f, 0x0f) AM_WRITE(marinedt_pf_w)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( marinedt )
+ PORT_START("DSW0")
+ PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0f, DEF_STR( 9C_1C ) )
+ PORT_DIPSETTING( 0x0e, DEF_STR( 8C_1C ) )
+ PORT_DIPSETTING( 0x0d, DEF_STR( 7C_1C ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0x0b, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x0a, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x09, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_8C ) )
+ PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
+ PORT_DIPSETTING( 0xf0, DEF_STR( 9C_1C ) )
+ PORT_DIPSETTING( 0xe0, DEF_STR( 8C_1C ) )
+ PORT_DIPSETTING( 0xd0, DEF_STR( 7C_1C ) )
+ PORT_DIPSETTING( 0xc0, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0xb0, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0xa0, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x90, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x50, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x60, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x70, DEF_STR( 1C_8C ) )
+
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_TILT )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x01, "5000" )
+ PORT_DIPSETTING( 0x00, "10000" )
+//cheat?
+ PORT_DIPNAME( 0x02, 0x00, "ignore internal bounce?" ) //maybe die / bounce off rocks & coral?
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+//freezes the game before the reset
+//doesn't seem to be done as a dip, but what about mixing with dips like this?
+ PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ PORT_DIPNAME( 0x10, 0x00, "Coin Chutes" )
+ PORT_DIPSETTING( 0x00, "Common" )
+ PORT_DIPSETTING( 0x10, "Individual" )
+ PORT_DIPNAME( 0x20, 0x00, "Year Display" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x40, "4" )
+ PORT_DIPSETTING( 0x80, "5" )
+ PORT_DIPSETTING( 0xc0, "6" )
+
+ PORT_START("TRACKX") /* FAKE MUXED */
+//check all bits are used
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE
+
+ PORT_START("TRACKY") /* FAKE MUXED */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
+INPUT_PORTS_END
+
+static const gfx_layout marinedt_charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,3),
+ 3,
+ { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, //maybe 120
+ { STEP8(0,1) },
+ { STEP8(0,8) },
+ 8*8
+};
+
+static const gfx_layout marinedt_objlayout =
+{
+ 32,32,
+ RGN_FRAC(1,1),
+ 2,
+ { 0, 4 },
+ { STEP4(32*8*7,1), STEP4(32*8*6,1), STEP4(32*8*5,1), STEP4(32*8*4,1), STEP4(32*8*3,1), STEP4(32*8*2,1), STEP4(32*8*1,1), STEP4(32*8*0,1) },
+ { STEP16(0,8), STEP16(16*8,8) },
+ 32*32*2
+};
+
+static GFXDECODE_START( marinedt )
+ GFXDECODE_ENTRY( "gfx1", 0, marinedt_charlayout, 0, 4 ) //really only 1 colour set?
+ GFXDECODE_ENTRY( "gfx2", 0, marinedt_objlayout, 48, 4 )
+ GFXDECODE_ENTRY( "gfx3", 0, marinedt_objlayout, 32, 4 )
+GFXDECODE_END
+
+PALETTE_INIT_MEMBER(marinedt_state, marinedt)
+{
+ const uint8_t *color_prom = memregion("proms")->base();
+ int i,r,b,g;
+
+ for (i = 0; i < palette.entries(); i++)
+ {
+ int bit0, bit1, bit2;
+
+ /* red component */
+ bit0 = (~color_prom[i] >> 0) & 0x01;
+ bit1 = (~color_prom[i] >> 1) & 0x01;
+ bit2 = (~color_prom[i] >> 2) & 0x01;
+// *(palette++) = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
+ r = 0x27 * bit0 + 0x46 * bit1 + 0x92 * bit2;
+ /* green component */
+ bit0 = (~color_prom[i] >> 3) & 0x01;
+ bit1 = (~color_prom[i] >> 4) & 0x01;
+ bit2 = (~color_prom[i] >> 5) & 0x01;
+// *(palette++) = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
+ g = 0x27 * bit0 + 0x46 * bit1 + 0x92 * bit2;
+ /* blue component */
+ bit0 = (~color_prom[i] >> 5) & 0x01;
+ bit1 = (~color_prom[i] >> 6) & 0x01;
+ bit2 = (~color_prom[i] >> 7) & 0x01;
+bit0 = 0;
+// *(palette++) = 0x92 * bit0 + 0x46 * bit1 + 0x27 * bit2;
+ b = 0x27 * bit0 + 0x46 * bit1 + 0x92 * bit2;
+
+ palette.set_pen_color(i, rgb_t(r, g, b));
+ }
+}
+
+
+TILE_GET_INFO_MEMBER(marinedt_state::get_tile_info)
+{
+ int code = m_tx_tileram[tile_index];
+ int color = 0;
+ int flags = TILE_FLIPX;
+
+ SET_TILE_INFO_MEMBER(0, code, color, flags);
+}
+
+void marinedt_state::video_start()
+{
+ m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(marinedt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+
+ m_tx_tilemap->set_transparent_pen(0);
+ m_tx_tilemap->set_scrolldx(0, 4*8);
+ m_tx_tilemap->set_scrolldy(0, -4*8);
+
+ m_tile = std::make_unique<bitmap_ind16>(32 * 8, 32 * 8);
+ m_obj1 = std::make_unique<bitmap_ind16>(32, 32);
+ m_obj2 = std::make_unique<bitmap_ind16>(32, 32);
+}
+
+
+// x------- flipy
+// -x------ unused ??
+// --xxx--- sprite code
+// -----x-- bank
+// ------xx colour
+
+#define OBJ_CODE(a) ((((a) & 0x04) << 1) + (((a) & 0x38) >> 3))
+#define OBJ_COLOR(a) ((a) & 0x03)
+#define OBJ_X(x) (256 - 32 - (x))
+#define OBJ_Y(y) (256 - 1 - (y))
+#define OBJ_FLIPX(a) ((m_pf & 0x02) == 0)
+#define OBJ_FLIPY(a) ((a) & 0x80)
+
+uint32_t marinedt_state::screen_update_marinedt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int sx, sy;
+
+ m_tile->fill(0);
+ m_tx_tilemap->draw(screen, *m_tile, cliprect, 0, 0);
+
+ m_obj1->fill(0);
+ m_gfxdecode->gfx(1)->transpen(*m_obj1,m_obj1->cliprect(),
+ OBJ_CODE(m_obj1_a),
+ OBJ_COLOR(m_obj1_a),
+ OBJ_FLIPX(m_obj1_a), OBJ_FLIPY(m_obj1_a),
+ 0, 0, 0);
+
+ m_obj2->fill(0);
+ m_gfxdecode->gfx(2)->transpen(*m_obj2,m_obj2->cliprect(),
+ OBJ_CODE(m_obj2_a),
+ OBJ_COLOR(m_obj2_a),
+ OBJ_FLIPX(m_obj2_a), OBJ_FLIPY(m_obj2_a),
+ 0, 0, 0);
+
+ bitmap.fill(0);
+
+ if (m_pd & 0x02)
+ copybitmap_trans(bitmap, *m_obj2, 0, 0, OBJ_X(m_obj2_x), OBJ_Y(m_obj2_y), cliprect, 0);
+
+ if (m_pd & 0x01)
+ copybitmap_trans(bitmap, *m_obj1, 0, 0, OBJ_X(m_obj1_x), OBJ_Y(m_obj1_y), cliprect, 0);
+
+ copybitmap_trans(bitmap, *m_tile, 0, 0, 0, 0, cliprect, 0);
+
+ m_coll = m_cx = m_cyr = m_cyq = 0;
+ if (m_pd & 0x01)
+ {
+ for (sx = 0; sx < 32; sx++)
+ for (sy = 0; sy < 32; sy++)
+ {
+ int x = OBJ_X(m_obj1_x) + sx;
+ int y = OBJ_Y(m_obj1_y) + sy;
+
+ if (!cliprect.contains(x, y))
+ continue;
+
+ if (m_obj1->pix16(sy, sx) == 0)
+ continue;
+
+ if (m_tile->pix16(y, x) != 0)
+ {
+ m_coll = 0x08;
+
+ m_cx = (x % 128) / 8;
+ m_cx &= 0x0f;
+
+ m_cyr = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
+ m_cyr &= 0x0f;
+
+ m_cyq = y / 64;
+ m_cyq &= 0x0f;
+
+ break;
+ }
+ }
+ }
+
+ m_collh = m_cxh = m_cyrh = m_cyqh = 0;
+ if ((m_pd & 0x03) == 0x03)
+ {
+ for (sx = 0; sx < 32; sx++)
+ for (sy = 0; sy < 32; sy++)
+ {
+ int x = OBJ_X(m_obj1_x + sx);
+ int y = OBJ_Y(m_obj1_y + sy);
+
+ int xx = OBJ_X(m_obj2_x) - x;
+ int yy = OBJ_Y(m_obj2_y) - y;
+
+ if (xx < 0 || xx >= 32 || yy < 0 || yy >= 32)
+ continue;
+
+ if (m_obj1->pix16(sy, sx) == 0)
+ continue;
+
+ if (m_obj2->pix16(yy, xx) != 0)
+ {
+ m_collh = 0x80;
+
+ m_cxh = (x % 128) / 8;
+ m_cxh &= 0x0f;
+
+ m_cyrh = ((y % 64) / 8) * 2 + (x > 127 ? 1 : 0);
+ m_cyrh &= 0x0f;
+
+ m_cyqh= y / 64;
+ m_cyqh &= 0x0f;
+
+ break;
+ }
+ }
+ }
+ return 0;
+}
+
+void marinedt_state::machine_start()
+{
+ save_item(NAME(m_obj1_a));
+ save_item(NAME(m_obj1_x));
+ save_item(NAME(m_obj1_y));
+ save_item(NAME(m_obj2_a));
+ save_item(NAME(m_obj2_x));
+ save_item(NAME(m_obj2_y));
+ save_item(NAME(m_pd));
+ save_item(NAME(m_pf));
+ save_item(NAME(m_music));
+ save_item(NAME(m_sound));
+ save_item(NAME(m_coll));
+ save_item(NAME(m_cx));
+ save_item(NAME(m_cyr));
+ save_item(NAME(m_cyq));
+ save_item(NAME(m_collh));
+ save_item(NAME(m_cxh));
+ save_item(NAME(m_cyrh));
+ save_item(NAME(m_cyqh));
+}
+
+void marinedt_state::machine_reset()
+{
+ m_obj1_a = 0;
+ m_obj1_x = 0;
+ m_obj1_y = 0;
+ m_obj2_a = 0;
+ m_obj2_x = 0;
+ m_obj2_y = 0;
+ m_pd = 0;
+ m_pf = 0;
+ m_music = 0;
+ m_sound = 0;
+ m_coll = 0;
+ m_cx = 0;
+ m_cyr = 0;
+ m_cyq = 0;
+ m_collh = 0;
+ m_cxh = 0;
+ m_cyrh = 0;
+ m_cyqh = 0;
+}
+
+static MACHINE_CONFIG_START( marinedt, marinedt_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80,10000000/4)
+ MCFG_CPU_PROGRAM_MAP(marinedt_map)
+ MCFG_CPU_IO_MAP(marinedt_io_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", marinedt_state, irq0_line_hold)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(4*8+32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(marinedt_state, screen_update_marinedt)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", marinedt)
+ MCFG_PALETTE_ADD("palette", 64)
+ MCFG_PALETTE_INIT_OWNER(marinedt_state, marinedt)
+
+ /* sound hardware */
+ //discrete sound
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( marinedt )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mg01.3d", 0x0000, 0x0800, CRC(ad09f04d) SHA1(932fc973b4a2fbbebd7e6437ed30c8444e3d4afb))
+ ROM_LOAD( "mg02.4d", 0x0800, 0x0800, CRC(555a2b0f) SHA1(143a8953ce5070c31dc4c1f623833b2a5a2cf657))
+ ROM_LOAD( "mg03.5d", 0x1000, 0x0800, CRC(2abc79b3) SHA1(1afb331a2c0e320b6d026bc5cb47a53ac3356c2a))
+ ROM_LOAD( "mg04.6d", 0x1800, 0x0800, CRC(be928364) SHA1(8d9ae71e2751c009187e41d84fbad9519ab551e1) )
+ ROM_LOAD( "mg05.7d", 0x2000, 0x0800, CRC(44cd114a) SHA1(833165c5c00c6e505acf29fef4a3ae3f9647b443) )
+ ROM_LOAD( "mg06.9d", 0x2800, 0x0800, CRC(a7e2c69b) SHA1(614fc479d13c1726382fe7b4b0379c1dd4915af0) )
+ ROM_LOAD( "mg07.10d", 0x3000, 0x0800, CRC(b85d1f9a) SHA1(4fd3e76b1816912df84477dba4655d395f5e7072) )
+
+ ROM_REGION( 0x1800, "gfx1", 0 )
+ ROM_LOAD( "mg09.4f", 0x0000, 0x0800, CRC(f4c349ca) SHA1(077f65eeac616a778d6c42bb95677fa2892ab697) )
+ ROM_LOAD( "mg10.3f", 0x0800, 0x0800, CRC(b41251e3) SHA1(e125a971b401c78efeb4b03d0fab43e392d3fc14) )
+ ROM_LOAD( "mg11.1f", 0x1000, 0x0800, CRC(50d66dd7) SHA1(858d1d2a75e091b0e382d964c5e4ddcd8e6f07dd))
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "mg12.6c", 0x0000, 0x1000, CRC(7c6486d5) SHA1(a7f17a803937937f05fc90621883a0fd44b297a0) )
+
+ ROM_REGION( 0x1000, "gfx3", 0 )
+ ROM_LOAD( "mg13.6h", 0x0000, 0x1000, CRC(17817044) SHA1(8c9b96620e3c414952e6d85c6e81b0df85c88e7a) )
+
+ ROM_REGION( 0x0080, "proms", 0 )
+ ROM_LOAD( "mg14.2a", 0x0000, 0x0020, CRC(f75f4e3a) SHA1(36e665987f475c57435fa8c224a2a3ce0c5e672b) ) //char clr
+ ROM_LOAD( "mg15.1a", 0x0020, 0x0020, CRC(cd3ab489) SHA1(a77478fb94d0cf8f4317f89cc9579def7c294b4f) ) //obj clr
+ ROM_LOAD( "mg16.4e", 0x0040, 0x0020, CRC(92c868bc) SHA1(483ae6f47845ddacb701528e82bd388d7d66a0fb) ) //?? collisions
+ ROM_LOAD( "mg17.bpr", 0x0060, 0x0020, CRC(13261a02) SHA1(050edd18e4f79d19d5206f55f329340432fd4099) ) //?? table of increasing values
+ROM_END
+
+GAME( 1981, marinedt, 0, marinedt, marinedt, driver_device, 0, ROT270, "Taito", "Marine Date", MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mario.cpp b/docs/release/src/hbmame/drivers/mario.cpp
new file mode 100644
index 00000000000..7ae8ca7df15
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mario.cpp
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mario.cpp"
+
+ROM_START( cenmario )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // cpu roms from marioj
+ ROM_LOAD( "tma1c-a1.7f", 0x0000, 0x2000, CRC(b64b6330) SHA1(f7084251ac325bbfa3fb804da16a50622e1fd213) )
+ ROM_LOAD( "tma1c-a2.7e", 0x2000, 0x2000, CRC(290c4977) SHA1(5af266be0ddc883c6548c90e4a9084024a1e91a0) )
+ ROM_LOAD( "tma1c-a1.7d", 0x4000, 0x2000, CRC(f8575f31) SHA1(710d0e72fcfce700ed2a22fb9c7c392cc76b250b) )
+ ROM_LOAD( "tma1c-a2.7c", 0xf000, 0x1000, CRC(a3c11e9e) SHA1(d0612b0f8c2ea4e798f551922a04a324f4ed5f3d) )
+
+ ROM_REGION( 0x1800, "audiocpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "tma1-c-6k_e.6k", 0x1000, 0x0800, CRC(06b9ff85) SHA1(111a29bcb9cda0d935675fa26eca6b099a88427f) )
+ ROM_CONTINUE( 0x0800, 0x0800)
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "cenmario.3f", 0x0000, 0x1000, CRC(27bcd321) SHA1(d8f1fc65dc17af2f80d67f3e2f3edabc79eba1b3) )
+ ROM_LOAD( "cenmario.3j", 0x1000, 0x1000, CRC(de1c6962) SHA1(2779715d62981baf2ea3a3f501128deb0f5559ab) )
+
+ ROM_REGION( 0x6000, "gfx2", 0 )
+ ROM_LOAD( "cenmario.7m", 0x0000, 0x1000, CRC(41c78d70) SHA1(f5ad2b84439a9c2e7aed0a38a507bb714ad6eb3a) )
+ ROM_LOAD( "cenmario.7n", 0x1000, 0x1000, CRC(659341a4) SHA1(77207279ebe9c5e33f8bfa4cdbbc7a04d0198c84) )
+ ROM_LOAD( "cenmario.7p", 0x2000, 0x1000, CRC(b9e32b12) SHA1(c8c8491c3724dc10f91100299347753bdc16a091) )
+ ROM_LOAD( "cenmario.7s", 0x3000, 0x1000, CRC(a5cc7370) SHA1(ac81cd6193207670ffbfdc4b2e9c15805c0eecee) )
+ ROM_LOAD( "cenmario.7t", 0x4000, 0x1000, CRC(e416cbea) SHA1(ffce92c8ce25d5086379ec1245ae11c64b7719f4) )
+ ROM_LOAD( "cenmario.7u", 0x5000, 0x1000, CRC(19eef39f) SHA1(41ee5184eeee10d7b502f5a06a3b006242756e57) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "tma1-c-4p.4p", 0x0000, 0x0200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801) )
+ROM_END
+
+GAME( 2002, cenmario, mario, mario, marioj, driver_device, 0, ROT0, "Marks Hacks", "Censored Mario Bros.", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mcr.cpp b/docs/release/src/hbmame/drivers/mcr.cpp
new file mode 100644
index 00000000000..7c952f62cb9
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mcr.cpp
@@ -0,0 +1,114 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mcr.cpp"
+
+ROM_START( handiman ) // all roms from tron2 except gfx2
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "scpu_pga.d2", 0x0000, 0x2000, CRC(5151770b) SHA1(26f4d830de7be228528e462dd628f439629a2641) )
+ ROM_LOAD( "scpu_pgb.d3", 0x2000, 0x2000, CRC(8ddf8717) SHA1(e0c294afa8ba0b0ba89e3e0fb3ff6d8fc4398e32) )
+ ROM_LOAD( "scpu_pgc.d4", 0x4000, 0x2000, CRC(4241e3a0) SHA1(24c1bd2f31e194542571c391c5dccf21354115c2) )
+ ROM_LOAD( "scpu_pgd.d5", 0x6000, 0x2000, CRC(035d2fe7) SHA1(1b827ca30a439d2f4cc94fcc0e90ee0cf87e018c) )
+ ROM_LOAD( "scpu_pge.d6", 0x8000, 0x2000, CRC(24c185d8) SHA1(45ac7c53f6f4eba5c7bf3fc6559cddd3821eddad) )
+ ROM_LOAD( "scpu_pgf.d7", 0xa000, 0x2000, CRC(38c4bbaf) SHA1(a7cd496ce75199b8279ea963520cf70d5f562bb2) )
+
+ ROM_REGION( 0x10000, "ssio:cpu", 0 )
+ ROM_LOAD( "ssi_0a.a7", 0x0000, 0x1000, CRC(765e6eba) SHA1(42efeefc8571dfc237c0be3368248f1e56add92e) )
+ ROM_LOAD( "ssi_0b.a8", 0x1000, 0x1000, CRC(1b90ccdd) SHA1(0876e5eeaa63bb8cc97f3634a6ddd8a29a9b012f) )
+ ROM_LOAD( "ssi_0c.a9", 0x2000, 0x1000, CRC(3a4bc629) SHA1(ce8452a99a313ae7429de471bbea39de08c9fd4b) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "scpu_bgg.g3", 0x0000, 0x2000, CRC(1a9ed2f5) SHA1(b0d85b47873ac8ad475da18b9540d37232cb2b7c) )
+ ROM_LOAD( "scpu_bgh.g4", 0x2000, 0x2000, CRC(3220f974) SHA1(a38ea5f1db27f05d9689db838ce7a8de98f34837) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "handiman.e1", 0x00000, 0x2000, CRC(8fb79ed7) SHA1(70e5f2aecda3d055eaedf2039128e549a94bd2cd) )
+ ROM_LOAD( "handiman.d1", 0x04000, 0x2000, CRC(c0b2b28e) SHA1(3d9d2c1b7a136f02e5c5595d52add03892cb0db1) )
+ ROM_LOAD( "handiman.c1", 0x08000, 0x2000, CRC(ee776741) SHA1(02ea99dd02cd469d1425a958202efe28dc202291) )
+ ROM_LOAD( "handiman.a1", 0x0c000, 0x2000, CRC(e17ec630) SHA1(7929bfeea0e5e47d412619f08ca09a31618b96da) )
+ROM_END
+
+ROM_START( shtron )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // same as shollow2 except for 2 cpu roms
+ ROM_LOAD( "shtron.00", 0x0000, 0x2000, CRC(9AEC754C) SHA1(D17A221CEB8AF59D9087AE63A73026C0BD1D58CB) )
+ ROM_LOAD( "sh-pro.01", 0x2000, 0x2000, CRC(b99f6ff8) SHA1(575cdba5bf9965c7765ce913a3376c7ba36b8291) )
+ ROM_LOAD( "shtron.02", 0x4000, 0x2000, CRC(621AD715) SHA1(8CD34D33C86D10142E0503994A0666AC77C08D4B) )
+ ROM_LOAD( "sh-pro.03", 0x6000, 0x2000, CRC(0a64afb9) SHA1(3ac6660d2b0166c58ec4fecfe37ce36e545064df) )
+ ROM_LOAD( "sh-pro.04", 0x8000, 0x2000, CRC(22fa9175) SHA1(fd8ea76b3a7ffaf48fc11dd3b7c58e548e3e57c5) )
+ ROM_LOAD( "sh-pro.05", 0xa000, 0x2000, CRC(1716e2bb) SHA1(771e4c20d63e4e1d99723e6355db67064a278ae5) )
+
+ ROM_REGION( 0x10000, "ssio:cpu", 0 )
+ ROM_LOAD( "snd-0.a7", 0x0000, 0x1000, CRC(9d815bb3) SHA1(51af797e08dbe3921e11ce70c3d0da50979336a4) )
+ ROM_LOAD( "snd-1.a8", 0x1000, 0x1000, CRC(9f253412) SHA1(a526e864073a2f9e67e2cbe53ab17fe726336241) )
+ ROM_LOAD( "snd-2.a9", 0x2000, 0x1000, CRC(7783d6c6) SHA1(1fb2117532e7da28afdb9837bcb6848165cf8173) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "sh-bg.00", 0x0000, 0x2000, CRC(3e2b333c) SHA1(b4347d0b3d6149e94da4a38684c0fab931e76cc5) )
+ ROM_LOAD( "sh-bg.01", 0x2000, 0x2000, CRC(d1d70cc4) SHA1(550e2e8c0bcbf7913b218fe48cd3324622c8d0f4) )
+
+ ROM_REGION( 0x08000, "gfx2", 0 )
+ ROM_LOAD( "sh-fg.00", 0x0000, 0x2000, CRC(33f4554e) SHA1(88dd803158d3c65429b79d2aaf8334130315aa93) )
+ ROM_LOAD( "sh-fg.01", 0x2000, 0x2000, CRC(ba1a38b4) SHA1(cee5f0a66e40c779f1bfbb4bfafe5301385e7dae) )
+ ROM_LOAD( "sh-fg.02", 0x4000, 0x2000, CRC(6b57f6da) SHA1(71165df59dd5ca037116dc0f46fd4f6aac6dbfd1) )
+ ROM_LOAD( "sh-fg.03", 0x6000, 0x2000, CRC(37ea9d07) SHA1(82e006b01ee12390308be530d4b68fc2404b6b91) )
+ROM_END
+
+ROM_START( stapper ) // cpu roms from tapper
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "tappg0.bin", 0x00000, 0x4000, CRC(127171d1) SHA1(373e9a9d73b71e100c02862662d025f5ead2f94d) )
+ ROM_LOAD( "tappg1.bin", 0x04000, 0x4000, CRC(9d6a47f7) SHA1(e493e46fc70a765e54bfdd7ba7ca570e6a5c79d6) )
+ ROM_LOAD( "tappg2.bin", 0x08000, 0x4000, CRC(3a1f8778) SHA1(cb46a2248289ced7282b1463f433dcb970c42c1a) )
+ ROM_LOAD( "tappg3.bin", 0x0c000, 0x2000, CRC(e8dcdaa4) SHA1(45bf1571a2418c7dc00ccc7061a3e04e65cb6bff) )
+
+ ROM_REGION( 0x10000, "ssio:cpu", 0 )
+ ROM_LOAD( "tapsnda7.bin", 0x0000, 0x1000, CRC(0e8bb9d5) SHA1(9e281c340b7702523c86d56317efad9e3688e585) )
+ ROM_LOAD( "tapsnda8.bin", 0x1000, 0x1000, CRC(0cf0e29b) SHA1(14334b9d2bfece3fe5bda0cbd53158ead8d27e53) )
+ ROM_LOAD( "tapsnda9.bin", 0x2000, 0x1000, CRC(31eb6dc6) SHA1(b38bba5f12516d899e023f99147868e3402fbd7b) )
+ ROM_LOAD( "tapsda10.bin", 0x3000, 0x1000, CRC(01a9be6a) SHA1(0011407c1e886071282808c0a561789b1245a789) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "stapper.bg1", 0x00000, 0x4000, CRC(1326da21) SHA1(6886cbb83372ee4c53e19325a1552d312ce5de69) )
+ ROM_LOAD( "stapper.bg0", 0x04000, 0x4000, CRC(539b93c3) SHA1(6196516940893fd72d0c0f18efa7584a2df44833) )
+
+ ROM_REGION( 0x20000, "gfx2", 0 )
+ ROM_LOAD( "stapper.fg1", 0x00000, 0x4000, CRC(29dd8e85) SHA1(f7f7e8a3aebf075fb9a2508ce438ed3bbfdcddba) )
+ ROM_LOAD( "stapper.fg0", 0x04000, 0x4000, CRC(a8ba850f) SHA1(e143dab595e129936a4744266788542422e3c503) )
+ ROM_LOAD( "stapper.fg3", 0x08000, 0x4000, CRC(3d9133e4) SHA1(3ca946aee704d59a150a9cd8ea02edf5204022e3) )
+ ROM_LOAD( "stapper.fg2", 0x0c000, 0x4000, CRC(9254d87c) SHA1(084f71436c984cb0c42cd0d07ce47ab0959b64e1) )
+ ROM_LOAD( "stapper.fg5", 0x10000, 0x4000, CRC(5ec2544f) SHA1(1a919b0a80417c0f0e22bac2ab6932411bd4ad55) )
+ ROM_LOAD( "stapper.fg4", 0x14000, 0x4000, CRC(9b970c4b) SHA1(f690708107c4923db5ffe344015388199c7e879a) )
+ ROM_LOAD( "stapper.fg7", 0x18000, 0x4000, CRC(a2ef5c06) SHA1(cce74ff117921eb0438524e7f598fd2117044b1c) )
+ ROM_LOAD( "stapper.fg6", 0x1c000, 0x4000, CRC(1baca746) SHA1(3c7015e63ab1a3f98485415e212a4b80f648dcae) )
+ROM_END
+
+ROM_START( stapper1 )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // same as stapper except 2 of the cpu roms
+ ROM_LOAD( "stapper1.pg0", 0x00000, 0x4000, CRC(c915f608) SHA1(aad2f1944334a7cdb0483613fdad40caab720259) )
+ ROM_LOAD( "tappg1.bin", 0x04000, 0x4000, CRC(9d6a47f7) SHA1(e493e46fc70a765e54bfdd7ba7ca570e6a5c79d6) )
+ ROM_LOAD( "tappg2.bin", 0x08000, 0x4000, CRC(3a1f8778) SHA1(cb46a2248289ced7282b1463f433dcb970c42c1a) )
+ ROM_LOAD( "stapper1.pg3", 0x0c000, 0x2000, CRC(dd4c785f) SHA1(6e19e77a0af6073c3955c61cf741b13921ce6bf0) )
+
+ ROM_REGION( 0x10000, "ssio:cpu", 0 )
+ ROM_LOAD( "tapsnda7.bin", 0x0000, 0x1000, CRC(0e8bb9d5) SHA1(9e281c340b7702523c86d56317efad9e3688e585) )
+ ROM_LOAD( "tapsnda8.bin", 0x1000, 0x1000, CRC(0cf0e29b) SHA1(14334b9d2bfece3fe5bda0cbd53158ead8d27e53) )
+ ROM_LOAD( "tapsnda9.bin", 0x2000, 0x1000, CRC(31eb6dc6) SHA1(b38bba5f12516d899e023f99147868e3402fbd7b) )
+ ROM_LOAD( "tapsda10.bin", 0x3000, 0x1000, CRC(01a9be6a) SHA1(0011407c1e886071282808c0a561789b1245a789) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "stapper.bg1", 0x00000, 0x4000, CRC(1326da21) SHA1(6886cbb83372ee4c53e19325a1552d312ce5de69) )
+ ROM_LOAD( "stapper.bg0", 0x04000, 0x4000, CRC(539b93c3) SHA1(6196516940893fd72d0c0f18efa7584a2df44833) )
+
+ ROM_REGION( 0x20000, "gfx2", 0 )
+ ROM_LOAD( "stapper.fg1", 0x00000, 0x4000, CRC(29dd8e85) SHA1(f7f7e8a3aebf075fb9a2508ce438ed3bbfdcddba) )
+ ROM_LOAD( "stapper.fg0", 0x04000, 0x4000, CRC(a8ba850f) SHA1(e143dab595e129936a4744266788542422e3c503) )
+ ROM_LOAD( "stapper.fg3", 0x08000, 0x4000, CRC(3d9133e4) SHA1(3ca946aee704d59a150a9cd8ea02edf5204022e3) )
+ ROM_LOAD( "stapper.fg2", 0x0c000, 0x4000, CRC(9254d87c) SHA1(084f71436c984cb0c42cd0d07ce47ab0959b64e1) )
+ ROM_LOAD( "stapper.fg5", 0x10000, 0x4000, CRC(5ec2544f) SHA1(1a919b0a80417c0f0e22bac2ab6932411bd4ad55) )
+ ROM_LOAD( "stapper.fg4", 0x14000, 0x4000, CRC(9b970c4b) SHA1(f690708107c4923db5ffe344015388199c7e879a) )
+ ROM_LOAD( "stapper.fg7", 0x18000, 0x4000, CRC(a2ef5c06) SHA1(cce74ff117921eb0438524e7f598fd2117044b1c) )
+ ROM_LOAD( "stapper.fg6", 0x1c000, 0x4000, CRC(1baca746) SHA1(3c7015e63ab1a3f98485415e212a4b80f648dcae) )
+ROM_END
+
+GAME( 1998, handiman, tron, mcr_90010, tron, mcr_state, mcr_90010, ROT90, "Bobby Tribble", "Handi-Man in Cyberworld", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, shtron, shollow, mcr_90010, tron, mcr_state, mcr_90010, ROT90, "Scott Lawrence", "Satan's Hollow (Tron Hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, stapper, tapper, mcr_91490, tapper, mcr_state, mcr_91490, ROT0, "DC", "Tapper (Simpsons Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, stapper1, tapper, mcr_91490, tapper, mcr_state, mcr_91490, ROT0, "DC", "Tapper (Simpsons Hack ver.81)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mcr3.cpp b/docs/release/src/hbmame/drivers/mcr3.cpp
new file mode 100644
index 00000000000..1f3b2072b15
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mcr3.cpp
@@ -0,0 +1,26 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mcr3.cpp"
+
+ROM_START( sargex )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cpu_3b.bin", 0x00000, 0x8000, CRC(da31a58f) SHA1(29b97caf61f8f59042519a6b501cd1d15099dd59) )
+ ROM_LOAD( "cpu_5b.bin", 0x08000, 0x8000, CRC(6800e746) SHA1(018c2b622b3654530ebc2c299b3f745777163d4b) )
+ ROM_FILL( 0x0e000, 0x2000, 0xff )
+
+ ROM_REGION( 0x10000, "tcs:cpu", 0 )
+ ROM_LOAD( "tcs_u5.bin", 0x0c000, 0x2000, CRC(a894ef8a) SHA1(7f53927fc185fff8ba1b1747f0d565e089d879e6) )
+ ROM_LOAD( "tcs_u4.bin", 0x0e000, 0x2000, CRC(6ca6faf3) SHA1(4647e633dd11f55a65c3acf81adeb3af93624991) )
+
+ ROM_REGION( 0x04000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "til_15a.bin", 0x00000, 0x2000, CRC(685001b8) SHA1(300abd808efe5b44b022082eebc591c7c255697c) )
+ ROM_LOAD( "til_14b.bin", 0x02000, 0x2000, CRC(8449eb45) SHA1(6cc43639998d55fe7ffac7e9b091d35ea169e048) )
+
+ ROM_REGION( 0x20000, "gfx2", 0 )
+ ROM_LOAD( "sargex.8", 0x00000, 0x8000, CRC(9c0a3000) SHA1(e6f7cc05163a6eba9faa5811ed1fcd261ed400d6) )
+ ROM_LOAD( "sargex.6", 0x08000, 0x8000, CRC(da7e3dbf) SHA1(20179d03746098d6a7d3d50fbf4d470bef07467f) )
+ ROM_LOAD( "sargex.5", 0x10000, 0x8000, CRC(2effe749) SHA1(5c3f2da367b32c1272c51555f7d94d2dee3bcf93) )
+ ROM_LOAD( "sargex.4", 0x18000, 0x8000, CRC(66149219) SHA1(2dcd43de7fa674add94b2584e6795460f486a943) )
+ROM_END
+
+GAME( 2009, sargex, sarge, mono_tcs, sarge, mcr3_state, sarge, ROT0, "Gatinho", "Sarge Exposed", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mgd2.cpp b/docs/release/src/hbmame/drivers/mgd2.cpp
new file mode 100644
index 00000000000..b0a84225e67
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mgd2.cpp
@@ -0,0 +1,1189 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/* These sets were dumped with the Mega Game Doctor 2
+ They are reputed to be bad dumps although I have not observed any problems.
+
+ Due to the dumping process, the P roms have the 2 halves swapped around,
+ and the C roms are split 32-byte-wise.
+
+ Each rom is named thus: nxxx001z.vvv, where:
+ xxx = the neogeo game number
+ z = a/b/c/d, indicates the loading order
+ vvv = 038 (P rom), 378 or 3f8 (S rom), 478 or 4f8 (M rom), 178, 1f8 (V rom, region 1),
+ 278, 2f8 (V rom, region 2), 538, 638, 53c, 63c (C rom)
+
+ if more than 2 V roms (or 4 C roms) are used, then z increases by a letter.
+
+ These games run the same as the usual MAME ones, except for alpham2 which has extra sound
+ roms. This produces extra sounds, such as the ticking sound as soon as the game starts. */
+
+
+ROM_START( 2020bbd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n030001a.038", 0x000001, 0x040000, CRC(efb016a2) SHA1(6bac3f89124e9af5c04e7e5b110e467a4ed85771) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) ) // n030001a.378
+
+ NEO_BIOS_AUDIO_128K( "n030001a.4f8", CRC(bf755068) SHA1(7f624a691f7e51481949462141778da3e1eb0b91) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n030001a.1f8", 0x000000, 0x080000, CRC(33e7886e) SHA1(78bd48fea1e2b1595661c8b957fe489c11e50b92) )
+ ROM_LOAD( "n030001a.1fc", 0x080000, 0x080000, CRC(e7ca3882) SHA1(40fb282ad0560d5933badd03da927d395d2a70b5) )
+ ROM_LOAD( "n030001b.1f8", 0x100000, 0x080000, CRC(3cf9a433) SHA1(3065079247f1f4a44452a9bb84c9a969fbd3773b) )
+ ROM_LOAD( "n030001b.1fc", 0x180000, 0x080000, CRC(88b10192) SHA1(ef486cc57a9cba6c4382b9fd8839e3beb57e916d) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n030001a.538", 0x000000, 0x40000, CRC(746bf48a) SHA1(93006169cb4e26bf72372c5354e60f814f39df3a) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n030001a.638", 0x000001, 0x40000, CRC(5c123d9c) SHA1(98ce390641ad11823db5de779e01bf06c2eabb8a) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n030001a.53c", 0x100000, 0x40000, CRC(57bdcec0) SHA1(6a0cfc50386dff079be93a9ee96722ea1b3df9fc) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n030001a.63c", 0x100001, 0x40000, CRC(2f4bb615) SHA1(5cfda589291579edbabfc84894e1b9a8875588f2) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n030001b.538", 0x200000, 0x40000, CRC(0b054a38) SHA1(4a917b0dcbe4b270eadc4b99532d6912b3d3117f) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n030001b.638", 0x200001, 0x40000, CRC(b2a86447) SHA1(d7048c283853cbe52ef6733aed1f9a3bf22d70ec) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( 3countbd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n043001a.038", 0x000001, 0x040000, CRC(10dbe66a) SHA1(b3a50100f0d41f2cc9ad92687aaba52340b6d67d) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n043001a.03c", 0x080001, 0x040000, CRC(6d5bfb61) SHA1(8ba73917d8c29a5400fcc3b58e0cbbd100dd3182) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "043-s1.s1", CRC(c362d484) SHA1(a3c029292572842feabe9aa8c3372628fb63978d) ) // n043001a.378
+
+ NEO_BIOS_AUDIO_128K( "n043001a.4f8", CRC(3377cda3) SHA1(5712cd0717585914120ebf307391e1e3171f5396) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "n043001a.1f8", 0x000000, 0x080000, CRC(2abe6ab0) SHA1(9d717d52889c9af76fc6790a0e97c54eabd3b931) )
+ ROM_LOAD( "n043001a.1fc", 0x080000, 0x080000, CRC(d3fa2743) SHA1(9f065d708cad0b98e7b7b4c4e96a2a4f8da76e7e) )
+ ROM_LOAD( "n043001b.1f8", 0x100000, 0x080000, CRC(f591b0a1) SHA1(68bcac77543eca84232f1628a32828cc9c4081bb) )
+ ROM_LOAD( "n043001b.1fc", 0x180000, 0x080000, CRC(01f3999e) SHA1(4f9ec67e52aabe6a0d2e2210824349e25dd9269d) )
+ ROM_LOAD( "n043001c.1f8", 0x200000, 0x080000, CRC(f76aa00e) SHA1(6dbde96b083c34ee77ce512edaa2284061172df5) )
+ ROM_LOAD( "n043001c.1fc", 0x280000, 0x080000, CRC(851ce851) SHA1(58d2c904224c50cd9c2b5c5710bb8539b94af604) )
+ ROM_LOAD( "n043001d.1f8", 0x300000, 0x080000, CRC(9e2c8366) SHA1(89ababf09a578750fed508475bcfb562bc9116a6) )
+ ROM_LOAD( "n043001d.1fc", 0x380000, 0x080000, CRC(b1a0ccb0) SHA1(ccadb887818477906071edf85408bfe5d74e919a) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n043001a.538", 0x000000, 0x40000, CRC(be0d2fe0) SHA1(6c59673b5b7c362596374f45b0fc739e5608d4d2) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001a.638", 0x000001, 0x40000, CRC(f56dafa5) SHA1(2b9b1a1ed0a00b1bf3c7e490ac0995836c263dba) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001a.53c", 0x100000, 0x40000, CRC(fdb4df65) SHA1(ac59c3aaa5f794a21942015a41c3daa6a94d564c) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001a.63c", 0x100001, 0x40000, CRC(f2f68b2a) SHA1(3cd321ee4699be888a4c380a3202a2c4932cc240) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001b.538", 0x200000, 0x40000, CRC(714c2c01) SHA1(2a5e612807a6000824cc0ae848774c5e5bdcb572) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001b.638", 0x200001, 0x40000, CRC(b15a7f25) SHA1(c5488becc87fe5be5a402f5358cd4c6c7e7e0474) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001b.53c", 0x300000, 0x40000, CRC(c57ce8b0) SHA1(241d98fdf2cfb33321387c396b98011744b472c4) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001b.63c", 0x300001, 0x40000, CRC(25f00cd3) SHA1(55f51d80efab87ea1ea2bdcb92b97eeab3097b93) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001c.538", 0x400000, 0x40000, CRC(2e7e59df) SHA1(a0a5afd8259eff487d80a43405b6368bfb8a7862) )
+ ROM_CONTINUE( 0x400002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001c.638", 0x400001, 0x40000, CRC(341438e4) SHA1(233703b8ecd61ba173bf6636677f4f8e8972e8f4) )
+ ROM_CONTINUE( 0x400003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001c.53c", 0x500000, 0x40000, CRC(a93185ce) SHA1(8b979391f3dba5ee4869bbe8417cbe04f781a3bd) )
+ ROM_CONTINUE( 0x500002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001c.63c", 0x500001, 0x40000, CRC(fb8adce8) SHA1(e7a269db6b1f03cab4535b41caaae27e7d98dd4b) )
+ ROM_CONTINUE( 0x500003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001d.538", 0x600000, 0x40000, CRC(410938c5) SHA1(230e4c466a38fee7432be7352b99b9331c227532) )
+ ROM_CONTINUE( 0x600002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001d.638", 0x600001, 0x40000, CRC(74d995c5) SHA1(fd269844104c598cda96cc8823c0acdbddeaa9ba) )
+ ROM_CONTINUE( 0x600003, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001d.53c", 0x700000, 0x40000, CRC(50d66909) SHA1(4458e59e7fdddd8c2383d4f0edd025a08eaa1222) )
+ ROM_CONTINUE( 0x700002, 0x40000 )
+ ROM_LOAD32_BYTE( "n043001d.63c", 0x700001, 0x40000, CRC(521b6df1) SHA1(aa8a072f1abe4a0bb62a917dd2662dfdbaef0faa) )
+ ROM_CONTINUE( 0x700003, 0x40000 )
+ROM_END
+
+ROM_START( alpham2d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n007001a.038", 0x000001, 0x040000, CRC(4400b34c) SHA1(99cd25c0383e8ffba2d83f2d9c5c6452fe69c362) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n007001a.03c", 0x080001, 0x040000, CRC(b0366875) SHA1(591a02a5cef01e190eaed922894920571f4f6bdb) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "007-s1.s1", CRC(85ec9acf) SHA1(39a11974438ad36a2cc84307151b31474c3c5518) ) // n007001a.378
+
+ NEO_BIOS_AUDIO_64K( "n007001a.478", CRC(0449acf5) SHA1(1275ba5dad1c5123f727dd4193b8ee2cb910760d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n007001a.178", 0x000000, 0x080000, CRC(7ec0e76d) SHA1(5f84f0a236b5cb7dd02b588806bc7f6e35eb515d) )
+ ROM_LOAD( "n007001a.17c", 0x080000, 0x080000, CRC(7a796ead) SHA1(0a5b2683acc680edef3d3aa44681e0d648dce53f) )
+ ROM_LOAD( "n007001b.178", 0x100000, 0x080000, CRC(70bc86a5) SHA1(00ef9faf9b094bca2fd654b26eb03e6e40bd6f80) )
+ ROM_LOAD( "n007001b.17c", 0x180000, 0x080000, CRC(29963a92) SHA1(fb2ff29e48cfee33c0f8c12f849b35bd5be27ec9) )
+
+ ROM_REGION( 0x400000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "n007001a.278", 0x000000, 0x080000, CRC(45f5e914) SHA1(d89d9917a0aaf1c662d5633a52a29bd670577830) )
+ ROM_LOAD( "n007001a.27c", 0x080000, 0x080000, CRC(07524063) SHA1(559c3f1b33cfb112dd8d70726be07cac1cafd72f) )
+ ROM_LOAD( "n007001b.278", 0x100000, 0x080000, CRC(c3178623) SHA1(687e63943a22cfff9778cb41ef6c9b9ac6f43334) )
+ ROM_LOAD( "n007001b.27c", 0x180000, 0x080000, CRC(65bca6b7) SHA1(8c96d98e86799f1a47b5a66d439e01d7935c213c) )
+ ROM_LOAD( "n007001c.278", 0x200000, 0x080000, CRC(27cd2250) SHA1(ab5af5762f48f670b2d0a31fdd38539956681035) )
+ ROM_LOAD( "n007001c.27c", 0x280000, 0x080000, CRC(43025293) SHA1(c8b612f4bead98d6e06dcf6cb8254fc8487e2c06) )
+ ROM_LOAD( "n007001d.278", 0x300000, 0x080000, CRC(ae0a679a) SHA1(7fd81af67238eae3dba64502eeff41933de795e8) )
+ ROM_LOAD( "n007001d.27c", 0x380000, 0x080000, CRC(6a2e400d) SHA1(656b026767596a6395f3e30f97140884cb0da5a0) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n007001a.538", 0x000000, 0x40000, CRC(c516b09e) SHA1(910b6197fef78138da2c5b18507d12d841a518e5) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n007001a.638", 0x000001, 0x40000, CRC(6b674581) SHA1(3cbf29302c2677abe79ae10ef95097c6d62ca88c) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n007001a.53c", 0x100000, 0x40000, CRC(d9a0ff6c) SHA1(f2577736d516471a6757a8134916fbf7316a9809) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n007001a.63c", 0x100001, 0x40000, CRC(4ff21008) SHA1(496a27d902342dbb3685ad8354981e76dc839f47) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n007001b.538", 0x200000, 0x40000, CRC(3a7fe4fd) SHA1(ad4d93ed7d472579b6ba5fd4809a96762f0c0c2e) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n007001b.638", 0x200001, 0x40000, CRC(d0e8eef3) SHA1(560594bf1ec6ca32b38d0fe73b4cb5b5ecb56d56) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( androdund )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n049001a.038", 0x000001, 0x040000, CRC(4639b419) SHA1(617765aea2cb26ae52b25b2f7a541caf14effac9) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n049001a.03c", 0x080001, 0x040000, CRC(11beb098) SHA1(8c8fafba019e94fcf56643fbeeae161840e4263d) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "049-s1.s1", CRC(6349de5d) SHA1(bcc44b9576d7bedd9a39294530bb66f707690c72) ) // n049001a.378
+
+ NEO_BIOS_AUDIO_128K( "n049001a.4f8", CRC(1a009f8c) SHA1(7782dfe48e143417f34fba5353e6deb63efeaa8a) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "n049001a.1f8", 0x000000, 0x080000, CRC(577c85b3) SHA1(2c3072401fe73497dca0e9009ae2ba4053fe936d) )
+ ROM_LOAD( "n049001a.1fc", 0x080000, 0x080000, CRC(e14551c4) SHA1(763a9912b9df55defb190af3f29ae034f6dd78d6) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n049001a.538", 0x000000, 0x40000, CRC(ca08e432) SHA1(4202685ea0eaa29772d3d451ed9240202e4626a4) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001a.638", 0x000001, 0x40000, CRC(7a0deb9e) SHA1(50953e69b8462d4b981c91c74c307bcb539b0ceb) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001a.53c", 0x100000, 0x40000, CRC(fcbcb305) SHA1(42fe48127593e7714f7675506de8d0ae08a70164) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001a.63c", 0x100001, 0x40000, CRC(b1c640f5) SHA1(6e667f4c197243f6389c952229efa90bd3a66b50) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001b.538", 0x200000, 0x40000, CRC(806ab937) SHA1(78867c587420b938be1a76f0b87dea4d21fbe1b0) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001b.638", 0x200001, 0x40000, CRC(33bee10f) SHA1(3e01859e6455c9e941f9afcf31d62a4de4806eca) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001b.53c", 0x300000, 0x40000, CRC(e7e1a2be) SHA1(91a68ed46975811f1abaf4d1d912f514328c7189) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n049001b.63c", 0x300001, 0x40000, CRC(70f0d263) SHA1(fccb548d4b1754c475ceb46f3e49e4e9607e6651) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( aofd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n044001a.038", 0x000001, 0x040000, CRC(95102254) SHA1(b4b9a0b35c2fab78fa9fd590f0f22da4e4153ac2) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "044-s1.s1", CRC(89903f39) SHA1(a04a0c244a5d5c7a595fcf649107969635a6a8b6) ) // n044001a.378
+
+ NEO_BIOS_AUDIO_128K( "044001a.4f8", CRC(981345f8) SHA1(5eb6a5a3f633d74a48555808e2562a0ba16d8675) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "n044001a.1f8", 0x000000, 0x080000, CRC(a4d8747f) SHA1(d9963375edd22d194c17e50fa398b12bbe2a777f) )
+ ROM_LOAD( "n044001a.1fc", 0x080000, 0x080000, CRC(55219d13) SHA1(97fa9b1461e9dbf6c1580e1f814df68c79b61016) )
+ ROM_LOAD( "n044001b.1f8", 0x100000, 0x080000, CRC(6eae81fa) SHA1(37d5ea320913b77a3fcdd2e1db1447a9cd77d094) )
+ ROM_LOAD( "n044001b.1fc", 0x180000, 0x080000, CRC(f91676e9) SHA1(5c3e8f4230a2b18af8cea4ee32c23408de575c0c) )
+ ROM_LOAD( "n044001c.1f8", 0x200000, 0x080000, CRC(d0c8bcd2) SHA1(126d56214a51027a340153b0dc29268ef7d36256) )
+ ROM_LOAD( "n044001c.1fc", 0x280000, 0x080000, CRC(167db9b2) SHA1(960c32b4163d7cadba26d4f64627bce08d4da65b) )
+ ROM_LOAD( "n044001d.1f8", 0x300000, 0x080000, CRC(f03969fe) SHA1(5e30c9162bdb8236ccd7ec1e99107da656764fe8) )
+ ROM_LOAD( "n044001d.1fc", 0x380000, 0x080000, CRC(a823a19a) SHA1(5662874b80b9df94c60f7100eefa229e95bd91d5) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n044001a.538", 0x000000, 0x40000, CRC(a2e4a168) SHA1(7a0090f85235ae2a50498ab3538fef2f8afa7242) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001a.638", 0x000001, 0x40000, CRC(ca12c80f) SHA1(c7e4b241719f04860abf5fbb6e1712a802e43dee) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001a.53c", 0x100000, 0x40000, CRC(da389ef7) SHA1(b3c6ec60c5bdb63943a23eed028d9c952b11fc24) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001a.63c", 0x100001, 0x40000, CRC(d59746b0) SHA1(4d66e8384be5ce2917cf7db099000c229fb2d767) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001b.538", 0x200000, 0x40000, CRC(2a0c385b) SHA1(7d8e20a81e15f6806af43edb7d35e65052c32cbd) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001b.638", 0x200001, 0x40000, CRC(8b73b3da) SHA1(046e4a02f2c305ded91b22e09bf421d4f3d84f0c) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001b.53c", 0x300000, 0x40000, CRC(4a4317bf) SHA1(805405d440e4dba2cdc8b89629b0ab9616b5d357) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001b.63c", 0x300001, 0x40000, CRC(9fc3f8ea) SHA1(5a0520980b69724cdd011841844545dafc259ff9) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001c.538", 0x400000, 0x40000, CRC(471d9e57) SHA1(54200bd380f8f6b19f64768033b97a96aa8a8640) )
+ ROM_CONTINUE( 0x400002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001c.638", 0x400001, 0x40000, CRC(cbf8a72e) SHA1(182b7f98f414533f1ea294f3ea8b25e98857e0cd) )
+ ROM_CONTINUE( 0x400003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001c.53c", 0x500000, 0x40000, CRC(23fe5675) SHA1(a03b0739c3b98150a610aada2c945165a58a56d7) )
+ ROM_CONTINUE( 0x500002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001c.63c", 0x500001, 0x40000, CRC(5ec93c96) SHA1(6a5869fe778774ef1a641068e65e33a1ea2bd15b) )
+ ROM_CONTINUE( 0x500003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001d.538", 0x600000, 0x40000, CRC(204e7b29) SHA1(944865fb04e554f217dbaa2259834e1c413afe50) )
+ ROM_CONTINUE( 0x600002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001d.638", 0x600001, 0x40000, CRC(47763b6d) SHA1(b7e6cb423e3c49bca60ff190ff105001e3579701) )
+ ROM_CONTINUE( 0x600003, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001d.53c", 0x700000, 0x40000, CRC(7f6d5144) SHA1(8f39666259d8fe187ae6da532372b6c606737246) )
+ ROM_CONTINUE( 0x700002, 0x40000 )
+ ROM_LOAD32_BYTE( "n044001d.63c", 0x700001, 0x40000, CRC(4408f4eb) SHA1(dc045494f6865def21448caab13b2ad6ee520f37) )
+ ROM_CONTINUE( 0x700003, 0x40000 )
+ROM_END
+
+ROM_START( bakatonod )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n036001a.038", 0x000001, 0x040000, CRC(083ca651) SHA1(8d947e5de3db3a8cf4195de3b149d4a7994704c1) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n036001a.03c", 0x080001, 0x040000, CRC(b3bc26ae) SHA1(c0a741198627a78f7a100ee406d994b50e63012f) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "036-s1.s1", CRC(f3ef4485) SHA1(c30bfceed7e669e4c97b0b3ec2e9f4271e5b6662) ) // n036001a.378
+
+ NEO_BIOS_AUDIO_64K( "n036001a.4f8", CRC(a5e05789) SHA1(63985ed5b3491d0f7b0e2f59785f590bfe122330) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n036001a.1f8", 0x000000, 0x080000, CRC(d3edbde6) SHA1(c8628a47e275137e340f2005775272a58a594d81) )
+ ROM_LOAD( "n036001a.1fc", 0x080000, 0x080000, CRC(cc487705) SHA1(3bc30dc485917a01756ed33b3507133549e3c1f8) )
+ ROM_LOAD( "n036001b.1f8", 0x100000, 0x080000, CRC(e28cf9b3) SHA1(6c0bc9f5f496edb89dd8dc7acbec3c361bcef0f3) )
+ ROM_LOAD( "n036001b.1fc", 0x180000, 0x080000, CRC(96c3ece9) SHA1(357ed280157897e26eeecce080da9757f1c03b35) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n036001a.538", 0x000000, 0x40000, CRC(acb82025) SHA1(6bc9b61fdbcb04a1acc0c692a066791bf412d814) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001a.638", 0x000001, 0x40000, CRC(647ba28f) SHA1(761884eabcf3be81614ee1d2cf6a86515b3fb628) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001a.53c", 0x100000, 0x40000, CRC(c6954f8e) SHA1(b7f09c1d5800ea82abee8f0b00d0c9395882fe00) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001a.63c", 0x100001, 0x40000, CRC(dffefa4f) SHA1(bdc9bd4d09808a51d8fb27c337f0382d5ddd58df) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001b.538", 0x200000, 0x40000, CRC(eb751be8) SHA1(50db6c2055160396f7a6e4ada9fa52a458046ad2) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001b.638", 0x200001, 0x40000, CRC(6135247a) SHA1(0c23a0894484689124873cfc37a4e0a05e226f2d) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001b.53c", 0x300000, 0x40000, CRC(1d39bad6) SHA1(8f275cc73844760725b476264db0543a1327fb21) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n036001b.63c", 0x300001, 0x40000, CRC(0d40c953) SHA1(f77d84cb6b9bfe580f69a319d4f4fd98389e6d49) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( bstarsd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n002001a.038", 0x000001, 0x040000, CRC(68ce5b06) SHA1(cab050a4efcf346463609910b367f7f6c1c0158b) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "002-s1.s1", CRC(1a7fd0c6) SHA1(3fc701b7afddab369ddf9dedfbc5e1aaf80b8af3) ) // n002001a.378
+
+ NEO_BIOS_AUDIO_64K( "n002001a.478", CRC(79a8f4c2) SHA1(08ca2b72fd9b0ed068dc918ecda51d13203a3481) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "002-v11.v11", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) ) // n002001a.178
+ ROM_LOAD( "002-v12.v12", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) ) // n002001a.17c
+ ROM_LOAD( "002-v13.v13", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) ) // n002001b.178
+ ROM_LOAD( "002-v14.v14", 0x180000, 0x080000, CRC(c7e11c38) SHA1(5abf2a7877e0162c758a4dcf09f183930fa7ef24) ) // n002001b.17c
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "002-v21.v21", 0x000000, 0x080000, CRC(04a733d1) SHA1(84159368c0f6de2c3b8121227201cd3422455cf6) ) // n002001a.278
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n002001a.538", 0x000000, 0x40000, CRC(c55a7229) SHA1(23a28f8ba6c1339dde4f674bbca6e6cffafabcc7) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n002001a.638", 0x000001, 0x40000, CRC(cd3eeb2d) SHA1(3997788c063cea48a901ff6033574d2c8a9e0516) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n002001a.53c", 0x100000, 0x40000, CRC(a0074bd9) SHA1(f1b1ba3630befd595d141bfc580b1bbe01bee324) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n002001a.63c", 0x100001, 0x40000, CRC(d651fecf) SHA1(3e7bbda2ecd487e568f8e8eb9b141941d6a761b9) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n002001b.538", 0x200000, 0x40000, CRC(d57767e6) SHA1(cf18dd9cf6f9da09af7be5e0c9f7f12eaa61c129) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n002001b.638", 0x200001, 0x40000, CRC(5d0a8692) SHA1(1a0f767d11f73fd41aa2f1840fc300fb23b8d262) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( burningfd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n018001a.038", 0x000001, 0x040000, CRC(188c5e11) SHA1(0f82b0e6fd93f43579f7cb2871e6840c738696af) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "018-s1.s1", CRC(6799ea0d) SHA1(ec75ef9dfdcb0b123574fc6d81ebaaadfba32fb5) ) // n018001a.378
+
+ NEO_BIOS_AUDIO_128K( "n018001a.4f8", CRC(58d10c2b) SHA1(5f1f01af284f6520d09ae1c5f6f176153a013f90) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n018001a.1f8", 0x000000, 0x080000, CRC(b55b9670) SHA1(b0ff38b2dca1361ad155e90be3674dbea1c0a53c) )
+ ROM_LOAD( "n018001a.1fc", 0x080000, 0x080000, CRC(a0bcf260) SHA1(5d1f2613cf4a292557f37e6f44a90b20d11ed8cd) )
+ ROM_LOAD( "n018001b.1f8", 0x100000, 0x080000, CRC(270f4707) SHA1(29e763acc9fd4b94d8b5d0ad917e20d8a66bbe49) )
+ ROM_LOAD( "n018001b.1fc", 0x180000, 0x080000, CRC(924e3d69) SHA1(927091f9a098f00eb303f5567f4ee926bcb170e3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n018001a.538", 0x000000, 0x40000, CRC(4ddc137b) SHA1(02add8810ed4df43feda93dd61c308bf1752e1dc) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001a.638", 0x000001, 0x40000, CRC(7d7d87dc) SHA1(efd24a8b6112c38e7d4bca46dfae227a80883be7) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001a.53c", 0x100000, 0x40000, CRC(896d8545) SHA1(415e5982275d43666d5b33c1a599e5fe073e0ab1) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001a.63c", 0x100001, 0x40000, CRC(39fe5307) SHA1(6be6306324ff63715e5ddb33c9565a538472e014) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001b.538", 0x200000, 0x40000, CRC(2b2cb196) SHA1(2826b07d72adb0c83cd84dbfc3d9a6eae93bd3b7) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001b.638", 0x200001, 0x40000, CRC(03aa8a36) SHA1(e68f12e869b0c947a0b2a0dd591edbe995e95775) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001b.53c", 0x300000, 0x40000, CRC(0f49caa9) SHA1(5a86c3b2a29b1bee10a2649c0106e0a4948f5ecf) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n018001b.63c", 0x300001, 0x40000, CRC(f759626e) SHA1(29e123c8d40334a53fceae33308d92a0dd3ac80d) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( crswordd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n037001a.038", 0x000001, 0x040000, CRC(42c78fe1) SHA1(4e680092f87baa8ce1ec375bedfd393b553bad11) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "037-s1.s1", CRC(74651f27) SHA1(bff7ff2429d2be82c1647abac2ee45b339b3b310) ) // n037001a.378
+
+ NEO_BIOS_AUDIO_64K( "n037001a.4f8", CRC(66633e5e) SHA1(24611f084643c36069c2e48dac86413a18f9663b) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "n037001a.1f8", 0x000000, 0x080000, CRC(525df5c8) SHA1(de8802aa515de5b552df87ba4eb3aa27c12105c9) )
+ ROM_LOAD( "n037001a.1fc", 0x080000, 0x080000, CRC(a11ecaf4) SHA1(214ef018628a6acf2464fdd98afadb02e4f609eb) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n037001a.538", 0x000000, 0x40000, CRC(4b373de7) SHA1(4a3cd07cb2b029c28bdea9918d839fa308324921) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001a.638", 0x000001, 0x40000, CRC(e05f5f33) SHA1(af11079524edf2db79efd8ab25b33689a0d1080b) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001a.53c", 0x100000, 0x40000, CRC(cddf6d69) SHA1(04f002d6648af24ca5c887bcd8b73d3a59becd2c) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001a.63c", 0x100001, 0x40000, CRC(91ab11a4) SHA1(b063bf2ab89382014159fbe5372a0893782fa510) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001b.538", 0x200000, 0x40000, CRC(61d25cb3) SHA1(fde39e2a3cc920772981afb6843f69c6b7b55f2d) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001b.638", 0x200001, 0x40000, CRC(01357559) SHA1(898db3366147e4c8920de9efb52b9d852dded010) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001b.53c", 0x300000, 0x40000, CRC(00bc3d84) SHA1(9eab28250902748563bc6a0dc4bd0ea66126a767) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n037001b.63c", 0x300001, 0x40000, CRC(28c6d19a) SHA1(96aa762ec26a6b954ec7414b74febf6b88e272aa) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( cyberlipd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n010001a.038", 0x000001, 0x040000, CRC(4012e465) SHA1(81caac2b559183f5a87980b6f1ca7e42d5338962) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n010001a.03c", 0x080001, 0x040000, CRC(ee899b19) SHA1(3d0369ad2496e8622fb5a11f751056a2c5fad7bf) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "010-s1.s1", CRC(79a35264) SHA1(c2819a82adbe1f5e489496e0e03477863a5b7665) ) // n010001a.378
+
+ NEO_BIOS_AUDIO_128K( "010-m1.m1", CRC(8be3a078) SHA1(054ec6a061fcc88df1ecbb0a01611a31f37a7709) ) // n010001a.478
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "010-v11.v11", 0x000000, 0x080000, CRC(90224d22) SHA1(5443ee6f90d80d43194cb4b4f0e08851a59e7784) ) // n010001a.178
+ ROM_LOAD( "010-v12.v12", 0x080000, 0x080000, CRC(a0cf1834) SHA1(8df57a7941bdae7e446a6056039adb012cdde246) ) // n010001a.17c
+ ROM_LOAD( "010-v13.v13", 0x100000, 0x080000, CRC(ae38bc84) SHA1(c0937b4f89b8b26c8a0e747b234f44ad6a3bf2ba) ) // n010001b.178
+ ROM_LOAD( "010-v14.v14", 0x180000, 0x080000, CRC(70899bd2) SHA1(8cf01144f0bcf59f09777175ae6b71846b09f3a1) ) // n010001b.17c
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "010-v21.v21", 0x000000, 0x080000, CRC(586f4cb2) SHA1(588460031d84c308e3353ecf714db9986425c21c) ) // n010001a.278
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n010001a.538", 0x000000, 0x40000, CRC(0239fc08) SHA1(27c2a68103ca6898780d72ded57f4447cf5f7f80) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001a.638", 0x000001, 0x40000, CRC(e102a1bd) SHA1(89ffd05845b452423b4cd69c4420eafa0c168507) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001a.53c", 0x100000, 0x40000, CRC(23f03b97) SHA1(f5a2b3c0cf039a84cf78223f089f9fa3a7d9f01a) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001a.63c", 0x100001, 0x40000, CRC(520571d2) SHA1(4be129b679d3962a95ce32f462c58aa08c43b1cd) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001b.538", 0x200000, 0x40000, CRC(065061ed) SHA1(5c1e48e31cc6b5bbc50085abc8102ab436885b23) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001b.638", 0x200001, 0x40000, CRC(2e31e2d2) SHA1(29c88296d10b6b716ab753d2692267e0619d6193) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001b.53c", 0x300000, 0x40000, CRC(e485e72d) SHA1(1fb160f403b6ec1ff28408d141dfe31245dbfb58) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n010001b.63c", 0x300001, 0x40000, CRC(9e2af4db) SHA1(0089d1a66fa40a25ea78c6da24b4872b4fd12782) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( eightmand )
+ ROM_REGION(0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n025001a.038", 0x000001, 0x040000, CRC(e23e2631) SHA1(ddc9efe6e386aa89aca052f004492caf39a84d68) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "025-s1.s1", CRC(a402202b) SHA1(75c44e1af459af155f5b892fd18706268dd5e602) ) // n025001a.378
+
+ NEO_BIOS_AUDIO_128K( "n025001a.4f8", CRC(68b6e0ef) SHA1(8a6c221460454d15c3d72dd66a2318be0a3d5072) )
+
+ ROM_REGION(0x200000, "ymsnd", 0)
+ ROM_LOAD( "n025001a.1f8", 0x000000, 0x080000, CRC(0a2299b4) SHA1(96087ec57bca13a7394566c87310cd5a05eae62a) )
+ ROM_LOAD( "n025001a.1fc", 0x080000, 0x080000, CRC(b695e254) SHA1(ca752c4834dcdd8c2829e336abf135e584ade603) )
+ ROM_LOAD( "n025001b.1f8", 0x100000, 0x080000, CRC(6c3c3fec) SHA1(69f7cb9a4c39b651898383ec9ee6891565e93baf) )
+ ROM_LOAD( "n025001b.1fc", 0x180000, 0x080000, CRC(375764df) SHA1(7288befc006bd10030911efecfbf78146ed5f781) )
+
+ ROM_REGION(0x300000, "sprites", 0)
+ ROM_LOAD32_BYTE( "n025001a.538", 0x000000, 0x40000, CRC(c916c9bf) SHA1(ac56aa28b163d21af80f355011112c1921a6797b) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n025001a.638", 0x000001, 0x40000, CRC(7114bce3) SHA1(a74abb92ec513250abea7487fd49ec2282a6531f) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n025001a.53c", 0x100000, 0x40000, CRC(4b057b13) SHA1(1d06edc938d8c618847853ae58de9a6e8dd6521f) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n025001a.63c", 0x100001, 0x40000, CRC(51da9a34) SHA1(850275621db0372839db334161c167c0df0915ac) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n025001b.538", 0x200000, 0x40000, CRC(12d53af0) SHA1(69bc5c1f6aa4386e851d2d0db04b5a9246257a90) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n025001b.638", 0x200001, 0x40000, CRC(43cf58f9) SHA1(72b4f27b66d45155aa98d65457c4fdd3b09d08e9) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( fatfury1d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n033001a.038", 0x000001, 0x040000, CRC(47e51379) SHA1(bb1558765f55e0b8e3e0c1c5c79db8cec8b51085) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n033001a.03c", 0x080001, 0x040000, CRC(19d36805) SHA1(6b2d5326a08b06a9152d80a8de054ad9f159a453) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "033-s1.s1", CRC(3c3bdf8c) SHA1(2f3e5feed6c27850b2a0f6fae0b97041690e944c) ) // n033001a.378
+
+ NEO_BIOS_AUDIO_128K( "n033001a.4f8", CRC(a8603979) SHA1(512f2280a43892d4ca003ac63945ce86c5211b97) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n033001a.1f8", 0x000000, 0x080000, CRC(86fabf00) SHA1(df087f58c689128f7696b91e2fcb600ccac017af) )
+ ROM_LOAD( "n033001a.1fc", 0x080000, 0x080000, CRC(ead1467b) SHA1(6f4381d7a0625f5d02739a9813ff593c2dc99dde) )
+ ROM_LOAD( "n033001b.1f8", 0x100000, 0x080000, CRC(fc3bd6f7) SHA1(8d3094ecd8d5cfe3f58be9ac6d76a2bb65eb1d00) )
+ ROM_LOAD( "n033001b.1fc", 0x180000, 0x080000, CRC(d312f6c0) SHA1(3fae32af628ed8d0176a7f6668ff4f2d898c9f7a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n033001a.538", 0x000000, 0x40000, CRC(9aaa6d73) SHA1(345ed4b75a6459cd0b8fc8f71d58f4951296177f) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001a.638", 0x000001, 0x40000, CRC(9cae3703) SHA1(1144ccf448ea7c00ca425fe54f2ce84b8fdb3c78) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001a.53c", 0x100000, 0x40000, CRC(a986f4a9) SHA1(a45cc6b5902333d6614b7a2018ebd5ada7c5f075) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001a.63c", 0x100001, 0x40000, CRC(308b619f) SHA1(384efb66633a888d7c48d2ab0e918d823178b382) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001b.538", 0x200000, 0x40000, CRC(7aefe57d) SHA1(ab97881ff620ab7130d9ce1527c23bcfc0b21a5e) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001b.638", 0x200001, 0x40000, CRC(b39a0cde) SHA1(e5829525bc2ffe489ebb0ec4ab0094417f141027) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001b.53c", 0x300000, 0x40000, CRC(e3057c96) SHA1(b6a2e55633db0aad7f1ca4e8b42c2a327f772add) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n033001b.63c", 0x300001, 0x40000, CRC(737bc030) SHA1(03ceeabb84dac6f27c6f6ba2b7097b756f411270) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( fbfrenzyd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n034001a.038", 0x000001, 0x040000, CRC(c9fc879c) SHA1(24b8be60a434c3f4944f060607756a830f9365fd) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "034-s1.s1", CRC(8472ed44) CRC(8472ed44) SHA1(42e1a9671dddd090d2a634cff986f6c73ba08b70) ) // n034001a.378
+
+ NEO_BIOS_AUDIO_128K( "n034001a.4f8", CRC(079a203c) SHA1(b0e818400c46331ec42f9bb8fa3feacb6c69006a) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n034001a.1f8", 0x000000, 0x080000, CRC(d295da77) SHA1(3015a07236714af87928a9bff1a9505a9ee9b419) )
+ ROM_LOAD( "n034001a.1fc", 0x080000, 0x080000, CRC(249b7f52) SHA1(4aa1e7f73c37ecdd09098a3943c8ff3e919788be) )
+ ROM_LOAD( "n034001b.1f8", 0x100000, 0x080000, CRC(e438fb9d) SHA1(0403345549e618a3161c74a37ecae894b6e8d1e0) )
+ ROM_LOAD( "n034001b.1fc", 0x180000, 0x080000, CRC(4f9bc109) SHA1(05f47d9b7de8a4f51fce43c14a2f5e7d616058a3) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n034001a.538", 0x000000, 0x40000, CRC(cd377680) SHA1(0ba533dc644b4111361e6f0ef31b2a92bc974efb) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n034001a.638", 0x000001, 0x40000, CRC(8b76358f) SHA1(ba908221daa9bfe7eaf03e370329fdb4a015da5f) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n034001a.53c", 0x100000, 0x40000, CRC(2f6d09c2) SHA1(5afffa37d5782c21e0d673ebfaf03f92fb5b91e4) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n034001a.63c", 0x100001, 0x40000, CRC(77e45dd2) SHA1(a4412ddfde175405c85eba2e56eec3d9878575d3) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n034001b.538", 0x200000, 0x40000, CRC(9abe41c8) SHA1(ab350c65258e5d229ab317d45580ae4cbbcd1478) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n034001b.638", 0x200001, 0x40000, CRC(336540a8) SHA1(7be473063680987560a188e59f477c8ff9b96b01) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( gpilotsd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n020001a.038", 0x000001, 0x040000, CRC(fc5837c0) SHA1(1eb46c21b17130238a1453c219e006ea150370ee) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n020001a.03c", 0x080001, 0x040000, CRC(47a641da) SHA1(d369ee64fd70d705355df71766b72c402a236e24) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) ) // n020001a.378
+
+ NEO_BIOS_AUDIO_64K( "n020001a.478", CRC(fc05fb8b) SHA1(bab6e6af4a60ffebff25951eca4177ece68875a4) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "n020001a.178", 0x000000, 0x080000, CRC(8cc44140) SHA1(0a88d8962e057bf0cabd4819d4ba67e093c49b82) )
+ ROM_LOAD( "n020001a.17c", 0x080000, 0x080000, CRC(415c61cd) SHA1(638e5fd9b02b4553df42f00188a7ac52a5a7bf84) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) ) // n020001b.178
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) ) // n020001a.278
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n020001a.538", 0x000000, 0x40000, CRC(92b8ee5f) SHA1(ff45ca2eed87863f3725d5dadd5f55ac39af033e) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001a.638", 0x000001, 0x40000, CRC(05733639) SHA1(a5f2639853ea53ec3ff91fe37fdb9e628a497883) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001a.53c", 0x100000, 0x40000, CRC(8c8e42e9) SHA1(9aa2abd11358933d72dc52ae8d0214e3b350c83b) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001a.63c", 0x100001, 0x40000, CRC(347fef2b) SHA1(8b4c7ab7d9cfda8e588d8e0f4796ce163b468407) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001b.538", 0x200000, 0x40000, CRC(4f12268b) SHA1(fa531734c9dbba62e35cb29eb40d80a219d87c54) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001b.638", 0x200001, 0x40000, CRC(2c586176) SHA1(0e28a27d59ae2ec6a9d1ff822244bfa4f960f338) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001b.53c", 0x300000, 0x40000, CRC(7c3c9c7e) SHA1(43a15669788384024ac173e1f89e53a2bdd630d2) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n020001b.63c", 0x300001, 0x40000, CRC(9b2eee8b) SHA1(420156256d5b628a62ea612edd526d293d2c7abc) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( joyjoyd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n021001a.038", 0x000001, 0x040000, CRC(ea512c9f) SHA1(094d8c06a1038dd38b74ced3d213a52b340062a6) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "021-s1.s1", CRC(6956d778) SHA1(e3757776d60dc07d8e07c9ca61b223b14732f860) ) // n021001a.378
+
+ NEO_BIOS_AUDIO_64K( "n021001a.478", CRC(058683ec) SHA1(2aff3dc18d078911ed3a09d48664faf5958b4ab5) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "021-v11.v11", 0x000000, 0x080000, CRC(66c1e5c4) SHA1(7e85420021d4c39c36ed75a1cec567c5610ffce0) ) // n021001a.178
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "021-v21.v21", 0x000000, 0x080000, CRC(8ed20a86) SHA1(d15cba5eac19ea56fdd4877541f1bb3eb755ebba) ) // n021001a.278
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n021001a.538", 0x000000, 0x40000, CRC(cb27be65) SHA1(bdadc0da89026af3ed0dc6a18f2449c0cb24ee0c) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n021001a.638", 0x000001, 0x40000, CRC(7e134979) SHA1(e33b30e39283963e8e806ccd12d9559de27c8bbe) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ROM_END
+
+ROM_START( kotmd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n016001a.038", 0x000001, 0x040000, CRC(d239c184) SHA1(feb139ce089385b6b1bc95970c4d7ae4fd8a7c7f) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n016001a.03c", 0x080001, 0x040000, CRC(7291a388) SHA1(16e22a8eef5391fa43d92d702f14a746dedf292b) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "016-s1.s1", CRC(1a2eeeb3) SHA1(8d2b96d395020197bc59294b6b0c8d62b1d8d4dd) ) // n016001a.378
+
+ NEO_BIOS_AUDIO_128K( "n016001a.4f8", CRC(40797389) SHA1(12ca00ba1d2d66d79bc64969661a52205cc98d66) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n016001a.1f8", 0x000000, 0x080000, CRC(c3df83ba) SHA1(2f015ccf99de241861e05e81ad47faf02aec3290) )
+ ROM_LOAD( "n016001a.1fc", 0x080000, 0x080000, CRC(22aa6096) SHA1(c98fdc9fa589907cae1f7a2814fa32913d6c8648) )
+ ROM_LOAD( "n016001b.1f8", 0x100000, 0x080000, CRC(df9a4854) SHA1(f9612d82ce476f8c973ce60a982ae8007bd051a1) )
+ ROM_LOAD( "n016001b.1fc", 0x180000, 0x080000, CRC(71f53a38) SHA1(0fa03a2c719cc413ab163d166f93fcdc89646066) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n016001a.538", 0x000000, 0x40000, CRC(493db90e) SHA1(fb22e4f5437d9402c531779215cf675daa35401f) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001a.638", 0x000001, 0x40000, CRC(8bc1c3a0) SHA1(789f990b2b12bff7335a40a0ca6e64824dd6d4e2) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001a.53c", 0x100000, 0x40000, CRC(0d211945) SHA1(4edef3bdd73e402ab606ac27013a2b8c1467667c) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001a.63c", 0x100001, 0x40000, CRC(cc793bbf) SHA1(b88075e388d68601bb0e56f621a22abaf90ef39c) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001b.538", 0x200000, 0x40000, CRC(cabb7b58) SHA1(e7be9c459c17dddc3a812981e14fc2e0a3fb5ec3) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001b.638", 0x200001, 0x40000, CRC(fde45b59) SHA1(72ddca41b6cd595246eb8c8bb0c2e614c53e828c) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001b.53c", 0x300000, 0x40000, CRC(c7c20718) SHA1(52a2d7f4f8baede451959a351d2badf080b1e20e) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n016001b.63c", 0x300001, 0x40000, CRC(b89b4201) SHA1(74322700b9e8cf30b7d025be3909e93e1bfdaaf9) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( lbowlingd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n019001a.038", 0x000001, 0x040000, CRC(380e358d) SHA1(2f9683ca65abb2d046277a7642877f66a29d08f6) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "019-s1.s1", CRC(5fcdc0ed) SHA1(86415077e7adc3ba6153eeb4fb0c62cf36e903fa) ) // n019001a.378
+
+ NEO_BIOS_AUDIO_64K( "n019001a.478", CRC(535ec016) SHA1(301733768d2b962f58fc372e54f9d7bfd6615c21) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "019-v11.v11", 0x000000, 0x080000, CRC(0fb74872) SHA1(38c555926c77576d63472bc075210c42e9ce13a3) ) // n019001a.178
+ ROM_LOAD( "019-v12.v12", 0x080000, 0x080000, CRC(029faa57) SHA1(7bbaa87e38929ab1e32df5f6a2ec0fd5001e7cdb) ) // n019001a.17c
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "019-v21.v21", 0x000000, 0x080000, CRC(2efd5ada) SHA1(8ba70f5f665d566824333075227d9bce1253b8d8) ) // n019001a.278
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n019001a.538", 0x000000, 0x40000, CRC(17df7955) SHA1(992558200cbe7c0f9fc96cb6b1adb63ded28b833) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001a.638", 0x000001, 0x40000, CRC(84fd2c90) SHA1(b0ce2ba62d682f847f238eb5196340f466e6bcda) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001a.53c", 0x100000, 0x40000, CRC(67bf2d89) SHA1(282a29425eed00a85f88c332112bd9e0a95770cf) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001a.63c", 0x100001, 0x40000, CRC(cb4fbeb0) SHA1(a9a985ef66fe39111ccd37a4c1a26707d3bf3045) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001b.538", 0x200000, 0x40000, CRC(00d36f90) SHA1(8d47ea266dd2bf3ccbb9fb21ba860d9e9ec22db0) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001b.638", 0x200001, 0x40000, CRC(c2ddf431) SHA1(2ffbea4164f3099bdf8162c6ecc782d8badfab25) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001b.53c", 0x300000, 0x40000, CRC(4e971be9) SHA1(f137ad0eb9da8c4fffb5893ed694d97647f7e77b) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n019001b.63c", 0x300001, 0x40000, CRC(e67f8c81) SHA1(e0e8b24171a61dfe14649e7cff6f95d0a510cb55) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( lresortd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n024001a.038", 0x000001, 0x040000, CRC(5f0a5a4b) SHA1(69e33ed94f533528038fb157529b44dc940ab231) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "024-s1.s1", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) ) // n024001a.378
+
+ NEO_BIOS_AUDIO_128K( "n024001a.4f8", CRC(3d40a1c6) SHA1(d98b2b2893274db0cadc9c9718349086afadadc7) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n024001a.1f8", 0x000000, 0x080000, CRC(0722da38) SHA1(66a9b463d5277908b3a01c03de82b3de9118f2cb) )
+ ROM_LOAD( "n024001a.1fc", 0x080000, 0x080000, CRC(670ce3ec) SHA1(9004aa85d4a9b0ecf9cf9357b073ed55a98fdb02) )
+ ROM_LOAD( "n024001b.1f8", 0x100000, 0x080000, CRC(2e39462b) SHA1(b0a9b1a3377bf0369f3020192505c46ca52927d6) )
+ ROM_LOAD( "n024001b.1fc", 0x180000, 0x080000, CRC(7944754f) SHA1(d42a46c5127c6c62041ebffb0007af8a24abd360) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n024001a.538", 0x000000, 0x40000, CRC(9f7995a9) SHA1(e3efdef66f5a6136ebe8fa9e3ff917323ab3fc5e) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n024001a.638", 0x000001, 0x40000, CRC(68c70bac) SHA1(7a6ddb1beb8cb6f6991d675affeb78226c18180e) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n024001a.53c", 0x100000, 0x40000, CRC(e122b155) SHA1(c9e759302fcf5aaf989463bf94157e45d76e68ea) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n024001a.63c", 0x100001, 0x40000, CRC(f18a9b02) SHA1(5cb9cf37de1b97ef680411beeff9ca262e77b067) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n024001b.538", 0x200000, 0x40000, CRC(e7138cb9) SHA1(d65c9e4f305cec30264355dd46a8ab413221dd82) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n024001b.638", 0x200001, 0x40000, CRC(08178e27) SHA1(e03137bf8e5bcd3c000113ec49da36f7100727e9) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( maglordd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n005001a.038", 0x000001, 0x040000, CRC(e51c3815) SHA1(19f36c8393191caf95a254ca52ce9e0012e6947a) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "005-s1.s1", CRC(1c5369a2) SHA1(db0dba0a7dced6c9ca929c5abda491b05d84199c) ) // n005001a.378
+
+ NEO_BIOS_AUDIO_64K( "n005001a.478", CRC(91ee1f73) SHA1(f060728543333a99216cc2879f7666a1f4235068) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "005-v11.v11", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) ) // n005001a.178
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "005-v21.v21", 0x000000, 0x080000, CRC(f94ab5b7) SHA1(2c16985102e3585e08622d8c54ac5c60425b9ff8) ) // n005001a.278
+ ROM_LOAD( "005-v22.v22", 0x080000, 0x080000, CRC(232cfd04) SHA1(61b66a9decbbd1f500a8c186615e7fd077c6861e) ) // n005001a.27c
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n005001a.538", 0x000000, 0x40000, CRC(86aacd0d) SHA1(ee36e015908a7c087ace6cea0650822681066c94) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n005001a.638", 0x000001, 0x40000, CRC(b62658b5) SHA1(21a1d1f9ebe8c7a442c0b0a96f12af8047b8dbf3) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n005001a.53c", 0x100000, 0x40000, CRC(3997403e) SHA1(95e8375c897953055c952fd1fd3ff282fdc68928) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n005001a.63c", 0x100001, 0x40000, CRC(bd534fe2) SHA1(eebafc4a1daf650a6e7c3a64b2628e160e130b59) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n005001b.538", 0x200000, 0x40000, CRC(fbd1e9f1) SHA1(4faa14c164000e5581bb47788d2e8e1ee74ca0c6) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n005001b.638", 0x200001, 0x40000, CRC(a6461283) SHA1(a3eb28e584b0b91a0b5b372c932815cf4047d5bd) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( minasand )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n027001a.038", 0x000001, 0x040000, CRC(86805d5a) SHA1(9f9e300f4d4aef1bddb239580e8e5e3087957a50) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "027-s1.s1", CRC(e5824baa) SHA1(8230ff7fe3cabeacecc762d90a084e893db84906) ) // n027001a.378
+
+ NEO_BIOS_AUDIO_64K( "n027001a.478", CRC(19ef88ea) SHA1(8eca1a342d506e97dd116ce8ffe2242895b04c7a) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "n027001a.178", 0x000000, 0x080000, CRC(79d65e8e) SHA1(8e5d8608e43564e5ce1d458a9e09b2c8100e3f4f) )
+ ROM_LOAD( "n027001a.17c", 0x080000, 0x080000, CRC(0b3854d5) SHA1(27e951b47c0ab96f3c64704f913400020156895a) )
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "n027001a.278", 0x000000, 0x080000, CRC(0100e548) SHA1(627d16aba58602d28c865e93894f8d00d4815779) )
+ ROM_LOAD( "n027001a.27c", 0x080000, 0x080000, CRC(0c31c5b0) SHA1(372168e5e6845eb5e2450a6f6daec26429b446c0) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n027001a.538", 0x000000, 0x40000, CRC(43f48265) SHA1(05500d56c808123b803be0efa71dd233a55793d1) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001a.638", 0x000001, 0x40000, CRC(f774d850) SHA1(5b63b4893b5b86b5c2ecf3e0be6d83d9b92e754c) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001a.53c", 0x100000, 0x40000, CRC(cbf9eef8) SHA1(6baf6c5f4fc52fc48d0e43014b11fdfe26e6db70) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001a.63c", 0x100001, 0x40000, CRC(14a81e58) SHA1(53216ad674e553829db3cc23d1e827c18d70c04e) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001b.538", 0x200000, 0x40000, CRC(3dae0a05) SHA1(0bf63e5676e3caab6f9d4895c9cbeb600bb6a8a1) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001b.638", 0x200001, 0x40000, CRC(0fb30b5b) SHA1(89f1176a55040d7ca0246231a9a0b027d2e0c304) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001b.53c", 0x300000, 0x40000, CRC(6979368e) SHA1(d1faae6fafbb7de21e7ee56356c30f18b7c4a130) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n027001b.63c", 0x300001, 0x40000, CRC(cfa90d59) SHA1(3185e00a030ace45f543b3a4ab6c101107727d01) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( mutnatd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n014001a.038", 0x000001, 0x040000, CRC(30cbd46b) SHA1(48357c8b704526da7101c06a120b096ec160a7bb) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "014-s1.s1", CRC(99419733) SHA1(b2524af8704941acc72282aa1d62fd4c93e3e822) ) // n014001a.378
+
+ NEO_BIOS_AUDIO_128K( "n014001a.4f8", CRC(2db6862d) SHA1(35cfe136edb09f0b13d312527dd71b4250c04383) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n014001a.1f8", 0x000000, 0x080000, CRC(8db2effe) SHA1(4bdfc36ed3c986ef153e03efbc581536876a3ebb) )
+ ROM_LOAD( "n014001a.1fc", 0x080000, 0x080000, CRC(a49fe238) SHA1(378842d7fa93496ee103be3a0996c6943d285274) )
+ ROM_LOAD( "n014001b.1f8", 0x100000, 0x080000, CRC(2ba17cb7) SHA1(99fa247c003b74b5da56631d11a63045dd5ef0d5) )
+ ROM_LOAD( "n014001b.1fc", 0x180000, 0x080000, CRC(42419a29) SHA1(5185c978edb89a1764ee0b874be980b61280c822) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n014001a.538", 0x000000, 0x40000, CRC(83d59ccf) SHA1(90daecf9594715ac33c4a6294f481914351c702f) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001a.638", 0x000001, 0x40000, CRC(9e115a04) SHA1(16f04c7b3c5f6888591e9c2e385efb984e393571) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001a.53c", 0x100000, 0x40000, CRC(b2f1409d) SHA1(ab3af0fb4f4ca4afba098a6f8e9926b530a279df) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001a.63c", 0x100001, 0x40000, CRC(1bb648c1) SHA1(21afaf1e5ea541d5ac9bb273887baf662c52dfab) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001b.538", 0x200000, 0x40000, CRC(eaa2801a) SHA1(fec321bc839e5eeb4bfc88785276ee7af345f6c0) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001b.638", 0x200001, 0x40000, CRC(32bf4a2d) SHA1(f68419c9414dfbcc67c3a4b8cbef42b0b5fda0bc) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001b.53c", 0x300000, 0x40000, CRC(c718b731) SHA1(37eb725d43ecda891f67b607b5d5f039fc81a8cb) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n014001b.63c", 0x300001, 0x40000, CRC(7d120067) SHA1(d0e4f0f8c1455a51b5d769fa4bcd5f29bd894c13) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( ncombatd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n009001a.038", 0x000001, 0x040000, CRC(89660a31) SHA1(ac37a1060ee82733d8efef8c50f79672fe312097) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "009-s1.s1", CRC(d49afee8) SHA1(77615f12edf08ae8f1353f7a056a8f3a50d3ebdc) ) // n009001a.378
+
+ NEO_BIOS_AUDIO_64K( "n009001a.478", CRC(83821d6e) SHA1(687ad38aa20a113c4f59e7ebc1c911bb8e635ad7) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "009-v11.v11", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) ) // n009001a.178
+ ROM_LOAD( "009-v12.v12", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) ) // n009001a.17c
+ ROM_LOAD( "009-v13.v13", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) ) // n009001b.178
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "009-v21.v21", 0x000000, 0x080000, CRC(365f9011) SHA1(aebd292214ab280b05ee9e759b7e9a681a099c4a) ) // n009001a.278
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n009001a.538", 0x000000, 0x40000, CRC(0147a4b5) SHA1(0a2f60bb7166bd5a2ad669820b0f26d630e94958) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n009001a.638", 0x000001, 0x40000, CRC(e3d367f8) SHA1(8129c6845b8969f26c7cfe8761bb2bb07e5dc549) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n009001a.53c", 0x100000, 0x40000, CRC(4df6123a) SHA1(53970d86a848f498ebd5676c0a9d6fe8e026def8) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n009001a.63c", 0x100001, 0x40000, CRC(1c1f6101) SHA1(9594d199bafa9317bcf8b7447442171ea9b1056d) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n009001b.538", 0x200000, 0x40000, CRC(19441c78) SHA1(6355039f445456ffe32a512b635e365c5519d0c7) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n009001b.638", 0x200001, 0x40000, CRC(f417f9ac) SHA1(438e76b54bb82517a57cb3405a99dda0b3d66dc0) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( ncommandd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n050001a.038", 0x000001, 0x040000, CRC(fdaaca42) SHA1(aa32936bbe8ee53e717a3582847af89d1e160ff4) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n050001a.03c", 0x080001, 0x040000, CRC(b34e91fe) SHA1(3fbf40b9473bc6b0633c62fffdebc43d86785c7d) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "050-s1.s1", CRC(db8f9c8e) SHA1(11cb82cf3c4d0fc2da5df0c26410a64808093610) ) // n050001a.378
+
+ NEO_BIOS_AUDIO_64K( "n050001a.4f8", CRC(26e93026) SHA1(ea38754748ee2a9250864cd1836db463a1b29b1e) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "n050001a.1f8", 0x000000, 0x080000, CRC(222e71c8) SHA1(5a598414b859ae6fbe4fb1b4bf622b1198232864) )
+ ROM_LOAD( "n050001a.1fc", 0x080000, 0x080000, CRC(12acd064) SHA1(c2d7f55df6e49c54c0cab6d5db4cb82f97c6bab9) )
+ ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) ) // n050001b.1f8
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n050001a.538", 0x000000, 0x40000, CRC(73acaa79) SHA1(1394c93132337469e283053f34c83658a9df771e) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001a.638", 0x000001, 0x40000, CRC(7b24359f) SHA1(99c5f59d479afbbc6ab8ef9dc4f90b9b5d42a199) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001a.53c", 0x100000, 0x40000, CRC(ad56623d) SHA1(afeaeed8917f259905a5cb46deb42bf6b0e7fd35) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001a.63c", 0x100001, 0x40000, CRC(0913a784) SHA1(5cee03ff0b41c58ad0b663c4bf100ae4a2152ee1) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001b.538", 0x200000, 0x40000, CRC(c8d763cd) SHA1(1d489c22bedd324d19cb02bed874e986f2627152) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001b.638", 0x200001, 0x40000, CRC(574612ec) SHA1(6c5863f2fc7b63808e8762aa839614919034aaa8) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001b.53c", 0x300000, 0x40000, CRC(63829529) SHA1(132f835fc2a6ca073700b1935ce3ebd32ba37f3e) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n050001b.63c", 0x300001, 0x40000, CRC(990d302a) SHA1(e0d07eb287b2ad143c72eeef39a3455d9d802a4a) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( ridherod )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n006001a.038", 0x000001, 0x040000, CRC(dabfac95) SHA1(234750f08954a94b2846f7ab79b67d6db2b67f6e) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_64K( "n006001a.378", CRC(197d1a28) SHA1(3f6ec453ebdead50c9fabd71071817b699a8a82c) )
+
+ NEO_BIOS_AUDIO_64K( "n006001a.478", CRC(f7196558) SHA1(88c9183db5cb24849a8a548cd48d0732ee1e6219) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "006-v11.v11", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) ) // n006001a.178
+ ROM_LOAD( "006-v12.v12", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) ) // n006001a.17c
+
+ ROM_REGION( 0x200000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "006-v21.v21", 0x000000, 0x080000, CRC(94092bce) SHA1(1a2906271fe6bc396898a756153629a5862930eb) ) // n006001a.278
+ ROM_LOAD( "006-v22.v22", 0x080000, 0x080000, CRC(4e2cd7c3) SHA1(72fb215a4f208a22a764e801186d1643d3d840ca) ) // n006001a.27c
+ ROM_LOAD( "006-v23.v23", 0x100000, 0x080000, CRC(069c71ed) SHA1(f450e9f60cd6ef846dbc77993159ec6157fb64e7) ) // n006001b.278
+ ROM_LOAD( "006-v24.v24", 0x180000, 0x080000, CRC(89fbb825) SHA1(656a97c6a8832dab3a5e1577d9cd257b561cc356) ) // n006001b.27c
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n006001a.538", 0x000000, 0x40000, CRC(24096241) SHA1(60a3dd2400be7208c7a471a813621a778f083240) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n006001a.638", 0x000001, 0x40000, CRC(df6a5b00) SHA1(ffd55c36847b0caa7b94b102ef3409d89e0d66c7) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n006001a.53c", 0x100000, 0x40000, CRC(7026a3a2) SHA1(55f70d2604832125c06742d75ce8ccf5c047d580) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n006001a.63c", 0x100001, 0x40000, CRC(15220d51) SHA1(72ad9e0381f84a33219255d42223bca01a23927c) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ROM_END
+
+ROM_START( roboarmyd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n032001a.038", 0x000001, 0x040000, CRC(99c7b4fc) SHA1(06a5bd4dd8f6db81eb36d0a8f0612caa1c917325) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "032-s1.s1", CRC(ac0daa1b) SHA1(93bae4697dc403fce19422752a514326ccf66a91) ) // n032001a.378
+
+ NEO_BIOS_AUDIO_128K( "n032001a.4f8", CRC(98edc671) SHA1(04ed65ccaa1197fa55fcefe2caed2772e7040bdb) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n032001a.1f8", 0x000000, 0x080000, CRC(daff9896) SHA1(2f8a39b98ff2f4a0c8901b1befcc69e0cc5f5aed) )
+ ROM_LOAD( "n032001a.1fc", 0x080000, 0x080000, CRC(8781b1bc) SHA1(4e3cc22ac0acd4033cd4a327269c68b5f56bbe34) )
+ ROM_LOAD( "n032001b.1f8", 0x100000, 0x080000, CRC(b69c1da5) SHA1(7d5ea49338aeef711fc64755abed51fcdd939d48) )
+ ROM_LOAD( "n032001b.1fc", 0x180000, 0x080000, CRC(2c929c17) SHA1(7e053035573de9f601de80d200d09ed4844506fe) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n032001a.538", 0x000000, 0x40000, CRC(e3afaf17) SHA1(b11a45e77f10764f8c845a258d4add74146f1ffe) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n032001a.638", 0x000001, 0x40000, CRC(3a098b3b) SHA1(93520f664a76de7fac0baeb81daae8943aef0749) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n032001a.53c", 0x100000, 0x40000, CRC(17098f54) SHA1(69c775685f29e6b6af4f2bed1570bdd7a9c20cec) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n032001a.63c", 0x100001, 0x40000, CRC(8e3b2b88) SHA1(3ae3c3a5b64a523b294f1166f5506c850edc7f15) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n032001b.538", 0x200000, 0x40000, CRC(13cbb7c5) SHA1(2f3a92dccd440a5dd9542f423ac74ee3f4255066) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n032001b.638", 0x200001, 0x40000, CRC(b6f5fc62) SHA1(5d520d2cdd2d99e7d1c9f3c20448464318c8a03c) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( sengokud )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n017001a.038", 0x000001, 0x040000, CRC(4483bae1) SHA1(ca5f41be42cd9ce1a2c5007f068514500849a7f4) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n017001a.03c", 0x080001, 0x040000, CRC(d0d55b2a) SHA1(3800154495fbc2f62a539604bf6e5f156316dccd) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "017-s1.s1", CRC(b246204d) SHA1(73dce64c61fb5bb7e836a8e60f081bb77d80d281) ) // n017001a.378
+
+ NEO_BIOS_AUDIO_128K( "n017001a.4f8", CRC(e7bc4a94) SHA1(236d8dddafe5215558f3b0fbb2de3d6c39dd622b) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n017001a.1f8", 0x000000, 0x080000, CRC(205258a7) SHA1(4cd463a78575d7e74c871660588dc0fe17cce07d) )
+ ROM_LOAD( "n017001a.1fc", 0x080000, 0x080000, CRC(6fbe52c8) SHA1(487f07968854ba3238ba2c612c8b20196f94cab2) )
+ ROM_LOAD( "n017001b.1f8", 0x100000, 0x080000, CRC(6421bdf3) SHA1(823ffcbb9fc8b1219857b8cb6e089e2e21144ab3) )
+ ROM_LOAD( "n017001b.1fc", 0x180000, 0x080000, CRC(1f9578fb) SHA1(7ccdb0e960d6e425e773a99208180dcf5ee7856f) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n017001a.538", 0x000000, 0x40000, CRC(e834b925) SHA1(08cfdcf232f3319f62b00cfec5c02b55d7c3405e) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001a.638", 0x000001, 0x40000, CRC(96de5eb9) SHA1(a70dfbffb109ddec5b4a2c6f60756d6717fce03b) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001a.53c", 0x100000, 0x40000, CRC(66be6d46) SHA1(3cd5bf09f994159caff23ba01700e7531ebc5b57) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001a.63c", 0x100001, 0x40000, CRC(25f5fd7b) SHA1(f1b2d58c6b73f3001751bf4c81f3d8664c96091c) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001b.538", 0x200000, 0x40000, CRC(443c552c) SHA1(75203f58935eb6a554542bb6ece457f8a2b51adb) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001b.638", 0x200001, 0x40000, CRC(afbd5b0b) SHA1(639fecb5afd5fb31ba169149d61830330169d7df) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001b.53c", 0x300000, 0x40000, CRC(ecb41adc) SHA1(741ddfdb8cbfacd95c37243dbf098a09ad6d6f0b) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n017001b.63c", 0x300001, 0x40000, CRC(78b25278) SHA1(c1ed3be0e0bc5c6bebaee1bb851cfb9c0b8b243f) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( sengoku2d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n040001a.038", 0x000001, 0x040000, CRC(d1bf3fa5) SHA1(4a6c82d9294980eca6f9311d62f4d683baca173e) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n040001a.03c", 0x080001, 0x040000, CRC(ee9d0bb4) SHA1(27748b3a1b2e59cda29a85a6a467e1a46be3fe60) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "040-s1.s1", CRC(cd9802a3) SHA1(f685d4638f4f68e7e3f101c0c39128454536721b) ) // n040001a.378
+
+ NEO_BIOS_AUDIO_128K( "n040001a.4f8", CRC(9902dfa2) SHA1(af6284c5298328156726b76b968995ad25fdf4de) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "n040001a.1f8", 0x000000, 0x080000, CRC(e6e9d82f) SHA1(a4691ef7719c55fa665dbe8f4420008cf6f23ae2) )
+ ROM_LOAD( "n040001a.1fc", 0x080000, 0x080000, CRC(0504e71e) SHA1(856a200e2e4c39c0985d10b1dcd75e89e69b6f5d) )
+ ROM_LOAD( "n040001b.1f8", 0x100000, 0x080000, CRC(e6c57d21) SHA1(e1f1403c3340be1ab66f027b2678bee3267b9f3c) )
+ ROM_LOAD( "n040001b.1fc", 0x180000, 0x080000, CRC(000d319d) SHA1(88424ceca50e03ed41bad0493461bccfee519ec5) )
+ ROM_LOAD( "n040001c.1f8", 0x200000, 0x080000, CRC(6650bc9a) SHA1(43e9da8176b9c282eaaaf8963fd7c7bd83d61953) )
+ ROM_LOAD( "n040001c.1fc", 0x280000, 0x080000, CRC(c6358d62) SHA1(ca1d72a8a3ea9a2b5a800aeb091098d723eef963) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n040001a.538", 0x000000, 0x40000, CRC(da18aaed) SHA1(926500715ba30a5fad128ba877ca5f59bd98399b) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001a.638", 0x000001, 0x40000, CRC(5b27c829) SHA1(166ff9359b819a068763e868da69cf67976ec8c8) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001a.53c", 0x100000, 0x40000, CRC(19796c4f) SHA1(cf15a65c6bc5243978df6c91b3dce120e4b6db4a) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001a.63c", 0x100001, 0x40000, CRC(e8b46e26) SHA1(5b47903fd7b9783e6e18bbff33e0d7747305bda9) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001b.538", 0x200000, 0x40000, CRC(891b6386) SHA1(9d5e3b2fb6c2247712637f0f7b647042e0485eb6) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001b.638", 0x200001, 0x40000, CRC(93d25955) SHA1(039567a2426794bac9a502d7a46ed13bcc804764) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ // These probably not used. 3xxxxx same roms as 2xxxxx
+ ROM_LOAD32_BYTE( "n040001c.538", 0x400000, 0x40000, CRC(c5eaabe8) SHA1(724f0b47e7e166b65b5e5fee790850aed15d2885) )
+ ROM_CONTINUE( 0x400002, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001c.638", 0x400001, 0x40000, CRC(432bd7d0) SHA1(662179ed7c82f9f825b89650761db093ef9f7467) )
+ ROM_CONTINUE( 0x400003, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001c.53c", 0x500000, 0x40000, CRC(22633905) SHA1(3afcf2bf752afa1593f144a8a9749736a09f6738) )
+ ROM_CONTINUE( 0x500002, 0x40000 )
+ ROM_LOAD32_BYTE( "n040001c.63c", 0x500001, 0x40000, CRC(ba3f54b2) SHA1(796ac0d021552b2ed1b95f11cad1e5e1530abcc7) )
+ ROM_CONTINUE( 0x500003, 0x40000 )
+ROM_END
+
+ROM_START( socbrawld )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n031001a.038", 0x000001, 0x040000, CRC(9fa17911) SHA1(b5a86cc8c8b6e44e392deb6e975ee59076c4392a) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+
+ NEO_SFIX_128K( "031-s1.s1", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) ) // n031001a.378
+
+ NEO_BIOS_AUDIO_128K( "n031001a.4f8", CRC(bc45269b) SHA1(19b82e7174a6fe5caaec35c0603944a090a43b65) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "n031001a.1f8", 0x000000, 0x080000, CRC(670dc165) SHA1(f75d174cfc0d4c16375c58069b923380ae8c6923) )
+ ROM_LOAD( "n031001a.1fc", 0x080000, 0x080000, CRC(abb9537b) SHA1(0f272ef6bfdb1b5b0580fe9d01070e4f60b383ff) )
+ ROM_LOAD( "n031001b.1f8", 0x100000, 0x080000, CRC(600be43e) SHA1(5639e239910f0fb07f26e4f9816efd77b04f6152) )
+ ROM_LOAD( "n031001b.1fc", 0x180000, 0x080000, CRC(88d30359) SHA1(884cabd8a6ccbdd470aab3b7325fdeade01679f0) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n031001a.538", 0x000000, 0x40000, CRC(945bf77c) SHA1(0f971d5c21c051d2298866b69c96715f583fe521) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n031001a.638", 0x000001, 0x40000, CRC(6708fc58) SHA1(230253fbe761cb1164efb9a3c91ac1f24f57295b) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n031001a.53c", 0x100000, 0x40000, CRC(9a210d0d) SHA1(be9b9587c138679e2fb299455d98e2ac6ffad63b) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n031001a.63c", 0x100001, 0x40000, CRC(9a97c680) SHA1(746a5cb5bf713c806cef24d21347f5b96c86ccab) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n031001b.538", 0x200000, 0x40000, CRC(057dbb51) SHA1(cab14d98cbbfc0e5714082fd2db8c73e9c6cd684) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n031001b.638", 0x200001, 0x40000, CRC(434c17c8) SHA1(629dc40ab09ac0a2f55234bc34c4ba63c0b8912f) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( superspyd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n011001a.038", 0x000001, 0x040000, CRC(2e949e32) SHA1(c5a5bb996c5c0224b27813a76223c56860ddb399) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n011001a.03c", 0x080001, 0x040000, CRC(54443d72) SHA1(5cb78d50996c1f9a182e9350d94ba2953463ed4b) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "011-s1.s1", CRC(ec5fdb96) SHA1(8003028025ac7bf531e568add6ba66c02d0b7e84) ) // n011001a.378
+
+ NEO_BIOS_AUDIO_64K( "n011001a.478", CRC(64455806) SHA1(454e95503be8ec5dd2332da1ce08c832a2ab81b8) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "n011001a.178", 0x000000, 0x080000, CRC(b993bc83) SHA1(b7689a57120b9eb3d23b6675f8791c117360a267) )
+ ROM_LOAD( "n011001a.17c", 0x080000, 0x080000, CRC(d7a059b1) SHA1(b13c1c674f66cb6852f0a206554e4616f5fde236) )
+ ROM_LOAD( "011-v12.v12", 0x100000, 0x080000, CRC(9f513d5a) SHA1(37b04962f0b8e2a74abd35c407337a6151dc4e95) ) // n011001b.178
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "011-v21.v21", 0x000000, 0x080000, CRC(426cd040) SHA1(b2b45189837c8287223c2b8bd4df9525b72a3f16) ) // n011001a.278
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n011001a.538", 0x000000, 0x40000, CRC(239f22c4) SHA1(91f985fb9acb36ab5f8877f62c0476a291f3b591) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001a.638", 0x000001, 0x40000, CRC(5f2e5184) SHA1(b2704eff6815da611f0f2ad15f2a85d482a111d3) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001a.53c", 0x100000, 0x40000, CRC(ce80c326) SHA1(3f1f72d923dde87e87bc74080cc1858f42413ab2) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001a.63c", 0x100001, 0x40000, CRC(79b3e0b1) SHA1(1f627f7b8d86292d4f4cdc0f15782d060a91b551) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001b.538", 0x200000, 0x40000, CRC(1edcf268) SHA1(a691f76980e7a0da63948a5d75f32afa6c92c9c3) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001b.638", 0x200001, 0x40000, CRC(b2afe822) SHA1(56d623e4a468ac88c6bbc54ff6f640a7aa5f93f5) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001b.53c", 0x300000, 0x40000, CRC(a41602a0) SHA1(95ee2162de50be72982edcecb437995a43d39a07) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n011001b.63c", 0x300001, 0x40000, CRC(d425f967) SHA1(4085782d440ad265ae45f43c83b1d1fa96d15524) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( tpgolfd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n003001a.038", 0x000001, 0x040000, CRC(542e93d9) SHA1(530d8e344481ae98edd4ca8b86146c44f587228f) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n003001a.03c", 0x080001, 0x040000, CRC(03f1bead) SHA1(b2e40d936636e5d2108fcdf4f440095b3e6da9b5) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "003-s1.s1", CRC(7b3eb9b1) SHA1(39cd8bad9f8bfdeb8ac681b5b79ae5aa81c8dd5f) ) // n003001a.378
+
+ NEO_BIOS_AUDIO_64K( "003cd.m1", CRC(7851d0d9) SHA1(d021cef958cc37ab170b78d7a4b3ae94947e4d13) ) // n003001a.478
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "003-v11.v11", 0x000000, 0x080000, CRC(ff97f1cb) SHA1(defa249d46ae220f7bfa70746f5202bbbcc3e5fe) ) // n003001a.178
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "003-v21.v21", 0x000000, 0x080000, CRC(d34960c6) SHA1(36d5877d5e42aab943f4d693159f4f3ad8b0addc) ) // n003001a.278
+ ROM_LOAD( "003-v22.v22", 0x080000, 0x080000, CRC(9a5f58d4) SHA1(2b580595e1820430a36f06fd3e0e0b8f7d686889) ) // n003001a.27c
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n003001a.538", 0x000000, 0x40000, CRC(67633f80) SHA1(951e11f5f74434a3ce9b11bf75b822b2ffbf2c8f) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001a.638", 0x000001, 0x40000, CRC(ba49936b) SHA1(c5eb478da0dc409bc5853438387a93d9a2ecdd04) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001a.53c", 0x100000, 0x40000, CRC(bed644d0) SHA1(687ebf0928983e6e795619124a90696c3de3d55d) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001a.63c", 0x100001, 0x40000, CRC(7fc96498) SHA1(f97da62165388d321ef6e31b3121b14e17fa9a5f) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001b.538", 0x200000, 0x40000, CRC(977a0ea9) SHA1(a2704d9a4a576058feacd237bb7ba28508df0207) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001b.638", 0x200001, 0x40000, CRC(a56853ec) SHA1(242e65c73b63adc0cd527bcdb03ac82fde5be5ef) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001b.53c", 0x300000, 0x40000, CRC(bc0ebc0e) SHA1(ed6c4b8b126ea66e75666358c02cbfe2e90985fe) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n003001b.63c", 0x300001, 0x40000, CRC(81347ea7) SHA1(8f7b78c91f449ba8e8d449ad436dd5421b6f12a6) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ROM_END
+
+ROM_START( trallyd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n038001a.038", 0x000001, 0x040000, CRC(400bed38) SHA1(9ccc6a505e98e964db9253b50ae549a8d13beffb) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n038001a.03c", 0x080001, 0x040000, CRC(77196e9a) SHA1(31490ce2b97f67e9571ace32d97217232113fb72) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "038-s1.s1", CRC(fff62ae3) SHA1(6510a762ea41557a8938cbfc0557cd5921306061) ) // n038001a.378
+
+ NEO_BIOS_AUDIO_64K( "n038001a.4f8", CRC(308c4a8d) SHA1(6b1e5790442bcf4e3a9fb896bbd293eb33fb4990) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "n038001a.1f8", 0x000000, 0x080000, CRC(1c93fb89) SHA1(a5056e33552e3e6fc3570d41e893a73d78086077) )
+ ROM_LOAD( "n038001a.1fc", 0x080000, 0x080000, CRC(39f18253) SHA1(97622e15ebc180dc24d5b9049d6603cbe039dc81) )
+ ROM_LOAD( "038-v2.v2", 0x100000, 0x080000, CRC(ddd8d1e6) SHA1(65c819fa2392f264f5a1a0a4967c96775732500b) ) // n038001b.1f8
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n038001a.538", 0x000000, 0x40000, CRC(4d002ecb) SHA1(07330d6cbcd126bd67c702cc351ac4f668108e55) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n038001a.638", 0x000001, 0x40000, CRC(6b2f79de) SHA1(7725b9b66738a6f9fe9456cc6aadd4fa98d50bff) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n038001a.53c", 0x100000, 0x40000, CRC(b0be56db) SHA1(f511e1ef9074eec9bff37f22607cd5b491860ee7) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n038001a.63c", 0x100001, 0x40000, CRC(091f38b4) SHA1(0e579029524f004370d1c93d7b14ad47243bee66) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n038001b.538", 0x200000, 0x40000, CRC(2f213750) SHA1(fe5a8cd26b52928afeece5504ecca7ec452b7027) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n038001b.638", 0x200001, 0x40000, CRC(268be38b) SHA1(98f9dfee915ddf8d858297075c7b7d6731527aa3) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ROM_END
+
+ROM_START( wh1d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE ( "n053001a.038", 0x000001, 0x040000, CRC(ab39923d) SHA1(be9fc3c89a452e64d02231d531bb298d201ef002) )
+ ROM_CONTINUE ( 0x000000, 0x040000 )
+ ROM_LOAD16_BYTE ( "n053001a.03c", 0x080001, 0x040000, CRC(5adc98ef) SHA1(0c87725b343f7705f974de71c4bc46afdc75c80b) )
+ ROM_CONTINUE ( 0x080000, 0x040000 )
+
+ NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) ) // n053001a.378
+
+ NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) ) // n053001a.4f8
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "n053001a.1f8", 0x000000, 0x080000, CRC(77994663) SHA1(7adaddf13177b1d18604611dfae7fc43b35a0766) )
+ ROM_LOAD( "n053001a.1fc", 0x080000, 0x080000, CRC(d74ad0da) SHA1(fe71db5808d46f7b56ea7603e500534cd8ab8beb) )
+ ROM_LOAD( "n053001b.1f8", 0x100000, 0x080000, CRC(9d5fe808) SHA1(825eb3727d67e1cf8d8e254576de52952a35c25c) )
+ ROM_LOAD( "n053001b.1fc", 0x180000, 0x080000, CRC(883fb383) SHA1(ceef987b5e8ce9c0201eb0c66628456b99b41fd2) )
+ ROM_LOAD( "n053001c.1f8", 0x200000, 0x080000, CRC(b4ff60d7) SHA1(a1615ec7b309839fd0e690e57d19ab5a857eef1d) )
+ ROM_LOAD( "n053001c.1fc", 0x280000, 0x080000, CRC(b358e4f5) SHA1(6b74306beb801f9e35e1a948b2508a38facb2080) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "n053001a.538", 0x000000, 0x40000, CRC(ad8fcc5d) SHA1(67683d40fa438032a3e9f5997c7ca5b798f50325) )
+ ROM_CONTINUE( 0x000002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001a.638", 0x000001, 0x40000, CRC(3182b4db) SHA1(371f898f5ef28b1efe8129fa6837ee31452e0881) )
+ ROM_CONTINUE( 0x000003, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001a.53c", 0x100000, 0x40000, CRC(0dca726e) SHA1(9c9ea623102818b0c551a998be8b909c16967896) )
+ ROM_CONTINUE( 0x100002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001a.63c", 0x100001, 0x40000, CRC(1cb0a840) SHA1(c52b1dd8b4860d1bcff207f0f7c2278dfa195219) )
+ ROM_CONTINUE( 0x100003, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001b.538", 0x200000, 0x40000, CRC(bb807a43) SHA1(f0583c2bd3ad69f12d3635edece4480414497395) )
+ ROM_CONTINUE( 0x200002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001b.638", 0x200001, 0x40000, CRC(c9f439f8) SHA1(be7ba30e5cfe22341f61ea2571cec551a5793bf3) )
+ ROM_CONTINUE( 0x200003, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001b.53c", 0x300000, 0x40000, CRC(e913f93c) SHA1(af17419e46aa4f4809fc2f620a6e2d109fe17197) )
+ ROM_CONTINUE( 0x300002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001b.63c", 0x300001, 0x40000, CRC(80441c48) SHA1(fdfab6abd4e2212635c47270df27108c1904a15b) )
+ ROM_CONTINUE( 0x300003, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001c.538", 0x400000, 0x40000, CRC(3c359a14) SHA1(3415bc48511d57bb54f926df1e282ee02787776d) )
+ ROM_CONTINUE( 0x400002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001c.638", 0x400001, 0x40000, CRC(7c4b85b4) SHA1(ae7b199f6e59b1b697c36e21ddfc525d6ad77c83) )
+ ROM_CONTINUE( 0x400003, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001c.53c", 0x500000, 0x40000, CRC(b1327d84) SHA1(02f58cb1a18448f1f3c3752bb802b6f737151b9d) )
+ ROM_CONTINUE( 0x500002, 0x40000 )
+ ROM_LOAD32_BYTE( "n053001c.63c", 0x500001, 0x40000, CRC(959f29db) SHA1(f1126098840fb602c8b3349111e5954b73a66934) )
+ ROM_CONTINUE( 0x500003, 0x40000 )
+ROM_END
+
+
+GAME( 1993, 3countbd, 3countb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "3 Count Bout (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bbd, 2020bb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, alpham2d, alpham2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Alpha Mission II (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, androdund, androdun, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Andro Dunos (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, aofd, aof, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, bakatonod, bakatono, neogeo_mj, neogeo, neogeo_state, neogeo, ROT0, "Monolith Corp.", "Bakatonosama Mahjong Manyuki (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bstarsd, bstars, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfd, burningf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Burning Fight (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, crswordd, crsword, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Crossed Swords (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cyberlipd, cyberlip, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Cyber-Lip (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, eightmand, eightman, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "Eight Man (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, fatfury1d, fatfury1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fatal Fury - King of Fighters (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, fbfrenzyd, fbfrenzy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Football Frenzy (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilotsd, gpilots, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Ghost Pilots (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, joyjoyd, joyjoy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Puzzled (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kotmd, kotm, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "King of the Monsters (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, lbowlingd, lbowling, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "League Bowling (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresortd, lresort, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Last Resort (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, maglordd, maglord, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Magician Lord (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, minasand, minasan, neogeo_mj, neogeo, neogeo_state, neogeo, ROT0, "Monolith Corp.", "Minnasanno Okagesamadesu (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutnatd, mutnat, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Mutation Nation (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ncombatd, ncombat, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Combat (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ncommandd, ncommand, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co", "Ninja Commando (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ridherod, ridhero, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Riding Hero (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, roboarmyd, roboarmy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Robo Army (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sengokud, sengoku, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, sengoku2d, sengoku2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku 2 (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, socbrawld, socbrawl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Soccer Brawl (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, superspyd, superspy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Super Spy (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, tpgolfd, tpgolf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Top Player's Golf (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, trallyd, trally, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Thrash Rally (MGD2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1d, wh1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "World Heroes (MGD2)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/midtunit.cpp b/docs/release/src/hbmame/drivers/midtunit.cpp
new file mode 100644
index 00000000000..bea69007a02
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/midtunit.cpp
@@ -0,0 +1,323 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/midtunit.cpp"
+
+ROM_START( mkturbod )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 )
+ ROM_LOAD( "mks-u3.rom", 0x10000, 0x40000, CRC(c615844c) SHA1(5732f9053a5f73b0cc3b0166d7dc4430829d5bc7) )
+
+ ROM_REGION( 0x200000, "adpcm:oki", 0 ) /* ADPCM */
+ ROM_LOAD( "mks-u12.rom", 0x00000, 0x40000, CRC(258bd7f9) SHA1(463890b23f17350fb9b8a85897b0777c45bc2d54) )
+ ROM_RELOAD( 0x40000, 0x40000 )
+ ROM_LOAD( "mks-u13.rom", 0x80000, 0x40000, CRC(7b7ec3b6) SHA1(6eec1b90d4a4855f34a7ebfbf93f3358d5627db4) )
+ ROM_RELOAD( 0xc0000, 0x40000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "kombo-rom-uj-12.bin", 0x00000, 0x80000, CRC(7a441f2d) SHA1(3b731bcbd73721ea0cc20157ec5181d25922523c) )
+ ROM_LOAD16_BYTE( "kombo-hacked-ug-12.bin", 0x00001, 0x80000, CRC(bfab4bb6) SHA1(fc48b4b1fd4f32d9a597e292a1121916c98968d1) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "mkt-ug14.bin", 0x000000, 0x80000, CRC(9e00834e) SHA1(2b97b63f52ba1dba6af6ae56c223519a52b2ab9d) )
+ ROM_LOAD32_BYTE( "mkt-uj14.bin", 0x000001, 0x80000, CRC(f4b0aaa7) SHA1(4cc6ee34c89e3cde325ad24b29511f70ae6a5a72) )
+ ROM_LOAD32_BYTE( "mkt-ug19.bin", 0x000002, 0x80000, CRC(2d8c7ba1) SHA1(f891d6eb618dbf3e77f02e0f93da216e20571905) )
+ ROM_LOAD32_BYTE( "mkt-uj19.bin", 0x000003, 0x80000, CRC(33b9b7a4) SHA1(e8ceca4c049e1f55d480a03ff793b595bd04d344) )
+
+ ROM_LOAD32_BYTE( "mkt-ug16.bin", 0x200000, 0x80000, CRC(52c9d1e5) SHA1(7b1880fca0a11544782b70365c7dd96381ac48e7) )
+ ROM_LOAD32_BYTE( "mkt-uj16.bin", 0x200001, 0x80000, CRC(c94c58cf) SHA1(974d75667eee779497325d5be8df937f15417edf) )
+ ROM_LOAD32_BYTE( "mkt-ug20.bin", 0x200002, 0x80000, CRC(2f7e55d3) SHA1(bda6892ee6fcb46959e4d0892bbe7d9fc6072dd3) )
+ ROM_LOAD32_BYTE( "mkt-uj20.bin", 0x200003, 0x80000, CRC(eae96df0) SHA1(b40532312ba61e4065abfd733dd0c93eecad48e9) )
+
+ ROM_LOAD32_BYTE( "mkt-ug17.bin", 0x400000, 0x80000, CRC(e34fe253) SHA1(6b010bee795c1770297c9557ded1fe83425857f2) )
+ ROM_LOAD32_BYTE( "mkt-uj17.bin", 0x400001, 0x80000, CRC(a56e12f5) SHA1(5db637c4710990cd06bb0069714b19621532e431) )
+ ROM_LOAD32_BYTE( "mkt-ug22.bin", 0x400002, 0x80000, CRC(b537bb4e) SHA1(05a447deee2e89b49bdb3ca2161a021d7ec5f11e) )
+ ROM_LOAD32_BYTE( "mkt-uj22.bin", 0x400003, 0x80000, CRC(5e12523b) SHA1(468f93ef9bb6addb45c1c939d24b6511f255426a) )
+ROM_END
+
+ROM_START( mktturboen )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 )
+ ROM_LOAD( "mks-u3.rom", 0x10000, 0x40000, CRC(c615844c) SHA1(5732f9053a5f73b0cc3b0166d7dc4430829d5bc7) )
+
+ ROM_REGION( 0x100000, "adpcm:oki", 0 )
+ ROM_LOAD( "mks-u12.rom", 0x00000, 0x40000, CRC(258bd7f9) SHA1(463890b23f17350fb9b8a85897b0777c45bc2d54) )
+ ROM_RELOAD( 0x40000, 0x40000 )
+ ROM_LOAD( "mks-u13.rom", 0x80000, 0x40000, CRC(7b7ec3b6) SHA1(6eec1b90d4a4855f34a7ebfbf93f3358d5627db4) )
+ ROM_RELOAD( 0xc0000, 0x40000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 ) /* 34010 code */
+ ROM_LOAD16_BYTE( "kombo-romen-uj-12.bin", 0x00000, 0x80000, CRC(53069455) SHA1(f86da6036844b3e996fa9b3769e4f9979a920b28) )
+ ROM_LOAD16_BYTE( "kombo-rom-ug-12.bin", 0x00001, 0x80000, CRC(45bed5a1) SHA1(dba2c21878925afdcaf61520c18ebefd5e9617db) )
+ ROM_FILL(0xF7914, 1, 0x60)
+ ROM_FILL(0xF7915, 1, 0x09)
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "mkt-ug14.bin", 0x000000, 0x80000, CRC(9e00834e) SHA1(2b97b63f52ba1dba6af6ae56c223519a52b2ab9d) )
+ ROM_LOAD32_BYTE( "mkt-uj14.bin", 0x000001, 0x80000, CRC(f4b0aaa7) SHA1(4cc6ee34c89e3cde325ad24b29511f70ae6a5a72) )
+ ROM_LOAD32_BYTE( "mkt-ug19.bin", 0x000002, 0x80000, CRC(2d8c7ba1) SHA1(f891d6eb618dbf3e77f02e0f93da216e20571905) )
+ ROM_LOAD32_BYTE( "mkt-uj19.bin", 0x000003, 0x80000, CRC(33b9b7a4) SHA1(e8ceca4c049e1f55d480a03ff793b595bd04d344) )
+
+ ROM_LOAD32_BYTE( "mkt-ug16.bin", 0x200000, 0x80000, CRC(52c9d1e5) SHA1(7b1880fca0a11544782b70365c7dd96381ac48e7) )
+ ROM_LOAD32_BYTE( "mkt-uj16.bin", 0x200001, 0x80000, CRC(c94c58cf) SHA1(974d75667eee779497325d5be8df937f15417edf) )
+ ROM_LOAD32_BYTE( "mkt-ug20.bin", 0x200002, 0x80000, CRC(2f7e55d3) SHA1(bda6892ee6fcb46959e4d0892bbe7d9fc6072dd3) )
+ ROM_LOAD32_BYTE( "mkt-uj20.bin", 0x200003, 0x80000, CRC(eae96df0) SHA1(b40532312ba61e4065abfd733dd0c93eecad48e9) )
+
+ ROM_LOAD32_BYTE( "mkt-ug17.bin", 0x400000, 0x80000, CRC(e34fe253) SHA1(6b010bee795c1770297c9557ded1fe83425857f2) )
+ ROM_LOAD32_BYTE( "mkt-uj17.bin", 0x400001, 0x80000, CRC(a56e12f5) SHA1(5db637c4710990cd06bb0069714b19621532e431) )
+ ROM_LOAD32_BYTE( "mkt-ug22.bin", 0x400002, 0x80000, CRC(b537bb4e) SHA1(05a447deee2e89b49bdb3ca2161a021d7ec5f11e) )
+ ROM_LOAD32_BYTE( "mkt-uj22.bin", 0x400003, 0x80000, CRC(5e12523b) SHA1(468f93ef9bb6addb45c1c939d24b6511f255426a) )
+ROM_END
+
+ROM_START( mktturbopi )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 )
+ ROM_LOAD( "mks-u3.rom", 0x10000, 0x40000, CRC(c615844c) SHA1(5732f9053a5f73b0cc3b0166d7dc4430829d5bc7) )
+
+ ROM_REGION( 0x100000, "adpcm:oki", 0 )
+ ROM_LOAD( "mks-u12.rom", 0x00000, 0x40000, CRC(258bd7f9) SHA1(463890b23f17350fb9b8a85897b0777c45bc2d54) )
+ ROM_RELOAD( 0x40000, 0x40000 )
+ ROM_LOAD( "mks-u13.rom", 0x80000, 0x40000, CRC(7b7ec3b6) SHA1(6eec1b90d4a4855f34a7ebfbf93f3358d5627db4) )
+ ROM_RELOAD( 0xc0000, 0x40000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "kombo-rompi-uj-12.bin", 0x00000, 0x80000, CRC(f4a9a289) SHA1(a94b0a5796457c6f2789e9fd5a1cb80fd6dcf22b) )
+ ROM_LOAD16_BYTE( "kombo-rom-ug-12.bin", 0x00001, 0x80000, CRC(45bed5a1) SHA1(dba2c21878925afdcaf61520c18ebefd5e9617db) )
+ ROM_FILL(0xF7914, 1, 0x60)
+ ROM_FILL(0xF7915, 1, 0x09)
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "mkt-ug14.bin", 0x000000, 0x80000, CRC(9e00834e) SHA1(2b97b63f52ba1dba6af6ae56c223519a52b2ab9d) )
+ ROM_LOAD32_BYTE( "mkt-uj14.bin", 0x000001, 0x80000, CRC(f4b0aaa7) SHA1(4cc6ee34c89e3cde325ad24b29511f70ae6a5a72) )
+ ROM_LOAD32_BYTE( "mkt-ug19.bin", 0x000002, 0x80000, CRC(2d8c7ba1) SHA1(f891d6eb618dbf3e77f02e0f93da216e20571905) )
+ ROM_LOAD32_BYTE( "mkt-uj19.bin", 0x000003, 0x80000, CRC(33b9b7a4) SHA1(e8ceca4c049e1f55d480a03ff793b595bd04d344) )
+
+ ROM_LOAD32_BYTE( "mkt-ug16.bin", 0x200000, 0x80000, CRC(52c9d1e5) SHA1(7b1880fca0a11544782b70365c7dd96381ac48e7) )
+ ROM_LOAD32_BYTE( "mkt-uj16.bin", 0x200001, 0x80000, CRC(c94c58cf) SHA1(974d75667eee779497325d5be8df937f15417edf) )
+ ROM_LOAD32_BYTE( "mkt-ug20.bin", 0x200002, 0x80000, CRC(2f7e55d3) SHA1(bda6892ee6fcb46959e4d0892bbe7d9fc6072dd3) )
+ ROM_LOAD32_BYTE( "mkt-uj20.bin", 0x200003, 0x80000, CRC(eae96df0) SHA1(b40532312ba61e4065abfd733dd0c93eecad48e9) )
+
+ ROM_LOAD32_BYTE( "mkt-ug17.bin", 0x400000, 0x80000, CRC(e34fe253) SHA1(6b010bee795c1770297c9557ded1fe83425857f2) )
+ ROM_LOAD32_BYTE( "mkt-uj17.bin", 0x400001, 0x80000, CRC(a56e12f5) SHA1(5db637c4710990cd06bb0069714b19621532e431) )
+ ROM_LOAD32_BYTE( "mkt-ug22.bin", 0x400002, 0x80000, CRC(b537bb4e) SHA1(05a447deee2e89b49bdb3ca2161a021d7ec5f11e) )
+ ROM_LOAD32_BYTE( "mkt-uj22.bin", 0x400003, 0x80000, CRC(5e12523b) SHA1(468f93ef9bb6addb45c1c939d24b6511f255426a) )
+ROM_END
+
+ROM_START( mk2r33 )
+ ROM_REGION16_LE( 0xc00000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "su2.l1", 0x000000, 0x80000, CRC(5f23d71d) SHA1(54c2afef243759e0f3dbe2907edbc4302f5c8bad) )
+ ROM_RELOAD( 0x100000, 0x80000 )
+ ROM_LOAD16_BYTE( "su3.l1", 0x200000, 0x80000, CRC(d6d92bf9) SHA1(397351c6b707f2595e36360471015f9fa494e894) )
+ ROM_RELOAD( 0x300000, 0x80000 )
+ ROM_LOAD16_BYTE( "su4.l1", 0x400000, 0x80000, CRC(eebc8e0f) SHA1(705ab63ff7672a4857d546afda6dca4973cce1ad) )
+ ROM_RELOAD( 0x500000, 0x80000 )
+ ROM_LOAD16_BYTE( "su5.l1", 0x600000, 0x80000, CRC(2b0b7961) SHA1(1cdc64aab74d14afbd8c3531e3d0bd49271a281f) )
+ ROM_RELOAD( 0x700000, 0x80000 )
+ ROM_LOAD16_BYTE( "su6.l1", 0x800000, 0x80000, CRC(f694b27f) SHA1(d43e38a124665f49ebb4ffc5a55e8f19a1a64686) )
+ ROM_RELOAD( 0x900000, 0x80000 )
+ ROM_LOAD16_BYTE( "su7.l1", 0xa00000, 0x80000, CRC(20387e0a) SHA1(505d05173b2a1f1ee3ebc2898ccd3a95c98dd04a) )
+ ROM_RELOAD( 0xb00000, 0x80000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uj12.l33", 0x00000, 0x80000, CRC(84cb0bf4) SHA1(098e0b5be75c60733f3a63893431506cb99f0981) )
+ ROM_LOAD16_BYTE( "ug12.l33", 0x00001, 0x80000, CRC(2021ec4f) SHA1(7f357abd7ae66eda8eae2b318426da668cfe1deb) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "ug14-vid", 0x000000, 0x100000, CRC(01e73af6) SHA1(6598cfd704cc92a7f358a0e1f1c973ab79dcc493) )
+ ROM_LOAD32_BYTE( "uj14-vid", 0x000001, 0x100000, CRC(d4985cbb) SHA1(367865da7efae38d83de3c0868d02a705177ae63) )
+ ROM_LOAD32_BYTE( "ug19-vid", 0x000002, 0x100000, CRC(fec137be) SHA1(f11ecb8a7993f5c4f4449564b4911f69bd6e9bf8) )
+ ROM_LOAD32_BYTE( "uj19-vid", 0x000003, 0x100000, CRC(2d763156) SHA1(06536006da49ab5fb6b75b25f801b83fad000ff5) )
+
+ ROM_LOAD32_BYTE( "ug16-vid", 0x400000, 0x100000, CRC(8ba6ae18) SHA1(465fe907de4a1e502180c4e41642998dd3abc8e6) )
+ ROM_LOAD32_BYTE( "uj16-vid", 0x400001, 0x100000, CRC(39d885b4) SHA1(2251826d247c3c6df421124718401fb35a672f83) )
+ ROM_LOAD32_BYTE( "ug20-vid", 0x400002, 0x100000, CRC(809118c1) SHA1(86153e648834c749e34573151cd4fee403a81962) )
+ ROM_LOAD32_BYTE( "uj20-vid", 0x400003, 0x100000, CRC(b96824f0) SHA1(d42b122f9a57da330192abc7e5f97abc4065d718) )
+
+ ROM_LOAD32_BYTE( "ug17-vid", 0x800000, 0x100000, CRC(937d8620) SHA1(8b9f80a460b124a747a6d1495b53f01f580e28f1) )
+ ROM_LOAD32_BYTE( "uj17-vid", 0x800001, 0x100000, CRC(218de160) SHA1(87aea173720d2a33d8183903f4fe8ba1d47e3348) )
+ ROM_LOAD32_BYTE( "ug22-vid", 0x800002, 0x100000, CRC(154d53b1) SHA1(58ff0aa59101f40a9a3b5fbae1c904d0b0b31612) )
+ ROM_LOAD32_BYTE( "uj22-vid", 0x800003, 0x100000, CRC(8891d785) SHA1(fd460df1ef8f4306ea42f7dc41488a80fd2c8f53) )
+ROM_END
+
+ROM_START( umk2te50 )
+ ROM_REGION16_LE( 0xc00000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "su2.l1", 0x000000, 0x80000, CRC(5f23d71d) SHA1(54c2afef243759e0f3dbe2907edbc4302f5c8bad) )
+ ROM_RELOAD( 0x100000, 0x80000 )
+ ROM_LOAD16_BYTE( "su3.l1", 0x200000, 0x80000, CRC(d6d92bf9) SHA1(397351c6b707f2595e36360471015f9fa494e894) )
+ ROM_RELOAD( 0x300000, 0x80000 )
+ ROM_LOAD16_BYTE( "su4.l1", 0x400000, 0x80000, CRC(eebc8e0f) SHA1(705ab63ff7672a4857d546afda6dca4973cce1ad) )
+ ROM_RELOAD( 0x500000, 0x80000 )
+ ROM_LOAD16_BYTE( "su5.l1", 0x600000, 0x80000, CRC(2b0b7961) SHA1(1cdc64aab74d14afbd8c3531e3d0bd49271a281f) )
+ ROM_RELOAD( 0x700000, 0x80000 )
+ ROM_LOAD16_BYTE( "su6.l1", 0x800000, 0x80000, CRC(f694b27f) SHA1(d43e38a124665f49ebb4ffc5a55e8f19a1a64686) )
+ ROM_RELOAD( 0x900000, 0x80000 )
+ ROM_LOAD16_BYTE( "su7.l1", 0xa00000, 0x80000, CRC(20387e0a) SHA1(505d05173b2a1f1ee3ebc2898ccd3a95c98dd04a) )
+ ROM_RELOAD( 0xb00000, 0x80000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uj12.l50", 0x00000, 0x80000, CRC(62ef20f8) SHA1(0e0392bb4b59fb4e01369f533fdcfa6ee5fb6939) )
+ ROM_LOAD16_BYTE( "ug12.l50", 0x00001, 0x80000, CRC(8c66e999) SHA1(ddb9f39149a7ded105f2e993a4c39c473067adf6) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "ug14-vid", 0x000000, 0x100000, CRC(01e73af6) SHA1(6598cfd704cc92a7f358a0e1f1c973ab79dcc493) )
+ ROM_LOAD32_BYTE( "uj14-vid", 0x000001, 0x100000, CRC(d4985cbb) SHA1(367865da7efae38d83de3c0868d02a705177ae63) )
+ ROM_LOAD32_BYTE( "ug19-vid", 0x000002, 0x100000, CRC(fec137be) SHA1(f11ecb8a7993f5c4f4449564b4911f69bd6e9bf8) )
+ ROM_LOAD32_BYTE( "uj19-vid", 0x000003, 0x100000, CRC(2d763156) SHA1(06536006da49ab5fb6b75b25f801b83fad000ff5) )
+
+ ROM_LOAD32_BYTE( "ug16-vid", 0x400000, 0x100000, CRC(8ba6ae18) SHA1(465fe907de4a1e502180c4e41642998dd3abc8e6) )
+ ROM_LOAD32_BYTE( "uj16-vid", 0x400001, 0x100000, CRC(39d885b4) SHA1(2251826d247c3c6df421124718401fb35a672f83) )
+ ROM_LOAD32_BYTE( "ug20-vid", 0x400002, 0x100000, CRC(809118c1) SHA1(86153e648834c749e34573151cd4fee403a81962) )
+ ROM_LOAD32_BYTE( "uj20-vid", 0x400003, 0x100000, CRC(b96824f0) SHA1(d42b122f9a57da330192abc7e5f97abc4065d718) )
+
+ ROM_LOAD32_BYTE( "ug17-vid", 0x800000, 0x100000, CRC(937d8620) SHA1(8b9f80a460b124a747a6d1495b53f01f580e28f1) )
+ ROM_LOAD32_BYTE( "uj17-vid", 0x800001, 0x100000, CRC(218de160) SHA1(87aea173720d2a33d8183903f4fe8ba1d47e3348) )
+ ROM_LOAD32_BYTE( "ug22-vid", 0x800002, 0x100000, CRC(154d53b1) SHA1(58ff0aa59101f40a9a3b5fbae1c904d0b0b31612) )
+ ROM_LOAD32_BYTE( "uj22-vid", 0x800003, 0x100000, CRC(8891d785) SHA1(fd460df1ef8f4306ea42f7dc41488a80fd2c8f53) )
+ROM_END
+
+ROM_START( umk2te51 )
+ ROM_REGION16_LE( 0xc00000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "su2.l1", 0x000000, 0x80000, CRC(5f23d71d) SHA1(54c2afef243759e0f3dbe2907edbc4302f5c8bad) )
+ ROM_RELOAD( 0x100000, 0x80000 )
+ ROM_LOAD16_BYTE( "su3.l1", 0x200000, 0x80000, CRC(d6d92bf9) SHA1(397351c6b707f2595e36360471015f9fa494e894) )
+ ROM_RELOAD( 0x300000, 0x80000 )
+ ROM_LOAD16_BYTE( "su4.l1", 0x400000, 0x80000, CRC(eebc8e0f) SHA1(705ab63ff7672a4857d546afda6dca4973cce1ad) )
+ ROM_RELOAD( 0x500000, 0x80000 )
+ ROM_LOAD16_BYTE( "su5.l1", 0x600000, 0x80000, CRC(2b0b7961) SHA1(1cdc64aab74d14afbd8c3531e3d0bd49271a281f) )
+ ROM_RELOAD( 0x700000, 0x80000 )
+ ROM_LOAD16_BYTE( "su6.l1", 0x800000, 0x80000, CRC(f694b27f) SHA1(d43e38a124665f49ebb4ffc5a55e8f19a1a64686) )
+ ROM_RELOAD( 0x900000, 0x80000 )
+ ROM_LOAD16_BYTE( "su7.l1", 0xa00000, 0x80000, CRC(20387e0a) SHA1(505d05173b2a1f1ee3ebc2898ccd3a95c98dd04a) )
+ ROM_RELOAD( 0xb00000, 0x80000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uj12.l51", 0x00000, 0x80000, CRC(fbf97b24) SHA1(902614ce3a4527d1a78e148a876cd321ea221e8f) )
+ ROM_LOAD16_BYTE( "ug12.l51", 0x00001, 0x80000, CRC(8d67c168) SHA1(699bf8e6924429221ace092fb66ae4c85eede8d2) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "ug14-vid", 0x000000, 0x100000, CRC(01e73af6) SHA1(6598cfd704cc92a7f358a0e1f1c973ab79dcc493) )
+ ROM_LOAD32_BYTE( "uj14-vid", 0x000001, 0x100000, CRC(d4985cbb) SHA1(367865da7efae38d83de3c0868d02a705177ae63) )
+ ROM_LOAD32_BYTE( "ug19-vid", 0x000002, 0x100000, CRC(fec137be) SHA1(f11ecb8a7993f5c4f4449564b4911f69bd6e9bf8) )
+ ROM_LOAD32_BYTE( "uj19-vid", 0x000003, 0x100000, CRC(2d763156) SHA1(06536006da49ab5fb6b75b25f801b83fad000ff5) )
+
+ ROM_LOAD32_BYTE( "ug16-vid", 0x400000, 0x100000, CRC(8ba6ae18) SHA1(465fe907de4a1e502180c4e41642998dd3abc8e6) )
+ ROM_LOAD32_BYTE( "uj16-vid", 0x400001, 0x100000, CRC(39d885b4) SHA1(2251826d247c3c6df421124718401fb35a672f83) )
+ ROM_LOAD32_BYTE( "ug20-vid", 0x400002, 0x100000, CRC(809118c1) SHA1(86153e648834c749e34573151cd4fee403a81962) )
+ ROM_LOAD32_BYTE( "uj20-vid", 0x400003, 0x100000, CRC(b96824f0) SHA1(d42b122f9a57da330192abc7e5f97abc4065d718) )
+
+ ROM_LOAD32_BYTE( "ug17-vid", 0x800000, 0x100000, CRC(937d8620) SHA1(8b9f80a460b124a747a6d1495b53f01f580e28f1) )
+ ROM_LOAD32_BYTE( "uj17-vid", 0x800001, 0x100000, CRC(218de160) SHA1(87aea173720d2a33d8183903f4fe8ba1d47e3348) )
+ ROM_LOAD32_BYTE( "ug22-vid", 0x800002, 0x100000, CRC(154d53b1) SHA1(58ff0aa59101f40a9a3b5fbae1c904d0b0b31612) )
+ ROM_LOAD32_BYTE( "uj22-vid", 0x800003, 0x100000, CRC(8891d785) SHA1(fd460df1ef8f4306ea42f7dc41488a80fd2c8f53) )
+ROM_END
+
+ROM_START( umk2te52 )
+ ROM_REGION16_LE( 0xc00000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "su2.l1", 0x000000, 0x80000, CRC(5f23d71d) SHA1(54c2afef243759e0f3dbe2907edbc4302f5c8bad) )
+ ROM_RELOAD( 0x100000, 0x80000 )
+ ROM_LOAD16_BYTE( "su3.l1", 0x200000, 0x80000, CRC(d6d92bf9) SHA1(397351c6b707f2595e36360471015f9fa494e894) )
+ ROM_RELOAD( 0x300000, 0x80000 )
+ ROM_LOAD16_BYTE( "su4.l1", 0x400000, 0x80000, CRC(eebc8e0f) SHA1(705ab63ff7672a4857d546afda6dca4973cce1ad) )
+ ROM_RELOAD( 0x500000, 0x80000 )
+ ROM_LOAD16_BYTE( "su5.l1", 0x600000, 0x80000, CRC(2b0b7961) SHA1(1cdc64aab74d14afbd8c3531e3d0bd49271a281f) )
+ ROM_RELOAD( 0x700000, 0x80000 )
+ ROM_LOAD16_BYTE( "su6.l1", 0x800000, 0x80000, CRC(f694b27f) SHA1(d43e38a124665f49ebb4ffc5a55e8f19a1a64686) )
+ ROM_RELOAD( 0x900000, 0x80000 )
+ ROM_LOAD16_BYTE( "su7.l1", 0xa00000, 0x80000, CRC(20387e0a) SHA1(505d05173b2a1f1ee3ebc2898ccd3a95c98dd04a) )
+ ROM_RELOAD( 0xb00000, 0x80000 )
+ /* su8 and su9 are unpopulated */
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uj12.l52", 0x00000, 0x80000, CRC(a027088c) SHA1(10aced067d8e3a5fe905c07e2ee27904e3dd8855) )
+ ROM_LOAD16_BYTE( "ug12.l52", 0x00001, 0x80000, CRC(474cf238) SHA1(fee96dc9390ade206be3768812040f3bb4ea1e2c) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "ug14-vid", 0x000000, 0x100000, CRC(01e73af6) SHA1(6598cfd704cc92a7f358a0e1f1c973ab79dcc493) )
+ ROM_LOAD32_BYTE( "uj14-vid", 0x000001, 0x100000, CRC(d4985cbb) SHA1(367865da7efae38d83de3c0868d02a705177ae63) )
+ ROM_LOAD32_BYTE( "ug19-vid", 0x000002, 0x100000, CRC(fec137be) SHA1(f11ecb8a7993f5c4f4449564b4911f69bd6e9bf8) )
+ ROM_LOAD32_BYTE( "uj19-vid", 0x000003, 0x100000, CRC(2d763156) SHA1(06536006da49ab5fb6b75b25f801b83fad000ff5) )
+
+ ROM_LOAD32_BYTE( "ug16-vid", 0x400000, 0x100000, CRC(8ba6ae18) SHA1(465fe907de4a1e502180c4e41642998dd3abc8e6) )
+ ROM_LOAD32_BYTE( "uj16-vid", 0x400001, 0x100000, CRC(39d885b4) SHA1(2251826d247c3c6df421124718401fb35a672f83) )
+ ROM_LOAD32_BYTE( "ug20-vid", 0x400002, 0x100000, CRC(809118c1) SHA1(86153e648834c749e34573151cd4fee403a81962) )
+ ROM_LOAD32_BYTE( "uj20-vid", 0x400003, 0x100000, CRC(b96824f0) SHA1(d42b122f9a57da330192abc7e5f97abc4065d718) )
+
+ ROM_LOAD32_BYTE( "ug17-vid", 0x800000, 0x100000, CRC(937d8620) SHA1(8b9f80a460b124a747a6d1495b53f01f580e28f1) )
+ ROM_LOAD32_BYTE( "uj17-vid", 0x800001, 0x100000, CRC(218de160) SHA1(87aea173720d2a33d8183903f4fe8ba1d47e3348) )
+ ROM_LOAD32_BYTE( "ug22-vid", 0x800002, 0x100000, CRC(154d53b1) SHA1(58ff0aa59101f40a9a3b5fbae1c904d0b0b31612) )
+ ROM_LOAD32_BYTE( "uj22-vid", 0x800003, 0x100000, CRC(8891d785) SHA1(fd460df1ef8f4306ea42f7dc41488a80fd2c8f53) )
+ROM_END
+
+ROM_START( mkfr )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 )
+ ROM_LOAD( "mks-u3.rom", 0x10000, 0x40000, CRC(c615844c) SHA1(5732f9053a5f73b0cc3b0166d7dc4430829d5bc7) )
+
+ ROM_REGION( 0x100000, "adpcm:oki", 0 )
+ ROM_LOAD( "mks-u12.rom", 0x00000, 0x40000, CRC(258bd7f9) SHA1(463890b23f17350fb9b8a85897b0777c45bc2d54) )
+ ROM_RELOAD( 0x40000, 0x40000 )
+ ROM_LOAD( "mks-u13.rom", 0x80000, 0x40000, CRC(7b7ec3b6) SHA1(6eec1b90d4a4855f34a7ebfbf93f3358d5627db4) )
+ ROM_RELOAD( 0xc0000, 0x40000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "mkt-uj12f.bin", 0x00000, 0x80000, CRC(4192e38f) SHA1(abe2e6f643a36df48a23aaa2f9027c78c6078d2d) )
+ ROM_LOAD16_BYTE( "mkt-ug12f.bin", 0x00001, 0x80000, CRC(8799979d) SHA1(4f094540e68c03fbd03cd8731797c55e455f61e6) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "mkt-ug14.bin", 0x000000, 0x80000, CRC(9e00834e) SHA1(2b97b63f52ba1dba6af6ae56c223519a52b2ab9d) )
+ ROM_LOAD32_BYTE( "mkt-uj14.bin", 0x000001, 0x80000, CRC(f4b0aaa7) SHA1(4cc6ee34c89e3cde325ad24b29511f70ae6a5a72) )
+ ROM_LOAD32_BYTE( "mkt-ug19.bin", 0x000002, 0x80000, CRC(2d8c7ba1) SHA1(f891d6eb618dbf3e77f02e0f93da216e20571905) )
+ ROM_LOAD32_BYTE( "mkt-uj19.bin", 0x000003, 0x80000, CRC(33b9b7a4) SHA1(e8ceca4c049e1f55d480a03ff793b595bd04d344) )
+
+ ROM_LOAD32_BYTE( "mkt-ug16.bin", 0x200000, 0x80000, CRC(52c9d1e5) SHA1(7b1880fca0a11544782b70365c7dd96381ac48e7) )
+ ROM_LOAD32_BYTE( "mkt-uj16.bin", 0x200001, 0x80000, CRC(c94c58cf) SHA1(974d75667eee779497325d5be8df937f15417edf) )
+ ROM_LOAD32_BYTE( "mkt-ug20.bin", 0x200002, 0x80000, CRC(2f7e55d3) SHA1(bda6892ee6fcb46959e4d0892bbe7d9fc6072dd3) )
+ ROM_LOAD32_BYTE( "mkt-uj20.bin", 0x200003, 0x80000, CRC(eae96df0) SHA1(b40532312ba61e4065abfd733dd0c93eecad48e9) )
+
+ ROM_LOAD32_BYTE( "mkt-ug17.bin", 0x400000, 0x80000, CRC(e34fe253) SHA1(6b010bee795c1770297c9557ded1fe83425857f2) )
+ ROM_LOAD32_BYTE( "mkt-uj17.bin", 0x400001, 0x80000, CRC(a56e12f5) SHA1(5db637c4710990cd06bb0069714b19621532e431) )
+ ROM_LOAD32_BYTE( "mkt-ug22.bin", 0x400002, 0x80000, CRC(b537bb4e) SHA1(05a447deee2e89b49bdb3ca2161a021d7ec5f11e) )
+ ROM_LOAD32_BYTE( "mkt-uj22.bin", 0x400003, 0x80000, CRC(5e12523b) SHA1(468f93ef9bb6addb45c1c939d24b6511f255426a) )
+ROM_END
+
+ROM_START( mk2fr )
+ ROM_REGION16_LE( 0xc00000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "su2.l1", 0x000000, 0x80000, CRC(5f23d71d) SHA1(54c2afef243759e0f3dbe2907edbc4302f5c8bad) )
+ ROM_RELOAD( 0x100000, 0x80000 )
+ ROM_LOAD16_BYTE( "su3.l1", 0x200000, 0x80000, CRC(d6d92bf9) SHA1(397351c6b707f2595e36360471015f9fa494e894) )
+ ROM_RELOAD( 0x300000, 0x80000 )
+ ROM_LOAD16_BYTE( "su4.l1", 0x400000, 0x80000, CRC(eebc8e0f) SHA1(705ab63ff7672a4857d546afda6dca4973cce1ad) )
+ ROM_RELOAD( 0x500000, 0x80000 )
+ ROM_LOAD16_BYTE( "su5.l1", 0x600000, 0x80000, CRC(2b0b7961) SHA1(1cdc64aab74d14afbd8c3531e3d0bd49271a281f) )
+ ROM_RELOAD( 0x700000, 0x80000 )
+ ROM_LOAD16_BYTE( "su6.l1", 0x800000, 0x80000, CRC(f694b27f) SHA1(d43e38a124665f49ebb4ffc5a55e8f19a1a64686) )
+ ROM_RELOAD( 0x900000, 0x80000 )
+ ROM_LOAD16_BYTE( "su7.l1", 0xa00000, 0x80000, CRC(20387e0a) SHA1(505d05173b2a1f1ee3ebc2898ccd3a95c98dd04a) )
+ ROM_RELOAD( 0xb00000, 0x80000 )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uj12fr.l31", 0x00000, 0x80000, CRC(0f801e9b) SHA1(b0dc620e1be6b89ff0a1dcd64eec678e81a2ea69) )
+ ROM_LOAD16_BYTE( "ug12fr.l31", 0x00001, 0x80000, CRC(d896c9b6) SHA1(61e26c6acaf810e0788aef31000056e524b87b06) )
+
+ ROM_REGION( 0xc00000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "ug14-vid", 0x000000, 0x100000, CRC(01e73af6) SHA1(6598cfd704cc92a7f358a0e1f1c973ab79dcc493) )
+ ROM_LOAD32_BYTE( "uj14-vid", 0x000001, 0x100000, CRC(d4985cbb) SHA1(367865da7efae38d83de3c0868d02a705177ae63) )
+ ROM_LOAD32_BYTE( "ug19-vid", 0x000002, 0x100000, CRC(fec137be) SHA1(f11ecb8a7993f5c4f4449564b4911f69bd6e9bf8) )
+ ROM_LOAD32_BYTE( "uj19-vid", 0x000003, 0x100000, CRC(2d763156) SHA1(06536006da49ab5fb6b75b25f801b83fad000ff5) )
+
+ ROM_LOAD32_BYTE( "ug16-vid", 0x400000, 0x100000, CRC(8ba6ae18) SHA1(465fe907de4a1e502180c4e41642998dd3abc8e6) )
+ ROM_LOAD32_BYTE( "uj16-vid", 0x400001, 0x100000, CRC(39d885b4) SHA1(2251826d247c3c6df421124718401fb35a672f83) )
+ ROM_LOAD32_BYTE( "ug20-vid", 0x400002, 0x100000, CRC(809118c1) SHA1(86153e648834c749e34573151cd4fee403a81962) )
+ ROM_LOAD32_BYTE( "uj20-vid", 0x400003, 0x100000, CRC(b96824f0) SHA1(d42b122f9a57da330192abc7e5f97abc4065d718) )
+
+ ROM_LOAD32_BYTE( "ug17-vid", 0x800000, 0x100000, CRC(937d8620) SHA1(8b9f80a460b124a747a6d1495b53f01f580e28f1) )
+ ROM_LOAD32_BYTE( "uj17-vid", 0x800001, 0x100000, CRC(218de160) SHA1(87aea173720d2a33d8183903f4fe8ba1d47e3348) )
+ ROM_LOAD32_BYTE( "ug22-vid", 0x800002, 0x100000, CRC(154d53b1) SHA1(58ff0aa59101f40a9a3b5fbae1c904d0b0b31612) )
+ ROM_LOAD32_BYTE( "uj22-vid", 0x800003, 0x100000, CRC(8891d785) SHA1(fd460df1ef8f4306ea42f7dc41488a80fd2c8f53) )
+ROM_END
+
+
+GAME( 1992, mkturbod, mk, tunit_adpcm, mk, midtunit_state, mktunit, ROT0, "hack", "Mortal Kombat (Turbo Ninja T-Unit 03/19/93, hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, mktturboen, mk, tunit_adpcm, mk, midtunit_state, mktunit, ROT0, "Zenomorp", "Mortal Kombat (Turbo Endurance)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, mktturbopi, mk, tunit_adpcm, mk, midtunit_state, mktunit, ROT0, "Zenomorp", "Mortal Kombat (Projectile Insanity)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mk2r33, mk2, tunit_dcs, mk2, midtunit_state, mk2, ROT0, "Midway", "Mortal Kombat II (rev L3.3 (prototype))", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, umk2te50, mk2, tunit_dcs, mk2, midtunit_state, mk2, ROT0, "SK", "Ultimate Mortal Kombat II Tournament Edition r5.0.050)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, umk2te51, mk2, tunit_dcs, mk2, midtunit_state, mk2, ROT0, "SK", "Ultimate Mortal Kombat II Tournament Edition r5.0.051)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, umk2te52, mk2, tunit_dcs, mk2, midtunit_state, mk2, ROT0, "SK", "Ultimate Mortal Kombat II Tournament Edition r5.0.052)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, mkfr, mk, tunit_adpcm, mk, midtunit_state, mktunit, ROT0, "Arkatrad", "Mortal Kombat (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, mk2fr, mk2, tunit_dcs, mk2, midtunit_state, mk2, ROT0, "Arkatrad", "Mortal Kombat II (French)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/midwunit.cpp b/docs/release/src/hbmame/drivers/midwunit.cpp
new file mode 100644
index 00000000000..b93d735534b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/midwunit.cpp
@@ -0,0 +1,173 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/midwunit.cpp"
+
+ROM_START( umk3j )
+ ROM_REGION16_LE( 0x800000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "l2.0_mortal_kombat_3_u2_ultimate.u2", 0x000000, 0x100000, CRC(3838cfe5) SHA1(e3d2901f3bae1362742fc6ee0aa31c9f63b4dfa3) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u3_music_spch.u3", 0x200000, 0x100000, CRC(856fe411) SHA1(6165ebecfce7500e948d84492ffa19eed7f47091) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u4_music_spch.u4", 0x400000, 0x100000, CRC(428a406f) SHA1(e70ec83cd054de0da1e178720ed0035b8887f797) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u5_music_spch.u5", 0x600000, 0x100000, CRC(3b98a09f) SHA1(edf1d02a56dcf3349e6b4bb4097acfe7592305f4) )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "umk3j-u54.bin", 0x00000, 0x80000, CRC(7bd7de7b) SHA1(b1787f732c15ff217bdc9ed5f83dbf2589e32cfb) )
+ ROM_LOAD16_BYTE( "umk3j-u63.bin", 0x00001, 0x80000, CRC(03ba8907) SHA1(8cf79dc054fe40bc28dbd74a6198468c9ae8c948) )
+
+ ROM_REGION( 0x1009, "serial_security:pic", 0 ) /* security PIC (provides game ID code and serial number) */
+ ROM_LOAD( "463_MK3_Ultimate.u64", 0x0000, 0x1009, CRC(4f425218) SHA1(7f26045ed2c9ca94fadcb673ce10f28208aa720e) )
+
+ ROM_REGION( 0x2000000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u133_game_rom.u133", 0x0000000, 0x100000, CRC(79b94667) SHA1(31bba640c351fdccc6685cadb74dd79a3f910ce8) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u132_game_rom.u132", 0x0000001, 0x100000, CRC(13e95228) SHA1(405b05f5a5a55667c2be17d4b399129bdacefd90) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u131_game_rom.u131", 0x0000002, 0x100000, CRC(41001e30) SHA1(2cec91116771951c0380cec5debf4cbb40c14c61) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u130_game_rom.u130", 0x0000003, 0x100000, CRC(49379dd7) SHA1(e6dfab4e23d9cc38ae56c1bbf10ccd160e8fad5e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u129_game_rom.u129", 0x0400000, 0x100000, CRC(a8b41803) SHA1(9697e35e8bb51d6d36b1d7ae47377b446e57682f) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u128_game_rom.u128", 0x0400001, 0x100000, CRC(b410d72f) SHA1(ac5c1c6f744186540f4ab100d9bd4ce6007e600b) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u127_game_rom.u127", 0x0400002, 0x100000, CRC(bd985be7) SHA1(f5183abea2e5eb2c2c8cefa72c9ed321679f5128) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u126_game_rom.u126", 0x0400003, 0x100000, CRC(e7c32cf4) SHA1(94ea7b2eed7dae66f5dd676c20d6b360140e3e0e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u125_game_rom.u125", 0x0800000, 0x100000, CRC(9a52227e) SHA1(0474a14fa8dbfea0b0889c1d1756b86391683558) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u124_game_rom.u124", 0x0800001, 0x100000, CRC(5c750ebc) SHA1(45d68af1a56994376e086d840502453c8d6be700) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u123_game_rom.u123", 0x0800002, 0x100000, CRC(f0ab88a8) SHA1(cdc9dc12e162255845c6627b1e35182b7e8502d0) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u122_game_rom.u122", 0x0800003, 0x100000, CRC(9b87cdac) SHA1(a5f8db559293978f23e6f105543d8b2e170a2e0d) )
+
+ ROM_LOAD32_BYTE( "umk3j-u121.bin", 0x0c00000, 0x100000, CRC(d17b30f3) SHA1(d9f65a475bea10aca7aae29dd32fc4b3fdd43aca) )
+ ROM_LOAD32_BYTE( "umk3j-u120.bin", 0x0c00001, 0x100000, CRC(c80dbff9) SHA1(e8f903f276487b8aec899d5726b04bef38baf521) )
+ ROM_LOAD32_BYTE( "umk3j-u119.bin", 0x0c00002, 0x100000, CRC(518f8083) SHA1(7e2f8e8a40224db00a658dc121df686492bd5d81) )
+ ROM_LOAD32_BYTE( "umk3j-u118.bin", 0x0c00003, 0x100000, CRC(bbc57990) SHA1(fcf1a90a607d2a054aa633578671c688a8df580c) )
+
+ ROM_LOAD32_BYTE( "umk-u113.bin", 0x1400000, 0x100000, CRC(99d74a1e) SHA1(ed3068afa98287ea290d1f537f5009d3b6d683da) )
+ ROM_LOAD32_BYTE( "umk-u112.bin", 0x1400001, 0x100000, CRC(b5a46488) SHA1(dbf22e55d200eb9ff550f48b223cf0c6114a9357) )
+ ROM_LOAD32_BYTE( "umk-u111.bin", 0x1400002, 0x100000, CRC(a87523c8) SHA1(e70b7599fef82001f762fc2c48f7b85474431ccc) )
+ ROM_LOAD32_BYTE( "umk-u110.bin", 0x1400003, 0x100000, CRC(0038f205) SHA1(059c1c71a2d92ee6db36c09831d213a48a7e81d0) )
+ROM_END
+
+ROM_START( umk3z )
+ ROM_REGION16_LE( 0x800000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "l2.0_mortal_kombat_3_u2_ultimate.u2", 0x000000, 0x100000, CRC(3838cfe5) SHA1(e3d2901f3bae1362742fc6ee0aa31c9f63b4dfa3) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u3_music_spch.u3", 0x200000, 0x100000, CRC(856fe411) SHA1(6165ebecfce7500e948d84492ffa19eed7f47091) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u4_music_spch.u4", 0x400000, 0x100000, CRC(428a406f) SHA1(e70ec83cd054de0da1e178720ed0035b8887f797) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u5_music_spch.u5", 0x600000, 0x100000, CRC(3b98a09f) SHA1(edf1d02a56dcf3349e6b4bb4097acfe7592305f4) )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "umk3z-u54.bin", 0x00000, 0x80000, CRC(7ea6c327) SHA1(266f67302c8a98e96d077ba42bba47dbe5127882) )
+ ROM_LOAD16_BYTE( "umk3z-u63.bin", 0x00001, 0x80000, CRC(51f66368) SHA1(a1e0142e39e123df0e4de525f62328d3c9049244) )
+
+ ROM_REGION( 0x1009, "serial_security:pic", 0 ) /* security PIC (provides game ID code and serial number) */
+ ROM_LOAD( "463_MK3_Ultimate.u64", 0x0000, 0x1009, CRC(4f425218) SHA1(7f26045ed2c9ca94fadcb673ce10f28208aa720e) )
+
+ ROM_REGION( 0x2000000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u133_game_rom.u133", 0x0000000, 0x100000, CRC(79b94667) SHA1(31bba640c351fdccc6685cadb74dd79a3f910ce8) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u132_game_rom.u132", 0x0000001, 0x100000, CRC(13e95228) SHA1(405b05f5a5a55667c2be17d4b399129bdacefd90) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u131_game_rom.u131", 0x0000002, 0x100000, CRC(41001e30) SHA1(2cec91116771951c0380cec5debf4cbb40c14c61) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u130_game_rom.u130", 0x0000003, 0x100000, CRC(49379dd7) SHA1(e6dfab4e23d9cc38ae56c1bbf10ccd160e8fad5e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u129_game_rom.u129", 0x0400000, 0x100000, CRC(a8b41803) SHA1(9697e35e8bb51d6d36b1d7ae47377b446e57682f) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u128_game_rom.u128", 0x0400001, 0x100000, CRC(b410d72f) SHA1(ac5c1c6f744186540f4ab100d9bd4ce6007e600b) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u127_game_rom.u127", 0x0400002, 0x100000, CRC(bd985be7) SHA1(f5183abea2e5eb2c2c8cefa72c9ed321679f5128) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u126_game_rom.u126", 0x0400003, 0x100000, CRC(e7c32cf4) SHA1(94ea7b2eed7dae66f5dd676c20d6b360140e3e0e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u125_game_rom.u125", 0x0800000, 0x100000, CRC(9a52227e) SHA1(0474a14fa8dbfea0b0889c1d1756b86391683558) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u124_game_rom.u124", 0x0800001, 0x100000, CRC(5c750ebc) SHA1(45d68af1a56994376e086d840502453c8d6be700) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u123_game_rom.u123", 0x0800002, 0x100000, CRC(f0ab88a8) SHA1(cdc9dc12e162255845c6627b1e35182b7e8502d0) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u122_game_rom.u122", 0x0800003, 0x100000, CRC(9b87cdac) SHA1(a5f8db559293978f23e6f105543d8b2e170a2e0d) )
+
+ ROM_LOAD32_BYTE( "umk-u121.bin", 0x0c00000, 0x100000, CRC(cc4b95db) SHA1(3d53180eec649e9616c4b87db55573f12d9bfee3) )
+ ROM_LOAD32_BYTE( "umk-u120.bin", 0x0c00001, 0x100000, CRC(1c8144cd) SHA1(77cdc1eaf630ccb7233f5532f8b08191d00f0816) )
+ ROM_LOAD32_BYTE( "umk-u119.bin", 0x0c00002, 0x100000, CRC(5f10c543) SHA1(24dc83b7aa531ebd399258ffa7b2e028f1c4a28e) )
+ ROM_LOAD32_BYTE( "umk-u118.bin", 0x0c00003, 0x100000, CRC(de0c4488) SHA1(227cab34798c440b2a45223567113df5f17d913f) )
+
+ ROM_LOAD32_BYTE( "umk-u113.bin", 0x1400000, 0x100000, CRC(99d74a1e) SHA1(ed3068afa98287ea290d1f537f5009d3b6d683da) )
+ ROM_LOAD32_BYTE( "umk-u112.bin", 0x1400001, 0x100000, CRC(b5a46488) SHA1(dbf22e55d200eb9ff550f48b223cf0c6114a9357) )
+ ROM_LOAD32_BYTE( "umk-u111.bin", 0x1400002, 0x100000, CRC(a87523c8) SHA1(e70b7599fef82001f762fc2c48f7b85474431ccc) )
+ ROM_LOAD32_BYTE( "umk-u110.bin", 0x1400003, 0x100000, CRC(0038f205) SHA1(059c1c71a2d92ee6db36c09831d213a48a7e81d0) )
+ROM_END
+
+ROM_START( umk3te )
+ ROM_REGION16_LE( 0x800000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "l2.0_mortal_kombat_3_u2_ultimate.u2", 0x000000, 0x100000, CRC(3838cfe5) SHA1(e3d2901f3bae1362742fc6ee0aa31c9f63b4dfa3) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u3_music_spch.u3", 0x200000, 0x100000, CRC(856fe411) SHA1(6165ebecfce7500e948d84492ffa19eed7f47091) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u4_music_spch.u4", 0x400000, 0x100000, CRC(428a406f) SHA1(e70ec83cd054de0da1e178720ed0035b8887f797) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u5_music_spch.u5", 0x600000, 0x100000, CRC(3b98a09f) SHA1(edf1d02a56dcf3349e6b4bb4097acfe7592305f4) )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "um312te.u54", 0x00000, 0x80000, CRC(6ff000b4) SHA1(4953bf5275e3bbabbd20c3114e8a0be5d10a0176) )
+ ROM_LOAD16_BYTE( "um312te.u63", 0x00001, 0x80000, CRC(524b4033) SHA1(c3c16dbc83dfa49a80aa440ec6a4f121371bccd6) )
+
+ ROM_REGION( 0x1009, "serial_security:pic", 0 ) /* security PIC (provides game ID code and serial number) */
+ ROM_LOAD( "463_MK3_Ultimate.u64", 0x0000, 0x1009, CRC(4f425218) SHA1(7f26045ed2c9ca94fadcb673ce10f28208aa720e) )
+
+ ROM_REGION( 0x2000000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u133_game_rom.u133", 0x0000000, 0x100000, CRC(79b94667) SHA1(31bba640c351fdccc6685cadb74dd79a3f910ce8) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u132_game_rom.u132", 0x0000001, 0x100000, CRC(13e95228) SHA1(405b05f5a5a55667c2be17d4b399129bdacefd90) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u131_game_rom.u131", 0x0000002, 0x100000, CRC(41001e30) SHA1(2cec91116771951c0380cec5debf4cbb40c14c61) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u130_game_rom.u130", 0x0000003, 0x100000, CRC(49379dd7) SHA1(e6dfab4e23d9cc38ae56c1bbf10ccd160e8fad5e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u129_game_rom.u129", 0x0400000, 0x100000, CRC(a8b41803) SHA1(9697e35e8bb51d6d36b1d7ae47377b446e57682f) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u128_game_rom.u128", 0x0400001, 0x100000, CRC(b410d72f) SHA1(ac5c1c6f744186540f4ab100d9bd4ce6007e600b) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u127_game_rom.u127", 0x0400002, 0x100000, CRC(bd985be7) SHA1(f5183abea2e5eb2c2c8cefa72c9ed321679f5128) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u126_game_rom.u126", 0x0400003, 0x100000, CRC(e7c32cf4) SHA1(94ea7b2eed7dae66f5dd676c20d6b360140e3e0e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u125_game_rom.u125", 0x0800000, 0x100000, CRC(9a52227e) SHA1(0474a14fa8dbfea0b0889c1d1756b86391683558) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u124_game_rom.u124", 0x0800001, 0x100000, CRC(5c750ebc) SHA1(45d68af1a56994376e086d840502453c8d6be700) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u123_game_rom.u123", 0x0800002, 0x100000, CRC(f0ab88a8) SHA1(cdc9dc12e162255845c6627b1e35182b7e8502d0) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u122_game_rom.u122", 0x0800003, 0x100000, CRC(9b87cdac) SHA1(a5f8db559293978f23e6f105543d8b2e170a2e0d) )
+
+ ROM_LOAD32_BYTE( "umk-u121.bin", 0x0c00000, 0x100000, CRC(cc4b95db) SHA1(3d53180eec649e9616c4b87db55573f12d9bfee3) )
+ ROM_LOAD32_BYTE( "umk-u120.bin", 0x0c00001, 0x100000, CRC(1c8144cd) SHA1(77cdc1eaf630ccb7233f5532f8b08191d00f0816) )
+ ROM_LOAD32_BYTE( "umk-u119.bin", 0x0c00002, 0x100000, CRC(5f10c543) SHA1(24dc83b7aa531ebd399258ffa7b2e028f1c4a28e) )
+ ROM_LOAD32_BYTE( "umk-u118.bin", 0x0c00003, 0x100000, CRC(de0c4488) SHA1(227cab34798c440b2a45223567113df5f17d913f) )
+
+ ROM_LOAD32_BYTE( "umk-u113.bin", 0x1400000, 0x100000, CRC(99d74a1e) SHA1(ed3068afa98287ea290d1f537f5009d3b6d683da) )
+ ROM_LOAD32_BYTE( "umk-u112.bin", 0x1400001, 0x100000, CRC(b5a46488) SHA1(dbf22e55d200eb9ff550f48b223cf0c6114a9357) )
+ ROM_LOAD32_BYTE( "umk-u111.bin", 0x1400002, 0x100000, CRC(a87523c8) SHA1(e70b7599fef82001f762fc2c48f7b85474431ccc) )
+ ROM_LOAD32_BYTE( "umk-u110.bin", 0x1400003, 0x100000, CRC(0038f205) SHA1(059c1c71a2d92ee6db36c09831d213a48a7e81d0) )
+ROM_END
+
+ROM_START( umk3te2 )
+ ROM_REGION16_LE( 0x800000, "dcs", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "l2.0_mortal_kombat_3_u2_ultimate.u2", 0x000000, 0x100000, CRC(3838cfe5) SHA1(e3d2901f3bae1362742fc6ee0aa31c9f63b4dfa3) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u3_music_spch.u3", 0x200000, 0x100000, CRC(856fe411) SHA1(6165ebecfce7500e948d84492ffa19eed7f47091) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u4_music_spch.u4", 0x400000, 0x100000, CRC(428a406f) SHA1(e70ec83cd054de0da1e178720ed0035b8887f797) )
+ ROM_LOAD16_BYTE( "l1_mortal_kombat_3_u5_music_spch.u5", 0x600000, 0x100000, CRC(3b98a09f) SHA1(edf1d02a56dcf3349e6b4bb4097acfe7592305f4) )
+
+ ROM_REGION16_LE( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "um312te2.u54", 0x00000, 0x80000, CRC(5b6264e5) SHA1(b2c06a729d4cf70e8f5a2721b66e3e2da4a4ca7c) )
+ ROM_LOAD16_BYTE( "um312te2.u63", 0x00001, 0x80000, CRC(1ba096e0) SHA1(75aa60c75856e98f99d90c1978429fab1509eae8) )
+
+ ROM_REGION( 0x1009, "serial_security:pic", 0 ) /* security PIC (provides game ID code and serial number) */
+ ROM_LOAD( "463_MK3_Ultimate.u64", 0x0000, 0x1009, CRC(4f425218) SHA1(7f26045ed2c9ca94fadcb673ce10f28208aa720e) )
+
+ ROM_REGION( 0x2000000, "gfxrom", 0 )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u133_game_rom.u133", 0x0000000, 0x100000, CRC(79b94667) SHA1(31bba640c351fdccc6685cadb74dd79a3f910ce8) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u132_game_rom.u132", 0x0000001, 0x100000, CRC(13e95228) SHA1(405b05f5a5a55667c2be17d4b399129bdacefd90) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u131_game_rom.u131", 0x0000002, 0x100000, CRC(41001e30) SHA1(2cec91116771951c0380cec5debf4cbb40c14c61) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u130_game_rom.u130", 0x0000003, 0x100000, CRC(49379dd7) SHA1(e6dfab4e23d9cc38ae56c1bbf10ccd160e8fad5e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u129_game_rom.u129", 0x0400000, 0x100000, CRC(a8b41803) SHA1(9697e35e8bb51d6d36b1d7ae47377b446e57682f) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u128_game_rom.u128", 0x0400001, 0x100000, CRC(b410d72f) SHA1(ac5c1c6f744186540f4ab100d9bd4ce6007e600b) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u127_game_rom.u127", 0x0400002, 0x100000, CRC(bd985be7) SHA1(f5183abea2e5eb2c2c8cefa72c9ed321679f5128) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u126_game_rom.u126", 0x0400003, 0x100000, CRC(e7c32cf4) SHA1(94ea7b2eed7dae66f5dd676c20d6b360140e3e0e) )
+
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u125_game_rom.u125", 0x0800000, 0x100000, CRC(9a52227e) SHA1(0474a14fa8dbfea0b0889c1d1756b86391683558) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u124_game_rom.u124", 0x0800001, 0x100000, CRC(5c750ebc) SHA1(45d68af1a56994376e086d840502453c8d6be700) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u123_game_rom.u123", 0x0800002, 0x100000, CRC(f0ab88a8) SHA1(cdc9dc12e162255845c6627b1e35182b7e8502d0) )
+ ROM_LOAD32_BYTE( "l1_mortal_kombat_3_u122_game_rom.u122", 0x0800003, 0x100000, CRC(9b87cdac) SHA1(a5f8db559293978f23e6f105543d8b2e170a2e0d) )
+
+ ROM_LOAD32_BYTE( "umk-u121.bin", 0x0c00000, 0x100000, CRC(cc4b95db) SHA1(3d53180eec649e9616c4b87db55573f12d9bfee3) )
+ ROM_LOAD32_BYTE( "umk-u120.bin", 0x0c00001, 0x100000, CRC(1c8144cd) SHA1(77cdc1eaf630ccb7233f5532f8b08191d00f0816) )
+ ROM_LOAD32_BYTE( "umk-u119.bin", 0x0c00002, 0x100000, CRC(5f10c543) SHA1(24dc83b7aa531ebd399258ffa7b2e028f1c4a28e) )
+ ROM_LOAD32_BYTE( "umk-u118.bin", 0x0c00003, 0x100000, CRC(de0c4488) SHA1(227cab34798c440b2a45223567113df5f17d913f) )
+
+ ROM_LOAD32_BYTE( "umk-u113.bin", 0x1400000, 0x100000, CRC(99d74a1e) SHA1(ed3068afa98287ea290d1f537f5009d3b6d683da) )
+ ROM_LOAD32_BYTE( "umk-u112.bin", 0x1400001, 0x100000, CRC(b5a46488) SHA1(dbf22e55d200eb9ff550f48b223cf0c6114a9357) )
+ ROM_LOAD32_BYTE( "umk-u111.bin", 0x1400002, 0x100000, CRC(a87523c8) SHA1(e70b7599fef82001f762fc2c48f7b85474431ccc) )
+ ROM_LOAD32_BYTE( "umk-u110.bin", 0x1400003, 0x100000, CRC(0038f205) SHA1(059c1c71a2d92ee6db36c09831d213a48a7e81d0) )
+ROM_END
+
+
+GAME( 2010, umk3j, umk3, wunit_picemu, mk3, midwunit_state, umk3, ROT0, "Midway", "Ultimate Mortal Kombat 3 (rev 1.2) Juggernauts Hack v1.0", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, umk3z, umk3, wunit_picemu, mk3, midwunit_state, umk3, ROT0, "Midway", "Ultimate Mortal Kombat 3 (rev 1.2) Zeus hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, umk3te, umk3, wunit_picemu, mk3, midwunit_state, umk3, ROT0, "Midway", "Ultimate Mortal Kombat 3 Tournament Edition (2.0.032b8)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, umk3te2, umk3, wunit_picemu, mk3, midwunit_state, umk3, ROT0, "Midway", "Ultimate Mortal Kombat 3 Tournament Edition (2.0.035)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/midyunit.cpp b/docs/release/src/hbmame/drivers/midyunit.cpp
new file mode 100644
index 00000000000..24e9735d9a7
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/midyunit.cpp
@@ -0,0 +1,36 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/midyunit.cpp"
+
+ROM_START( mkla4d )
+ ROM_REGION( 0x50000, "adpcm:cpu", 0 )
+ ROM_LOAD ( "mks-u3.rom", 0x10000, 0x40000, CRC(c615844c) SHA1(5732f9053a5f73b0cc3b0166d7dc4430829d5bc7) )
+
+ ROM_REGION( 0x200000, "adpcm:oki", 0 )
+ ROM_LOAD ( "mks-u12.rom", 0x00000, 0x40000, CRC(258bd7f9) SHA1(463890b23f17350fb9b8a85897b0777c45bc2d54) )
+ ROM_RELOAD( 0x40000, 0x40000 )
+ ROM_LOAD ( "mks-u13.rom", 0x80000, 0x40000, CRC(7b7ec3b6) SHA1(6eec1b90d4a4855f34a7ebfbf93f3358d5627db4) )
+ ROM_RELOAD( 0xc0000, 0x40000 )
+
+ ROM_REGION16_LE( 0x100000, "user1", 0 )
+ ROM_LOAD16_BYTE( "mkg-hacked-u105.la4", 0x00000, 0x80000, CRC(80d5618c) SHA1(9bdfddbc70b61c94c1871abac1de153b8b728761) )
+ ROM_LOAD16_BYTE( "mkg-hacked-u89.la4", 0x00001, 0x80000, CRC(0478ae60) SHA1(186243cacc4d83070ef53b47f19668ca4c08474a) )
+
+ ROM_REGION( 0x800000, "gfx1", 0 )
+ ROM_LOAD ( "mkg-u111.rom", 0x000000, 0x80000, CRC(d17096c4) SHA1(01ef390a372c9d94adf138f9543ebb88b89f4c38) )
+ ROM_LOAD ( "mkg-u112.rom", 0x080000, 0x80000, CRC(993bc2e4) SHA1(7791edbec2b4b8971a3e790346dd7564ecf16d5c) )
+ ROM_LOAD ( "mkg-u113.rom", 0x100000, 0x80000, CRC(6fb91ede) SHA1(a3735b49f93b08c44fbc97e2b5aad394628fbe90) )
+ ROM_LOAD ( "mkg-u114.rom", 0x180000, 0x80000, CRC(ed1ff88a) SHA1(6b090b658ee6148af953bd0c9216f37162b6460f) )
+
+ ROM_LOAD ( "mkg-u95.rom", 0x200000, 0x80000, CRC(a002a155) SHA1(3cf7909e92bcd428063596fc5b9953e0000d6eca) )
+ ROM_LOAD ( "mkg-u96.rom", 0x280000, 0x80000, CRC(dcee8492) SHA1(a912b74d3b26ebd1b1613cc631080f83ececeaf8) )
+ ROM_LOAD ( "mkg-u97.rom", 0x300000, 0x80000, CRC(de88caef) SHA1(a7927b504dc56ca5c9048373977fe5743b0a3f0b) )
+ ROM_LOAD ( "mkg-u98.rom", 0x380000, 0x80000, CRC(37eb01b4) SHA1(06092460bd137e08d0f8df8560942ed877d40e09) )
+
+ ROM_LOAD ( "mkg-u106.rom", 0x400000, 0x80000, CRC(45acaf21) SHA1(5edd36c55f4e5d3c74fb85171728ec0a58284b12) )
+ ROM_LOAD ( "mkg-u107.rom", 0x480000, 0x80000, CRC(2a6c10a0) SHA1(cc90923c44f2961b945a0fd0f85ecc2ba04af2cb) )
+ ROM_LOAD ( "mkg-u108.rom", 0x500000, 0x80000, CRC(23308979) SHA1(0b36788624a1cf0d3f4c895be5ba967b8dfcf85e) )
+ ROM_LOAD ( "mkg-u109.rom", 0x580000, 0x80000, CRC(cafc47bb) SHA1(8610af6e52f7089ff4acd850c53ab8b4119e4445) )
+ROM_END
+
+GAME( 1992, mkla4d, mk, yunit_adpcm_6bit_fast, mkla4, midyunit_state, mkyunit, ROT0, "Midway", "Mortal Kombat (rev 4.0 09/28/92)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mitchell.cpp b/docs/release/src/hbmame/drivers/mitchell.cpp
new file mode 100644
index 00000000000..bd488127a70
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mitchell.cpp
@@ -0,0 +1,24 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mitchell.cpp"
+
+ROM_START( mitcdemo )
+ ROM_REGION( 0xa0000, "maincpu", 0 )
+ ROM_LOAD( "md_04.bin", 0x50000, 0x08000, CRC(f0ed5c22) SHA1(b8e26a09fca279d627bd700c31a82ffc18483192) )
+ ROM_CONTINUE( 0x00000, 0x08000 )
+ ROM_LOAD_OPTIONAL( "pang_02.bin", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) )
+ ROM_LOAD_OPTIONAL( "pang_03.bin", 0x10000, 0x20000, CRC(0c8477ae) SHA1(a31a8c00407dfc3017d56e29fac6114b73248030) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "md_09.bin", 0x00000, 0x20000, CRC(f76acc9a) SHA1(31004f441fc56efb692e2e52c4ecc44748185d0a) )
+ ROM_LOAD( "md_11.bin", 0x80000, 0x20000, CRC(48f92e6f) SHA1(6c51cccf5bcf7b3bfe6579a95516a850e99c9b76) )
+
+ ROM_REGION( 0x040000, "gfx2", 0 )
+ ROM_LOAD( "md10.bin", 0x00000, 0x20000, CRC(709a27b6) SHA1(b7e8d124ee207e75c420762d336a97f4cf4054f6) )
+ ROM_LOAD( "md9.bin", 0x20000, 0x20000, CRC(47de1ec7) SHA1(45bff13a6cdf58bc425fdc3cd2ae22d40d69a2c2) )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD_OPTIONAL( "bb1.bin", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) )
+ROM_END
+
+GAME( 1989, mitcdemo, 0, pang, pang, mitchell_state, pangb, ROT0, "Charles Doty", "Demo - Mitchell", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mmagic.cpp b/docs/release/src/hbmame/drivers/mmagic.cpp
new file mode 100644
index 00000000000..d19e0fe957b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mmagic.cpp
@@ -0,0 +1,346 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ "Monkey Magic" ?? 1979 Nintendo
+
+
+ Dumping info provided by Andrew Welburn:
+
+ TZF-MP - Main Board
+ TZF-SOU - Sound Board
+
+ # device Label PCB filename
+ -------------------------------------------
+ 4 i2708 1AI* 2A 1AI.2A
+ 5 i2708 2AI* 3A 2AI.3A
+ 6 i2708 3AI* 4A 3AI.4A
+ 7 i2708 4AI* 4/5A 4AI.45A
+ 8 i2708 5AI* 5A 5AI.5A
+
+ 22 H7641 6H 6HI 6H.6HI
+ 23 ?? ** 7H 7HI 7H.7HI
+ 24 H7641 6J 6JK 6J.6JK
+ 25 H7641 6H*** 7JK
+
+ * Note that there is a Kana character 'I' in romaji on the end of the labels, not an I.
+
+ ** Note this device was plastic and not ceramic, but it was dumped as a Harris 7641 as
+ it is logical that its compatible with the 7641. I can see the other devices all have
+ similar/same Harris markings in the bottom left of the IC obscured by the labels.
+
+ *** Note that the label for the 7643 PROM at IC25 was almost scraped off, but by its position
+ in the sequence, it has to be 6H. I removed a little more of the label in order to
+ work out what the inking was on it below, turned out to be 'D-2'. the prom at IC22 also
+ looks like it has an inked number under the paper label, just peeking through on one side.
+ Without removing the paper labels entirely, these markings wont be fully known, but were
+ covered for some reason.
+
+ SPECS:
+
+ - CPU is an NEC D8085A
+ - Crystal is marked 6.1440, but this looks to have been replaced.
+ - X1/X2 clock frequency measured at pins 1 + 2 is 6.14330 mhz
+ - Test point with stable readings is :
+ - TP4 (HS) = 15.9982 khz (Horizontal sync)
+ - TP5 (VS) = 60.5992 hz (Vertical Sync)
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/i8085/i8085.h"
+#include "sound/samples.h"
+#include "screen.h"
+#include "speaker.h"
+
+
+//**************************************************************************
+// CONSTANTS / MACROS
+//**************************************************************************
+
+#define LOG_AUDIO 1
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class mmagic_state : public driver_device
+{
+public:
+ mmagic_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_samples(*this, "samples")
+ , m_vram(*this, "vram")
+ , m_tiles(*this, "tiles")
+ , m_colors(*this, "colors")
+ , m_ball_x(0x00)
+ , m_ball_y(0x00)
+ , m_color(0x00)
+ , m_audio_sw(0x80)
+ {}
+
+ DECLARE_READ8_MEMBER(vblank_r);
+ DECLARE_WRITE8_MEMBER(ball_x_w);
+ DECLARE_WRITE8_MEMBER(ball_y_w);
+ DECLARE_WRITE8_MEMBER(color_w);
+ DECLARE_WRITE8_MEMBER(audio_w);
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+private:
+ virtual void machine_start();
+ required_device<cpu_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_device<samples_device> m_samples;
+ required_shared_ptr<uint8_t> m_vram;
+ required_region_ptr<uint8_t> m_tiles;
+ required_region_ptr<uint8_t> m_colors;
+ uint8_t m_ball_x;
+ uint8_t m_ball_y;
+ uint8_t m_color;
+ uint8_t m_audio_sw;
+};
+
+
+//**************************************************************************
+// ADDRESS MAPS
+//**************************************************************************
+
+static ADDRESS_MAP_START( mmagic_mem, AS_PROGRAM, 8, mmagic_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x17ff) AM_ROM
+ AM_RANGE(0x2000, 0x21ff) AM_RAM
+ AM_RANGE(0x3000, 0x31ff) AM_RAM AM_SHARE("vram")
+ AM_RANGE(0x8002, 0x8002) AM_WRITE(ball_x_w)
+ AM_RANGE(0x8003, 0x8003) AM_WRITE(ball_y_w)
+ AM_RANGE(0x8004, 0x8004) AM_READ(vblank_r)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mmagic_io, AS_IO, 8, mmagic_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x80, 0x80) AM_WRITE(color_w)
+ AM_RANGE(0x81, 0x81) AM_WRITE(audio_w)
+ AM_RANGE(0x85, 0x85) AM_READ_PORT("paddle")
+ AM_RANGE(0x86, 0x86) AM_READ_PORT("buttons")
+ AM_RANGE(0x87, 0x87) AM_READ_PORT("dipswitch")
+ADDRESS_MAP_END
+
+
+//**************************************************************************
+// INPUTS
+//**************************************************************************
+
+static INPUT_PORTS_START( mmagic )
+ PORT_START("dipswitch")
+ PORT_SERVICE_DIPLOC(0x01, IP_ACTIVE_LOW, "DSW:1")
+ PORT_DIPNAME(0x06, 0x06, DEF_STR(Bonus_Life)) PORT_DIPLOCATION ("DSW:2,3")
+ PORT_DIPSETTING(0x00, "30000")
+ PORT_DIPSETTING(0x02, "20000")
+ PORT_DIPSETTING(0x04, "15000")
+ PORT_DIPSETTING(0x06, "10000")
+ PORT_DIPNAME(0x18, 0x18, DEF_STR(Lives)) PORT_DIPLOCATION ("DSW:4,5")
+ PORT_DIPSETTING(0x00, "6")
+ PORT_DIPSETTING(0x08, "5")
+ PORT_DIPSETTING(0x10, "4")
+ PORT_DIPSETTING(0x18, "3")
+ PORT_DIPUNUSED_DIPLOC(0x20, IP_ACTIVE_LOW, "DSW:6" )
+ PORT_DIPUNUSED_DIPLOC(0x40, IP_ACTIVE_LOW, "DSW:7" )
+ PORT_DIPUNUSED_DIPLOC(0x80, IP_ACTIVE_LOW, "DSW:8" )
+
+ PORT_START("buttons")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_START1)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_START2)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_COIN1)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Debug?") // checked once at startup
+
+ PORT_START("paddle")
+ PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_CENTERDELTA(0)
+INPUT_PORTS_END
+
+
+//**************************************************************************
+// VIDEO EMULATION
+//**************************************************************************
+
+READ8_MEMBER( mmagic_state::vblank_r )
+{
+ uint8_t data = 0;
+
+ // bit 0 = vblank
+ data |= m_screen->vblank() << 0;
+
+ // other bits unused
+ data |= 0xfe;
+
+ return data;
+}
+
+WRITE8_MEMBER( mmagic_state::ball_x_w )
+{
+ m_ball_x = data;
+}
+
+WRITE8_MEMBER( mmagic_state::ball_y_w )
+{
+ m_ball_y = data;
+}
+
+WRITE8_MEMBER( mmagic_state::color_w )
+{
+ // bit 3 is always set
+ // bit 6 switches the palette (actually there is only a single differently colored tile)
+ // other bits are always 0
+ m_color = data;
+}
+
+uint32_t mmagic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ // draw playfield
+ for (int y = 0; y < 192 / 12; y++)
+ {
+ for (int x = 0; x < 256 / 8; x++)
+ {
+ uint8_t code = m_vram[(y * 32) + x] & 0x7f;
+
+ // normal palette 00..7f, alternate palette 80..ff
+ uint8_t color = m_colors[code | (BIT(m_color, 6) << 7)];
+
+ // draw one tile
+ for (int tx = 0; tx < 12; tx++)
+ {
+ uint8_t gfx = m_tiles[(code << 4) + tx];
+
+ bitmap.pix32(y * 12 + tx, x * 8 + 0) = BIT(gfx, 4) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 1) = BIT(gfx, 5) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 2) = BIT(gfx, 6) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 3) = BIT(gfx, 7) ? rgb_t::black() : m_palette->pen_color(color);
+
+ bitmap.pix32(y * 12 + tx, x * 8 + 4) = BIT(gfx, 0) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 5) = BIT(gfx, 1) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 6) = BIT(gfx, 2) ? rgb_t::black() : m_palette->pen_color(color);
+ bitmap.pix32(y * 12 + tx, x * 8 + 7) = BIT(gfx, 3) ? rgb_t::black() : m_palette->pen_color(color);
+ }
+ }
+ }
+
+ // draw ball (if not disabled)
+ if (m_ball_x != 0xff)
+ {
+ static const int BALL_SIZE = 4;
+ int ball_y = (m_ball_y >> 4) * 12 + (m_ball_y & 0x0f);
+ bitmap.plot_box(m_ball_x - BALL_SIZE + 1, ball_y - BALL_SIZE + 1, BALL_SIZE, BALL_SIZE, rgb_t::white());
+ }
+
+ return 0;
+}
+
+
+//**************************************************************************
+// AUDIO EMULATION
+//**************************************************************************
+
+static const char *const mmagic_sample_names[] =
+{
+ "*mmagic",
+ "4",
+ "3",
+ "5",
+ "2",
+ "2-2",
+ "6",
+ "6-2",
+ "1",
+ 0
+};
+
+WRITE8_MEMBER( mmagic_state::audio_w )
+{
+ data ^= 0xff;
+ if (data != m_audio_sw)
+ {
+ if (BIT(data, 7))
+ m_samples->start(0, m_audio_sw & 7);
+
+ m_audio_sw = data;
+ }
+}
+
+
+//**************************************************************************
+// DRIVER INIT
+//**************************************************************************
+
+void mmagic_state::machine_start()
+{
+ // register for save states
+ save_item(NAME(m_ball_x));
+ save_item(NAME(m_ball_y));
+ save_item(NAME(m_color));
+}
+
+
+//**************************************************************************
+// MACHINE DEFINTIONS
+//**************************************************************************
+
+static MACHINE_CONFIG_START( mmagic, mmagic_state )
+ // basic machine hardware
+ MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) // NEC D8085A
+ MCFG_CPU_PROGRAM_MAP(mmagic_mem)
+ MCFG_CPU_IO_MAP(mmagic_io)
+
+ // video hardware
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_6_144MHz, 384, 0, 256, 264, 0, 192)
+ MCFG_SCREEN_UPDATE_DRIVER(mmagic_state, screen_update)
+
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
+ // sound hardware
+ // TODO: SN76477 + discrete sound
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(1)
+ MCFG_SAMPLES_NAMES(mmagic_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+
+//**************************************************************************
+// ROM DEFINITIONS
+//**************************************************************************
+
+ROM_START( mmagic )
+ ROM_REGION(0x1800, "maincpu", 0)
+ ROM_LOAD("1ai.2a", 0x0000, 0x0400, CRC(ec772e2e) SHA1(7efc1bbb24b2ed73c518aea1c4ef4b9a93034e31))
+ ROM_LOAD("2ai.3a", 0x0400, 0x0400, CRC(e5d482ca) SHA1(208b808e9208bb6f5f5f89ffbeb5a885be33733a))
+ ROM_LOAD("3ai.4a", 0x0800, 0x0400, CRC(e8d38deb) SHA1(d7384234fb47e4b1d0421f58571fa748662b05f5))
+ ROM_LOAD("4ai.45a", 0x0c00, 0x0400, CRC(3048bd6c) SHA1(740051589f6ba44b2ee68edf76a3177bb973d78e))
+ ROM_LOAD("5ai.5a", 0x1000, 0x0400, CRC(2cab8f04) SHA1(203a3c005f18f968cd14c972bbb9fd7e0fc3b670))
+ // location 6a is unpopulated, if the "debug" switch is activated on bootup it would jump here
+
+ ROM_REGION(0x800, "tiles", 0)
+ ROM_LOAD("6h.6hi", 0x000, 0x200, CRC(b6321b6f) SHA1(06611f7419d2982e006a3e81b79677e59e194f38))
+ ROM_LOAD("7h.7hi", 0x200, 0x200, CRC(9ec0e82c) SHA1(29983f690a1b6134bb1983921f42c14898788095))
+ ROM_LOAD("6j.6jk", 0x400, 0x200, CRC(7ce83302) SHA1(1870610ff07ab11622e183e04e3fce29328ff291))
+
+ ROM_REGION(0x200, "colors", ROMREGION_INVERT)
+ ROM_LOAD("7j.7jk", 0x000, 0x200, CRC(b7eb8e1c) SHA1(b65a8efb88668dcf1c1d00e31a9b15a67c2972c8))
+ROM_END
+
+
+//**************************************************************************
+// GAME DRIVERS
+//**************************************************************************
+
+// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
+GAME( 1979, mmagic, 0, mmagic, mmagic, driver_device, 0, ROT270, "Nintendo", "Monkey Magic", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/model2.cpp b/docs/release/src/hbmame/drivers/model2.cpp
new file mode 100644
index 00000000000..3e7488fcf06
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/model2.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/model2.cpp"
+
+ROM_START( srallyp )
+ ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program
+ ROM_LOAD32_WORD( "srallyp.ic12", 0x000000, 0x080000, CRC(926632ab) SHA1(7a37813f3d59b8e6e68220aa3120460b1ce5b33d) )
+ ROM_LOAD32_WORD( "srallyp.ic13", 0x000002, 0x080000, CRC(c93b33f1) SHA1(8477a05e44c1c9ee5e99eaa9d31cd9905ebf8c26) )
+
+ ROM_REGION32_LE( 0x2400000, "user1", 0 ) // Data
+ ROM_LOAD32_WORD( "mpr-17746.10", 0x000000, 0x200000, CRC(8fe311f4) SHA1(f4ada8e5c906fc384bed1b96f09cdf313f89e825) )
+ ROM_LOAD32_WORD( "mpr-17747.11", 0x000002, 0x200000, CRC(543593fd) SHA1(5ba63a77e9fc70569af21d50b3171bc8ff4522b8) )
+ ROM_LOAD32_WORD( "mpr-17744.8", 0x400000, 0x200000, CRC(71fed098) SHA1(1d187cad375121a45348d640edd3cc7dce658d28) )
+ ROM_LOAD32_WORD( "mpr-17745.9", 0x400002, 0x200000, CRC(8ecca705) SHA1(ed2b3298aad6f4e52dc672a0168183e457564b43) )
+ ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) )
+ ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) )
+
+ ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) )
+ ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) )
+
+ ROM_REGION( 0x010000, "drivecpu", 0 ) // Drive I/O program
+ ROM_LOAD( "epr-17891.ic12", 0x000000, 0x010000, CRC(9a33b437) SHA1(3e8f210aa5159e78f640126cb5ce7f05f22560f2) )
+
+ ROM_REGION( 0x2000000, "user2", 0 ) // Models
+ ROM_LOAD32_WORD( "mpr-17748.16", 0x000000, 0x200000, CRC(3148a2b2) SHA1(283cc49bfb6c6381a7ead9273fd097dca5b981b6) )
+ ROM_LOAD32_WORD( "mpr-17750.20", 0x000002, 0x200000, CRC(232aec29) SHA1(4d470e71df61298282c356814e2d151fda323fb6) )
+ ROM_LOAD32_WORD( "mpr-17749.17", 0x400000, 0x200000, CRC(0838d184) SHA1(704175c8b29e4c989afcb7be42e7e0e096740eaf) )
+ ROM_LOAD32_WORD( "mpr-17751.21", 0x400002, 0x200000, CRC(ed87ac62) SHA1(601542149d33ca52a47536b4b0af47bf1fd87eb2) )
+
+ ROM_REGION( 0x1000000, "user3", 0 ) // Textures
+ ROM_LOAD32_WORD( "mpr-17753.25", 0x000000, 0x200000, CRC(6db0eb36) SHA1(dd5fd3c9592360d3e95623ac2491e6faabe9dbcb) )
+ ROM_LOAD32_WORD( "mpr-17752.24", 0x000002, 0x200000, CRC(d6aa86ce) SHA1(1d342f87d1af1e5438d1ae818b1b14268e765897) )
+
+ ROM_REGION( 0x20000, "cpu4", 0) // Communication program
+ ROM_LOAD( "epr-16726.bin", 0x000000, 0x020000, CRC(c179b8c7) SHA1(86d3e65c77fb53b1d380b629348f4ab5b3d39228) )
+
+ ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
+ ROM_LOAD16_WORD_SWAP( "epr-17890a.30", 0x080000, 0x040000, CRC(5bac3fa1) SHA1(3635333d36463b6fab25560ed918e05138f964dc) )
+
+ ROM_REGION( 0x800000, "scsp", 0 ) // Samples
+ ROM_LOAD( "mpr-17756.31", 0x000000, 0x200000, CRC(7725f111) SHA1(1f1ee3f19a6bcf57bc5a1c7dd64ee83f8b81f084) )
+ ROM_LOAD( "mpr-17757.32", 0x200000, 0x200000, CRC(1616e649) SHA1(1d3a0e441d150ada0535a9d50e2f69dd4b99c584) )
+ ROM_LOAD( "mpr-17886.36", 0x400000, 0x200000, CRC(54a72923) SHA1(103c4838b27378c834c08d29d6fb6ba95e7f9d03) )
+ ROM_LOAD( "mpr-17887.37", 0x600000, 0x200000, CRC(38c31fdd) SHA1(a85f05160b060d9d4a431aaa73cfc03f24214fb9) )
+
+ MODEL2_CPU_BOARD
+ MODEL2A_VID_BOARD
+ROM_END
+
+
+
+GAME( 2000?, srallyp, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Kyle Hodgetts", "Sega Rally Pro Drivin'", 0 )
diff --git a/docs/release/src/hbmame/drivers/monaco.cpp b/docs/release/src/hbmame/drivers/monaco.cpp
new file mode 100644
index 00000000000..8331083e2a4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/monaco.cpp
@@ -0,0 +1,2250 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*
+Monaco GP Simulator v0.1
+http://www.jps.net/camilty/monman.htm
+Phil Stroffolino
+
+To Do:
+- abstract and externalize in-game parameters (speeds,accel,timing)
+- fix distribution of computer car
+- computer cars should avoid rescue car lane when present
+- computer cars should move to center in bridge zone
+- player lives not hooked up
+- high score tracking
+- extended play colors
+
+General:
+ Score Increases as a function of the player's speed.
+ Speed of Terrain scrolling is independent.
+
+Computer Cars:
+ The bridge section is different from the others (besides all the cars going
+ faster after so many points(6K and 8K).
+
+Display Panel:
+ The cockpit model displays TIME (2 digit), top 5 scores (4 digits each),
+ your Score (4 digits), Players to Date (3 digits)(daily), and
+ Ranking (3 digits) (this is final score ranking, not position during the game).
+
+ The top 999 high scores are internally recorded in a RAM.
+ The player's ranking is updated only after gamplay is finished (during the
+ fanfare).
+
+Timed Play:
+ X000-X295 A-Smooth Zone
+ X295-X450 B-Slip Zone
+ X450-X795 A-Smooth Zone
+ X795-X000 C-Tunnel
+
+Extended Play:
+ X000-X095 A-Smooth Zone
+ X095-X150 D-Gravel Zone
+ X150-X295 A-Smooth Zone
+ X295-X475 B-Slip Zone
+ X475-X595 A-Smooth Zone
+ X595-X635 E-Bridge Zone
+ X635-X795 A-Smooth Zone
+ X795-X000 C-Tunnel Zone
+
+Oil Slicks (pool):
+ X185 (during zone A)
+ X685 (during zone A)
+ After 8000 points, two pools come out in succession
+ (the second about 20-30 points from the first).
+
+Rescue Car (firetruck)
+ The rescue car only appears during Extended play. Tolerance -50 (not+)
+ X000
+ X075
+ X125
+ X250
+ X500
+
+ The rescue car appears in a mid-right lane. It does not move side to side,
+ it just moves slowly up the screen until it goes off the screen.
+
+ In extended play, the rescue car was observed to come out AT LEAST ONCE
+ during each 1000 points cycle. I have observed the rescue car coming
+ out as much a 3 TIMES in one 1000 point cycle.
+ I could not find a pattern in the time or count interval between the
+ rescue cars. However, 72% were between 750 and 1250 point intervals
+ (most around 875) while the remaining 28% were 500 point intervals or
+ lower. Therfore, we can narrow down WHERE the rescue cars appear, but
+ IF it is going to appear seems to have some randomness to it.
+
+
+notes:
+ when the player first appears (game start, after a spinout, after
+ a crash), the player's car shows up on the extreme right of the
+ screen and is totally invulnerable (even if over water on the
+ bridge scene!). The road doesn't scroll at all until you give the
+ car some gas. Note that once you start moving, you can never
+ completely come to a stop.
+
+ Once you move to left onto the center part of the
+ road, normal collision behavior takes over. You earn no points
+ while in the invulnerable state. The player can remain in this
+ state forever during timed play (until time runs out). In extended
+ play, the player's car will explode after several seconds of driving.
+
+---------------------------------------------------------------------------
+
+Board 96598-P is an oscillator board that generates the game sounds.
+It is activated by outputs from Board Assy A (96577X).
+
+Board Assy's A (96577X) and B (96578X) are the main guts of the gameplay
+and contain the sprite roms.
+
+Board Assy A
+- accepts all of the game inputs
+- sends the signals for the sounds to the Oscillator board
+- outputs to the L.E.D. score display board
+- directly interacts with Board Assy B
+ Components:
+ Start Timer Control
+ Player Control (pedal, steering, shifter)
+ My Car light control, explosion, and pool (oil slick) skid
+ Other Car Control
+
+Board Assy B
+- outputs the video
+- outputs to the L.E.D. score display board
+- directly interacts with Board Assy A.
+ Components:
+ Display of Letter
+ Road Movement Horizontal
+ Road Movement Vertical (Right and Left)
+ Background (sprite) coloring
+ Road Object (tunnel, bridge, water) control
+ Signal Sync
+ Rescue Car, Player Car, Bridge--Video and Control
+
+ (On the second set, boards A and B have different part numbers
+ (97091X and 97092X) and two less roms. These boards were made
+ later then the first set. I have interchanged these boards with
+ each other, and they seem to be interchangable, the only
+ difference seems to be the rom size, which only 2 of the roms
+ utilize the full 1024 bytes (second set).)
+
+Oscillator Board 96598
+ROM ID IC#
+PRm-40 IC21 PRm-40 <both type 6331-1, 16 pin>
+ engine (constant; pitch varies with speed)
+ passing (two variations)
+ bonus (chimes)
+ fanfare
+ explosion
+ slip zone
+ siren (rescue car)
+*/
+
+/* The following changes were done by Robbbert on 2007-Dec-08:
+
+1. Add siren sound for ambulance
+2. Add slip sound for puddle
+3. Save and display high scores, score, number of games played, and ranking
+4. Play fanfare sound if high score exceeded
+5. Fix the gears so that each has its own max speed and acceleration rates
+6. Keep track of extra lives (er, cars).
+7. In extended play, you lose a life. When they are all gone, the game ends
+8. When game ends, all sounds are turned off, except Crash sound is allowed to finish, and fanfare can play.
+9. When you crash, you nearly stop, instead of continuing at full speed.
+10. Once you start moving, you cannot completely stop (as documented above)
+11. Sound volume adjustment confined to the machine driver.
+12. Volume adjusted so the sound is no longer grossly overdriven.
+13. Add the overlay file (it was always compiled but never used), and activated the LEDs.
+14. Add support for Mr.Do artwork.
+15. Add speedometer
+
+There is a bunch more things to be done
+
+1. Don't get points while not on the track
+2. Fall in the water if you don't line up for the bridge
+3. Show the bridge warning before you reach the bridge
+4. Different engine sounds depending on the speed
+5. Add sounds when passing other cars
+6. Plus some of what's listed above by the original author
+*/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/samples.h"
+#include "screen.h"
+#include "speaker.h"
+#include "monaco.lh"
+
+
+#define kRESCUE_CAR_SPEED (1.75)
+#define SCREEN_WIDTH 384 /* 12 car lengths */
+#define SCREEN_HEIGHT 240 /* 15 car widths */
+#define BRIDGE_YPOS ((SCREEN_HEIGHT-16)/2-8)
+#define PAGE_SIZE (14*32)
+#define NUM_COMPUTER_CARS 4
+
+/* red */
+#define TEXT_GAMEOVER 2
+#define TEXT_EXTENDEDPLAY 0
+
+/* blue */
+#define TEXT_DEPOSITCOIN 3
+#define TEXT_START 1
+
+enum
+{
+ GFX_UNKNOWN,GFX_EXPLOSION,GFX_PLAYER,GFX_SHAKE,GFX_SPINOUT1,GFX_SPINOUT2,
+ GFX_SPRAY,GFX_COMPUTER,GFX_TEXT,
+ GFX_TREE,GFX_GRASS,GFX_SHRUB,GFX_HOUSE,
+ GFX_TUNNEL,GFX_POOL,GFX_BELT,
+ GFX_RESCUE_CAR,GFX_SIGNAL,GFX_DUMMY,
+ GFX_BRIDGE1,GFX_BRIDGE2
+};
+
+enum
+{
+ CYAN_PEN = 0x91,
+ BLACK_PEN = 0x94,
+ YELLOW_PEN = 0x95,
+ GREY_PEN = 0x96
+};
+
+enum
+{
+ RESCUE_CLUT = 0x50,
+ HOUSE_CLUT = 0x60,
+ WATER_CLUT = 0x70,
+ PLAYER_CLUT = 0x80,
+ TREE_CLUT = 0x84,
+ SHRUB_CLUT = 0x88,
+ GRASS_CLUT = 0x8c,
+ CYAN_CLUT = 0x90,
+ RED_CLUT = 0x92,
+ YELLOW_CLUT = 0x94
+};
+
+enum
+{
+ GREEN_CAR, YELLOW_CAR, /* slow */
+ CYAN_CAR, PURPLE_CAR, /* medium */
+ BLUE_CAR, /* fast */
+ NUM_COMPUTER_CAR_TYPES
+};
+
+enum
+{
+ PAGE_SMOOTH,
+ PAGE_SLIP,
+ PAGE_TUNNEL,
+ PAGE_GRAVEL,
+ PAGE_BRIDGE
+};
+
+enum
+{
+ COLLISION_CRASH,
+ COLLISION_POOL
+};
+
+enum monaco_mode
+{
+ MODE_ATTRACT,
+ /* cars zoom up the screen (max 2 on the screen at a time)
+ * player's car is not visible
+ * "GAME OVER" is centered near the middle-top
+ * "DEPOSIT COIN" is centered near the bottom
+ */
+ MODE_START,
+ MODE_INVULNERABLE,
+ MODE_NORMAL, /* driving */
+ MODE_GRAVEL,
+ MODE_SLIP1, /* skidding */
+ MODE_SLIP2,
+ MODE_SPINOUT1,
+ MODE_SPINOUT2,
+ MODE_SPINOUT3,
+ MODE_SPINOUT4,
+ MODE_CRASH1,
+ MODE_CRASH2,
+ MODE_CRASH3,
+ MODE_CRASH4
+};
+
+class monaco_state : public driver_device
+{
+public:
+ monaco_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_samples(*this, "samples")
+ , m_p_ram(*this, "ram")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ { }
+
+ DECLARE_READ8_MEMBER(monaco_ram_r);
+ DECLARE_WRITE8_MEMBER(monaco_ram_w);
+ DECLARE_DRIVER_INIT(monaco);
+ INTERRUPT_GEN_MEMBER(monaco_interrupt);
+ DECLARE_MACHINE_RESET(monaco);
+ DECLARE_VIDEO_START(monaco);
+ uint32_t screen_update_monaco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+private:
+ struct monaco_gfx *m_monaco_gfx;
+ enum monaco_mode m_monaco_mode;
+ uint32_t monaco_word_r (uint16_t offset);
+ void monaco_word_w (uint16_t offset, uint32_t data);
+ int get_player_xpos( void );
+ void handle_collision( int sx, int sy, int width, int height, int type );
+ int read_coin();
+ void update_player_speed();
+ double get_player_delta( void );
+ void HandlePlayer();
+ void update_computer_cars( void );
+ void HandleRescue( void );
+ void HandlePool( void );
+ void GameOver();
+ void HandleEvents();
+ void draw_computer( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_pool( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_player( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_strip( bitmap_ind16 &bitmap, int sy, int x0, int x1, int xpos, int pen);
+ void DrawSmoothZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos);
+ void DrawSlipZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos);
+ void DrawGravelZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos);
+ void DrawBridgeZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos);
+ void DrawTunnelZone( bitmap_ind16 &bitmap, int xpos);
+ void DrawTunnelWall( bitmap_ind16 &bitmap, const rectangle clip, int xpos);
+ void draw_light_helper( bitmap_ind16 &bitmap, int xpos);
+ void draw_wall( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_light( bitmap_ind16 &bitmap);
+ void draw_page( bitmap_ind16 &bitmap, const rectangle clip, int which, int xpos);
+ void draw_background( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_text( bitmap_ind16 &bitmap, const rectangle clip);
+ void draw_leds( bitmap_ind16 &bitmap);
+ void draw_signal( bitmap_ind16 &bitmap);
+ int m_anim_timer;
+
+ /* LED display */
+ uint16_t m_plays;
+ uint16_t m_rank;
+ uint16_t m_rank_display; // shows 0 until game ends
+ uint32_t m_score;
+ uint32_t m_bonus_score;
+ uint8_t m_in_ext_play;
+ uint8_t m_gear;
+ uint16_t m_time;
+ uint8_t m_lives;
+ int m_bShaking;
+ double m_speed;
+ double m_player_ypos;
+ double m_computer_speed;
+ double m_xpos[NUM_COMPUTER_CARS];
+ double m_ypos[NUM_COMPUTER_CARS];
+ double m_dy[NUM_COMPUTER_CARS];
+ double m_rescue_xpos;
+ double m_pool_xpos;
+ double m_scroll;
+ double m_distance;
+ int m_ticks;
+ int m_page_current;
+ int m_page_next;
+ int m_page_next2;
+
+ double m_track_bottom_inset;
+ double m_track_top_inset;
+ double m_track_bottom_delta;
+ double m_track_top_delta;
+ int m_bSignalVisible;
+ int m_left_text;
+ int m_right_text;
+ int m_bExtendedPlay;
+ int m_left_page, m_right_page;
+ int m_top_inset, m_bottom_inset;
+ int m_player_x, m_player_y, m_player_tile, m_player_splash;
+ int m_pool_x, m_pool_y;
+ int m_rescue_x, m_rescue_y, m_rescue_tile;
+ int m_x[NUM_COMPUTER_CARS];
+ int m_y[NUM_COMPUTER_CARS];
+ int m_tile[NUM_COMPUTER_CARS];
+ int m_color[NUM_COMPUTER_CARS];
+ uint32_t m_led_high1;
+ uint32_t m_led_high2;
+ uint32_t m_led_high3;
+ uint32_t m_led_high4;
+ uint32_t m_led_high5;
+ uint32_t m_led_score;
+ uint16_t m_led_time;
+ uint16_t m_led_rank;
+ uint16_t m_led_plays;
+ uint16_t m_led_lives;
+ uint16_t m_led_gear;
+ uint16_t m_led_speed;
+ required_device<samples_device> m_samples;
+ required_shared_ptr<uint8_t> m_p_ram;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+};
+
+
+enum
+{
+ eSAMPLE_PASS1,
+ eSAMPLE_PASS2,
+ eSAMPLE_CRASH,
+ eSAMPLE_ENGINE,
+ eSAMPLE_EXTEND,
+ eSAMPLE_FANFARE,
+ eSAMPLE_SIREN,
+ eSAMPLE_SLIP,
+// eSAMPLE_GRAVEL
+};
+
+#define DOWN 0x01
+#define UP 0x02
+#define RIGHT 0x04
+#define LEFT 0x08
+#define COIN 0x10
+#define ACCEL1 0x20
+#define ACCEL2 0x40
+#define ACCEL3 0x80
+
+#define IS_PRESSED(key) (ioport("IN0")->read() & key)
+
+#define EXT_SCORE (2000<<8) // number of points needed to get extended play, 2000
+#define FIRST_TIME (90<<8) // number of seconds when coin inserted, 90
+
+
+READ8_MEMBER( monaco_state::monaco_ram_r )
+{
+ return m_p_ram[offset];
+}
+
+WRITE8_MEMBER( monaco_state::monaco_ram_w )
+{
+ m_p_ram[offset] = data;
+}
+
+uint32_t monaco_state::monaco_word_r (uint16_t offset)
+{
+ address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
+ uint8_t byte0 = monaco_ram_r (space, (offset << 2));
+ uint8_t byte1 = monaco_ram_r (space, (offset << 2) + 1);
+ uint8_t byte2 = monaco_ram_r (space, (offset << 2) + 2);
+ uint8_t byte3 = monaco_ram_r (space, (offset << 2) + 3);
+ return (byte3<<24) | (byte2<<16) | (byte1<<8) | byte0;
+}
+
+void monaco_state::monaco_word_w (uint16_t offset, uint32_t data)
+{
+ address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
+ uint8_t byte0 = data & 0xff;
+ uint8_t byte1 = (data & 0xff00) >> 8;
+ uint8_t byte2 = (data & 0xff0000) >> 16;
+ uint8_t byte3 = (data & 0xff000000) >> 24;
+ monaco_ram_w (space, (offset << 2), byte0);
+ monaco_ram_w (space, (offset << 2) + 1, byte1);
+ monaco_ram_w (space, (offset << 2) + 2, byte2);
+ monaco_ram_w (space, (offset << 2) + 3, byte3);
+}
+
+int monaco_state::get_player_xpos( void )
+{
+ return SCREEN_WIDTH-32-m_speed;
+}
+
+void monaco_state::handle_collision( int sx, int sy, int width, int height, int type )
+{
+ int px, py;
+
+ if( m_monaco_mode == MODE_NORMAL )
+ {
+ px = get_player_xpos();
+ py = m_player_ypos + 8;
+
+ if( px < sx + width &&
+ sx < px + 32 &&
+ py < sy + height &&
+ sy < py + 16 )
+ {
+ m_samples->start( 3, eSAMPLE_CRASH );
+ m_anim_timer = 0;
+ m_speed = 15; /* you almost stop when you crash */
+ if( type == COLLISION_CRASH )
+ {
+ if( !m_in_ext_play )
+ {
+ m_monaco_mode = MODE_SPINOUT1;
+ }
+ else
+ {
+ m_monaco_mode = MODE_CRASH1;
+ m_lives--;
+ }
+ }
+ else if( type == COLLISION_POOL )
+ {
+ m_pool_xpos = 512;
+ m_monaco_mode = MODE_SLIP1;
+ }
+ }
+ }
+}
+
+/*****************************************************************/
+
+int monaco_state::read_coin()
+{
+ static int old_trigger;
+ if( IS_PRESSED(COIN) )
+ {
+ old_trigger = 1;
+ }
+ else {
+ if( old_trigger ){
+ old_trigger = 0;
+ return 1;
+ }
+ old_trigger = 0;
+ }
+ return 0;
+}
+
+void monaco_state::update_player_speed()
+{
+ double desired_speed, min_speed, max_speed = 44;
+ int accel = 0;
+
+ if( IS_PRESSED(ACCEL1) ) accel = 1;
+ if( IS_PRESSED(ACCEL2) ) accel = 2;
+ if( IS_PRESSED(ACCEL3) ) accel = 3;
+
+ /* gearstick is a mechanical device which can be moved anytime */
+ if( IS_PRESSED(UP) )
+ m_gear = 1;
+ else
+ if( IS_PRESSED(DOWN) )
+ m_gear = 0;
+
+ if (m_monaco_mode == MODE_ATTRACT)
+ {
+ m_speed = 0;
+ m_in_ext_play = 0;
+ return;
+ }
+ else
+ if( m_monaco_mode == MODE_START )
+ {
+ if( accel ) m_monaco_mode = MODE_INVULNERABLE;
+ else return;
+ }
+
+ if (m_speed)
+ min_speed = m_gear?0.5:0.25;
+ else
+ min_speed = 0;
+
+ if (m_gear)
+ {
+ max_speed = 125;
+ if (m_score > 6000<<8) max_speed = 152;
+ if (m_score > 8000<<8) max_speed = 180;
+ }
+
+ /* min: 0; max: 6 */
+ /* 30 is derived by absolute maximum speed (above) divided by 6 */
+ desired_speed = 30*(accel?(m_gear*3+accel):min_speed);
+
+ /* 1st gear */
+ if (!m_gear)
+ {
+ if (desired_speed > m_speed) m_speed += 1;
+
+ if (desired_speed < m_speed) m_speed -= 4;
+ }
+ else
+ {
+ if (desired_speed > m_speed) m_speed += 0.4;
+
+ if (desired_speed < m_speed) m_speed -= 2;
+ }
+
+ if (m_speed < min_speed) m_speed = min_speed;
+
+ if (m_speed > max_speed) m_speed = max_speed;
+}
+
+double monaco_state::get_player_delta( void )
+{
+ if( m_monaco_mode == MODE_ATTRACT || m_monaco_mode == MODE_START ) return 0;
+ return m_speed/16.0;
+}
+
+void monaco_state::HandlePlayer()
+{
+ double dy = 0;
+ int sy = m_player_ypos;
+ update_player_speed();
+ if( IS_PRESSED(RIGHT) && sy>0 ) dy-=1.0;
+ if( IS_PRESSED(LEFT) && sy<SCREEN_HEIGHT-32 ) dy+=1.0;
+ if( m_page_current == PAGE_SLIP ) dy = dy*0.5;
+ m_player_ypos += dy;
+}
+
+/*****************************************************************/
+
+void monaco_state::update_computer_cars( void )
+{
+ int i;
+ int delta = get_player_delta();
+ for( i=0; i<NUM_COMPUTER_CARS; i++ )
+ {
+ int top_inset = m_track_top_inset;
+ int bottom_inset = m_track_bottom_inset;
+ int sx,sy;
+ m_xpos[i] += delta-m_computer_speed;
+ if( m_xpos[i] < -256 )
+ m_xpos[i] += SCREEN_WIDTH*2;
+ else
+ if( m_xpos[i] > SCREEN_WIDTH + 256 )
+ m_xpos[i] -= SCREEN_WIDTH*2;
+
+ m_ypos[i] += m_dy[i];
+
+ sx = m_xpos[i];
+ sy = m_ypos[i];
+
+ if( ( m_dy[i]<0 && sy<top_inset ) ||
+ ( m_dy[i]>0 && sy+16>SCREEN_HEIGHT-bottom_inset ) )
+ {
+ m_dy[i] *= -1;
+ }
+
+ handle_collision( sx-32, sy, 32, 16, COLLISION_CRASH );
+ }
+}
+
+#define DELTA_TIME (256.0/60)
+
+void monaco_state::HandleRescue( void )
+{
+ if( m_rescue_xpos > -64 )
+ {
+ m_rescue_xpos -= kRESCUE_CAR_SPEED;
+ handle_collision(
+ m_rescue_xpos,
+ (SCREEN_HEIGHT-32)/2,
+ 64,
+ 32,
+ COLLISION_CRASH );
+ }
+}
+
+void monaco_state::HandlePool( void )
+{
+ if( m_pool_xpos < SCREEN_WIDTH )
+ {
+ m_pool_xpos += get_player_delta();
+ handle_collision(
+ m_pool_xpos,
+ (SCREEN_HEIGHT-32)/2,
+ 32,
+ 32,
+ COLLISION_POOL );
+ }
+}
+
+void monaco_state::GameOver()
+{
+ m_monaco_mode = MODE_ATTRACT; /* this causes speed to be zero */
+ m_rank_display = m_rank; /* show rank on led display */
+ monaco_word_w (m_rank, m_score); /* save players score in RAM */
+ m_led_high1 = monaco_word_r(1);
+ m_led_high2 = monaco_word_r(2);
+ m_led_high3 = monaco_word_r(3); /* show the 5 highest scores on led display */
+ m_led_high4 = monaco_word_r(4);
+ m_led_high5 = monaco_word_r(5);
+ m_samples->stop(0); /* turn off engine sounds */
+ m_samples->stop(1);
+ m_samples->stop(2);
+}
+
+void monaco_state::HandleEvents()
+{
+ int score = m_score>>8;
+ int event = (score)%1000;
+
+ if (m_monaco_mode == MODE_ATTRACT) return;
+
+ if( m_page_current == PAGE_SMOOTH &&
+ (score == 8000 || score == 8030 || event == 185 || event == 685) )
+ {
+ m_pool_xpos = -32<<8;
+ }
+
+ if( m_in_ext_play )
+ {
+ /* Extended Play */
+ if( m_rescue_xpos<= -64 &&
+ (machine().rand()&3) == 0 &&
+ (event == 0 || event == 75 || event == 125 || event == 250 || event == 500) )
+ {
+ m_rescue_xpos = SCREEN_WIDTH;
+ m_samples->start( 1, eSAMPLE_SIREN );
+ }
+
+ if( event == 0 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 95 ) m_page_next2 = PAGE_GRAVEL;
+ else if( event == 150 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 295 ) m_page_next2 = PAGE_SLIP;
+ else if( event == 475 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 595 ) m_page_next2 = PAGE_BRIDGE;
+ else if( event == 635 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 795 ) m_page_next2 = PAGE_TUNNEL;
+ }
+ else
+ {
+ /* Timed Play */
+ if( event == 0 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 295 ) m_page_next2 = PAGE_SLIP;
+ else if( event == 450 ) m_page_next2 = PAGE_SMOOTH;
+ else if( event == 795 ) m_page_next2 = PAGE_TUNNEL;
+ }
+
+ if ((!m_time) && (!m_in_ext_play))
+ {
+ if (m_score > EXT_SCORE)
+ {
+ /* Turn On Extended Play */
+ m_in_ext_play = 1;
+// m_samples->start( 2, eSAMPLE_EXTEND );
+ }
+ else
+ m_lives = 0;
+ }
+
+ if ((!m_lives) && (m_monaco_mode != MODE_ATTRACT))
+ {
+ /* Game Over */
+ if (m_rank == 1) m_samples->start (4, eSAMPLE_FANFARE);
+
+ GameOver();
+ }
+}
+
+INTERRUPT_GEN_MEMBER( monaco_state::monaco_interrupt )
+{
+ int i;
+ double delta = get_player_delta();
+
+ HandleRescue();
+ HandlePool();
+ HandlePlayer();
+ /* increase score */
+ m_score += m_speed;
+ /* cap the score at 9999 */
+ if ( m_score > (9999<<8 | 255)) m_score = (9999<<8 | 255);
+
+ /* Bonus car at 2000, 4000, 6000, 8000 points */
+
+ if ( m_score < 9000<<8) m_bonus_score += m_speed;
+
+ if ( m_bonus_score > 2000<<8 )
+ {
+ m_lives++;
+ m_bonus_score -= 2000<<8;
+ m_samples->start( 2, eSAMPLE_EXTEND );
+ }
+ /* decrease time remaining */
+ if( m_time>0 )
+ {
+ if( m_monaco_mode != MODE_ATTRACT && m_monaco_mode != MODE_START )
+ {
+ if( m_time<DELTA_TIME ) m_time = 0;
+ else m_time -= DELTA_TIME;
+ }
+ }
+ /* adjust ranking if a score is passed */
+ if (m_rank > 1)
+ {
+ if (m_score > monaco_word_r (m_rank - 1))
+ {
+ monaco_word_w ( m_rank , monaco_word_r (m_rank - 1));
+ m_rank--;
+ }
+ }
+
+ HandleEvents();
+
+ switch( m_monaco_mode )
+ {
+ case MODE_ATTRACT:
+ m_pool_xpos = SCREEN_WIDTH;
+ m_rescue_xpos = -64;
+
+ if( read_coin() )
+ {
+ m_samples->start( 0, eSAMPLE_ENGINE, 1/*loop*/ );
+ m_score = 0;
+ m_bonus_score = 0;
+ m_rank_display = 0xffff; /* rank is blank till game ends */
+ m_lives = 1;
+ if (m_plays < 999) m_plays++;
+ m_rank = m_plays;
+ m_time = FIRST_TIME;
+ m_monaco_mode = MODE_START;
+ m_anim_timer = 0;
+ m_player_ypos = 0;//32;
+ }
+ default:
+ break;
+ }
+
+ m_scroll += delta;
+ if( m_scroll>=14*32 )
+ {
+ m_scroll -= 14*32;
+ m_page_current = m_page_next;
+ m_page_next = m_page_next2;
+ }
+
+ m_ticks++; /* for animation */
+
+ if( m_page_next != PAGE_TUNNEL && m_page_current != PAGE_TUNNEL &&
+ m_page_next != PAGE_BRIDGE && m_page_current != PAGE_BRIDGE )
+ {
+ /* delta: player speed */
+ m_track_bottom_inset += m_track_bottom_delta*delta/8;
+ m_track_top_inset += m_track_top_delta*delta/8;
+
+ if( m_track_bottom_inset <= 32 )
+ {
+ m_track_bottom_delta = 1;
+ }
+ else if( m_track_bottom_inset >= 96 )
+ {
+ m_track_bottom_delta = -1;
+ }
+
+ if( m_track_top_inset <= 32 )
+ {
+ m_track_top_delta = 1;
+ }
+ else if( m_track_top_inset >= 64 )
+ {
+ m_track_top_delta = -1;
+ }
+ }
+
+ switch( m_monaco_mode )
+ {
+ case MODE_ATTRACT:
+ break;
+ case MODE_START:
+ if( m_speed )
+ {
+ m_monaco_mode = MODE_INVULNERABLE;
+ m_anim_timer = 0;
+ }
+ break;
+
+ case MODE_INVULNERABLE:
+ m_anim_timer++;
+ if( m_anim_timer > 60*2 )
+ {
+ m_monaco_mode = MODE_NORMAL;
+ m_anim_timer = 0;
+ }
+ break;
+
+ case MODE_NORMAL:
+ break;
+
+ case MODE_GRAVEL:
+// m_samples->start (1, eSAMPLE_GRAVEL); There is no code to make this mode occur
+ break;
+
+ case MODE_SLIP1:
+ case MODE_SLIP2:
+ m_anim_timer++;
+ if( m_anim_timer>16 )
+ {
+ m_anim_timer = 0;
+ if( m_monaco_mode!=MODE_SLIP2 )
+ {
+ m_monaco_mode = MODE_SLIP2;
+ }
+ else
+ {
+ m_monaco_mode = MODE_NORMAL;
+ }
+ }
+ m_samples->start( 1, eSAMPLE_SLIP );
+ break;
+
+ case MODE_SPINOUT1:
+ case MODE_SPINOUT2:
+ case MODE_SPINOUT3:
+ case MODE_SPINOUT4:
+ if( m_player_ypos > 0 )
+ {
+ uint8_t temp = (m_anim_timer/2)&3;
+ if (temp == 0) m_monaco_mode = MODE_SPINOUT1;
+ else if (temp == 1) m_monaco_mode = MODE_SPINOUT2;
+ else if (temp == 2) m_monaco_mode = MODE_SPINOUT3;
+ else if (temp == 3) m_monaco_mode = MODE_SPINOUT4;
+ m_anim_timer++;
+ m_player_ypos-=2.0;
+ }
+ else
+ {
+ m_player_ypos = 0;
+ m_monaco_mode = MODE_INVULNERABLE;
+ m_anim_timer = 0;
+ }
+ if( m_speed > 40 )
+ {
+ m_speed-= 1.0;
+ }
+ break;
+
+ case MODE_CRASH1:
+ case MODE_CRASH2:
+ case MODE_CRASH3:
+ case MODE_CRASH4:
+ m_anim_timer++;
+ if( m_anim_timer>8 )
+ {
+ m_anim_timer = 0;
+ if( m_monaco_mode == MODE_CRASH1 ) m_monaco_mode = MODE_CRASH2;
+ else
+ if( m_monaco_mode == MODE_CRASH2 ) m_monaco_mode = MODE_CRASH3;
+ else
+ if( m_monaco_mode == MODE_CRASH3 ) m_monaco_mode = MODE_CRASH4;
+ else
+ {
+ m_monaco_mode = MODE_INVULNERABLE;
+ m_player_ypos = 0;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if( m_monaco_mode == MODE_NORMAL )
+ {
+ if( m_player_ypos+16 > m_track_top_inset+8 &&
+ m_player_ypos+16 < SCREEN_HEIGHT - (m_track_bottom_inset+8) )
+ {
+ m_bShaking = 0;
+ }
+ else if( m_player_ypos+16 > m_track_top_inset+8 - 16 &&
+ m_player_ypos+16 < SCREEN_HEIGHT - (m_track_bottom_inset+8 - 16) )
+ {
+ /* brush roadside */
+ m_bShaking = 1;
+ }
+ else
+ {
+ /* crash wall */
+ m_monaco_mode = MODE_SPINOUT1;
+ m_anim_timer = 0;
+ m_bShaking = 1;
+ }
+ }
+ else
+ {
+ m_bShaking = 0;
+ }
+
+ update_computer_cars();
+
+ for( i=0; i<NUM_COMPUTER_CARS; i++ )
+ {
+ m_x[i] = m_xpos[i] - 32;
+ m_y[i] = m_ypos[i];
+ m_tile[i] = (m_ticks&2)>>1;
+ m_color[i] = i; /* hack */
+ }
+ m_rescue_x = m_rescue_xpos;
+ m_rescue_y = BRIDGE_YPOS;
+ m_rescue_tile = (m_ticks&2)>>1;
+ m_pool_x = m_pool_xpos;
+ m_pool_y = (SCREEN_HEIGHT-32)/2;
+ m_top_inset = m_track_top_inset;
+ m_bottom_inset = m_track_bottom_inset;
+ m_bSignalVisible = (m_page_next == PAGE_BRIDGE || m_page_next == PAGE_BRIDGE );
+ m_led_score = m_score;
+ m_led_gear = m_gear;
+ m_led_lives = m_lives;
+ m_led_time = m_time;
+ m_led_rank = m_rank_display;
+ // m_led_rank = m_rank; /* test to display real-time ranking */
+ m_led_plays = m_plays;
+ m_led_speed = m_speed;
+ m_right_page = m_page_current;
+ m_left_page = m_page_next;
+ m_left_text = -1;
+ m_right_text = -1;
+
+ /* we stretch the text so that it is proportioned correctly
+ ** compared to the rest of the in-game graphics
+ */
+
+ switch( m_monaco_mode )
+ {
+ case MODE_ATTRACT:
+ m_left_text = TEXT_GAMEOVER;
+ m_right_text = TEXT_DEPOSITCOIN;
+ break;
+
+ case MODE_START:
+ m_right_text = TEXT_START;
+ break;
+
+ default:
+ break;
+ }
+
+ if (m_in_ext_play) m_left_text = TEXT_EXTENDEDPLAY;
+
+ m_player_x = get_player_xpos();
+ m_player_y = m_player_ypos;
+ m_player_tile = -1;
+ m_player_splash = -1;
+ switch( m_monaco_mode )
+ {
+ case MODE_ATTRACT:
+ break;
+
+ case MODE_SLIP1:
+ m_player_splash = 0;
+ m_player_tile = (m_ticks&2)>>1;
+ break;
+
+ case MODE_SLIP2:
+ m_player_splash = 1;
+ m_player_tile = (m_ticks&2)>>1;
+ break;
+
+ case MODE_SPINOUT1:
+ m_player_tile = 2;
+ break;
+
+ case MODE_SPINOUT2:
+ m_player_tile = 3;
+ break;
+
+ case MODE_SPINOUT3:
+ m_player_tile = 4;
+ break;
+ case MODE_SPINOUT4:
+ m_player_tile = 5;
+ break;
+
+ case MODE_CRASH1:
+ case MODE_CRASH2:
+ case MODE_CRASH3:
+ case MODE_CRASH4:
+ m_player_tile = m_monaco_mode-MODE_CRASH1 + 6;
+ break;
+
+ default:
+ if( m_bShaking )
+ {
+ m_player_tile = 10+((m_ticks&4)>>2);
+ }
+ else
+ {
+ m_player_tile = (m_ticks&2)>>1;
+ }
+ break;
+ }
+
+ return;
+}
+
+/*********************************************/
+
+static ADDRESS_MAP_START( monaco_map, AS_PROGRAM, 8, monaco_state )/* fake */
+ AM_RANGE(0x0000, 0xefff) AM_ROM
+ AM_RANGE(0xf000, 0xffff) AM_READWRITE(monaco_ram_r,monaco_ram_w) AM_SHARE("ram") /* scores need 4000 bytes */
+ADDRESS_MAP_END
+
+static INPUT_PORTS_START( monaco )
+ PORT_START("IN0") /* fake */
+ PORT_BIT( DOWN, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( UP, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( RIGHT, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( LEFT, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( COIN, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( ACCEL1, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( ACCEL2, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+ PORT_BIT( ACCEL3, IP_ACTIVE_HIGH, IPT_BUTTON3 )
+INPUT_PORTS_END
+
+/***************************************************************************/
+
+static gfx_layout tree_layout =
+{
+ 32,32,
+ 1, /* number of characters */
+ 2, /* number of bitplanes */
+ { 0,4 },
+ {
+ 0x003,0x002,0x001,0x000,0x103,0x102,0x101,0x100,
+ 0x203,0x202,0x201,0x200,0x303,0x302,0x301,0x300,
+ 0x403,0x402,0x401,0x400,0x503,0x502,0x501,0x500,
+ 0x603,0x602,0x601,0x600,0x703,0x702,0x701,0x700
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8
+ },
+ 0
+};
+
+static gfx_layout pool_layout =
+{
+ 32,32,
+ 1, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x003,0x002,0x001,0x000,0x103,0x102,0x101,0x100,
+ 0x203,0x202,0x201,0x200,0x303,0x302,0x301,0x300,
+ 0x403,0x402,0x401,0x400,0x503,0x502,0x501,0x500,
+ 0x603,0x602,0x601,0x600,0x703,0x702,0x701,0x700
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8
+ },
+ 4
+};
+
+static gfx_layout player_layout =
+{
+ 32,32,
+ 2, /* number of characters */
+ 2, /* number of bitplanes */
+ { 0,4 },
+ {
+ 0x003,0x002,0x001,0x000,0x103,0x102,0x101,0x100,
+ 0x203,0x202,0x201,0x200,0x303,0x302,0x301,0x300,
+ 0x403,0x402,0x401,0x400,0x503,0x502,0x501,0x500,
+ 0x603,0x602,0x601,0x600,0x703,0x702,0x701,0x700
+ },
+ {
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x800
+};
+
+static gfx_layout text_layout =
+{
+ 16,64,
+ 4, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x007,0x006,0x005,0x004,0x003,0x002,0x001,0x000,
+ 0x207,0x206,0x205,0x204,0x203,0x202,0x201,0x200,
+ },
+ {
+ 0x100,0x108,0x110,0x118,0x120,0x128,0x130,0x138,
+ 0x140,0x148,0x150,0x158,0x160,0x168,0x170,0x178,
+ 0x180,0x188,0x190,0x198,0x1a0,0x1a8,0x1b0,0x1b8,
+ 0x1c0,0x1c8,0x1d0,0x1d8,0x1e0,0x1e8,0x1f0,0x1f8,
+ 0x000,0x008,0x010,0x018,0x020,0x028,0x030,0x038,
+ 0x040,0x048,0x050,0x058,0x060,0x068,0x070,0x078,
+ 0x080,0x088,0x090,0x098,0x0a0,0x0a8,0x0b0,0x0b8,
+ 0x0c0,0x0c8,0x0d0,0x0d8,0x0e0,0x0e8,0x0f0,0x0f8,
+ },
+ 0x400
+};
+
+static gfx_layout house_layout =
+{
+ 32,32,
+ 1, /* number of characters */
+ 4, /* number of bitplanes */
+ { 0,2,4,6 },
+ {
+ 0x001,0x000,0x101,0x100,0x201,0x200,0x301,0x300,
+ 0x401,0x400,0x501,0x500,0x601,0x600,0x701,0x700,
+ 0x801,0x800,0x901,0x900,0xa01,0xa00,0xb01,0xb00,
+ 0xc01,0xc00,0xd01,0xd00,0xe01,0xe00,0xf01,0xf00
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8
+ },
+ 4
+};
+
+static gfx_layout signal_layout =
+{
+ 32,32,
+ 1, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x001,0x000,0x101,0x100,0x201,0x200,0x301,0x300,
+ 0x401,0x400,0x501,0x500,0x601,0x600,0x701,0x700,
+ 0x801,0x800,0x901,0x900,0xa01,0xa00,0xb01,0xb00,
+ 0xc01,0xc00,0xd01,0xd00,0xe01,0xe00,0xf01,0xf00
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,
+ },
+ 0
+};
+
+static gfx_layout dummy_layout =
+{
+ 32,16,
+ 2, /* number of characters */
+ 2, /* number of bitplanes */
+ { 4,6 },
+ {
+ 0x001,0x000,0x101,0x100,0x201,0x200,0x301,0x300,
+ 0x401,0x400,0x501,0x500,0x601,0x600,0x701,0x700,
+ 0x801,0x800,0x901,0x900,0xa01,0xa00,0xb01,0xb00,
+ 0xc01,0xc00,0xd01,0xd00,0xe01,0xe00,0xf01,0xf00
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x80
+};
+
+static gfx_layout computer_layout =
+{
+ 32,16,
+ 2, /* number of characters */
+ 4, /* number of bitplanes */
+ { 0,2,4,6 },
+ {
+ 0x001,0x000,0x081,0x080,0x101,0x100,0x181,0x180,
+ 0x201,0x200,0x281,0x280,0x301,0x300,0x381,0x380,
+ 0x401,0x400,0x481,0x480,0x501,0x500,0x581,0x580,
+ 0x601,0x600,0x681,0x680,0x701,0x700,0x781,0x780
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x800
+};
+
+static gfx_layout rescue_layout =
+{
+ 64,16,
+ 2, /* number of characters */
+ 4, /* number of bitplanes */
+ { 0,2,4,6 },
+ {
+ 0x001,0x001,0x000,0x000,0x081,0x081,0x080,0x080,
+ 0x101,0x101,0x100,0x100,0x181,0x181,0x180,0x180,
+ 0x201,0x201,0x200,0x200,0x281,0x281,0x280,0x280,
+ 0x301,0x301,0x300,0x300,0x381,0x381,0x380,0x380,
+ 0x401,0x401,0x400,0x400,0x481,0x481,0x480,0x480,
+ 0x501,0x501,0x500,0x500,0x581,0x581,0x580,0x580,
+ 0x601,0x601,0x600,0x600,0x681,0x681,0x680,0x680,
+ 0x701,0x701,0x700,0x700,0x781,0x781,0x780,0x780
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x800
+};
+
+static gfx_layout explode_layout =
+{
+ 32,32,
+ 4, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x007,0x006,0x005,0x004,0x003,0x002,0x001,0x000,
+ 0x107,0x106,0x105,0x104,0x103,0x102,0x101,0x100,
+ 0x207,0x206,0x205,0x204,0x203,0x202,0x201,0x200,
+ 0x307,0x306,0x305,0x304,0x303,0x302,0x301,0x300,
+ },
+ {
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x400
+};
+
+static gfx_layout bridge_layout =
+{
+ 32,16,
+ 2, /* number of characters */
+ 4, /* number of bitplanes */
+ { 0,1,2,3 },
+ {
+ 0x004,0x000,0x104,0x100,0x204,0x200,0x304,0x300,
+ 0x404,0x400,0x504,0x500,0x604,0x600,0x704,0x700,
+ 0x804,0x800,0x904,0x900,0xa04,0xa00,0xb04,0xb00,
+ 0xc04,0xc00,0xd04,0xd00,0xe04,0xe00,0xf04,0xf00
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x80
+};
+
+static gfx_layout unknown_layout =
+{ /* police car? */
+ 32,32,
+ 2, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x307,0x306,0x305,0x304,0x303,0x302,0x301,0x300,
+ 0x207,0x206,0x205,0x204,0x203,0x202,0x201,0x200,
+ 0x107,0x106,0x105,0x104,0x103,0x102,0x101,0x100,
+ 0x007,0x006,0x005,0x004,0x003,0x002,0x001,0x000,
+ },
+ {
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78
+ },
+ 0x400
+};
+
+
+static gfx_layout tunnel_layout =
+{
+ 32,32,
+ 2, /* number of characters */
+ 1, /* number of bitplanes */
+ { 0 },
+ {
+ 0x003,0x002,0x001,0x000,0x103,0x102,0x101,0x100,
+ 0x203,0x202,0x201,0x200,0x303,0x302,0x301,0x300,
+ 0x403,0x402,0x401,0x400,0x503,0x502,0x501,0x500,
+ 0x603,0x602,0x601,0x600,0x703,0x702,0x701,0x700
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8
+ },
+ 4
+};
+
+static gfx_layout belt_layout = {
+ 32,16,
+ 2, /* number of characters */
+ 1, /* number of bitplanes */
+ { 4 },
+ {
+ 0x003,0x002,0x001,0x000,0x103,0x102,0x101,0x100,
+ 0x203,0x202,0x201,0x200,0x303,0x302,0x301,0x300,
+ 0x403,0x402,0x401,0x400,0x503,0x502,0x501,0x500,
+ 0x603,0x602,0x601,0x600,0x703,0x702,0x701,0x700
+ },
+ {
+ 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,
+ 0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,
+ 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,
+ 0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8
+ },
+ 0x80
+};
+
+static GFXDECODE_START( monaco )
+ GFXDECODE_ENTRY( "gfx1", 0x0100, unknown_layout, 0x00, 1) /* PR125: unused; police car? */
+ GFXDECODE_ENTRY( "gfx1", 0x0200, explode_layout, RED_CLUT, 2) /* PR126: explosion */
+ GFXDECODE_ENTRY( "gfx1", 0x0400, player_layout, PLAYER_CLUT, 1) /* PR127: player's car */
+ GFXDECODE_ENTRY( "gfx1", 0x0600, player_layout, PLAYER_CLUT, 1) /* PR128: swerving (rough road) */
+ GFXDECODE_ENTRY( "gfx1", 0x0800, player_layout, PLAYER_CLUT, 1) /* PR129: spinout1 */
+ GFXDECODE_ENTRY( "gfx1", 0x0a00, player_layout, PLAYER_CLUT, 1) /* PR130: spinout2 */
+ GFXDECODE_ENTRY( "gfx1", 0x0c00, explode_layout, CYAN_CLUT, 1) /* PR131: spray */
+ GFXDECODE_ENTRY( "gfx1", 0x0e00, computer_layout, 0x00, 5) /* PR132: computer car A,B */
+ GFXDECODE_ENTRY( "gfx1", 0x1000, text_layout, CYAN_CLUT, 2) /* PR133: text */
+ GFXDECODE_ENTRY( "gfx1", 0x1200, tree_layout, TREE_CLUT, 1) /* PR134: tree */
+ GFXDECODE_ENTRY( "gfx1", 0x1300, tree_layout, TREE_CLUT, 1) /* PR134: grass */
+ GFXDECODE_ENTRY( "gfx1", 0x1400, tree_layout, SHRUB_CLUT, 1) /* PR135: shrub */
+ GFXDECODE_ENTRY( "gfx1", 0x1600, house_layout, HOUSE_CLUT, 1) /* PR136: house */
+ GFXDECODE_ENTRY( "gfx1", 0x1800, tunnel_layout, RED_CLUT, 1) /* PR137: tunnel */
+ GFXDECODE_ENTRY( "gfx1", 0x1900, pool_layout, CYAN_CLUT, 1) /* PR137: pool (oil slick) */
+ GFXDECODE_ENTRY( "gfx1", 0x1900, belt_layout, GRASS_CLUT, 2) /* PR137: red/green belt */
+ GFXDECODE_ENTRY( "gfx1", 0x1a00, rescue_layout, RESCUE_CLUT, 1) /* PR138: rescue car */
+ GFXDECODE_ENTRY( "gfx1", 0x1c00, signal_layout, YELLOW_CLUT, 1) /* PR139: bridge signal (yellow on black)*/
+ GFXDECODE_ENTRY( "gfx1", 0x1c00, dummy_layout, PLAYER_CLUT, 1) /* PR139: dummy car */
+ GFXDECODE_ENTRY( "gfx1", 0x1e00, bridge_layout, WATER_CLUT, 1) /* PR140: bridge-water */
+ GFXDECODE_ENTRY( "gfx1", 0x2000, bridge_layout, WATER_CLUT, 1) /* PR141: bridge-pillar */
+GFXDECODE_END
+
+static const char *const monaco_sample_names[] =
+{
+ "*monaco",
+ "6car1",
+ "6car2",
+ "6crash",
+ "6engine",
+ "6extend",
+ "6fanfare",
+ "6siren",
+ "6slip",
+// "gravel",
+ 0
+};
+
+/* ch 0 = engine; ch 1 = ambulance, puddle; ch 2 = extra car; ch 3 = crash; ch 4 = fanfare */
+
+MACHINE_RESET_MEMBER( monaco_state, monaco )
+{
+ uint16_t i;
+ m_time = 0; /* time remaining = 0 */
+ m_score = 0; /* player score = 0 */
+ m_gear = 0; /* low gear */
+ m_plays = 0; /* no games played */
+ for (i = 0;i < 1000;i++)
+ monaco_word_w (i, 0); /* delete all scores from RAM */
+ GameOver();
+}
+
+static MACHINE_CONFIG_START( monaco, monaco_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD ("maincpu", Z80, 200) /* fake */
+ MCFG_CPU_PROGRAM_MAP(monaco_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", monaco_state, monaco_interrupt)
+ MCFG_MACHINE_RESET_OVERRIDE(monaco_state, monaco)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(4368))
+ MCFG_SCREEN_SIZE(SCREEN_WIDTH, SCREEN_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, SCREEN_WIDTH-1, 0, SCREEN_HEIGHT-1)
+ MCFG_VIDEO_START_OVERRIDE(monaco_state, monaco)
+ MCFG_SCREEN_UPDATE_DRIVER(monaco_state, screen_update_monaco)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", monaco)
+ MCFG_PALETTE_ADD("palette", 160)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(5)
+ MCFG_SAMPLES_NAMES(monaco_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
+MACHINE_CONFIG_END
+
+/*****************************************************************/
+
+ROM_START( monaco )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* fake */
+
+ ROM_REGION( 0x3000, "gfx1", 0 )
+ ROM_LOAD( "pr125", 512*0, 512, CRC(7a66ed4c) SHA1(514e129c334a551b931c90b063b073a9b4bdffc3) ) /* light data */
+ ROM_LOAD( "pr126", 512*1, 512, CRC(5d7a8f12) SHA1(b4f0d21b91a7cf7002f99c08788669c7c38be51d) ) /* explosion */
+ ROM_LOAD( "pr127", 512*2, 512, CRC(8ffdc2f0) SHA1(05cc3330c067965b8b90b5d27119fe9f26580a13) ) /* car(2)main */
+ ROM_LOAD( "pr128", 512*3, 512, CRC(dde29dea) SHA1(34c413edff991297471bd0bc193c4bd8ede4e468) ) /* car(2)rotated */
+ ROM_LOAD( "pr129", 512*4, 512, CRC(7b18af26) SHA1(3d1ff2610813544c3b9b65182f081272a9537640) ) /* car(2)rotated */
+ ROM_LOAD( "pr130", 512*5, 512, CRC(9ef1913b) SHA1(58830121781b8a13532eaf8ea13ec07f10522320) ) /* car(2) spinout */
+ ROM_LOAD( "pr131", 512*6, 512, CRC(ff31eb01) SHA1(fd6bcd92c4bd919bb1a96ca97688d46cb310b39d) ) /* splash */
+ ROM_LOAD( "pr132", 512*7, 512, CRC(6b8ad9bc) SHA1(be36e3b6b647d3a9565bc45903027c791dc889e5) ) /* car(2)(other) */
+ ROM_LOAD( "pr133", 512*8, 512, CRC(d50641d9) SHA1(bf399e9830c88e4d8f8fb386305f54ef766946d9) ) /* text(4) */
+ ROM_LOAD( "pr134", 512*9, 512, CRC(8ebd50bb) SHA1(98d51f503753d4d7191a09b509d26c1e049e981a) ) /* tree, grass */
+ ROM_LOAD( "pr135", 512*10, 512, CRC(986eda32) SHA1(73fa539d4c83748952d9339985208520fec955f3) ) /* shrub */
+ ROM_LOAD( "pr136", 512*11, 512, CRC(ecc5d1a2) SHA1(33bff7381785557a85e4c8bdd74679b59e0ed9d5) ) /* house */
+ ROM_LOAD( "pr137", 512*12, 512, CRC(ddd9004e) SHA1(5229c34578e66d9c51a05439a516513946ba69ed) ) /* tunnel, oil slip */
+ ROM_LOAD( "pr138", 512*13, 512, CRC(058e53cf) SHA1(7c3aaaca5a9e9ce3a3badd0dcc8360342673a397) ) /* firetruck */
+ ROM_LOAD( "pr139", 512*14, 512, CRC(e8ba0794) SHA1(eadd7425134f26b1c126bbcd3d3dabf4b2e1fe70) ) /* car, bridge symbol */
+ ROM_LOAD( "pr140", 512*15, 512, CRC(48e9971b) SHA1(c0c265cdc08727e3caaf49cdfe728a91c4c46ba2) ) /* bridge-water */
+ ROM_LOAD( "pr141", 512*16, 512, CRC(99934236) SHA1(ec271f3e690d5c57ead9132b22b9b1b966e4d170) ) /* bridge-pillar */
+
+ ROM_REGION( 32*3, "proms", 0 )
+ ROM_LOAD( "prm38", 0*32, 32, CRC(82dd0a0f) SHA1(3e7e475c3270853d70c1fe90a773172532b60cfb) ) /* acceleration related */
+ ROM_LOAD( "prm39", 1*32, 32, CRC(6acfa0da) SHA1(1e56da4cdf71a095eac29878969b831babac222b) ) /* regulates opponent car speed */
+
+// ROM_LOAD( "prm-40", 2*32, 32, CRC(8030dac8) )
+/* PR40 is in the Fanfare sound circuit and seems to access the particular
+ * notes for the fanfare sound (so PR40 may contain timing and pointer info
+ * on the melody).  The switch (SW1) I mentioned before that helped in tuning
+ * the fanfare sound with the 6 pots seems to help in making the tuning of each
+ * pot for output of one of three audio frequencies (262, 330, 392 Hz),
+ * instead of having to tune to 6 different frequencies (a production/test
+ * equipment issue).
+ * In any case, if we get a good sample of this fanfare sound, we will not
+ * need to bother with this circuit or PR40.  As far a I have seen, the
+ * fanfare sound only comes up at the end of the game if you have a top five
+ * score and possibly when you plug in the game.
+ */
+ROM_END
+
+DRIVER_INIT_MEMBER( monaco_state, monaco )
+{
+ int i;
+ const double dy_table[5] =
+ {
+ 0.75,
+ 1.25,
+ 1.75,
+ 2.00,
+ 2.50
+ };
+
+ m_computer_speed = 52*16/256.0;
+ m_track_bottom_inset = 32;
+ m_track_top_inset = 32;
+ m_track_bottom_delta = 1;
+ m_track_top_delta = 1;
+
+ /* computer car */
+ for( i=0; i<NUM_COMPUTER_CARS; i++ )
+ {
+ m_xpos[i] = i*32*3 + ((i>1)?192:0);
+ m_ypos[i] = (SCREEN_HEIGHT-16)/2;
+ m_dy[i] = dy_table[i];
+ }
+}
+
+/* rom parent machine inp init */
+GAMEL( 1979, monaco, 0, monaco, monaco, monaco_state, monaco, ROT90, "Sega", "Monaco GP", 0, layout_monaco )
+
+
+
+
+/* Monaco GP video hardware simulation */
+
+
+#define plot_pixel(bitmap,x,y,col) do { bitmap.pix16(y, x) = col; } while (0)
+
+void monaco_state::draw_computer( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ int i;
+
+ for( i=0; i<NUM_COMPUTER_CARS; i++ )
+ {
+ m_gfxdecode->gfx(GFX_COMPUTER)->transpen(
+ bitmap, clip,
+ m_tile[i],
+ m_color[i],
+ 0,0,
+ m_x[i],
+ m_y[i],
+ 0 );
+ }
+
+ m_gfxdecode->gfx(GFX_RESCUE_CAR)->transpen(
+ bitmap, clip,
+ m_rescue_tile,
+ 0, /* color */
+ 0,0,
+ m_rescue_x,
+ m_rescue_y,
+ 0 );
+}
+
+void monaco_state::draw_pool( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ m_gfxdecode->gfx(GFX_POOL)->transpen(
+ bitmap, clip,
+ 0,0, /* tile,color */
+ 0,0, /* flip */
+ m_pool_x,
+ m_pool_y,
+ 0 );
+}
+
+void monaco_state::draw_player( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ int gfx;
+ int tile;
+
+ switch( m_player_splash )
+ {
+ case 0:
+ m_gfxdecode->gfx(GFX_SPRAY)->transpen( bitmap, clip,
+ 2,0,0,0,
+ m_player_x,
+ m_player_y+32-8,
+ 0);
+ m_gfxdecode->gfx(GFX_SPRAY)->transpen( bitmap, clip,
+ 0,0,0,0,
+ m_player_x,
+ m_player_y-32+8,
+ 0);
+ break;
+ case 1:
+ m_gfxdecode->gfx(GFX_SPRAY)->transpen( bitmap, clip,
+ 3,0,0,0,
+ m_player_x,
+ m_player_y+32-8,
+ 0);
+ m_gfxdecode->gfx(GFX_SPRAY)->transpen( bitmap, clip,
+ 1,0,0,0,
+ m_player_x,
+ m_player_y-32+8,
+ 0);
+ break;
+ }
+
+ tile = m_player_tile;
+ gfx = 0;
+ if( tile>=0 )
+ {
+ switch( tile )
+ {
+ case 0:
+ case 1: gfx = GFX_PLAYER; break;
+
+ case 2:
+ case 3: gfx = GFX_SPINOUT1; tile -= 2; break;
+
+ case 4:
+ case 5: gfx = GFX_SPINOUT2; tile -= 4; break;
+
+ case 6:
+ case 7:
+ case 8:
+ case 9: gfx = GFX_EXPLOSION; tile -= 6; break;
+
+ case 10:
+ case 11: gfx = GFX_SHAKE; tile -= 10; break;
+ }
+
+ m_gfxdecode->gfx(gfx)->transpen( bitmap, clip,
+ tile,0,
+ 0,0,
+ m_player_x,
+ m_player_y,
+ 0);
+ }
+}
+
+/*****************************************************************/
+
+void monaco_state::draw_strip( bitmap_ind16 &bitmap, int sy, int x0, int x1, int xpos, int pen )
+{
+ int sx;
+ if( x0<xpos ) x0 = xpos;
+ if( x1>xpos+PAGE_SIZE ) x1 = xpos+PAGE_SIZE;
+ if( x0<0 ) x0 = 0;
+ if( x1>SCREEN_WIDTH ) x1 = SCREEN_WIDTH;
+ for( sx=x0; sx<x1; sx++ ) plot_pixel( bitmap,sx,sy,pen );
+}
+
+void monaco_state::DrawSmoothZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos )
+{
+ const uint8_t data[14] =
+ {
+ GFX_GRASS,GFX_GRASS,GFX_GRASS,
+ GFX_TREE,GFX_GRASS,GFX_TREE,
+ GFX_GRASS,GFX_HOUSE,GFX_GRASS,
+ GFX_SHRUB,GFX_SHRUB,
+ GFX_GRASS,GFX_GRASS,GFX_GRASS
+ };
+ int top_inset = m_top_inset;
+ int bottom_inset = m_bottom_inset;
+ int i;
+
+ draw_strip( bitmap, top_inset, xpos, xpos+PAGE_SIZE, xpos, YELLOW_PEN );
+ draw_strip( bitmap, SCREEN_HEIGHT-1 - bottom_inset, xpos, xpos+PAGE_SIZE, xpos, YELLOW_PEN );
+
+ for( i=0; i<14; i++ )
+ {
+ int code = data[i];
+ gfx_element *gfx = m_gfxdecode->gfx(code);
+ gfx_element *belt = m_gfxdecode->gfx((code==GFX_HOUSE)?GFX_DUMMY:GFX_BELT);
+ int j;
+
+ for( j=0; j<3; j++ )
+ {
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, m_top_inset-32-16-j*32 );
+
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos,SCREEN_HEIGHT-m_bottom_inset+j*32+16-8 );
+ }
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, m_top_inset-16 );
+
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos,SCREEN_HEIGHT-m_bottom_inset );
+
+ xpos += 32;
+ }
+}
+
+void monaco_state::DrawSlipZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos )
+{
+ const uint8_t data[14] =
+ {
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,GFX_HOUSE,
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,/* start */GFX_SHRUB,GFX_SHRUB
+ };
+
+ int top_inset = m_top_inset;
+ int bottom_inset = m_bottom_inset;
+ int i;
+
+ draw_strip( bitmap, top_inset, xpos, xpos+PAGE_SIZE, xpos, YELLOW_PEN );
+ draw_strip( bitmap, SCREEN_HEIGHT-1 - bottom_inset, xpos, xpos+PAGE_SIZE, xpos, YELLOW_PEN );
+
+ for( i=0; i<14; i++ ){
+ int code = data[i];
+ gfx_element *gfx = m_gfxdecode->gfx(code);
+ gfx_element *belt = m_gfxdecode->gfx((code==GFX_HOUSE)?GFX_DUMMY:GFX_BELT);
+ int j;
+
+ for( j=0; j<3; j++ ){
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, top_inset-32-j*32-16 );
+
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos,SCREEN_HEIGHT-bottom_inset+j*32+16-8 );
+ }
+
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, top_inset-16 );
+
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos,SCREEN_HEIGHT-bottom_inset );
+
+ xpos += 32;
+ }
+}
+
+void monaco_state::DrawGravelZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos )
+{
+ const uint8_t data[14] = {
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,GFX_HOUSE,
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB,
+ GFX_SHRUB,GFX_SHRUB,GFX_SHRUB
+ };
+ int top_inset = m_top_inset;
+ int bottom_inset = m_bottom_inset;
+ int i;
+ int xpos0 = xpos;
+
+ for( i=0; i<14; i++ )
+ {
+ int code = data[i];
+ gfx_element *gfx = m_gfxdecode->gfx(code);
+ gfx_element *belt = m_gfxdecode->gfx((code==GFX_HOUSE)?GFX_DUMMY:GFX_BELT);
+ int j;
+ int ypos;
+
+ /* draw gravel */
+ if( data[i]!=GFX_HOUSE )
+ {
+ ypos = SCREEN_HEIGHT-bottom_inset-32;
+ m_gfxdecode->gfx(GFX_BELT)->opaque( bitmap, clip,
+ 1,1, /* number, color */
+ 0,0, /* no flip */
+ xpos, ypos+32-8 );
+ ypos-=24;
+ while( ypos>0 ){
+ m_gfxdecode->gfx(GFX_BELT)->opaque( bitmap, clip,
+ 1,1, /* number, color */
+ 0,0, /* no flip */
+ xpos, ypos );
+ ypos -= 16;
+ }
+ }
+
+ for( j=0; j<3; j++ )
+ {
+ ypos = SCREEN_HEIGHT-bottom_inset+16+j*32-8;
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, ypos );
+ }
+
+ for( j=0; j<3; j++ )
+ {
+ ypos = top_inset-32-16-j*32;
+ gfx->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, ypos );
+ }
+
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, top_inset-16 );
+
+ belt->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,0, /* no flip */
+ xpos,SCREEN_HEIGHT-bottom_inset );
+
+
+ xpos += 32;
+ }
+ draw_strip( bitmap, top_inset, xpos0, xpos0+PAGE_SIZE, xpos0, YELLOW_PEN );
+ draw_strip( bitmap, SCREEN_HEIGHT-1 - bottom_inset, xpos0, xpos0+PAGE_SIZE, xpos0, YELLOW_PEN );
+}
+
+void monaco_state::DrawBridgeZone( bitmap_ind16 &bitmap, const rectangle clip, int xpos )
+{
+ gfx_element *gfx1 = m_gfxdecode->gfx(GFX_BRIDGE1);
+ gfx_element *gfx2 = m_gfxdecode->gfx(GFX_BRIDGE2);
+
+ int i;
+ for( i=0; i<14; i++ )
+ {
+ int j;
+ gfx_element *gfx = (i==0)?gfx2:gfx1;
+ for( j=0; j<7; j++ )
+ {
+ int flip;
+ for( flip=0; flip<=1; flip++ )
+ {
+ int ypos = flip?(SCREEN_HEIGHT-16-j*16)+8:j*16-8;
+ if( j<5 )
+ { /* water */
+ gfx1->opaque( bitmap, clip,
+ 0,0, /* number, color */
+ 0,flip,
+ xpos, ypos );
+ }
+ else
+ { /* edge of bridge */
+ gfx->opaque( bitmap, clip,
+ j-5,0, /* number, color */
+ 0,flip,
+ xpos, ypos );
+ }
+ }
+ }
+ xpos += 32;
+ }
+}
+
+void monaco_state::DrawTunnelZone( bitmap_ind16 &bitmap, int xpos )
+{
+ int pen = YELLOW_PEN;
+ int top_inset = m_top_inset;
+ int bottom_inset = m_bottom_inset;
+ draw_strip( bitmap, top_inset, xpos, xpos+PAGE_SIZE, xpos, pen );
+ draw_strip( bitmap, SCREEN_HEIGHT-1 - bottom_inset, xpos, xpos+PAGE_SIZE, xpos, pen );
+}
+
+void monaco_state::DrawTunnelWall( bitmap_ind16 &bitmap, const rectangle clip, int xpos )
+{
+ rectangle clip2;
+ gfx_element *gfx = m_gfxdecode->gfx(GFX_TUNNEL);
+ int top_inset = m_top_inset - 16;
+ int bottom_inset = m_bottom_inset - 16;
+ int i;
+
+ clip2.min_x = clip.min_x;
+ clip2.max_x = clip.max_x;
+ clip2.max_y = clip.max_y;
+ clip2.min_y = SCREEN_HEIGHT-bottom_inset;
+
+ for( i=0; i<14; i++ )
+ {
+ int j;
+ for( j=0; j<2; j++ )
+ {
+ gfx->transpen( bitmap, clip,
+ 1,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, top_inset-32-j*32, 0 );
+
+ gfx->transpen( bitmap, clip,
+ 1,0, /* number, color */
+ 0,0, /* no flip */
+ xpos, SCREEN_HEIGHT-bottom_inset+j*32 - 8, 0 );
+ }
+ xpos += 32;
+ }
+}
+
+void monaco_state::draw_light_helper( bitmap_ind16 &bitmap, int xpos )
+{
+ int pen = BLACK_PEN;
+ const unsigned char *source = memregion( "gfx1" )->base();
+ int x0 = m_player_x-128;
+ int y0 = m_player_y-48;
+ int sy;
+ for( sy=0; sy<SCREEN_HEIGHT; sy++ )
+ {
+ int i = sy-y0;
+ if( i<0 || i>=128 )
+ {
+ draw_strip( bitmap, sy, xpos, xpos+PAGE_SIZE, xpos, pen );
+ }
+ else
+ {
+ int left = x0+source[i];
+ int right = x0+source[i+128];
+ draw_strip( bitmap, sy, xpos, left, xpos, pen );
+ draw_strip( bitmap, sy, right, xpos+PAGE_SIZE, xpos, pen );
+ }
+ }
+}
+
+void monaco_state::draw_wall( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ if( m_right_page == PAGE_TUNNEL )
+ DrawTunnelWall( bitmap, clip, SCREEN_WIDTH-14*32+m_scroll );
+
+ if( m_left_page == PAGE_TUNNEL )
+ DrawTunnelWall( bitmap, clip, SCREEN_WIDTH-14*32*2+m_scroll );
+}
+
+void monaco_state::draw_light( bitmap_ind16 &bitmap )
+{
+ if( m_right_page == PAGE_TUNNEL )
+ draw_light_helper( bitmap, SCREEN_WIDTH-14*32+m_scroll );
+
+ if( m_left_page == PAGE_TUNNEL )
+ draw_light_helper( bitmap, SCREEN_WIDTH-14*32*2+m_scroll );
+}
+
+void monaco_state::draw_page( bitmap_ind16 &bitmap, const rectangle clip, int which, int xpos )
+{
+ rectangle r;
+ r.min_x = xpos;
+ r.max_x = xpos+PAGE_SIZE-1;
+ r.min_y = 0;
+ r.max_y = SCREEN_HEIGHT-1;
+ bitmap.fill( (which!=PAGE_SLIP)?GREY_PEN:CYAN_PEN,r );
+ switch( which )
+ {
+ case PAGE_SMOOTH:
+ DrawSmoothZone( bitmap, clip, xpos );
+ break;
+
+ case PAGE_SLIP:
+ DrawSlipZone( bitmap, clip, xpos );
+ break;
+
+ case PAGE_TUNNEL:
+ DrawTunnelZone( bitmap, xpos );
+ break;
+
+ case PAGE_GRAVEL:
+ DrawGravelZone( bitmap, clip, xpos );
+ break;
+
+ case PAGE_BRIDGE:
+ DrawBridgeZone( bitmap, clip, xpos );
+ break;
+ }
+}
+
+void monaco_state::draw_background( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ draw_page(bitmap, clip,
+ m_right_page,
+ SCREEN_WIDTH-14*32+m_scroll );
+
+ draw_page(bitmap, clip,
+ m_left_page,
+ SCREEN_WIDTH-14*32*2+m_scroll );
+}
+
+void monaco_state::draw_text( bitmap_ind16 &bitmap, const rectangle clip )
+{
+ int sx = (SCREEN_WIDTH-8)/2;
+ int sy = (SCREEN_HEIGHT-128)/2;
+
+ if( m_left_text != -1 )
+ {
+ m_gfxdecode->gfx(GFX_TEXT)->zoom_transpen( bitmap, clip,
+ m_left_text,0,
+ 0,0, /* flip */
+ sx-96,sy,
+ 1<<16, 2<<16, 0
+ );
+ }
+
+ if( m_right_text != -1 )
+ {
+ m_gfxdecode->gfx(GFX_TEXT)->zoom_transpen( bitmap, clip,
+ m_right_text,1,
+ 0,0, /* flip */
+ SCREEN_WIDTH-32,sy,
+ 1<<16, 2<<16, 0
+ );
+ }
+}
+
+/* last two values are L and H used to display in gear field (not supported officially)*/
+static const uint8_t led_map[12] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x38,0x76 };
+
+/* following outputs LED's for bezel. also displays time,score&speed text versions (text version disabled here) */
+
+void monaco_state::draw_leds( bitmap_ind16 &bitmap )
+{
+ int i;
+ uint32_t data;
+
+// data = m_speed;
+// for( i=2; i>=0; i-- )
+// {
+// drawgfx_transpen( bitmap, led_font,
+// data%10,0, /* number, color */
+// 0,1, /* no flip */
+// 9,SCREEN_HEIGHT-6-i*6,
+// NULL, TRANSPARENCY_NONE,0 );
+//
+// data = data/10;
+// }
+
+ data = m_led_high1>>8;
+ for( i=3; i>=0; i-- )
+ {
+ output().set_digit_value(i+10, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_high2>>8;
+ for( i=3; i>=0; i-- )
+ {
+ output().set_digit_value(i+20, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_high3>>8;
+ for( i=3; i>=0; i-- )
+ {
+ output().set_digit_value(i+30, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_high4>>8;
+ for( i=3; i>=0; i-- )
+ {
+ output().set_digit_value(i+40, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_high5>>8;
+ for( i=3; i>=0; i-- )
+ {
+ output().set_digit_value(i+50, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_score>>8;
+ for( i=3; i>=0; i-- )
+ {
+// drawgfx_transpen( bitmap, led_font,
+// data%10,0, /* number, color */
+// 0,1, /* no flip */
+// 0,SCREEN_HEIGHT-6-i*6,
+// NULL, TRANSPARENCY_NONE,0 );
+
+ output().set_digit_value(i, led_map[data%10]);
+
+ data = data/10;
+ }
+
+ data = m_led_plays;
+ for( i=2; i>=0; i-- )
+ {
+ output().set_digit_value(i+60, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_rank;
+ for( i=2; i>=0; i-- )
+ {
+ if (data == 0xffff)
+ {
+ output().set_digit_value(i+70, 0); /* make it blank */
+ }
+ else
+ {
+ output().set_digit_value(i+70, led_map[data%10]);
+ data = data/10;
+ }
+ }
+
+ data = m_led_speed;
+ for( i=2; i>=0; i-- )
+ {
+// drawgfx_transpen( bitmap, led_font,
+// data%10,0, /* number, color */
+// 0,1, /* no flip */
+// 9,SCREEN_HEIGHT-6-i*6,
+// NULL, TRANSPARENCY_NONE,0 );
+//
+ output().set_digit_value(i+80, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_gear;
+ for( i=0; i>=0; i-- )
+ {
+ output().set_digit_value(i+90, led_map[10+data%10]);
+ data = data/10;
+ }
+
+ data = m_led_lives;
+ for( i=0; i>=0; i-- )
+ {
+ output().set_digit_value(i+100, led_map[data%10]);
+ data = data/10;
+ }
+
+ data = m_led_time>>8;
+ for( i=1; i>=0; i-- )
+ {
+// drawgfx_opaque( bitmap, NULL, led_font,
+// data%10,0, /* number, color */
+// 0,1, /* no flip */
+// 18,SCREEN_HEIGHT-6-i*6 );
+
+ output().set_digit_value(i+4, led_map[data%10]);
+
+ data = data/10;
+ }
+}
+
+void monaco_state::draw_signal( bitmap_ind16 &bitmap )
+{
+ if( m_bSignalVisible )
+ {
+// drawgfx_opaque(
+// bitmap, NULL, machine().gfx[GFX_SIGNAL],
+// 0,0, /* number, color */
+// 0,0, /* no flip */
+// 32,(SCREEN_HEIGHT - 32)/2 );
+ }
+}
+
+uint32_t monaco_state::screen_update_monaco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ const rectangle &visarea = screen.visible_area();
+ draw_background( bitmap, visarea );
+ draw_pool( bitmap, visarea );
+ draw_computer( bitmap, visarea );
+ draw_light( bitmap );
+ draw_wall( bitmap, visarea );
+ draw_text( bitmap, visarea );
+ draw_player( bitmap, visarea );
+ draw_signal( bitmap );
+ draw_leds( bitmap );
+ return 0;
+}
+
+VIDEO_START_MEMBER( monaco_state, monaco )
+{
+ int i;
+
+ m_palette->set_pen_color( 0, 0x00,0x00,0x00 ); /* black (tire) */
+ m_palette->set_pen_color( 1, 0xff,0xff,0xff ); /* white (trim) */
+ /* computer car */
+ for( i=0; i<NUM_COMPUTER_CAR_TYPES; i++ )
+ {
+ const unsigned char clut[3*NUM_COMPUTER_CAR_TYPES] =
+ {
+ 0x00,0xff,0x00, /* green car */
+ 0xff,0xff,0x00, /* yellow car */
+ 0x00,0xff,0xff, /* cyan car */
+ 0xff,0x00,0xff, /* purple car */
+ 0x00,0x00,0xff /* blue car */
+ };
+
+ m_palette->set_pen_color( 16*i+0x8, 0x00,0x00,0x00 ); /* black (tire) */
+ m_palette->set_pen_color( 16*i+0xa, 0xff,0xff,0xff ); /* white (trim) */
+ m_palette->set_pen_color( 16*i+0xc, clut[i*3+0],clut[i*3+1],clut[i*3+2] );
+ }
+ /* rescue car */
+ m_palette->set_pen_color( 0x50+0x8, 0x00,0x00,0x00 ); // black
+ m_palette->set_pen_color( 0x50+0x9, 0xff,0xff,0x00 ); // yellow
+ m_palette->set_pen_color( 0x50+0xa, 0xff,0xff,0xff ); // white
+ m_palette->set_pen_color( 0x50+0xc, 0xff,0x00,0x00 ); // red (light)
+ /* house */
+ m_palette->set_pen_color( 0x60+0x0, 0x00,0x00,0x00 ); // ground
+ m_palette->set_pen_color( 0x60+0x9, 0xff,0x00,0x00 ); // right roof
+ m_palette->set_pen_color( 0x60+0xa, 0xff,0x00,231 ); // left roof
+ m_palette->set_pen_color( 0x60+0xb, 0x00,198,255 ); // front
+ m_palette->set_pen_color( 0x60+0xc, 0xff,0xff,0xff ); // trim
+ /* water */
+ m_palette->set_pen_color( 0x70, 0x00,0x00,0xff );//l.blue
+ m_palette->set_pen_color( 0x71, 0xff,0x00,0x00 );//red
+ m_palette->set_pen_color( 0x72, 0xff,0xff,0x00 );//yellow
+ m_palette->set_pen_color( 0x73, 0x00,0x00,0x00 );//black
+ m_palette->set_pen_color( 0x74, 0x00,0x00,0x00 );//N/A
+ m_palette->set_pen_color( 0x75, 0xff,0xff,0xff );//white
+ m_palette->set_pen_color( 0x76, 0x9f,0x9f,0x9f );//grey (road)
+ m_palette->set_pen_color( 0x77, 0x00,0x00,0x9f );//d.blue
+ /* player car */
+ m_palette->set_pen_color( 0x80, 0x00,0x00,0x00 );
+ m_palette->set_pen_color( 0x81, 0xff,0x00,0x00 ); // red (car body)
+ m_palette->set_pen_color( 0x82, 0xff,0xff,0xff ); // white (trim)
+ m_palette->set_pen_color( 0x83, 0x00,0x00,0x00 ); // black (tire)
+ /* tree */
+ m_palette->set_pen_color( 0x84, 0xff,0xff,0x00 ); // yellow
+ m_palette->set_pen_color( 0x85, 0x00,0x00,0x00 ); // dark green
+ m_palette->set_pen_color( 0x86, 0x00,165,0x00 ); // light green
+ m_palette->set_pen_color( 0x87, 0x00,0x00,0x00 ); // black?
+ /* shrub */
+ m_palette->set_pen_color( 0x88, 0x00,0x00,0x00 );
+ m_palette->set_pen_color( 0x89, 0x00,0xff,0x00 );
+ m_palette->set_pen_color( 0x8a, 0x00,0x00,0xff );
+ m_palette->set_pen_color( 0x8b, 0xff,0xff,0xff );
+ /* grass */
+ m_palette->set_pen_color( 0x8c, 0x00,0x00,0x00 );
+ m_palette->set_pen_color( 0x8d, 0x00,0x9f,0x00 ); // dark green
+ m_palette->set_pen_color( 0x8e, 0x00,0x00,0x00 );
+ m_palette->set_pen_color( 0x8f, 0x00,0x00,0x9f ); // dark blue
+ m_palette->set_pen_color( 0x90, 0x00,0x00,0x00 ); // black
+ m_palette->set_pen_color( 0x91, 0x00,0xff,0xff ); // cyan
+ m_palette->set_pen_color( 0x92, 0x00,0x00,0x00 ); // grey
+ m_palette->set_pen_color( 0x93, 0xff,0x00,0x00 ); // red
+ m_palette->set_pen_color( 0x94, 0x00,0x00,0x00 ); // black
+ m_palette->set_pen_color( 0x95, 255,215,0 ); // yellow trim
+ m_palette->set_pen_color( 0x96, 132,132,132 ); // grey (road)
+// 0,198,255: wet road
+// 255,215,0: yellow trim
+}
diff --git a/docs/release/src/hbmame/drivers/mrdo.cpp b/docs/release/src/hbmame/drivers/mrdo.cpp
new file mode 100644
index 00000000000..a88cf139cc4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mrdo.cpp
@@ -0,0 +1,166 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/mrdo.cpp"
+
+ROM_START( mrdigdo )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // from mrdot
+ ROM_LOAD( "d1", 0x0000, 0x2000, CRC(3dcd9359) SHA1(bfe00450ee8822f437d87514f051ad1be6de9463) )
+ ROM_LOAD( "d2", 0x2000, 0x2000, CRC(710058d8) SHA1(168cc179f2266bbf9437445bef9ff7d3358a8e6b) )
+ ROM_LOAD( "d3", 0x4000, 0x2000, CRC(467d12d8) SHA1(7bb85e6a780de1c0c224229ee571cab39098f78d) )
+ ROM_LOAD( "d4", 0x6000, 0x2000, CRC(fce9afeb) SHA1(26236a42c1c620975d4480c4315d0c6f112429b6) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mrdigdo.d9", 0x0000, 0x1000, CRC(b83b8a84) SHA1(138a4fd1b7470def1b4e8aa4cfcf4c4b6bebf35b) )
+ ROM_LOAD( "mrdigdo.d10", 0x1000, 0x1000, CRC(061cabb9) SHA1(cdc8876f1c402565835db01a78906200430bcf72) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 ) // from mrdot
+ ROM_LOAD( "r8-08.bin", 0x0000, 0x1000, CRC(dbdc9ffa) SHA1(93f29fc106283eecbba3fd69cf3c4658aa38ab9f) )
+ ROM_LOAD( "n8-07.bin", 0x1000, 0x1000, CRC(4b9973db) SHA1(8766c51a345a5e63446e65614c6f665ab5fbe0d7) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "mrdigdo.d5", 0x0000, 0x1000, CRC(401f9fa5) SHA1(7483150ae429c9841d04ec4d79eda59bf1db8330) )
+ ROM_LOAD( "mrdigdo.d6", 0x1000, 0x1000, CRC(ff401f59) SHA1(5f34363ffb5e470470c3a0d9ff704f4d9b814ecd) )
+
+ ROM_REGION( 0x0080, "proms", 0 ) // from mrdot
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+ROM_START( mrdofast )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // same as mrdo except 1 rom
+ ROM_LOAD( "a4-01.bin", 0x0000, 0x2000, CRC(03dcfba2) SHA1(c15e3d0c4225e0ca120bcd28aca39632575f8e11) )
+ ROM_LOAD( "mrdofast.02", 0x2000, 0x2000, CRC(894d12e4) SHA1(ff89eca0506727f1973b14a13d848799e7ada7ec) )
+ ROM_LOAD( "e4-03.bin", 0x4000, 0x2000, CRC(358f5dc2) SHA1(9fed1f5d1d04935d1b77687c8b2f3bfce970dc08) )
+ ROM_LOAD( "f4-04.bin", 0x6000, 0x2000, CRC(f4190cfc) SHA1(24f5125d900f944294d4eda068b710c8f1c6d39f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "s8-09.bin", 0x0000, 0x1000, CRC(aa80c5b6) SHA1(76f9f90deb74598470e7ed565237da38dd07e4e9) )
+ ROM_LOAD( "u8-10.bin", 0x1000, 0x1000, CRC(d20ec85b) SHA1(9762bbe34d3fa209ea719807c723f57cb6bf4e01) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "r8-08.bin", 0x0000, 0x1000, CRC(dbdc9ffa) SHA1(93f29fc106283eecbba3fd69cf3c4658aa38ab9f) )
+ ROM_LOAD( "n8-07.bin", 0x1000, 0x1000, CRC(4b9973db) SHA1(8766c51a345a5e63446e65614c6f665ab5fbe0d7) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "h5-05.bin", 0x0000, 0x1000, CRC(e1218cc5) SHA1(d946613a1cf1c97f7533a4f8c2d0078d1b7daaa8) )
+ ROM_LOAD( "k5-06.bin", 0x1000, 0x1000, CRC(b1f68b04) SHA1(25709cd81c03df51f27cd730fecf86a1daa9e27e) )
+
+ ROM_REGION( 0x0080, "proms", 0 )
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+ROM_START( mrpac )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // from mrdo
+ ROM_LOAD( "a4-01.bin", 0x0000, 0x2000, CRC(03dcfba2) SHA1(c15e3d0c4225e0ca120bcd28aca39632575f8e11) )
+ ROM_LOAD( "c4-02.bin", 0x2000, 0x2000, CRC(0ecdd39c) SHA1(c64b3363593911a676c647bf3dba8fe063fcb0de) )
+ ROM_LOAD( "e4-03.bin", 0x4000, 0x2000, CRC(358f5dc2) SHA1(9fed1f5d1d04935d1b77687c8b2f3bfce970dc08) )
+ ROM_LOAD( "f4-04.bin", 0x6000, 0x2000, CRC(f4190cfc) SHA1(24f5125d900f944294d4eda068b710c8f1c6d39f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mrpac-s8-09", 0x0000, 0x1000, CRC(930908e5) SHA1(13666166bb6a38c0b7a8d4133a0fb6fdd7aee372) )
+ ROM_LOAD( "mrpac-u8-10", 0x1000, 0x1000, CRC(ead6d3d6) SHA1(2dc959ca1e9e2cbdc0098ce92b9a11dc24643a38) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 ) // from mrdo
+ ROM_LOAD( "r8-08.bin", 0x0000, 0x1000, CRC(dbdc9ffa) SHA1(93f29fc106283eecbba3fd69cf3c4658aa38ab9f) )
+ ROM_LOAD( "n8-07.bin", 0x1000, 0x1000, CRC(4b9973db) SHA1(8766c51a345a5e63446e65614c6f665ab5fbe0d7) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "mrpac-h5-05", 0x0000, 0x1000, CRC(de213e01) SHA1(61f3d3081dded0cc753640632127e52e4ddf0a75) )
+ ROM_LOAD( "mrpac-k5-06", 0x1000, 0x1000, CRC(c2e376a4) SHA1(d7e5fbdcd2b66ec56524e37eee18f91af96443dd) )
+
+ ROM_REGION( 0x0080, "proms", 0 ) // from mrdo
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+ROM_START( mrpacb ) // same as mrpac except for gfx1 roms
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a4-01.bin", 0x0000, 0x2000, CRC(03dcfba2) SHA1(c15e3d0c4225e0ca120bcd28aca39632575f8e11) )
+ ROM_LOAD( "c4-02.bin", 0x2000, 0x2000, CRC(0ecdd39c) SHA1(c64b3363593911a676c647bf3dba8fe063fcb0de) )
+ ROM_LOAD( "e4-03.bin", 0x4000, 0x2000, CRC(358f5dc2) SHA1(9fed1f5d1d04935d1b77687c8b2f3bfce970dc08) )
+ ROM_LOAD( "f4-04.bin", 0x6000, 0x2000, CRC(f4190cfc) SHA1(24f5125d900f944294d4eda068b710c8f1c6d39f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mrpacb-s8-09", 0x0000, 0x1000, CRC(ff01d8a0) SHA1(d3d674d8e5bfc6a133fc047bbfb21d179a322c07) )
+ ROM_LOAD( "mrpacb-u8-10", 0x1000, 0x1000, CRC(c1e9b7e8) SHA1(ea455a616597c58bfa88b5ba1069b3fb33d84a7f) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "r8-08.bin", 0x0000, 0x1000, CRC(dbdc9ffa) SHA1(93f29fc106283eecbba3fd69cf3c4658aa38ab9f) )
+ ROM_LOAD( "n8-07.bin", 0x1000, 0x1000, CRC(4b9973db) SHA1(8766c51a345a5e63446e65614c6f665ab5fbe0d7) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "mrpac-h5-05", 0x0000, 0x1000, CRC(de213e01) SHA1(61f3d3081dded0cc753640632127e52e4ddf0a75) )
+ ROM_LOAD( "mrpac-k5-06", 0x1000, 0x1000, CRC(c2e376a4) SHA1(d7e5fbdcd2b66ec56524e37eee18f91af96443dd) )
+
+ ROM_REGION( 0x0080, "proms", 0 )
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+ROM_START( newdigdo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a4-01.bin", 0x0000, 0x2000, CRC(03dcfba2) SHA1(c15e3d0c4225e0ca120bcd28aca39632575f8e11) )
+ ROM_LOAD( "c4-02.bin", 0x2000, 0x2000, CRC(0ecdd39c) SHA1(c64b3363593911a676c647bf3dba8fe063fcb0de) )
+ ROM_LOAD( "e4-03.bin", 0x4000, 0x2000, CRC(358f5dc2) SHA1(9fed1f5d1d04935d1b77687c8b2f3bfce970dc08) )
+ ROM_LOAD( "f4-04.bin", 0x6000, 0x2000, CRC(f4190cfc) SHA1(24f5125d900f944294d4eda068b710c8f1c6d39f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "nd-s8-09", 0x0000, 0x1000, CRC(48f2bd6d) SHA1(d741f58d5b7e74c498eee11cb8b959f7eec73671) )
+ ROM_LOAD( "nd-u8-10", 0x1000, 0x1000, CRC(7be2fc3e) SHA1(763f95812e35671b3815385cec5ccdaeca4b2b2a) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "nd-r8-08", 0x0000, 0x1000, CRC(069a3e35) SHA1(09a361baed6417fdb4ecc1d8dd09ae9b2ccdef99) )
+ ROM_LOAD( "nd-n8-07", 0x1000, 0x1000, CRC(7ef6f5e4) SHA1(8839f6670010c0249b19f306c200c29775dc0351) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "nd-h5-05", 0x0000, 0x1000, CRC(4c8f6cf8) SHA1(92a0a5b8178fec5f7c4214c03d7d691872fed59a) )
+ ROM_LOAD( "nd-k5-06", 0x1000, 0x1000, CRC(1a5f18fc) SHA1(58cbad50c1001dfcb302c28db183e511907e6f86) )
+
+ ROM_REGION( 0x0080, "proms", 0 )
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+ROM_START( stickydo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a4-01.bin", 0x0000, 0x2000, CRC(03dcfba2) SHA1(c15e3d0c4225e0ca120bcd28aca39632575f8e11) )
+ ROM_LOAD( "c4-02.bin", 0x2000, 0x2000, CRC(0ecdd39c) SHA1(c64b3363593911a676c647bf3dba8fe063fcb0de) )
+ ROM_LOAD( "e4-03.bin", 0x4000, 0x2000, CRC(358f5dc2) SHA1(9fed1f5d1d04935d1b77687c8b2f3bfce970dc08) )
+ ROM_LOAD( "f4-04.bin", 0x6000, 0x2000, CRC(f4190cfc) SHA1(24f5125d900f944294d4eda068b710c8f1c6d39f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "st-s8-09", 0x0000, 0x1000, CRC(0becc7bc) SHA1(d5ef21aa6f8daaf98f4c6c809504edea4fde35a1) )
+ ROM_LOAD( "st-u8-10", 0x1000, 0x1000, CRC(fc08364e) SHA1(69edf2405836511035f46cddb339e57b4eb5b2fe) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "nd-r8-08", 0x0000, 0x1000, CRC(069a3e35) SHA1(09a361baed6417fdb4ecc1d8dd09ae9b2ccdef99) )
+ ROM_LOAD( "nd-n8-07", 0x1000, 0x1000, CRC(7ef6f5e4) SHA1(8839f6670010c0249b19f306c200c29775dc0351) )
+
+ ROM_REGION( 0x2000, "gfx3", 0 )
+ ROM_LOAD( "st-h5-05", 0x0000, 0x1000, CRC(64d2f54f) SHA1(f301c0190f780bc60d03e5b752bde5e81ce5e93c) )
+ ROM_LOAD( "st-k5-06", 0x1000, 0x1000, CRC(af9b0d35) SHA1(da2d469514a3b95362dace2f48d320234a695e28) )
+
+ ROM_REGION( 0x0080, "proms", 0 )
+ ROM_LOAD( "u02--2.bin", 0x0000, 0x0020, CRC(238a65d7) SHA1(a5b20184a1989db23544296331462ec4d7be7516) )
+ ROM_LOAD( "t02--3.bin", 0x0020, 0x0020, CRC(ae263dc0) SHA1(7072c100b9d692f5bb12b0c9e304425f534481e2) )
+ ROM_LOAD( "f10--1.bin", 0x0040, 0x0020, CRC(16ee4ca2) SHA1(fcba4d103708b9711452009cd29c4f88d2f64cd3) )
+ ROM_LOAD( "j10--4.bin", 0x0060, 0x0020, CRC(ff7fe284) SHA1(3ac8e30011c1fcba0ee8f4dc932f82296c3ba143) )
+ROM_END
+
+GAME( 1998, mrdigdo, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Justin Clark", "Mr. Do! (Dig Dug sprites)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, mrdofast, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Evil Exidy Dump", "Mr. Do! (Speedup Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mrpac, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Twisty", "Mr. Pac! (Set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mrpacb, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Twisty", "Mr. Pac! (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, newdigdo, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Vic Twenty George, Jerky, Justin Clark", "Mr. Do! (Dig Dug sprites, new version)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, stickydo, mrdo, mrdo, mrdo, driver_device, 0, ROT270, "Marks Hacks", "Mr. Sticky Do!", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mslug.cpp b/docs/release/src/hbmame/drivers/mslug.cpp
new file mode 100644
index 00000000000..ceb6e224587
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mslug.cpp
@@ -0,0 +1,2747 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#if 0
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslugx )
+{
+ mslugx_install_protection();
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug3 )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->mslug3_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
+ m_sma_prot->mslug3_install_protection(m_maincpu, m_banked_cart);
+
+#endif
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug3n ) // decrypt gfx and extract sx
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug3d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->mslug3_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_sma_prot->mslug3_install_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug3fr )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_sma_prot->mslug3_install_protection(m_maincpu, m_banked_cart);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug4d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug4dh )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug4it )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug4m )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5b )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG5_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5hd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5d1 )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5fr1 )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, ms5boot )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, mslug5nd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, ms5pcbd )
+{
+ DRIVER_INIT_CALL(neogeo);
+
+ m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_sma_prot->svcpcb_s1data_decrypt(fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+ install_banked_bios();
+}
+
+
+
+#if 0
+ROM_START( mslug )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "201-p1.p1", 0x100000, 0x100000, CRC(08d8daa5) SHA1(b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) )
+
+ NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) )
+ ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) )
+ ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) )
+ ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) )
+ ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) )
+ROM_END
+#endif
+ROM_START( msboot )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "201-p1.p1", 0x100000, 0x100000, CRC(08d8daa5) SHA1(b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) )
+
+ NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "201boot.v1", 0x000000, 0x200000, CRC(2C05FD7C) SHA1(4f28bc799da0e27b2f3cde364d8c9822468abb8f) )
+ ROM_LOAD( "201boot.v2", 0x200000, 0x200000, CRC(752DE272) SHA1(1e9ffb296a1089e15b23455841ad91e8a565ba62) )
+ ROM_LOAD( "201boot.v3", 0x400000, 0x200000, CRC(AA48FAA6) SHA1(4695b9dafdc13997410cbd7954c2a7f1b5e4649d) )
+ ROM_LOAD( "201boot.v4", 0x600000, 0x200000, CRC(4264444B) SHA1(7c248e8e559c67d6e8474ec6ce5cf2e3e41235e4) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) )
+ ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) )
+ ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) )
+ ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) )
+ROM_END
+
+ROM_START( mslugeh ) /* Metal Slug - Enhance by Ydmis - (New standard weapon shotgun - 20 bombs instead of 10) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "201eh.p1", 0x100000, 0x100000, CRC(20bb97f7) SHA1(1444cad0262883b9e6c581387634d4e82a33c6bb) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) )
+
+ NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) )
+ ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) )
+ ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) )
+ ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) )
+ ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) )
+ROM_END
+
+
+
+#if 0
+ROM_START( mslug2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241-p1.p1", 0x000000, 0x100000, CRC(2a53c5da) SHA1(5a6aba482cac588a6c2c51179c95b487c6e11899) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+#endif
+ROM_START( mslug2eh ) /* Metal Slug 2 - Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh.p1", 0x000000, 0x100000, CRC(82cdf18b) SHA1(4a51e4973f7ff5d7149763502e07cf2fc8ec9f43) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2eh0 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh0.p1", 0x000000, 0x100000, CRC(d2dbae34) SHA1(6bd86bd6b3f4a08d0586efccdef457499bb53d8f) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2eh1 ) /* Metal Slug 2 - Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh1.p1", 0x000000, 0x100000, CRC(e8646c37) SHA1(f3d02a16ec6106e6c20d8c519893d532764420a6) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2eh2 ) /* Metal Slug 2 - Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh2.p1", 0x000000, 0x100000, CRC(579ecaf3) SHA1(e437ae08b265202635c963f10e497ed1788b75fa) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2eh3 ) /* Metal Slug 2 - Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh3.p1", 0x000000, 0x100000, CRC(3d37574f) SHA1(431e80d8689cdba27726265a7dab2ac7a5db71e2) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2eh4 ) /* Metal Slug 2 - Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241eh4.p1", 0x000000, 0x100000, CRC(f31a813a) SHA1(a0024fc378b7e7daa4f48049042ecb8b2551e71a) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2fr ) /* Metal Slug 2 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241fr.p1", 0x000000, 0x100000, CRC(ad0de810) SHA1(69c56326b555fb2c18228794e1a2bfd11652ec16) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241fr.c1", 0x0000000, 0x800000, CRC(7df74035) SHA1(08322a2f4e87cd125ebc5b7a98754c7a5b8e91d2) )
+ ROM_LOAD16_BYTE( "241fr.c2", 0x0000001, 0x800000, CRC(97d9525d) SHA1(451a5bdafe1f2de63b76efb7d4afab454abdfff0) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2fro ) /* [OLD] Metal Slug 2 - (mslug2fro) - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241fro.p1", 0x000000, 0x100000, CRC(b0fe22b3) SHA1(9b2d19694165d1f5e20da70b645e55294a10ef51) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241fro.c1", 0x0000000, 0x800000, CRC(44da3c4a) SHA1(72ea1c469b332d8c60816e4c965d4f46a5090baa) )
+ ROM_LOAD16_BYTE( "241fro.c2", 0x0000001, 0x800000, CRC(07c20fad) SHA1(8664950aa7569cd6594b8964f053b19a18c2d5a9) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2sh )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241sh.p1", 0x000000, 0x100000, CRC(4e4c8d1d) SHA1(bdb30f68fa1345511cbe1afcdf04c5f59d8965a1) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+ROM_START( mslug2t ) /* System11 - Metal Slug 2 Turbo - hack to remove slowdowns in gameplay */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241t.p1", 0x000000, 0x100000, CRC(df5d6fbc) SHA1(b9cc3e29afc12dc98daac9afb4f94e2cdd8b455c) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+
+
+#if 0
+ROM_START( mslugx ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250-p1.p1", 0x000000, 0x100000, CRC(81f1f60b) SHA1(4c19f2e9824e606178ac1c9d4b0516fbaa625035) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+#endif
+ROM_START( mslugxce )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250ce.p1", 0x000000, 0x100000, CRC(e75a6d64) SHA1(529130f7ebb43231e6bf1b1703266b6c09356f9c) )
+ ROM_LOAD16_WORD_SWAP( "250ce.p2", 0x100000, 0x400000, CRC(5d1c52cd) SHA1(b2b131fa845b0098cbf0750fee20b402e276483b) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxeb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250eb.p1", 0x000000, 0x100000, CRC(c41c7ddb) SHA1(1662a1fd1c35511b3091e979b55e940a9f887143) )
+ ROM_CONTINUE (0x000000, 0x100000)
+ ROM_LOAD16_WORD_SWAP( "250eb.p2", 0x100000, 0x400000, CRC(a51363d1) SHA1(7b6b3490a975ac1e549df60b9d70ccd6d2f2ba6e) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxeh ) /* Metal Slug X - Enhance by KrysoFun/KVS - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250eh.p1", 0x000000, 0x100000, CRC(2e110dd7) SHA1(4ce18a726103bc7c1972125806b2c89332338050) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxeh1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250eh1.p1", 0x000000, 0x100000, CRC(2b016e87) SHA1(ab99da64a084f5fef75d9647182a42d7e72bd4c4) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxex )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250ex.p1", 0x000000, 0x100000, CRC(7b751398) SHA1(6149b81b5fb4e9b501a7b119b030df432985b409) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxfe )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250fe.p1", 0x000000, 0x100000, CRC(5a8b3db8) SHA1(7324aad0cc33f6b11b0350ca9d80246a412994d4) )
+ ROM_IGNORE( 0x354f47 )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxfr ) /* Metal Slug X - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250fr.p1", 0x000000, 0x100000, CRC(58a64443) SHA1(ab07993de04eb65f89bab5d4b6e473d7ecbc8ff1) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250fr.c1", 0x0000000, 0x800000, CRC(eb7ce1ff) SHA1(e519b53c6938451f9bfb4d15c10baa7f152ecfcd) )
+ ROM_LOAD16_BYTE( "250fr.c2", 0x0000001, 0x800000, CRC(45c7e401) SHA1(b71754cc746631f1a70c09ef564c7be11aa577e9) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxfro ) /* [OLD] Metal Slug X - (mslugxfro) - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250fro.p1", 0x000000, 0x100000, CRC(4dadf4f3) SHA1(e37e53370cd6b03bb0e2b8266f635ce7980de45b) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250fr.c1", 0x0000000, 0x800000, CRC(eb7ce1ff) SHA1(e519b53c6938451f9bfb4d15c10baa7f152ecfcd) )
+ ROM_LOAD16_BYTE( "250fr.c2", 0x0000001, 0x800000, CRC(45c7e401) SHA1(b71754cc746631f1a70c09ef564c7be11aa577e9) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxhp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250-p1.p1", 0x000000, 0x100000, CRC(81f1f60b) SHA1(4c19f2e9824e606178ac1c9d4b0516fbaa625035) )
+ ROM_LOAD16_WORD_SWAP( "250hp.p2", 0x100000, 0x400000, CRC(eac6830a) SHA1(27927f5341c128f93d74113514f2d099d01acbdf) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxit )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250it.p1", 0x000000, 0x100000, CRC(f3e154ea) SHA1(bb8260deefa7b048772625085e6f41cab717a147) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxjdkj )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250jdkj.p1", 0x000000, 0x100000, CRC(4c1b90b1) SHA1(6127e60a6ef0daf82506c46e8344e1a4064b5186) )
+ ROM_IGNORE( 0x354f47 )
+ ROM_LOAD16_WORD_SWAP( "250svb.p2", 0x100000, 0x400000, CRC(6a114e1a) SHA1(3da62274252d36226dcccda0e05593f7f18c7193) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxmfb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250mfb.p1", 0x000000, 0x100000, CRC(bd3611dc) SHA1(9c27f8a10f0a0da051b15cf42e6aed8f60abd309) )
+ ROM_LOAD16_WORD_SWAP( "250mfb.p2", 0x100000, 0x400000, CRC(7b47677c) SHA1(af42d01b6fb3c288b1750b9960c11020bc12b7b4) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250p.p1", 0x000000, 0x100000, CRC(e65937fc) SHA1(128af1815a23962de02384d61ff52869ae14cea1) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxr )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250r.p1", 0x000000, 0x100000, CRC(e74f36c2) SHA1(b17d66f36e6ac31433179566ea07a0ed8790b161) )
+ ROM_LOAD16_WORD_SWAP( "250r.p2", 0x100000, 0x400000, CRC(e954b8aa) SHA1(b339b1fd05d50ac3a9d3992bb0fc8e3fd1a95557) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxres )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250res.p1", 0x000000, 0x100000, CRC(d69fb994) SHA1(2cbffae29b92ef4b8f90e01488f89654a42a8596) )
+ ROM_LOAD16_WORD_SWAP( "250ce.p2", 0x100000, 0x400000, CRC(5d1c52cd) SHA1(b2b131fa845b0098cbf0750fee20b402e276483b) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxsef )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250sef.p1", 0x000000, 0x100000, CRC(aae5130c) SHA1(08b5fde0b809d0e68e89e6ef07fc83d7aedc8593) )
+ ROM_LOAD16_WORD_SWAP( "250mfb.p2", 0x100000, 0x400000, CRC(7b47677c) SHA1(af42d01b6fb3c288b1750b9960c11020bc12b7b4) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxst )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250st.p1", 0x000000, 0x100000, CRC(db88d115) SHA1(627d01c4d4bd6c4cfeac5f14859fe9a7026370b0) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+ROM_START( mslugxsvb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250svb.p1", 0x000000, 0x100000, CRC(4619b7de) SHA1(b1b1875f15528a12408ad477a9b1759ba74ec0d2) )
+ ROM_LOAD16_WORD_SWAP( "250svb.p2", 0x100000, 0x400000, CRC(6a114e1a) SHA1(3da62274252d36226dcccda0e05593f7f18c7193) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+
+
+#if 0
+ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 2000.4.1 */ /* MVS VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(9cd55736) SHA1(d6efb2b313127c2911d47d9324626b3f1e7c6ccb) )
+ ROM_LOAD16_WORD_SWAP( "256-pg1.p1", 0x100000, 0x400000, CRC(b07edfd5) SHA1(dcbd9e500bfae98d754e55cdbbbbf9401013f8ee) )
+ ROM_LOAD16_WORD_SWAP( "256-pg2.p2", 0x500000, 0x400000, CRC(6097c26b) SHA1(248ec29d21216f29dc6f5f3f0e1ad1601b3501b6) )
+
+ ROM_Y_ZOOM
+
+ /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
+ ROM_REGION( 0x80000, "fixed", 0 ) /* larger char set */
+ ROM_FILL( 0x000000, 0x20000, 0 )
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+#endif
+ROM_START( mslug3d )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(9cd55736) SHA1(d6efb2b313127c2911d47d9324626b3f1e7c6ccb) )
+ ROM_LOAD16_WORD_SWAP( "256-pg1.p1", 0x100000, 0x400000, CRC(b07edfd5) SHA1(dcbd9e500bfae98d754e55cdbbbbf9401013f8ee) )
+ ROM_LOAD16_WORD_SWAP( "256-pg2.p2", 0x500000, 0x400000, CRC(6097c26b) SHA1(248ec29d21216f29dc6f5f3f0e1ad1601b3501b6) )
+
+ //NEO_SFIX_128K( "256d.s1", CRC(6d9d4d0a) SHA1(4237247494aa0d734ffc728c7fc2808aca42539e) )
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256d.c1", 0x0000000, 0x800000, CRC(3540398c) SHA1(0a96f2360eb26c66bf02bbc6f52230b55cc95e4e) )
+ ROM_LOAD16_BYTE( "256d.c2", 0x0000001, 0x800000, CRC(bdd220f0) SHA1(f52851023f3bc120b05f622af0e0ab1bedc41604) )
+ ROM_LOAD16_BYTE( "256d.c3", 0x1000000, 0x800000, CRC(bfaade82) SHA1(66b07e592c9a9b35567fe463496f8f75c32a7db9) )
+ ROM_LOAD16_BYTE( "256d.c4", 0x1000001, 0x800000, CRC(1463add6) SHA1(4db91b46d6430da272d27d00a6dc0eb25949bea1) )
+ ROM_LOAD16_BYTE( "256d.c5", 0x2000000, 0x800000, CRC(48ca7f28) SHA1(e903876be5fb4fa582c988d74c6bef1c3b9c7083) )
+ ROM_LOAD16_BYTE( "256d.c6", 0x2000001, 0x800000, CRC(806eb36f) SHA1(a412a9cab80c326733dde7652d1db2a46afb3ebb) )
+ ROM_LOAD16_BYTE( "256d.c7", 0x3000000, 0x800000, CRC(9395b809) SHA1(ca9ac9832017094eee3623f0b6c4c4b7b4f1374d) )
+ ROM_LOAD16_BYTE( "256d.c8", 0x3000001, 0x800000, CRC(a369f9d4) SHA1(f8146ea80a1a23da7e7e04c88f778ee9abdfeb5c) )
+ROM_END
+
+ROM_START( mslug3e02 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e02.p1", 0x000000, 0x100000, CRC(c9cf4ef8) SHA1(e1e10dcea6ce0c8b6939250adaa167e950069760) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e03 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e03.p1", 0x000000, 0x100000, CRC(77f64aa6) SHA1(8aa93f67e55461019dc677cb6f96ead3771232d1) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e04 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e04.p1", 0x000000, 0x100000, CRC(09e9fe91) SHA1(573bd25c77e79de85396812bb7632be8d93bdaa6) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e05 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e05.p1", 0x000000, 0x100000, CRC(c1a91748) SHA1(07227283b7fe0e040962a84bc345b231fe6417e3) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e06 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e06.p1", 0x000000, 0x100000, CRC(812cdce7) SHA1(5249bc026471c1abb2d37b2ac03267b3349a6345) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e07 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e07.p1", 0x000000, 0x100000, CRC(bb123461) SHA1(26a8fbb7792ebbd1052a09a78a38a72901644902) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e08 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e08.p1", 0x000000, 0x100000, CRC(7666aad5) SHA1(3d55be31a158501d74994a5abf31d6928626d7e3) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e09 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e09.p1", 0x000000, 0x100000, CRC(be26430c) SHA1(ee4d070885032bc5c2699d8c0b5abe7d1d7bc6cc) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e10 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e10.p1", 0x000000, 0x100000, CRC(e510ae7e) SHA1(35183a58c11e78c9da08643853c2b06eed74b87c) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e11 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e11.p1", 0x000000, 0x100000, CRC(2d5047a7) SHA1(89e720e8ccddbbc81c923ad8f7e5a371f9f0ecfc) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e12 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e12.p1", 0x000000, 0x100000, CRC(410a6c8e) SHA1(d89aaa1a6fa46c20a84b8fafd83c66fe43a93e86) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e13 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e13.p1", 0x000000, 0x100000, CRC(642335cb) SHA1(a17e7a48759a7589a3baf5ff4f69c937954de44c) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e14 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e14.p1", 0x000000, 0x100000, CRC(3e8538ca) SHA1(148732165a081bec2f7bdefc79ce7a2db6a2998d) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e15 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e15.p1", 0x000000, 0x100000, CRC(f6c5d113) SHA1(555ce0ea6c7d3003c9239de8b7a580295096e9ff) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e16 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e16.p1", 0x000000, 0x100000, CRC(52df13e3) SHA1(9e24404b687284540d21b3be512108da1f1e2bbf) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e17 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e17.p1", 0x000000, 0x100000, CRC(9a9ffa3a) SHA1(3ce3ba9048aa94543a03798c710c4bea4075a072) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e18 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e18.p1", 0x000000, 0x100000, CRC(1a3c81fc) SHA1(b6f2ed4cb2b7f3f3dd3ef1bc97780ef136b2a82c) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e19 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e19.p1", 0x000000, 0x100000, CRC(d27c6825) SHA1(d58d0db2378f0541c18dd60fc933614537572dc7) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e20 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e20.p1", 0x000000, 0x100000, CRC(e4804e0d) SHA1(9d47e69e8ff737a977c9470a59024da7af35db9c) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e21 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e21.p1", 0x000000, 0x100000, CRC(2cc0a7d4) SHA1(7f640067d653c8c0b66ba3c33d0e948497786acf) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3e22 ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256e22.p1", 0x000000, 0x100000, CRC(7d648368) SHA1(d637a17d777f59596ad1b67b7898f182f8f4d577) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3eb )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "mslug3eb.sma", 0x0c0000, 0x040000, CRC(2a9935c2) SHA1(f39d47b0b6fbe0e741777d47fbaf37008c4e0599) )
+ ROM_LOAD16_WORD_SWAP( "256eb.p1", 0x100000, 0x400000, CRC(6ec2e58d) SHA1(d83dd522a5c8a8b4bd32722967e3d934d2e73e08) )
+ ROM_LOAD16_WORD_SWAP( "256eb.p2", 0x500000, 0x400000, CRC(ca4eb0d3) SHA1(eafd000ae27c0b904aea50f681f98ab67068da20) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3eha ) /* Metal Slug 3 - Super Enhance by HappyAsr - (Style remix 20030826) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256eha.p1", 0x000000, 0x100000, CRC(e04c6624) SHA1(de684f346ab9a2e5730a6753de6d53801a702cc8) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3ehs ) /* Metal Slug 3 - Super Enhance by Ydmis - (Style remix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256ehs.p1", 0x000000, 0x100000, CRC(bfb6a37f) SHA1(2ed7fc7936d732ff55f629612434f1d72c09976e) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3fr ) /* [OLD] Metal Slug 3 N - (mslug3fro) - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256fr.p1", 0x000000, 0x100000, CRC(1f5fcb35) SHA1(387e0e0121a26254991b446d6bbdf755cf2e3ad2) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256fr.c1", 0x0000000, 0x800000, CRC(6ac28a9f) SHA1(9dae9703d20af3644456eda228ea7fb52fe67bd7) )
+ ROM_LOAD16_BYTE( "256fr.c2", 0x0000001, 0x800000, CRC(C9725CD0) SHA1(59A0A2778AE35DDCAC17FBA05A81F3DA5EACA1F1) )
+ ROM_LOAD16_BYTE( "256d.c3", 0x1000000, 0x800000, CRC(bfaade82) SHA1(66b07e592c9a9b35567fe463496f8f75c32a7db9) )
+ ROM_LOAD16_BYTE( "256d.c4", 0x1000001, 0x800000, CRC(1463add6) SHA1(4db91b46d6430da272d27d00a6dc0eb25949bea1) )
+ ROM_LOAD16_BYTE( "256d.c5", 0x2000000, 0x800000, CRC(48ca7f28) SHA1(e903876be5fb4fa582c988d74c6bef1c3b9c7083) )
+ ROM_LOAD16_BYTE( "256d.c6", 0x2000001, 0x800000, CRC(806eb36f) SHA1(a412a9cab80c326733dde7652d1db2a46afb3ebb) )
+ ROM_LOAD16_BYTE( "256d.c7", 0x3000000, 0x800000, CRC(9395b809) SHA1(ca9ac9832017094eee3623f0b6c4c4b7b4f1374d) )
+ ROM_LOAD16_BYTE( "256d.c8", 0x3000001, 0x800000, CRC(a369f9d4) SHA1(f8146ea80a1a23da7e7e04c88f778ee9abdfeb5c) )
+ROM_END
+
+ROM_START( mslug3fro ) /* Metal Slug 3 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256fro.p1", 0x000000, 0x100000, CRC(ce3f408b) SHA1(c2752af1dd4373c37e90b2e718ab7ae038535ea1) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256fro.c1", 0x0000000, 0x800000, CRC(d799f41c) SHA1(d87cda305d054c56197112ba515299883d419bb4) )
+ ROM_LOAD16_BYTE( "256fr.c2", 0x0000001, 0x800000, CRC(C9725CD0) SHA1(59A0A2778AE35DDCAC17FBA05A81F3DA5EACA1F1) )
+ ROM_LOAD16_BYTE( "256d.c3", 0x1000000, 0x800000, CRC(bfaade82) SHA1(66b07e592c9a9b35567fe463496f8f75c32a7db9) )
+ ROM_LOAD16_BYTE( "256d.c4", 0x1000001, 0x800000, CRC(1463add6) SHA1(4db91b46d6430da272d27d00a6dc0eb25949bea1) )
+ ROM_LOAD16_BYTE( "256d.c5", 0x2000000, 0x800000, CRC(48ca7f28) SHA1(e903876be5fb4fa582c988d74c6bef1c3b9c7083) )
+ ROM_LOAD16_BYTE( "256d.c6", 0x2000001, 0x800000, CRC(806eb36f) SHA1(a412a9cab80c326733dde7652d1db2a46afb3ebb) )
+ ROM_LOAD16_BYTE( "256d.c7", 0x3000000, 0x800000, CRC(9395b809) SHA1(ca9ac9832017094eee3623f0b6c4c4b7b4f1374d) )
+ ROM_LOAD16_BYTE( "256d.c8", 0x3000001, 0x800000, CRC(a369f9d4) SHA1(f8146ea80a1a23da7e7e04c88f778ee9abdfeb5c) )
+ROM_END
+
+ROM_START( mslug3hev ) // all confirmed: mslug3ehs with new p1
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256hev.p1", 0x000000, 0x100000, CRC(c824bccc) SHA1(cfe0caff7eedd33e98cdb66d3104b11597f62089) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3kh ) /* Metal Slug 3 - Enhance by Fighters Kim and Ydmis - (Style remix 20030801) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256kh.p1", 0x000000, 0x100000, CRC(696aa1b4) SHA1(2e72191f12f4cbbddda1350fbe859e8bc70be62f) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3kho ) /* [OLD] Metal Slug 3 - Enhance by Fighters Kim and Ydmis - (See mslug3kho.txt for info 20030728) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256kho.p1", 0x000000, 0x100000, CRC(820567e4) SHA1(c23d58e3c5c185715bb65839f4a6a04767992f3d) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3nd ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256nd.p1", 0x000000, 0x100000, CRC(9c42ca85) SHA1(7a8f77a89867b889295ae9b9dfd4ba28f02d234d) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MT_512K
+ //NEO_SFIX_MSLUG( "256nd.s1", CRC(6d9d4d0a) SHA1(4237247494aa0d734ffc728c7fc2808aca42539e) ) // this is missing the high score text
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256d.c1", 0x0000000, 0x800000, CRC(3540398c) SHA1(0a96f2360eb26c66bf02bbc6f52230b55cc95e4e) )
+ ROM_LOAD16_BYTE( "256d.c2", 0x0000001, 0x800000, CRC(bdd220f0) SHA1(f52851023f3bc120b05f622af0e0ab1bedc41604) )
+ ROM_LOAD16_BYTE( "256d.c3", 0x1000000, 0x800000, CRC(bfaade82) SHA1(66b07e592c9a9b35567fe463496f8f75c32a7db9) )
+ ROM_LOAD16_BYTE( "256d.c4", 0x1000001, 0x800000, CRC(1463add6) SHA1(4db91b46d6430da272d27d00a6dc0eb25949bea1) )
+ ROM_LOAD16_BYTE( "256d.c5", 0x2000000, 0x800000, CRC(48ca7f28) SHA1(e903876be5fb4fa582c988d74c6bef1c3b9c7083) )
+ ROM_LOAD16_BYTE( "256d.c6", 0x2000001, 0x800000, CRC(806eb36f) SHA1(a412a9cab80c326733dde7652d1db2a46afb3ebb) )
+ ROM_LOAD16_BYTE( "256d.c7", 0x3000000, 0x800000, CRC(9395b809) SHA1(ca9ac9832017094eee3623f0b6c4c4b7b4f1374d) )
+ ROM_LOAD16_BYTE( "256d.c8", 0x3000001, 0x800000, CRC(a369f9d4) SHA1(f8146ea80a1a23da7e7e04c88f778ee9abdfeb5c) )
+ROM_END
+
+ROM_START( mslug3v ) // extreme violence
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256v.p1", 0x000000, 0x100000, CRC(47f9aeea) SHA1(db1c65681ac12b146e2fa21a8f28000f41a11fe2) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+
+ NEO_SFIX_MSLUG( "256v.s1", CRC(6f8b9635) SHA1(86b0c8c0ccac913c6192ed6a96c35d4e1a5e8061) )
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+
+
+#if 0
+ROM_START( mslug4 ) /* Original Version - Encrypted GFX */ /* MVS VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263-p1.p1", 0x000000, 0x100000, CRC(27e4def3) SHA1(a08785e8145981bb6b5332a3b2df7eb321253cca) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ ROM_Y_ZOOM
+
+ /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
+ ROM_REGION( 0x80000, "fixed", 0 ) /* larger char set */
+ ROM_FILL( 0x000000, 0x20000, 0 )
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.m1", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+#endif
+ROM_START( mslug4d )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263-p1.p1", 0x000000, 0x100000, CRC(27e4def3) SHA1(a08785e8145981bb6b5332a3b2df7eb321253cca) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263d.c1", 0x0000000, 0x800000, CRC(a75ffcde) SHA1(97f405a95a56615ae49f79e1a69f98cc2f2434ef) )
+ ROM_LOAD16_BYTE( "263d.c2", 0x0000001, 0x800000, CRC(5ab0d12b) SHA1(8a3d95dd2e9cc1b6dcf6a957fed43ee390248307) )
+ ROM_LOAD16_BYTE( "263d.c3", 0x1000000, 0x800000, CRC(61af560c) SHA1(aa7bc45e03a6bbd18eb56d118d4932102ccb196a) )
+ ROM_LOAD16_BYTE( "263d.c4", 0x1000001, 0x800000, CRC(f2c544fd) SHA1(179b064f81b49f5808d7a7a5bce28e95b09e5abe) )
+ ROM_LOAD16_BYTE( "263d.c5", 0x2000000, 0x800000, CRC(84c66c44) SHA1(9273f44bf11891aa04ddd2cbb6442d084c2a2e04) )
+ ROM_LOAD16_BYTE( "263d.c6", 0x2000001, 0x800000, CRC(5ed018ab) SHA1(e78501fa8a80960093a4d54ce952681a98300148) )
+ROM_END
+
+ROM_START( mslug4dh ) // Super D Version
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263dh.p1", 0x000000, 0x100000, CRC(af69d959) SHA1(2bc9796003c8742d681e11ad842978d918fbae40) )
+ ROM_LOAD16_WORD_SWAP( "263dh.p2", 0x100000, 0x400000, CRC(2b863b30) SHA1(b5edc43d87faf6540e3154fcbab42efb148cbd04) )
+
+ NEO_SFIX_MSLUG( "263dh.s1", CRC(c4f4ed0e) SHA1(bbf31c879d72cc843229b03db01399af98e02f01) )
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263dh.v1", 0x000000, 0x800000, CRC(fd6b982e) SHA1(100313166c9ec57f1c540de05625c506b30ad13c) )
+ ROM_LOAD( "263dh.v2", 0x800000, 0x800000, CRC(20125227) SHA1(2e350c0c580e87445bf103c01fc62b14f0c19216) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263d.c1", 0x0000000, 0x800000, CRC(a75ffcde) SHA1(97f405a95a56615ae49f79e1a69f98cc2f2434ef) )
+ ROM_LOAD16_BYTE( "263d.c2", 0x0000001, 0x800000, CRC(5ab0d12b) SHA1(8a3d95dd2e9cc1b6dcf6a957fed43ee390248307) )
+ ROM_LOAD16_BYTE( "263d.c3", 0x1000000, 0x800000, CRC(61af560c) SHA1(aa7bc45e03a6bbd18eb56d118d4932102ccb196a) )
+ ROM_LOAD16_BYTE( "263d.c4", 0x1000001, 0x800000, CRC(f2c544fd) SHA1(179b064f81b49f5808d7a7a5bce28e95b09e5abe) )
+ ROM_LOAD16_BYTE( "263d.c5", 0x2000000, 0x800000, CRC(84c66c44) SHA1(9273f44bf11891aa04ddd2cbb6442d084c2a2e04) )
+ ROM_LOAD16_BYTE( "263d.c6", 0x2000001, 0x800000, CRC(5ed018ab) SHA1(e78501fa8a80960093a4d54ce952681a98300148) )
+ROM_END
+
+ROM_START( mslug4dh1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263dh.p1", 0x000000, 0x100000, CRC(af69d959) SHA1(2bc9796003c8742d681e11ad842978d918fbae40) )
+ ROM_LOAD16_WORD_SWAP( "263dh.p2", 0x100000, 0x400000, CRC(2b863b30) SHA1(b5edc43d87faf6540e3154fcbab42efb148cbd04) )
+
+ NEO_SFIX_128K( "263-s1.s1", CRC(a9446774) SHA1(c5a309fd8ee6d6750a15c82e710218a3755e38b2) )
+
+ NEO_BIOS_AUDIO_128K( "263nd.m1", CRC(ef5db532) SHA1(4aeba9e206b8f309610eb7e1891644f39aa61830) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263nd.v1", 0x000000, 0x400000, CRC(c1b2af81) SHA1(532dca0a2b2e03d50c6ac3adc9ebceb413f61690) )
+ ROM_LOAD( "263nd.v2", 0x400000, 0x400000, CRC(cbbdc6fa) SHA1(06abb738cf198804248ecfc92adea38f7f86f612) )
+ ROM_LOAD( "263nd.v3", 0x800000, 0x400000, CRC(c4f1a3cc) SHA1(109e8db93875e1b1f3db293d1756b2bbebe63a28) )
+ ROM_LOAD( "263nd.v4", 0xC00000, 0x400000, CRC(40126a0a) SHA1(4234e0f4d9a9dc486d7af1eec91a17840a57976d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263nd.c1", 0x0000000, 0x800000, CRC(361ddda6) SHA1(95f329019660f1ec7f15f6ea1e0c2bfc84b02ca8) )
+ ROM_LOAD16_BYTE( "263nd.c2", 0x0000001, 0x800000, CRC(15d192c4) SHA1(0b9afb62a1d4d764d616408b09e17a05fc4a87e7) )
+ ROM_LOAD16_BYTE( "263nd.c3", 0x1000000, 0x800000, CRC(63fb79ff) SHA1(a7da0a554034792721abda4369a71b0c8045f334) )
+ ROM_LOAD16_BYTE( "263nd.c4", 0x1000001, 0x800000, CRC(e8623126) SHA1(66c2b874cd55c628e7e6768d6f31180c29a734e7) )
+ ROM_LOAD16_BYTE( "263nd.c5", 0x2000000, 0x400000, CRC(3348DC5D) SHA1(a119e80aa2b36a7d8c7e8debd0eb13441a19adff) )
+ ROM_LOAD16_BYTE( "263nd.c6", 0x2000001, 0x400000, CRC(D90FC1A0) SHA1(0eaf5f658212c19a4cdbcdbff3b04389a2be76bb) )
+ROM_END
+
+ROM_START( mslug4eh ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh.p1", 0x000000, 0x100000, CRC(42866fc5) SHA1(0ef57352b28fae2b884dfc021a2fd0bdf36456cb) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eh2 ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh2.p1", 0x000000, 0x100000, CRC(2cb01721) SHA1(9a7e3a28f9f26848f36fa19d66ae9b7588e8dd7e) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eh3 ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh3.p1", 0x000000, 0x100000, CRC(628f101f) SHA1(fc787b550c788dd8d8207927d679dd8ad7b50eb1) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eh4 ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh4.p1", 0x000000, 0x100000, CRC(3d08cdbd) SHA1(b311a52c794e3ffc623dff6ead91ccd79c2f2af9) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eh5 ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh5.p1", 0x000000, 0x100000, CRC(35d4a0f3) SHA1(94c55dfe8d00c1920b14fc1770a626fd4bdec325) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eh6 ) /* Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eh6.p1", 0x000000, 0x100000, CRC(246c7a6f) SHA1(46607bbd256b3af5092526f8dd57e0b211e55d88) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4eho ) /* [OLD] Metal Slug 4 - Enhance by Creamymami - (Style remix 20030414) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263eho.p1", 0x000000, 0x100000, CRC(41fea527) SHA1(17a8cf630b2ad6e58c51a2f1d01ceff2d1ef970e) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4fr ) /* Metal Slug 4 - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263fr.p1", 0x000000, 0x100000, CRC(a1343a37) SHA1(23ead1154427c67881b4670fd8ecf5089e32ac0b) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4i ) /* NeoArc Italian translation */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263i.p1", 0x000000, 0x100000, CRC(ffb20602) SHA1(4d3103d613a2452c95ae15b70670664354dce67b) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MSLUG( "263i.s1", CRC(1f67801e) SHA1(87c33e74599ca063da459f3c8562447bccc104e3) )
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4i1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263i.p1", 0x000000, 0x100000, CRC(ffb20602) SHA1(4d3103d613a2452c95ae15b70670664354dce67b) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_128K( "263i.s1", CRC(1f67801e) SHA1(87c33e74599ca063da459f3c8562447bccc104e3) )
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263nd.v1", 0x000000, 0x400000, CRC(c1b2af81) SHA1(532dca0a2b2e03d50c6ac3adc9ebceb413f61690) )
+ ROM_LOAD( "263nd.v2", 0x400000, 0x400000, CRC(cbbdc6fa) SHA1(06abb738cf198804248ecfc92adea38f7f86f612) )
+ ROM_LOAD( "263nd.v3", 0x800000, 0x400000, CRC(c4f1a3cc) SHA1(109e8db93875e1b1f3db293d1756b2bbebe63a28) )
+ ROM_LOAD( "263nd.v4", 0xC00000, 0x400000, CRC(40126a0a) SHA1(4234e0f4d9a9dc486d7af1eec91a17840a57976d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263nd.c1", 0x0000000, 0x800000, CRC(361ddda6) SHA1(95f329019660f1ec7f15f6ea1e0c2bfc84b02ca8) )
+ ROM_LOAD16_BYTE( "263nd.c2", 0x0000001, 0x800000, CRC(15d192c4) SHA1(0b9afb62a1d4d764d616408b09e17a05fc4a87e7) )
+ ROM_LOAD16_BYTE( "263nd.c3", 0x1000000, 0x800000, CRC(63fb79ff) SHA1(a7da0a554034792721abda4369a71b0c8045f334) )
+ ROM_LOAD16_BYTE( "263nd.c4", 0x1000001, 0x800000, CRC(e8623126) SHA1(66c2b874cd55c628e7e6768d6f31180c29a734e7) )
+ ROM_LOAD16_BYTE( "263nd.c5", 0x2000000, 0x400000, CRC(3348DC5D) SHA1(a119e80aa2b36a7d8c7e8debd0eb13441a19adff) )
+ ROM_LOAD16_BYTE( "263nd.c6", 0x2000001, 0x400000, CRC(D90FC1A0) SHA1(0eaf5f658212c19a4cdbcdbff3b04389a2be76bb) )
+ROM_END
+
+ROM_START( mslug4kh ) /* Metal Slug 4 - Enhance by Creamymami and Fighters Kim - (Style remix 20030731) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263kh.p1", 0x000000, 0x100000, CRC(883680c2) SHA1(9ba71d9cf4eb8615cf6fe94b74c6436876dcb0b2) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_64K( "263d.m1", CRC(0c4c42f8) SHA1(b7be47d909f5e4fcfe769ead0653d40e1e708d36) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4lw )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263lw.p1", 0x000000, 0x100000, CRC(783438fa) SHA1(7c15f902a319fb7c769c21bb1a860216a9691354) )
+ ROM_LOAD16_WORD_SWAP( "263lw.p2", 0x100000, 0x800000, CRC(5c897ae8) SHA1(d92739fc76b156447ffb3c18a93481d7f036d228) )
+
+ NEO_SFIX_128K( "263-s1.s1", CRC(a9446774) SHA1(c5a309fd8ee6d6750a15c82e710218a3755e38b2) )
+
+ NEO_BIOS_AUDIO_128K( "263nd.m1", CRC(ef5db532) SHA1(4aeba9e206b8f309610eb7e1891644f39aa61830) )
+
+ ROM_REGION( 0x1400000, "ymsnd", 0 )
+ ROM_LOAD( "263lw.v1", 0x000000, 0x400000, CRC(8cb5a9ef) SHA1(272ad312f8694acf9190ebf48d1c8a5fec73c130) )
+ ROM_LOAD( "263lw.v2", 0x400000, 0x400000, CRC(94217b1e) SHA1(c468a192e2ec0952a20cfd9e391cf6c12346efb3) )
+ ROM_LOAD( "263lw.v3", 0x800000, 0x400000, CRC(7616fcec) SHA1(83006094379d0373b967603dcaa1cec69c2f746f) )
+ ROM_LOAD( "263lw.v4", 0xC00000, 0x800000, CRC(6ac7ed2f) SHA1(4beb76d149e9e3d8b2c760a468d47fca260b2842) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263nd.c1", 0x0000000, 0x800000, CRC(361ddda6) SHA1(95f329019660f1ec7f15f6ea1e0c2bfc84b02ca8) )
+ ROM_LOAD16_BYTE( "263nd.c2", 0x0000001, 0x800000, CRC(15d192c4) SHA1(0b9afb62a1d4d764d616408b09e17a05fc4a87e7) )
+ ROM_LOAD16_BYTE( "263lw.c3", 0x1000000, 0x800000, CRC(e296612c) SHA1(57eb1861b738247aaf0643641268f676b71ed025) )
+ ROM_LOAD16_BYTE( "263lw.c4", 0x1000001, 0x800000, CRC(c22e3ad0) SHA1(11ce301d4e5b4b1b76e2b82d18c4a9b8b56eeb20) )
+ ROM_LOAD16_BYTE( "263lw.c5", 0x2000000, 0x400000, CRC(288cd91f) SHA1(a195be13d4ef19705cd3f08be1ec8cdacb29f159) )
+ ROM_LOAD16_BYTE( "263lw.c6", 0x2000001, 0x400000, CRC(b015aeee) SHA1(24e12e72b82eea9e52a4cefc774efb3bd7db822f) )
+ROM_END
+
+ROM_START( mslug4nd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263nd.p1", 0x000000, 0x100000, CRC(4D7E6624) SHA1(125d5203e89cce23a851fa74cc8cbe003ef978f3) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_128K( "263-s1.s1", CRC(a9446774) SHA1(c5a309fd8ee6d6750a15c82e710218a3755e38b2) )
+
+ NEO_BIOS_AUDIO_128K( "263nd.m1", CRC(ef5db532) SHA1(4aeba9e206b8f309610eb7e1891644f39aa61830) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263nd.v1", 0x000000, 0x400000, CRC(c1b2af81) SHA1(532dca0a2b2e03d50c6ac3adc9ebceb413f61690) )
+ ROM_LOAD( "263nd.v2", 0x400000, 0x400000, CRC(cbbdc6fa) SHA1(06abb738cf198804248ecfc92adea38f7f86f612) )
+ ROM_LOAD( "263nd.v3", 0x800000, 0x400000, CRC(c4f1a3cc) SHA1(109e8db93875e1b1f3db293d1756b2bbebe63a28) )
+ ROM_LOAD( "263nd.v4", 0xC00000, 0x400000, CRC(40126a0a) SHA1(4234e0f4d9a9dc486d7af1eec91a17840a57976d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263nd.c1", 0x0000000, 0x800000, CRC(361ddda6) SHA1(95f329019660f1ec7f15f6ea1e0c2bfc84b02ca8) )
+ ROM_LOAD16_BYTE( "263nd.c2", 0x0000001, 0x800000, CRC(15d192c4) SHA1(0b9afb62a1d4d764d616408b09e17a05fc4a87e7) )
+ ROM_LOAD16_BYTE( "263nd.c3", 0x1000000, 0x800000, CRC(63fb79ff) SHA1(a7da0a554034792721abda4369a71b0c8045f334) )
+ ROM_LOAD16_BYTE( "263nd.c4", 0x1000001, 0x800000, CRC(e8623126) SHA1(66c2b874cd55c628e7e6768d6f31180c29a734e7) )
+ ROM_LOAD16_BYTE( "263nd.c5", 0x2000000, 0x400000, CRC(3348DC5D) SHA1(a119e80aa2b36a7d8c7e8debd0eb13441a19adff) )
+ ROM_LOAD16_BYTE( "263nd.c6", 0x2000001, 0x400000, CRC(D90FC1A0) SHA1(0eaf5f658212c19a4cdbcdbff3b04389a2be76bb) )
+ROM_END
+
+ROM_START( mslug4sp ) // all confirmed: same as mslug4 except p roms
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263sp.p1", 0x000000, 0x100000, CRC(44b6f3d7) SHA1(d6c9b84e1758f731be21c7506ffb5c8837fbc19c) )
+ ROM_LOAD16_WORD_SWAP( "263dh.p2", 0x100000, 0x400000, CRC(2b863b30) SHA1(b5edc43d87faf6540e3154fcbab42efb148cbd04) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.m1", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+
+
+#if 0
+ROM_START( mslug5 ) /* Encrypted Set */ /* MVS VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1cr.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
+ ROM_LOAD32_WORD_SWAP( "268-p2cr.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
+
+ ROM_Y_ZOOM
+
+ /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
+ ROM_REGION( 0x20000, "fixed", 0 )
+ ROM_FILL( 0x000000, 0x20000, 0 )
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+#endif
+ROM_START( ms5boot ) /* Bootleg / Hack of Metal Slug 5 */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ // not sure if it's actually bad, or some weird protection
+ ROM_LOAD16_WORD_SWAP( "268boot.p1", 0x000000, 0x100000, BAD_DUMP CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
+ // this one fixes all the issues
+ ROM_LOAD16_WORD_SWAP( "268nd.p1", 0x000000, 0x100000, CRC(ca50afdf) SHA1(e3780b77f20d139a0dcaa2ded2c6ee323b8b4279) )
+ ROM_LOAD16_WORD_SWAP( "268boot.p2", 0x100000, 0x100000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
+ ROM_CONTINUE(0x300000, 0x100000 )
+ ROM_LOAD16_WORD_SWAP( "268boot.p3", 0x200000, 0x100000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )
+ ROM_CONTINUE(0x400000, 0x100000 )
+
+ NEO_SFIX_MT_512K
+ //NEO_SFIX_MSLUG( "268boot.s1", CRC(52a8c09b) SHA1(3a90d8e44aa7cbc79945f8ece0e2fb9ce3e5a4c7) ) // corrupt?
+
+ NEO_BIOS_AUDIO_256K( "268boot.m1", CRC(792e07c1) SHA1(117516e8ec9026c7682ab27857aab6639bef5835) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268boot.v1", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) )
+ ROM_LOAD( "268boot.v2", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) )
+ ROM_LOAD( "268boot.v3", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) )
+ ROM_LOAD( "268boot.v4", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268d.c1", 0x0000000, 0x800000, CRC(969c0d62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) )
+ ROM_LOAD16_BYTE( "268d.c2", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) )
+ ROM_LOAD16_BYTE( "268d.c3", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) )
+ ROM_LOAD16_BYTE( "268nd.c4", 0x1000001, 0x800000, CRC(E1B1131B) SHA1(68A36D336582069E79AD481638D92F57C4CD6523) )
+ ROM_LOAD16_BYTE( "268d.c5", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) )
+ ROM_LOAD16_BYTE( "268d.c6", 0x2000001, 0x800000, CRC(6de89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) )
+ ROM_LOAD16_BYTE( "268d.c7", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) )
+ ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) )
+ROM_END
+
+ROM_START( ms5pcbd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1r.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
+ ROM_LOAD32_WORD_SWAP( "268-p2r.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
+
+ NEO_SFIX_MT_512K
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* this contains both an ASIA and JAPAN bios, HARDDIP3 on the PCB selects which to use */
+ ROM_LOAD16_WORD_SWAP( "sp-4x.sp1", 0x00000, 0x80000, CRC(b4590283) SHA1(47047ed5b6062babc0a0bebcc30e4b3f021e115a) )
+
+ /* Encrypted, we load it here for reference and replace with decrypted ROM */
+ // ROM_LOAD( "268-m1.bin", 0x00000, 0x10000, CRC(58b107d0) SHA1(cc7fe66ff4f9c026cde4df06f86c848eb21f7af8) )
+ //NEO_BIOS_AUDIO_64K( "268d.m1", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "268-m1.m1", 0x00000, 0x80000, CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) ) /* mask rom TC534000 */
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268pcbd.v1", 0x000000, 0x1000000, CRC(4182838b) SHA1(03e58b6709db467e92397b26b84658f5adb0ff92) )
+// ROM_LOAD( "268-v1.v1", 0x000000, 0x1000000, CRC(8458afe5) SHA1(62b4c6e7db763e9ff2697bbcdb43dc5a56b48c68) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268pcbd.c1", 0x0000000, 0x1000000, CRC(996debed) SHA1(ec6965a24862541f337a1b7e259038b9b40ad1d2) )
+ ROM_LOAD16_BYTE( "268pcbd.c2", 0x0000001, 0x1000000, CRC(960a9764) SHA1(687cf957d91ef9da219b573f444e668209dcea41) )
+ ROM_LOAD16_BYTE( "268pcbd.c3", 0x2000000, 0x1000000, CRC(f699994f) SHA1(ff079d3c126e9611760956d51c5df66d8013dd78) )
+ ROM_LOAD16_BYTE( "268pcbd.c4", 0x2000001, 0x1000000, CRC(49e902e8) SHA1(289a560ffe3d50abd773c61fa2df3c1f18d7e803) )
+ROM_END
+
+ROM_START( ms5sp ) // all confirmed: ms5plus with p1 changed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268sp.p1", 0x000000, 0x100000, CRC(540cd43f) SHA1(29378262a40e09f21dc6f033b8a97463caf5f1a9) )
+ ROM_LOAD16_WORD_SWAP( "ms5-p2p.bin", 0x100000, 0x200000, CRC(d6a458e8) SHA1(c0a8bdae06d62859fb6734766ccc190eb2a809a4) )
+ ROM_LOAD16_WORD_SWAP( "ms5-p3p.bin", 0x300000, 0x200000, CRC(439ec031) SHA1(f0ad8f9be7d26bc504593c1321bd23c286a221f0) )
+
+ NEO_SFIX_128K( "ms5-s1p.bin", CRC(21e04432) SHA1(10057a2aa487087f7143d1d69fdad978a6bef0f7) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+
+ROM_START( mslug5b )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268b.p1", 0x000000, 0x100000, CRC(d05853ea) SHA1(8bb284d8f937b1b50d28d207f5fd262e4ed1d96c) )
+ ROM_CONTINUE( 0x200000, 0x100000 )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_CONTINUE( 0x300000, 0x100000 )
+ ROM_CONTINUE( 0x500000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+
+ROM_START( mslug5d )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1cr.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
+ ROM_LOAD32_WORD_SWAP( "268-p2cr.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "268d.m1", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268d.c1", 0x0000000, 0x800000, CRC(969c0d62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) )
+ ROM_LOAD16_BYTE( "268d.c2", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) )
+ ROM_LOAD16_BYTE( "268d.c3", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) )
+ ROM_LOAD16_BYTE( "268d.c4", 0x1000001, 0x800000, CRC(899fb2af) SHA1(A06A424C813C1B4F922C5404405779F605C90A06) )
+ ROM_LOAD16_BYTE( "268d.c5", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) )
+ ROM_LOAD16_BYTE( "268d.c6", 0x2000001, 0x800000, CRC(6de89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) )
+ ROM_LOAD16_BYTE( "268d.c7", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) )
+ ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) )
+ROM_END
+
+ROM_START( mslug5d1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268nd.p1", 0x000000, 0x100000, CRC(ca50afdf) SHA1(e3780b77f20d139a0dcaa2ded2c6ee323b8b4279) )
+ ROM_LOAD16_WORD_SWAP( "268nd.p2", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268hd.c1", 0x0000000, 0x800000, CRC(e8239365) SHA1(E0A75902A783110049730B66AD3CBCCDD804BF62) )
+ ROM_LOAD16_BYTE( "268hd.c2", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862AC31CE9570529B33E6F58ADA0AC867A442679) )
+ ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5D029C92688384EAFD65AD711A2954D0B86A3163) )
+ ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(C612102F9CD288BBA4C245B5855D795E4362B217) )
+ ROM_LOAD16_BYTE( "268hd.c5", 0x2000000, 0x800000, CRC(38754256) SHA1(744D91D041998CA27EE2781188746797C65377BD) )
+ ROM_LOAD16_BYTE( "268hd.c6", 0x2000001, 0x800000, CRC(59d33e9c) SHA1(ED7F5C7DB4C35EC5A7DB0AD5436110B3FE80B89A) )
+ ROM_LOAD16_BYTE( "268hd.c7", 0x3000000, 0x800000, CRC(c9f8c357) SHA1(7064224AFA887F57245F5479B0B46228539A131B) )
+ ROM_LOAD16_BYTE( "268hd.c8", 0x3000001, 0x800000, CRC(fafc3eb9) SHA1(F4F73194CC7FD151BE3CA2561F993B5BE7628369) )
+ROM_END
+
+ROM_START( mslug5f ) // all confirmed: mslug5lvf with different p1 rom
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268f.p1", 0x000000, 0x100000, CRC(6be7043d) SHA1(caaf24cc653abbd435de7732f6489c613f3911ac) )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p2", 0x100000, 0x400000, CRC(f06c589a) SHA1(0882ee5221ab873f87a719e34bd5250b79b82730) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x1037510, "ymsnd", 0 )
+ ROM_LOAD( "268l9b.v1", 0x000000, 0x400000, CRC(fcc8ba01) SHA1(c187c318c65f6aefae05e6cef9f17492edf2e4db) )
+ ROM_LOAD( "268l9b.v2", 0x400000, 0x400000, CRC(386f32bd) SHA1(d49fc812c442563b9e82da43bf5c6b9deea0f687) )
+ ROM_LOAD( "268l9b.v3", 0x800000, 0x400000, CRC(dc737e12) SHA1(f940ea767404f6a15dea526eda56ad66517ba79e) )
+ ROM_LOAD( "268l9b.v4", 0xc00000, 0x437510, CRC(2b310542) SHA1(5f0050d36cd1f722d78d9ae98db537eacc4d8548) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9b.c1", 0x0000000, 0x800000, CRC(aad8ff17) SHA1(f8c5f7bd9aa4b930ceb38b25934650ac810563df) )
+ ROM_LOAD16_BYTE( "268l9b.c2", 0x0000001, 0x800000, CRC(b0404dd4) SHA1(0ab1f81072dac777c3269811dfb69cb40bd7a245) )
+ ROM_LOAD16_BYTE( "268l9b.c3", 0x1000000, 0x800000, CRC(95dda158) SHA1(7ec4625a17f815e8d7e690cb01f3c9dbce75e39b) )
+ ROM_LOAD16_BYTE( "268l9b.c4", 0x1000001, 0x800000, CRC(c052cf1f) SHA1(198041e813914570b943fc1927e986e5553c6bd4) )
+ ROM_LOAD16_BYTE( "268l9b.c5", 0x2000000, 0x800000, CRC(8b9f7e21) SHA1(0dcefc5efc67d520a880b3da6122c342ebdc5e2f) )
+ ROM_LOAD16_BYTE( "268l9b.c6", 0x2000001, 0x800000, CRC(4a0693cf) SHA1(c4bdf72754f85250dfccdd4444941931a6596569) )
+ ROM_LOAD16_BYTE( "268l9b.c7", 0x3000000, 0x800000, CRC(3ad5eaf4) SHA1(b4c4cf0425d42bd47bc85acfab93006c003af341) )
+ ROM_LOAD16_BYTE( "268l9b.c8", 0x3000001, 0x800000, CRC(3e7c670d) SHA1(166eda40c01d01b1d8ec82f2482e8cb4e5ca0e79) )
+ROM_END
+
+ROM_START( mslug5fr ) /* Metal Slug 5 - French translation - NeoArc */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268fr.p1", 0x000000, 0x100000, CRC(63cc3c2d) SHA1(b4543c65427d15f784641617dcab53663031a9f3) )
+ ROM_LOAD16_WORD_SWAP( "268nd.p2", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
+
+ NEO_SFIX_128K( "268fr.s1", CRC(77b18feb) SHA1(2d7cb5838730bfcb45eceeef11557cbcab8aa9da) )
+
+ NEO_BIOS_AUDIO_64K( "268d.m1", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268fr.v1", 0x000000, 0x800000, CRC(7ff6ca47) SHA1(e36c4e6a349dd9fd38d1a36b6760bbd943c2a42f) )
+ ROM_LOAD( "268fr.v2", 0x800000, 0x800000, CRC(696cce3b) SHA1(538d4a25befa4ffd25a48df97380469c13980f7a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268fr.c1", 0x0000000, 0x800000, CRC(c115bcbd) SHA1(241b71cb442844df0f1c7005955c5ae85b95a0b9) )
+ ROM_LOAD16_BYTE( "268fr.c2", 0x0000001, 0x800000, CRC(a95f284f) SHA1(db6b18b15f871ac17e88d2eec72b95c8a63be959) )
+ ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5d029c92688384eafd65ad711a2954d0b86a3163) )
+ ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(c612102f9cd288bba4c245b5855d795e4362b217) )
+ ROM_LOAD16_BYTE( "268fr.c5", 0x2000000, 0x800000, CRC(dae4bdba) SHA1(c7da602cc59296fd264fd2f97b29bc242340760f) )
+ ROM_LOAD16_BYTE( "268fr.c6", 0x2000001, 0x800000, CRC(731a14ce) SHA1(2363d3f0f2e2a621051de0db6e465f7b1a387ef9) )
+ ROM_LOAD16_BYTE( "268fr.c7", 0x3000000, 0x800000, CRC(bc8296af) SHA1(4309d093c09219fb90104d30211c204a2abcf82e) )
+ ROM_LOAD16_BYTE( "268fr.c8", 0x3000001, 0x800000, CRC(6fabe6d5) SHA1(12c23b85de985b4daba7def1d9d9d9b4c050ab63) )
+ROM_END
+
+ROM_START( mslug5fr1 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268fr1.p1", 0x000000, 0x100000, CRC(0ee0d5c7) SHA1(10209cd9757b212708c569656d5c935c7bd4a5b3) )
+ ROM_LOAD16_WORD_SWAP( "268nd.p2", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "268d.m1", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268hd.c1", 0x0000000, 0x800000, CRC(e8239365) SHA1(E0A75902A783110049730B66AD3CBCCDD804BF62) )
+ ROM_LOAD16_BYTE( "268hd.c2", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862AC31CE9570529B33E6F58ADA0AC867A442679) )
+ ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5D029C92688384EAFD65AD711A2954D0B86A3163) )
+ ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(C612102F9CD288BBA4C245B5855D795E4362B217) )
+ ROM_LOAD16_BYTE( "268hd.c5", 0x2000000, 0x800000, CRC(38754256) SHA1(744D91D041998CA27EE2781188746797C65377BD) )
+ ROM_LOAD16_BYTE( "268hd.c6", 0x2000001, 0x800000, CRC(59d33e9c) SHA1(ED7F5C7DB4C35EC5A7DB0AD5436110B3FE80B89A) )
+ ROM_LOAD16_BYTE( "268hd.c7", 0x3000000, 0x800000, CRC(c9f8c357) SHA1(7064224AFA887F57245F5479B0B46228539A131B) )
+ ROM_LOAD16_BYTE( "268hd.c8", 0x3000001, 0x800000, CRC(fafc3eb9) SHA1(F4F73194CC7FD151BE3CA2561F993B5BE7628369) )
+ROM_END
+
+ROM_START( mslug5fu ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268fu.p1", 0x000000, 0x100000, CRC(d1b04ae1) SHA1(b1ab15336bf6bec9dc8cfdbf2a07c6017e3e7ae4) )
+ ROM_LOAD16_WORD_SWAP( "268fu.p2", 0x100000, 0x400000, CRC(6357efbf) SHA1(d1b19bb18e2836d352e8a8d6700d4a0b83227fdb) )
+
+ NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) )
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x1037510, "ymsnd", 0 )
+ ROM_LOAD( "268l9b.v1", 0x000000, 0x400000, CRC(fcc8ba01) SHA1(c187c318c65f6aefae05e6cef9f17492edf2e4db) )
+ ROM_LOAD( "268l9b.v2", 0x400000, 0x400000, CRC(386f32bd) SHA1(d49fc812c442563b9e82da43bf5c6b9deea0f687) )
+ ROM_LOAD( "268l9b.v3", 0x800000, 0x400000, CRC(dc737e12) SHA1(f940ea767404f6a15dea526eda56ad66517ba79e) )
+ ROM_LOAD( "268l9b.v4", 0xc00000, 0x437510, CRC(2b310542) SHA1(5f0050d36cd1f722d78d9ae98db537eacc4d8548) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268hd.c1", 0x0000000, 0x800000, CRC(e8239365) SHA1(E0A75902A783110049730B66AD3CBCCDD804BF62) )
+ ROM_LOAD16_BYTE( "268hd.c2", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862AC31CE9570529B33E6F58ADA0AC867A442679) )
+ ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5D029C92688384EAFD65AD711A2954D0B86A3163) )
+ ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(C612102F9CD288BBA4C245B5855D795E4362B217) )
+ ROM_LOAD16_BYTE( "268fu.c5", 0x2000000, 0x800000, CRC(3bc09dbf) SHA1(a47954a3295dc21e7db7dedc03ab789f8005eed5) )
+ ROM_LOAD16_BYTE( "268fu.c6", 0x2000001, 0x800000, CRC(0db5ce14) SHA1(aa2c4bb143e3bba18523df645c5be249eb9fc147) )
+ ROM_LOAD16_BYTE( "268fu.c7", 0x3000000, 0x800000, CRC(aa4f3214) SHA1(dc3a8fac2cc81e60abafc209eb4bcccdaafde380) )
+ ROM_LOAD16_BYTE( "268fu.c8", 0x3000001, 0x800000, CRC(c86d0d81) SHA1(1a00aa65481410c0b64fe971e547638c05c5a0ce) )
+ROM_END
+
+ROM_START( mslug5hd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1c.p1", 0x000000, 0x400000, CRC(3636690a) SHA1(e0da714b4bdc6efffe1250ded02ebddb3ab6d7b3) )
+ ROM_LOAD32_WORD_SWAP( "268-p2c.p2", 0x000002, 0x400000, CRC(8dfc47a2) SHA1(27d618cfbd0107a4d2a836797e967b39d2eb4851) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268hd.c1", 0x0000000, 0x800000, CRC(e8239365) SHA1(E0A75902A783110049730B66AD3CBCCDD804BF62) )
+ ROM_LOAD16_BYTE( "268hd.c2", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862AC31CE9570529B33E6F58ADA0AC867A442679) )
+ ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5D029C92688384EAFD65AD711A2954D0B86A3163) )
+ ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(C612102F9CD288BBA4C245B5855D795E4362B217) )
+ ROM_LOAD16_BYTE( "268hd.c5", 0x2000000, 0x800000, CRC(38754256) SHA1(744D91D041998CA27EE2781188746797C65377BD) )
+ ROM_LOAD16_BYTE( "268hd.c6", 0x2000001, 0x800000, CRC(59d33e9c) SHA1(ED7F5C7DB4C35EC5A7DB0AD5436110B3FE80B89A) )
+ ROM_LOAD16_BYTE( "268hd.c7", 0x3000000, 0x800000, CRC(c9f8c357) SHA1(7064224AFA887F57245F5479B0B46228539A131B) )
+ ROM_LOAD16_BYTE( "268hd.c8", 0x3000001, 0x800000, CRC(fafc3eb9) SHA1(F4F73194CC7FD151BE3CA2561F993B5BE7628369) )
+ROM_END
+
+ROM_START( mslug5l9a )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268l9a.p1", 0x000000, 0x100000, CRC(96aa148d) SHA1(b2487a29d6a96435cfe220cb78f74bc2a9ccc6b3) )
+ ROM_LOAD16_WORD_SWAP( "268l9a.p2", 0x100000, 0x400000, CRC(f5bf2c6b) SHA1(99fdc44aba8b2f30d14a1975052811567ea8f05a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x10002f0, "ymsnd", 0 )
+ ROM_LOAD( "268l9a.v1", 0x000000, 0x400000, CRC(a8e12a92) SHA1(b23d80d131649c1d243bb30cf5b2141354a7ac55) )
+ ROM_LOAD( "268l9a.v2", 0x400000, 0x400000, CRC(c40fa69b) SHA1(3c1ff87a2174a92d9f457a6932b53534ed410dc2) )
+ ROM_LOAD( "268l9a.v3", 0x800000, 0x400000, CRC(aeff1982) SHA1(ac777a12639e21f0f227be84a59c7bb543c6ddd9) )
+ ROM_LOAD( "268l9a.v4", 0xc00000, 0x4002f0, CRC(179cbca3) SHA1(fdcb0df0c2f73d11cd32a8625ad6fa24cedb9dc9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9a.c1", 0x0000000, 0x800000, CRC(5e2e9087) SHA1(2366df8b0ee03e8938dcae571dccf32cfcfd685b) )
+ ROM_LOAD16_BYTE( "268l9a.c2", 0x0000001, 0x800000, CRC(d15770e3) SHA1(162c166c3fdc2a29af88dfea8a10138284029e36) )
+ ROM_LOAD16_BYTE( "268l9a.c3", 0x1000000, 0x800000, CRC(3e104b8f) SHA1(ee8467e07f27fbcad35a239b45e1e7e5aed79a25) )
+ ROM_LOAD16_BYTE( "268l9a.c4", 0x1000001, 0x800000, CRC(03f32dda) SHA1(64bc08dce4a8188878d683a6290e370e4d3488a1) )
+ ROM_LOAD16_BYTE( "268l9a.c5", 0x2000000, 0x800000, CRC(fd3e0f24) SHA1(5143c521c79a011465c93717171bb24b550bdc1f) )
+ ROM_LOAD16_BYTE( "268l9a.c6", 0x2000001, 0x800000, CRC(3c873aba) SHA1(b1c882f7c228046929f82a24d9f635c1b6443a94) )
+ ROM_LOAD16_BYTE( "268l9a.c7", 0x3000000, 0x800000, CRC(0d070c3b) SHA1(2d785bd095726b4e48aa65578b9694372f4c46c3) )
+ ROM_LOAD16_BYTE( "268l9a.c8", 0x3000001, 0x800000, CRC(09751dd8) SHA1(5a1378faa3bd3ebb6573d7c171639df153b5202b) )
+ROM_END
+
+ROM_START( mslug5l9b )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268l9a.p1", 0x000000, 0x100000, CRC(96aa148d) SHA1(b2487a29d6a96435cfe220cb78f74bc2a9ccc6b3) )
+ ROM_LOAD16_WORD_SWAP( "268l9b.p2", 0x100000, 0x400000, CRC(35982b98) SHA1(069f5f7fe6d2278b6bdeb1f5bd87818b868ed41b) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x1037510, "ymsnd", 0 )
+ ROM_LOAD( "268l9b.v1", 0x000000, 0x400000, CRC(fcc8ba01) SHA1(c187c318c65f6aefae05e6cef9f17492edf2e4db) )
+ ROM_LOAD( "268l9b.v2", 0x400000, 0x400000, CRC(386f32bd) SHA1(d49fc812c442563b9e82da43bf5c6b9deea0f687) )
+ ROM_LOAD( "268l9b.v3", 0x800000, 0x400000, CRC(dc737e12) SHA1(f940ea767404f6a15dea526eda56ad66517ba79e) )
+ ROM_LOAD( "268l9b.v4", 0xc00000, 0x437510, CRC(2b310542) SHA1(5f0050d36cd1f722d78d9ae98db537eacc4d8548) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9b.c1", 0x0000000, 0x800000, CRC(aad8ff17) SHA1(f8c5f7bd9aa4b930ceb38b25934650ac810563df) )
+ ROM_LOAD16_BYTE( "268l9b.c2", 0x0000001, 0x800000, CRC(b0404dd4) SHA1(0ab1f81072dac777c3269811dfb69cb40bd7a245) )
+ ROM_LOAD16_BYTE( "268l9b.c3", 0x1000000, 0x800000, CRC(95dda158) SHA1(7ec4625a17f815e8d7e690cb01f3c9dbce75e39b) )
+ ROM_LOAD16_BYTE( "268l9b.c4", 0x1000001, 0x800000, CRC(c052cf1f) SHA1(198041e813914570b943fc1927e986e5553c6bd4) )
+ ROM_LOAD16_BYTE( "268l9b.c5", 0x2000000, 0x800000, CRC(8b9f7e21) SHA1(0dcefc5efc67d520a880b3da6122c342ebdc5e2f) )
+ ROM_LOAD16_BYTE( "268l9b.c6", 0x2000001, 0x800000, CRC(4a0693cf) SHA1(c4bdf72754f85250dfccdd4444941931a6596569) )
+ ROM_LOAD16_BYTE( "268l9b.c7", 0x3000000, 0x800000, CRC(3ad5eaf4) SHA1(b4c4cf0425d42bd47bc85acfab93006c003af341) )
+ ROM_LOAD16_BYTE( "268l9b.c8", 0x3000001, 0x800000, CRC(3e7c670d) SHA1(166eda40c01d01b1d8ec82f2482e8cb4e5ca0e79) )
+ROM_END
+
+ROM_START( mslug5lvf ) // all confirmed: mslug5l9b with different p roms
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p1", 0x000000, 0x100000, CRC(18763285) SHA1(53947549729d6522f7b0858c968a1df19ab82f76) )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p2", 0x100000, 0x400000, CRC(f06c589a) SHA1(0882ee5221ab873f87a719e34bd5250b79b82730) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x1037510, "ymsnd", 0 )
+ ROM_LOAD( "268l9b.v1", 0x000000, 0x400000, CRC(fcc8ba01) SHA1(c187c318c65f6aefae05e6cef9f17492edf2e4db) )
+ ROM_LOAD( "268l9b.v2", 0x400000, 0x400000, CRC(386f32bd) SHA1(d49fc812c442563b9e82da43bf5c6b9deea0f687) )
+ ROM_LOAD( "268l9b.v3", 0x800000, 0x400000, CRC(dc737e12) SHA1(f940ea767404f6a15dea526eda56ad66517ba79e) )
+ ROM_LOAD( "268l9b.v4", 0xc00000, 0x437510, CRC(2b310542) SHA1(5f0050d36cd1f722d78d9ae98db537eacc4d8548) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9b.c1", 0x0000000, 0x800000, CRC(aad8ff17) SHA1(f8c5f7bd9aa4b930ceb38b25934650ac810563df) )
+ ROM_LOAD16_BYTE( "268l9b.c2", 0x0000001, 0x800000, CRC(b0404dd4) SHA1(0ab1f81072dac777c3269811dfb69cb40bd7a245) )
+ ROM_LOAD16_BYTE( "268l9b.c3", 0x1000000, 0x800000, CRC(95dda158) SHA1(7ec4625a17f815e8d7e690cb01f3c9dbce75e39b) )
+ ROM_LOAD16_BYTE( "268l9b.c4", 0x1000001, 0x800000, CRC(c052cf1f) SHA1(198041e813914570b943fc1927e986e5553c6bd4) )
+ ROM_LOAD16_BYTE( "268l9b.c5", 0x2000000, 0x800000, CRC(8b9f7e21) SHA1(0dcefc5efc67d520a880b3da6122c342ebdc5e2f) )
+ ROM_LOAD16_BYTE( "268l9b.c6", 0x2000001, 0x800000, CRC(4a0693cf) SHA1(c4bdf72754f85250dfccdd4444941931a6596569) )
+ ROM_LOAD16_BYTE( "268l9b.c7", 0x3000000, 0x800000, CRC(3ad5eaf4) SHA1(b4c4cf0425d42bd47bc85acfab93006c003af341) )
+ ROM_LOAD16_BYTE( "268l9b.c8", 0x3000001, 0x800000, CRC(3e7c670d) SHA1(166eda40c01d01b1d8ec82f2482e8cb4e5ca0e79) )
+ROM_END
+
+ROM_START( mslug5lvnc )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p1", 0x000000, 0x100000, CRC(18763285) SHA1(53947549729d6522f7b0858c968a1df19ab82f76) )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p2", 0x100000, 0x400000, CRC(f06c589a) SHA1(0882ee5221ab873f87a719e34bd5250b79b82730) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x10002f0, "ymsnd", 0 )
+ ROM_LOAD( "268l9a.v1", 0x000000, 0x400000, CRC(a8e12a92) SHA1(b23d80d131649c1d243bb30cf5b2141354a7ac55) )
+ ROM_LOAD( "268lvnc.v2", 0x400000, 0x400000, CRC(0608cba3) SHA1(ad7c985a25abd68c58e502c008b45e0b14422829) )
+ ROM_LOAD( "268l9a.v3", 0x800000, 0x400000, CRC(aeff1982) SHA1(ac777a12639e21f0f227be84a59c7bb543c6ddd9) )
+ ROM_LOAD( "268l9a.v4", 0xc00000, 0x4002f0, CRC(179cbca3) SHA1(fdcb0df0c2f73d11cd32a8625ad6fa24cedb9dc9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9a.c1", 0x0000000, 0x800000, CRC(5e2e9087) SHA1(2366df8b0ee03e8938dcae571dccf32cfcfd685b) )
+ ROM_LOAD16_BYTE( "268l9a.c2", 0x0000001, 0x800000, CRC(d15770e3) SHA1(162c166c3fdc2a29af88dfea8a10138284029e36) )
+ ROM_LOAD16_BYTE( "268l9a.c3", 0x1000000, 0x800000, CRC(3e104b8f) SHA1(ee8467e07f27fbcad35a239b45e1e7e5aed79a25) )
+ ROM_LOAD16_BYTE( "268l9a.c4", 0x1000001, 0x800000, CRC(03f32dda) SHA1(64bc08dce4a8188878d683a6290e370e4d3488a1) )
+ ROM_LOAD16_BYTE( "268l9a.c5", 0x2000000, 0x800000, CRC(fd3e0f24) SHA1(5143c521c79a011465c93717171bb24b550bdc1f) )
+ ROM_LOAD16_BYTE( "268l9a.c6", 0x2000001, 0x800000, CRC(3c873aba) SHA1(b1c882f7c228046929f82a24d9f635c1b6443a94) )
+ ROM_LOAD16_BYTE( "268l9a.c7", 0x3000000, 0x800000, CRC(0d070c3b) SHA1(2d785bd095726b4e48aa65578b9694372f4c46c3) )
+ ROM_LOAD16_BYTE( "268l9a.c8", 0x3000001, 0x800000, CRC(09751dd8) SHA1(5a1378faa3bd3ebb6573d7c171639df153b5202b) )
+ROM_END
+
+ROM_START( mslug5w )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268w.p1", 0x000000, 0x100000, CRC(b0c126da) SHA1(9081ec2c3cfc27baf759417b24f2ebc07ceffab0) )
+ ROM_LOAD16_WORD_SWAP( "268lvf.p2", 0x100000, 0x400000, CRC(f06c589a) SHA1(0882ee5221ab873f87a719e34bd5250b79b82730) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) )
+
+ ROM_REGION( 0x10002f0, "ymsnd", 0 )
+ ROM_LOAD( "268l9a.v1", 0x000000, 0x400000, CRC(a8e12a92) SHA1(b23d80d131649c1d243bb30cf5b2141354a7ac55) )
+ ROM_LOAD( "268lvnc.v2", 0x400000, 0x400000, CRC(0608cba3) SHA1(ad7c985a25abd68c58e502c008b45e0b14422829) )
+ ROM_LOAD( "268nd.v3", 0x800000, 0x400000, CRC(02fd519e) SHA1(6fbda5bf8dbf52bc110aba7b9d20b24bdc2fe0d7) )
+ ROM_LOAD( "268l9a.v4", 0xc00000, 0x4002f0, CRC(179cbca3) SHA1(fdcb0df0c2f73d11cd32a8625ad6fa24cedb9dc9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268l9a.c1", 0x0000000, 0x800000, CRC(5e2e9087) SHA1(2366df8b0ee03e8938dcae571dccf32cfcfd685b) )
+ ROM_LOAD16_BYTE( "268l9a.c2", 0x0000001, 0x800000, CRC(d15770e3) SHA1(162c166c3fdc2a29af88dfea8a10138284029e36) )
+ ROM_LOAD16_BYTE( "268l9a.c3", 0x1000000, 0x800000, CRC(3e104b8f) SHA1(ee8467e07f27fbcad35a239b45e1e7e5aed79a25) )
+ ROM_LOAD16_BYTE( "268l9a.c4", 0x1000001, 0x800000, CRC(03f32dda) SHA1(64bc08dce4a8188878d683a6290e370e4d3488a1) )
+ ROM_LOAD16_BYTE( "268l9a.c5", 0x2000000, 0x800000, CRC(fd3e0f24) SHA1(5143c521c79a011465c93717171bb24b550bdc1f) )
+ ROM_LOAD16_BYTE( "268l9a.c6", 0x2000001, 0x800000, CRC(3c873aba) SHA1(b1c882f7c228046929f82a24d9f635c1b6443a94) )
+ ROM_LOAD16_BYTE( "268l9a.c7", 0x3000000, 0x800000, CRC(0d070c3b) SHA1(2d785bd095726b4e48aa65578b9694372f4c46c3) )
+ ROM_LOAD16_BYTE( "268l9a.c8", 0x3000001, 0x800000, CRC(09751dd8) SHA1(5a1378faa3bd3ebb6573d7c171639df153b5202b) )
+ROM_END
+
+ROM_START( mslug5nd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "268nd.p1", 0x000000, 0x100000, CRC(ca50afdf) SHA1(e3780b77f20d139a0dcaa2ded2c6ee323b8b4279) ) // this rom is watermarked by HappyASR (24/12/03)
+ ROM_LOAD16_WORD_SWAP( "268nd.p2", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
+// ROM_LOAD16_WORD_SWAP( "268boot.p1", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
+// ROM_LOAD16_WORD_SWAP( "268-p2n.bin", 0x100000, 0x400000, CRC(84def63e) SHA1(fddd68e8879d6f5c1aac42997ff2245ea54d5869) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "268nd.m1", CRC(6FA01C9A) SHA1(3DAB7593BFCCE318D22EC3DF672EE3B4AB73DCF5) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+// ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+// ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+ ROM_LOAD( "268nd.v1", 0x000000, 0x400000, CRC(dc7f03f0) SHA1(e1e31dcaff1f8d2c4b2d657aa856a60771d82c26) )
+ ROM_LOAD( "268nd.v2", 0x400000, 0x400000, CRC(eeb7c926) SHA1(4d71f59948bdc5ed2e6daf101f16fd979e1ab193) )
+ ROM_LOAD( "268nd.v3", 0x800000, 0x400000, CRC(02fd519e) SHA1(6fbda5bf8dbf52bc110aba7b9d20b24bdc2fe0d7) )
+ ROM_LOAD( "268nd.v4", 0xc00000, 0x400000, CRC(d7c67794) SHA1(345dcbf76b25b2fbd10bcaf08ee395da0a52c5ce) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "268d.c1", 0x0000000, 0x800000, CRC(969c0d62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) )
+ ROM_LOAD16_BYTE( "268d.c2", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) )
+ ROM_LOAD16_BYTE( "268d.c3", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) )
+ ROM_LOAD16_BYTE( "268nd.c4", 0x1000001, 0x800000, CRC(E1B1131B) SHA1(68A36D336582069E79AD481638D92F57C4CD6523) )
+ ROM_LOAD16_BYTE( "268d.c5", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) )
+ ROM_LOAD16_BYTE( "268d.c6", 0x2000001, 0x800000, CRC(6de89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) )
+ ROM_LOAD16_BYTE( "268d.c7", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) )
+ ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) )
+ROM_END
+
+// Metal Slug
+GAME( 2005, msboot, mslug, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Nazca", "Metal Slug (Bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, mslugeh, mslug, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug Enhanced", MACHINE_SUPPORTS_SAVE ) // New standard weapon shotgun - 20 bombs instead of 10
+// Metal Slug 2
+GAME( 1998, mslug2eh, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug 2 (Style remix set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2eh0, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 2 (Enhanced Revised Version, hack by Ydmis)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2eh1, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug 2 (Style remix set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2eh2, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug 2 (Style remix set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2eh3, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug 2 (Style remix set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2eh4, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Metal Slug 2 (Style remix set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, mslug2fr, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Metal Slug 2 (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug2fro, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Metal Slug 2 (French) (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mslug2sh, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 2 (hybrid Bullets version, Shinwa hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, mslug2t, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "System11", "Metal Slug 2 Turbo", MACHINE_SUPPORTS_SAVE )
+// Metal Slug X
+GAME( 1999, mslugxce, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (CE)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, mslugxeb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "PlayerX China", "Metal Slug X (EB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxeh, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "KrysoFun/KVS", "Metal Slug X (Style remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxeh1, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Super Revised Version by KrysoFun)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxex, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Excel version by PlayerX)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxfe, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (FE)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslugxfr, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Arkatrad", "Metal Slug X (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslugxfro, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Arkatrad", "Metal Slug X (French) (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, mslugxhp, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Enemy Heavy Plate 2013-06-18)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslugxit, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Clomax & Ombra", "Metal Slug X (Italian - Beta)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxjdkj,mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (JDKJ)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxmfb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (MFB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxp, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Player-X", "Metal Slug X Plus (Hack by Player-X)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, mslugxr, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Reset Version 2013-05-28)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxres, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (RES)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxsef, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (SEF)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxst, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "EGCG / Stark", "Metal Slug X (Enhanced Version by STARK) [EGCG]", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugxsvb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (SVB)", MACHINE_SUPPORTS_SAVE )
+// Metal Slug 3
+GAME( 2000, mslug3d, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3d, ROT0, "SNK", "Metal Slug 3 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e02, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 02)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e03, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 03)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e04, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 04)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e05, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 05)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e06, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 06)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e07, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 07)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e08, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 08)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e09, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 09)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e10, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e11, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 11)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e12, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 12)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e13, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 13)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e14, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 14)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e15, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 15)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e16, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 16)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e17, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e18, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 18)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e19, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e20, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 20)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e21, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 21)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3e22, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 22)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, mslug3eb, mslug3, neogeo_noslot, neogeo, neogeo_noslot_state, mslug3, ROT0, "PlayerX China", "Metal Slug 3 (EB)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3eha, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "HappyAsr", "Metal Slug 3 (Style remix 030826)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3ehs, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 01)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, mslug3fr, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3fr, ROT0, "Arkatrad", "Metal Slug 3 (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug3fro, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3fr, ROT0, "Arkatrad", "Metal Slug 3 (French) (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3hev, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "hack", "Metal Slug 3 (unknown hev)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3kh, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Fighters Kim and Ydmis", "Metal Slug 3 (Style remix 030801)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3kho, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Fighters Kim and Ydmis", "Metal Slug 3 (Style remix 030728)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mslug3nd, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix,ROT0, "SNK", "Metal Slug 3 (NGH-2560)(Fully Decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, mslug3v, mslug3, neogeo_noslot, neogeo, neogeo_noslot_state, mslug3b6, ROT0, "Eezezy", "Metal Slug 3 (Violence Edition)", MACHINE_SUPPORTS_SAVE )
+// Metal Slug 4
+GAME( 2002, mslug4d, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4d, ROT0, "Mega", "Metal Slug 4 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, mslug4dh, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4dh, ROT0, "HappyASR [EGCG]", "Metal Slug 4 Super D Version", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4dh1, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 4 Super D Version (Hack by HappyASR [EGCG])", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh2, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh3, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh4, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh5, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eh6, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix 030414 set 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4eho, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami", "Metal Slug 4 (Style remix Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, mslug4fr, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Arkatrad", "Metal Slug 4 (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, mslug4i, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4it, ROT0, "Evoboy", "Metal Slug 4 (Italian)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4i1, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 4 (Italian)2", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4kh, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami and Fighters Kim", "Metal Slug 4 (Style remix 030731)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4lw, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 4 (LW)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4nd, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Mega Enterprise / Playmore Corporation", "Metal Slug 4 (fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4sp, mslug4, neogeo_noslot, neogeo, neogeo_noslot_state, mslug4, ROT0, "hack", "Metal Slug 4 (SP)", MACHINE_SUPPORTS_SAVE )
+// Metal Slug 5
+GAME( 2003, mslug5b, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5b, ROT0, "bootleg", "Metal Slug 5 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5d, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5d, ROT0, "hack", "Metal Slug 5 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5d1, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5d1, ROT0, "hack", "Metal Slug 5 (NGM-2680) (fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5f, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (F)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, mslug5fr, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Metal Slug 5 (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, mslug5fr1, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5fr1,ROT0, "NEO-ARC", "Metal Slug 5 (French Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5fu, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 5 (FU)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5hd, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5hd, ROT0, "hack", "Metal Slug 5 (NGH-2680) (Decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5l9a, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 Level 9 Hack (Ver A)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5l9b, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 Level 9 Hack (Ver B)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5lvf, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (LVF)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5lvnc,mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (LVNC)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5nd, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5nd, ROT0, "hack", "Metal Slug 5 (decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5w, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (W)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ms5boot, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, ms5boot, ROT0, "bootleg", "Metal Slug 5 (Bootleg Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ms5pcbd, ms5pcb, neogeo_noslot, dualbios, neogeo_hbmame, ms5pcbd, ROT0, "hack", "Metal Slug 5 (JAMMA PCB) decrypted", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ms5sp, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, ms5plus, ROT0, "hack", "Metal Slug 5 PLUS (SP)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/mspacman.cpp b/docs/release/src/hbmame/drivers/mspacman.cpp
new file mode 100644
index 00000000000..42adac98950
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/mspacman.cpp
@@ -0,0 +1,2560 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/* ===== MS PAC MAN ======
+
+*/
+
+#define mspacman_enable_decode_latch(m) m.root_device().membank("bank1")->set_entry(1)
+#define mspacman_disable_decode_latch(m) m.root_device().membank("bank1")->set_entry(0)
+
+// any access to these ROM addresses disables the decoder, and all you see is the original Pac-Man code
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x0038){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x0038]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x03b0){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x03b0]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x1600){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x1600]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x2120){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x2120]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x3ff0){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x3ff0]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x8000){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x8000]; }
+READ8_MEMBER(pacman_state::mspacman_disable_decode_r_0x97f0){ mspacman_disable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x97f0]; }
+WRITE8_MEMBER(pacman_state::mspacman_disable_decode_w){ mspacman_disable_decode_latch(machine()); }
+
+// any access to these ROM addresses enables the decoder, and you'll see the Ms. Pac-Man code
+READ8_MEMBER(pacman_state::mspacman_enable_decode_r_0x3ff8){ mspacman_enable_decode_latch(machine()); return memregion("maincpu")->base()[offset+0x3ff8+0x10000]; }
+WRITE8_MEMBER(pacman_state::mspacman_enable_decode_w){ mspacman_enable_decode_latch(machine()); }
+
+#define BITSWAP12(val,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
+ BITSWAP16(val,15,14,13,12,B11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
+
+#define BITSWAP11(val,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0) \
+ BITSWAP16(val,15,14,13,12,11,B10,B9,B8,B7,B6,B5,B4,B3,B2,B1,B0)
+
+void pacman_state::mspacman_install_patches(uint8_t *ROM)
+{
+ int i;
+
+ /* copy forty 8-byte patches into Pac-Man code */
+ for (i = 0; i < 8; i++)
+ {
+ ROM[0x0410+i] = ROM[0x8008+i];
+ ROM[0x08E0+i] = ROM[0x81D8+i];
+ ROM[0x0A30+i] = ROM[0x8118+i];
+ ROM[0x0BD0+i] = ROM[0x80D8+i];
+ ROM[0x0C20+i] = ROM[0x8120+i];
+ ROM[0x0E58+i] = ROM[0x8168+i];
+ ROM[0x0EA8+i] = ROM[0x8198+i];
+
+ ROM[0x1000+i] = ROM[0x8020+i];
+ ROM[0x1008+i] = ROM[0x8010+i];
+ ROM[0x1288+i] = ROM[0x8098+i];
+ ROM[0x1348+i] = ROM[0x8048+i];
+ ROM[0x1688+i] = ROM[0x8088+i];
+ ROM[0x16B0+i] = ROM[0x8188+i];
+ ROM[0x16D8+i] = ROM[0x80C8+i];
+ ROM[0x16F8+i] = ROM[0x81C8+i];
+ ROM[0x19A8+i] = ROM[0x80A8+i];
+ ROM[0x19B8+i] = ROM[0x81A8+i];
+
+ ROM[0x2060+i] = ROM[0x8148+i];
+ ROM[0x2108+i] = ROM[0x8018+i];
+ ROM[0x21A0+i] = ROM[0x81A0+i];
+ ROM[0x2298+i] = ROM[0x80A0+i];
+ ROM[0x23E0+i] = ROM[0x80E8+i];
+ ROM[0x2418+i] = ROM[0x8000+i];
+ ROM[0x2448+i] = ROM[0x8058+i];
+ ROM[0x2470+i] = ROM[0x8140+i];
+ ROM[0x2488+i] = ROM[0x8080+i];
+ ROM[0x24B0+i] = ROM[0x8180+i];
+ ROM[0x24D8+i] = ROM[0x80C0+i];
+ ROM[0x24F8+i] = ROM[0x81C0+i];
+ ROM[0x2748+i] = ROM[0x8050+i];
+ ROM[0x2780+i] = ROM[0x8090+i];
+ ROM[0x27B8+i] = ROM[0x8190+i];
+ ROM[0x2800+i] = ROM[0x8028+i];
+ ROM[0x2B20+i] = ROM[0x8100+i];
+ ROM[0x2B30+i] = ROM[0x8110+i];
+ ROM[0x2BF0+i] = ROM[0x81D0+i];
+ ROM[0x2CC0+i] = ROM[0x80D0+i];
+ ROM[0x2CD8+i] = ROM[0x80E0+i];
+ ROM[0x2CF0+i] = ROM[0x81E0+i];
+ ROM[0x2D60+i] = ROM[0x8160+i];
+ }
+}
+
+DRIVER_INIT_MEMBER(pacman_state,mspacman)
+{
+ int i;
+ uint8_t *ROM, *DROM;
+
+ /* CPU ROMs */
+
+ /* Pac-Man code is in low bank */
+ ROM = machine().root_device().memregion("maincpu")->base();
+
+ /* decrypted Ms. Pac-Man code is in high bank */
+ DROM = &machine().root_device().memregion("maincpu")->base()[0x10000];
+
+ /* copy ROMs into decrypted bank */
+ for (i = 0; i < 0x1000; i++)
+ {
+ DROM[0x0000+i] = ROM[0x0000+i]; /* pacman.6e */
+ DROM[0x1000+i] = ROM[0x1000+i]; /* pacman.6f */
+ DROM[0x2000+i] = ROM[0x2000+i]; /* pacman.6h */
+ DROM[0x3000+i] = BITSWAP8(ROM[0xb000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u7 */
+ }
+ for (i = 0; i < 0x800; i++)
+ {
+ DROM[0x8000+i] = BITSWAP8(ROM[0x8000+BITSWAP11(i, 8,7,5,9,10,6,3,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt u5 */
+ DROM[0x8800+i] = BITSWAP8(ROM[0x9800+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
+ DROM[0x9000+i] = BITSWAP8(ROM[0x9000+BITSWAP12(i,11,3,7,9,10,8,6,5,4,2,1,0)],0,4,5,7,6,3,2,1); /* decrypt half of u6 */
+ DROM[0x9800+i] = ROM[0x1800+i]; /* mirror of pacman.6f high */
+ }
+ for (i = 0; i < 0x1000; i++)
+ {
+ DROM[0xa000+i] = ROM[0x2000+i]; /* mirror of pacman.6h */
+ DROM[0xb000+i] = ROM[0x3000+i]; /* mirror of pacman.6j */
+ }
+ /* install patches into decrypted bank */
+ mspacman_install_patches(DROM);
+
+ /* mirror Pac-Man ROMs into upper addresses of normal bank */
+ for (i = 0; i < 0x1000; i++)
+ {
+ ROM[0x8000+i] = ROM[0x0000+i];
+ ROM[0x9000+i] = ROM[0x1000+i];
+ ROM[0xa000+i] = ROM[0x2000+i];
+ ROM[0xb000+i] = ROM[0x3000+i];
+ }
+
+ /* initialize the banks */
+ machine().root_device().membank("bank1")->configure_entries(0, 2, &ROM[0x00000], 0x10000);
+ machine().root_device().membank("bank1")->set_entry(1);
+}
+
+
+
+/* used by extra routine at $3FE, bit 4 of 504d needs to be low, and of 504e to be high */
+READ8_MEMBER( pacman_state::mspacii_prot_r )
+{
+ return offset<<4;
+}
+
+/* For Zola's timer */
+
+READ8_MEMBER( pacman_state::zolatimer_r )
+{
+ uint8_t timernow = m_timerthing;
+ m_timerthing++;
+ return timernow;
+}
+
+WRITE8_MEMBER( pacman_state::zolatimer_w ) /* to stop it hanging when game reset */
+{
+ m_timerthing = data;
+}
+
+
+/********************************
+ Memory Maps
+ ********************************/
+
+
+/* Same as woodhack, plus it has nvram, and some extra ram at fffc */
+static ADDRESS_MAP_START( mspachi_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5080) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ AM_RANGE(0x7000, 0x70ff) AM_RAM
+ AM_RANGE(0x8000, 0xbfff) AM_ROM
+ AM_RANGE(0xfffc, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mspacii_map, AS_PROGRAM, 8, pacman_state )
+ /* do not use UNMAP_HIGH (protection issues) */
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_MIRROR(0x8000) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_MIRROR(0x8000) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_MIRROR(0x8000) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_MIRROR(0x8000) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_MIRROR(0x8000) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_MIRROR(0x8000) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5080) AM_MIRROR(0x8000) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1")
+ AM_RANGE(0x504d, 0x506f) AM_READ(mspacii_prot_r)
+ AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x8000) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0x9fff) AM_ROM
+ AM_RANGE(0xfffc, 0xffff) AM_WRITENOP
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mspacman_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf38) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xaf38) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_MIRROR(0xaf38) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_MIRROR(0xaf38) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_MIRROR(0xaf38) AM_WRITENOP // AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_MIRROR(0xaf38) AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_MIRROR(0xaf38) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP
+ AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2")
+
+ /* overlay decode enable/disable on top */
+ AM_RANGE(0x0038, 0x003f) AM_READWRITE(mspacman_disable_decode_r_0x0038,mspacman_disable_decode_w)
+ AM_RANGE(0x03b0, 0x03b7) AM_READWRITE(mspacman_disable_decode_r_0x03b0,mspacman_disable_decode_w)
+ AM_RANGE(0x1600, 0x1607) AM_READWRITE(mspacman_disable_decode_r_0x1600,mspacman_disable_decode_w)
+ AM_RANGE(0x2120, 0x2127) AM_READWRITE(mspacman_disable_decode_r_0x2120,mspacman_disable_decode_w)
+ AM_RANGE(0x3ff0, 0x3ff7) AM_READWRITE(mspacman_disable_decode_r_0x3ff0,mspacman_disable_decode_w)
+ AM_RANGE(0x3ff8, 0x3fff) AM_READWRITE(mspacman_enable_decode_r_0x3ff8,mspacman_enable_decode_w)
+ AM_RANGE(0x8000, 0x8007) AM_READWRITE(mspacman_disable_decode_r_0x8000,mspacman_disable_decode_w)
+ AM_RANGE(0x97f0, 0x97f7) AM_READWRITE(mspacman_disable_decode_r_0x97f0,mspacman_disable_decode_w)
+
+ /* start with 0000-3fff and 8000-bfff mapped to the ROMs */
+ AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_UNMAP
+ AM_RANGE(0x0000, 0xffff) AM_ROMBANK("bank1")
+ADDRESS_MAP_END
+
+
+/* For Dave Widel's hacks */
+static ADDRESS_MAP_START( widel_map, AS_PROGRAM, 8, pacman_state )
+ /* bace and dderby set 5000-5FFF to zero for no apparent reason */
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP // mrmrspac
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5080) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2") /* DSW2 - not used */
+ AM_RANGE(0x5103, 0x5103) AM_WRITENOP /* aa */
+ AM_RANGE(0x5c0e, 0x5c0e) AM_RAM /* mrmrspac */
+ AM_RANGE(0x5fff, 0x5fff) AM_READNOP /* aa */
+ AM_RANGE(0x8000, 0x9fff) AM_ROM /* only really needed by mrmrspac */
+ AM_RANGE(0xd000, 0xd000) AM_RAM /* mrmrspac */
+ AM_RANGE(0xf000, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( zolapac_io, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_READ(zolatimer_r)
+ AM_RANGE(0x10, 0x10) AM_WRITENOP /* writes 0 at reset */
+ AM_RANGE(0x11, 0x11) AM_WRITE(zolatimer_w)
+ADDRESS_MAP_END
+
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+/* only for encrypted sets with 20000 in cpu1 */
+static MACHINE_CONFIG_DERIVED( mspacman, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mspacman_map)
+MACHINE_CONFIG_END
+
+/* Hires mspacman */
+static MACHINE_CONFIG_DERIVED( mspacmnx, pacmanx )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mspacman_map)
+MACHINE_CONFIG_END
+
+/* Hires hacks */
+static MACHINE_CONFIG_DERIVED( woodpekx, pacmanx )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(woodpek_map)
+MACHINE_CONFIG_END
+
+/* MSPacman with modified memory maps */
+
+static MACHINE_CONFIG_DERIVED( mspacii, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mspacii_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( zolapac, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(woodpek_map)
+ MCFG_CPU_IO_MAP(zolapac_io)
+MACHINE_CONFIG_END
+
+/* These drivers need the watchdog to be removed in order to work */
+
+static MACHINE_CONFIG_DERIVED( pachack, pacman )
+ MCFG_WATCHDOG_MODIFY("watchdog")
+ MCFG_WATCHDOG_VBLANK_INIT("screen", 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( mspachi, pachack )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mspachi_map)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( widel, pachack )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(widel_map)
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+
+/* The encryption is provided by a 74298 sitting on top of the rom at 6f.
+The select line is tied to a2; a0 and a1 of the eprom are are left out of
+socket and run through the 74298. Clock is tied to system clock. */
+DRIVER_INIT_MEMBER( pacman_state, mspacmbe )
+{
+ uint8_t temp;
+ uint8_t *RAM = machine().root_device().memregion("maincpu")->base();
+ int i;
+
+ /* Address lines A1 and A0 swapped if A2=0 */
+ for(i = 0x1000; i < 0x2000; i+=4)
+ {
+ if (!(i & 8))
+ {
+ temp = RAM[i+1];
+ RAM[i+1] = RAM[i+2];
+ RAM[i+2] = temp;
+ }
+ }
+}
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+
+ROM_START( chtmsatk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtmspa )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( cookiem )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "cookiem.1", 0x0000, 0x1000, CRC(3c95b06b) SHA1(c123de2f3246af4074e6a2f3a5a29aec0c6cd0f9) )
+ ROM_LOAD( "cookiem.2", 0x1000, 0x1000, CRC(527859fb) SHA1(993baa017732e247e4c318a5f105a13c281fbd8d) ) // faulty
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "cookiem.4", 0x3000, 0x1000, CRC(66e397fd) SHA1(4e3d03abfaaa94a7a159fd51348ca6a7e4427272) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "cookiem.6", 0x9000, 0x1000, CRC(a96761a6) SHA1(73072f753f5659712e3644194a0982ef14648f46) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "cookiem.5e", 0x0000, 0x1000, CRC(ffb4de27) SHA1(ff12a37158e08f4d9ddad4184dfbd44f83120506) )
+ ROM_LOAD( "cookiem.5f", 0x1000, 0x1000, CRC(1b5875ac) SHA1(9b0f4b96de9d7a2c7abcb06efaf083ff8ab28abe) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( cottoh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "cottoh.4", 0x3000, 0x1000, CRC(f0892bb8) SHA1(680d2335ca99128ad29295e161bd0bd52f9de0b8) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "cottoh.5e", 0x0000, 0x1000, CRC(8e78665a) SHA1(3d9c357bdcc7862d329d4f38c6d43bc792eee572) )
+ ROM_LOAD( "cottoh.5f", 0x1000, 0x1000, CRC(4f83ae26) SHA1(9c308c1b684812747d573058ef157db14f03d2d9) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( cottoh2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "cottoh2.4", 0x3000, 0x1000, CRC(e285564b) SHA1(7b00549d680146fa2a88ce8a6ea45ece6e185d67) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "cottoh2.5e", 0x0000, 0x1000, CRC(3bbea74d) SHA1(613dc0989670347fa2827806b8408fc407d5386d) )
+ ROM_LOAD( "cottoh2.5f", 0x1000, 0x1000, CRC(9c3d7558) SHA1(803aef874d988f112dea54f442e12973c799ea2e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fasthear )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "fastplus.2", 0x1000, 0x1000, CRC(a8d6c227) SHA1(b5891f911bb054ca2547e663a3c27c93897f2075) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "heartbn2.5e", 0x0000, 0x1000, CRC(28eb876c) SHA1(6bd3b9efdab76b3bf7c7f08ba9f44f830290df43) )
+ ROM_LOAD( "heartbn2.5f", 0x1000, 0x1000, CRC(50fc9966) SHA1(21f79739b9884307430a35b2901098f45bbf5b7d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fastmspa )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "fastplus.2", 0x1000, 0x1000, CRC(a8d6c227) SHA1(b5891f911bb054ca2547e663a3c27c93897f2075) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( faststrm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "fastplus.2", 0x1000, 0x1000, CRC(a8d6c227) SHA1(b5891f911bb054ca2547e663a3c27c93897f2075) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msdstorm.5e", 0x0000, 0x1000, CRC(b2940b89) SHA1(bfe7066fa11468d8373b43f966e76d92b17c0f48) )
+ ROM_LOAD( "msdstorm.5f", 0x1000, 0x1000, CRC(5c65865f) SHA1(988b6deccd985a32d4561164bfabd80ebb43f0a6) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fstmsatk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "fastplus.2", 0x1000, 0x1000, CRC(a8d6c227) SHA1(b5891f911bb054ca2547e663a3c27c93897f2075) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( heartbn2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "heartbn2.5e", 0x0000, 0x1000, CRC(28eb876c) SHA1(6bd3b9efdab76b3bf7c7f08ba9f44f830290df43) )
+ ROM_LOAD( "heartbn2.5f", 0x1000, 0x1000, CRC(50fc9966) SHA1(21f79739b9884307430a35b2901098f45bbf5b7d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( heartbrn )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "heartbrn.5e", 0x0000, 0x1000, CRC(5431d4c4) SHA1(34d45da44b4208e2774f5e2af08657a9086252e6) )
+ ROM_LOAD( "heartbrn.5f", 0x1000, 0x1000, CRC(ceb50654) SHA1(70dbe3cc715d3d52ee3d4f8dadbf5c59f87166a3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( horizpab )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "horizpac.1", 0x0000, 0x1000, CRC(7CC1979D) SHA1(557346859DCFCE806E83DCF0DA1FE60DA20FED81) )
+ ROM_LOAD( "horizpac.2", 0x1000, 0x1000, CRC(14202B73) SHA1(136B860D6AC8EFB9C83B67F77FBB47C3014D4ADC) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821EE0B) SHA1(5EA4D907DBB2690698DB72C4E0B5BE4D3E9A7786) )
+ ROM_LOAD( "horizpab.4", 0x3000, 0x1000, CRC(c9df7abe) SHA1(da21a182b81181260e2a1615115d22797bd1434a) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8C3E6DE6) SHA1(FED6E9A2B210B07E7189A18574F6B8C4EC5BB49B) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368CB165) SHA1(387010A0C76319A1EAB61B54C9BCB5C66C4B67A1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "horizpac.5e", 0x0000, 0x1000, CRC(0572335D) SHA1(F2D8BB3124970B298026E841E057FBCC7CDFC4B1) )
+ ROM_LOAD( "horizpac.5f", 0x1000, 0x1000, CRC(4198511D) SHA1(B3808062835AA0CC05FA19A678A5C8AB8FB646D7) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( horizpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "horizpac.1", 0x0000, 0x1000, CRC(7CC1979D) SHA1(557346859DCFCE806E83DCF0DA1FE60DA20FED81) )
+ ROM_LOAD( "horizpac.2", 0x1000, 0x1000, CRC(14202B73) SHA1(136B860D6AC8EFB9C83B67F77FBB47C3014D4ADC) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821EE0B) SHA1(5EA4D907DBB2690698DB72C4E0B5BE4D3E9A7786) )
+ ROM_LOAD( "horizpac.4", 0x3000, 0x1000, CRC(9A17E8DA) SHA1(2696643705878207952C4559C176D486BD0027C2) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8C3E6DE6) SHA1(FED6E9A2B210B07E7189A18574F6B8C4EC5BB49B) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368CB165) SHA1(387010A0C76319A1EAB61B54C9BCB5C66C4B67A1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "horizpac.5e", 0x0000, 0x1000, CRC(0572335D) SHA1(F2D8BB3124970B298026E841E057FBCC7CDFC4B1) )
+ ROM_LOAD( "horizpac.5f", 0x1000, 0x1000, CRC(4198511D) SHA1(B3808062835AA0CC05FA19A678A5C8AB8FB646D7) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mrmrspac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mrmrspac.1", 0x0000, 0x1000, CRC(02a86998) SHA1(649cfe5140eb63e42069ae9ad6c426837179fcbf) )
+ ROM_LOAD( "mrmrspac.2", 0x1000, 0x1000, CRC(8917172f) SHA1(7b09ab3b6f2a1b5d889a05295b42f70bafb5aa98) )
+ ROM_LOAD( "mrmrspac.3", 0x2000, 0x1000, CRC(6fd1444a) SHA1(64a98336eec75bb6ed90e77da18db8b71af562c1) )
+ ROM_LOAD( "mrmrspac.4", 0x3000, 0x1000, CRC(22f68a1f) SHA1(bd8d684f957ee33dace9eddcc923006036181787) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "mrmrspac.6", 0x9000, 0x1000, CRC(23580455) SHA1(836b815c7b1dd4deb1a1297556d0a5c126250c34) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mrpacman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mrpacman.4", 0x3000, 0x1000, CRC(65c0526c) SHA1(b90f05a335a5ec641318dea15a97c9abb96ded2e) )
+ ROM_LOAD( "mrpacman.5", 0x8000, 0x1000, CRC(4078d9b2) SHA1(c294735341504787fa7f4bc44543e132d975c0a2) )
+ ROM_LOAD( "mrpacman.6", 0x9000, 0x1000, CRC(c1637f1c) SHA1(15577900bbba060e6c1b8dd03fcde19e7f4193c5) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mrpacman.5e", 0x0000, 0x1000, CRC(83e6a3a9) SHA1(9e76e0ff114778183324c905c7600ef848bf4a76) )
+ ROM_LOAD( "mrpacman.5f", 0x1000, 0x1000, CRC(045dadf0) SHA1(1a28cb97ad547bddd3cc8e6d0102f7e1d43c71ea) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms1000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms1000.4", 0x3000, 0x1000, CRC(22a10392) SHA1(7c17601428988dd996bbe64afee486fcf2333beb) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms1000.5e", 0x0000, 0x1000, CRC(adde7864) SHA1(6e21d412b11bbabf05c65ad3c0dccba73fe15eb5) )
+ ROM_LOAD( "ms1000.5f", 0x1000, 0x1000, CRC(5cb008a9) SHA1(bb9049b2a48773dac775acd70cb0cb54dcd6a5b0) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms2000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms2000.4", 0x3000, 0x1000, CRC(a72e49df) SHA1(396bf713cddeb5521c614ff8483b0baef23af7d0) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms2000.5e", 0x0000, 0x1000, CRC(2bcce741) SHA1(fd9729e54b049723c0fb6c47effe39724577ba0d) )
+ ROM_LOAD( "ms2000.5f", 0x1000, 0x1000, CRC(4b40032a) SHA1(8002af3dfcfea82d56f5f04505d432c02dc56185) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms2600 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms2600.4", 0x3000, 0x1000, CRC(c2a293df) SHA1(98e864d1993c97293acea0febc9cac8eb0fb582c) )
+ ROM_LOAD( "ms2600.5", 0x8000, 0x1000, CRC(4852db05) SHA1(8471e1640164dc311e0180a7a8323208a40cf889) )
+ ROM_LOAD( "ms2600.6", 0x9000, 0x1000, CRC(f32b076f) SHA1(f361233a06e0376fe83a6fd0a071593c7c260cb1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms2600.5e", 0x0000, 0x1000, CRC(6b07b97a) SHA1(981ce12d92c57ed6c908d4b5b9b0c0b079d325db) )
+ ROM_LOAD( "ms2600.5f", 0x1000, 0x1000, CRC(f844608b) SHA1(80b4a51536ac4c83974726cbfb36232e06334329) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms3000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms3000.4", 0x3000, 0x1000, CRC(46790576) SHA1(097366bb8008122bb8814e5db6228d1e5756cb41) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms3000.5e", 0x0000, 0x1000, CRC(1708299b) SHA1(c47d6d37f7c064f5bb22fa74c20fb259e9c694bf) )
+ ROM_LOAD( "ms3000.5f", 0x1000, 0x1000, CRC(cf4798e3) SHA1(046958565ba31a63b36b89ee2ddc599196af1ec3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms4000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms4000p.4", 0x3000, 0x1000, CRC(ff418db8) SHA1(eec95b43e451af2ab3dbbee83c577548097a90ef) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms4000p.5e", 0x0000, 0x1000, CRC(05ed8a9f) SHA1(8654596af1de7ddcd1795d9a38e75deb7e6f96c6) )
+ ROM_LOAD( "ms4000p.5f", 0x1000, 0x1000, CRC(c0b58e02) SHA1(6ad23edff1b4a9324ea67ab28f3ab5e8362a55d8) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( ms5000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms2000.4", 0x3000, 0x1000, CRC(a72e49df) SHA1(396bf713cddeb5521c614ff8483b0baef23af7d0) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+ ROM_FILL(0x3810, 1, 0x35) // put 5000 in because we don't have the actual ms5000 rom
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms5000.5e", 0x0000, 0x1000, CRC(fd1bd093) SHA1(b1b20614d2a06fa032373fb01e79b4004215e2b7) )
+ ROM_LOAD( "ms5000.5f", 0x1000, 0x1000, CRC(07d39d56) SHA1(2482477c8a2130dd5eb279b99e541bc5229c0778) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ms5000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "ms5000p.4", 0x3000, 0x1000, CRC(d7ff3b21) SHA1(478557c734062fc30a8b0252ebe04e15ec81a29a) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms5000p.5e", 0x0000, 0x1000, CRC(4fd847aa) SHA1(39e1f184df81a61325a4d3cf2ef04eb3703f3944) )
+ ROM_LOAD( "ms5000p.5f", 0x1000, 0x1000, CRC(50d5fa64) SHA1(777e041901da0cae324524d64fa67b04b2f33bcc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msatk2ad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacat2.5", 0x8000, 0x1000, CRC(5a72a7a6) SHA1(aa54bf865e024fe00a8aefce6bc5086e90d71a54) )
+ ROM_LOAD( "mspacat2.6", 0x9000, 0x1000, CRC(bd0c3e94) SHA1(1b01ed6eab2c31bb874d1e51e773d0c130de7b75) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msatkad.5e", 0x0000, 0x1000, CRC(dc70ed2e) SHA1(b9fbb1d21085bc78eb82c429506b20e332b18e0e) )
+ ROM_LOAD( "msatkad.5f", 0x1000, 0x1000, CRC(643d5523) SHA1(565f92294a4b6a11dc5e9a165f35284c2a526e6c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msatkad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msatkad.5e", 0x0000, 0x1000, CRC(dc70ed2e) SHA1(b9fbb1d21085bc78eb82c429506b20e332b18e0e) )
+ ROM_LOAD( "msatkad.5f", 0x1000, 0x1000, CRC(643d5523) SHA1(565f92294a4b6a11dc5e9a165f35284c2a526e6c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msbaby )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msbaby.4", 0x3000, 0x1000, CRC(17aea21d) SHA1(2baa4b3812611ae8a1ff6b1b21b0a3ffd0d30be2) )
+ ROM_LOAD( "msbaby.5", 0x8000, 0x1000, CRC(0c08aa7f) SHA1(0d4079d68c86cd64e4d309fdc43d2022a50f172d) )
+ ROM_LOAD( "msbaby.6", 0x9000, 0x1000, CRC(e28aaa1f) SHA1(e0c4c1e0ceb3dfd6e63d954d3d6ea7924efac08b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msbaby.5e", 0x0000, 0x1000, CRC(e764738d) SHA1(79a7b871ee292d8cc2c4c97962fd876b4b95c4df) )
+ ROM_LOAD( "msbaby.5f", 0x1000, 0x1000, CRC(3d316ad0) SHA1(fd7d1a02930cc1c8a2f4aa8518d805601a8e0a80) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msberzk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msberzk.4", 0x3000, 0x1000, CRC(795b1d20) SHA1(eb14ac6d2142fcfcbccf52eb7e8c51c208554eef) )
+ ROM_LOAD( "msberzk.5", 0x8000, 0x1000, CRC(9fc2a679) SHA1(2684ecc09e2cf055daee181371691fc09cbd585a) )
+ ROM_LOAD( "msberzk.6", 0x9000, 0x1000, CRC(6749a32d) SHA1(41b5b952c4f7f14b6a3884291c87e9ee6e760231) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msberzk.5e", 0x0000, 0x1000, CRC(92692429) SHA1(af5e72c445c7ea35655730364072c269befbc66f) )
+ ROM_LOAD( "msberzk.5f", 0x1000, 0x1000, CRC(7c32ed2e) SHA1(124ff35143b1fcaa25d810a3479ae363cf74d2c9) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mscrzyma )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mscrzyma.4", 0x3000, 0x1000, CRC(f2b17834) SHA1(4d687e681d21a9a702ed5e8022c9098b8347811a) )
+ ROM_LOAD( "mspacnes.5", 0x8000, 0x1000, CRC(43936999) SHA1(4261f0bbb9ece2370c6283763a396ad851f42c51) )
+ ROM_LOAD( "mspacnes.6", 0x9000, 0x1000, CRC(a15b524e) SHA1(91f211e479261b344fc64517394abf7a8f9d6f4b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ms2000.5e", 0x0000, 0x1000, CRC(2bcce741) SHA1(fd9729e54b049723c0fb6c47effe39724577ba0d) )
+ ROM_LOAD( "mscrzyma.5f", 0x1000, 0x1000, CRC(2a9d6f77) SHA1(bcfec717967e64891d9638037ba5331b22654229) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mscrzymp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mscrzymp.4", 0x3000, 0x1000, CRC(db440183) SHA1(ec4e7a7324f77818e7357e6c7c9e8af257fcbc7d) )
+ ROM_LOAD( "mspacnes.5", 0x8000, 0x1000, CRC(43936999) SHA1(4261f0bbb9ece2370c6283763a396ad851f42c51) )
+ ROM_LOAD( "mspacnes.6", 0x9000, 0x1000, CRC(a15b524e) SHA1(91f211e479261b344fc64517394abf7a8f9d6f4b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mscrzymp.5e", 0x0000, 0x1000, CRC(d43a7194) SHA1(2508b14778f8ff2d76b7ec00ba9fc30a0f606dcf) )
+ ROM_LOAD( "mscrzymp.5f", 0x1000, 0x1000, CRC(7af54907) SHA1(d930b90f0500c3be451996ced9578ce870a1d6d5) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msdroid )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msdroid.4", 0x3000, 0x1000, CRC(984b3e88) SHA1(fb7c29adf0c7434c639fd82abf7aa9c709b37054) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msdroid.5e", 0x0000, 0x1000, CRC(97f5dd55) SHA1(14a1a8dda66223392fbae51af654607c56ac266e) )
+ ROM_LOAD( "msdroid.5f", 0x1000, 0x1000, CRC(c0e47314) SHA1(d8a51d280bba4ad93db8019111ac4393aea9f9a2) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msdstorm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msdstorm.5e", 0x0000, 0x1000, CRC(b2940b89) SHA1(bfe7066fa11468d8373b43f966e76d92b17c0f48) )
+ ROM_LOAD( "msdstorm.5f", 0x1000, 0x1000, CRC(5c65865f) SHA1(988b6deccd985a32d4561164bfabd80ebb43f0a6) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mselton )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "mselton.5f", 0x1000, 0x1000, CRC(30d0b19f) SHA1(9964a5a103ce1975d8606d5cfd2306c05a74aca3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msextra )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msextra.4", 0x3000, 0x1000, CRC(b13d0521) SHA1(67e51e5447e5376a76ba1de6c600cf8aba6103f9) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msextra.5e", 0x0000, 0x1000, CRC(b656c0c5) SHA1(efa8aed573b4258a6f6da96b04968a9197ad2d33) )
+ ROM_LOAD( "msextra.5f", 0x1000, 0x1000, CRC(c5d7017b) SHA1(29fa44d925526ab7f6385a2d4c750492063131ab) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msextrap )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msextrap.4", 0x3000, 0x1000, CRC(728f7465) SHA1(c3e089d2c7bace010e29f4cb861baa888007e8bf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msextrap.5e", 0x0000, 0x1000, CRC(1a2fa3e2) SHA1(dafccc8123093a9f5306c0c19367c3accd755ca1) )
+ ROM_LOAD( "msextrap.5f", 0x1000, 0x1000, CRC(5a400cbc) SHA1(7351b9c7f196fc49fdab04a135a1519ca6d489ed) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msf1pac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msf1pac.4", 0x3000, 0x1000, CRC(e255428b) SHA1(fd128743eac8521f1a65bdbb2cfd59398eddfac5) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msindy.5e", 0x0000, 0x1000, CRC(c7183fd2) SHA1(af7e3bb7c4751f5df12bd321d6f583045c5acb10) )
+ ROM_LOAD( "msindy.5f", 0x1000, 0x1000, CRC(a355e061) SHA1(b9223e01a77027d2f6afe4502b4a2dce3b3bdc0e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msgrkatk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msgrkb.4", 0x3000, 0x1000, CRC(7143729f) SHA1(87152df222364908852b1d242dff15889da5e95d) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msgrkb.5e", 0x0000, 0x1000, CRC(b6526896) SHA1(904dc168680cec660bee5a1a28a6a4b0dee9364e) )
+ ROM_LOAD( "msgrkb.5f", 0x1000, 0x1000, CRC(043b1c9b) SHA1(6aa7971390272c3df4ceaf7718ad08086bb33b5c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msgrkb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msgrkb.4", 0x3000, 0x1000, CRC(7143729f) SHA1(87152df222364908852b1d242dff15889da5e95d) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msgrkb.5e", 0x0000, 0x1000, CRC(b6526896) SHA1(904dc168680cec660bee5a1a28a6a4b0dee9364e) )
+ ROM_LOAD( "msgrkb.5f", 0x1000, 0x1000, CRC(043b1c9b) SHA1(6aa7971390272c3df4ceaf7718ad08086bb33b5c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mshangly )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mshangly.5", 0x8000, 0x1000, CRC(00c4d538) SHA1(cbfc9c10809631aae3fe9c454661ffa84a34138c) )
+ ROM_LOAD( "mshangly.6", 0x9000, 0x1000, CRC(7a600536) SHA1(7172b4658c1b0ea4cdcc55b7f21225d82e116e5e) )
+ /* The dot counts are wrong, they are at 8b2c, 8e17, 9109, 93f9 for each map 1-4 */
+ ROM_FILL ( 0x8b2c, 1, 0xdc ) /* Change dot count for map 1 from E0 to DC */
+ ROM_FILL ( 0x8e17, 1, 0xf2 ) /* Change dot count for map 2 from F4 to F2 */
+ ROM_FILL ( 0x93f9, 1, 0xec ) /* Map 3 (=F2) is ok, change dot count for map 4 from EE to EC */
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msheartb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msheart.5e", 0x0000, 0x1000, CRC(56f505f1) SHA1(5628874f332d348a61c1abcf116278ece534a7ba) )
+ ROM_LOAD( "msheart.5f", 0x1000, 0x1000, CRC(662423ca) SHA1(e22a20e2ed51b4efe39665222669d86353d6c4c5) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mshearts )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mshearts.5e", 0x0000, 0x1000, CRC(0b5cf081) SHA1(9333369dd282f725c01831314f2aafd1667c64f9) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msindy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msindy.4", 0x3000, 0x1000, CRC(8e234b3a) SHA1(f54f94aa80486a96178765378123a16a2637a47b) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msindy.5e", 0x0000, 0x1000, CRC(c7183fd2) SHA1(af7e3bb7c4751f5df12bd321d6f583045c5acb10) )
+ ROM_LOAD( "msindy.5f", 0x1000, 0x1000, CRC(a355e061) SHA1(b9223e01a77027d2f6afe4502b4a2dce3b3bdc0e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msmini )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msmini.5e", 0x0000, 0x1000, CRC(7787a3f6) SHA1(8d89be6fcc1dfeb4470a721c9c89225ea8c7cfad) )
+ ROM_LOAD( "msmini.5f", 0x1000, 0x1000, CRC(98ab3c44) SHA1(07dcfb7d6f2ca50e6e50ee1c14c229d26bb4b909) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msminia )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msmini.5e", 0x0000, 0x1000, CRC(7787a3f6) SHA1(8d89be6fcc1dfeb4470a721c9c89225ea8c7cfad) )
+ ROM_LOAD( "msmini.5f", 0x1000, 0x1000, CRC(98ab3c44) SHA1(07dcfb7d6f2ca50e6e50ee1c14c229d26bb4b909) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msmspac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msmspac.4", 0x3000, 0x1000, CRC(1c11c60f) SHA1(d445a333f79ad8a6886e3b08fc39dee01733cf07) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "msmspac.5f", 0x1000, 0x1000, CRC(a0ffcd08) SHA1(0cd5028e97fafdd8b9b221a7a07bdc81826f4765) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msnes4a )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "msnes4a.5", 0x8000, 0x1000, CRC(d16b9605) SHA1(b54691591794fd8d9c9097da49add34f49021b50) )
+ ROM_LOAD( "msnes4a.6", 0x9000, 0x1000, CRC(e6b58707) SHA1(cf0c5a3fbb9ae9a99a9c5c74ba45ac86323a0396) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msnes4a.5e", 0x0000, 0x1000, CRC(22e5b64e) SHA1(56e81329bee499a798a01867dbf2ceae6af2e11a) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes62 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "msnes62.5", 0x8000, 0x1000, CRC(52120bc9) SHA1(dc3608672e614a486306660bd367b325cdb51bda) )
+ ROM_LOAD( "msnes62.6", 0x9000, 0x1000, CRC(8fd36e02) SHA1(6d0b04b7efd8a4a6773d60e5e748243cf1c56a1a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacnes.5e", 0x0000, 0x1000, CRC(d3a28769) SHA1(3fa7d9a235e0bf8aae03b15c5377401f029d6946) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes63 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "msnes63.5", 0x8000, 0x1000, CRC(f4ea7d2c) SHA1(c490720d3b76615f46cae1f9bfbfc74da6f2854a) )
+ ROM_LOAD( "msnes63.6", 0x9000, 0x1000, CRC(1ea43bba) SHA1(0c52d0d2ca866b750a03587c8c51c14f67327d43) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacnes.5e", 0x0000, 0x1000, CRC(d3a28769) SHA1(3fa7d9a235e0bf8aae03b15c5377401f029d6946) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes6m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "msnes6m.5", 0x8000, 0x1000, CRC(bc091971) SHA1(d5046f5dcffd027805a53be937e7389a135e980f) )
+ ROM_LOAD( "msnes6m.6", 0x9000, 0x1000, CRC(23ebe9a1) SHA1(a51b6bd74edbea8e34ef35602c4aa8723d7f745a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msnes6m.5e", 0x0000, 0x1000, CRC(3abb116b) SHA1(75abb47c9acfc4048d18265ff2a42db2d3591a48) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes6m2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "msstrmaz.5", 0x8000, 0x1000, CRC(b8f8edda) SHA1(5af8c7908df0d45d456cfe68470ba2098c956cac) )
+ ROM_LOAD( "msstrmaz.6", 0x9000, 0x1000, CRC(5d7888bc) SHA1(1f3ecd3bc787dd64ed41b1d664cf6794fa799ee8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msnes6m.5e", 0x0000, 0x1000, CRC(3abb116b) SHA1(75abb47c9acfc4048d18265ff2a42db2d3591a48) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes6m3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "msnes6m3.5", 0x8000, 0x1000, CRC(20833779) SHA1(07826e21a14c15590cba7b9a08d2b91bf247cfe7) )
+ ROM_LOAD( "msnes6m3.6", 0x9000, 0x1000, CRC(a047e68f) SHA1(8b99f471f39c6c383f84754996b644fe067527f7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msnes6m.5e", 0x0000, 0x1000, CRC(3abb116b) SHA1(75abb47c9acfc4048d18265ff2a42db2d3591a48) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msnes6m4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "msnes6m4.5", 0x8000, 0x1000, CRC(23c0db46) SHA1(dea5a3eeb1fb480f275cc2729b7ad604aa0824d3) )
+ ROM_LOAD( "msnes6m4.6", 0x9000, 0x1000, CRC(daafdb39) SHA1(4120bdd859f37b065279cf048937cd1a5ce526da) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msnes4a.5e", 0x0000, 0x1000, CRC(22e5b64e) SHA1(56e81329bee499a798a01867dbf2ceae6af2e11a) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( mspac1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mspac1.cpu", 0x0000, 0x4000, CRC(ba5953c8) SHA1(ee5a0b9594f88c60be93e13f70adf45c5939f4da) )
+ ROM_CONTINUE( 0x8000, 0x2000 )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspac6m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "mspac6m.5", 0x8000, 0x1000, CRC(d0bd89d9) SHA1(c47e96d68d7e88e906b416c24ce926b76689f22d) )
+ ROM_LOAD( "mspac6m.6", 0x9000, 0x1000, CRC(c5662407) SHA1(98827bda653b6d1d6984082c706247392ab706d2) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "mspac6m.5e", 0x0000, 0x0800, CRC(2850148a) SHA1(4257a5dd4ad27d4a6bfae71bbe2564026bdaebb2) )
+ ROM_LOAD( "mspac6m.5h", 0x0800, 0x0800, CRC(6c3c6ebb) SHA1(3f19e9a20e202fda139324ef03991af99516aeef) )
+ ROM_LOAD( "mspac6m.5f", 0x1000, 0x0800, CRC(5596b345) SHA1(0320eb1f7e39dbd438be2f488f43f5b11e13f438) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( mspac6m2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "mspac6m2.5", 0x8000, 0x1000, CRC(48453707) SHA1(3faf536de2e56770a99379849409eeea01b2d031) )
+ ROM_LOAD( "mspac6m2.6", 0x9000, 0x1000, CRC(2e961bc4) SHA1(e29814151edde8a22e638a4a8edb9935e48d985b) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "mspac6m.5e", 0x0000, 0x0800, CRC(2850148a) SHA1(4257a5dd4ad27d4a6bfae71bbe2564026bdaebb2) )
+ ROM_LOAD( "mspac6m.5h", 0x0800, 0x0800, CRC(6c3c6ebb) SHA1(3f19e9a20e202fda139324ef03991af99516aeef) )
+ ROM_LOAD( "mspac6m.5f", 0x1000, 0x0800, CRC(5596b345) SHA1(0320eb1f7e39dbd438be2f488f43f5b11e13f438) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( mspacad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacad.5e", 0x0000, 0x1000, CRC(c3dca510) SHA1(6e9c3e47f2f928ef3857dce8bc26352a80d4a52d) )
+ ROM_LOAD( "msvectr.5f", 0x1000, 0x1000, CRC(57cb31e3) SHA1(dc9278cee7f7ce341087760654bf0a1bcdeb2f7c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacat2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacat2.5", 0x8000, 0x1000, CRC(5a72a7a6) SHA1(aa54bf865e024fe00a8aefce6bc5086e90d71a54) )
+ ROM_LOAD( "mspacat2.6", 0x9000, 0x1000, CRC(bd0c3e94) SHA1(1b01ed6eab2c31bb874d1e51e773d0c130de7b75) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacatb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacat2.5", 0x8000, 0x1000, CRC(5a72a7a6) SHA1(aa54bf865e024fe00a8aefce6bc5086e90d71a54) )
+ ROM_LOAD( "mspacatb.6b", 0x9000, 0x1000, CRC(7a8c4dfe) SHA1(b450a3272255527838b806dc0318256e47593018) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacatx )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6pacatk", 0x9000, 0x1000, CRC(f6d83f4d) SHA1(6135b187d6b968554d08f2ac00d3a3313efb8638) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This dump had a bad rom at position 5a, i have re-created it from one half of boot5. This seems reasonable
+ since the rom at position 5b is identical to the other half of boot5.
+ More: checking against E180 shows this is correct, and also supplies the missing 6b rom. */
+ROM_START( mspacde )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacde.5a", 0x8000, 0x0800, CRC(cb8a001c) SHA1(398992352c51f82049a4ac981fd152c4c2863f2d) )
+ ROM_LOAD( "mspacde.5b", 0x8800, 0x0800, CRC(3e866689) SHA1(fbcb8eaddf15fd988de2cb35f93003380ee6e2de) )
+ ROM_LOAD( "mspacde.6a", 0x9000, 0x0800, CRC(286041cf) SHA1(5a5fc97ea66a59895b3403b2982940b755076667) )
+ ROM_LOAD( "mspacde.6b", 0x9800, 0x0800, CRC(321784cf) SHA1(9b67741e035fe1528e971db9072eea8982235a63) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacit.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "mspacit.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "mspacit.5f", 0x1000, 0x0800, CRC(22b0188a) SHA1(a9ed9ca8b36a60081fd364abc9bc23963932cc0b) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacdel )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacdel.4", 0x3000, 0x1000, CRC(af8c63ad) SHA1(e119eac748179fef53b8fd62f33885df53bf94fa) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacdel.5e", 0x0000, 0x1000, CRC(605becd7) SHA1(d16bd3e151273ab6652b4f105dd58ef95c18b387) )
+ ROM_LOAD( "mspacdel.5f", 0x1000, 0x1000, CRC(435de4cb) SHA1(f3aa39e969f79b0e01378c870e874f8076def746) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacfnt )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacfnt.5e", 0x0000, 0x1000, CRC(6d6d7af4) SHA1(768dc3fa909f6fef77eb3d72c287c91f3da2ae70) )
+ ROM_LOAD( "mspacfnt.5f", 0x1000, 0x1000, CRC(7537ee90) SHA1(9e861fca1706ecabaad15ba3fc817bdc3146ea1d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspachi )
+ ROM_REGION( 0x11000, "maincpu", 0 )
+ ROM_LOAD( "mspachi.1", 0x0000, 0x1000, CRC(dca2ffc4) SHA1(746ebc8afd3172323f1c19e97e55e0f906d68ea4) )
+ ROM_LOAD( "mspachi.2", 0x1000, 0x1000, CRC(fea2627b) SHA1(bc7249f0939dc003de509721e7d4f669defefcfe) )
+ ROM_LOAD( "mspachi.3", 0x2000, 0x1000, CRC(a9a32749) SHA1(2d1036a0903a12f4f8b9e56c1599d1dccea8991a) )
+ ROM_LOAD( "mspachi.4", 0x3000, 0x1000, CRC(9123cd53) SHA1(e6a3461c818b2bc779f02c23d59e54530ef76584) )
+ ROM_LOAD( "mspachi.5", 0x8000, 0x1000, CRC(397f196d) SHA1(aab641b8053adc0a43ee5d2eba43aa6c12326dec) )
+ ROM_LOAD( "mspachi.6", 0x9000, 0x2000, CRC(50de42d3) SHA1(66b2dd376ab69cab2593357489251f06bc621120) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacii )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mspacii.1", 0x0000, 0x1000, CRC(df673b57) SHA1(93ee4e8f9751db5f7d3c35988fcb8ae8037464ed) )
+ ROM_LOAD( "mspacii.2", 0x1000, 0x1000, CRC(7591f606) SHA1(0aead0ac5af602269df8732c5763147cdb543b8d) )
+ ROM_LOAD( "mspacii.3", 0x2000, 0x1000, CRC(c8ef1a7f) SHA1(0c9a28bbe63d7d44511a13316937a21b8846543e) )
+ ROM_LOAD( "mspacii.4", 0x3000, 0x1000, CRC(d498f435) SHA1(c041841b1349d8d5c2d560aed54c4aeb8adfddb8) )
+ ROM_LOAD( "mspacii.5", 0x8000, 0x1000, CRC(fbbc3d2e) SHA1(dc4337d7f0961e048a433021f670da6d314bd663) )
+ ROM_LOAD( "mspacii.6", 0x9000, 0x1000, CRC(aa3887c5) SHA1(0e20cb686383156a9883749568c8e57c15c3ae44) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacii.5e", 0x0000, 0x1000, CRC(04333722) SHA1(bb179d5302b26b815b5d7eff14865e7b4f8a6880) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacit )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacit.4", 0x3000, 0x1000, CRC(50dcba32) SHA1(cc454829cd71ca874029a20118027873df824c66) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "mspacit.6", 0x9000, 0x1000, CRC(3a1d5323) SHA1(16e7dddf40505706ece2d053d51e28bff8be8e77) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacit.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "mspacit.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "mspacit.5f", 0x1000, 0x0800, CRC(22b0188a) SHA1(a9ed9ca8b36a60081fd364abc9bc23963932cc0b) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "mspacit.7f", 0x0000, 0x0020, CRC(2c3cc909) SHA1(32d68d4cfdf9f3e7351353428d268c763e809c63) )
+ ROM_LOAD( "82s126.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ /* The sound is extremely distorted, perhaps a bad dump? The patches below fix the changed bytes */
+ ROM_LOAD( "mspacit.1m", 0x0000, 0x0100, CRC(3cb61034) SHA1(2f24b88839aee107a0ac1064f8bc4853933f5205) )
+ ROM_FILL( 0x0a, 1, 13 )
+ ROM_FILL( 0x2a, 1, 10 )
+ ROM_FILL( 0x4a, 1, 2 )
+ ROM_FILL( 0x8a, 1, 13 )
+ ROM_FILL( 0xaa, 1, 2 )
+ ROM_FILL( 0xca, 1, 10 )
+ ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+/* This was listed as a pac-gal clone however it is just another MS Pacman (mspacit with slightly altered gfx) */
+ROM_START( mspacit2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacit.4", 0x3000, 0x1000, CRC(50dcba32) SHA1(cc454829cd71ca874029a20118027873df824c66) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "mspacit.6", 0x9000, 0x1000, CRC(3a1d5323) SHA1(16e7dddf40505706ece2d053d51e28bff8be8e77) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacit.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "mspacit.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "mspacit2.5f", 0x1000, 0x0800, CRC(20135b9b) SHA1(ea85134cdeb4142d72cf81ead96990d211046f2e) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* The cpu rom is 2 copies of mspacmbg.cpu joined */
+ROM_START( mspacj )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mspacj.cpu", 0x0000, 0x4000, CRC(807f978a) SHA1(19fa46e41ff671b88fb7d5e0a6c8c989a96e3477) )
+ ROM_CONTINUE( 0x8000, 0x4000)
+ ROM_IGNORE( 0x8000 )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacj.gfx", 0x0000, 0x0800, CRC(8ee4a3b0) SHA1(01e3453c99f7a5d78ab083c49c650e898c0dd2ee) )
+ ROM_CONTINUE( 0x1000, 0x0800 )
+ ROM_CONTINUE( 0x0800, 0x0800 )
+ ROM_CONTINUE( 0x1800, 0x0800 )
+ ROM_IGNORE( 0x2000 )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "mspacj.7f", 0x0000, 0x0020, CRC(3545e7e9) SHA1(b866b02579438afb11296e5c53a32c6425bd044d) )
+ ROM_LOAD( "82s126.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "mspacj.1m", 0x0000, 0x0100, CRC(640e455c) SHA1(c3f7d132cf8f1ec3334366b6891fca74450a577e) )
+ ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( mspacmab )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacman )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6", 0x9000, 0x1000, CRC(a90e7000) SHA1(e4df96f1db753533f7d770aa62ae1973349ea4cf) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This set has the fixes proposed by Don Hodges at the pages:
+ http://donhodges.com/how_high_can_you_get3.htm
+ http://donhodges.com/ms_pacman_bugs.htm */
+ROM_START( mspacmap )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+ ROM_FILL(0x0677,1,0xc3)
+ ROM_FILL(0x0678,1,0x41)
+ ROM_FILL(0x0679,1,0x98)
+ ROM_FILL(0x0c1d,1,0x00)
+ ROM_FILL(0x2bf3,1,0xc3)
+ ROM_FILL(0x2bf4,1,0x93)
+ ROM_FILL(0x2bf5,1,0x87)
+ ROM_FILL(0x2bf8,1,0x3c)
+ ROM_FILL(0x8794,1,0x07)
+ ROM_FILL(0x8796,1,0xf8)
+ ROM_FILL(0x2ffc,1,0xfa)
+ ROM_FILL(0x2ffd,1,0x5b)
+ ROM_FILL(0x3f7c,1,0x85)
+ ROM_FILL(0x94c3,1,0xd2)
+ ROM_FILL(0x94d8,1,0xd2)
+ ROM_FILL(0x9595,1,0xd2)
+ ROM_FILL(0x95a7,1,0xd2)
+ ROM_FILL(0x95c8,1,0xd2)
+ ROM_FILL(0x9841,1,0xaf)
+ ROM_FILL(0x9842,1,0x32)
+ ROM_FILL(0x9843,1,0x02)
+ ROM_FILL(0x9844,1,0x4e)
+ ROM_FILL(0x9845,1,0xef)
+ ROM_FILL(0x9846,1,0x01)
+ ROM_FILL(0x9847,1,0x01)
+ ROM_FILL(0x9848,1,0xc3)
+ ROM_FILL(0x9849,1,0x7a)
+ ROM_FILL(0x984a,1,0x06)
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmat )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6pacatk", 0x9000, 0x1000, CRC(f6d83f4d) SHA1(6135b187d6b968554d08f2ac00d3a3313efb8638) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmbe )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "2.bin", 0x1000, 0x1000, CRC(04e6c486) SHA1(63aa3e6c49d345cccfe87dd3fdcddc75ab4a570d) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "6.bin", 0x9000, 0x1000, CRC(206a9623) SHA1(20006f945c1b7b0e3c0415eecc0b148e5a6a1dfa) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmbg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mspacmbg.cpu", 0x0000, 0x4000, CRC(97c64918) SHA1(a46ca4822e6cd7b9a5603d5d06a78fd489dc0b96) )
+ ROM_CONTINUE( 0x8000, 0x4000 )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacmbg.gfx", 0x0000, 0x0800, CRC(f2c5da43) SHA1(6a6de2ecc313a11ad12d8d1712c05f923984f668) )
+ ROM_CONTINUE( 0x1000, 0x0800 )
+ ROM_CONTINUE( 0x0800, 0x0800 )
+ ROM_CONTINUE( 0x1800, 0x0800 )
+ ROM_IGNORE( 0x6000 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmbx )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmfx )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6", 0x9000, 0x1000, CRC(a90e7000) SHA1(e4df96f1db753533f7d770aa62ae1973349ea4cf) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmnf )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacfast.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6", 0x9000, 0x1000, CRC(a90e7000) SHA1(e4df96f1db753533f7d770aa62ae1973349ea4cf) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmnn )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6", 0x9000, 0x1000, CRC(a90e7000) SHA1(e4df96f1db753533f7d770aa62ae1973349ea4cf) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnn.5e", 0x0000, 0x1000, CRC(f4cf1273) SHA1(9120de96984e96a0425b210d9fb8175b91b26284) )
+ ROM_LOAD( "mspacmnn.5f", 0x1000, 0x1000, CRC(c4e7ec0b) SHA1(06940f81b228fd7b6389afe93a7355dc2afee821) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacmnx )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "u6", 0x9000, 0x1000, CRC(a90e7000) SHA1(e4df96f1db753533f7d770aa62ae1973349ea4cf) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacnes )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacnes.5", 0x8000, 0x1000, CRC(43936999) SHA1(4261f0bbb9ece2370c6283763a396ad851f42c51) )
+ ROM_LOAD( "mspacnes.6", 0x9000, 0x1000, CRC(a15b524e) SHA1(91f211e479261b344fc64517394abf7a8f9d6f4b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacnes.5e", 0x0000, 0x1000, CRC(d3a28769) SHA1(3fa7d9a235e0bf8aae03b15c5377401f029d6946) )
+ ROM_LOAD( "mspacnes.5f", 0x1000, 0x1000, CRC(6a4db98d) SHA1(e0eeb83c1265f5c9881e1c752842d20dabf35783) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( mspacp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacp.4", 0x3000, 0x1000, CRC(203dcba5) SHA1(c1e94a17bab5f25bfdc5836e0ba968a56b6f9e58) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacp.5e", 0x0000, 0x1000, CRC(cd4afa90) SHA1(e917c5cd4b0af33279dbde5a50fc3aedb7602425) )
+ ROM_LOAD( "mspacp.5f", 0x1000, 0x1000, CRC(58ea207f) SHA1(65d07838bd2cb8bfcb6fcb0e99f88036af5753be) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( mspacpbl )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mspacpbl.1", 0x0000, 0x1000, CRC(34f60afa) SHA1(86813f3f0c3832451ee215d542cce7ad2aaa9785) )
+ ROM_LOAD( "mspacpbl.2", 0x1000, 0x1000, CRC(5426636c) SHA1(35cdd13e917c2d1e11086745de6dc3b85bf1fdbb) )
+ ROM_LOAD( "mspacpbl.3", 0x2000, 0x1000, CRC(60c890a1) SHA1(c1fbaedb212449803f5b506ac6f8e258644e4536) )
+ ROM_LOAD( "mspacpbl.4", 0x3000, 0x1000, CRC(586f1bfd) SHA1(1cf77bb44ba153ca03e7e8b26174b33f192da071) )
+ ROM_LOAD( "mspacpbl.5", 0x8000, 0x1000, CRC(85a44e94) SHA1(59b2249f6834ee4634e9fb8daa53739e80654c85) )
+ ROM_LOAD( "mspacpbl.6", 0x9000, 0x1000, CRC(3babaeab) SHA1(abc7f705a16dfd53540dfe7e0b6723a5843682c2) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacpbl.5e", 0x0000, 0x1000, CRC(5ba9c39a) SHA1(50e49234b051d74ce21ec4b819cccbbb98c57c3c) )
+ ROM_LOAD( "mspacpbl.5f", 0x1000, 0x1000, CRC(4aeefccb) SHA1(68810190397415be042c4787618feade7dcfe23a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacpls )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacplx )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacren )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacren.4", 0x3000, 0x1000, CRC(efe80423) SHA1(bc78085a53123da0e0c9ab2c212c60c9dd2e6983) )
+ ROM_LOAD( "mspacren.5", 0x8000, 0x1000, CRC(f513ae17) SHA1(87e1a3d31d04ed527cb89369c53a5a66403f73a5) )
+ ROM_LOAD( "mspacren.6", 0x9000, 0x1000, CRC(ce3b842b) SHA1(e4bf3578ccfaa757534f83fb3842d1515fd95d71) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacren.5e", 0x0000, 0x1000, CRC(31b134a0) SHA1(f457df057963aa60492a98f12a6d258fe7fded03) )
+ ROM_LOAD( "mspacren.5f", 0x1000, 0x1000, CRC(022f61d1) SHA1(16ed25a881b058efa963b938341ce4f04d914262) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "puckren.7f", 0x0000, 0x0020, CRC(7b6aa3c9) SHA1(849911abdc26ccf2ad44e2c432e6219447b8bef3) )
+ ROM_LOAD( "puckren.4a", 0x0020, 0x0100, CRC(64fe1dbf) SHA1(7f7541eb12148add79ad186a1da375c865d251e0) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( mspacrip )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacrip.4", 0x3000, 0x1000, CRC(5fb1ee61) SHA1(1123ec7d3de24fd8ae2eb75c87b3d22f53421e21) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacrip.5e", 0x0000, 0x1000, CRC(5aa9eb83) SHA1(da2500ed81873c2d96501d136c7d9478155e0d33) )
+ ROM_LOAD( "mspacrip.5f", 0x1000, 0x1000, CRC(ceb3785d) SHA1(c3cc1475ca0b1725497cd03ab116c18d57dba127) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacsup )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacsup.6f", 0x1000, 0x0800, CRC(ab07b7c6) SHA1(855ce1a948660014796de15a8ef155a2b7068056) )
+ ROM_LOAD( "mspacsup.6m", 0x1800, 0x0800, CRC(2a724972) SHA1(f67f4280f928f182330b32853591eec32a22d5f6) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacsup.6j", 0x3000, 0x0800, CRC(6023a7a8) SHA1(3424b057dc70c4a76f55dc1b618f5a0ad5d5b6fe) )
+ ROM_LOAD( "mspacsup.6p", 0x3800, 0x0800, CRC(9bdbccb0) SHA1(58dedf146178f08dc0e8c09aa0def75267e2efe4) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspacwf ) // Ms.Pacman Weird Fruit
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspacwf.4", 0x3000, 0x1000, CRC(a078477e) SHA1(e4016bfcd581cbf0b180d7e3cf6b63713de45add) )
+ ROM_LOAD( "mspacwf.5", 0x8000, 0x1000, CRC(5064e97a) SHA1(3cc0f7ce7874c28bf4d379922e9509fca6227c13) )
+ ROM_LOAD( "mspacwf.6", 0x9000, 0x1000, CRC(b9f6fc01) SHA1(43648fc301e0b2639ac98452154fd74ccec1f6d7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacwf.5e", 0x0000, 0x1000, CRC(4f00a074) SHA1(c9f0319537d327a46612d9255cfeea58c4f96918) )
+ ROM_LOAD( "mspacwf.5f", 0x1000, 0x1000, CRC(a13df02c) SHA1(072f5a3fe25cc29d57082eb0cfc7b78f5e330363) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspamsba )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "mspamsba.4", 0x3000, 0x1000, CRC(8b3f8e44) SHA1(d56e640e3454950c4f2c4d00c8f6e9e1cfb33494) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspamsba.5e", 0x0000, 0x1000, CRC(aa7115b8) SHA1(895f85d157239be4a6f40beeb739157954697386) )
+ ROM_LOAD( "mspamsba.5f", 0x1000, 0x1000, CRC(f94b0961) SHA1(8b1376dd50388cbc29426cc2e339798d687fb845) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mspc6mad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "mspc6mad.5", 0x8000, 0x1000, CRC(b556fe78) SHA1(2e84f6e69b3852b791de22ac31bee2b2f76ded07) )
+ ROM_LOAD( "mspc6mad.6", 0x9000, 0x1000, CRC(4dbe1939) SHA1(5203274ed1ceb06308f2778b7b5e8d41e8f2bd63) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspc6mad.5e", 0x0000, 0x1000, CRC(92ea9860) SHA1(1d03cd9dd411ed9284fe4ccae3cbe2ac53560139) )
+ ROM_LOAD( "mspc6mad.5f", 0x1000, 0x1000, CRC(713cc17e) SHA1(dca7722b38c4eae701f48110276376c83505fc9b) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msplus )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msplus.4", 0x3000, 0x1000, CRC(9d6fed06) SHA1(9927933f8df589e995f542d48a6ac196029a343f) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacp.5e", 0x0000, 0x1000, CRC(cd4afa90) SHA1(e917c5cd4b0af33279dbde5a50fc3aedb7602425) )
+ ROM_LOAD( "msplus.5f", 0x1000, 0x1000, CRC(e68b2a85) SHA1(8c1b294505ae5202bce760cafea2437a5f71d0cf) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msrumble )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msrumble.4", 0x3000, 0x1000, CRC(15b02313) SHA1(b1400928ff7a5c3067f3d7be02b172f3054c0ce0) )
+ ROM_LOAD( "msrumble.5", 0x8000, 0x1000, CRC(e2473a86) SHA1(b51cb0a98178f4c52345d6ecdf89e5f23080eb72) )
+ ROM_LOAD( "msrumble.6", 0x9000, 0x1000, CRC(17abb097) SHA1(7eae139e71c7ea07e05f9b1c04194b1ae6c2f975) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mssilad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mssilad.3", 0x2000, 0x1000, CRC(79d241dd) SHA1(98f95619d4212da9f23b83ad5c9c793576d51177) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mssilad.5", 0x8000, 0x1000, CRC(2e2fcde0) SHA1(718dcbf395eb92b956adf185b5b2cf46aa5b9694) )
+ ROM_LOAD( "mssilad.6", 0x9000, 0x1000, CRC(22c6d19a) SHA1(92cb3f962b7dab5e92b780d60f448b9f57c03687) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msatkad.5e", 0x0000, 0x1000, CRC(dc70ed2e) SHA1(b9fbb1d21085bc78eb82c429506b20e332b18e0e) )
+ ROM_LOAD( "msatkad.5f", 0x1000, 0x1000, CRC(643d5523) SHA1(565f92294a4b6a11dc5e9a165f35284c2a526e6c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msstrmaz )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "msstrmaz.4", 0x3000, 0x1000, CRC(ef9cce5a) SHA1(2a9bcdd672023129761a573d77f69b76ccfdc5c4) )
+ ROM_LOAD( "msstrmaz.5", 0x8000, 0x1000, CRC(b8f8edda) SHA1(5af8c7908df0d45d456cfe68470ba2098c956cac) )
+ ROM_LOAD( "msstrmaz.6", 0x9000, 0x1000, CRC(5d7888bc) SHA1(1f3ecd3bc787dd64ed41b1d664cf6794fa799ee8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msstrmaz.5e", 0x0000, 0x1000, CRC(14fd0ad7) SHA1(4fac020002905b28c7f054340aa0eacc7b2c701b) )
+ ROM_LOAD( "msstrmaz.5f", 0x1000, 0x1000, CRC(67fb6254) SHA1(ce2134f6c8c6fc5770a835aa1eeebd27611806da) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( msultra )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "msultra.4", 0x3000, 0x1000, CRC(36b5e9fd) SHA1(70373fbcae8d2f6dd9274cb825a561de15c4c2b9) )
+ ROM_LOAD( "msultra.5", 0x8000, 0x1000, CRC(cf609615) SHA1(f410eec29433085bf9138582e6725c9326d9001f) )
+ ROM_LOAD( "msultra.6", 0x9000, 0x1000, CRC(007cd365) SHA1(c5ce3f81063052b36a6f5516d391e6c5a63f2819) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msultra.5e", 0x0000, 0x1000, CRC(508af5b0) SHA1(5a92354f45af65d3343e32111f675998a5347557) )
+ ROM_LOAD( "msultra.5f", 0x1000, 0x1000, CRC(db5a4630) SHA1(2cb6e8650ae861a2008dd2f185aa2c02827ab370) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msvctr6m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "mspac6m.4", 0x3000, 0x1000, CRC(e21c81ff) SHA1(5a6ce8ee3059a31afbb9b8c1d0a1e37606d14a0a) )
+ ROM_LOAD( "mspac6m.5", 0x8000, 0x1000, CRC(d0bd89d9) SHA1(c47e96d68d7e88e906b416c24ce926b76689f22d) )
+ ROM_LOAD( "mspac6m.6", 0x9000, 0x1000, CRC(c5662407) SHA1(98827bda653b6d1d6984082c706247392ab706d2) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msvctr6m.5e", 0x0000, 0x1000, CRC(64b35a5a) SHA1(5c8dec1ae192c8e717346618bc4f28d3abd0ca84) )
+ ROM_LOAD( "msvectr.5f", 0x1000, 0x1000, CRC(57cb31e3) SHA1(dc9278cee7f7ce341087760654bf0a1bcdeb2f7c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msvectr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msvectr.5e", 0x0000, 0x1000, CRC(56560aef) SHA1(1eac2b242328ec4d6ba9faac2fd972c8cb6c3e55) )
+ ROM_LOAD( "msvectr.5f", 0x1000, 0x1000, CRC(57cb31e3) SHA1(dc9278cee7f7ce341087760654bf0a1bcdeb2f7c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( msyakman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msyakman.5e", 0x0000, 0x1000, CRC(827892bb) SHA1(5b111c4d6293e13d5fae9e77823acd8be5c08b34) )
+ ROM_LOAD( "msyakman.5f", 0x1000, 0x1000, CRC(1108ba96) SHA1(b1ee699722b8a22e24ec18d1930e055387a45d96) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ottop1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ottop1.1", 0x0000, 0x1000, CRC(00340fb8) SHA1(60337395c35085c32fc4450a649cf629e4ae32da) )
+ ROM_LOAD( "ottop1.2", 0x1000, 0x1000, CRC(f6c05582) SHA1(3803f1a9546ff6293e3fad1984300eb1c2835ff6) )
+ ROM_LOAD( "ottop1.3", 0x2000, 0x1000, CRC(08381b15) SHA1(8727ddb990668acd0288ee9ec9de4922a505c7d1) )
+ ROM_LOAD( "ottop1.4", 0x3000, 0x1000, CRC(0d20edf6) SHA1(11ec227cb5ee030bfed9aaa0b624fd2c0e47b6f5) )
+ ROM_LOAD( "ottop1.5", 0x8000, 0x1000, CRC(3bb6cea7) SHA1(cf629f478f14fb392bc71b6453364b58c3544b0a) )
+ ROM_LOAD( "ottop1.6", 0x9000, 0x1000, CRC(1e1357bf) SHA1(4fd6074cc971bfe8d233714ae88ec295840c7d9b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ottop1.5e", 0x0000, 0x1000, CRC(2ba71471) SHA1(69f111cee7c1228636ee38b065b2d5486a18749d) )
+ ROM_LOAD( "ottop1.5f", 0x1000, 0x1000, CRC(ad353000) SHA1(8ec0c31dc4e9da5bd8cc8087abb3a9936759b39d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ottop2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ottop2.1", 0x0000, 0x1000, CRC(a9c0c5fc) SHA1(4631b6260b88c5dc23503ea420a62f946f5bb978) )
+ ROM_LOAD( "ottop1.2", 0x1000, 0x1000, CRC(f6c05582) SHA1(3803f1a9546ff6293e3fad1984300eb1c2835ff6) )
+ ROM_LOAD( "ottop1.3", 0x2000, 0x1000, CRC(08381b15) SHA1(8727ddb990668acd0288ee9ec9de4922a505c7d1) )
+ ROM_LOAD( "ottop2.4", 0x3000, 0x1000, CRC(c8517a08) SHA1(ab6ed1004e6a66dfce426ad5db0bfc0cd4e6eabc) )
+ ROM_LOAD( "ottop2.5", 0x8000, 0x1000, CRC(d8d8ceec) SHA1(b3ea6f35118b04281c568806127fe1a97c22ed42) )
+ ROM_LOAD( "ottop2.6", 0x9000, 0x1000, CRC(184f877a) SHA1(473b47566fce1b53d6b885b54562c4ae82ed9ae1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ottop2.5e", 0x0000, 0x1000, CRC(54a743f7) SHA1(9406b856edf3f6a7979926295663cabdf53bb0d4) )
+ ROM_LOAD( "ottop1.5f", 0x1000, 0x1000, CRC(ad353000) SHA1(8ec0c31dc4e9da5bd8cc8087abb3a9936759b39d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ottop3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ottop3.1", 0x0000, 0x1000, CRC(2df1dc0d) SHA1(93846a2affedda0ab1047b2927198fc2c24c7f72) )
+ ROM_LOAD( "ottop1.2", 0x1000, 0x1000, CRC(f6c05582) SHA1(3803f1a9546ff6293e3fad1984300eb1c2835ff6) )
+ ROM_LOAD( "ottop1.3", 0x2000, 0x1000, CRC(08381b15) SHA1(8727ddb990668acd0288ee9ec9de4922a505c7d1) )
+ ROM_LOAD( "ottop3.4", 0x3000, 0x1000, CRC(0eb1ad52) SHA1(d533d06d3aab14ab7726d449269782d663da1180) )
+ ROM_LOAD( "ottop3.5", 0x8000, 0x1000, CRC(3e2e62bb) SHA1(8dcbc2170214e538fcf092c54a9d6994b5157278) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ottop2.5e", 0x0000, 0x1000, CRC(54a743f7) SHA1(9406b856edf3f6a7979926295663cabdf53bb0d4) )
+ ROM_LOAD( "ottop1.5f", 0x1000, 0x1000, CRC(ad353000) SHA1(8ec0c31dc4e9da5bd8cc8087abb3a9936759b39d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ottopz )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ottopz.1", 0x0000, 0x1000, CRC(35b94585) SHA1(6a8350efbd6fab30b22365c6a2ed7e23f47af0e6) )
+ ROM_LOAD( "ottopz.2", 0x1000, 0x1000, CRC(298dbd3d) SHA1(302c82562c66c267dedcc7e7d5e3ab8234b5e20c) )
+ ROM_LOAD( "ottopz.3", 0x2000, 0x1000, CRC(6f0c25bd) SHA1(f4cabdb7462310c14ecde5db9f586360ac1829f4) )
+ ROM_LOAD( "ottopz.4", 0x3000, 0x1000, CRC(3af7ef8c) SHA1(bf340f3fa275950c0eda4fbf3eb3115edd039bd6) )
+ ROM_LOAD( "ottopz.5", 0x8000, 0x1000, CRC(098c2a09) SHA1(cf0e69c891dbc8b448c359abf3e869d0aaba02df) )
+ ROM_LOAD( "ottopz.6", 0x9000, 0x1000, CRC(367e5c05) SHA1(15bed84c6480fab5e7bcbbd1dbb2b8919ac1dca5) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ottopz.5e", 0x0000, 0x1000, CRC(046d76fb) SHA1(44f607dbed727a0ae5152da67b6953ba9619566f) )
+ ROM_LOAD( "ottopz.5f", 0x1000, 0x1000, CRC(402e194d) SHA1(01867241edd28f25aa7be1d4004bb2c73979d8d0) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacatk )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code+64k for decrypted code */
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+ ROM_LOAD( "u5", 0x8000, 0x0800, CRC(f45fbbcd) SHA1(b26cc1c8ee18e9b1daa97956d2159b954703a0ec) )
+ ROM_LOAD( "pacatk.u6", 0x9000, 0x1000, CRC(a35b3788) SHA1(51a1806a0ae4adb5baa9e875c6d9f715198ce8ae) )
+ ROM_LOAD( "u7", 0xb000, 0x1000, CRC(c82cd714) SHA1(1d8ac7ad03db2dc4c8c18ade466e12032673f874) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+// ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+// ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacgal )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "pacman.7hj", 0x3000, 0x1000, CRC(70694c8e) SHA1(d0d02f0997b44e1ba5ea27fc3f7af1b956e2a687) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "pacman.5ef", 0x1000, 0x0800, CRC(65a3ee71) SHA1(cbbf700eefba2a5bf158983f2ca9688b7c6f5d2b) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "pacgal.4a", 0x0020, 0x0100, CRC(63efb927) SHA1(5c144a613fc4960a1dfd7ead89e7fee258a63171) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( pacgalu )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacgalu.bin", 0x0000, 0x4000, CRC(23a0bd03) SHA1(6ebf7985374a0b0d7402f54c3c9b488fdebeb65e) )
+ ROM_CONTINUE( 0x8000, 0x4000 )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacgalu.gfx", 0x0000, 0x2000, CRC(d6e3a240) SHA1(e176bfc6c0d2ecee825dce18758639c6e1dbe70d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacgalx )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "mscrzyma.3", 0x2000, 0x1000, CRC(513f4d5c) SHA1(ae011b89422bd8cbb80389814500bc1427f6ecb2) )
+ ROM_LOAD( "pacman.7hj", 0x3000, 0x1000, CRC(70694c8e) SHA1(d0d02f0997b44e1ba5ea27fc3f7af1b956e2a687) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mspacmnx.5e", 0x0000, 0x4000, CRC(d9a2897d) SHA1(38cc83d1a854ae289da7904faff32114a9731bda) )
+ ROM_LOAD( "pacgalx.5f", 0x4000, 0x4000, CRC(dfb2a9e9) SHA1(a7c297910fce9723054ce9a7abc0175e75e72d1c) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_LOAD( "2s140.4a", 0x0020, 0x0100, CRC(63efb927) SHA1(5c144a613fc4960a1dfd7ead89e7fee258a63171) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( pacgent )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacgent.1", 0x0000, 0x1000, CRC(de6f3b2b) SHA1(cf499e8ce3bb88e69ce5bb3bbf412d81bf6a0c0f) )
+ ROM_LOAD( "fastplus.2", 0x1000, 0x1000, CRC(a8d6c227) SHA1(b5891f911bb054ca2547e663a3c27c93897f2075) )
+ ROM_LOAD( "pacgent.3", 0x2000, 0x1000, CRC(e96d522e) SHA1(41b08f3e10e81fc373bedd5ba928461f05a8ccb4) )
+ ROM_LOAD( "pacgent.4", 0x3000, 0x1000, CRC(154482fb) SHA1(98097e37f97310e93a42f7ae03072627c064f372) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "pacgent.6", 0x9000, 0x1000, CRC(dcc58e81) SHA1(5e005b46c5fef89c144f906e695eabad4a50919e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacgent.5e", 0x0000, 0x1000, CRC(e9992415) SHA1(3e8241e1b17d7f5243d348ad9d07f55266ed524e) )
+ ROM_LOAD( "pacgent.5f", 0x1000, 0x1000, CRC(50171b3a) SHA1(e1fef48206ba5af1e729bfa09f938cbc47917dc2) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( petshop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "petshop.4", 0x3000, 0x1000, CRC(75230eef) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "petshop.5e", 0x0000, 0x1000, CRC(ac1c180b) SHA1(dc012d2ba8e1ab19d915e0b1218154f5441aee99) )
+ ROM_LOAD( "petshop.5f", 0x1000, 0x1000, CRC(ce314b46) SHA1(bc091cef128f82c7d53ad1b4af841f41906cf601) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( piranha2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "piranha2.4", 0x3000, 0x1000, CRC(fe8b786d) SHA1(e9fcd78076e4e7e6aa73781238722e077e40f945) )
+ ROM_LOAD( "piranha2.5", 0x8000, 0x1000, CRC(bef08ea4) SHA1(04211f34d7eb9009b1d2cb1a3fbff0e4bdeb0127) )
+ ROM_LOAD( "piranha2.6", 0x9000, 0x1000, CRC(fd3df829) SHA1(69e6c66aab3eb43f0a64350279e67351f1aceddd) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "piranha2.5e", 0x0000, 0x1000, CRC(8f0fa58f) SHA1(bf1ae6523cc9161c0db55b8ecaafe1783f3600f2) )
+ ROM_LOAD( "piranha2.5f", 0x1000, 0x1000, CRC(42153903) SHA1(9b231f783b5c847b09819d554a3bb136028938e0) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ramsnoop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ramsnoop.1", 0x0000, 0x1000, CRC(A08529FA) SHA1(E448E3A2BED42FA9A2C6435849426E6A2CCF5290) )
+ ROM_LOAD( "ramsnoop.2", 0x1000, 0x1000, CRC(27B70DD6) SHA1(E52C724C7909C2B3B8EA44C2D3540BE9D23C5E03) )
+ ROM_LOAD( "ramsnoop.3", 0x2000, 0x1000, CRC(812691A0) SHA1(8FF6D1C2697732C0466BCB37A7F36392980B4A99) )
+ ROM_LOAD( "ramsnoop.4", 0x3000, 0x1000, CRC(9E7849E3) SHA1(8C574E42BFFC6B88D5B5DF3C6655F792B2FF5C5C) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8C3E6DE6) SHA1(FED6E9A2B210B07E7189A18574F6B8C4EC5BB49B) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368CB165) SHA1(387010A0C76319A1EAB61B54C9BCB5C66C4B67A1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5C281D01) SHA1(5E8B472B615F12EFCA3FE792410C23619F067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615AF909) SHA1(FD6A1DDE780B39AEA76BF1C4BEFA5882573C2EF4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( sueworlb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "sueworlb.4", 0x3000, 0x1000, CRC(edc5ad28) SHA1(b1b95ed715a935fe3bf68c71cb4ac66402c17e79) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sueworld.5e", 0x0000, 0x1000, CRC(6c975345) SHA1(8c294a14c3a2b390c85d75d61453e73ee8721058) )
+ ROM_LOAD( "sueworld.5f", 0x1000, 0x1000, CRC(2c809842) SHA1(4325af0b41b67ce3783b667506b60d0221c6ac45) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( sueworld )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "sueworld.4", 0x3000, 0x1000, CRC(677adea7) SHA1(b258e748e47cb8ae77594728f1ccc97a429a411e) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sueworld.5e", 0x0000, 0x1000, CRC(6c975345) SHA1(8c294a14c3a2b390c85d75d61453e73ee8721058) )
+ ROM_LOAD( "sueworld.5f", 0x1000, 0x1000, CRC(2c809842) SHA1(4325af0b41b67ce3783b667506b60d0221c6ac45) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( superp4g )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "superp4g.1", 0x0000, 0x1000, CRC(f88c992f) SHA1(b6e2ec74dcc87aa097b6360f9fd19cfb11227efb) )
+ ROM_LOAD( "superp4g.2", 0x1000, 0x1000, CRC(e6886710) SHA1(63207a2487a334e8de51ccede03b6d50e84e071a) )
+ ROM_LOAD( "superp4g.3", 0x2000, 0x1000, CRC(c76dd2e6) SHA1(3172733cab013945de5f1c79e0a829cacad224ab) )
+ ROM_LOAD( "superp4g.4", 0x3000, 0x1000, CRC(ba5b054e) SHA1(b7bb14167167c59ab9035539d5cf6338a10f00e0) )
+ ROM_LOAD( "superp4g.5", 0x8000, 0x1000, CRC(c701506b) SHA1(31c96d13f290248c63143e22b052adb698a45687) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "superp4g.5e", 0x0000, 0x1000, CRC(593576fe) SHA1(238006f0d4fe6d478521a8d116f8d0679b502f6d) )
+ ROM_LOAD( "superp4g.5f", 0x1000, 0x1000, CRC(e64e0f6d) SHA1(b87405ef0f90fc0a3afda1a4265ba6b0a074a21d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( superp4m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "superp4m.1", 0x0000, 0x1000, CRC(9caaac56) SHA1(8858e4e9d7e3b9a1cd55f6bff1b9766b13fd9b8b) )
+ ROM_LOAD( "superp4g.2", 0x1000, 0x1000, CRC(e6886710) SHA1(63207a2487a334e8de51ccede03b6d50e84e071a) )
+ ROM_LOAD( "superp4g.3", 0x2000, 0x1000, CRC(c76dd2e6) SHA1(3172733cab013945de5f1c79e0a829cacad224ab) )
+ ROM_LOAD( "superp4g.4", 0x3000, 0x1000, CRC(ba5b054e) SHA1(b7bb14167167c59ab9035539d5cf6338a10f00e0) )
+ ROM_LOAD( "superp4m.5", 0x8000, 0x1000, CRC(c4b3240c) SHA1(7839463d69c24d15ac4c4de199f2ba6ce1cfaad7) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "superp4g.5e", 0x0000, 0x1000, CRC(593576fe) SHA1(238006f0d4fe6d478521a8d116f8d0679b502f6d) )
+ ROM_LOAD( "superp4m.5f", 0x1000, 0x1000, CRC(9142e698) SHA1(229cc0f45ef4dcc60f1e449d24881a0a13720972) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( supmspac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "supmspac.2", 0x1000, 0x1000, CRC(f2110c60) SHA1(bfe4ba9bad0b3da44c36fa6735fdb38ba15a29ed) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "supmspac.4", 0x3000, 0x1000, CRC(0fe16984) SHA1(da77c5f04691d2679a53eb012542890c78f76683) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "mspacde.6a", 0x9000, 0x0800, CRC(286041cf) SHA1(5a5fc97ea66a59895b3403b2982940b755076667) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacit.5e", 0x0000, 0x0800, CRC(93933d1d) SHA1(fa38d2cb87e872bb9a3158a4df98f38360dc85ec) )
+ ROM_LOAD( "mspacit.5h", 0x0800, 0x0800, CRC(7409fbec) SHA1(f440f08ba026ae6172666e1bdc0894ce33bba420) )
+ ROM_LOAD( "mspacit.5f", 0x1000, 0x0800, CRC(22b0188a) SHA1(a9ed9ca8b36a60081fd364abc9bc23963932cc0b) )
+ ROM_LOAD( "mspacit.5j", 0x1800, 0x0800, CRC(50c7477d) SHA1(c04ec282a8cb528df5e38ad750d12ee71612695d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vectratk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "mspacatk.2", 0x1000, 0x1000, CRC(0af09d31) SHA1(6ff73e4da4910bcd2ca3aa299d8ffad23f8abf79) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "mspacatk.5", 0x8000, 0x1000, CRC(e6e06954) SHA1(ee5b266b1cc178df31fc1da5f66ef4911c653dda) )
+ ROM_LOAD( "mspacatk.6", 0x9000, 0x1000, CRC(3b5db308) SHA1(c1ba630cb8fb665c4881a6cce9d3b0d4300bd0eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "msvectr.5e", 0x0000, 0x1000, CRC(56560aef) SHA1(1eac2b242328ec4d6ba9faac2fd972c8cb6c3e55) )
+ ROM_LOAD( "msvectr.5f", 0x1000, 0x1000, CRC(57cb31e3) SHA1(dc9278cee7f7ce341087760654bf0a1bcdeb2f7c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( womanp5 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "womanp5.1", 0x0000, 0x1000, CRC(0afeef14) SHA1(39d7d8ce9ba3c166c0bef7f46e71520d50e00c32) )
+ ROM_LOAD( "superp4g.2", 0x1000, 0x1000, CRC(e6886710) SHA1(63207a2487a334e8de51ccede03b6d50e84e071a) )
+ ROM_LOAD( "womanp5.3", 0x2000, 0x1000, CRC(835ebcc2) SHA1(951ec2e88f4d47b0dcdcac28f964860ea21a5726) )
+ ROM_LOAD( "womanp5.4", 0x3000, 0x1000, CRC(b85c5572) SHA1(9eb397b24a783292d9a5ce9b866b19e9fdf2d1f8) )
+ ROM_LOAD( "womanp5.5", 0x8000, 0x1000, CRC(ce7459ac) SHA1(16df266e465d6673448f85e8834c4f0031ede671) )
+ ROM_LOAD( "boot6", 0x9000, 0x1000, CRC(368cb165) SHA1(387010a0c76319a1eab61b54c9bcb5c66c4b67a1) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "womanp5.5e", 0x0000, 0x1000, CRC(83613632) SHA1(1a47ef4d336baa3ba63cf0aceededec4bea35aaa) )
+ ROM_LOAD( "womanp5.5f", 0x1000, 0x1000, CRC(f2c4195e) SHA1(54446e6d1b74623410b67d303c3ab8eaee69f392) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolaad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolapac1.bin", 0x0000, 0x4000, CRC(1aa2f312) SHA1(7b9685355e398c97de6972ec947fb11ca627a4d3) )
+ ROM_LOAD( "zolapac2.bin", 0x8000, 0x2000, CRC(420ff603) SHA1(a314c28ec5c526da91535fd47f51c95539a2e8e8) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "msatkad.5e", 0x0000, 0x1000, CRC(dc70ed2e) SHA1(b9fbb1d21085bc78eb82c429506b20e332b18e0e) )
+ ROM_LOAD( "msatkad.5f", 0x1000, 0x1000, CRC(643d5523) SHA1(565f92294a4b6a11dc5e9a165f35284c2a526e6c) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolaatk )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolaatk.1", 0x0000, 0x1000, CRC(2b9e9433) SHA1(5ab15ad04b8fe1711c0ace0471ac3594382a9fb3) )
+ ROM_LOAD( "zolaatk.2", 0x1000, 0x1000, CRC(0c8631d1) SHA1(09739200c90979550ae4ef14d27583aac50fd724) )
+ ROM_LOAD( "zolaatk.3", 0x2000, 0x1000, CRC(694450a3) SHA1(fcaa1e3ee993c2f563721336c59cac8af30bcc15) )
+ ROM_LOAD( "zolaatk.4", 0x3000, 0x1000, CRC(b5b30242) SHA1(b0b2044bcc26a1f9aee41c81367995b67ccd5edb) )
+ ROM_LOAD( "zolaatk.5", 0x8000, 0x1000, CRC(24cb5d9b) SHA1(1439ba665b00e840838e5f12df7d44a022541ef4) )
+ ROM_LOAD( "zolaatk.6", 0x9000, 0x1000, CRC(e0c03b4e) SHA1(3ef3decf7725a3ddb996c8268d4a83cbf5edd6b4) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolamaze )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "boot1", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "boot3", 0x2000, 0x1000, CRC(1821ee0b) SHA1(5ea4d907dbb2690698db72c4e0b5be4d3e9a7786) )
+ ROM_LOAD( "boot4", 0x3000, 0x1000, CRC(165a9dd8) SHA1(3022a408118fa7420060e32a760aeef15b8a96cf) )
+ ROM_LOAD( "zolamaze.5", 0x8000, 0x1000, CRC(f8ed55bb) SHA1(14c5b4adbf301dcaea2c59488f39eec08177f63f) )
+ ROM_LOAD( "zolamaze.6", 0x9000, 0x1000, CRC(17e35c00) SHA1(f9f0ea4f462de298b704c2ddd53fef1219dae145) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolapac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolapac1.bin", 0x0000, 0x4000, CRC(1aa2f312) SHA1(7b9685355e398c97de6972ec947fb11ca627a4d3) )
+ ROM_LOAD( "zolapac2.bin", 0x8000, 0x2000, CRC(420ff603) SHA1(a314c28ec5c526da91535fd47f51c95539a2e8e8) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolaslow )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolaatk.1", 0x0000, 0x1000, CRC(2b9e9433) SHA1(5ab15ad04b8fe1711c0ace0471ac3594382a9fb3) )
+ ROM_LOAD( "boot2", 0x1000, 0x1000, CRC(0d32de5e) SHA1(13ea0c343de072508908be885e6a2a217bbb3047) )
+ ROM_LOAD( "zolaatk.3", 0x2000, 0x1000, CRC(694450a3) SHA1(fcaa1e3ee993c2f563721336c59cac8af30bcc15) )
+ ROM_LOAD( "zolaatk.4", 0x3000, 0x1000, CRC(b5b30242) SHA1(b0b2044bcc26a1f9aee41c81367995b67ccd5edb) )
+ ROM_LOAD( "zolaslow.5", 0x8000, 0x1000, CRC(092292f1) SHA1(156ca674c09abe348691585fb14d16d32488d50d) )
+ ROM_LOAD( "zolaslow.6", 0x9000, 0x1000, CRC(52209eee) SHA1(91967cac6b327af24891e953df1c6900764ea09a) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolatunl )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolaatk.1", 0x0000, 0x1000, CRC(2b9e9433) SHA1(5ab15ad04b8fe1711c0ace0471ac3594382a9fb3) )
+ ROM_LOAD( "zolaatk.2", 0x1000, 0x1000, CRC(0c8631d1) SHA1(09739200c90979550ae4ef14d27583aac50fd724) )
+ ROM_LOAD( "zolaatk.3", 0x2000, 0x1000, CRC(694450a3) SHA1(fcaa1e3ee993c2f563721336c59cac8af30bcc15) )
+ ROM_LOAD( "zolaatk.4", 0x3000, 0x1000, CRC(b5b30242) SHA1(b0b2044bcc26a1f9aee41c81367995b67ccd5edb) )
+ ROM_LOAD( "boot5", 0x8000, 0x1000, CRC(8c3e6de6) SHA1(fed6e9a2b210b07e7189a18574f6b8c4ec5bb49b) )
+ ROM_LOAD( "zolaslow.6", 0x9000, 0x1000, CRC(52209eee) SHA1(91967cac6b327af24891e953df1c6900764ea09a) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) )
+ ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( zolavect )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "zolapac1.bin", 0x0000, 0x4000, CRC(1aa2f312) SHA1(7b9685355e398c97de6972ec947fb11ca627a4d3) )
+ ROM_LOAD( "zolapac2.bin", 0x8000, 0x2000, CRC(420ff603) SHA1(a314c28ec5c526da91535fd47f51c95539a2e8e8) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "msvectr.5e", 0x0000, 0x1000, CRC(56560aef) SHA1(1eac2b242328ec4d6ba9faac2fd972c8cb6c3e55) )
+ ROM_LOAD( "msvectr.5f", 0x1000, 0x1000, CRC(57cb31e3) SHA1(dc9278cee7f7ce341087760654bf0a1bcdeb2f7c) )
+
+ PACMAN_PROMS
+ROM_END
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+/* MAME */
+
+/* rom parent machine inp init */
+GAME( 1981, mspacman, 0, mspacman, mspacpls, pacman_state, mspacman, ROT90, "Midway", "Ms. Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmat, mspacman, mspacman, mspacman, pacman_state, mspacman, ROT90, "hack", "Ms. Pac Attack", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmab, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "bootleg", "Ms. Pacman (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmbe, mspacman, woodpek, mspacman, pacman_state, mspacmbe, ROT90, "bootleg", "Ms. Pacman (bootleg, (encrypted))", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmnf, mspacman, mspacman, mspacman, pacman_state, mspacman, ROT90, "Midway", "Ms. Pacman (with speedup hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacpls, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "hack", "Ms. Pacman Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacgal, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "hack", "Pac-Gal", MACHINE_SUPPORTS_SAVE )
+
+/* Dave Widel's Games - http://www.widel.com */
+
+GAME( 2003, mrmrspac, mspacman, widel, mspacpls, driver_device, 0, ROT90, "David Widel", "Mr and Mrs Pacman (MR MRS PAC-MAN)[c]", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mspachi, mspacman, mspachi, mspacpls, driver_device, 0, ROT90, "David Widel", "Ms. Pacman[h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacatk, mspacman, mspacman, mspacpls, pacman_state, mspacman, ROT90, "David Widel", "Ms. Pacman Plus (Fruit)", MACHINE_SUPPORTS_SAVE )
+
+/* Blue Justice's Hacks */
+
+GAME( 2001, ms1000, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 1000 (MS PAC-MAN 1000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ms2000, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 2000 (MS PAC-MAN 2000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ms3000, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 3000 (MS PAC-MAN 3000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ms4000p, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 4000 Plus (MSPAC-MAN 4000PLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ms5000, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 5000 (MS PAC-MAN 5000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ms5000p, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman 5000 Plus (MSPAC-MAN 5000PLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, mscrzyma, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Crazy Mazes (MS PAC CRAZY MAZES)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, mscrzymp, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Crazy Mazes Plus (MS PAC-MAN CRAZYPLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msextra, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Extra (MS PAC-MAN EXTRA)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msextrap, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Extra Plus (MS PAC-MAN EXTRAPLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msmspac, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Ms. Pac (MS PAC-MAN MS PAC)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, mspacdel, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Deluxe (MS PAC-MAN DELUXE)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, mspamsba, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Ms. Babies (MS PAC-MAN MS BABIES)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, mspacp, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Plus (MS PAC-MAN PLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msplus, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Ms Plus (MS PAC-MAN MS PLUS)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msstrmaz, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Blue Justice", "Ms. Pacman Strange Mazes (MS PAC STRANGE MAZES)", MACHINE_SUPPORTS_SAVE )
+
+/* T-Bone Hacks */
+
+GAME( 2000, ms2600, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman 2600", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msbaby, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Baby Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msmini, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pac-Mini", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msminia, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "T-Bone", "Ms. Pac-Attack Mini [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes4a, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman SNES (Tall Alternate)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes62, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman NES (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes63, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman NES (Set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes6m, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman NES (6 maps)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes6m2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman SNES (New Mazes)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes6m3, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman SNES (Regular / Tall)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msnes6m4, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman SNES (Regular)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mspacnes, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman NES", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacren, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman Renaissance", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspc6mad, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Ms. Pacman After Dark (6 Mazes)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msvctr6m, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "T-Bone", "Vector Ms. Pacman (6 Mazes)", MACHINE_SUPPORTS_SAVE )
+
+/* Jerronimo's Progs - www.umlautllama.com */
+
+GAME( 2004, horizpab, mspacman, woodpek, mspacman, driver_device, 0, ROT0, "Scott Lawrence", "Horiz Pac (v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, horizpac, mspacman, woodpek, mspacman, driver_device, 0, ROT0, "Scott Lawrence", "Horiz Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, pacgent, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Scott Lawrence", "Pac Gentleman [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, ramsnoop, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Scott Lawrence", "Miss Snoop v1.3 [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ottop1, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P1", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ottop2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P2", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ottop3, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P3", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ottopz, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project PZ", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, superp4g, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P4G", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, superp4m, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P4M", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, womanp5, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Scott Lawrence", "Otto Project P5", MACHINE_SUPPORTS_SAVE )
+
+/* Grendal74's Hacks */
+
+GAME( 2001, msdroid, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Grendal74", "Ms. Pacman Android", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msgrkatk, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Grendal74", "Ms. Pac Attack Greek [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, msgrkb, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Grendal74", "Ms. Pacman Greek", MACHINE_SUPPORTS_SAVE )
+
+/* Medragon's Hacks */
+
+GAME( 2000, mrpacman, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Tim Appleton", "Mr. Pacman - Another Kind of Role Reversal", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacfnt, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Tim Appleton", "Ms. Pacman with Pacman font", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacwf, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Tim Appleton", "Ms Weird Fruit Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msrumble, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Tim Appleton", "Ms. Pac Rumble", MACHINE_SUPPORTS_SAVE )
+
+/* Sil's Hacks */
+
+GAME( 2000, mselton, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Elton", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msf1pac, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. F1 Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msindy, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Indy", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mspac6m, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Pacman 6M (Six Maze)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mspac6m2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Pacman 6M (Six Maze) (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacad, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Pacman After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacat2, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Marcel Silvius", "Ms. Pacman Plus / Attack [c]", MACHINE_SUPPORTS_SAVE )
+
+/* Bobby Tribble's Hacks */
+
+GAME( 2000, msberzk, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Bobby Tribble", "Ms. Pacman Berzerk", MACHINE_SUPPORTS_SAVE )
+
+/* Hires hacks */
+
+GAME( 1981, mspacatx, mspacmnx, mspacmnx, mspacpls, pacman_state, mspacman, ROT90, "hack", "Ms. Pac Attack (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmbx, mspacmnx, woodpekx, mspacman, driver_device, 0, ROT90, "bootleg", "Ms. Pac-Man (bootleg) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmfx, mspacmnx, mspacmnx, mspacpls, pacman_state, mspacman, ROT90, "Midway", "Ms. Pac-Man (hires hack) [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacmnx, 0, mspacmnx, mspacpls, pacman_state, mspacman, ROT90, "Midway", "Ms. Pac-Man (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacplx, mspacmnx, woodpekx, mspacpls, driver_device, 0, ROT90, "hack", "Ms. Pac-Man Plus (hires hack) [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacgalx, mspacmnx, woodpekx, mspacman, driver_device, 0, ROT90, "hack", "Pac-Gal (hires hack)", MACHINE_SUPPORTS_SAVE )
+
+/* Misc MsPacman Hacks */
+
+GAME( 2000, chtmsatk, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Plus [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, chtmspa, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, cookiem, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Nic", "Cookie-Mon! [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, cottoh, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Gatinho", "Crazy Otto simulation", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, cottoh2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Gatinho", "Crazy Otto simulation Ver 2", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fasthear, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "PacHack", "Ms. Heart Burn [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fastmspa, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, faststrm, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Desert Storm [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fstmsatk, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Attack [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, heartbn2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "PacHack", "Ms. Heart Burn", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, heartbrn, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "TwoBit Score", "Ms. Heart Burn (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msatk2ad, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Plus / Attack After Dark [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msatkad, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Plus After Dark [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msdstorm, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Mike Naylor", "Ms. Desert Storm", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mshangly, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Hangly Man", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msheartb, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Hearts (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mshearts, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Hearts", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspac1, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman (single rom set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacatb, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman Plus (Set B) [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mspacde, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman -1", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mspacii, mspacman, mspacii, mspacman, driver_device, 0, ROT90, "Orca", "Ms. Pacman II", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mspacit, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman -2", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, mspacit2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman -3", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mspacj, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman (Jamma? Bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, mspacmap, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Don Hodges", "Ms. Pacman (patched)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacmbg, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman (single rom)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, mspacpbl, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Dav/PMP", "Ms. Pac Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacrip, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "R3mer", "Ms. Pac-Mortem", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mspacsup, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Super Ms. Pac-Man", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mssilad, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman After Dark (Sil)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msultra, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "PacFan", "Ms. Ultra Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msvectr, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Vector Ms. Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, msyakman, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Jeff Minter", "Ms. Yak Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, pacgalu, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Uchida", "Pac-Gal (Hearts)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, petshop, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "Weirdness Inc", "Pet Shop Freak-Out!", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, piranha2, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "US Billiards", "Piranha 2 Revenge!", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, sueworld, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "PacFay", "Sue's World", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, sueworlb, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "PacFay", "Sue's World (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, supmspac, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "Spedic Vending", "Super Ms Pac-man [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectratk, mspacman, woodpek, mspacpls, driver_device, 0, ROT90, "[Midway]", "Vector Attack [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolaad, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Super Zola Pac Gal After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolaatk, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Super Zola Pac Gal Attack", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolamaze, mspacman, woodpek, mspacman, driver_device, 0, ROT90, "[Midway]", "Ms. Pacman No Exit", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolapac, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Super Zola Pac Gal", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolaslow, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Super Zola Pac Gal (Slow)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolatunl, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Super Zola Pac Gal (Tunnels)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, zolavect, mspacman, zolapac, mspacman, driver_device, 0, ROT90, "Tqwn Amusement", "Vector Super Zola Pac Gal", MACHINE_SUPPORTS_SAVE )
+
diff --git a/docs/release/src/hbmame/drivers/multipac.cpp b/docs/release/src/hbmame/drivers/multipac.cpp
new file mode 100644
index 00000000000..c19359b3989
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/multipac.cpp
@@ -0,0 +1,1940 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/**********************************************
+ Multi-game systems on pacman hardware
+ by Robbbert 2007-2013
+
+ Game choice is done via a menu
+**********************************************/
+
+WRITE8_MEMBER( pacman_state::m96in1_rombank_w )
+{
+ data &= 0x0f;
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ multipac_gfxbank_w( space, 0, data );
+}
+
+WRITE8_MEMBER( pacman_state::m96in1b_rombank_w )
+{
+ data &= 0x1f; /* config screen outputs some large values such as 197, 200 */
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ m96in1b_gfxbank_w( data );
+}
+
+WRITE8_MEMBER( pacman_state::hackypac_rombank_w )
+{
+ uint8_t banks[] = { 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 8, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 3 };
+ data &= 0x1f; /* strip extra bits when option selected */
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ multipac_palbank_w( space, 1, banks[data] ); /* convert to a palette bank and switch to it */
+}
+
+WRITE8_MEMBER( pacman_state::madpac_rombank_w )
+{
+ data &= 0x1f; /* config screen outputs some large values such as 197, 200 */
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ madpac_gfxbank_w( data );
+}
+
+WRITE8_MEMBER( pacman_state::multipac_rombank_w )
+{
+ uint8_t temp = ((data & 0x0f) << 1) + ((data & 0x10) >> 4); /* rearrange bits */
+ membank("bank1")->set_entry(temp); /* select rom bank */
+ if (!m_maincpu->space(AS_PROGRAM).read_byte(0xa007))
+ membank("bank2")->set_entry(temp << 1); /* Ms Pacman needs more roms */
+ m_maincpu->set_pc(0); /* Set PC <- 0000 needed for Lizard Wizard */
+}
+
+WRITE8_MEMBER( pacman_state::pm4n1_rombank_w )
+{
+ static uint8_t pm4n1_temp = 0;
+ uint8_t banks[] = { 0, 4, 2, 0, 1, 0, 3, 0 };
+ pm4n1_temp &= (7 - (1<<offset));
+ pm4n1_temp |= (data&1)<<offset;
+ membank("bank1")->set_entry(banks[pm4n1_temp]);
+ membank("bank2")->set_entry(banks[pm4n1_temp]);
+ multipac_gfxbank_w( space, 0, banks[pm4n1_temp] );
+}
+
+WRITE8_MEMBER( pacman_state::pm4n1d_rombank_w )
+{
+ if (offset==1)
+ {
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ multipac_gfxbank_w( space, 0, data<<1 );
+ }
+}
+
+WRITE8_MEMBER( pacman_state::superabc_rombank_w )
+{
+ data = data >> 4;
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ membank("bank3")->set_entry(data);
+ multipac_gfxbank_w( space, 0, data );
+}
+
+
+/*************************************
+ *
+ * Machine init
+ *
+ *************************************/
+
+MACHINE_RESET_MEMBER( pacman_state, 96in1 )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ m96in1_rombank_w( space, 0,0 );
+ m_namco_sound->pacman_sound_enable_w(space, 0, 0);
+}
+
+MACHINE_RESET_MEMBER( pacman_state, hackypac )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ multipac_gfxbank_w( space, 0,0 );
+ hackypac_rombank_w( space, 0,0 );
+ m_namco_sound->pacman_sound_enable_w(space, 0, 0);
+}
+
+MACHINE_RESET_MEMBER( pacman_state, madpac )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ madpac_rombank_w( space, 0,0 );
+ m_namco_sound->pacman_sound_enable_w(space, 0, 0);
+}
+
+MACHINE_RESET_MEMBER( pacman_state, mschamp )
+{
+ uint8_t *rom = memregion("maincpu")->base() + 0x10000;
+ uint8_t data = ioport("GAME")->read() & 1;
+
+ membank("bank1")->configure_entries(0, 2, &rom[0x0000], 0x8000);
+ membank("bank2")->configure_entries(0, 2, &rom[0x4000], 0x8000);
+
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+}
+
+MACHINE_RESET_MEMBER( pacman_state, multipac )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ multipac_rombank_w( space, 0, 0);
+ multipac_gfxbank_w( space, 0, 0);
+ multipac_palbank_w( space, 0, 0);
+ m_namco_sound->pacman_sound_enable_w(space, 0, 0);
+}
+
+static uint8_t curr_bank = 0;
+
+/* select next game when F3 pressed */
+MACHINE_RESET_MEMBER( pacman_state, mspaceur )
+{
+ membank("bank2")->set_entry(curr_bank);
+ curr_bank ^= 1; /* toggle between 0 and 1 */
+}
+
+MACHINE_RESET_MEMBER( pacman_state, pm4n1 )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ pm4n1_rombank_w(space, 0, 0);
+ pm4n1_rombank_w(space, 1, 0);
+ pm4n1_rombank_w(space, 2, 0);
+ m_namco_sound->pacman_sound_enable_w(space, 0, 0);
+}
+
+
+
+static ADDRESS_MAP_START( 96in1_writeport, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(m96in1_rombank_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( 96in1b_writeport, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(m96in1b_rombank_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( hackypac_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop) AM_WRITENOP
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5008, 0x503f) AM_WRITENOP
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x507f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5080, 0x50bf) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
+ AM_RANGE(0xfffc, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( hackypac_writeport, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(hackypac_rombank_w)
+ AM_RANGE(0x02, 0x02) AM_WRITE(multipac_gfxbank_w)
+ AM_RANGE(0x04, 0x04) AM_WRITENOP /* colorbank select, not used due to a bug */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( madpac_map, AS_PROGRAM, 8, pacman_state )
+ /* Mirrors in the 50xx range are needed by Zigzag */
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5008, 0x500f) AM_WRITENOP /* most pacman-type games write here */
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x507f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x8000) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0xb7ff) AM_ROMBANK("bank2")
+ AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xf800, 0xffff) AM_RAM /* various games use this */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( madpac_writeport, AS_IO, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(madpac_rombank_w)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( mspaceur_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
+ AM_RANGE(0xfffc, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( mschamp_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
+ AM_RANGE(0xf270, 0xf270) AM_RAM
+ AM_RANGE(0xfffc, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( multipac_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop) AM_WRITENOP
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP /* AM_WRITE(pacman_coin_lockout_global_w) breaks eyes,lizwiz,crush */
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2") /* Ms. Pacman */
+ AM_RANGE(0xa000, 0xa000) AM_WRITE(multipac_rombank_w)
+ AM_RANGE(0xa001, 0xa001) AM_WRITE(multipac_gfxbank_w)
+ AM_RANGE(0xa002, 0xa003) AM_WRITE(multipac_palbank_w)
+ AM_RANGE(0xa007, 0xa007) AM_RAM /* 0 = get ready to activate rombank(2) */
+ AM_RANGE(0xf000, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( pm4n1_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x8000) AM_READ(pacman_read_nop) AM_WRITENOP
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x8000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5006) AM_WRITE(pm4n1_rombank_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1")
+ AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2") /* Ms. Pacman */
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( pm4n1c_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0x4c00, 0x4fef) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5006) AM_WRITE(pm4n1_rombank_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
+ AM_RANGE(0xe004, 0xe006) AM_WRITENOP // mirror of 5004-5006
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( pm4n1d_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x8000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0x4c00, 0x4fef) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5006) AM_WRITE(pm4n1d_rombank_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
+ AM_RANGE(0xe004, 0xe006) AM_WRITENOP // mirror of 5004-5006
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( superabc_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x49ff) AM_RAM AM_SHARE("nvram") /* high scores and work area */
+ AM_RANGE(0x4c00, 0x4fef) AM_RAM /* system ram */
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITE(superabc_rombank_w) /* bit 0 = coin lockout, bits 4,5,6 = bank select */
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x507f) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") /* IN1 - comment this out to get an easter egg */
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2") /* DSW2 - not used */
+ AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
+ AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank3")
+ADDRESS_MAP_END
+
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+INPUT_PORTS_START( 96in1 )
+ PORT_START ("IN0") /* IN0 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ /* Press this while playing pacman to instantly finish the level */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Finish Level (Cheat)") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) /* Alien Armada only */
+
+ PORT_START ("IN1") /* IN1 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ /* Hold this down while starting pacman to get service settings */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Service") PORT_CODE(KEYCODE_9)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) /* Also used as the fire button */
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME(0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START ("DSW1") /* DSW 1 */
+ PORT_DIPNAME( 0x01, 0x01, "DIP 1: Simple Menu" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "DIP 2: Initials only" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "DIP 3: Fast OK for TM" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "DIP 4: Tournament Mode" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "DIP 5: Guest Mode" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "DIP 6: Dip Menu" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, "Ghost Names" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) )
+
+ PORT_START ("DSW2") /* DSW 2 */
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat if it is. */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+ PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+ PORT_DIPSETTING( 0x00, "Disabled" )
+ PORT_DIPSETTING( 0x02, "Enabled with Button" )
+ PORT_DIPSETTING( 0x04, "Enabled Always" )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( mschamp )
+ PORT_INCLUDE( mspacpls )
+
+ PORT_START ("GAME")
+ PORT_DIPNAME( 0x01, 0x01, "Game" )
+ PORT_DIPSETTING( 0x01, "Champion Edition" )
+ PORT_DIPSETTING( 0x00, "Super Pac Gal" )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+INPUT_PORTS_END
+
+INPUT_PORTS_START( multipac )
+ PORT_START ("IN0") /* IN0 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) /* service for eyes and lizwiz */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START ("IN1") /* IN1 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) /* also used as the fire button (eyes, lizwiz) */
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME(0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START ("DSW1") /* DSW 1 */
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x10, "15000" )
+ PORT_DIPSETTING( 0x20, "20000" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, "Ghost Names" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) )
+
+ PORT_START ("DSW2") /* DSW 2 */
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+// PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat if it is. */
+// PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+// PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+// PORT_DIPSETTING( 0x00, "Disabled" )
+// PORT_DIPSETTING( 0x02, "Enabled with Button" )
+// PORT_DIPSETTING( 0x04, "Enabled Always" )
+INPUT_PORTS_END
+
+/* Start Official documentation for SuperABC - http://www.twobits.com/sabcinst99.htm
+
+How do I clear the high score table and check the bookkeeping?
+Enter test mode via the cabinet switch located near the coin door hinge. Then hold the
+ONE PLAYER DOWN and ONE PLAYER START switches simultaneously for approximately 7 seconds
+and follow the on-screen directions.
+
+DIP Switch Settings
+Note concerning DIP SWITCH #6:
+During the game ULTRA PACMAN there is a rare 'butterfly' which appears. Eating the butterfly
+awards the player either an extra man or an extra credit depending on the setting of DIP
+switch #6. DIP SWITCH #6 ALSO turns the BUY-IN feature ON and OFF.
+
+
+Option (* = recommended) | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+Free Play | ON | ON | | | | | | |
+1 Coin 1 Credit *| OFF | ON | | | | | | |
+1 Coin 2 Credits | ON | OFF | | | | | | |
+2 Coins 1 Credit | OFF | OFF | | | | | | |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+1 Pacman Per Game | | | ON | ON | | | | |
+2 Pacman Per Game | | | OFF | ON | | | | |
+3 Pacman Per Game *| | | ON | OFF | | | | |
+5 Pacman Per Game | | | OFF | OFF | | | | |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+Bonus Player @ 10000 Pts *| | | | | ON | ON | | |
+Bonus Player @ 15000 Pts | | | | | OFF | ON | | |
+Bonus Player @ 20000 Pts | | | | | ON | OFF | | |
+No Bonus Players | | | | | OFF | OFF | | |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+Free Game in ULTRA PAC / Buy-in ON *| | | | | | ON | | |
+Free Life in ULTRA PAC / Buy-in OFF | | | | | | OFF | | |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+Auto. Rack Advance (Skip) | | | | | | | ON | |
+Normal- Must be off for game play *| | | | | | | OFF | |
+-------------------------------------|-----|-----|-----|-----|-----|-----|-----|-----|
+Freeze Video (Pause) | | | | | | | | ON |
+Normal- Must be off for game play *| | | | | | | | OFF |
+--------------------------------------------------------------------------------------
+
+** End Official documentation.
+
+Note: SW7 and SW8 are not part of DSW1 in the input settings below */
+
+INPUT_PORTS_START( superabc )
+ PORT_START ("IN0") /* IN0 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ /* Press this while playing pacman to instantly finish the level */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Finish Level (Cheat)") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START ("IN1") /* IN1 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME(0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START ("DSW1") /* DSW 1 */
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ /* bit 5 also switches between ULTRA ON 1 GAME (low), and ULTRA OFF 1 LIFE (high) */
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x10, "15000" )
+ PORT_DIPSETTING( 0x20, "20000" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, "Ghost Names" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) )
+
+ PORT_START ("DSW2") /* DSW 2 */
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER( pacman_state, 96in1 )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 16, &RAM[0x10000], 0x8000);
+ membank("bank2")->configure_entries(0, 16, &RAM[0x14000], 0x8000);
+}
+
+DRIVER_INIT_MEMBER( pacman_state, madpac )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 32, &RAM[0x10000], 0x8000);
+ membank("bank2")->configure_entries(0, 32, &RAM[0x14000], 0x8000);
+}
+
+DRIVER_INIT_MEMBER( pacman_state, mspaceur )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank2")->configure_entries(0, 2, &RAM[0x10000], 0x2000);
+}
+
+DRIVER_INIT_MEMBER( pacman_state, multipac )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ RAM[0x10000] = 0xED; /* It seems that IM0 is not working properly in MAME */
+ RAM[0x10001] = 0x56; /* and, the interrupt mode is not being reset when a */
+ RAM[0x10002] = 0xC3; /* machine reset is done. So, inserting some code so */
+ RAM[0x10003] = 0x00; /* that the game can fix the problem */
+ RAM[0x10004] = 0x01;
+ membank("bank1")->configure_entries(0, 32, &RAM[0x10000], 0x4000);
+ membank("bank2")->configure_entries(0, 64, &RAM[0x14000], 0x2000);
+ membank("bank1")->set_entry(0);
+}
+
+DRIVER_INIT_MEMBER( pacman_state, pm4n1 )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 5, &RAM[0x10000], 0x8000);
+ membank("bank2")->configure_entries(0, 5, &RAM[0x14000], 0x8000);
+}
+
+DRIVER_INIT_MEMBER( pacman_state, superabc )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 8, &RAM[0x10000], 0x10000);
+ membank("bank2")->configure_entries(0, 8, &RAM[0x14000], 0x10000);
+ membank("bank3")->configure_entries(0, 8, &RAM[0x1a000], 0x10000);
+ membank("bank1")->set_entry(0);
+ membank("bank2")->set_entry(0);
+ membank("bank3")->set_entry(0);
+}
+
+
+/********************************
+ Graphics layouts
+ ********************************/
+
+static GFXDECODE_START( 96in1 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0x10000, spritelayout, 0, 32 )
+GFXDECODE_END
+
+static GFXDECODE_START( 96in1b )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 8*32 )
+ GFXDECODE_ENTRY( "gfx1", 0x20000, spritelayout, 0, 8*32 )
+GFXDECODE_END
+
+static GFXDECODE_START( hackypac )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 9*32 )
+ GFXDECODE_ENTRY( "gfx1", 0x40000, spritelayout, 0, 9*32 )
+GFXDECODE_END
+
+static GFXDECODE_START( madpac )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 16*32 )
+ GFXDECODE_ENTRY( "gfx1", 0x20000, spritelayout, 0, 16*32 )
+GFXDECODE_END
+
+static GFXDECODE_START( multipac )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 4*32 )
+ GFXDECODE_ENTRY( "gfx1", 0x10000, spritelayout, 0, 4*32 )
+GFXDECODE_END
+
+static GFXDECODE_START( pm4n1 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0x05000, spritelayout, 0, 32 )
+GFXDECODE_END
+
+static GFXDECODE_START( superabc )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0x08000, spritelayout, 0, 32 )
+GFXDECODE_END
+
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+/* These drivers are for multiple games in one package */
+
+static MACHINE_CONFIG_DERIVED( 96in1, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(madpac_map)
+ MCFG_CPU_IO_MAP(96in1_writeport)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, 96in1)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", 96in1)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( 96in1b, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(madpac_map)
+ MCFG_CPU_IO_MAP(96in1b_writeport)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, madpac)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", 96in1b)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(128*8)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32*8)
+ MCFG_PALETTE_INIT_OWNER(pacman_state,multipac)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_multipac)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( hackypac, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(hackypac_map)
+ MCFG_CPU_IO_MAP(hackypac_writeport)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, hackypac)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", hackypac)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(128*9)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32*9) // colour banks * 128 colour lookup codes (4a rom)
+ MCFG_PALETTE_INIT_OWNER(pacman_state,multipac)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_multipac)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( madpac, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(madpac_map)
+ MCFG_CPU_IO_MAP(madpac_writeport)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, madpac)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_multipac)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(128*16)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32*16)
+ MCFG_PALETTE_INIT_OWNER(pacman_state, multipac)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", madpac)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( mspaceur, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mspaceur_map)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, mspaceur)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( mschamp, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mschamp_map)
+ MCFG_CPU_IO_MAP(zolapac_io)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, mschamp)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( mschampx, pacmanx )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mschamp_map)
+ MCFG_CPU_IO_MAP(zolapac_io)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, mschamp)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( multipac, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(multipac_map)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, multipac)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_multipac)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(128*4)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32*4)
+ MCFG_PALETTE_INIT_OWNER(pacman_state,multipac)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", multipac)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pm4n1, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(pm4n1_map)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, pm4n1)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", pm4n1)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pm4n1c, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(pm4n1c_map)
+ MCFG_MACHINE_RESET_OVERRIDE(pacman_state, pm4n1)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", pm4n1)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pm4n1d, pm4n1c )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(pm4n1d_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( superabc, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(superabc_map)
+ MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_GFXDECODE_MODIFY("gfxdecode", superabc)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state, multipac)
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( 96in1 )
+ ROM_REGION( 0x90000, "maincpu", 0 )
+ ROM_LOAD( "96in1.cpu", 0x10000, 0x80000, CRC(4a25b763) SHA1(7e650fb7b60b08f3ab8307035a393d6b2941b24b) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "96in1.gfx", 0x00000, 0x1000, CRC(fb43e056) SHA1(aceacef836e4dd1bfe4229ea090ff713c66d8931) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( 96in1a )
+ ROM_REGION( 0x90000, "maincpu", 0 )
+ ROM_LOAD( "96in1a.cpu", 0x10000, 0x80000, CRC(bd89f3de) SHA1(3bd2f51ce97509c7f3dc165ebfbf856039be375e) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "96in1a.gfx", 0x00000, 0x1000, CRC(f4ce2dca) SHA1(b0515ee98766225d4d4a1368949942324703e865) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( 96in1b )
+ ROM_REGION( 0x110000, "maincpu", 0 )
+ ROM_LOAD( "96in1b.cpu", 0x10000, 0x80000, CRC(1c880d0b) SHA1(374bcefb047e48598706b2df27fd6715b11afd45) )
+ ROM_LOAD( "96in1b.cp2", 0x90000, 0x80000, CRC(54ee41bd) SHA1(84fc81e2cd584c0fc94782c008990d66c599e435) )
+
+ ROM_REGION( 0x40000, "gfx1", 0 )
+ ROM_LOAD( "96in1b.gfx", 0x00000, 0x1000, CRC(ac6e00ac) SHA1(3c011cc76aebba6cfa17c042d0835055c2b42735) )
+ ROM_CONTINUE( 0x20000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x21000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x22000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x23000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x24000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x25000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x26000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x27000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x28000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x29000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x2a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x2b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x2c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x2d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x2e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x2f000, 0x1000 )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x30000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x31000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x32000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x33000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x34000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x35000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x36000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x37000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x38000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x39000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x3a000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x3b000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x3c000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x3d000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x3e000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+ ROM_CONTINUE( 0x3f000, 0x1000 )
+ ROM_IGNORE ( 0x40000 )
+
+ ROM_REGION( 0x1b00, "proms", 0 )
+ ROM_LOAD( "96in1b.7f", 0x1000, 0x0160, CRC(58deb197) SHA1(2b10b9f21b4d498b9284e1308793dc773e9db874) )
+ ROM_IGNORE( 0x3fea0 )
+ ROM_COPY( "proms", 0x1000, 0x0000, 0x10 ) /* pacman and mspacman */
+ ROM_COPY( "proms", 0x1000, 0x0020, 0x10 ) /* 08. pacplus */
+ ROM_COPY( "proms", 0x1100, 0x00e0, 0x10 ) /* 10. naughty mouse */
+ ROM_COPY( "proms", 0x1110, 0x0080, 0x10 ) /* 11. beastie feastie */
+ ROM_COPY( "proms", 0x1120, 0x0040, 0x10 ) /* 12. make trax */
+ ROM_COPY( "proms", 0x1130, 0x0060, 0x10 ) /* 13. lizard wizard */
+ ROM_COPY( "proms", 0x1140, 0x00a0, 0x10 ) /* 14. atlantic city action */
+ ROM_COPY( "proms", 0x1150, 0x00c0, 0x10 ) /* 15. jump shot */
+
+ ROM_LOAD( "96in1b.4a", 0x1000, 0x0b00, CRC(fb1acbea) SHA1(bf344c46adea405125d67b3bf8a14d51316d3e12) )
+ ROM_IGNORE( 0x3f500 )
+ ROM_FILL( 0x1068, 0x0001, 0x00 ) /* pacman - remove red bit outside monster lair */
+ ROM_FILL( 0x106c, 0x0001, 0x00 ) /* pacman - remove pink bits at top and bottom */
+ ROM_COPY( "proms", 0x1000, 0x0100, 0x80 ) /* pacman and mspacman */
+ ROM_COPY( "proms", 0x1000, 0x0180, 0x80 ) /* pacplus */
+ ROM_COPY( "proms", 0x1800, 0x0480, 0x80 ) /* naughty mouse */
+ ROM_COPY( "proms", 0x1880, 0x0300, 0x80 ) /* beastie feastie */
+ ROM_COPY( "proms", 0x1900, 0x0200, 0x80 ) /* make trax */
+ ROM_COPY( "proms", 0x1980, 0x0280, 0x80 ) /* lizard wizard */
+ ROM_COPY( "proms", 0x1a00, 0x0380, 0x80 ) /* atlantic city action */
+ ROM_COPY( "proms", 0x1a80, 0x0400, 0x80 ) /* jump shot */
+ ROM_FILL( 0x01c3, 0x0001, 0x0d ) /* pacplus - walls - make green */
+ ROM_FILL( 0x01eb, 0x0001, 0x0d ) /* pacplus - walls outside monster house - make green */
+ ROM_FILL( 0x01ef, 0x0001, 0x0d ) /* pacplus - corner bits at bottom - make green */
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( 96in1c )
+ ROM_REGION( 0x90000, "maincpu", 0 )
+ ROM_LOAD( "96in1c.cpu", 0x10000, 0x80000, CRC(72d5bf9a) SHA1(7d576ab2642fde8569ea58f6eea4390c309c6885) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "96in1c.gfx", 0x00000, 0x1000, CRC(ebbbad14) SHA1(cb7b538f52c7254ed2507db30c199e4b91a309d5) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hackypac )
+ ROM_REGION( 0x110000, "maincpu", 0 )
+ ROM_LOAD( "hackypac.cpu", 0x10000, 0x100000, CRC(9cc452a1) SHA1(7b0483e359f87c5e3035db7380436f176f2356b5) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_LOAD( "hackypac.gfx", 0x00000, 0x1000, CRC(42a61854) SHA1(0968721abccf7d04d205d13d150d014e4e658d16) )
+ ROM_CONTINUE( 0x40000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 ) /* rearrange so that all gfx then all sprites */
+ ROM_CONTINUE( 0x41000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x42000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x43000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x44000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x45000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x46000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x47000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x48000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x49000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x4a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x4b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x4c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x4d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x4e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x4f000, 0x1000 )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x50000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x51000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x52000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x53000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x54000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x55000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x56000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x57000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x58000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x59000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x5a000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x5b000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x5c000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x5d000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x5e000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+ ROM_CONTINUE( 0x5f000, 0x1000 )
+ ROM_CONTINUE( 0x20000, 0x1000 )
+ ROM_CONTINUE( 0x60000, 0x1000 )
+ ROM_CONTINUE( 0x21000, 0x1000 )
+ ROM_CONTINUE( 0x61000, 0x1000 )
+ ROM_CONTINUE( 0x22000, 0x1000 )
+ ROM_CONTINUE( 0x62000, 0x1000 )
+ ROM_CONTINUE( 0x23000, 0x1000 )
+ ROM_CONTINUE( 0x63000, 0x1000 )
+ ROM_CONTINUE( 0x24000, 0x1000 )
+ ROM_CONTINUE( 0x64000, 0x1000 )
+ ROM_CONTINUE( 0x25000, 0x1000 )
+ ROM_CONTINUE( 0x65000, 0x1000 )
+ ROM_CONTINUE( 0x26000, 0x1000 )
+ ROM_CONTINUE( 0x66000, 0x1000 )
+ ROM_CONTINUE( 0x27000, 0x1000 )
+ ROM_CONTINUE( 0x67000, 0x1000 )
+ ROM_CONTINUE( 0x28000, 0x1000 )
+ ROM_CONTINUE( 0x68000, 0x1000 )
+ ROM_CONTINUE( 0x29000, 0x1000 )
+ ROM_CONTINUE( 0x69000, 0x1000 )
+ ROM_CONTINUE( 0x2a000, 0x1000 )
+ ROM_CONTINUE( 0x6a000, 0x1000 )
+ ROM_CONTINUE( 0x2b000, 0x1000 )
+ ROM_CONTINUE( 0x6b000, 0x1000 )
+ ROM_CONTINUE( 0x2c000, 0x1000 )
+ ROM_CONTINUE( 0x6c000, 0x1000 )
+ ROM_CONTINUE( 0x2d000, 0x1000 )
+ ROM_CONTINUE( 0x6d000, 0x1000 )
+ ROM_CONTINUE( 0x2e000, 0x1000 )
+ ROM_CONTINUE( 0x6e000, 0x1000 )
+ ROM_CONTINUE( 0x2f000, 0x1000 )
+ ROM_CONTINUE( 0x6f000, 0x1000 )
+ ROM_CONTINUE( 0x30000, 0x1000 )
+ ROM_CONTINUE( 0x70000, 0x1000 )
+ ROM_CONTINUE( 0x31000, 0x1000 )
+ ROM_CONTINUE( 0x71000, 0x1000 )
+ ROM_CONTINUE( 0x32000, 0x1000 )
+ ROM_CONTINUE( 0x72000, 0x1000 )
+ ROM_CONTINUE( 0x33000, 0x1000 )
+ ROM_CONTINUE( 0x73000, 0x1000 )
+ ROM_CONTINUE( 0x34000, 0x1000 )
+ ROM_CONTINUE( 0x74000, 0x1000 )
+ ROM_CONTINUE( 0x35000, 0x1000 )
+ ROM_CONTINUE( 0x75000, 0x1000 )
+ ROM_CONTINUE( 0x36000, 0x1000 )
+ ROM_CONTINUE( 0x76000, 0x1000 )
+ ROM_CONTINUE( 0x37000, 0x1000 )
+ ROM_CONTINUE( 0x77000, 0x1000 )
+ ROM_CONTINUE( 0x38000, 0x1000 )
+ ROM_CONTINUE( 0x78000, 0x1000 )
+ ROM_CONTINUE( 0x39000, 0x1000 )
+ ROM_CONTINUE( 0x79000, 0x1000 )
+ ROM_CONTINUE( 0x3a000, 0x1000 )
+ ROM_CONTINUE( 0x7a000, 0x1000 )
+ ROM_CONTINUE( 0x3b000, 0x1000 )
+ ROM_CONTINUE( 0x7b000, 0x1000 )
+ ROM_CONTINUE( 0x3c000, 0x1000 )
+ ROM_CONTINUE( 0x7c000, 0x1000 )
+ ROM_CONTINUE( 0x3d000, 0x1000 )
+ ROM_CONTINUE( 0x7d000, 0x1000 )
+ ROM_CONTINUE( 0x3e000, 0x1000 )
+ ROM_CONTINUE( 0x7e000, 0x1000 )
+ ROM_CONTINUE( 0x3f000, 0x1000 )
+ ROM_CONTINUE( 0x7f000, 0x1000 )
+
+ /* no proms supplied - using ones from original games */
+ ROM_REGION( 0x05a0, "proms", 0 )
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) )
+ ROM_RELOAD( 0x0020, 0x0020 )
+ ROM_RELOAD( 0x0040, 0x0020 )
+ ROM_LOAD( "prom.7f", 0x0060, 0x0020, CRC(872b42f3) SHA1(bbcd392ba3d2a5715e92fa0f7a7cf1e7e6e655a2) )
+ ROM_LOAD( "puckren.7f", 0x0080, 0x0020, CRC(7b6aa3c9) SHA1(849911abdc26ccf2ad44e2c432e6219447b8bef3) )
+ ROM_LOAD( "glob.7f", 0x00a0, 0x0020, CRC(1f617527) SHA1(448845cab63800a05fcb106897503d994377f78f) )
+ ROM_LOAD( "7f.cpu", 0x00c0, 0x0020, CRC(7549a947) SHA1(4f2c3e7d6c38f0b9a90317f91feb3f86c9a0d0a5) )
+ ROM_LOAD( "pacplus.7f", 0x00e0, 0x0020, CRC(063dd53a) SHA1(2e43b46ec3b101d1babab87cdaddfa944116ec06) )
+ ROM_LOAD( "7f.rom", 0x0100, 0x0020, CRC(ec578b98) SHA1(196da49cc260f967ec5f01bc3c75b11077c85998) )
+ ROM_LOAD( "82s126.4a", 0x0120, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) ) /* pacman */
+ ROM_LOAD( "82s129.4a", 0x01a0, 0x0100, CRC(d8d78829) SHA1(19820d1651423210083a087fb70ebea73ad34951) ) /* eyes */
+ ROM_LOAD( "2s140.4a", 0x0220, 0x0100, CRC(63efb927) SHA1(5c144a613fc4960a1dfd7ead89e7fee258a63171) ) /* maketrax, chicken */
+ ROM_LOAD( "prom.4a", 0x02a0, 0x0100, CRC(0399f39f) SHA1(e98f08da4666cab44e01acb760a1bd2fc858bc0d) ) /* jumpshot */
+ ROM_LOAD( "puckren.4a", 0x0320, 0x0100, CRC(64fe1dbf) SHA1(7f7541eb12148add79ad186a1da375c865d251e0) ) /* puckren */
+ ROM_LOAD( "glob.4a", 0x03a0, 0x0100, CRC(28faa769) SHA1(7588889f3102d4e0ca7918f536556209b2490ea1) ) /* beastie */
+ ROM_LOAD( "4a.cpu", 0x0420, 0x0100, CRC(5fdca536) SHA1(3a09b29374031aaa3722932aff974a467b3bb201) ) /* lizwiz */
+ ROM_LOAD( "pacplus.4a", 0x04a0, 0x0100, CRC(e271a166) SHA1(cf006536215a7a1d488eebc1d8a2e2a8134ce1a6) ) /* pacplus */
+ ROM_LOAD( "4a.rom", 0x0520, 0x0080, CRC(81a6b30f) SHA1(60c767fd536c325151a2b759fdbce4ba41e0c78f) ) /* shoot bull */
+ ROM_IGNORE( 0x0080 )
+ /* There are a number of minor colour errors in Lizard Wizard, 2 of which are fixed below */
+ ROM_FILL( 0x43d, 1, 4 ) /* dragon wing = red */
+ ROM_FILL( 0x43e, 1, 6 ) /* dragon body = green */
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( madpac )
+ ROM_REGION( 0x110000, "maincpu", 0 )
+ ROM_LOAD( "madpac.cpu", 0x10000, 0x80000, CRC(1a769aea) SHA1(ea5b3b077f34485246643cfb8c74d073287f4359) )
+ ROM_LOAD( "madpac.cp2", 0x90000, 0x80000, CRC(84889f93) SHA1(83aee22bc543af230f5c7f652756b189d6cf5399) )
+
+ /* reorganise gfx so that all chars come first, followed by all sprites */
+ ROM_REGION( 0x40000, "gfx1", 0 )
+ ROM_LOAD( "madpac.gfx", 0x00000, 0x1000, CRC(6a1b231a) SHA1(67046022a179043f9c017b12ecadd9d5772705a9) )
+ ROM_CONTINUE( 0x20000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x21000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x22000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x23000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x24000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x25000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x26000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x27000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x28000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x29000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x2a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x2b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x2c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x2d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x2e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x2f000, 0x1000 )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x30000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x31000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x32000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x33000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x34000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x35000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x36000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x37000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x38000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x39000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x3a000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x3b000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x3c000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x3d000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x3e000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+ ROM_CONTINUE( 0x3f000, 0x1000 )
+ /* Death Derby gfx are corrupt - using this rom to fix the problem */
+ ROM_LOAD( "dderby.5e", 0x8000, 0x1000, CRC(7e2c0a53) SHA1(c3c62b32927ac3c5948faeff28d4c2148fe18d0b) )
+
+ ROM_REGION( 0x41000, "proms", 0 )
+ /* palette comes as banks of 16 - we change it to banks of 32, and remove banks 1 to 0xf (they are same as bank 0) */
+ ROM_LOAD( "madpac.7f", 0x1000, 0x40000, CRC(63e60ac6) SHA1(03b7035eb0a7e62f21793661c09b449113562ebb) )
+ ROM_COPY( "proms", 0x1000, 0x0000, 0x10 ) /* pacman and mspacman */
+ ROM_COPY( "proms", 0x1100, 0x0020, 0x10 ) /* 10. balloon ace */
+ ROM_COPY( "proms", 0x1110, 0x0040, 0x10 ) /* 11. beastie feastie */
+ ROM_COPY( "proms", 0x1120, 0x0060, 0x10 ) /* 12. make trax */
+ ROM_COPY( "proms", 0x1130, 0x0080, 0x10 ) /* 13. lizard wizard */
+ ROM_COPY( "proms", 0x1140, 0x00a0, 0x10 ) /* 14. atlantic city action */
+ ROM_COPY( "proms", 0x1150, 0x00c0, 0x10 ) /* 15. jump shot */
+ ROM_COPY( "proms", 0x1160, 0x00e0, 0x10 ) /* 16. ladybug */
+ ROM_COPY( "proms", 0x1170, 0x0100, 0x10 ) /* 17. zig zag */
+ ROM_COPY( "proms", 0x1180, 0x0120, 0x10 ) /* 18. chicken */
+ ROM_COPY( "proms", 0x1190, 0x0140, 0x10 ) /* 19. pacplus */
+ ROM_COPY( "proms", 0x11a0, 0x0160, 0x10 ) /* 1A. naughty mouse */
+ ROM_COPY( "proms", 0x11b0, 0x0180, 0x10 ) /* 1B. cycle battle */
+ ROM_COPY( "proms", 0x11c0, 0x01a0, 0x10 ) /* 1C. eggor */
+ ROM_COPY( "proms", 0x11d0, 0x01c0, 0x10 ) /* 1D. gorkans */
+ ROM_COPY( "proms", 0x11e0, 0x01e0, 0x10 ) /* 1E. homercide */
+ /* lookup table is already at banks of 128 */
+ ROM_LOAD( "madpac.4a", 0x0280, 0x0800, CRC(16057dac) SHA1(8dfa69f3847140dd5fa8514e9bf49962f5f9f0c0) )
+ ROM_COPY( "proms", 0x0280, 0x0200, 0x80 ) /* pacman and mspacman */
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+/* E253 - no proms were supplied - using standard pacman ones.
+ While the roms of the 2 games are different, I cannot discern any difference in gameplay */
+ROM_START( mspaceur )
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD( "mspaceur.cpu", 0x00000, 0x4000, CRC(03905a76) SHA1(1780ef598c6150ffa44bf467479670f7ca50d512) )
+ ROM_CONTINUE( 0x10000, 0x4000 )
+ /* fix some corrupt bytes that stop the game from working. This makes it identical to mspacmbg. */
+ ROM_FILL( 0x01a61, 1, 0x21 )
+ ROM_FILL( 0x018b5, 1, 0x4e )
+ ROM_FILL( 0x0197d, 1, 0xda )
+ ROM_FILL( 0x12c0d, 1, 0xeb )
+
+ /* reorganise gfx so that all chars come first, followed by all sprites */
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mspacj.gfx", 0x0000, 0x0800, CRC(8ee4a3b0) SHA1(01e3453c99f7a5d78ab083c49c650e898c0dd2ee) )
+ ROM_CONTINUE( 0x1000, 0x0800 )
+ ROM_CONTINUE( 0x0800, 0x0800 )
+ ROM_CONTINUE( 0x1800, 0x0800 )
+ ROM_IGNORE( 0x2000 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mschamp )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "pm4.bin", 0x10000, 0x10000, CRC(7d6b6303) SHA1(65ad72a9188422653c02a48c07ed2661e1e36961) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm5.bin", 0x0000, 0x0800, CRC(7fe6b9e2) SHA1(bfd0d84c7ef909ae078d8f60340682b3ff230aa6) )
+ ROM_CONTINUE( 0x1000, 0x0800 )
+ ROM_CONTINUE( 0x0800, 0x0800 )
+ ROM_CONTINUE( 0x1800, 0x0800 )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mschampx )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "pm4.bin", 0x10000, 0x10000, CRC(7d6b6303) SHA1(65ad72a9188422653c02a48c07ed2661e1e36961) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "mschampx.5e", 0x0000, 0x4000, CRC(b3b248f8) SHA1(5e8271b28c6a98e36b4685224bbc99154ae6ba5b) )
+ ROM_LOAD( "mspacmnx.5f", 0x4000, 0x4000, CRC(6f625a9e) SHA1(d9d739ba412c9374b26006d99a345212ef97f868) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( multi10 )
+ ROM_REGION( 0x90000, "maincpu", 0 )
+ ROM_LOAD( "multi10.bin", 0x10000, 0x80000, CRC(9abb7d01) SHA1(44eb136f2ffe6475585b7558c4eddcf4ffaafe9e) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "multi10.gfx", 0x00000, 0x1000, CRC(072b216f) SHA1(cc3cef4f9804c1120611ed750c50593eac9b10d4) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ ROM_REGION( 0x0480, "proms", 0)
+ ROM_LOAD( "multipac.7f", 0x0000, 0x0100, CRC(40a5c3d9) SHA1(c159fe5ab64b9eb51a28ccd051fae219d2125577) )
+ ROM_COPY( "proms", 0x0000, 0x0040, 0x0020 )
+ ROM_LOAD( "multipac.4a", 0x0080, 0x0400, CRC(562a66de) SHA1(1281a7585f833b9f93269b14369e1c8df09f2292) )
+ ROM_COPY( "proms", 0x0180, 0x0100, 0x0080 )
+ ROM_COPY( "proms", 0x0280, 0x0180, 0x0080 )
+ ROM_COPY( "proms", 0x0380, 0x0200, 0x0080 )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( multi11 )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "multi11.bin", 0x10000, 0x80000, CRC(0fa787fe) SHA1(400592360b2930c1fbbbe1adc0198be007b2dd63) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "multipac.gfx", 0x00000, 0x1000, CRC(012fb9ec) SHA1(e4b5647f27f5ddad0bb5580736d6acd3a86cdcf7) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ ROM_REGION( 0x0480, "proms", 0)
+ ROM_LOAD( "multipac.7f", 0x0000, 0x0100, CRC(40a5c3d9) SHA1(c159fe5ab64b9eb51a28ccd051fae219d2125577) )
+ ROM_COPY( "proms", 0x0000, 0x0040, 0x0020 )
+ ROM_LOAD( "multipac.4a", 0x0080, 0x0400, CRC(562a66de) SHA1(1281a7585f833b9f93269b14369e1c8df09f2292) )
+ ROM_COPY( "proms", 0x0180, 0x0100, 0x0080 )
+ ROM_COPY( "proms", 0x0280, 0x0180, 0x0080 )
+ ROM_COPY( "proms", 0x0380, 0x0200, 0x0080 )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( multi13 )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "multi13.bin", 0x10000, 0x80000, CRC(0aca3ce9) SHA1(81dd22fd2e8137645fc6cdeb534b4e5c113704fe) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "multipac.gfx", 0x00000, 0x1000, CRC(012fb9ec) SHA1(e4b5647f27f5ddad0bb5580736d6acd3a86cdcf7) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ ROM_REGION( 0x0480, "proms", 0)
+ ROM_LOAD( "multipac.7f", 0x0000, 0x0100, CRC(40a5c3d9) SHA1(c159fe5ab64b9eb51a28ccd051fae219d2125577) )
+ ROM_COPY( "proms", 0x0000, 0x0040, 0x0020 )
+ ROM_LOAD( "multipac.4a", 0x0080, 0x0400, CRC(562a66de) SHA1(1281a7585f833b9f93269b14369e1c8df09f2292) )
+ ROM_COPY( "proms", 0x0180, 0x0100, 0x0080 )
+ ROM_COPY( "proms", 0x0280, 0x0180, 0x0080 )
+ ROM_COPY( "proms", 0x0380, 0x0200, 0x0080 )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( multi14 )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "multi14.bin", 0x10000, 0x80000, CRC(23de184d) SHA1(e466a1c46091a33a3f50747455abb8618a23f824) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "multipac.gfx", 0x00000, 0x1000, CRC(012fb9ec) SHA1(e4b5647f27f5ddad0bb5580736d6acd3a86cdcf7) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ ROM_REGION( 0x0480, "proms", 0)
+ ROM_LOAD( "multipac.7f", 0x0000, 0x0100, CRC(40a5c3d9) SHA1(c159fe5ab64b9eb51a28ccd051fae219d2125577) )
+ ROM_COPY( "proms", 0x0000, 0x0040, 0x0020 )
+ ROM_LOAD( "multipac.4a", 0x0080, 0x0400, CRC(562a66de) SHA1(1281a7585f833b9f93269b14369e1c8df09f2292) )
+ ROM_COPY( "proms", 0x0180, 0x0100, 0x0080 )
+ ROM_COPY( "proms", 0x0280, 0x0180, 0x0080 )
+ ROM_COPY( "proms", 0x0380, 0x0200, 0x0080 )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( multi15 )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "multi15.bin", 0x10000, 0x80000, CRC(eb181a29) SHA1(14a44730d36c25c76ae68cbfd51febda9d8d1dfa) )
+
+ /* reorganise gfx so that all chars come first, followed by all sprites */
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "multipac.gfx", 0x00000, 0x1000, CRC(012fb9ec) SHA1(e4b5647f27f5ddad0bb5580736d6acd3a86cdcf7) )
+ ROM_CONTINUE( 0x10000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x11000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x12000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x13000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x14000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x15000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x16000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x17000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x18000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x19000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x1a000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x1b000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x1c000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x1d000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x1e000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x1f000, 0x1000 )
+
+ ROM_REGION( 0x0480, "proms", 0)
+ /* this rom has 4 banks of (the 16 colours in the palette + 16 blanks) */
+ ROM_LOAD( "multipac.7f", 0x0000, 0x0100, CRC(40a5c3d9) SHA1(c159fe5ab64b9eb51a28ccd051fae219d2125577) )
+ ROM_COPY( "proms", 0x0000, 0x0040, 0x0020 ) /* crush roller */
+ /* this rom has 4 banks of (the 128 lookup colour codes + 128 blanks) */
+ ROM_LOAD( "multipac.4a", 0x0080, 0x0400, CRC(562a66de) SHA1(1281a7585f833b9f93269b14369e1c8df09f2292) )
+ /* we move the tables down, to remove the blanks */
+ ROM_COPY( "proms", 0x0180, 0x0100, 0x0080 )
+ ROM_COPY( "proms", 0x0280, 0x0180, 0x0080 )
+ ROM_COPY( "proms", 0x0380, 0x0200, 0x0080 )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( pm4n1 )
+ ROM_REGION( 0x34000, "maincpu", 0 )
+ ROM_LOAD( "pm4n1.cpu", 0x10000, 0x24000, CRC(248f3153) SHA1(c36fb95c38619ec4947017a686f7d5feb643d269) )
+ ROM_FILL(0x303fe, 1, 0xcd)
+ ROM_FILL(0x303ff, 1, 0xa1) /* These bytes allow Pacman to start up */
+ ROM_FILL(0x30400, 1, 0x2b)
+
+ ROM_REGION( 0x0a000, "gfx1", 0 )
+ ROM_LOAD( "96in1a.gfx", 0x00000, 0x1000, CRC(f4ce2dca) SHA1(b0515ee98766225d4d4a1368949942324703e865) )
+ ROM_CONTINUE( 0x05000, 0x1000 ) /* piranha, don't want */
+ ROM_CONTINUE( 0x00000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 ) /* fast pacman */
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 ) /* pacman */
+ /* 4 dummy reads because rom_ignore doesn't work properly */
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 ) /* mspacman */
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 ) /* fast mspacman */
+ ROM_IGNORE( 0x10000)
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4n1a )
+ ROM_REGION( 0x34000, "maincpu", 0 )
+ ROM_LOAD( "pm4n1a.cpu", 0x10000, 0x24000, CRC(cdc319bb) SHA1(0f7b9956a67e46d5f3cb0bd84c350662668fd02d) )
+
+ ROM_REGION( 0x0a000, "gfx1", 0 )
+ ROM_LOAD( "96in1a.gfx", 0x00000, 0x1000, CRC(f4ce2dca) SHA1(b0515ee98766225d4d4a1368949942324703e865) )
+ ROM_CONTINUE( 0x05000, 0x1000 ) /* piranha, don't want */
+ ROM_CONTINUE( 0x00000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 ) /* fast pacman */
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 ) /* pacman */
+ /* 4 dummy reads because rom_ignore doesn't work properly */
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 ) /* mspacman */
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x08000, 0x1000 ) /* fast mspacman */
+ ROM_IGNORE( 0x10000)
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4n1b )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD( "pm4n1b.cpu", 0x10000, 0x30000, CRC(31ea8134) SHA1(61bd5589ed1d304cfef90ccf9af95f2a6743782e) )
+ /* Alternative working rom */
+ //ROM_LOAD( "pm4n1ba.cpu", 0x10000, 0x24000, CRC(2709642c) SHA1(5e2984a9ff5db416ee065651765bf05c070ca052) )
+
+ ROM_REGION( 0xa000, "gfx1", 0 )
+ ROM_LOAD( "pm4n1b.gfx", 0x0000, 0x1000, CRC(949a50a2) SHA1(2b661e584b35740ce8b530f51485865a620354e6) )
+ ROM_CONTINUE( 0x5000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_CONTINUE( 0x7000, 0x1000 ) /* mspacman */
+ ROM_COPY( "gfx1", 0x0000, 0x1000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x6000, 0x1000 ) /* copy menu to fast pacman */
+ ROM_COPY( "gfx1", 0x0000, 0x4000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x9000, 0x1000 ) /* copy menu to pacman */
+ ROM_COPY( "gfx1", 0x2000, 0x3000, 0x1000 )
+ ROM_COPY( "gfx1", 0x7000, 0x8000, 0x1000 ) /* copy mspacman to fast mspacman */
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4n1c )
+ ROM_REGION( 0x38000, "maincpu", 0 )
+ ROM_LOAD( "pm4n1c.cpu", 0x10000, 0x28000, CRC(48cafb4e) SHA1(8ff42c3524020f5f599f8f3c76f279b1af9983a9) )
+
+ ROM_REGION( 0xa000, "gfx1", 0 )
+ ROM_LOAD( "pm4n1b.gfx", 0x0000, 0x1000, CRC(949a50a2) SHA1(2b661e584b35740ce8b530f51485865a620354e6) )
+ ROM_CONTINUE( 0x5000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_CONTINUE( 0x7000, 0x1000 ) /* mspacman */
+ ROM_COPY( "gfx1", 0x0000, 0x1000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x6000, 0x1000 ) /* copy menu to fast pacman */
+ ROM_COPY( "gfx1", 0x0000, 0x4000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x9000, 0x1000 ) /* copy menu to pacman */
+ ROM_COPY( "gfx1", 0x2000, 0x3000, 0x1000 )
+ ROM_COPY( "gfx1", 0x7000, 0x8000, 0x1000 ) /* copy mspacman to fast mspacman */
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4n1d )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+// ROM_LOAD( "pm4n1d.cpu", 0x10000, 0x20000, CRC(28f95683) SHA1(297ff0fb2d12293830cef9a4cc77629d658a96f9) )
+ ROM_LOAD( "pm4n1d.cpu", 0x10000, 0x10000, CRC(9bab691e) SHA1(d90ee5e5b345c9feabe5f629132bd5f2b83c9c4f) )
+
+ ROM_REGION( 0xa000, "gfx1", 0 )
+ ROM_LOAD( "pm4n1b.gfx", 0x0000, 0x1000, CRC(949a50a2) SHA1(2b661e584b35740ce8b530f51485865a620354e6) )
+ ROM_CONTINUE( 0x5000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_CONTINUE( 0x7000, 0x1000 ) /* mspacman */
+ ROM_COPY( "gfx1", 0x0000, 0x1000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x6000, 0x1000 ) /* copy menu to fast pacman */
+ ROM_COPY( "gfx1", 0x0000, 0x4000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x9000, 0x1000 ) /* copy menu to pacman */
+ ROM_COPY( "gfx1", 0x2000, 0x3000, 0x1000 )
+ ROM_COPY( "gfx1", 0x7000, 0x8000, 0x1000 ) /* copy mspacman to fast mspacman */
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4n1e )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+// ROM_LOAD( "pm4n1e.cpu", 0x10000, 0x20000, CRC(82035513) SHA1(9d05e5a07b47a2668e497a66cd6ceb29bbcab659) )
+ ROM_LOAD( "pm4n1e.cpu", 0x10000, 0x10000, CRC(5bbf374a) SHA1(426451a9cd4e8680ab19c2ce635435c0b43cba95) )
+
+ ROM_REGION( 0xa000, "gfx1", 0 )
+ ROM_LOAD( "pm4n1b.gfx", 0x0000, 0x1000, CRC(949a50a2) SHA1(2b661e584b35740ce8b530f51485865a620354e6) )
+ ROM_CONTINUE( 0x5000, 0x1000 ) /* menu */
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_CONTINUE( 0x7000, 0x1000 ) /* mspacman */
+ ROM_COPY( "gfx1", 0x0000, 0x1000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x6000, 0x1000 ) /* copy menu to fast pacman */
+ ROM_COPY( "gfx1", 0x0000, 0x4000, 0x1000 )
+ ROM_COPY( "gfx1", 0x5000, 0x9000, 0x1000 ) /* copy menu to pacman */
+ ROM_COPY( "gfx1", 0x2000, 0x3000, 0x1000 )
+ ROM_COPY( "gfx1", 0x7000, 0x8000, 0x1000 ) /* copy mspacman to fast mspacman */
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( superabc )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "superabc.u14", 0x10000, 0x80000, CRC(a560efe6) SHA1(c7d43cc3bb3b1b10d06403462276231bfc8542dd) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "superabc.u1", 0x00000, 0x1000, CRC(45caace0) SHA1(f850bd09ec68b0263ac8b30ae38c3878c7978ace) )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 ) // these duplicate entries should be ROM_IGNORE but it has a bug
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_IGNORE( 0x2000 )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "superabc.7f", 0x0000, 0x0020, CRC(3a188666) SHA1(067386e477ce48bbde3cf71f744a78a42238d236) )
+ ROM_LOAD( "superabc.4a", 0x0020, 0x0100, CRC(4382c049) SHA1(5e535b1a6852260f38ae1e5cd57290a85cb6927f) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( superabco )
+ ROM_REGION( 0x90000, "maincpu", 0 ) /* 8 banks of 64k for code */
+ ROM_LOAD( "superabco.u14", 0x10000, 0x80000, CRC(62565ad8) SHA1(cb434c608ee463788b73152d84ce6173bdfa350d) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "superabc.u1", 0x00000, 0x1000, CRC(45caace0) SHA1(f850bd09ec68b0263ac8b30ae38c3878c7978ace) )
+ ROM_CONTINUE( 0x08000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 ) // these duplicate entries should be ROM_IGNORE but it has a bug
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x04000, 0x1000 )
+ ROM_CONTINUE( 0x0c000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x02000, 0x1000 )
+ ROM_CONTINUE( 0x0a000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x06000, 0x1000 )
+ ROM_CONTINUE( 0x0e000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x01000, 0x1000 )
+ ROM_CONTINUE( 0x09000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x05000, 0x1000 )
+ ROM_CONTINUE( 0x0d000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x03000, 0x1000 )
+ ROM_CONTINUE( 0x0b000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_CONTINUE( 0x07000, 0x1000 )
+ ROM_CONTINUE( 0x0f000, 0x1000 )
+ ROM_IGNORE( 0x2000 )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "superabc.7f", 0x0000, 0x0020, CRC(3a188666) SHA1(067386e477ce48bbde3cf71f744a78a42238d236) )
+ ROM_LOAD( "superabc.4a", 0x0020, 0x0100, CRC(4382c049) SHA1(5e535b1a6852260f38ae1e5cd57290a85cb6927f) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+GAME( 1995, mschamp, mspacman, mschamp, mschamp, driver_device, 0, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola Pac Gal", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mschampx, mspacmnx, mschampx, mschamp, driver_device, 0, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola Pac Gal (hires hack)", MACHINE_SUPPORTS_SAVE )
+
+/* Dave Widel's Games - http://www.widel.com */
+
+GAME( 2005, 96in1, madpac, 96in1, 96in1, pacman_state, 96in1, ROT90, "David Widel", "96 in 1 v3 [h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, 96in1c, madpac, 96in1, 96in1, pacman_state, 96in1, ROT90, "David Widel", "96 in 1 v1 [h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, 96in1a, madpac, 96in1, 96in1, pacman_state, 96in1, ROT90, "David Widel", "96 in 1 v2 [h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, 96in1b, madpac, 96in1b, 96in1, pacman_state, madpac, ROT90, "David Widel", "96 in 1 v4 [h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hackypac, madpac, hackypac, pacman0, pacman_state, madpac, ROT90, "David Widel", "Hacky Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, madpac, 0, madpac, 96in1, pacman_state, madpac, ROT90, "David Widel", "Mad Pac [h]", MACHINE_SUPPORTS_SAVE )
+
+/* Other Misc Hacks */
+
+GAME( 1993, mspaceur, mspacman, mspaceur, mspacman, pacman_state, mspaceur, ROT90, "ImpEuropeX Corp", "Ms. Pac-man", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multi10, multi15, multipac, multipac, pacman_state, multipac, ROT90, "Clay Cowgill", "Multipac 1.0", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multi11, multi15, multipac, multipac, pacman_state, multipac, ROT90, "Clay Cowgill", "Multipac 1.1", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multi13, multi15, multipac, multipac, pacman_state, multipac, ROT90, "Clay Cowgill", "Multipac 1.3", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multi14, multi15, multipac, multipac, pacman_state, multipac, ROT90, "Clay Cowgill", "Multipac 1.4", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multi15, 0, multipac, multipac, pacman_state, multipac, ROT90, "Clay Cowgill", "Multipac 1.5", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, pm4n1, puckman, pm4n1, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v1.0 [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, pm4n1a, puckman, pm4n1, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v1.1 [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, pm4n1b, puckman, pm4n1, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v1.2 [c]", MACHINE_SUPPORTS_SAVE ) // www.souzaonline.com/Games/Hacks/4n1hack.htm
+GAME( 2008, pm4n1c, puckman, pm4n1c, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v2.3 [c][h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, pm4n1d, puckman, pm4n1d, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v3.0 [c][h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, pm4n1e, puckman, pm4n1d, pacman0, pacman_state, pm4n1, ROT90, "Jason Souza", "Pacman 4in1 v3.3 [c][h]", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, superabc, 0, superabc, superabc, pacman_state, superabc, ROT90, "TwoBit Score", "Pacman SuperABC (1999-09-03)[h]", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, superabco,superabc, superabc, superabc, pacman_state, superabc, ROT90, "TwoBit Score", "Pacman SuperABC (1999-03-08)[h]", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/nemesis.cpp b/docs/release/src/hbmame/drivers/nemesis.cpp
new file mode 100644
index 00000000000..3dd66c42829
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/nemesis.cpp
@@ -0,0 +1,134 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/nemesis.cpp"
+
+#if 0
+static INPUT_PORTS_START( spclone )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWT:1")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SWT:2")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SWT:3" )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // power-up
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // shoot
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // missile
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWT:3")
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("DSW0")
+ PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW0:1,2,3,4")
+ PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) )
+ PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) )
+ PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x10, 0x10, "Font" )
+ PORT_DIPSETTING( 0x10, "Koi no Hotrock" )
+ PORT_DIPSETTING( 0x00, "Gradius III" )
+ PORT_DIPNAME( 0x20, 0x20, "k007232" )
+ PORT_DIPSETTING( 0x20, "old" )
+ PORT_DIPSETTING( 0x00, "new" )
+ PORT_DIPNAME( 0x40, 0x40, "Pulse" )
+ PORT_DIPSETTING( 0x40, "PULSE" )
+ PORT_DIPSETTING( 0x00, "RIPPLE" )
+ PORT_DIPNAME( 0x80, 0x80, "2P alone play input" )
+ PORT_DIPSETTING( 0x80, "1P" )
+ PORT_DIPSETTING( 0x00, "2P" )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x03, "3" )
+ PORT_DIPSETTING( 0x02, "4" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x00, "6" )
+ PORT_DIPNAME( 0x04, 0x04, "Stage4 expert limit" )
+ PORT_DIPSETTING( 0x04, "on" )
+ PORT_DIPSETTING( 0x00, "off" )
+ PORT_DIPNAME( 0x18, 0x18, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x10, "70k and every 200k" )
+ PORT_DIPSETTING( 0x18, "100k and every 300k" )
+ PORT_DIPSETTING( 0x08, "10k only" )
+ PORT_DIPSETTING( 0x00, "NONE" )
+ PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x60, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Medium ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+#endif
+
+ROM_START( spclone )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "spclone.18b", 0x00000, 0x10000, CRC(14c19a46) SHA1(1a65a98c390693949247f4e568fe71cff82d59b4) )
+ ROM_LOAD16_BYTE( "spclone.18c", 0x00001, 0x10000, CRC(fdafc246) SHA1(1641411023f85afe82af749b15d067efc5859f4e) )
+ ROM_LOAD16_BYTE( "587-c03.17b", 0x40000, 0x20000, CRC(e5caf6e6) SHA1(f5df4fbc43cfa6e2866558c99dd95ba8dc89dc7a) )
+ ROM_LOAD16_BYTE( "587-c06.17c", 0x40001, 0x20000, CRC(c2f567ea) SHA1(0c38fea53f3d4a9ae0deada5669deca4be8c9fd3) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "spclone.11j", 0x00000, 0x08000, CRC(bf83b182) SHA1(e702eddffea3bad8944bfab03d53c6e277bca866) )
+
+ ROM_REGION( 0x04000, "vlm", 0 )
+ ROM_LOAD( "587-d08.8g", 0x00000, 0x04000, CRC(f9ac6b82) SHA1(3370fc3a7f82e922e19d54afb3bca7b07fa4aa9a) )
+
+ ROM_REGION( 0x20000, "k007232", 0 )
+ ROM_LOAD( "587-c01.10a", 0x00000, 0x20000, CRC(09fe0632) SHA1(4c3b29c623d70bbe8a938a0beb4638912c46fb6a) )
+ROM_END
+
+ROM_START( spcloneo )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "spcloneo.18b", 0x00000, 0x10000, CRC(6d49878b) SHA1(95ec8c326cb83d8391f7821868187d68ef734120) )
+ ROM_LOAD16_BYTE( "spcloneo.18c", 0x00001, 0x10000, CRC(08b8fd27) SHA1(fbbb5f9c795de5a776309cdd7a5678fc0061d52a) )
+ ROM_LOAD16_BYTE( "587-c03.17b", 0x40000, 0x20000, CRC(e5caf6e6) SHA1(f5df4fbc43cfa6e2866558c99dd95ba8dc89dc7a) )
+ ROM_LOAD16_BYTE( "587-c06.17c", 0x40001, 0x20000, CRC(c2f567ea) SHA1(0c38fea53f3d4a9ae0deada5669deca4be8c9fd3) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "spcloneo.11j", 0x00000, 0x08000, CRC(9b72fdc7) SHA1(6634e2c8203cc7a9f5b2135a0b717dc18b0fdf23) )
+
+ ROM_REGION( 0x04000, "vlm", 0 )
+ ROM_LOAD( "587-d08.8g", 0x00000, 0x04000, CRC(f9ac6b82) SHA1(3370fc3a7f82e922e19d54afb3bca7b07fa4aa9a) )
+
+ ROM_REGION( 0x20000, "k007232", 0 )
+ ROM_LOAD( "587-c01.10a", 0x00000, 0x20000, CRC(09fe0632) SHA1(4c3b29c623d70bbe8a938a0beb4638912c46fb6a) )
+ROM_END
+
+GAME( 2007, spclone, salamand, salamand, lifefrcj, driver_device, 0, ROT0, "Konami", "Salamander (version YY 0.7.3) ", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 2007, spcloneo, salamand, salamand, lifefrcj, driver_device, 0, ROT0, "Konami", "Salamander (version YY 0.7.2.2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/neogeo.cpp b/docs/release/src/hbmame/drivers/neogeo.cpp
new file mode 100644
index 00000000000..60dc82af770
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/neogeo.cpp
@@ -0,0 +1,1391 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari
+// thanks-to:Fuzz
+/***************************************************************************
+
+ Neo-Geo hardware
+
+ Credits:
+ * This driver was made possible by the research done by
+ Charles MacDonald. For a detailed description of the Neo-Geo
+ hardware, please visit his page at:
+ http://cgfm2.emuviews.com/txt/mvstech.txt
+ * Presented to you by the Shin Emu Keikaku team.
+ * The following people have all spent probably far
+ too much time on this:
+ AVDB
+ Bryan McPhail
+ Fuzz
+ Ernesto Corvi
+ Andrew Prime
+ Zsolt Vasvari
+
+
+ Known driver issues/to-do's:
+ ============================
+
+ * Fatal Fury 3 crashes during the ending - this doesn't occur if
+ the language is set to Japanese, maybe the English endings
+ are incomplete / buggy?
+ * Graphical Glitches caused by incorrect timing?
+ - Some raster effects are imperfect (off by a couple of lines)
+ * Multi-cart support not implemented - the MVS can take up to
+ 6 cartridges depending on the board being used
+ * 68000 waitstates on ROM region access, determined by jumpers on cart
+ (garou train stage 3 background bug is probably related to this)
+
+
+ Confirmed non-bugs:
+
+ * Bad zooming in the Kof2003 bootlegs - this is what happens
+ if you try and use the normal bios with a pcb set, it
+ looks like the bootleggers didn't care.
+ * Glitches at the edges of the screen - the real hardware
+ can display 320x224 but most of the games seem designed
+ to work with a width of 304, some less.
+ * Distorted jumping sound in Nightmare in the Dark
+ * Ninja Combat sometimes glitches
+
+
+*****************************************************************************
+
+ The Neo-Geo Multi Video System (MVS), is an arcade system board, being
+ the first product in the Neo-Geo family, designed by Alpha Denshi(ADK)
+ and released in 1990 by SNK. It was known to the coin-op industry, and
+ offered arcade operators the ability to put up to 6 different arcade
+ titles into a single cabinet, a key economic consideration for operators
+ with limited floorspace (games for the Neo-Geo are cartridge based and are
+ easily exchangeable). It comes in many different cabinets but basically
+ consists of an add on board that can be linked to a standard Jamma system.
+ The system was discontinued in 2004.
+ Source (modified): http://en.wikipedia.org/wiki/Neo_Geo
+
+
+ MVS motherboards were produced in 1 / 2 / 4 and 6 Slot versions.
+
+ Known motherboards:
+ ===================
+
+ 1 Slot:
+ NEO-MVH MV1
+ NEO-MVH MV1-1
+ NEO-MVH MV1A
+ . NEO-MVH MV1A CHX ??
+ NEO-MVH MV1B (1996.1.19)
+ . NEO-MVH MV1B CHX (1996.1.19) ??
+ NEO-MVH MV1B1 (1998.6.17)
+ NEO-MVH MV1C (1999.4.30)
+ NEO-MVH MV1F
+ NEO-MVH MV1FS
+ NEO-MVH MV1FT
+ NEO-MVH MV1FZ
+ NEO-MVH MV1FZS
+
+ 2 Slot:
+ NEO-MVH MV2
+ NEO-MVH MV2F
+ NEO-MVH MV2F-01
+
+ 4 Slot:
+ NEO-MVH MV4
+ NEO-MVH MV4F
+ NEO-MVH MV4FS
+ NEO-MVH MV4FT
+ NEO-MVH MV4FT2
+
+ 6 Slot:
+ NEO-MVH MV6
+ NEO-MVH MV6F
+
+
+ Neo-Geo Motherboard (info - courtesy of Guru):
+
+ NEO-MVH MV1
+ |---------------------------------------------------------------------|
+ | 4558 |
+ | HC04 HC32 |
+ | SP-S2.SP1 NEO-E0 000-L0.L0 LS244 AS04 |
+ | YM2610 |
+ | 4558 |
+ | 4558 5814 HC259 SFIX.SFIX |
+ | NEO-I0 |
+ | HA13001 YM3016 5814 |
+ --| |
+ | 4558 |
+ --| SM1.SM1 LS32 |
+ | |
+ | LSPC-A0 PRO-C0 LS244 |
+ | |
+ |J 68000 |
+ |A |
+ |M |
+ |M NEO-ZMC2 |
+ |A |
+ | LS273 NEO-G0 58256 58256 Z80A |
+ | 58256 58256 58256 58256 6116 |
+ | LS273 5864 |
+ --| LS05 5864 PRO-B0 |
+ | |
+ --| LS06 HC32 D4990A NEO-F0 24.000MHz |
+ | DSW1 BATT3.6V 32.768kHz NEO-D0 |
+ | 2003 2003 |
+ |---------------------------------------------------------------------|
+
+
+*****************************************************************************
+
+ Neo-Geo game PCB infos:
+ =======================
+
+ The Neo-Geo games for AES (home) and MVS (arcade) systems are cartridge based.
+
+ Each cartridge consists of two PCBs: CHA and PROG.
+ .CHA PCB contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom).
+ .PROG PCB contains sample data ('V' - rom) and program code ('P' - rom).
+
+ On most PCBs various custom/protection chips can also be found:
+ (Custom chip detail information (modified) from: http://wiki.neogeodev.org)
+
+ CHA:
+ . NEO-273 (C and S-ROM address latch)
+ . NEO-CMC 90G06CF7042 (NEO-273 logic / NEO-ZMC logic / C-ROM decryption / C and S-ROM multiplexer / S-ROM bankswitching)
+ . NEO-CMC 90G06CF7050 (NEO-273 logic / NEO-ZMC logic / C-ROM decryption / M-ROM decryption / C and S-ROM multiplexer / S-ROM bankswitching)
+ . NEO-ZMC (Z80 memory controller)
+ . NEO-ZMC2 (Z80 memory controller / Tile serializer)
+ . PRO-CT0 (C-ROM serializer and multiplexer?; used on early AES-CHA boards)
+ . SNK-9201 (C-ROM serializer and multiplexer?; used on early AES-CHA boards)
+
+ PROG:
+ . 0103 (QFP144) (Only found on Metal Slug X NEO-MVS PROGEOP board; function unknown)
+ . ALTERA (EPM7128SQC100-15) (P-ROM protection chip used for KOF98 NEO-MVS PROGSF1 board and Metal Slug X NEO-MVS PROGEOP board)
+ . NEO-COMA (Microcontroller; used for MULTI PLAY MODE, boards and sets see below)
+ . NEO-PCM2 (SNK 1999) (PCM functionality / V-ROM decryption / P-ROM decoding and bankswitching)
+ . NEO-PCM2 (PLAYMORE 2002) (PCM functionality / V-ROM decryption / P-ROM decoding and bankswitching)
+ . NEO-PVC (P-ROM decryption and bankswitching) / RAM
+ . NEO-SMA (P-ROM decryption and bankswitching / RNG / Storage of 256kb game data)
+ . PCM (ADPCM bus latches / V-ROM multiplexer)
+ . PRO-CT0 (On PROG board used for P-ROM protection -> Fatal Fury 2)
+ . SNK-9201 (On PROG board used for P-ROM protection -> Fatal Fury 2)
+
+
+
+ Known PCBs:
+ ============
+
+ MVS CHA:
+ -- SNK --
+ . NEO-MVS CHA-32
+ . NEO-MVS CHA-8M
+ . NEO-MVS CHA42G
+ . NEO-MVS CHA42G-1
+ . NEO-MVS CHA 42G-2
+ . NEO-MVS CHA 42G-3
+ . NEO-MVS CHA42G-3B
+ . NEO-MVS CHA256
+ . NEO-MVS CHA256B
+ . NEO-MVS CHA512Y
+ . NEO-MVS CHAFIO (1999.6.14) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050
+ . MVS CHAFIO REV1.0 (KOF-2001)
+ . NEO-MVS CHAFIO (SNK 2002) - MADE IN KOREA
+ -- SNKPLAYMORE --
+ . NEO-MVS CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050
+
+ -- SNK development boards --
+ . NEO-MVS CHAMC2
+
+ MVS PROG:
+ -- SNK --
+ . NEO-MVS PROG-NAM
+ . NEO-MVS PROG-HERO
+ . NEO-MVS PROG-EP
+ . NEO-MVS PROG-8MB
+ . NEO-MVS PROGEP8M
+ . NEO-MVS PROG8M42
+ . NEO-MVS PROG16
+ . NEO-MVS PROG42G
+ . NEO-MVS PROG42G-COM
+ . NEO-MVS PROG42G-1
+ . NEO-MVS PROG-G2
+ . NEO-MVS PROG 4096
+ . NEO-MVS PROG 4096 B
+ . NEO-MVS PROGGSC
+ . NEO-MVS PROGSM
+ . NEO-MVS PROGSS3
+ . NEO-MVS PROGTOP
+ . NEO-MVS PROGSF1 (1998.6.17)
+ . NEO-MVS PROGSF1E (1998.6.18)
+ . NEO-MVS PROGEOP (1999.2.2)
+ . NEO-MVS PROGLBA (1999.4.12) - LBA-SUB (2000.2.24)
+ . NEO-MVS PROGBK1 (1994)
+ . NEO-MVS PROGBK1 (2001)
+ . NEO-MVS PROGBK2 (2000.3.21) - used with NEO-PCM2 (1999 SNK) or NEO-PCM2 (2002 PLAYMORE)
+ . MVS PROGBK2 REV1.0 (KOF-2001)
+ . NEO-MVS PROGBK2 (SNK 2002) - MADE IN KOREA
+ -- SNKPLAYMORE --
+ . NEO-MVS PROGBK2R (2003.8.26) - NEO-HYCS (2003.9.29)
+ . NEO-MVS PROGBK3R (2003.9.2) - NEO-HYCS (2003.9.29)
+ . NEO-MVS PROGBK3S (2003.10.1)
+ . NEO-MVS PROGBK2S (2003.10.18)
+
+ -- SNK development boards --
+ . NEO-MVS PROGMC2
+
+
+ AES CHA:
+ -- SNK --
+ . NEO-AEG CHA-32
+ . NEO-AEG CHA-8M
+ . NEO-AEG CHA42G
+ . NEO-AEG CHA42G-1
+ . NEO-AEG CHA42G-2B
+ . NEO-AEG CHA42G-3
+ . NEO-AEG CHA42G-4
+ . NEO-AEG CHA256
+ . NEO-AEG CHA256 B
+ . NEO-AEG CHA256[B]
+ . NEO-AEG CHA256BY
+ . NEO-AEG CHA256RY
+ . NEO-AEG CHA512Y
+ . NEO-AEG CHAFIO (1999.8.10) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050
+ -- SNKPLAYMORE --
+ . NEO-AEG CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050
+
+ AES PROG:
+ -- SNK --
+ . NEO-AEG PROG-NAM
+ . NEO-AEG PROG-HERO
+ . NEO-AEG PROG-4A
+ . NEO-AEG PROG-4B
+ . NEO-AEG PROG 8M42
+ . NEO-AEG PROG B
+ . NEO-AEG PROG16
+ . NEO-AEG PROG42G
+ . NEO-AEG PROG42G-COM
+ . NEO-AEG PROG42G-1
+ . NEO-AEG PROG-G2
+ . NEO-AEG PROG4096 B
+ . NEO-AEG PROGGS
+ . NEO-AEG PROGTOP2
+ . NEO-AEG PROGTOP2Y
+ . NEO-AEG PROGEOP (1999.4.2)
+ . NEO-AEG PROGLBA (1999.7.6)
+ . NEO-AEG PROGRK
+ . NEO-AEG PROGRKB
+ . NEO-AEG PROGBK1Y
+ . NEO-AEG PROGBK1F
+ -- PLAYMORE --
+ . NEO-AEG PROGBK2 (2002.4.1) - used with NEO-PCM2 (1999 SNK) or NEO-PCM2 (2002 PLAYMORE)
+ -- SNKPLAYMORE --
+ . NEO-AEG PROGBK3R (2003.8.29) - NEO-HYCS (2003.9.29)
+ . NEO-AEG PROGBK3S (2003.10.6)
+ . NEO-AEG PROGBK2S (2003.10.16)
+
+
+
+ Cartridge colours:
+ ==================
+
+ MVS cartridges were produced in different colours.
+
+ Known cartridge colours:
+ . Black
+ . Blue
+ . Green
+ . Grey
+ . Red
+ . Transparent
+ . Transparent Blue
+ . Transparent Green
+ . White
+ . Yellow
+
+ The above listed only covers SNK / PLAYMORE / SNKPLAYMORE PCBs. There also exists a
+ wide range of 'bootleg' PCBs.
+
+
+ Unofficial pcb's from NG:DEV.TEAM:
+
+ MVS CHA:
+ GIGA CHAR Board 1.0 Rev. A
+ GIGA CHAR Board 1.5 Rev. 0
+ GIGA CHAR Board 1.5 Rev. C
+
+ MVS PROG:
+ GIGA PROG Board 1.0 Rev. B
+ GIGA PROG Board 1.5 Rev. A
+ GIGA PROG Board 1.5 Rev. C
+
+
+ Unofficial pcb's from NEOBITZ:
+
+ MVS CHA:
+ CHARBITZ1 2013.12.01
+
+ MVS PROG:
+ PROGBITZ1 2013.12.01
+
+
+ Neo-Geo game PCB infos by Johnboy
+
+
+
+ MVS cart pinout:
+ ================
+
+ Kindly submitted by Apollo69 (apollo69@columbus.rr.com)
+ =================================================================
+ CTRG1 CTRG2
+ =================================================================
+ GND = 01A | 01B = GND GND = 01A | 01B = GND
+ GND = 02A | 02B = GND GND = 02A | 02B = GND
+ P0 = 03A | 03B = P1 GND = 03A | 03B = GND
+ P2 = 04A | 04B = P3 GND = 04A | 04B = GND
+ P4 = 05A | 05B = P5 D0 = 05A | 05B = A1
+ P6 = 06A | 06B = P7 D1 = 06A | 06B = A2
+ P8 = 07A | 07B = P9 D2 = 07A | 07B = A3
+ P10 = 08A | 08B = P11 D3 = 08A | 08B = A4
+ P12 = 09A | 09B = P13 D4 = 09A | 09B = A5
+ P14 = 10A | 10B = P15 D5 = 10A | 10B = A6
+ P16 = 11A | 11B = P17 D6 = 11A | 11B = A7
+ P18 = 12A | 12B = P19 D7 = 12A | 12B = A8
+ P20 = 13A | 13B = P21 D8 = 13A | 13B = A9
+ P22 = 14A | 14B = P23 D9 = 14A | 14B = A10
+ PCK1B = 15A | 15B = 24M D10 = 15A | 15B = A11
+ PCK2B = 16A | 16B = 12M D11 = 16A | 16B = A12
+ 2H1 = 17A | 17B = 8M D12 = 17A | 17B = A13
+ CA4 = 18A | 18B = RESET D13 = 18A | 18B = A14
+ CR0 = 19A | 19B = CR1 D14 = 19A | 19B = A15
+ CR2 = 20A | 20B = CR3 D15 = 20A | 20B = A16
+ CR4 = 21A | 21B = CR5 R/W = 21A | 21B = A17
+ CR6 = 22A | 22B = CR7 AS = 22A | 22B = A18
+ CR8 = 23A | 23B = CR9 ROMOEU = 23A | 23B = A19
+ CR10 = 24A | 24B = CR11 ROMOEL = 24A | 24B = 68KCLKB
+ CR12 = 25A | 25B = CR13 PORTOEU = 25A | 25B = ROMWAIT
+ CR14 = 26A | 26B = CR15 PORTOEL = 26A | 26B = PWAIT0
+ CR16 = 27A | 27B = CR17 PORTWEU = 27A | 27B = PWAIT1
+ CR18 = 28A | 28B = CR19 PORTWEL = 28A | 28B = PDTACT
+ VCC = 29A | 29B = VCC VCC = 29A | 29B = VCC
+ VCC = 30A | 30B = VCC VCC = 30A | 30B = VCC
+ VCC = 31A | 31B = VCC VCC = 31A | 31B = VCC
+ VCC = 32A | 32B = VCC VCC = 32A | 32B = VCC
+ CR20 = 33A | 33B = CR21 PORTADRS = 33A | 33B = 4MB
+ CR22 = 34A | 34B = CR23 NC = 34A | 34B = ROMOE
+ CR24 = 35A | 35B = CR25 NC = 35A | 35B = RESET
+ CR26 = 36A | 36B = CR27 NC = 36A | 36B = NC
+ CR28 = 37A | 37B = CR29 NC = 37A | 37B = NC
+ CR30 = 38A | 38B = CR31 NC = 38A | 38B = NC
+ NC = 39A | 39B = FIX00 NC = 39A | 39B = NC
+ NC = 40A | 40B = FIX01 NC = 40A | 40B = NC
+ NC = 41A | 41B = FIX02 NC = 41A | 41B = SDPAD0
+ SYSTEMB = 42A | 42B = FIX03 SYSTEMB = 42A | 42B = SDPAD1
+ SDA0 = 43A | 43B = FIX04 SDPA8 = 43A | 43B = SDPAD2
+ SDA1 = 44A | 44B = FIX05 SDPA9 = 44A | 44B = SDPAD3
+ SDA2 = 45A | 45B = FIX06 SDPA10 = 45A | 45B = SDPAD4
+ SDA3 = 46A | 46B = FIX07 SDPA11 = 46A | 46B = SDPAD5
+ SDA4 = 47A | 47B = SDRD0 SDPMPX = 47A | 47B = SDPAD6
+ SDA5 = 48A | 48B = SDRD1 SDPOE = 48A | 48B = SDPAD7
+ SDA6 = 49A | 49B = SDROM SDRA8 = 49A | 49B = SDRA00
+ SDA7 = 50A | 50B = SDMRD SDRA9 = 50A | 50B = SDRA01
+ SDA8 = 51A | 51B = SDDO SDRA20 = 51A | 51B = SDRA02
+ SDA9 = 52A | 52B = SDD1 SDRA21 = 52A | 52B = SDRA03
+ SDA10 = 53A | 53B = SDD2 SDRA22 = 53A | 53B = SDRA04
+ SDA11 = 54A | 54B = SDD3 SDRA23 = 54A | 54B = SDRA05
+ SDA12 = 55A | 55B = SDD4 SDRMPX = 55A | 55B = SDRA06
+ SDA13 = 56A | 56B = SDD5 SDROE = 56A | 56B = SDRA07
+ SDA14 = 57A | 57B = SDD6 GND = 57A | 57B = GND
+ SDA15 = 58A | 58B = SDD7 GND = 58A | 58B = GND
+ GND = 59A | 59B = GND GND = 59A | 59B = GND
+ GND = 60A | 60B = GND GND = 60A | 60B = GND
+
+ CTRG1 (CHA) = Contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom)
+ CTRG2 (PROG) = Contains sample data ('V' - rom) and program code ('P' - rom)
+
+ NOTE: On CTRG2-B, The "A" lines start at "A1". If you trace this on an
+ actual cart, you will see that this is actually "A0" (A0 - A18).
+
+ These are from a very hard to read copy of the schematics, so
+ I hope that I got the pin names correct.
+
+ Apollo69 10/19/99
+
+
+*****************************************************************************
+
+ Watchdog:
+ =========
+
+ The watchdog timer will reset the system after ~0.13 seconds.
+ By cgfm's research, exactly 3,244,030 cycles (based on 24MHz clock).
+
+ Newer games force a reset using the following code (this from kof99):
+ 009CDA 203C 0003 0D40 MOVE.L #0x30D40,D0
+ 009CE0 5380 SUBQ.L #1,D0
+ 009CE2 64FC BCC.S *-0x2 [0x9CE0]
+ Note however that there is a valid code path after this loop.
+
+ The watchdog is used as a form of protection on a number of games,
+ previously this was implemented as a specific hack which locked a single
+ address of SRAM.
+
+ What actually happens is if the game doesn't find valid data in the
+ backup ram it will initialize it, then sit in a loop. The watchdog
+ should then reset the system while it is in this loop. If the watchdog
+ fails to reset the system the code will continue and set a value in
+ backup ram to indiate that the protection check has failed.
+
+
+ Mahjong Panel notes (2009-03 FP):
+ =================================
+
+ * In Service Mode menu with mahjong panel active, controls are as
+ follows:
+
+ A = select / up (for options)
+ B = down (for options)
+ C = go to previous menu
+ E = up (for menu entries)
+ F = down (for menu entries)
+ G = left (for options)
+ H = right (for options)
+
+ * These only work with Japanese BIOS, but I think it's not a bug: I
+ doubt other BIOS were programmed to be compatible with mahjong panels
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+#include "includes/neogeo.h"
+#include "machine/nvram.h"
+#include "machine/watchdog.h"
+#include "cpu/z80/z80.h"
+#include "sound/2610intf.h"
+#include "softlist.h"
+#include "neogeo.lh"
+
+
+#define LOG_VIDEO_SYSTEM (0)
+#define LOG_MAIN_CPU_BANKING (0)
+#define LOG_AUDIO_CPU_BANKING (0)
+
+
+/*************************************
+ *
+ * Main CPU interrupt generation
+ *
+ *************************************/
+
+
+
+// The display counter is automatically reloaded with the load register contents on scanline 224,
+// 1146 mclks from the rising edge of /HSYNC.
+#define NEOGEO_VBLANK_RELOAD_HTIM (attotime::from_ticks(1146, NEOGEO_MASTER_CLOCK))
+
+#define IRQ2CTRL_ENABLE (0x10)
+#define IRQ2CTRL_LOAD_RELATIVE (0x20)
+#define IRQ2CTRL_AUTOLOAD_VBLANK (0x40)
+#define IRQ2CTRL_AUTOLOAD_REPEAT (0x80)
+
+
+void neogeo_state::adjust_display_position_interrupt_timer()
+{
+ attotime period = attotime::from_ticks((uint64_t)m_display_counter + 1, NEOGEO_PIXEL_CLOCK);
+ if (LOG_VIDEO_SYSTEM) logerror("adjust_display_position_interrupt_timer current y: %02x current x: %02x target y: %x target x: %x\n", m_screen->vpos(), m_screen->hpos(), (m_display_counter + 1) / NEOGEO_HTOTAL, (m_display_counter + 1) % NEOGEO_HTOTAL);
+
+ m_display_position_interrupt_timer->adjust(period);
+}
+
+
+void neogeo_state::neogeo_set_display_position_interrupt_control( uint16_t data )
+{
+ m_display_position_interrupt_control = data;
+}
+
+
+void neogeo_state::neogeo_set_display_counter_msb( uint16_t data )
+{
+ m_display_counter = (m_display_counter & 0x0000ffff) | ((uint32_t)data << 16);
+
+ if (LOG_VIDEO_SYSTEM) logerror("PC %06x: set_display_counter %08x\n", m_maincpu->pc(), m_display_counter);
+}
+
+
+void neogeo_state::neogeo_set_display_counter_lsb( uint16_t data )
+{
+ m_display_counter = (m_display_counter & 0xffff0000) | data;
+
+ if (LOG_VIDEO_SYSTEM) logerror("PC %06x: set_display_counter %08x\n", m_maincpu->pc(), m_display_counter);
+
+ if (m_display_position_interrupt_control & IRQ2CTRL_LOAD_RELATIVE)
+ {
+ if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_RELATIVE ");
+ adjust_display_position_interrupt_timer();
+ }
+}
+
+
+void neogeo_state::update_interrupts()
+{
+ m_maincpu->set_input_line(3, m_irq3_pending ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(m_raster_level, m_display_position_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(m_vblank_level, m_vblank_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+void neogeo_state::neogeo_acknowledge_interrupt( uint16_t data )
+{
+ if (data & 0x01)
+ m_irq3_pending = 0;
+ if (data & 0x02)
+ m_display_position_interrupt_pending = 0;
+ if (data & 0x04)
+ m_vblank_interrupt_pending = 0;
+
+ update_interrupts();
+}
+
+
+TIMER_CALLBACK_MEMBER(neogeo_state::display_position_interrupt_callback)
+{
+ if (LOG_VIDEO_SYSTEM) logerror("--- Scanline @ %d,%d\n", m_screen->vpos(), m_screen->hpos());
+
+ if (m_display_position_interrupt_control & IRQ2CTRL_ENABLE)
+ {
+ if (LOG_VIDEO_SYSTEM) logerror("*** Scanline interrupt (IRQ2) *** y: %02x x: %02x\n", m_screen->vpos(), m_screen->hpos());
+ m_display_position_interrupt_pending = 1;
+
+ update_interrupts();
+ }
+
+ if (m_display_position_interrupt_control & IRQ2CTRL_AUTOLOAD_REPEAT)
+ {
+ if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_REPEAT ");
+ adjust_display_position_interrupt_timer();
+ }
+}
+
+
+TIMER_CALLBACK_MEMBER(neogeo_state::display_position_vblank_callback)
+{
+ if (m_display_position_interrupt_control & IRQ2CTRL_AUTOLOAD_VBLANK)
+ {
+ if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_VBLANK ");
+ adjust_display_position_interrupt_timer();
+ }
+
+ /* set timer for next screen */
+ m_display_position_vblank_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_RELOAD_HTIM);
+}
+
+
+TIMER_CALLBACK_MEMBER(neogeo_state::vblank_interrupt_callback)
+{
+ if (LOG_VIDEO_SYSTEM) logerror("+++ VBLANK @ %d,%d\n", m_screen->vpos(), m_screen->hpos());
+
+ m_vblank_interrupt_pending = 1;
+ update_interrupts();
+
+ /* set timer for next screen */
+ m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_IRQ_HTIM);
+}
+
+
+void neogeo_state::create_interrupt_timers()
+{
+ m_display_position_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::display_position_interrupt_callback),this));
+ m_display_position_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::display_position_vblank_callback),this));
+ m_vblank_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::vblank_interrupt_callback),this));
+}
+
+
+void neogeo_state::start_interrupt_timers()
+{
+ m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_IRQ_HTIM);
+ m_display_position_vblank_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_RELOAD_HTIM);
+}
+
+
+
+/*************************************
+ *
+ * Audio CPU interrupt generation
+ *
+ *************************************/
+
+void neogeo_state::audio_cpu_check_nmi()
+{
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, (m_audio_cpu_nmi_enabled && m_audio_cpu_nmi_pending) ? ASSERT_LINE : CLEAR_LINE);
+}
+
+WRITE8_MEMBER(neogeo_state::audio_cpu_enable_nmi_w)
+{
+ // out ($08) enables the nmi, out ($18) disables it
+ m_audio_cpu_nmi_enabled = !(offset & 0x10);
+ audio_cpu_check_nmi();
+}
+
+
+
+/*************************************
+ *
+ * Input ports / Controllers
+ *
+ *************************************/
+
+READ16_MEMBER(neogeo_state::in0_r)
+{
+ return ((m_edge->in0_r(space, offset) & m_ctrl1->ctrl_r(space, offset)) << 8) | m_dsw->read();
+}
+
+READ16_MEMBER(neogeo_state::in1_r)
+{
+ return ((m_edge->in1_r(space, offset) & m_ctrl2->ctrl_r(space, offset)) << 8) | 0xff;
+}
+
+CUSTOM_INPUT_MEMBER(neogeo_state::kizuna4p_start_r)
+{
+ return (m_edge->read_start_sel() & 0x05) | ~0x05;
+}
+
+WRITE8_MEMBER(neogeo_state::io_control_w)
+{
+ switch (offset)
+ {
+ case 0x00:
+ if (m_ctrl1) m_ctrl1->write_ctrlsel(data);
+ if (m_ctrl2) m_ctrl2->write_ctrlsel(data);
+ if (m_edge) m_edge->write_ctrlsel(data);
+ break;
+
+ case 0x10:
+ break;
+
+ case 0x18:
+ if (m_type == NEOGEO_MVS)
+ set_output_latch(data);
+ break;
+
+ case 0x20:
+ if (m_type == NEOGEO_MVS)
+ set_output_data(data);
+ break;
+
+ case 0x28:
+ if (m_type == NEOGEO_MVS)
+ {
+ m_upd4990a->data_in_w(data >> 0 & 1);
+ m_upd4990a->clk_w(data >> 1 & 1);
+ m_upd4990a->stb_w(data >> 2 & 1);
+ }
+ break;
+
+// case 0x30: break; // coin counters
+// case 0x31: break; // coin counters
+// case 0x32: break; // coin lockout
+// case 0x33: break; // coin lockout
+
+ default:
+ logerror("PC: %x Unmapped I/O control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset, data);
+ break;
+ }
+}
+
+
+/*************************************
+ *
+ * Unmapped memory access
+ *
+ *************************************/
+
+READ16_MEMBER(neogeo_state::neogeo_unmapped_r)
+{
+ uint16_t ret;
+
+ /* unmapped memory returns the last word on the data bus, which is almost always the opcode
+ of the next instruction due to prefetch */
+
+ /* prevent recursion */
+ if (m_recurse)
+ ret = 0xffff;
+ else
+ {
+ m_recurse = true;
+ ret = space.read_word(space.device().safe_pc());
+ m_recurse = false;
+ }
+ return ret;
+}
+
+
+
+/*************************************
+ *
+ * NVRAM (Save RAM)
+ *
+ *************************************/
+
+void neogeo_state::set_save_ram_unlock( uint8_t data )
+{
+ m_save_ram_unlocked = data;
+}
+
+
+WRITE16_MEMBER(neogeo_state::save_ram_w)
+{
+ if (m_save_ram_unlocked)
+ COMBINE_DATA(&m_save_ram[offset]);
+}
+
+
+
+/*************************************
+ *
+ * Memory card
+ *
+ *************************************/
+
+CUSTOM_INPUT_MEMBER(neogeo_state::get_memcard_status)
+{
+ // D0 and D1 are memcard 1 and 2 presence indicators, D2 indicates memcard
+ // write protect status (we are always write enabled)
+ return (m_memcard->present() == -1) ? 0x07 : 0x00;
+}
+
+
+READ16_MEMBER(neogeo_state::memcard_r)
+{
+ m_maincpu->eat_cycles(2); // insert waitstate
+
+ uint16_t ret;
+
+ if (m_memcard->present() != -1)
+ ret = m_memcard->read(space, offset) | 0xff00;
+ else
+ ret = 0xffff;
+
+ return ret;
+}
+
+
+WRITE16_MEMBER(neogeo_state::memcard_w)
+{
+ m_maincpu->eat_cycles(2); // insert waitstate
+
+ if (ACCESSING_BITS_0_7)
+ {
+ if (m_memcard->present() != -1)
+ m_memcard->write(space, offset, data);
+ }
+}
+
+/*************************************
+ *
+ * Inter-CPU communications
+ *
+ *************************************/
+
+WRITE8_MEMBER(neogeo_state::audio_command_w)
+{
+ m_soundlatch->write(space, 0, data);
+
+ m_audio_cpu_nmi_pending = true;
+ audio_cpu_check_nmi();
+
+ /* boost the interleave to let the audio CPU read the command */
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50));
+}
+
+
+READ8_MEMBER(neogeo_state::audio_command_r)
+{
+ uint8_t ret = m_soundlatch->read(space, 0);
+
+ m_audio_cpu_nmi_pending = false;
+ audio_cpu_check_nmi();
+
+ return ret;
+}
+
+
+CUSTOM_INPUT_MEMBER(neogeo_state::get_audio_result)
+{
+ uint8_t ret = m_soundlatch2->read(m_audiocpu->space(AS_PROGRAM), 0);
+
+ return ret;
+}
+
+
+
+
+void neogeo_state::neogeo_main_cpu_banking_init()
+{
+ m_use_cart_vectors = 0;
+
+ if (m_type != NEOGEO_CD)
+ {
+ m_banked_cart->init_banks();
+ }
+}
+
+
+/*************************************
+ *
+ * Audio CPU banking
+ *
+ *************************************/
+
+READ8_MEMBER(neogeo_state::audio_cpu_bank_select_r)
+{
+ m_bank_audio_cart[offset & 3]->set_entry(offset >> 8);
+
+ return 0;
+}
+
+
+void neogeo_state::neogeo_audio_cpu_banking_init(int set_entry)
+{
+ if (m_type == NEOGEO_CD) return;
+
+ int region;
+ int bank;
+ uint8_t *rgn;
+ uint32_t address_mask;
+
+ rgn = memregion("audiocpu")->base();
+
+ /* audio bios/cartridge selection */
+ m_bank_audio_main->configure_entry(1, memregion("audiocpu")->base());
+ if (memregion("audiobios"))
+ m_bank_audio_main->configure_entry(0, memregion("audiobios")->base());
+ else /* on hardware with no SM1 ROM, the cart ROM is always enabled */
+ m_bank_audio_main->configure_entry(0, memregion("audiocpu")->base());
+
+ m_bank_audio_main->set_entry(m_use_cart_audio);
+
+ /* audio banking */
+ m_bank_audio_cart[0] = membank("audio_f000");
+ m_bank_audio_cart[1] = membank("audio_e000");
+ m_bank_audio_cart[2] = membank("audio_c000");
+ m_bank_audio_cart[3] = membank("audio_8000");
+
+ address_mask = (memregion("audiocpu")->bytes() - 0x10000 - 1) & 0x3ffff;
+
+
+ for (region = 0; region < 4; region++)
+ {
+ for (bank = 0xff; bank >= 0; bank--)
+ {
+ uint32_t bank_address = 0x10000 + ((bank << (11 + region)) & address_mask);
+ m_bank_audio_cart[region]->configure_entry(bank, &rgn[bank_address]);
+ }
+ }
+
+ // set initial audio banks - THIS IS A HACK
+ // Z80 banking is handled by the NEO-ZMC chip in the cartridge
+ // (in later cartridges, by multifunction banking/protection chips that implement the same bank scheme)
+ // On the real chip, initial banks are all 0.
+ // However, early cartridges with less than 64KB of Z80 code and data don't have ROM banking at all.
+ // These initial bank settings are required so non-banked games will work until we identify them
+ // and use a different Z80 address map for them.
+ m_bank_audio_cart[0]->set_entry(0x1e);
+ m_bank_audio_cart[1]->set_entry(0x0e);
+ m_bank_audio_cart[2]->set_entry(0x06);
+ m_bank_audio_cart[3]->set_entry(0x02);
+}
+
+
+
+/*************************************
+ *
+ * System control register
+ *
+ *************************************/
+
+WRITE8_MEMBER(neogeo_state::system_control_w)
+{
+ uint8_t bit = (offset >> 3) & 0x01;
+
+ switch (offset & 0x07)
+ {
+ default:
+ case 0x00:
+ neogeo_set_screen_shadow(bit);
+ break;
+
+ case 0x01:
+ if (m_type == NEOGEO_CD)
+ printf("NeoCD: write to regular vector change address? %d\n", bit); // what IS going on with "neocdz doubledr" and why do games write here if it's hooked up to nothing?
+ else
+ m_use_cart_vectors = bit;
+ break;
+
+ case 0x05:
+ if (m_type == NEOGEO_MVS)
+ {
+ m_use_cart_audio = bit;
+ m_sprgen->neogeo_set_fixed_layer_source(bit);
+ m_bank_audio_main->set_entry(m_use_cart_audio);
+ }
+ break;
+
+ case 0x06:
+ if (m_type == NEOGEO_MVS)
+ set_save_ram_unlock(bit);
+ break;
+
+ case 0x07:
+ neogeo_set_palette_bank(bit);
+ break;
+
+ case 0x02: // memory card 1: write enable/disable
+ case 0x03: // memory card 2: write disable/enable
+ case 0x04: // memory card: register select enable/set to normal (what does it mean?)
+ logerror("PC: %x Unmapped system control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset & 0x07, bit);
+ break;
+ }
+
+ if (LOG_VIDEO_SYSTEM && ((offset & 0x07) != 0x06)) logerror("PC: %x System control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset & 0x07, bit);
+}
+
+
+
+/*************************************
+ *
+ * LEDs
+ *
+ *************************************/
+
+void neogeo_state::set_outputs( )
+{
+ static const uint8_t led_map[0x10] =
+ { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 };
+
+ /* EL */
+ output().set_digit_value(0, led_map[m_el_value]);
+
+ /* LED1 */
+ output().set_digit_value(1, led_map[m_led1_value >> 4]);
+ output().set_digit_value(2, led_map[m_led1_value & 0x0f]);
+
+ /* LED2 */
+ output().set_digit_value(3, led_map[m_led2_value >> 4]);
+ output().set_digit_value(4, led_map[m_led2_value & 0x0f]);
+}
+
+
+void neogeo_state::set_output_latch( uint8_t data )
+{
+ /* looks like the LEDs are set on the
+ falling edge */
+ uint8_t falling_bits = m_output_latch & ~data;
+
+ if (falling_bits & 0x08)
+ m_el_value = 16 - (m_output_data & 0x0f);
+
+ if (falling_bits & 0x10)
+ m_led1_value = ~m_output_data;
+
+ if (falling_bits & 0x20)
+ m_led2_value = ~m_output_data;
+
+ if (falling_bits & 0xc7)
+ logerror("%s Unmaped LED write. Data: %x\n", machine().describe_context(), falling_bits);
+
+ m_output_latch = data;
+
+ set_outputs();
+}
+
+
+void neogeo_state::set_output_data( uint8_t data )
+{
+ m_output_data = data;
+}
+
+
+
+/*************************************
+ *
+ * Machine initialization
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER(neogeo_state,neogeo)
+{
+ m_banked_cart->install_banks(machine(), m_maincpu, m_region_maincpu->base(), m_region_maincpu->bytes());
+
+ m_sprgen->m_fixed_layer_bank_type = 0;
+
+ // install controllers
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(FUNC(neogeo_state::in0_r), this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(FUNC(neogeo_state::in1_r), this));
+}
+
+
+void neogeo_state::neogeo_postload()
+{
+ m_bank_audio_main->set_entry(m_use_cart_audio);
+
+ if (m_type == NEOGEO_MVS) set_outputs();
+}
+
+
+void neogeo_state::machine_start()
+{
+ m_type = NEOGEO_MVS;
+
+
+ /* set the initial main CPU bank */
+ neogeo_main_cpu_banking_init();
+
+ /* set the initial audio CPU ROM banks */
+ neogeo_audio_cpu_banking_init(1);
+
+ create_interrupt_timers();
+
+ /* irq levels for MVS / AES */
+ m_vblank_level = 1;
+ m_raster_level = 2;
+
+ /* start with an IRQ3 - but NOT on a reset */
+ m_irq3_pending = 1;
+
+ // enable rtc and serial mode
+ m_upd4990a->cs_w(1);
+ m_upd4990a->oe_w(1);
+ m_upd4990a->c0_w(1);
+ m_upd4990a->c1_w(1);
+ m_upd4990a->c2_w(1);
+
+ /* register state save */
+ save_item(NAME(m_display_position_interrupt_control));
+ save_item(NAME(m_display_counter));
+ save_item(NAME(m_vblank_interrupt_pending));
+ save_item(NAME(m_display_position_interrupt_pending));
+ save_item(NAME(m_irq3_pending));
+ save_item(NAME(m_audio_cpu_nmi_enabled));
+ save_item(NAME(m_audio_cpu_nmi_pending));
+ save_item(NAME(m_save_ram_unlocked));
+ save_item(NAME(m_output_data));
+ save_item(NAME(m_output_latch));
+ save_item(NAME(m_el_value));
+ save_item(NAME(m_led1_value));
+ save_item(NAME(m_led2_value));
+
+ save_item(NAME(m_use_cart_vectors));
+ save_item(NAME(m_use_cart_audio));
+
+ machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_state::neogeo_postload), this));
+
+ m_sprgen->set_screen(m_screen);
+ m_sprgen->set_sprite_region(m_region_sprites->base(), m_region_sprites->bytes());
+ m_sprgen->set_fixed_regions(m_region_fixed->base(), m_region_fixed->bytes(), m_region_fixedbios);
+
+}
+
+
+
+/*************************************
+ *
+ * Machine reset
+ *
+ *************************************/
+
+void neogeo_state::machine_reset()
+{
+ offs_t offs;
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+
+ /* reset system control registers */
+ for (offs = 0; offs < 8; offs++)
+ system_control_w(space, offs, 0);
+
+ // disable audiocpu nmi
+ m_audio_cpu_nmi_enabled = false;
+ m_audio_cpu_nmi_pending = false;
+ audio_cpu_check_nmi();
+
+ m_maincpu->reset();
+
+ start_interrupt_timers();
+
+ /* trigger the IRQ3 that was set by MACHINE_START */
+ update_interrupts();
+
+ m_recurse = false;
+}
+
+READ16_MEMBER(neogeo_state::banked_vectors_r)
+{
+ if (!m_use_cart_vectors)
+ {
+ uint16_t* bios = (uint16_t*)memregion("mainbios")->base();
+ return bios[offset];
+ }
+ else
+ {
+ uint16_t* game = (uint16_t*)m_region_maincpu->base();
+ return game[offset];
+ }
+
+}
+
+READ16_MEMBER(neogeo_state::neogeo_slot_rom_low_r)
+{
+ return 0;
+}
+
+READ16_MEMBER(neogeo_state::neogeo_slot_rom_low_bectors_r)
+{
+ if (!m_use_cart_vectors)
+ {
+ uint16_t* bios = (uint16_t*)memregion("mainbios")->base();
+ return bios[offset];
+ }
+ else
+ {
+ return 0;
+ }
+
+}
+
+
+/*************************************
+ *
+ * Main CPU memory handlers
+ *
+ *************************************/
+
+ADDRESS_MAP_START( neogeo_main_map, AS_PROGRAM, 16, neogeo_state )
+
+ AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM
+ /* some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too */
+ AM_RANGE(0x300080, 0x300081) AM_MIRROR(0x01ff7e) AM_READ_PORT("TEST")
+ AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x00ff)
+ AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO/COIN") AM_WRITE8(audio_command_w, 0xff00)
+ AM_RANGE(0x360000, 0x37ffff) AM_READ(neogeo_unmapped_r)
+ AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff)
+ AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(neogeo_unmapped_r) AM_WRITE8(system_control_w, 0x00ff)
+ AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(neogeo_video_register_r)
+ AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(neogeo_video_register_w)
+ AM_RANGE(0x3e0000, 0x3fffff) AM_READ(neogeo_unmapped_r)
+ AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(neogeo_paletteram_r, neogeo_paletteram_w)
+ AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w)
+ AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0)
+ AM_RANGE(0xd00000, 0xd0ffff) AM_MIRROR(0x0f0000) AM_RAM_WRITE(save_ram_w) AM_SHARE("saveram")
+ AM_RANGE(0xe00000, 0xffffff) AM_READ(neogeo_unmapped_r)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( main_map_slot, AS_PROGRAM, 16, neogeo_state )
+ AM_RANGE(0x000000, 0x00007f) AM_READ(neogeo_slot_rom_low_bectors_r)
+ AM_RANGE(0x000080, 0x0fffff) AM_READ(neogeo_slot_rom_low_r)
+ AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("cartridge")
+// AM_RANGE(0x2ffff0, 0x2fffff) AM_WRITE(main_cpu_bank_select_w)
+ AM_IMPORT_FROM( neogeo_main_map )
+ADDRESS_MAP_END
+
+/*************************************
+ *
+ * Audio CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, neogeo_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("audio_main")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audio_8000")
+ AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("audio_c000")
+ AM_RANGE(0xe000, 0xefff) AM_ROMBANK("audio_e000")
+ AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audio_f000")
+ AM_RANGE(0xf800, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+
+
+/*************************************
+ *
+ * Audio CPU port handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( audio_io_map, AS_IO, 8, neogeo_state )
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
+ AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
+ AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_SELECT(0x0010) AM_WRITE(audio_cpu_enable_nmi_w)
+ AM_RANGE(0x08, 0x0b) AM_MIRROR(0x00f0) AM_SELECT(0xff00) AM_READ(audio_cpu_bank_select_r)
+ AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
+ADDRESS_MAP_END
+
+
+
+/*************************************
+ *
+ * Standard Neo-Geo DIPs and
+ * input port definition
+ *
+ *************************************/
+
+INPUT_PORTS_START( neogeo )
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x01, 0x01, "Setting Mode" ) PORT_DIPLOCATION("SW:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, "VS Mode" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Joystick ) )
+ PORT_DIPSETTING( 0x00, "Mahjong Panel" )
+ PORT_DIPNAME( 0x18, 0x18, "COMM Setting (Cabinet No.)" ) PORT_DIPLOCATION("SW:4,5")
+ PORT_DIPSETTING( 0x18, "1" )
+ PORT_DIPSETTING( 0x10, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPNAME( 0x20, 0x20, "COMM Setting (Link Enable)" ) PORT_DIPLOCATION("SW:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Next Game") PORT_CODE(KEYCODE_3)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Previous Game") PORT_CODE(KEYCODE_4)
+ PORT_BIT( 0x7000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, get_memcard_status, nullptr)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* Hardware type (AES=0, MVS=1). Some games check this and show a piracy warning screen if the hardware and BIOS don't match */
+
+ PORT_START("AUDIO/COIN")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN3 ) /* What is this? "us-e" BIOS uses it as a coin input; Universe BIOS uses it to detect MVS or AES hardware */
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN4 ) /* What is this? "us-e" BIOS uses it as a coin input; Universe BIOS uses it to detect MVS or AES hardware */
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* what is this? When ACTIVE_HIGH + IN4 bit 6 ACTIVE_LOW MVS-4 slot is detected */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, tp_r)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, data_out_r)
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,get_audio_result, nullptr)
+
+ PORT_START("TEST")
+ PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* what is this? If ACTIVE_LOW, MVS-6 slot detected, when ACTIVE_HIGH MVS-1 slot (AES) detected */
+ PORT_SERVICE_NO_TOGGLE( 0x0080, IP_ACTIVE_LOW )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( neogeo_6slot )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("TEST")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SPECIAL )
+INPUT_PORTS_END
+
+
+
+
+DRIVER_INIT_MEMBER(neogeo_state,mvs)
+{
+ DRIVER_INIT_CALL(neogeo);
+}
+
+
+
+
+/*************************************
+ *
+ * Machine driver
+ *
+ *************************************/
+
+MACHINE_CONFIG_START( neogeo_base, neogeo_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, NEOGEO_MAIN_CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(neogeo_main_map)
+
+ MCFG_CPU_ADD("audiocpu", Z80, NEOGEO_AUDIO_CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(audio_map)
+ MCFG_CPU_IO_MAP(audio_io_map)
+
+ /* video hardware */
+ MCFG_DEFAULT_LAYOUT(layout_neogeo)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(neogeo_state, screen_update_neogeo)
+
+ /* 4096 colors * two banks * normal and shadow */
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096*2*2)
+
+ MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE, 0)
+
+ /* audio hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
+
+ MCFG_SOUND_ADD("ymsnd", YM2610, NEOGEO_YM2610_CLOCK)
+ MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.28)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 0.28)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 0.98)
+ MCFG_SOUND_ROUTE(2, "rspeaker", 0.98)
+ MCFG_NEOGEO_BANKED_CART_ADD("banked_cart")
+MACHINE_CONFIG_END
+
+
+MACHINE_CONFIG_DERIVED( neogeo_arcade, neogeo_base )
+ MCFG_WATCHDOG_ADD("watchdog")
+ MCFG_WATCHDOG_TIME_INIT(attotime::from_ticks(3244030, NEOGEO_MASTER_CLOCK))
+ MCFG_UPD4990A_ADD("upd4990a", XTAL_32_768kHz, NOOP, NOOP)
+ MCFG_NVRAM_ADD_0FILL("saveram")
+ MCFG_NEOGEO_MEMCARD_ADD("memcard")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( mvs, neogeo_arcade )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(main_map_slot)
+
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false)
+
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false)
+MACHINE_CONFIG_END
+
+
+
+/* dummy entry for the dummy bios driver */
+ROM_START( neogeo )
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_Y_ZOOM
+
+ ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x20000, "fixedbios", 0 )
+ ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x100000, "sprites", ROMREGION_ERASEFF )
+ROM_END
+
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT */
+CONS( 1990, neogeo, 0, 0, mvs, neogeo_6slot, neogeo_state, mvs, "SNK", "Neo-Geo", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/neogeo0.cpp b/docs/release/src/hbmame/drivers/neogeo0.cpp
new file mode 100644
index 00000000000..430332aef6f
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/neogeo0.cpp
@@ -0,0 +1,144 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+/******************************************************************************/
+
+#include "machine/watchdog.h"
+
+// set up a hbmame-specific derived class, instead of hacking into src/mame/includes/neogeo.h
+class neogeo_hbmame : public neogeo_noslot_state
+{
+public:
+ neogeo_hbmame(const machine_config &mconfig, device_type type, const char *tag)
+ : neogeo_noslot_state(mconfig, type, tag)
+ , m_kog_prot(*this, "kog_prot")
+ {}
+
+
+ DECLARE_DRIVER_INIT(cmc42sfix);
+ DECLARE_DRIVER_INIT(cmc50sfix);
+ DECLARE_DRIVER_INIT(cthd2k3a);
+ DECLARE_DRIVER_INIT(fr2ch);
+ DECLARE_DRIVER_INIT(garoud);
+ DECLARE_DRIVER_INIT(jckeygpd);
+ DECLARE_DRIVER_INIT(kof96ep);
+ DECLARE_DRIVER_INIT(kof97pla);
+ DECLARE_DRIVER_INIT(kof99bh);
+ DECLARE_DRIVER_INIT(kof99d);
+ DECLARE_DRIVER_INIT(kof2000d);
+ DECLARE_DRIVER_INIT(kof2000h);
+ DECLARE_DRIVER_INIT(kof2000m);
+ DECLARE_DRIVER_INIT(kof2kbsd);
+ DECLARE_DRIVER_INIT(kof2knd);
+ DECLARE_DRIVER_INIT(kof2kxxx);
+ DECLARE_DRIVER_INIT(kof2001d);
+ DECLARE_DRIVER_INIT(kof2001m);
+ DECLARE_DRIVER_INIT(kf2k1pls);
+ DECLARE_DRIVER_INIT(kf2k1pa);
+ DECLARE_DRIVER_INIT(kof2002d);
+ DECLARE_DRIVER_INIT(kof2002m);
+ DECLARE_DRIVER_INIT(kof2k2bd);
+ DECLARE_DRIVER_INIT(kof2k2dbh);
+ DECLARE_DRIVER_INIT(kof2k2h);
+ DECLARE_DRIVER_INIT(kof2k2lb);
+ DECLARE_DRIVER_INIT(kof2k2ps2a);
+ DECLARE_DRIVER_INIT(kof2003b);
+ DECLARE_DRIVER_INIT(kof2003hb);
+ DECLARE_DRIVER_INIT(kof2k3hd);
+ DECLARE_DRIVER_INIT(kof2k3pcd);
+ DECLARE_DRIVER_INIT(kof10thu);
+ DECLARE_DRIVER_INIT(kogd);
+ DECLARE_DRIVER_INIT(matrima);
+ DECLARE_DRIVER_INIT(matrimd);
+ DECLARE_DRIVER_INIT(matrmehc);
+ DECLARE_DRIVER_INIT(mslug3d);
+ DECLARE_DRIVER_INIT(mslug3fr);
+ DECLARE_DRIVER_INIT(mslug3n);
+ DECLARE_DRIVER_INIT(mslug4d);
+ DECLARE_DRIVER_INIT(mslug4dh);
+ DECLARE_DRIVER_INIT(mslug4it);
+ DECLARE_DRIVER_INIT(mslug4m);
+ DECLARE_DRIVER_INIT(mslug5b);
+ DECLARE_DRIVER_INIT(mslug5d);
+ DECLARE_DRIVER_INIT(mslug5hd);
+ DECLARE_DRIVER_INIT(mslug5nd);
+ DECLARE_DRIVER_INIT(ms5pcbd);
+ DECLARE_DRIVER_INIT(mslug5d1);
+ DECLARE_DRIVER_INIT(mslug5fr1);
+ DECLARE_DRIVER_INIT(ms5boot);
+ DECLARE_DRIVER_INIT(pnyaad);
+ DECLARE_DRIVER_INIT(rotdb);
+ DECLARE_DRIVER_INIT(rotdd);
+ DECLARE_DRIVER_INIT(rotdnd);
+ DECLARE_DRIVER_INIT(sam5hb);
+ DECLARE_DRIVER_INIT(sam5sphb);
+ DECLARE_DRIVER_INIT(sengo3d);
+ DECLARE_DRIVER_INIT(shockt2w);
+ DECLARE_DRIVER_INIT(svchb);
+ DECLARE_DRIVER_INIT(svcpcd);
+private:
+ optional_device<kog_prot_device> m_kog_prot;
+};
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, cmc42sfix )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, cmc50sfix )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+
+static MACHINE_CONFIG_DERIVED( no_watchdog, neogeo_noslot )
+ MCFG_WATCHDOG_MODIFY("watchdog")
+ MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(0.0))
+MACHINE_CONFIG_END
+
+
+// used by samsho2sp, doubledrsp
+ADDRESS_MAP_START( samsho2sp_map, AS_PROGRAM, 16, neogeo_state )
+ AM_RANGE(0x900000, 0x91ffff) AM_ROM AM_REGION("maincpu", 0x200000) // extra rom
+ AM_IMPORT_FROM( main_map_noslot )
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED( samsho2sp, neogeo_noslot )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(samsho2sp_map)
+MACHINE_CONFIG_END
+
+/******************************************************************************/
+
+
+#include "neogeohb.cpp"
+#include "neogeo1.cpp"
+#include "kof94.cpp"
+#include "kof95.cpp"
+#include "kof96.cpp"
+#include "kof97.cpp"
+#include "kof98.cpp"
+#include "kof99.cpp"
+#include "kof2000.cpp"
+#include "kof2001.cpp"
+#include "kof2002.cpp"
+#include "kof2003.cpp"
+#include "mgd2.cpp"
+#include "mslug.cpp"
+#include "ngdoubledr.cpp"
+#include "nggaroup.cpp"
+#include "ngkofmisc.cpp"
+#include "nglastblade.cpp"
+#include "ngrbff.cpp"
+#include "ngrotd.cpp"
+#include "ngsamsho.cpp"
+#include "ngsengoku.cpp"
+#include "ngsvc.cpp"
+#include "ngwh.cpp"
+
diff --git a/docs/release/src/hbmame/drivers/neogeo1.cpp b/docs/release/src/hbmame/drivers/neogeo1.cpp
new file mode 100644
index 00000000000..495cbe87173
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/neogeo1.cpp
@@ -0,0 +1,2986 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Neogeo hacks that don't warrant their own file
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, jckeygpd)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+
+ /* install some extra RAM */
+ m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x201fff);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, matrima )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MATRIM_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, matrimd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 1);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, matrmehc )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MATRIM_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 1);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, pnyaad )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 4);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, shockt2w )
+{
+ DRIVER_INIT_CALL(neogeo);
+ uint16_t *mem16= (uint16_t *)memregion("mainbios");
+ mem16[0x0200] = 1; /* Force home mode */
+ /* Above causes checksum failure, so patch it out */
+ mem16[0x11c62/2] = 0x4e71;
+ mem16[0x11c64/2] = 0x4e71;
+}
+
+
+
+ROM_START( 2020bbcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "030cd.p1", 0x000000, 0x080000, CRC(e13d8a8a) SHA1(3975bdf141abc4994c9fc1919fb4207883687961) )
+
+ NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) )
+
+ NEO_BIOS_AUDIO_64K( "030cd.m1", CRC(124d7b4f) SHA1(fd7bceacd0ec17cab7abb28ee8eab92217f9c197) )
+ // use this to get full sound
+ //NEO_BIOS_AUDIO_128K( "030-m1.m1", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "030cd.v1", 0x000000, 0x100000, CRC(d725a649) SHA1(cd1206b7190e543f31eb878f645f3be841c5a4ed) )
+ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) )
+ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) )
+ ROM_LOAD16_BYTE( "030-c3.c3", 0x200000, 0x100000, CRC(47fddfee) SHA1(297c505a63448c999a2510c27bf4549102134db8) )
+ ROM_LOAD16_BYTE( "030-c4.c4", 0x200001, 0x100000, CRC(780d1c4e) SHA1(2e2cf9de828e3b48642dd2203637103438c62142) )
+ROM_END
+
+
+ROM_START( androdunpx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "049px.p1", 0x000000, 0x080000, CRC(5f63193e) SHA1(7ba7bb8f9382ddd7b35601b8171a0e532c9dfe55) )
+ ROM_LOAD16_WORD_SWAP( "049-p2.p2", 0x080000, 0x080000, CRC(2f062209) SHA1(991cf3e3677929b2cc0b2787b0c7b6ad3700f618) )
+
+ NEO_SFIX_128K( "049-s1.s1", CRC(6349de5d) SHA1(bcc44b9576d7bedd9a39294530bb66f707690c72) )
+
+ NEO_BIOS_AUDIO_128K( "049-m1.m1", CRC(edd2acf4) SHA1(c4ee6ba834d54b9fc5a854dbc41a05877e090371) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "049-v1.v1", 0x000000, 0x100000, CRC(ce43cb89) SHA1(47f82e077abb6efc6b1b0490412ae147d5d2acef) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "049-c1.c1", 0x000000, 0x100000, CRC(7ace6db3) SHA1(c41cc9de8c0788dcc49ca494fd3bb3124062d9dd) )
+ ROM_LOAD16_BYTE( "049-c2.c2", 0x000001, 0x100000, CRC(b17024f7) SHA1(fcf7efae48fcdccaf5255c145de414fb246128f0) )
+ROM_END
+
+
+ROM_START( aofbh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "044bh.p1", 0x000000, 0x080000, CRC(202a60d8) SHA1(f0caa8b6a18dff1b9568aaae552cf6d10a9db722) )
+
+ NEO_SFIX_128K( "044-s1.s1", CRC(89903f39) SHA1(a04a0c244a5d5c7a595fcf649107969635a6a8b6) )
+
+ NEO_BIOS_AUDIO_128K( "044-m1.m1", CRC(0987e4bb) SHA1(8fae4b7fac09d46d4727928e609ed9d3711dbded) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "044-v2.v2", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) )
+ ROM_LOAD( "044-v4.v4", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "044-c1.c1", 0x000000, 0x100000, CRC(ddab98a7) SHA1(f20eb81ec431268798c142c482146c1545af1c24) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c2.c2", 0x000001, 0x100000, CRC(d8ccd575) SHA1(f697263fe92164e274bf34c55327b3d4a158b332) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c3.c3", 0x200000, 0x100000, CRC(403e898a) SHA1(dd5888f8b24a33b2c1f483316fe80c17849ccfc4) )
+ ROM_CONTINUE( 0x600000, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c4.c4", 0x200001, 0x100000, CRC(6235fbaa) SHA1(9090e337d7beed25ba81ae0708d0aeb57e6cf405) )
+ ROM_CONTINUE( 0x600001, 0x100000 )
+ROM_END
+
+
+ROM_START( aof2b ) /* Art of Fighting 2 - Hack by TcwLee - (Can select Geese instead of Mr. Big) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056b.p1", 0x000000, 0x100000, CRC(c3dc11f8) SHA1(7f92f4931ffdf2561b1a2741e18a4ae301df8497) )
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+ROM_START( aof2b1 ) // also known as aof2bhfx
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056b1.p1", 0x000000, 0x100000, CRC(5d21dc39) SHA1(72df83c4249990386ced39749dd6994aa5a0b2a9) )
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+ROM_START( aof2bh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056bh.p1", 0x000000, 0x100000, CRC(3af1e484) SHA1(57b33dbb93d066092acddf163dbd67d15b5159e2) )
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+ROM_START( aof2br2 ) /* Art of Fighting 2 - Hack by TcwLee - (Can select Geese instead of Ryo) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056br2.p1", 0x000000, 0x100000, CRC(02d068b7) SHA1(5aadebfd9a59e48be972c63dbf6c4cac32bba89a) )
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+
+ROM_START( aof3b ) /* Art of Fighting 3 - Hack by Dodowang - (Can select Wyler and Sinclair AES/MVS - enabled add. info) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "096b.p1", 0x000000, 0x100000, CRC(255aec23) SHA1(9E97772CC2DB51139A04BAC725E6529DD6E0F19A) )
+ ROM_LOAD16_WORD_SWAP( "096-p2.sp2", 0x100000, 0x200000, CRC(4d5a2602) SHA1(4c26d6135d2877d9c38169662033e9d0cc24d943) )
+
+ NEO_SFIX_128K( "096-s1.s1", CRC(cc7fd344) SHA1(2c6846cf8ea61fb192ba181dbccb63594d572c0e) )
+
+ NEO_BIOS_AUDIO_128K( "096-m1.m1", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "096-v1.v1", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
+ ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
+ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) )
+ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) )
+ ROM_LOAD16_BYTE( "096-c3.c3", 0x0800000, 0x400000, CRC(55f9ee1e) SHA1(fbe1b7891beae66c5fcbc7e36168dc1b460ede91) )
+ ROM_LOAD16_BYTE( "096-c4.c4", 0x0800001, 0x400000, CRC(585b7e47) SHA1(d50ea91397fc53d86470ff5b493a44d57c010306) )
+ ROM_LOAD16_BYTE( "096-c5.c5", 0x1000000, 0x400000, CRC(c75a753c) SHA1(fc977f8710816a369a5d0d49ee84059380e93fb7) )
+ ROM_LOAD16_BYTE( "096-c6.c6", 0x1000001, 0x400000, CRC(9a9d2f7a) SHA1(a89a713bfcd93974c9acb21ce699d365b08e7e39) )
+ ROM_LOAD16_BYTE( "096-c7.c7", 0x1800000, 0x200000, CRC(51bd8ab2) SHA1(c8def9c64de64571492b5b7e14b794e3c18f1393) )
+ ROM_LOAD16_BYTE( "096-c8.c8", 0x1800001, 0x200000, CRC(9a34f99c) SHA1(fca72d95ec42790a7f1e771a1e25dbc5bec5fc19) )
+ROM_END
+
+ROM_START( aof3bh )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "096bh.p1", 0x000000, 0x100000, CRC(70969ff1) SHA1(a17d17c451655e01db8d42c6edd31fd2917bd486) )
+ ROM_LOAD16_WORD_SWAP( "096-p2.sp2", 0x100000, 0x200000, CRC(4d5a2602) SHA1(4c26d6135d2877d9c38169662033e9d0cc24d943) )
+
+ NEO_SFIX_128K( "096-s1.s1", CRC(cc7fd344) SHA1(2c6846cf8ea61fb192ba181dbccb63594d572c0e) )
+
+ NEO_BIOS_AUDIO_128K( "096-m1.m1", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "096-v1.v1", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
+ ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
+ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) )
+ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) )
+ ROM_LOAD16_BYTE( "096-c3.c3", 0x0800000, 0x400000, CRC(55f9ee1e) SHA1(fbe1b7891beae66c5fcbc7e36168dc1b460ede91) )
+ ROM_LOAD16_BYTE( "096-c4.c4", 0x0800001, 0x400000, CRC(585b7e47) SHA1(d50ea91397fc53d86470ff5b493a44d57c010306) )
+ ROM_LOAD16_BYTE( "096-c5.c5", 0x1000000, 0x400000, CRC(c75a753c) SHA1(fc977f8710816a369a5d0d49ee84059380e93fb7) )
+ ROM_LOAD16_BYTE( "096-c6.c6", 0x1000001, 0x400000, CRC(9a9d2f7a) SHA1(a89a713bfcd93974c9acb21ce699d365b08e7e39) )
+ ROM_LOAD16_BYTE( "096-c7.c7", 0x1800000, 0x200000, CRC(51bd8ab2) SHA1(c8def9c64de64571492b5b7e14b794e3c18f1393) )
+ ROM_LOAD16_BYTE( "096-c8.c8", 0x1800001, 0x200000, CRC(9a34f99c) SHA1(fca72d95ec42790a7f1e771a1e25dbc5bec5fc19) )
+ROM_END
+
+
+ROM_START( bangbeadp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "259-p1.p1", 0x100000, 0x100000, CRC(88a37f8b) SHA1(566db84850fad5e8fe822e8bba910a33e083b550) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "259p.s1", CRC(bb50fb2d) SHA1(7372939f328fb5e7d09c16985e09ae8c34702b0c) )
+
+ NEO_BIOS_AUDIO_128K( "259-m1.m1", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "259p.v1", 0x000000, 0x200000, CRC(e97b9385) SHA1(d213cae6cf5732b8ab1f8a8cf04afee5dfd9a260) )
+ ROM_LOAD( "259p.v2", 0x200000, 0x200000, CRC(b0cbd70a) SHA1(fc7c8183f8ff9800e8aae7c8d44d962300058cfb) )
+ ROM_LOAD( "259-v2.v2", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "259p.c1", 0x000000, 0x200000, CRC(e3919e44) SHA1(54c722414b5a7ad311dc8ddf6fdda88535e829d1) )
+ ROM_LOAD16_BYTE( "259p.c2", 0x000001, 0x200000, CRC(baf5a320) SHA1(ead3d81d9b4aeb45af4f9cb5c38157f2236b506c) )
+ ROM_LOAD16_BYTE( "259p.c3", 0x400000, 0x100000, CRC(c8e52157) SHA1(f10f58e905c4cbaf182b20e63abe5364462133c5) )
+ ROM_LOAD16_BYTE( "259p.c4", 0x400001, 0x100000, CRC(69fa8e60) SHA1(29c1fbdb79dedf1470683202e2cb3435732d9275) )
+ROM_END
+
+
+ROM_START( bjourneypx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "022px.p1", 0x000000, 0x100000, CRC(1e8b5847) SHA1(59bfff5d8459b24bd3d403a73440ced5c440fd2b) )
+
+ NEO_SFIX_128K( "022-s1.s1", CRC(843c3624) SHA1(dbdf86c193b7c1d795f8c21f2c103c1d3e18abbe) )
+
+ NEO_BIOS_AUDIO_128K( "022-m1.m1", CRC(8e1d4ab6) SHA1(deabc11ab81e7e68a3e041c03a127ae28d0d7264) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "022-v11.v11", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) )
+ ROM_LOAD( "022-v22.v22", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "022-c1.c1", 0x000000, 0x100000, CRC(4d47a48c) SHA1(6e282285be72583d828e7765b1c1695ecdc44777) )
+ ROM_LOAD16_BYTE( "022-c2.c2", 0x000001, 0x100000, CRC(e8c1491a) SHA1(c468d2556b3de095aaa05edd1bc16d71303e9478) )
+ ROM_LOAD16_BYTE( "022-c3.c3", 0x200000, 0x080000, CRC(66e69753) SHA1(974b823fc62236fbc23e727f25b61a805a707a9e) )
+ ROM_LOAD16_BYTE( "022-c4.c4", 0x200001, 0x080000, CRC(71bfd48a) SHA1(47288be69e6992d09ebef108b4de9ffab6293dc8) )
+ROM_END
+
+
+ROM_START( breakersbh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "230bh.p1", 0x100000, 0x100000, CRC(1d708f96) SHA1(92604d61ed4f6101bdbf6e4352ab28a292e9d0cf) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "230-s1.s1", CRC(076fb64c) SHA1(c166038128d7004f69932141f83b320a35c2b4ca) )
+
+ NEO_BIOS_AUDIO_128K( "230-m1.m1", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "230-v1.v1", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) )
+ ROM_LOAD( "230-v2.v2", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "230-c1.c1", 0x000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "230-c2.c2", 0x000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "230-c3.c3", 0x800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "230-c4.c4", 0x800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ROM_END
+
+ROM_START( breakersp ) /* Breakers - Hack by UNKNOWN - (Move change 26c?) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "230p.p1", 0x100000, 0x100000, CRC(244ad91b) SHA1(22EFEA04BFB86E8C75A80C6584AB0CAA85FC0E92) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "230-s1.s1", CRC(076fb64c) SHA1(c166038128d7004f69932141f83b320a35c2b4ca) )
+
+ NEO_BIOS_AUDIO_128K( "230-m1.m1", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "230-v1.v1", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) )
+ ROM_LOAD( "230-v2.v2", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "230-c1.c1", 0x000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "230-c2.c2", 0x000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "230-c3.c3", 0x800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "230-c4.c4", 0x800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ROM_END
+
+ROM_START( breakersy )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "230y.p1", 0x100000, 0x100000, CRC(e65b2b70) SHA1(a879fa3299240fa82560c140e32c0d046de9aadd) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "230-s1.s1", CRC(076fb64c) SHA1(c166038128d7004f69932141f83b320a35c2b4ca) )
+
+ NEO_BIOS_AUDIO_128K( "230-m1.m1", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "230-v1.v1", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) )
+ ROM_LOAD( "230-v2.v2", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "230-c1.c1", 0x000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "230-c2.c2", 0x000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "230-c3.c3", 0x800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "230-c4.c4", 0x800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ROM_END
+
+
+ROM_START( breakrevb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "245b.p1", 0x100000, 0x100000, CRC(52c978b5) SHA1(892712457ba8c789b136b35ba423f5260c20b478) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "245-s1.s1", CRC(e7660a5d) SHA1(1cd54964ba60b245ea57d9daf0e27b572b815d21) )
+
+ NEO_BIOS_AUDIO_128K( "245-m1.m1", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "245-v1.v1", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) )
+ ROM_LOAD( "245-v2.v2", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "245-c1.c1", 0x0000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "245-c2.c2", 0x0000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "245-c3.c3", 0x0800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "245-c4.c4", 0x0800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ ROM_LOAD16_BYTE( "245-c5.c5", 0x1000000, 0x400000, CRC(b5f40e7f) SHA1(b332bac64dbb9a9dd66c5315f47ea08634d36f45) )
+ ROM_LOAD16_BYTE( "245-c6.c6", 0x1000001, 0x400000, CRC(d0337328) SHA1(dff86b75dc283bd4512557a5c64f16e6be6c16e4) )
+ROM_END
+
+ROM_START( breakrevpp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "245pp.p1", 0x100000, 0x100000, CRC(a95c1ef2) SHA1(3d46ab9107eb353668711868b78b284e19ae04f6) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "245-s1.s1", CRC(e7660a5d) SHA1(1cd54964ba60b245ea57d9daf0e27b572b815d21) )
+
+ NEO_BIOS_AUDIO_128K( "245-m1.m1", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "245-v1.v1", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) )
+ ROM_LOAD( "245-v2.v2", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "245-c1.c1", 0x0000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "245-c2.c2", 0x0000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "245-c3.c3", 0x0800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "245-c4.c4", 0x0800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ ROM_LOAD16_BYTE( "245-c5.c5", 0x1000000, 0x400000, CRC(b5f40e7f) SHA1(b332bac64dbb9a9dd66c5315f47ea08634d36f45) )
+ ROM_LOAD16_BYTE( "245-c6.c6", 0x1000001, 0x400000, CRC(d0337328) SHA1(dff86b75dc283bd4512557a5c64f16e6be6c16e4) )
+ROM_END
+
+ROM_START( breakrevy )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "245y.p1", 0x100000, 0x100000, CRC(bae71481) SHA1(df20a616754fe43706fdf55c7371c832dd23245d) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "245-s1.s1", CRC(e7660a5d) SHA1(1cd54964ba60b245ea57d9daf0e27b572b815d21) )
+
+ NEO_BIOS_AUDIO_128K( "245-m1.m1", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "245-v1.v1", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) )
+ ROM_LOAD( "245-v2.v2", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "245-c1.c1", 0x0000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "245-c2.c2", 0x0000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "245-c3.c3", 0x0800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "245-c4.c4", 0x0800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ ROM_LOAD16_BYTE( "245-c5.c5", 0x1000000, 0x400000, CRC(b5f40e7f) SHA1(b332bac64dbb9a9dd66c5315f47ea08634d36f45) )
+ ROM_LOAD16_BYTE( "245-c6.c6", 0x1000001, 0x400000, CRC(d0337328) SHA1(dff86b75dc283bd4512557a5c64f16e6be6c16e4) )
+ROM_END
+
+
+ROM_START( burningfhp )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "018hp.p1", 0x000000, 0x080000, CRC(da26031b) SHA1(44997a8c313356db48716bb007ab842473805d88) )
+
+ NEO_SFIX_128K( "018-s1.s1", CRC(6799ea0d) SHA1(ec75ef9dfdcb0b123574fc6d81ebaaadfba32fb5) )
+
+ NEO_BIOS_AUDIO_128K( "018-m1.m1", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "018-v1.v1", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) )
+ ROM_LOAD( "018-v2.v2", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "018-c1.c1", 0x000000, 0x100000, CRC(25a25e9b) SHA1(3cf02d0662e190678d0530d7b7d3f425209adf83) )
+ ROM_LOAD16_BYTE( "018-c2.c2", 0x000001, 0x100000, CRC(d4378876) SHA1(45659aa1755d96b992c977042186e47fff68bba9) )
+ ROM_LOAD16_BYTE( "018-c3.c3", 0x200000, 0x100000, CRC(862b60da) SHA1(e2303eb1609f1050f0b4f46693a15e37deb176fb) )
+ ROM_LOAD16_BYTE( "018-c4.c4", 0x200001, 0x100000, CRC(e2e0aff7) SHA1(1c691c092a6e2787de4f433b0eb9252bfdaa7e16) )
+ROM_END
+
+
+ROM_START( ctomadaypx )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "249px.p1", 0x100000, 0x100000, CRC(734b3c0b) SHA1(5f08a3f509ea1fa56bf8b66d996f259380fecdaa) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "249-s1.s1", CRC(dc9eb372) SHA1(b8aa142243ba303799554479bfc88eb49260f3b1) )
+
+ NEO_BIOS_AUDIO_128K( "249-m1.m1", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "249-v1.v1", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) )
+ ROM_LOAD( "249-v2.v2", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "249-c1.c1", 0x000000, 0x400000, CRC(041fb8ee) SHA1(dacc84d713d76818d89a26358374afaa22fa82a2) )
+ ROM_LOAD16_BYTE( "249-c2.c2", 0x000001, 0x400000, CRC(74f3cdf4) SHA1(55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1) )
+ROM_END
+
+
+ROM_START( dragons1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "336.p1", 0x000000, 0x080000, CRC(f25c71ad) SHA1(803fb6cd6a7ada59678ad901ff9788b1e54ddd0c) )
+ ROM_LOAD16_BYTE( "336.p2", 0x000001, 0x080000, CRC(f353448c) SHA1(f0f966ca15d503e01b40e901765ff0888463b65d) )
+
+ //NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+ NEO_SFIX_128K( "336.s1", CRC(706477a7) SHA1(8cbee7f6832e7edd2dc792ca330420a6a984b879) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "336.c1", 0x000000, 0x1000000, CRC(81821826) SHA1(b7c1a53e32633383675206a16c68f6f2ff984865) )
+ ROM_LOAD16_BYTE( "336.c2", 0x000001, 0x1000000, CRC(3601d568) SHA1(800323e52f5d33b402f84d31850b42c688082d67) )
+ROM_END
+
+
+ROM_START( eightmaneb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "025eb.p1", 0x000000, 0x080000, CRC(6356e4b9) SHA1(c02fe3fe7c59592c464cba05183fe98b1ac13f54) )
+
+ NEO_SFIX_128K( "025-s1.s1", CRC(a402202b) SHA1(75c44e1af459af155f5b892fd18706268dd5e602) )
+
+ NEO_BIOS_AUDIO_128K( "025-m1.m1", CRC(9927034c) SHA1(205665361c5b2ab4f01ec480dd3c9b69db858d09) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "025-v1.v1", 0x000000, 0x100000, CRC(4558558a) SHA1(a4b277703ed67225c652be0d618daeca65a27b88) )
+ ROM_LOAD( "025-v2.v2", 0x100000, 0x100000, CRC(c5e052e9) SHA1(fa1119c90ce4c706a6aa0c17d7bc06aa3068d9b2) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "025-c1.c1", 0x000000, 0x100000, CRC(555e16a4) SHA1(1c96f3d2fd0991680fbf627a6cdd26ad2cd60319) )
+ ROM_LOAD16_BYTE( "025-c2.c2", 0x000001, 0x100000, CRC(e1ee51c3) SHA1(da8d074bb4e923ed7b8a154fd31b42f2d65b8e96) )
+ ROM_LOAD16_BYTE( "025-c3.c3", 0x200000, 0x080000, CRC(0923d5b0) SHA1(ab72ba1e3ebf56dd356f9ad181f986b1360a1089) )
+ ROM_LOAD16_BYTE( "025-c4.c4", 0x200001, 0x080000, CRC(e3eca67b) SHA1(88154cbc1a261c2f425430119ebc08a30adc9675) )
+ROM_END
+
+
+ROM_START( fightfevbs )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "060bs.p1", 0x000000, 0x080000, CRC(10bc5d92) SHA1(b0bc22f7ece6548512f7582678efe260487c6ed4) )
+ ROM_LOAD16_WORD_SWAP( "060k.p2", 0x080000, 0x080000, CRC(b0801d5f) SHA1(085746d8f5d271d5f84ccbb7f577193c391f88d4) )
+
+ NEO_SFIX_128K( "060bs.s1", CRC(7f012104) SHA1(f366dcc3923655dff16ec08a40d5fce22a84257d) )
+
+ NEO_BIOS_AUDIO_128K( "060-m1.m1", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
+ ROM_LOAD( "060-v2.v2", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) )
+
+ ROM_REGION( 0x0800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) )
+ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) )
+ ROM_LOAD16_BYTE( "060-c3.c3", 0x0400000, 0x200000, CRC(0956b437) SHA1(c70be8b5cebf321afe4c3f5e9a12413c3077694a) )
+ ROM_LOAD16_BYTE( "060-c4.c4", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) )
+ROM_END
+
+ROM_START( fightfevk ) /* Fight Fever - Hack by UNKNOWN - (Kanji Patch) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "060-epr.sp2", 0x000000, 0x080000, CRC(3032041b) SHA1(4b8ed2e6f74579ea35a53e06ccac42d6905b0f51) )
+ ROM_LOAD16_WORD_SWAP( "060k.p2", 0x080000, 0x080000, CRC(b0801d5f) SHA1(085746d8f5d271d5f84ccbb7f577193c391f88d4) )
+
+ NEO_SFIX_128K( "060k.s1", CRC(51eaac30) SHA1(BF587471680B2795F02D0C4175A07A3AF3543999) )
+
+ NEO_BIOS_AUDIO_128K( "060-m1.m1", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
+ ROM_LOAD( "060k.v2", 0x200000, 0x100000, CRC(64470036) SHA1(eb2b34b3c01eb5c1a0a40cff6f4c0f2eee7bf7f2) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) )
+ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) )
+ ROM_LOAD16_BYTE( "060-c3.c3", 0x0400000, 0x200000, CRC(0956b437) SHA1(c70be8b5cebf321afe4c3f5e9a12413c3077694a) )
+ ROM_LOAD16_BYTE( "060-c4.c4", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) )
+ROM_END
+
+
+ROM_START( flipshotk )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "247k.p1", 0x000000, 0x080000, CRC(d2e7a7e3) SHA1(1ff4f070fcc658bbc7dc69e16c87f82d7392d100) )
+
+ NEO_SFIX_128K( "247-s1.s1", CRC(6300185c) SHA1(cb2f1de085fde214f96a962b1c2fa285eb387d44) )
+
+ NEO_BIOS_AUDIO_128K( "247-m1.m1", CRC(a9fe0144) SHA1(4cc076ecce9216a373f3dcd7ba28a03d6050e522) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "247-v1.v1", 0x000000, 0x200000, CRC(42ec743d) SHA1(f45b5167ebcbd59300f4e5b05448cd421654102a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "247k.c1", 0x000000, 0x200000, CRC(1ccfeff9) SHA1(3575b84acca6ec0f26f4a0ad30a16c140e1c0b2e) )
+ ROM_LOAD16_BYTE( "247k.c2", 0x000001, 0x200000, CRC(648cdd5d) SHA1(8a0aaf13e2539e48f9b0b18f8154aa50bf4bed2a) )
+ROM_END
+
+
+ROM_START( galaxyfgb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "078b.p1", 0x100000, 0x100000, CRC(6288cb4a) SHA1(8fb3c124664512f5aa5a8c75064605955b2e24fb) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "078-s1.s1", CRC(72f8923e) SHA1(da908bffc2b5d8baa2002dbb5bfb3aa17d2472b7) )
+
+ NEO_BIOS_AUDIO_128K( "078-m1.m1", CRC(8e9e3b10) SHA1(7c44d1dbd4f8d337c99e90361d1dab837df85e31) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "078-v1.v1", 0x000000, 0x200000, CRC(e3b735ac) SHA1(e16dfac09aef8115a20bae0bef8c86d4e7d0dc4a) )
+ ROM_LOAD( "078-v2.v2", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) )
+ ROM_LOAD( "078-v3.v3", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "078-c1.c1", 0x000000, 0x200000, CRC(c890c7c0) SHA1(b96c18a41c34070a4f24ca77cb7516fae8b0fd0c) )
+ ROM_LOAD16_BYTE( "078-c2.c2", 0x000001, 0x200000, CRC(b6d25419) SHA1(e089df9c9a9645f706e501108d634f4d222622a2) )
+ ROM_LOAD16_BYTE( "078-c3.c3", 0x400000, 0x200000, CRC(9d87e761) SHA1(ea1b6d7c9d5ef3a9b48968bde5a52d5699d591cc) )
+ ROM_LOAD16_BYTE( "078-c4.c4", 0x400001, 0x200000, CRC(765d7cb8) SHA1(7b9c86714d688602064d928c9d2b49d70bb7541e) )
+ ROM_LOAD16_BYTE( "078-c5.c5", 0x800000, 0x200000, CRC(e6b77e6a) SHA1(db3b8fc62a6f21c6653621c0665450d5d9a9913d) )
+ ROM_LOAD16_BYTE( "078-c6.c6", 0x800001, 0x200000, CRC(d779a181) SHA1(2761026abd9698a7b56114b76631563abd41fd12) )
+ ROM_LOAD16_BYTE( "078-c7.c7", 0xc00000, 0x100000, CRC(4f27d580) SHA1(c0f12496b45b2fe6e94aa8ac52b0157063127e0a) )
+ ROM_LOAD16_BYTE( "078-c8.c8", 0xc00001, 0x100000, CRC(0a7cc0d8) SHA1(68aaee6341c87e56ce11acc1c4ec8047839fe70d) )
+ROM_END
+
+ROM_START( galaxyfgbh ) // galaxyfgbh2014
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "078bh.p1", 0x100000, 0x100000, CRC(bbfffa22) SHA1(6bde48477f67241dce30107f84c38a8d0c34a81f) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "078-s1.s1", CRC(72f8923e) SHA1(da908bffc2b5d8baa2002dbb5bfb3aa17d2472b7) )
+
+ NEO_BIOS_AUDIO_128K( "078-m1.m1", CRC(8e9e3b10) SHA1(7c44d1dbd4f8d337c99e90361d1dab837df85e31) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "078-v1.v1", 0x000000, 0x200000, CRC(e3b735ac) SHA1(e16dfac09aef8115a20bae0bef8c86d4e7d0dc4a) )
+ ROM_LOAD( "078-v2.v2", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) )
+ ROM_LOAD( "078-v3.v3", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "078-c1.c1", 0x000000, 0x200000, CRC(c890c7c0) SHA1(b96c18a41c34070a4f24ca77cb7516fae8b0fd0c) )
+ ROM_LOAD16_BYTE( "078-c2.c2", 0x000001, 0x200000, CRC(b6d25419) SHA1(e089df9c9a9645f706e501108d634f4d222622a2) )
+ ROM_LOAD16_BYTE( "078-c3.c3", 0x400000, 0x200000, CRC(9d87e761) SHA1(ea1b6d7c9d5ef3a9b48968bde5a52d5699d591cc) )
+ ROM_LOAD16_BYTE( "078-c4.c4", 0x400001, 0x200000, CRC(765d7cb8) SHA1(7b9c86714d688602064d928c9d2b49d70bb7541e) )
+ ROM_LOAD16_BYTE( "078-c5.c5", 0x800000, 0x200000, CRC(e6b77e6a) SHA1(db3b8fc62a6f21c6653621c0665450d5d9a9913d) )
+ ROM_LOAD16_BYTE( "078-c6.c6", 0x800001, 0x200000, CRC(d779a181) SHA1(2761026abd9698a7b56114b76631563abd41fd12) )
+ ROM_LOAD16_BYTE( "078-c7.c7", 0xc00000, 0x100000, CRC(4f27d580) SHA1(c0f12496b45b2fe6e94aa8ac52b0157063127e0a) )
+ ROM_LOAD16_BYTE( "078-c8.c8", 0xc00001, 0x100000, CRC(0a7cc0d8) SHA1(68aaee6341c87e56ce11acc1c4ec8047839fe70d) )
+ROM_END
+
+
+ROM_START( ganryud )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "252-p1.p1", 0x100000, 0x100000, CRC(4b8ac4fb) SHA1(93d90271bff281862b03beba3809cf95a47a1e44) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "252-m1.m1", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "252-v1.v1", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "252d.c1", 0x0000000, 0x800000, CRC(6bf7605b) SHA1(6710cbc27d6ec35648f98f0ca541aaaeeffd0980) )
+ ROM_LOAD16_BYTE( "252d.c2", 0x0000001, 0x800000, CRC(596792ce) SHA1(ad9c8f8b0e95396fade2b485d11a1b3d4cb65f37) )
+ROM_END
+
+
+ROM_START( gowcaizrb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "094b.p1", 0x100000, 0x100000, CRC(7d699c03) SHA1(f92f562e9bbb4b4eb1ac03e140bde4fd20fe41b2) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) )
+ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) )
+ ROM_LOAD16_BYTE( "094-c3.c3", 0x400000, 0x200000, CRC(58bfbaa1) SHA1(4c6f9cf138c5e6dfe89a45e2a690a986c75f5bfc) )
+ ROM_LOAD16_BYTE( "094-c4.c4", 0x400001, 0x200000, CRC(9451ee73) SHA1(7befee4a886b1d7493c06cefb7abf4ec01c14a8b) )
+ ROM_LOAD16_BYTE( "094-c5.c5", 0x800000, 0x200000, CRC(ff9cf48c) SHA1(5f46fb5d0812275b0006919d8540f22be7c16492) )
+ ROM_LOAD16_BYTE( "094-c6.c6", 0x800001, 0x200000, CRC(31bbd918) SHA1(7ff8c5e3f17d40e7a8a189ad8f8026de55368810) )
+ ROM_LOAD16_BYTE( "094-c7.c7", 0xc00000, 0x200000, CRC(2091ec04) SHA1(a81d4bdbef1ac6ea49845dc30e31bf9745694100) )
+ ROM_LOAD16_BYTE( "094-c8.c8", 0xc00001, 0x200000, CRC(d80dd241) SHA1(1356a64e4d4e271f62cd0d83f79ee9c906440810) )
+ROM_END
+
+ROM_START( gowcaizrbs )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "094bs.p1", 0x100000, 0x100000, CRC(d4f37cc4) SHA1(deec8a0516ae2057551713098e81be53c751eff7) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) )
+ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) )
+ ROM_LOAD16_BYTE( "094-c3.c3", 0x400000, 0x200000, CRC(58bfbaa1) SHA1(4c6f9cf138c5e6dfe89a45e2a690a986c75f5bfc) )
+ ROM_LOAD16_BYTE( "094-c4.c4", 0x400001, 0x200000, CRC(9451ee73) SHA1(7befee4a886b1d7493c06cefb7abf4ec01c14a8b) )
+ ROM_LOAD16_BYTE( "094-c5.c5", 0x800000, 0x200000, CRC(ff9cf48c) SHA1(5f46fb5d0812275b0006919d8540f22be7c16492) )
+ ROM_LOAD16_BYTE( "094-c6.c6", 0x800001, 0x200000, CRC(31bbd918) SHA1(7ff8c5e3f17d40e7a8a189ad8f8026de55368810) )
+ ROM_LOAD16_BYTE( "094-c7.c7", 0xc00000, 0x200000, CRC(2091ec04) SHA1(a81d4bdbef1ac6ea49845dc30e31bf9745694100) )
+ ROM_LOAD16_BYTE( "094-c8.c8", 0xc00001, 0x200000, CRC(d80dd241) SHA1(1356a64e4d4e271f62cd0d83f79ee9c906440810) )
+ROM_END
+
+ROM_START( gowcaizrrv )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "094rv.p1", 0x100000, 0x100000, CRC(0316a857) SHA1(8dbe033e3d3d6925c6187335acdd10369b274b46) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) )
+ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) )
+ ROM_LOAD16_BYTE( "094-c3.c3", 0x400000, 0x200000, CRC(58bfbaa1) SHA1(4c6f9cf138c5e6dfe89a45e2a690a986c75f5bfc) )
+ ROM_LOAD16_BYTE( "094-c4.c4", 0x400001, 0x200000, CRC(9451ee73) SHA1(7befee4a886b1d7493c06cefb7abf4ec01c14a8b) )
+ ROM_LOAD16_BYTE( "094-c5.c5", 0x800000, 0x200000, CRC(ff9cf48c) SHA1(5f46fb5d0812275b0006919d8540f22be7c16492) )
+ ROM_LOAD16_BYTE( "094-c6.c6", 0x800001, 0x200000, CRC(31bbd918) SHA1(7ff8c5e3f17d40e7a8a189ad8f8026de55368810) )
+ ROM_LOAD16_BYTE( "094-c7.c7", 0xc00000, 0x200000, CRC(2091ec04) SHA1(a81d4bdbef1ac6ea49845dc30e31bf9745694100) )
+ ROM_LOAD16_BYTE( "094-c8.c8", 0xc00001, 0x200000, CRC(d80dd241) SHA1(1356a64e4d4e271f62cd0d83f79ee9c906440810) )
+ROM_END
+
+ROM_START( gowcaizry )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "094y.p1", 0x100000, 0x100000, CRC(c8f1f4ae) SHA1(95f9fec0e90380a93423f5291eafb2b5b837e397) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) )
+ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) )
+ ROM_LOAD16_BYTE( "094-c3.c3", 0x400000, 0x200000, CRC(58bfbaa1) SHA1(4c6f9cf138c5e6dfe89a45e2a690a986c75f5bfc) )
+ ROM_LOAD16_BYTE( "094-c4.c4", 0x400001, 0x200000, CRC(9451ee73) SHA1(7befee4a886b1d7493c06cefb7abf4ec01c14a8b) )
+ ROM_LOAD16_BYTE( "094-c5.c5", 0x800000, 0x200000, CRC(ff9cf48c) SHA1(5f46fb5d0812275b0006919d8540f22be7c16492) )
+ ROM_LOAD16_BYTE( "094-c6.c6", 0x800001, 0x200000, CRC(31bbd918) SHA1(7ff8c5e3f17d40e7a8a189ad8f8026de55368810) )
+ ROM_LOAD16_BYTE( "094-c7.c7", 0xc00000, 0x200000, CRC(2091ec04) SHA1(a81d4bdbef1ac6ea49845dc30e31bf9745694100) )
+ ROM_LOAD16_BYTE( "094y.c8", 0xc00001, 0x200000, CRC(0d31dee6) SHA1(4979aa3daa7e490fbe39e7b3c70cbb2ef7551c5f) )
+ROM_END
+
+
+ROM_START( gpilotscd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "020cd.p1", 0x000000, 0x100000, CRC(f139df88) SHA1(8a2ce01f83c3c529b3c823555e19f815e0a558b3) )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) )
+
+ NEO_BIOS_AUDIO_64K( "020cd.m1", CRC(08697f52) SHA1(670998421355ccfdc5e778123b9df54df4dcde76) )
+ // use this to get full sound
+ //NEO_BIOS_AUDIO_128K( "020-m1.m1", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "020cd.v11", 0x000000, 0x100000, CRC(1285132c) SHA1(dad570624888550937ea15180c9ceb5fcdb418b8) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "020-c1.c1", 0x000000, 0x100000, CRC(bd6fe78e) SHA1(50b704862cd79d64fa488e621b079f6e413c33bc) )
+ ROM_LOAD16_BYTE( "020-c2.c2", 0x000001, 0x100000, CRC(5f4a925c) SHA1(71c5ef8141234daaa7025427a6c65e79766973a5) )
+ ROM_LOAD16_BYTE( "020-c3.c3", 0x200000, 0x100000, CRC(d1e42fd0) SHA1(f0d476aebbdc2ce008f5f0783be86d295b24aa44) )
+ ROM_LOAD16_BYTE( "020-c4.c4", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
+ROM_END
+
+ROM_START( gpilotse )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "020eh.p1", 0x000000, 0x080000, CRC(80d6950e) SHA1(c83e119c316b9c5d86e06fff598b1be7e2cc53a5) )
+ ROM_LOAD16_WORD_SWAP( "020-p2.p2", 0x080000, 0x020000, CRC(edcb22ac) SHA1(505d2db38ae999b7d436e8f2ff56b81796d62b54) )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) )
+
+ NEO_BIOS_AUDIO_128K( "020-m1.m1", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "020-v11.v11", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
+
+ ROM_REGION( 0x080000, "ym.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "020-c1.c1", 0x000000, 0x100000, CRC(bd6fe78e) SHA1(50b704862cd79d64fa488e621b079f6e413c33bc) )
+ ROM_LOAD16_BYTE( "020-c2.c2", 0x000001, 0x100000, CRC(5f4a925c) SHA1(71c5ef8141234daaa7025427a6c65e79766973a5) )
+ ROM_LOAD16_BYTE( "020-c3.c3", 0x200000, 0x100000, CRC(d1e42fd0) SHA1(f0d476aebbdc2ce008f5f0783be86d295b24aa44) )
+ ROM_LOAD16_BYTE( "020-c4.c4", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
+ROM_END
+
+ROM_START( gpilotspx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "020px.p1", 0x000000, 0x080000, CRC(69c5532d) SHA1(8ee19e1f06f9168b0fa4dfece569e79a50fec259) )
+ ROM_LOAD16_WORD_SWAP( "020-p2.p2", 0x080000, 0x020000, CRC(edcb22ac) SHA1(505d2db38ae999b7d436e8f2ff56b81796d62b54) )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) )
+
+ NEO_BIOS_AUDIO_128K( "020-m1.m1", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "020-v11.v11", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "020-c1.c1", 0x000000, 0x100000, CRC(bd6fe78e) SHA1(50b704862cd79d64fa488e621b079f6e413c33bc) )
+ ROM_LOAD16_BYTE( "020-c2.c2", 0x000001, 0x100000, CRC(5f4a925c) SHA1(71c5ef8141234daaa7025427a6c65e79766973a5) )
+ ROM_LOAD16_BYTE( "020-c3.c3", 0x200000, 0x100000, CRC(d1e42fd0) SHA1(f0d476aebbdc2ce008f5f0783be86d295b24aa44) )
+ ROM_LOAD16_BYTE( "020-c4.c4", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
+ROM_END
+
+
+ROM_START( ironcladb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "220b.p1", 0x000000, 0x200000, CRC(65849961) SHA1(2846081bb1451a209412159991bfac95d394fe3a) )
+
+ NEO_SFIX_128K( "proto_220-s1.s1", CRC(372fe217) SHA1(493433e682f519bf647e1481c8bdd3a980830ffb) )
+
+ NEO_BIOS_AUDIO_128K( "proto_220-m1.m1", CRC(3a08bb63) SHA1(d8fbbf42a006ccafc3cd99808d28c82dbaac4590) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "proto_220-v1.v1", 0x000000, 0x400000, CRC(8f30a215) SHA1(0ee866a468c4c3608d55df2b5cb9243c8016d77c) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "220b.c1", 0x000000, 0x800000, CRC(621f4a09) SHA1(117a8e8bea5f880d8315b48bc5884eb805c5e678) )
+ ROM_LOAD16_BYTE( "220b.c2", 0x000001, 0x800000, CRC(7fec83e8) SHA1(769c2cb4ed4a9d7c29e3aad3f4601f1d24c96640) )
+ROM_END
+
+ROM_START( ironcladcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "220cd.p1", 0x00000, 0xd4000, CRC(cf9257b0) SHA1(2a2742865862d313b5d856e5b500b56b36336ecd) )
+
+ NEO_SFIX_128K( "proto_220-s1.s1", CRC(372fe217) SHA1(493433e682f519bf647e1481c8bdd3a980830ffb) )
+
+ NEO_BIOS_AUDIO_64K( "220cd.m1", CRC(b4d7cab0) SHA1(23342f72595f9d460f2e94fbda437ba1364bb5ed) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "220cd.v1", 0x000000, 0x100000, CRC(f7fd9baa) SHA1(a9362d405705f03a1759c2034df0c48daa15b71d) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_220-c1.c1", 0x000000, 0x400000, CRC(9aa2b7dc) SHA1(6b3dff292c86f949890b1f8201bc5278f38c2668) )
+ ROM_LOAD16_BYTE( "proto_220-c2.c2", 0x000001, 0x400000, CRC(8a2ad708) SHA1(9568ac4cc0552e7fd3e50d3cd8d9f0f4fe7df1d4) )
+ ROM_LOAD16_BYTE( "proto_220-c3.c3", 0x800000, 0x400000, CRC(d67fb15a) SHA1(842971aeaf3c92e70f7c653bbf29058bc60f5b71) )
+ ROM_LOAD16_BYTE( "proto_220-c4.c4", 0x800001, 0x400000, CRC(e73ea38b) SHA1(27138d588e61e86c292f12d16e36c3681075c607) )
+ROM_END
+
+
+ROM_START( jockeygpd )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) )
+ ROM_FILL( 0x100000, 0x100000, 0xff )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
+
+ ROM_REGION( 0x0200000, "ymsnd", 0 )
+ ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "008d.c1", 0x0000000, 0x800000, CRC(ea259019) SHA1(c14dc59a43e255ef12d8d832b2860f1a84c48170) )
+ ROM_LOAD16_BYTE( "008d.c2", 0x0000001, 0x800000, CRC(97f270be) SHA1(06e03b26bacb8568c69ccf22e58175426a69e01b) )
+ROM_END
+
+
+ROM_START( joyjoycd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "021cd.p1", 0x000000, 0x080000, CRC(a483fde0) SHA1(c42a04f5fec60678cbe20bc77675e0128aadf31c) )
+
+ NEO_SFIX_128K( "021-s1.s1", CRC(6956d778) SHA1(e3757776d60dc07d8e07c9ca61b223b14732f860) )
+
+ NEO_BIOS_AUDIO_64K( "021cd.m1", CRC(e93556ad) SHA1(616fac84ec2fa80ef8f43fcf993a3186d43a96eb) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "021cd.v1", 0x000000, 0x080000, CRC(241235cd) SHA1(bc4992dde75134c934f6374f370d1831c8160633) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "021-v21.v21", 0x000000, 0x080000, CRC(8ed20a86) SHA1(d15cba5eac19ea56fdd4877541f1bb3eb755ebba) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "021-c1.c1", 0x000000, 0x080000, CRC(509250ec) SHA1(d6ddb16d8222088f153a85a905bcb99541a5f2cf) )
+ ROM_LOAD16_BYTE( "021-c2.c2", 0x000001, 0x080000, CRC(09ed5258) SHA1(6bf50cd10236e29146b49e714a0e0ebcfe30a682) )
+ROM_END
+
+ROM_START( joyjoycd1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "021cd.p1", 0x000000, 0x080000, CRC(a483fde0) SHA1(c42a04f5fec60678cbe20bc77675e0128aadf31c) )
+
+ NEO_SFIX_128K( "021-s1.s1", CRC(6956d778) SHA1(e3757776d60dc07d8e07c9ca61b223b14732f860) )
+
+ NEO_BIOS_AUDIO_64K( "021cd1.m1", CRC(72072960) SHA1(83c70714fc458e78f39836b3a86a9b07a553bcdd) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "021cd1.v11", 0x000000, 0x080000, CRC(4fb2fbcc) SHA1(b1defbfd68eb824468c352c91e98d2fc4fba539d) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "021-v21.v21", 0x000000, 0x080000, CRC(8ed20a86) SHA1(d15cba5eac19ea56fdd4877541f1bb3eb755ebba) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "021-c1.c1", 0x000000, 0x080000, CRC(509250ec) SHA1(d6ddb16d8222088f153a85a905bcb99541a5f2cf) )
+ ROM_LOAD16_BYTE( "021-c2.c2", 0x000001, 0x080000, CRC(09ed5258) SHA1(6bf50cd10236e29146b49e714a0e0ebcfe30a682) )
+ROM_END
+
+
+ROM_START( kabukiklb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092b.p1", 0x100000, 0x100000, CRC(9e814a43) SHA1(75f764d19274fefb990e63ae5b6e207370ee4f75) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+ROM_START( kabukikleh ) /* Kabuki Klash - Far East of Eden - Enhance by Ydmis - (Can choose Manto, Karakuri, Jyashinsai and Lucifeller) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092eh.p1", 0x100000, 0x100000, CRC(bcf0f989) SHA1(91D493486A2BE79817D31E75A192079497A45360) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+ROM_START( kabukiklgm ) /* Kabuki Klash - Far East of Eden - Colour fix by Flycboy - (Title screen colour change - character color change) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092gm.p1", 0x100000, 0x100000, CRC(af1f9201) SHA1(22C3B71608DAD065C09C01FFAE24382F8DDAE7D6) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+ROM_START( kabukiklgmc ) /* Kabuki Klash - Far East of Eden - Colour fix by Flycboy - (Title screen colour change - character colour change) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092gmc.p1", 0x100000, 0x100000, CRC(928aa6ce) SHA1(98D6EA9A3C1976B2311F395F2CC9ACEDBB5226EB) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+ROM_START( kabukiklmc ) /* Kabuki Klash - Far East of Eden - Enhance by Creamymami - (Magic always max) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092mc.p1", 0x100000, 0x100000, CRC(4807f850) SHA1(DE0094B2DAF59F46ACA1ACB5E84BF142D6A559AD) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+ROM_START( kabukiklyc ) /* Kabuki Klash - Far East of Eden - Enhance by Creamymami and Ydmis - (Can choose Manto, Karakuri, Jyashinsai and Lucifeller - magic is always max - based on kabukleh) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092yc.p1", 0x100000, 0x100000, CRC(dc1b9aae) SHA1(8B10ADF0B6192CEA555AB373E9716FAF64DCD897) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+
+ROM_START( karnovreh ) /* Karnov's Revenge - Enhance by Ydmis - (Can choose Big Tornado) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "066eh.p1", 0x000000, 0x100000, CRC(76dfb5be) SHA1(E7B72C50C5ABC1CF8088FB18A40560B787F5284E) )
+
+ NEO_SFIX_128K( "066-s1.s1", CRC(bae5d5e5) SHA1(aa69d9b235b781ec51f72a528fada9cb12e72cbc) )
+
+ NEO_BIOS_AUDIO_128K( "066-m1.m1", CRC(030beae4) SHA1(ceb6ee6c09514504efacdbca7b280901e4c97084) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "066-v1.v1", 0x000000, 0x200000, CRC(0b7ea37a) SHA1(34e7d4f6db053674a7e8c8b2e3e398777d5b02e6) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "066-c1.c1", 0x000000, 0x200000, CRC(09dfe061) SHA1(ca4c0f0ce80967b4be2f18b72435c468bbfbac4c) )
+ ROM_LOAD16_BYTE( "066-c2.c2", 0x000001, 0x200000, CRC(e0f6682a) SHA1(addb4fbc30da2b8ffc86819d92a874eb232f67dd) )
+ ROM_LOAD16_BYTE( "066-c3.c3", 0x400000, 0x200000, CRC(a673b4f7) SHA1(d138f5b38fd65c61549ce36f5c4983f7c8a3e7f6) )
+ ROM_LOAD16_BYTE( "066-c4.c4", 0x400001, 0x200000, CRC(cb3dc5f4) SHA1(865d9ccfc3df517c341d6aac16120f6b6aa759fe) )
+ ROM_LOAD16_BYTE( "066-c5.c5", 0x800000, 0x200000, CRC(9a28785d) SHA1(19723e1f7ff429e8a038d89488b279f830dfaf6e) )
+ ROM_LOAD16_BYTE( "066-c6.c6", 0x800001, 0x200000, CRC(c15c01ed) SHA1(7cf5583e6610bcdc3b332896cefc71df84fb3f19) )
+ROM_END
+
+
+ROM_START( kizunab ) /* Enhance by Ydmis - (Can choose 2 hidden characters) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "216b.p1", 0x100000, 0x100000, CRC(a4ccd402) SHA1(038539BF889AF6186BB81DB330E6DBDF06F64FA8) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "216-s1.s1", CRC(efdc72d7) SHA1(be37cbf1852e2e4c907cc799b754b538544b6703) )
+
+ NEO_BIOS_AUDIO_128K( "216-m1.m1", CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "216-v2.v2", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ ROM_LOAD16_BYTE( "216-c3.c3", 0x0800000, 0x400000, CRC(665c9f16) SHA1(7ec781a49a462f395b450460b29493f55134eac2) )
+ ROM_LOAD16_BYTE( "216-c4.c4", 0x0800001, 0x400000, CRC(7f5d03db) SHA1(365ed266c121f4df0bb76898955a8ae0e668a216) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x1000000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x1000001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ ROM_LOAD16_BYTE( "059-c7.c7", 0x1800000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0x1800001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+ROM_START( kizunaeh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "216eh.p1", 0x100000, 0x100000, CRC(a87b7976) SHA1(fc78ee9cabff2692ad99ce5cf4bd28e32e893873) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "216-s1.s1", CRC(efdc72d7) SHA1(be37cbf1852e2e4c907cc799b754b538544b6703) )
+
+ NEO_BIOS_AUDIO_128K( "216-m1.m1", CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "216-v2.v2", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ ROM_LOAD16_BYTE( "216-c3.c3", 0x0800000, 0x400000, CRC(665c9f16) SHA1(7ec781a49a462f395b450460b29493f55134eac2) )
+ ROM_LOAD16_BYTE( "216-c4.c4", 0x0800001, 0x400000, CRC(7f5d03db) SHA1(365ed266c121f4df0bb76898955a8ae0e668a216) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x1000000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x1000001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ ROM_LOAD16_BYTE( "059-c7.c7", 0x1800000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0x1800001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+
+ROM_START( lans2k4d ) /* Bootleg / Hack of Shock Troopers - 2nd Squad */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "246lnsq.p1", 0x000000, 0x100000, CRC(724576EA) SHA1(075f5d8ccb7303c8b6bebf630c4fa9c204554044) )
+ ROM_LOAD16_WORD_SWAP( "246-p2.sp2", 0x100000, 0x400000, CRC(72ea04c3) SHA1(4fb1d22c30f5f3db4637dd92a4d2705c88de399d) )
+
+ NEO_SFIX_128K( "246lnsq.s1", CRC(8699c63a) SHA1(d1a0345bcb4e3f6044c93abd52ff6fe6280dc5ee) )
+
+ NEO_BIOS_AUDIO_128K( "246-m1.m1", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "246-v1.v1", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) )
+ ROM_LOAD( "246-v2.v2", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) )
+ ROM_LOAD( "246-v3.v3", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "246-c1.c1", 0x0000000, 0x800000, CRC(47ac9ec5) SHA1(2d9eea11ba87baa23b18a1a3f607dc137846e807) )
+ ROM_LOAD16_BYTE( "246-c2.c2", 0x0000001, 0x800000, CRC(7bcab64f) SHA1(08d0edddd14b53d606e9a7a46aa4fb4e7398e0d0) )
+ ROM_LOAD16_BYTE( "246lnsq.c3", 0x1000000, 0x800000, CRC(b28d702a) SHA1(21d70c94ecf9ca519b4e50e2d31620f6dfab9ad0) )
+ ROM_LOAD16_BYTE( "246lnsq.c4", 0x1000001, 0x800000, CRC(da10dd64) SHA1(55bf0922a117325ef6479f654caf13b287a16f67) )
+ ROM_LOAD16_BYTE( "246lnsq.c5", 0x2000000, 0x800000, CRC(bab3b417) SHA1(232f718fecf597434b7a93602387fabab2bda9c0) )
+ ROM_LOAD16_BYTE( "246lnsq.c6", 0x2000001, 0x800000, CRC(4c089a28) SHA1(f854ce46b4723aa971de280007268d474d2a6361) )
+ROM_END
+
+
+ROM_START( lbowlingcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "019cd.p1", 0x000000, 0x040000, CRC(c17fd30f) SHA1(908b045542bb575ac05f208a6595ab49c5ca5c0f) )
+
+ NEO_SFIX_128K( "019-s1.s1", CRC(5fcdc0ed) SHA1(86415077e7adc3ba6153eeb4fb0c62cf36e903fa) )
+
+ //NEO_BIOS_AUDIO_64K( "019cd.m1", CRC(f65cb876) SHA1(6c26f400b2fce5fc8f3d533d275622a274982edc) ) // this has bugs and so there's no sound
+ NEO_BIOS_AUDIO_128K( "019-m1.m1", CRC(d568c17d) SHA1(a2e318ed6ad1809c79f3f0853d75e0dd1a2f275c) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ //ROM_LOAD( "019cd.v1", 0x000000, 0xf5400, CRC(37ff1111) SHA1(ff964981cff279e32da3c583a95912d5ffb5ab22) ) // doesn't match to 019-m1.m1
+ ROM_LOAD( "019-v11.v11", 0x000000, 0x080000, CRC(0fb74872) SHA1(38c555926c77576d63472bc075210c42e9ce13a3) )
+ ROM_LOAD( "019-v12.v12", 0x080000, 0x080000, CRC(029faa57) SHA1(7bbaa87e38929ab1e32df5f6a2ec0fd5001e7cdb) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "019-v21.v21", 0x000000, 0x080000, CRC(2efd5ada) SHA1(8ba70f5f665d566824333075227d9bce1253b8d8) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "019-c1.c1", 0x000000, 0x080000, CRC(4ccdef18) SHA1(5011e30ec235d0b0a5a513a11d4275777e61acdb) )
+ ROM_LOAD16_BYTE( "019-c2.c2", 0x000001, 0x080000, CRC(d4dd0802) SHA1(82069752028c118d42384a95befde45844f0f247) )
+ROM_END
+
+
+ROM_START( lresortpx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "024px.p1", 0x000000, 0x080000, CRC(78c4e582) SHA1(5b802797ad0916a1ccac316a661120dc4dce0b74) )
+
+ NEO_SFIX_128K( "024-s1.s1", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) )
+
+ NEO_BIOS_AUDIO_128K( "024-m1.m1", CRC(cec19742) SHA1(ab6c6ba7737e68d2420a0617719c6d4c89039c45) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "024-v1.v1", 0x000000, 0x100000, CRC(efdfa063) SHA1(e4609ecbcc1c820758f229da5145f51285b50555) )
+ ROM_LOAD( "024-v2.v2", 0x100000, 0x100000, CRC(3c7997c0) SHA1(8cb7e8e69892b19d318978370dbc510d51b06a69) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "024-c1.c1", 0x000000, 0x100000, CRC(3617c2dc) SHA1(8de2643a618272f8aa1c705363edb007f4a5f5b7) )
+ ROM_LOAD16_BYTE( "024-c2.c2", 0x000001, 0x100000, CRC(3f0a7fd8) SHA1(d0c9c7a9dde9ce175fb243d33ec11fa719d0158c) )
+ ROM_LOAD16_BYTE( "024-c3.c3", 0x200000, 0x080000, CRC(e9f745f8) SHA1(bbe6141da28b0db7bf5cf321d69b7e613e2414d7) )
+ ROM_LOAD16_BYTE( "024-c4.c4", 0x200001, 0x080000, CRC(7382fefb) SHA1(e916dec5bb5462eb9ae9711f08c7388937abb980) )
+ROM_END
+
+
+ROM_START( maglordpx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "005px.p1", 0x000000, 0x080000, CRC(8d3e68d1) SHA1(9f1b5d78138feb9d372a7b7788cb2b52f3fb8c5a) )
+
+ NEO_SFIX_128K( "005-s1.s1", CRC(1c5369a2) SHA1(db0dba0a7dced6c9ca929c5abda491b05d84199c) )
+
+ NEO_BIOS_AUDIO_256K( "005-m1.m1", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "005-v11.v11", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) )
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "005-v21.v21", 0x000000, 0x080000, CRC(f94ab5b7) SHA1(2c16985102e3585e08622d8c54ac5c60425b9ff8) )
+ ROM_LOAD( "005-v22.v22", 0x080000, 0x080000, CRC(232cfd04) SHA1(61b66a9decbbd1f500a8c186615e7fd077c6861e) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "005-c1.c1", 0x000000, 0x80000, CRC(806aee34) SHA1(3c32a0edbbddb694495b510c13979c44b83de8bc) )
+ ROM_LOAD16_BYTE( "005-c2.c2", 0x000001, 0x80000, CRC(34aa9a86) SHA1(cec97e1ff7f91158040c629ba75742db82c4ae5e) )
+ ROM_LOAD16_BYTE( "005-c3.c3", 0x100000, 0x80000, CRC(c4c2b926) SHA1(478bfafca21f5a1338808251a06ab405e6a9e65f) )
+ ROM_LOAD16_BYTE( "005-c4.c4", 0x100001, 0x80000, CRC(9c46dcf4) SHA1(4c05f3dc25777a87578ce09a6cefb3a4cebf3266) )
+ ROM_LOAD16_BYTE( "005-c5.c5", 0x200000, 0x80000, CRC(69086dec) SHA1(7fa47f4a765948813ebf366168275dcc3c42e951) )
+ ROM_LOAD16_BYTE( "005-c6.c6", 0x200001, 0x80000, CRC(ab7ac142) SHA1(e6ad2843947d35d8e913d2666f87946c1ba7944f) )
+ROM_END
+
+
+ROM_START( matrima )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266a.p1", 0x000000, 0x100000, CRC(1e59c746) SHA1(9a6cdb6c56d5a80e373bb5ec476f1e7c3b3fbba9) )
+ ROM_LOAD16_WORD_SWAP( "266a.p2", 0x100000, 0x400000, CRC(b0132cef) SHA1(3780db1b8947a8371a46b67ca1a14a12bf97986b) )
+
+ NEO_SFIX_128K( "266a.s1", CRC(aff2a3be) SHA1(57aba048573eacf8fbdd228f04a7f30da64cebe5) )
+
+ NEO_BIOS_AUDIO_128K( "266d.m1", CRC(d2f3742d) SHA1(dd42f8a301f07e079fbc2bfd23e788baa03ca72d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266a.v1", 0x000000, 0x400000, CRC(352b0a07) SHA1(19f7cc12f3f6d0fda9c7449816c4c32367447897) )
+ ROM_LOAD( "266a.v2", 0x400000, 0x400000, CRC(945f8831) SHA1(6ac9bd41e0bb33601c82ebeb2aa5b1b8b91fada1) )
+ ROM_LOAD( "266a.v3", 0x800000, 0x400000, CRC(e8362fcc) SHA1(42d558fd80cabe22a1c09a1fa75741afbcf46b7c) )
+ ROM_LOAD( "266a.v4", 0xc00000, 0x400000, CRC(393c9a62) SHA1(0eaee0007557e59e64edcdbca229e6f776de9aef) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266a.c1", 0x0000000, 0x800000, CRC(f2240352) SHA1(3bb6763ebbc33db172d413276213eb3f2c7093c0) )
+ ROM_LOAD16_BYTE( "266a.c2", 0x0000001, 0x800000, CRC(338a9142) SHA1(eb589b4141c394ca78c2f5eb1b510cde982f3225) )
+ ROM_LOAD16_BYTE( "266a.c3", 0x1000000, 0x800000, CRC(6233412d) SHA1(b473cddc0a4343dffc4e35df68cd1bf9b163bd64) )
+ ROM_LOAD16_BYTE( "266a.c4", 0x1000001, 0x800000, CRC(304a2d9f) SHA1(29d2e50a64476640f4bff68227d6b1fdb45530c1) )
+ ROM_LOAD16_BYTE( "266a.c5", 0x2000000, 0x800000, CRC(18382650) SHA1(df10fb0b43f0dabdc57b55e923536b6c215678ff) )
+ ROM_LOAD16_BYTE( "266a.c6", 0x2000001, 0x800000, CRC(c5e7a840) SHA1(a1336c5c1284221d0b420bb44dd7c462d3e83ca7) )
+ ROM_LOAD16_BYTE( "266a.c7", 0x3000000, 0x800000, CRC(bfaa985c) SHA1(3ff7d56d8caaa1a34d0dcbc16bfc97df4afeab48) )
+ ROM_LOAD16_BYTE( "266a.c8", 0x3000001, 0x800000, CRC(efaf3f3c) SHA1(9374eb39fe30ba679878729992f136fdce1d92fc) )
+ROM_END
+
+ROM_START( matrimbh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266bh.p1", 0x000000, 0x100000, CRC(5f7b6942) SHA1(35fe5d59407b79725698fa62a870518ecc930b34) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "266-m1.m1", CRC(456c3e6c) SHA1(5a07d0186198a18d2dda1331093cf29b0b9b2984) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
+ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266-c1.c1", 0x0000000, 0x800000, CRC(505f4e30) SHA1(f22b6f76fc0cad963555dc89d072967c8dc8b79a) )
+ ROM_LOAD16_BYTE( "266-c2.c2", 0x0000001, 0x800000, CRC(3cb57482) SHA1(dab15bc24391f9a5173de76af48b612fb9636ccf) )
+ ROM_LOAD16_BYTE( "266-c3.c3", 0x1000000, 0x800000, CRC(f1cc6ad0) SHA1(66c1cccc0332ffd2d3064f06330c41f95ca09ced) )
+ ROM_LOAD16_BYTE( "266-c4.c4", 0x1000001, 0x800000, CRC(45b806b7) SHA1(c2bb866fded53d62fad0fc88d89d5e7d4cb1894f) )
+ ROM_LOAD16_BYTE( "266-c5.c5", 0x2000000, 0x800000, CRC(9a15dd6b) SHA1(194a6973a7a9e3847efe1bdbaeaeb16e74aff2dd) )
+ ROM_LOAD16_BYTE( "266-c6.c6", 0x2000001, 0x800000, CRC(281cb939) SHA1(bdb7766cfde581ccfaee2be7fe48445f360a2301) )
+ ROM_LOAD16_BYTE( "266-c7.c7", 0x3000000, 0x800000, CRC(4b71f780) SHA1(d5611a6f6b730db58613b48f2b0174661ccfb7bb) )
+ ROM_LOAD16_BYTE( "266-c8.c8", 0x3000001, 0x800000, CRC(29873d33) SHA1(dc77f129ed49b8d40d0d4241feef3f6c2f19a987) )
+ROM_END
+
+ROM_START( matrimd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266-p1.p1", 0x000000, 0x100000, CRC(5d4c2dc7) SHA1(8d723b0d28ec344eef26009b361a2b97d300dd51) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_128K( "266d.m1", CRC(d2f3742d) SHA1(dd42f8a301f07e079fbc2bfd23e788baa03ca72d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
+ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266d.c1", 0x0000000, 0x800000, CRC(0ab54c54) SHA1(31bca460462b8545b3e5264804987ab951e9b202) )
+ ROM_LOAD16_BYTE( "266d.c2", 0x0000001, 0x800000, CRC(b834dd89) SHA1(579470839a8d23b2d22cf727d2b43c6c3c113e1f) )
+ ROM_LOAD16_BYTE( "266d.c3", 0x1000000, 0x800000, CRC(f31d68d4) SHA1(a6b8aaf11d25f871b52e9626fe0e4ae0683c3c52) )
+ ROM_LOAD16_BYTE( "266d.c4", 0x1000001, 0x800000, CRC(58cfb6e9) SHA1(106875db996ec29b0254b34f9d935c761cde20c4) )
+ ROM_LOAD16_BYTE( "266d.c5", 0x2000000, 0x800000, CRC(f3c0e3fd) SHA1(3a2f14517617fb98a202ceec88d52891e1438c8e) )
+ ROM_LOAD16_BYTE( "266d.c6", 0x2000001, 0x800000, CRC(b53c8dcf) SHA1(9f4b0bac92262e8c1c1055a70f13c7c326367f73) )
+ ROM_LOAD16_BYTE( "266d.c7", 0x3000000, 0x800000, CRC(3c1fb02a) SHA1(43e170e6d48c01d8c323f9309f97e6038bab20d7) )
+ ROM_LOAD16_BYTE( "266d.c8", 0x3000001, 0x800000, CRC(5ee31f80) SHA1(3cdd8037f5004df92f4c19ba0746c8bccb4e2473) )
+ROM_END
+
+ROM_START( matrimdh ) /* Matrimelee - Hack by Dodowang - (Can choose Sissy, Jimmy, Jones, Lynn and Elias) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266dh.p1", 0x000000, 0x100000, CRC(70815d65) SHA1(d75a47e8dd02d19730a7a347849f92b6723f4ca7) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_128K( "266d.m1", CRC(d2f3742d) SHA1(dd42f8a301f07e079fbc2bfd23e788baa03ca72d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
+ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266-c1.c1", 0x0000000, 0x800000, CRC(505f4e30) SHA1(f22b6f76fc0cad963555dc89d072967c8dc8b79a) )
+ ROM_LOAD16_BYTE( "266-c2.c2", 0x0000001, 0x800000, CRC(3cb57482) SHA1(dab15bc24391f9a5173de76af48b612fb9636ccf) )
+ ROM_LOAD16_BYTE( "266-c3.c3", 0x1000000, 0x800000, CRC(f1cc6ad0) SHA1(66c1cccc0332ffd2d3064f06330c41f95ca09ced) )
+ ROM_LOAD16_BYTE( "266-c4.c4", 0x1000001, 0x800000, CRC(45b806b7) SHA1(c2bb866fded53d62fad0fc88d89d5e7d4cb1894f) )
+ ROM_LOAD16_BYTE( "266-c5.c5", 0x2000000, 0x800000, CRC(9a15dd6b) SHA1(194a6973a7a9e3847efe1bdbaeaeb16e74aff2dd) )
+ ROM_LOAD16_BYTE( "266-c6.c6", 0x2000001, 0x800000, CRC(281cb939) SHA1(bdb7766cfde581ccfaee2be7fe48445f360a2301) )
+ ROM_LOAD16_BYTE( "266-c7.c7", 0x3000000, 0x800000, CRC(4b71f780) SHA1(d5611a6f6b730db58613b48f2b0174661ccfb7bb) )
+ ROM_LOAD16_BYTE( "266-c8.c8", 0x3000001, 0x800000, CRC(29873d33) SHA1(dc77f129ed49b8d40d0d4241feef3f6c2f19a987) )
+ROM_END
+
+ROM_START( matrimeh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266eh.p1", 0x000000, 0x100000, CRC(e3b05e78) SHA1(8cbf3fe47c8afedb4ea7dcf5809acf7e5e858aba) )
+ ROM_LOAD16_WORD_SWAP( "266a.p2", 0x100000, 0x400000, CRC(b0132cef) SHA1(3780db1b8947a8371a46b67ca1a14a12bf97986b) )
+
+ NEO_SFIX( 0x40000, "266eh.s1", CRC(31c02ff8) SHA1(f4096d0b39a2fd682c0b3be435098ed8de990f8b) )
+
+ NEO_BIOS_AUDIO_128K( "266eh.m1", CRC(f692d84b) SHA1(a3737c574e779e0330916a2eea6ad5b3839f9538) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266eh-v1d.bin", 0x000000, 0x800000, CRC(328b2194) SHA1(6734da4f1e882a8524c04ff375567ed96a2dae5e) )
+ ROM_LOAD( "266eh-v2d.bin", 0x800000, 0x800000, CRC(2a13562d) SHA1(dc13f1af6afaf43f2ac20b7cf1c751a047450312) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266d.c1", 0x0000000, 0x800000, CRC(0ab54c54) SHA1(31bca460462b8545b3e5264804987ab951e9b202) )
+ ROM_LOAD16_BYTE( "266d.c2", 0x0000001, 0x800000, CRC(b834dd89) SHA1(579470839a8d23b2d22cf727d2b43c6c3c113e1f) )
+ ROM_LOAD16_BYTE( "266d.c3", 0x1000000, 0x800000, CRC(f31d68d4) SHA1(a6b8aaf11d25f871b52e9626fe0e4ae0683c3c52) )
+ ROM_LOAD16_BYTE( "266d.c4", 0x1000001, 0x800000, CRC(58cfb6e9) SHA1(106875db996ec29b0254b34f9d935c761cde20c4) )
+ ROM_LOAD16_BYTE( "266d.c5", 0x2000000, 0x800000, CRC(f3c0e3fd) SHA1(3a2f14517617fb98a202ceec88d52891e1438c8e) )
+ ROM_LOAD16_BYTE( "266d.c6", 0x2000001, 0x800000, CRC(b53c8dcf) SHA1(9f4b0bac92262e8c1c1055a70f13c7c326367f73) )
+ ROM_LOAD16_BYTE( "266d.c7", 0x3000000, 0x800000, CRC(3c1fb02a) SHA1(43e170e6d48c01d8c323f9309f97e6038bab20d7) )
+ ROM_LOAD16_BYTE( "266d.c8", 0x3000001, 0x800000, CRC(5ee31f80) SHA1(3cdd8037f5004df92f4c19ba0746c8bccb4e2473) )
+ROM_END
+
+ROM_START( matrimehc ) /* Matrimelee - Enhance by Creamymami - (Power always max - MVS protection removed) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266ehc.p1", 0x000000, 0x100000, CRC(090fbe25) SHA1(83088d3982501320937a3df66ba883582e84224e) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_128K( "266d.m1", CRC(d2f3742d) SHA1(dd42f8a301f07e079fbc2bfd23e788baa03ca72d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
+ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266-c1.c1", 0x0000000, 0x800000, CRC(505f4e30) SHA1(f22b6f76fc0cad963555dc89d072967c8dc8b79a) )
+ ROM_LOAD16_BYTE( "266-c2.c2", 0x0000001, 0x800000, CRC(3cb57482) SHA1(dab15bc24391f9a5173de76af48b612fb9636ccf) )
+ ROM_LOAD16_BYTE( "266-c3.c3", 0x1000000, 0x800000, CRC(f1cc6ad0) SHA1(66c1cccc0332ffd2d3064f06330c41f95ca09ced) )
+ ROM_LOAD16_BYTE( "266-c4.c4", 0x1000001, 0x800000, CRC(45b806b7) SHA1(c2bb866fded53d62fad0fc88d89d5e7d4cb1894f) )
+ ROM_LOAD16_BYTE( "266-c5.c5", 0x2000000, 0x800000, CRC(9a15dd6b) SHA1(194a6973a7a9e3847efe1bdbaeaeb16e74aff2dd) )
+ ROM_LOAD16_BYTE( "266-c6.c6", 0x2000001, 0x800000, CRC(281cb939) SHA1(bdb7766cfde581ccfaee2be7fe48445f360a2301) )
+ ROM_LOAD16_BYTE( "266-c7.c7", 0x3000000, 0x800000, CRC(4b71f780) SHA1(d5611a6f6b730db58613b48f2b0174661ccfb7bb) )
+ ROM_LOAD16_BYTE( "266-c8.c8", 0x3000001, 0x800000, CRC(29873d33) SHA1(dc77f129ed49b8d40d0d4241feef3f6c2f19a987) )
+ROM_END
+
+ROM_START( matrimnd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266nd.p1", 0x000000, 0x100000, CRC(d07b4032) SHA1(d9878ac13c8c374d496317359038b4a53c6f1872) )
+ ROM_LOAD16_WORD_SWAP( "266a.p2", 0x100000, 0x400000, CRC(b0132cef) SHA1(3780db1b8947a8371a46b67ca1a14a12bf97986b) )
+
+ NEO_SFIX_128K( "266a.s1", CRC(aff2a3be) SHA1(57aba048573eacf8fbdd228f04a7f30da64cebe5) )
+
+ NEO_BIOS_AUDIO_128K( "266eh.m1", CRC(f692d84b) SHA1(a3737c574e779e0330916a2eea6ad5b3839f9538) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "266eh-v1d.bin", 0x000000, 0x800000, CRC(328b2194) SHA1(6734da4f1e882a8524c04ff375567ed96a2dae5e) )
+ ROM_LOAD( "266eh-v2d.bin", 0x800000, 0x800000, CRC(2a13562d) SHA1(dc13f1af6afaf43f2ac20b7cf1c751a047450312) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "266d.c1", 0x0000000, 0x800000, CRC(0ab54c54) SHA1(31bca460462b8545b3e5264804987ab951e9b202) )
+ ROM_LOAD16_BYTE( "266d.c2", 0x0000001, 0x800000, CRC(b834dd89) SHA1(579470839a8d23b2d22cf727d2b43c6c3c113e1f) )
+ ROM_LOAD16_BYTE( "266d.c3", 0x1000000, 0x800000, CRC(f31d68d4) SHA1(a6b8aaf11d25f871b52e9626fe0e4ae0683c3c52) )
+ ROM_LOAD16_BYTE( "266d.c4", 0x1000001, 0x800000, CRC(58cfb6e9) SHA1(106875db996ec29b0254b34f9d935c761cde20c4) )
+ ROM_LOAD16_BYTE( "266d.c5", 0x2000000, 0x800000, CRC(f3c0e3fd) SHA1(3a2f14517617fb98a202ceec88d52891e1438c8e) )
+ ROM_LOAD16_BYTE( "266d.c6", 0x2000001, 0x800000, CRC(b53c8dcf) SHA1(9f4b0bac92262e8c1c1055a70f13c7c326367f73) )
+ ROM_LOAD16_BYTE( "266d.c7", 0x3000000, 0x800000, CRC(3c1fb02a) SHA1(43e170e6d48c01d8c323f9309f97e6038bab20d7) )
+ ROM_LOAD16_BYTE( "266d.c8", 0x3000001, 0x800000, CRC(5ee31f80) SHA1(3cdd8037f5004df92f4c19ba0746c8bccb4e2473) )
+ROM_END
+
+
+ROM_START( magdrop3fr )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "233fr.p1", 0x000000, 0x100000, CRC(ed90bb10) SHA1(eb22b362475ef294307357abf6c31a1ff2229f4a) )
+
+ NEO_SFIX_128K( "233-s1.s1", CRC(7399e68a) SHA1(b535ee56a0f0995f04674e676f6aa636ffad26aa) )
+
+ NEO_BIOS_AUDIO_128K( "233-m1.m1", CRC(5beaf34e) SHA1(2905d26945932cddc2dd3a1dc5abba8aa3baee14) )
+
+ ROM_REGION( 0x480000, "ymsnd", 0 )
+ ROM_LOAD( "233-v1.v1", 0x000000, 0x400000, CRC(58839298) SHA1(18cae7bba997c52780761cbf119c4e4b34397a61) )
+ ROM_LOAD( "233-v2.v2", 0x400000, 0x080000, CRC(d5e30df4) SHA1(bbbc0ff5b975471bd682f85976ac4a93f6d44f2e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "233fr.c1", 0x000000, 0x400000, CRC(b10223f2) SHA1(d99565751bdde47cae4c5bb5fac32a0b80bae2b9) )
+ ROM_LOAD16_BYTE( "233fr.c2", 0x000001, 0x400000, CRC(39c0f4b8) SHA1(a09c20c12d418e938ce84ea87d3d8bbb3007563c) )
+ ROM_LOAD16_BYTE( "233-c3.c3", 0x800000, 0x400000, CRC(0ba2c502) SHA1(8e0f1e553aef04758aaaa14d5115f0ecace4391e) )
+ ROM_LOAD16_BYTE( "233-c4.c4", 0x800001, 0x400000, CRC(70dbbd6d) SHA1(32dd6a04c6329e89f4878e7a56f0d172a6388eea) )
+ROM_END
+
+
+ROM_START( miexchngfr )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "231fr.p1", 0x000000, 0x80000, CRC(a107101b) SHA1(f1a165779a4a26d7c9067b649fdcb7da40f3aea6) )
+
+ NEO_SFIX_128K( "231-s1.s1", CRC(fe0c0c53) SHA1(54d56d4463db193e504658f4f6f4997a62ae3d95) )
+
+ NEO_BIOS_AUDIO_128K( "231-m1.m1", CRC(de41301b) SHA1(59ce3836ac8f064d56a446c9374f05bcb40fcfd8) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "231-v1.v1", 0x000000, 0x400000, CRC(113fb898) SHA1(9168ba90c4aa969f69eb11ba3f4d76592d81e05a) )
+
+ ROM_REGION( 0x500000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "231fr.c1", 0x000000, 0x200000, CRC(0764d51c) SHA1(06a63359e5859d30ae5a8e2beed5a7615563298a) )
+ ROM_LOAD16_BYTE( "231fr.c2", 0x000001, 0x200000, CRC(6a2acd38) SHA1(bc35e7f9898ed6d7fd9ce43d4a4be91a81d0bd04) )
+ ROM_LOAD16_BYTE( "231fr.c3", 0x400000, 0x080000, CRC(14524eb5) SHA1(e090b99a1ee2cca4a7f7d5262e764d1cab6bada2) )
+ ROM_LOAD16_BYTE( "231fr.c4", 0x400001, 0x080000, CRC(1694f171) SHA1(a6af5d3f1e0b3f73da275e04d4434c6c9c7b9208) )
+ROM_END
+
+
+ROM_START( mutnatex )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "014ex.p1", 0x000000, 0x080000, CRC(2fe45544) SHA1(e55445f5a31c11bc11d74d040f8c4e605a7d4d36) )
+
+ NEO_SFIX_128K( "014-s1.s1", CRC(99419733) SHA1(b2524af8704941acc72282aa1d62fd4c93e3e822) )
+
+ NEO_BIOS_AUDIO_128K( "014-m1.m1", CRC(b6683092) SHA1(623ec7ec2915fb077bf65b4a16c815e071c25259) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "014-v1.v1", 0x000000, 0x100000, CRC(25419296) SHA1(c9fc04987c4e0875d276e1a0fb671740b6f548ad) )
+ ROM_LOAD( "014-v2.v2", 0x100000, 0x100000, CRC(0de53d5e) SHA1(467f6040da3dfb1974785e95e14c3f608a93720a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "014-c1.c1", 0x000000, 0x100000, CRC(5e4381bf) SHA1(d429a5e09dafd2fb99495658b3652eecbf58f91b) )
+ ROM_LOAD16_BYTE( "014-c2.c2", 0x000001, 0x100000, CRC(69ba4e18) SHA1(b3369190c47771a790c7adffa958ff55d90e758b) )
+ ROM_LOAD16_BYTE( "014-c3.c3", 0x200000, 0x100000, CRC(890327d5) SHA1(47f97bf120a8480758e1f3bb8982be4c5325c036) )
+ ROM_LOAD16_BYTE( "014-c4.c4", 0x200001, 0x100000, CRC(e4002651) SHA1(17e53a5f4708866a120415bf24f3b89621ad0bcc) )
+ROM_END
+
+
+ROM_START( nam1975g ) // sound effects only, no music no voices
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "001g.p1", 0x000000, 0x100000, CRC(b8bf8b43) SHA1(b5de430d9e13ce82b761d566916329752e84424a) )
+
+ NEO_SFIX_128K( "001-s1.s1", CRC(7988ba51) SHA1(bc2f661f381b06b34ac2fa215dd5689d3bf84832) )
+
+ NEO_BIOS_AUDIO_64K( "001g.m1", CRC(afd04078) SHA1(a75833cd26442297ee35de302c186aa193fdb0ed) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 ) // weapons fire
+ ROM_LOAD( "001g.v1", 0x000000, 0x100000, CRC(dd5b3adc) SHA1(09b75fa1b2dc7704952cd371e440ea8771068633) )
+
+ ROM_REGION( 0x180000, "ymsnd.deltat", 0 ) // voices
+ ROM_LOAD( "001-v21.v21", 0x000000, 0x080000, CRC(55e670b3) SHA1(a047049646a90b6db2d1882264df9256aa5a85e5) )
+ ROM_LOAD( "001-v22.v22", 0x080000, 0x080000, CRC(ab0d8368) SHA1(404114db9f3295929080b87a5d0106b40da6223a) )
+ ROM_LOAD( "001-v23.v23", 0x100000, 0x080000, CRC(df468e28) SHA1(4e5d4a709a4737a87bba4083aeb788f657862f1a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "001-c1.c1", 0x000000, 0x80000, CRC(32ea98e1) SHA1(c2fb3fb7dd14523a4b4b7fbdb81f44cb4cc48239) )
+ ROM_LOAD16_BYTE( "001-c2.c2", 0x000001, 0x80000, CRC(cbc4064c) SHA1(224c970fd060d841fd430c946ef609bb57b6d78c) )
+ ROM_LOAD16_BYTE( "001-c3.c3", 0x100000, 0x80000, CRC(0151054c) SHA1(f24fb501a7845f64833f4e5a461bcf9dc3262557) )
+ ROM_LOAD16_BYTE( "001-c4.c4", 0x100001, 0x80000, CRC(0a32570d) SHA1(f108446ec7844fde25f7a4ab454f76d384bf5e52) )
+ ROM_LOAD16_BYTE( "001-c5.c5", 0x200000, 0x80000, CRC(90b74cc2) SHA1(89898da36db259180e5261ed45eafc99ca13e504) )
+ ROM_LOAD16_BYTE( "001-c6.c6", 0x200001, 0x80000, CRC(e62bed58) SHA1(d05b2903b212a51ee131e52c761b714cb787683e) )
+ROM_END
+
+ROM_START( nam1975h ) // infinite lives
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "001h.p1", 0x000000, 0x080000, CRC(908a4fd0) SHA1(37ffc705ee772a1a25e77ff8696750a78dacc7f7) )
+
+ NEO_SFIX_64K( "001h.s1", CRC(8ded55a5) SHA1(27c8ffac16fbcc19c843d1b5b47ae8d8ef83d44a) )
+
+ NEO_BIOS_AUDIO_64K( "001h.m1", CRC(cd088502) SHA1(939f745cd576905f326e6246a2eed78e9fa88178) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "001-v11.v11", 0x000000, 0x080000, CRC(a7c3d5e5) SHA1(e3efc86940f91c53b7724c4566cfc21ea1a7a465) )
+
+ ROM_REGION( 0x180000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "001-v21.v21", 0x000000, 0x080000, CRC(55e670b3) SHA1(a047049646a90b6db2d1882264df9256aa5a85e5) )
+ ROM_LOAD( "001-v22.v22", 0x080000, 0x080000, CRC(ab0d8368) SHA1(404114db9f3295929080b87a5d0106b40da6223a) )
+ ROM_LOAD( "001-v23.v23", 0x100000, 0x080000, CRC(df468e28) SHA1(4e5d4a709a4737a87bba4083aeb788f657862f1a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "001-c1.c1", 0x000000, 0x80000, CRC(32ea98e1) SHA1(c2fb3fb7dd14523a4b4b7fbdb81f44cb4cc48239) )
+ ROM_LOAD16_BYTE( "001-c2.c2", 0x000001, 0x80000, CRC(cbc4064c) SHA1(224c970fd060d841fd430c946ef609bb57b6d78c) )
+ ROM_LOAD16_BYTE( "001-c3.c3", 0x100000, 0x80000, CRC(0151054c) SHA1(f24fb501a7845f64833f4e5a461bcf9dc3262557) )
+ ROM_LOAD16_BYTE( "001-c4.c4", 0x100001, 0x80000, CRC(0a32570d) SHA1(f108446ec7844fde25f7a4ab454f76d384bf5e52) )
+ ROM_LOAD16_BYTE( "001-c5.c5", 0x200000, 0x80000, CRC(90b74cc2) SHA1(89898da36db259180e5261ed45eafc99ca13e504) )
+ ROM_LOAD16_BYTE( "001-c6.c6", 0x200001, 0x80000, CRC(e62bed58) SHA1(d05b2903b212a51ee131e52c761b714cb787683e) )
+ROM_END
+
+
+ROM_START( ncombatpk )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "009px.p1", 0x000000, 0x080000, CRC(4e040e04) SHA1(8a9281c745810e6977ff4d304e6fb3f8441fe4a4) )
+
+ NEO_SFIX_128K( "009-s1.s1", CRC(d49afee8) SHA1(77615f12edf08ae8f1353f7a056a8f3a50d3ebdc) )
+
+ NEO_BIOS_AUDIO_128K( "009-m1.m1", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "009-v11.v11", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) )
+ ROM_LOAD( "009-v12.v12", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) )
+ ROM_LOAD( "009-v13.v13", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "009-v21.v21", 0x000000, 0x080000, CRC(365f9011) SHA1(aebd292214ab280b05ee9e759b7e9a681a099c4a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "009-c1.c1", 0x000000, 0x80000, CRC(33cc838e) SHA1(c445c891c0ba4190aa0b472786150620e76df5b4) )
+ ROM_LOAD16_BYTE( "009-c2.c2", 0x000001, 0x80000, CRC(26877feb) SHA1(8f48097fb8e4757f50b6d86219122fbf4b6f87ef) )
+ ROM_LOAD16_BYTE( "009-c3.c3", 0x100000, 0x80000, CRC(3b60a05d) SHA1(0a165a17af4834876fcd634599cd2208adc9248f) )
+ ROM_LOAD16_BYTE( "009-c4.c4", 0x100001, 0x80000, CRC(39c2d039) SHA1(8ca6c3f977c43c7abba2a00a0e70f02e2a49f5f2) )
+ ROM_LOAD16_BYTE( "009-c5.c5", 0x200000, 0x80000, CRC(67a4344e) SHA1(b325f152c7b2388fc92c5826e1dc99094b9ea749) )
+ ROM_LOAD16_BYTE( "009-c6.c6", 0x200001, 0x80000, CRC(2eca8b19) SHA1(16764ef10e404325ba0a1a2ad3a4c0af287be21f) )
+ROM_END
+
+
+ROM_START( ncommandsp )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "050sp.p1", 0x000000, 0x100000, CRC(76d37e41) SHA1(b5f6a8861a197be6f20ddbde28cc00f1e9176a2c) )
+
+ NEO_SFIX_128K( "050-s1.s1", CRC(db8f9c8e) SHA1(11cb82cf3c4d0fc2da5df0c26410a64808093610) )
+
+ NEO_BIOS_AUDIO_128K( "050-m1.m1", CRC(6fcf07d3) SHA1(e9ecff4bfec1f5964bf06645f75d80d611b6231c) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "050-v1.v1", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) )
+ ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "050-c1.c1", 0x000000, 0x100000, CRC(87421a0a) SHA1(1d8faaf03778f7c5b062554d7333bbd3f0ca12ad) )
+ ROM_LOAD16_BYTE( "050-c2.c2", 0x000001, 0x100000, CRC(c4cf5548) SHA1(ef9eca5aeff9dda2209a050c2af00ed8979ae2bc) )
+ ROM_LOAD16_BYTE( "050-c3.c3", 0x200000, 0x100000, CRC(03422c1e) SHA1(920e5015aebe2ffc5ce43a52365c7f0a705f3b9e) )
+ ROM_LOAD16_BYTE( "050-c4.c4", 0x200001, 0x100000, CRC(0845eadb) SHA1(3c71a02bf0e07a5381846bb6d75bbe7dd546adea) )
+ROM_END
+
+
+ROM_START( neocup98k )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "244-p1.p1", 0x100000, 0x100000, CRC(f8fdb7a5) SHA1(f34ee5d1c24e70427d05ef488f46906dbd9f9950) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "244k.s1", CRC(becb9e7a) SHA1(b40e0ee79ab234ab2162d735d66aafa63f9d7477) )
+
+ NEO_BIOS_AUDIO_128K( "244-m1.m1", CRC(a701b276) SHA1(055550ebc650835bcf8ea4457b2c91bd73e21281) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "244-v1.v1", 0x000000, 0x400000, CRC(79def46d) SHA1(63414235de2e177654508f1c840040424f8993e6) )
+ ROM_LOAD( "244-v2.v2", 0x400000, 0x200000, CRC(b231902f) SHA1(9209772e947a2c7ac31b49dd613bf2eab0cb3358) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "244k.c1", 0x000000, 0x800000, CRC(9067dfda) SHA1(034c0e21ece55df30357d7abfb7cb05994e9b131) )
+ ROM_LOAD16_BYTE( "244k.c2", 0x000001, 0x800000, CRC(54e86379) SHA1(e76f27b5cf2ab7ed00a8abfe2e2397394c51dac5) )
+ROM_END
+
+
+ROM_START( ninjamasasp )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217asp.p1", 0x000000, 0x100000, CRC(c92bd6a4) SHA1(2176c2a0a5a0982d0077f68203d67e26136e3a7b) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamaschl )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217chl.p1", 0x000000, 0x100000, CRC(3ca17556) SHA1(505878e23d8ff44bfce35fdce261e73eaaa99e37) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamaseh ) /* Ninja Master's - Enhance by Ydmis - (Can choose Ranmaru and Nobunaga) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217eh.p1", 0x000000, 0x100000, CRC(2cb6c199) SHA1(a7ad5bd0e827e8cece9d3447045a63fddee94385) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamasehc ) /* Ninja Master's - Enhance by Creamymami - (Power hack) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217ehc.p1", 0x000000, 0x100000, CRC(8b88e675) SHA1(d16dad0d05282b577fabf3bd187ac3b8d4ddfa57) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamasehyc ) /* Ninja Master's - Enhance by Creamymami and Ydmis - (Can choose Ranmaru and Nobunaga - power hack) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217ehyc.p1", 0x000000, 0x100000, CRC(99a9ca85) SHA1(25d3995f9669072b17718169693dc5c4fed0c9f2) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamasha )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217ha.p1", 0x000000, 0x100000, CRC(45332f39) SHA1(6689c3de46d199aa32814f773d04ab558b30e98d) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+ROM_START( ninjamashb )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217hb.p1", 0x000000, 0x100000, CRC(a95d896b) SHA1(f4757bd9d198c77e31f21c955f69ea175e9d779f) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+
+ROM_START( nitdd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260-p1.p1", 0x000000, 0x080000, CRC(61361082) SHA1(441f3f41c1aa752c0e0a9a0b1d92711d9e636b85) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260d.c1", 0x0000000, 0x800000, CRC(f3ff4953) SHA1(0e54548387f3056088e89086a30da05935d08b24) )
+ ROM_LOAD16_BYTE( "260d.c2", 0x0000001, 0x800000, CRC(f1e49faa) SHA1(2a771e318423addd9daae3a9af200de2c70f4021) )
+ROM_END
+
+ROM_START( nitdfr ) /* Nightmare in the Dark - Translation Hack by NEO-ARC - (French translation) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260fr.p1", 0x000000, 0x080000, CRC(aa52c3cf) SHA1(f098aa068ee365fa7af9c638bc09eb82396e1749) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260fr.c1", 0x0000000, 0x800000, CRC(7c469419) SHA1(06a45016c9493b85fbb8d9ebd33409a0d933ed22) )
+ ROM_LOAD16_BYTE( "260fr.c2", 0x0000001, 0x800000, CRC(74ada44f) SHA1(77d051a3522d2c658ef4790ddeac0271e9490fd2) )
+ROM_END
+
+ROM_START( nitdfro ) /* Nightmare in the Dark - Translation Hack Older? */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260fro.p1", 0x000000, 0x080000, CRC(b294c6ce) SHA1(77f641c05a645e8d57014540ef1b7f52c4a8849b) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260fro.c1", 0x0000000, 0x800000, CRC(14c5a25f) SHA1(8b29f7e6920eb1b4a7dc42a063e4c8e6ec9a5700) )
+ ROM_LOAD16_BYTE( "260fro.c2", 0x0000001, 0x800000, CRC(6630c255) SHA1(c8a77a3d6e17e1ed64eb6b1e85172567e7e3e71c) )
+ROM_END
+
+ROM_START( nitdfro1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260fro.p1", 0x000000, 0x080000, CRC(b294c6ce) SHA1(77f641c05a645e8d57014540ef1b7f52c4a8849b) )
+
+ NEO_SFIX_128K( "260fro1.s1", CRC(dd3bf47c) SHA1(881271caee6508b8be51bf1b59c8f1e58e08e551) )
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260fro.c1", 0x0000000, 0x800000, CRC(14c5a25f) SHA1(8b29f7e6920eb1b4a7dc42a063e4c8e6ec9a5700) )
+ ROM_LOAD16_BYTE( "260fro.c2", 0x0000001, 0x800000, CRC(6630c255) SHA1(c8a77a3d6e17e1ed64eb6b1e85172567e7e3e71c) )
+ROM_END
+
+ROM_START( nitdpx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260px.p1", 0x000000, 0x080000, CRC(4198ce09) SHA1(13c8c54b8533955e5b07ca0775346e14d4a10b35) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) )
+ ROM_LOAD16_BYTE( "260-c2.c2", 0x0000001, 0x800000, CRC(d2b04b0d) SHA1(ce4322e6cfacb627fe997efe81018861e21d3c27) )
+ROM_END
+
+ROM_START( nitdsp ) /* Nightmare in the Dark - Translation Hack by UNKNOWN - (Spanish language hack) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260sp.p1", 0x000000, 0x080000, CRC(0ab6d623) SHA1(c508e92d0ed3f600dffe41d2f815d16bb377dace) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) )
+ ROM_LOAD16_BYTE( "260-c2.c2", 0x0000001, 0x800000, CRC(d2b04b0d) SHA1(ce4322e6cfacb627fe997efe81018861e21d3c27) )
+ROM_END
+
+ROM_START( nitdsp1 ) /* Nightmare in the Dark - Translation Hack by UNKNOWN - (Spanish language hack) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260sp1.p1", 0x000000, 0x080000, CRC(42b69e41) SHA1(cb814190d96ef67096ee9f4f305611d870a76e93) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260sp1.c1", 0x0000000, 0x800000, CRC(3f7fbd0c) SHA1(2e6cedcb099ae8f5bbdb9d989ca3918d7fb0504f) )
+ ROM_LOAD16_BYTE( "260sp1.c2", 0x0000001, 0x800000, CRC(b5ddbb97) SHA1(b44dee65bbb5b2c6d7c6d4990762b26deaf3c696) )
+ROM_END
+
+ROM_START( nitdsp2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260sp1.p1", 0x000000, 0x080000, CRC(42b69e41) SHA1(cb814190d96ef67096ee9f4f305611d870a76e93) )
+
+ NEO_SFIX_128K( "260fro1.s1", CRC(dd3bf47c) SHA1(881271caee6508b8be51bf1b59c8f1e58e08e551) )
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "260sp1.c1", 0x0000000, 0x800000, CRC(3f7fbd0c) SHA1(2e6cedcb099ae8f5bbdb9d989ca3918d7fb0504f) )
+ ROM_LOAD16_BYTE( "260sp1.c2", 0x0000001, 0x800000, CRC(b5ddbb97) SHA1(b44dee65bbb5b2c6d7c6d4990762b26deaf3c696) )
+ROM_END
+
+
+ROM_START( pbobblenba )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "083b.p1", 0x000000, 0x080000, CRC(ac1e9ef3) SHA1(a2b125ee70869667431ab125bc29e768500802ad) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1(5e5bbcaeb82bed2ee17df08f005ca20ad1030723) )
+
+ ROM_REGION( 0x380000, "ymsnd", 0 )
+ ROM_LOAD( "083b.v1", 0x200000, 0x080000, CRC(f8872aed) SHA1(73685980253093b4f148cb38b6a47476fb2a61aa) )
+ ROM_LOAD( "083b.v2", 0x280000, 0x080000, CRC(5c8cf5fe) SHA1(97d74466ac48708d7f4004524288dd2f32f17793) )
+ ROM_LOAD( "d96-05.v4", 0x300000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "d96-02.c5", 0x000000, 0x80000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) )
+ ROM_LOAD16_BYTE( "d96-03.c6", 0x000001, 0x80000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) )
+ROM_END
+
+ROM_START( pbobblencd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "083cd.p1", 0x000000, 0x040000, CRC(b1095646) SHA1(20fa2bc724df4b5234ff0ccf3074e545f28d1bbd) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_64K( "083cd.m1", CRC(c505fcdb) SHA1(2b3e10e1475c7c1425b382be30c765e455c5bbc6) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "083ch.v3", 0x000000, 0x100000, CRC(30ce579e) SHA1(635f7ab2178981ba38cc0080f4f97e954e552440) )
+ ROM_LOAD( "d96-05.v4", 0x100000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "d96-02.c5", 0x000000, 0x80000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) )
+ ROM_LOAD16_BYTE( "d96-03.c6", 0x000001, 0x80000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) )
+ROM_END
+
+ROM_START( pbcrazyb1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "462b1.p1", 0x000000, 0x038db2, CRC(008dd79a) SHA1(1c05d442fb19c3e60257592874737585c9b58b31) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_64K( "462.m1", CRC(5e378316) SHA1(fa9a904583e00614762ad91bab83e86d52237777) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "083ch.v3", 0x000000, 0x100000, CRC(30ce579e) SHA1(635f7ab2178981ba38cc0080f4f97e954e552440) )
+ ROM_LOAD( "d96-05.v4", 0x100000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "462b1.c1", 0x000000, 0x68000, CRC(58ac4d8e) SHA1(4a6a8b914a2f2918675ee2ad358d5ccaa867915a) )
+ ROM_LOAD16_BYTE( "462b1.c2", 0x000001, 0x68000, CRC(bc37b7fb) SHA1(d24012bca3dd77150998ae1a69d544d29e607eee) )
+ROM_END
+
+ROM_START( pbcrazyb2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "462b2.p1", 0x000000, 0x038db2, CRC(6a3227ff) SHA1(45e9006edcb44c208ee1e8221f47158d6a749667) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_64K( "462.m1", CRC(5e378316) SHA1(fa9a904583e00614762ad91bab83e86d52237777) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "083ch.v3", 0x000000, 0x100000, CRC(30ce579e) SHA1(635f7ab2178981ba38cc0080f4f97e954e552440) )
+ ROM_LOAD( "d96-05.v4", 0x100000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "462b2.c1", 0x000000, 0x68000, CRC(b50a9e06) SHA1(d9f7aaddc6e48518a4ad332e718847001b5e3330) )
+ ROM_LOAD16_BYTE( "462b2.c2", 0x000001, 0x68000, CRC(427422db) SHA1(e7fed9ae3ce9c61dd85a0adafc51af727acba37d) )
+ROM_END
+
+ROM_START( pbobblendx )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "083dx.p1", 0x000000, 0x040000, CRC(5ed56e87) SHA1(b927c9fd907f90e1b5556c96f22b5245b23f07a6) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_64K( "083dx.m1", CRC(129e6054) SHA1(4edd18c44759e7a140705f1544413c649131c551) )
+
+ ROM_REGION( 0x380000, "ymsnd", 0 )
+ ROM_LOAD( "d96-01.v3", 0x200000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
+ ROM_LOAD( "d96-05.v4", 0x300000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "d96-02.c5", 0x000000, 0x80000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) )
+ ROM_LOAD16_BYTE( "d96-03.c6", 0x000001, 0x80000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) )
+ROM_END
+
+
+ROM_START( pnyaad ) /* Decrypted C ROMs Version - Encrypted Sound */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "267-p1.p1", 0x000000, 0x100000, CRC(112fe2c0) SHA1(01420e051f0bdbd4f68ce306a3738161b96f8ba8) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "267-m1.m1", CRC(c7853ccd) SHA1(1b7a4c5093cf0fe3861ce44fd1d3b30c71ad0abe) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "267-v1.v1", 0x000000, 0x400000, CRC(e2e8e917) SHA1(7f412d55aebff3d38a225a88c632916295ab0584) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "267d.c1", 0x0000000, 0x800000, CRC(75fa4f27) SHA1(05f39dc5bedfecff67a9e5bd0bb8d09d93168f58) )
+ ROM_LOAD16_BYTE( "267d.c2", 0x0000001, 0x800000, CRC(02345689) SHA1(d40c425e73fd8dc0b0f66bf72a79f66b3bf390e1) )
+ROM_END
+
+
+ROM_START( preisle2d )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "255-p1.p1", 0x000000, 0x100000, CRC(dfa3c0f3) SHA1(793c6a46f3a794536dc0327a3f3fad20e25ab661) )
+ ROM_LOAD16_WORD_SWAP( "255-p2.sp2", 0x100000, 0x400000, CRC(42050b80) SHA1(0981a8295d43b264c2b95e5d7568bdda4e64c976) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "255-m1.m1", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) )
+
+ ROM_REGION( 0x0600000, "ymsnd", 0 )
+ ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) )
+ ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "255d.c1", 0x0000000, 0x800000, CRC(50fd785e) SHA1(97e03925f3060df4cfa576b6d2c2000952990530) )
+ ROM_LOAD16_BYTE( "255d.c2", 0x0000001, 0x800000, CRC(ab913f1e) SHA1(e3413d40dc4a2240ff0302eb9eff4cc64895b6ef) )
+ ROM_LOAD16_BYTE( "255d.c3", 0x1000000, 0x800000, CRC(bc0ee75c) SHA1(50c01b97d5457c2c1b8df8c0c7eda69384dea78b) )
+ ROM_LOAD16_BYTE( "255d.c4", 0x1000001, 0x800000, CRC(29908823) SHA1(2a40263f3866c06eecc209faeea7ced6641ed918) )
+ ROM_LOAD16_BYTE( "255d.c5", 0x2000000, 0x800000, CRC(83c56bca) SHA1(54bec4cce628bef3b87bbd6c0339494232a9516b) )
+ ROM_LOAD16_BYTE( "255d.c6", 0x2000001, 0x800000, CRC(59e0e805) SHA1(0d9c9b52bb0672fe70ffbb2780a9449f6a7f0984) )
+ROM_END
+
+ROM_START( preisle2px )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "255px.p1", 0x000000, 0x100000, CRC(69a69841) SHA1(01b3dbc2ae51993c4db84f62bbe2f3cf9fc90d57) )
+ ROM_LOAD16_WORD_SWAP( "255-p2.sp2", 0x100000, 0x400000, CRC(42050b80) SHA1(0981a8295d43b264c2b95e5d7568bdda4e64c976) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "255-m1.m1", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) )
+
+ ROM_REGION( 0x0600000, "ymsnd", 0 )
+ ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) )
+ ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "255d.c1", 0x0000000, 0x800000, CRC(50fd785e) SHA1(97e03925f3060df4cfa576b6d2c2000952990530) )
+ ROM_LOAD16_BYTE( "255d.c2", 0x0000001, 0x800000, CRC(ab913f1e) SHA1(e3413d40dc4a2240ff0302eb9eff4cc64895b6ef) )
+ ROM_LOAD16_BYTE( "255d.c3", 0x1000000, 0x800000, CRC(bc0ee75c) SHA1(50c01b97d5457c2c1b8df8c0c7eda69384dea78b) )
+ ROM_LOAD16_BYTE( "255d.c4", 0x1000001, 0x800000, CRC(29908823) SHA1(2a40263f3866c06eecc209faeea7ced6641ed918) )
+ ROM_LOAD16_BYTE( "255d.c5", 0x2000000, 0x800000, CRC(83c56bca) SHA1(54bec4cce628bef3b87bbd6c0339494232a9516b) )
+ ROM_LOAD16_BYTE( "255d.c6", 0x2000001, 0x800000, CRC(59e0e805) SHA1(0d9c9b52bb0672fe70ffbb2780a9449f6a7f0984) )
+ROM_END
+
+
+ROM_START( pspikes2cd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "068cd.p1", 0x000000, 0x100000, CRC(3920534c) SHA1(24e12b41b79145e4f3defaba7f77d1a57ffb8927) )
+
+ //NEO_SFIX_128K( "068-sg1.s1", CRC(18082299) SHA1(efe93fabe6a76a5dc8cf12f255e571480afb40a0) )
+ NEO_SFIX_128K( "068cd.s1", CRC(764ac7aa) SHA1(cc40ad276e63084ebf3c3ee224083762a47c3cf8) ) // used in many builds for fr2cd/fr2ch
+
+ NEO_BIOS_AUDIO_64K( "068cd.m1", CRC(cddc55db) SHA1(6a80c26490bbdeaddf608522c69f4cd16ba74533) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "068cd.v1", 0x000000, 0x100000, CRC(850ee5a0) SHA1(600a75da9b0f657df75e2d9300cfa08116a8be85) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "068cd.c1", 0x000000, 0x100000, CRC(d380883b) SHA1(0625cddb4e2fcbd3c764732a197d963299bd7d99) )
+ ROM_LOAD16_BYTE( "068cd.c2", 0x000001, 0x100000, CRC(9a5ad954) SHA1(4266760d2b6f2b7ef6e593c679b1639ec377e56b) )
+ ROM_LOAD16_BYTE( "068cd.c3", 0x200000, 0x100000, CRC(13d8a7f0) SHA1(5e7c35afe1984c67ed03f33ce22e7546861d63e6) )
+ ROM_LOAD16_BYTE( "068cd.c4", 0x200001, 0x100000, CRC(ca5af0be) SHA1(be47412b97413d3d36d4cb1acfc9fa252eb7dd70) )
+ROM_END
+
+
+ROM_START( ragnagrdbe )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "218be.p1", 0x100000, 0x100000, CRC(370a3b64) SHA1(85ddeb5ec0801c66268824236ed9ce2df51e927b) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "218-s1.s1", CRC(7d402f9a) SHA1(59ec29d03e62e7a8bef689a124a9164f43b2ace1) )
+
+ NEO_BIOS_AUDIO_128K( "218-m1.m1", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
+ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) )
+ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) )
+ ROM_LOAD16_BYTE( "218-c3.c3", 0x0800000, 0x400000, CRC(833c163a) SHA1(b7e5356bbd9efab67fedb5bc671ba8bbd661fe0f) )
+ ROM_LOAD16_BYTE( "218-c4.c4", 0x0800001, 0x400000, CRC(c1a30f69) SHA1(f87ddda4695abcd14f5c2d4b7d41f72ad5b064cc) )
+ ROM_LOAD16_BYTE( "218-c5.c5", 0x1000000, 0x400000, CRC(6b6de0ff) SHA1(1abb24cb407258235f4a572cf101d0774823040b) )
+ ROM_LOAD16_BYTE( "218-c6.c6", 0x1000001, 0x400000, CRC(94beefcf) SHA1(d2ff0bac325c9c823dba68bd4f281b3b9f8f68e7) )
+ ROM_LOAD16_BYTE( "218-c7.c7", 0x1800000, 0x400000, CRC(de6f9b28) SHA1(455adb6bb986af8a00d7f32b7f4f3715fc3007f6) )
+ ROM_LOAD16_BYTE( "218-c8.c8", 0x1800001, 0x400000, CRC(d9b311f6) SHA1(ba61a7ab3f08bb7348ad6cd01e5d29ca5ee75074) )
+ROM_END
+
+ROM_START( ragnagrdbs )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "218bs.p1", 0x100000, 0x100000, CRC(befbb496) SHA1(7970d7fd151098be4625a96d8b21f66fd3d0aecf) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "218-s1.s1", CRC(7d402f9a) SHA1(59ec29d03e62e7a8bef689a124a9164f43b2ace1) )
+
+ NEO_BIOS_AUDIO_128K( "218-m1.m1", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
+ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) )
+ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) )
+ ROM_LOAD16_BYTE( "218-c3.c3", 0x0800000, 0x400000, CRC(833c163a) SHA1(b7e5356bbd9efab67fedb5bc671ba8bbd661fe0f) )
+ ROM_LOAD16_BYTE( "218-c4.c4", 0x0800001, 0x400000, CRC(c1a30f69) SHA1(f87ddda4695abcd14f5c2d4b7d41f72ad5b064cc) )
+ ROM_LOAD16_BYTE( "218-c5.c5", 0x1000000, 0x400000, CRC(6b6de0ff) SHA1(1abb24cb407258235f4a572cf101d0774823040b) )
+ ROM_LOAD16_BYTE( "218-c6.c6", 0x1000001, 0x400000, CRC(94beefcf) SHA1(d2ff0bac325c9c823dba68bd4f281b3b9f8f68e7) )
+ ROM_LOAD16_BYTE( "218-c7.c7", 0x1800000, 0x400000, CRC(de6f9b28) SHA1(455adb6bb986af8a00d7f32b7f4f3715fc3007f6) )
+ ROM_LOAD16_BYTE( "218-c8.c8", 0x1800001, 0x400000, CRC(d9b311f6) SHA1(ba61a7ab3f08bb7348ad6cd01e5d29ca5ee75074) )
+ROM_END
+
+ROM_START( ragnagrdeh ) /* Operation Ragnagard - Enhance by Ydmis - (Can choose Lucifer, Eelis and Behemoth) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "218eh.p1", 0x100000, 0x100000, CRC(fb1e20df) SHA1(f8436078fe3dd495b6f513d9d42f6a42ed264d41) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "218-s1.s1", CRC(7d402f9a) SHA1(59ec29d03e62e7a8bef689a124a9164f43b2ace1) )
+
+ NEO_BIOS_AUDIO_128K( "218-m1.m1", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
+ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) )
+ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) )
+ ROM_LOAD16_BYTE( "218-c3.c3", 0x0800000, 0x400000, CRC(833c163a) SHA1(b7e5356bbd9efab67fedb5bc671ba8bbd661fe0f) )
+ ROM_LOAD16_BYTE( "218-c4.c4", 0x0800001, 0x400000, CRC(c1a30f69) SHA1(f87ddda4695abcd14f5c2d4b7d41f72ad5b064cc) )
+ ROM_LOAD16_BYTE( "218-c5.c5", 0x1000000, 0x400000, CRC(6b6de0ff) SHA1(1abb24cb407258235f4a572cf101d0774823040b) )
+ ROM_LOAD16_BYTE( "218-c6.c6", 0x1000001, 0x400000, CRC(94beefcf) SHA1(d2ff0bac325c9c823dba68bd4f281b3b9f8f68e7) )
+ ROM_LOAD16_BYTE( "218-c7.c7", 0x1800000, 0x400000, CRC(de6f9b28) SHA1(455adb6bb986af8a00d7f32b7f4f3715fc3007f6) )
+ ROM_LOAD16_BYTE( "218-c8.c8", 0x1800001, 0x400000, CRC(d9b311f6) SHA1(ba61a7ab3f08bb7348ad6cd01e5d29ca5ee75074) )
+ROM_END
+
+ROM_START( ragnagrdsb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "218sb.p1", 0x100000, 0x100000, CRC(8fd300f6) SHA1(3f456151cae94c11d1292d2deb8f68c44d9d3749) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "218-s1.s1", CRC(7d402f9a) SHA1(59ec29d03e62e7a8bef689a124a9164f43b2ace1) )
+
+ NEO_BIOS_AUDIO_128K( "218-m1.m1", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
+ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) )
+ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) )
+ ROM_LOAD16_BYTE( "218-c3.c3", 0x0800000, 0x400000, CRC(833c163a) SHA1(b7e5356bbd9efab67fedb5bc671ba8bbd661fe0f) )
+ ROM_LOAD16_BYTE( "218-c4.c4", 0x0800001, 0x400000, CRC(c1a30f69) SHA1(f87ddda4695abcd14f5c2d4b7d41f72ad5b064cc) )
+ ROM_LOAD16_BYTE( "218-c5.c5", 0x1000000, 0x400000, CRC(6b6de0ff) SHA1(1abb24cb407258235f4a572cf101d0774823040b) )
+ ROM_LOAD16_BYTE( "218-c6.c6", 0x1000001, 0x400000, CRC(94beefcf) SHA1(d2ff0bac325c9c823dba68bd4f281b3b9f8f68e7) )
+ ROM_LOAD16_BYTE( "218-c7.c7", 0x1800000, 0x400000, CRC(de6f9b28) SHA1(455adb6bb986af8a00d7f32b7f4f3715fc3007f6) )
+ ROM_LOAD16_BYTE( "218-c8.c8", 0x1800001, 0x400000, CRC(d9b311f6) SHA1(ba61a7ab3f08bb7348ad6cd01e5d29ca5ee75074) )
+ROM_END
+
+
+ROM_START( s1945pd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "254-p1.p1", 0x000000, 0x100000, CRC(ff8efcff) SHA1(dcaeaca573385c172ecc43ee6bee355359091893) )
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "254d.c1", 0x0000000, 0x800000, CRC(7b6902f9) SHA1(c974a3cd84fa15d5ae7c9053adbb004a9aa902cd) )
+ ROM_LOAD16_BYTE( "254d.c2", 0x0000001, 0x800000, CRC(51bd4252) SHA1(5a99563de1d83b7cd1d7ca7a50c71d5f30439276) )
+ ROM_LOAD16_BYTE( "254d.c3", 0x1000000, 0x800000, CRC(a38993e4) SHA1(0bd3bcecf17abfda7da997e348fe3b0e7a66a828) )
+ ROM_LOAD16_BYTE( "254d.c4", 0x1000001, 0x800000, CRC(d5696530) SHA1(15cbdaa729b8dd4d2489157d778379cfb0f79e51) )
+ ROM_LOAD16_BYTE( "254d.c5", 0x2000000, 0x800000, CRC(28764bd6) SHA1(21158ea89dd88abd7f73b4513b699089f7944ba5) )
+ ROM_LOAD16_BYTE( "254d.c6", 0x2000001, 0x800000, CRC(9931bdf1) SHA1(fa95fd8621403684e09f01a89f8df9ae2fa7de76) )
+ ROM_LOAD16_BYTE( "254d.c7", 0x3000000, 0x800000, CRC(6e12afcd) SHA1(ef45d9b923ec937f9c207cd50d917f0ded5b8faf) )
+ ROM_LOAD16_BYTE( "254d.c8", 0x3000001, 0x800000, CRC(178d4684) SHA1(3cbf379209c189ee48260a044dc2754035f57e14) )
+ROM_END
+
+ROM_START( s1945peh )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "254eh.p1", 0x000000, 0x100000, CRC(f776bf2a) SHA1(844602f9e2fb68c4002092592669f689728dad2d) )
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) )
+ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) )
+ ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) )
+ ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) )
+ ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) )
+ ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) )
+ ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) )
+ ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) )
+ROM_END
+
+ROM_START( s1945ph )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "254h.p1", 0x000000, 0x100000, CRC(2e106855) SHA1(53f2dd9dea00f36eaac6b56dabbb860aff4f3712) )
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) )
+ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) )
+ ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) )
+ ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) )
+ ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) )
+ ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) )
+ ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) )
+ ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) )
+ROM_END
+
+ROM_START( s1945pwe ) /* Strikers 1945 Plus - Enhance by Wesker */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "254we.p1", 0x000000, 0x100000, CRC(524eaf9c) SHA1(03e6e4495eca181c5d702df312565abd6684d6a4) )
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) )
+ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) )
+ ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) )
+ ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) )
+ ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) )
+ ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) )
+ ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) )
+ ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) )
+ROM_END
+
+
+ROM_START( savagereb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "059b.p1", 0x100000, 0x100000, CRC(3a7fbff0) SHA1(810b318428d2c50fc2e3c31a9ee8aeed223ee4d3) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "059-s1.s1", CRC(e08978ca) SHA1(55152cb9bd0403ae8656b93a6b1522dba5db6d1a) )
+
+ NEO_BIOS_AUDIO_128K( "059-m1.m1", CRC(29992eba) SHA1(187be624abe8670503edb235ff21ae8fdc3866e0) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "059-v2.v2", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ ROM_LOAD16_BYTE( "059-c3.c3", 0x400000, 0x200000, CRC(3e4eba4b) SHA1(770adec719e63a30ebe9522cc7576caaca44f3b2) )
+ ROM_LOAD16_BYTE( "059-c4.c4", 0x400001, 0x200000, CRC(3c2a3808) SHA1(698adcec0715c9e78b6286be38debf0ce28fd644) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x800000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x800001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ ROM_LOAD16_BYTE( "059-c7.c7", 0xc00000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0xc00001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+ROM_START( savageredb ) /* Savage Reign - Hack by Dodowang - (Debug menue unlocked - press select to change stage, p1 and p2) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "059db.p1", 0x100000, 0x100000, CRC(83be1cfc) SHA1(ec85c5d8416c7895ec7b47a9be50f62dc2c88703) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "059-s1.s1", CRC(e08978ca) SHA1(55152cb9bd0403ae8656b93a6b1522dba5db6d1a) )
+
+ NEO_BIOS_AUDIO_128K( "059-m1.m1", CRC(29992eba) SHA1(187be624abe8670503edb235ff21ae8fdc3866e0) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "059-v2.v2", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ ROM_LOAD16_BYTE( "059-c3.c3", 0x400000, 0x200000, CRC(3e4eba4b) SHA1(770adec719e63a30ebe9522cc7576caaca44f3b2) )
+ ROM_LOAD16_BYTE( "059-c4.c4", 0x400001, 0x200000, CRC(3c2a3808) SHA1(698adcec0715c9e78b6286be38debf0ce28fd644) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x800000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x800001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ ROM_LOAD16_BYTE( "059-c7.c7", 0xc00000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0xc00001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+
+ROM_START( sdodgebp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "208p.p1", 0x100000, 0x100000, CRC(e705b86d) SHA1(a098fec800f48670514ee2b15551514009cde297) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "208-s1.s1", CRC(64abd6b3) SHA1(0315d724e4d83a44ce84c531ff9b8c398363c039) )
+
+ NEO_BIOS_AUDIO_128K( "208-m1.m1", CRC(0a5f3325) SHA1(04e0236df478a5452654c823dcb42fea65b6a718) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "208-v1.v1", 0x000000, 0x400000, CRC(e7899a24) SHA1(3e75b449898fee73fbacf58d70e3a460b9e0c573) )
+
+ ROM_REGION( 0x0c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "208-c1.c1", 0x0000000, 0x400000, CRC(93d8619b) SHA1(6588cb67e38722d5843fb29943d92e3905101aff) )
+ ROM_LOAD16_BYTE( "208-c2.c2", 0x0000001, 0x400000, CRC(1c737bb6) SHA1(8e341989981a713e61dfed8bde9a6459583ef46d) )
+ ROM_LOAD16_BYTE( "208-c3.c3", 0x0800000, 0x200000, CRC(14cb1703) SHA1(a46acec03c1b2351fe36810628f02b7c848d13db) )
+ ROM_LOAD16_BYTE( "208-c4.c4", 0x0800001, 0x200000, CRC(c7165f19) SHA1(221f03de893dca0e5305fa17aa94f96c67713818) )
+ROM_END
+
+
+ROM_START( shocktr2px )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "246px.p1", 0x000000, 0x100000, CRC(6e55a59c) SHA1(092c39ee9c28e4b45940ae2d43dc92922e6a9eba) )
+ ROM_LOAD16_WORD_SWAP( "246-p2.sp2", 0x100000, 0x400000, CRC(72ea04c3) SHA1(4fb1d22c30f5f3db4637dd92a4d2705c88de399d) )
+
+ NEO_SFIX_128K( "246-s1.s1", CRC(2a360637) SHA1(431b43da5377dd189e51bd93d88d8a24d1b5090a) )
+
+ NEO_BIOS_AUDIO_128K( "246-m1.m1", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "246-v1.v1", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) )
+ ROM_LOAD( "246-v2.v2", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) )
+ ROM_LOAD( "246-v3.v3", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "246-c1.c1", 0x0000000, 0x800000, CRC(47ac9ec5) SHA1(2d9eea11ba87baa23b18a1a3f607dc137846e807) )
+ ROM_LOAD16_BYTE( "246-c2.c2", 0x0000001, 0x800000, CRC(7bcab64f) SHA1(08d0edddd14b53d606e9a7a46aa4fb4e7398e0d0) )
+ ROM_LOAD16_BYTE( "246-c3.c3", 0x1000000, 0x800000, CRC(db2f73e8) SHA1(8d0c3473a8b2a4e28fed1b74beb2e025b7e61867) )
+ ROM_LOAD16_BYTE( "246-c4.c4", 0x1000001, 0x800000, CRC(5503854e) SHA1(a0f2e7c609cbb2aa43493a39d7dcaeca3d511d26) )
+ ROM_LOAD16_BYTE( "246-c5.c5", 0x2000000, 0x800000, CRC(055b3701) SHA1(97f5e92538d1f2e437dcb3f80e56e1230287e8d1) )
+ ROM_LOAD16_BYTE( "246-c6.c6", 0x2000001, 0x800000, CRC(7e2caae1) SHA1(d9de14e3e323664a8c5b7f1df1ba9ec7dd0e6a46) )
+ROM_END
+
+ROM_START( shocktr2w ) /* you must use unibios to select AES */ /* Shock Troopers - 2nd Squad - Hack by Wesker */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "246w.p1", 0x000000, 0x100000, CRC(0af69336) SHA1(680f348f15177d14b7885d9976cf1bac4ae9eaf3) )
+ ROM_LOAD16_WORD_SWAP( "246-p2.sp2", 0x100000, 0x400000, CRC(72ea04c3) SHA1(4fb1d22c30f5f3db4637dd92a4d2705c88de399d) )
+
+ NEO_SFIX_128K( "246-s1.s1", CRC(2a360637) SHA1(431b43da5377dd189e51bd93d88d8a24d1b5090a) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+ ROM_REGION( 0x30000, "audiocpu", 0 )
+ ROM_LOAD( "246-m1.m1", 0x00000, 0x20000, CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "246-v1.v1", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) )
+ ROM_LOAD( "246-v2.v2", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) )
+ ROM_LOAD( "246-v3.v3", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "246-c1.c1", 0x0000000, 0x800000, CRC(47ac9ec5) SHA1(2d9eea11ba87baa23b18a1a3f607dc137846e807) )
+ ROM_LOAD16_BYTE( "246-c2.c2", 0x0000001, 0x800000, CRC(7bcab64f) SHA1(08d0edddd14b53d606e9a7a46aa4fb4e7398e0d0) )
+ ROM_LOAD16_BYTE( "246-c3.c3", 0x1000000, 0x800000, CRC(db2f73e8) SHA1(8d0c3473a8b2a4e28fed1b74beb2e025b7e61867) )
+ ROM_LOAD16_BYTE( "246-c4.c4", 0x1000001, 0x800000, CRC(5503854e) SHA1(a0f2e7c609cbb2aa43493a39d7dcaeca3d511d26) )
+ ROM_LOAD16_BYTE( "246-c5.c5", 0x2000000, 0x800000, CRC(055b3701) SHA1(97f5e92538d1f2e437dcb3f80e56e1230287e8d1) )
+ ROM_LOAD16_BYTE( "246-c6.c6", 0x2000001, 0x800000, CRC(7e2caae1) SHA1(d9de14e3e323664a8c5b7f1df1ba9ec7dd0e6a46) )
+ROM_END
+
+
+ROM_START( shocktrosp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "238sp.p1", 0x000000, 0x100000, CRC(6ee78d00) SHA1(8847879749e55f7b24e149a7e24ec301f7b56929) )
+ ROM_LOAD16_WORD_SWAP( "238-p2.sp2", 0x100000, 0x400000, CRC(5b4a09c5) SHA1(de04036cba2da4bb2da73d902d1822b82b4f67a9) )
+
+ NEO_SFIX_128K( "238-s1.s1", CRC(1f95cedb) SHA1(adfa74868147fd260481e4c387d254d3b6de83f4) )
+
+ NEO_BIOS_AUDIO_128K( "238-m1.m1", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "238-v1.v1", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) )
+ ROM_LOAD( "238-v2.v2", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "238-c1.c1", 0x0000000, 0x400000, CRC(90c6a181) SHA1(a381bc8449718814ff12b3a4f7fc4d1bb7ea1631) )
+ ROM_LOAD16_BYTE( "238-c2.c2", 0x0000001, 0x400000, CRC(888720f0) SHA1(cd4d65df8d3ef0dbcca2b7f3f803f45c457f5beb) )
+ ROM_LOAD16_BYTE( "238-c3.c3", 0x0800000, 0x400000, CRC(2c393aa3) SHA1(1cd7cebe5861a2d65f1d6615dd7752162e573a02) )
+ ROM_LOAD16_BYTE( "238-c4.c4", 0x0800001, 0x400000, CRC(b9e909eb) SHA1(33cc9b2d13e4ed2ab6040ff582a53dc9bca402e0) )
+ ROM_LOAD16_BYTE( "238-c5.c5", 0x1000000, 0x400000, CRC(c22c68eb) SHA1(a4b04118b1b1909d3b76be8d9ee5d97db6120600) )
+ ROM_LOAD16_BYTE( "238-c6.c6", 0x1000001, 0x400000, CRC(119323cd) SHA1(05a9d4b1fb4cc963b25452ff6f81e296e0c0b2a1) )
+ ROM_LOAD16_BYTE( "238-c7.c7", 0x1800000, 0x400000, CRC(a72ce7ed) SHA1(05b151554bd7af09ccf554a17bc3c75a0512faaf) )
+ ROM_LOAD16_BYTE( "238-c8.c8", 0x1800001, 0x400000, CRC(1c7c2efb) SHA1(b055ee43cbdaf9a3cb19e4e1f9dd2c40bde69d70) )
+ROM_END
+
+
+ROM_START( sonicwi2eh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "075eh.p1", 0x100000, 0x100000, CRC(150cbac6) SHA1(66009a8be55d70345569c1ba23d06a8b1c3e4641) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "075-s1.s1", CRC(c9eec367) SHA1(574e1afe7e0d54610c145131106e59ba2894eeb7) )
+
+ NEO_BIOS_AUDIO_128K( "075-m1.m1", CRC(bb828df1) SHA1(eab8e2868173bdaac7c7ed97305a9aa1033fd303) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "075-v1.v1", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) )
+ ROM_LOAD( "075-v2.v2", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "075-c1.c1", 0x000000, 0x200000, CRC(3278e73e) SHA1(d9e6c8a3a5213690a1b8747d27806d8ac5aac405) )
+ ROM_LOAD16_BYTE( "075-c2.c2", 0x000001, 0x200000, CRC(fe6355d6) SHA1(ca72fff7a908b6d9325761079ff2a0e28f34cf89) )
+ ROM_LOAD16_BYTE( "075-c3.c3", 0x400000, 0x200000, CRC(c1b438f1) SHA1(b3751c5b426bca0fcc3a58bdb86712c22ef908ab) )
+ ROM_LOAD16_BYTE( "075-c4.c4", 0x400001, 0x200000, CRC(1f777206) SHA1(e29c5ae65ebdcc1167a894306d2446ce909639da) )
+ROM_END
+
+ROM_START( sonicwi2px )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "075px.p1", 0x100000, 0x100000, CRC(22e4dd5f) SHA1(4f9511c7c2b98db306fece35ada47beb7f3ae4c5) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "075-s1.s1", CRC(c9eec367) SHA1(574e1afe7e0d54610c145131106e59ba2894eeb7) )
+
+ NEO_BIOS_AUDIO_128K( "075-m1.m1", CRC(bb828df1) SHA1(eab8e2868173bdaac7c7ed97305a9aa1033fd303) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "075-v1.v1", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) )
+ ROM_LOAD( "075-v2.v2", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "075-c1.c1", 0x000000, 0x200000, CRC(3278e73e) SHA1(d9e6c8a3a5213690a1b8747d27806d8ac5aac405) )
+ ROM_LOAD16_BYTE( "075-c2.c2", 0x000001, 0x200000, CRC(fe6355d6) SHA1(ca72fff7a908b6d9325761079ff2a0e28f34cf89) )
+ ROM_LOAD16_BYTE( "075-c3.c3", 0x400000, 0x200000, CRC(c1b438f1) SHA1(b3751c5b426bca0fcc3a58bdb86712c22ef908ab) )
+ ROM_LOAD16_BYTE( "075-c4.c4", 0x400001, 0x200000, CRC(1f777206) SHA1(e29c5ae65ebdcc1167a894306d2446ce909639da) )
+ROM_END
+
+
+ROM_START( sonicwi3eh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "097eh.p1", 0x100000, 0x100000, CRC(ebd9674e) SHA1(9dac667dae3e31f0d06f815f8dd1ede11966c43e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "097-s1.s1", CRC(8dd66743) SHA1(39214bb25a1d5b44a8524010be05bf5a0211981f) )
+
+ NEO_BIOS_AUDIO_128K( "097-m1.m1", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "097-v1.v1", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
+ ROM_LOAD( "097-v2.v2", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "097-c1.c1", 0x000000, 0x400000, CRC(33d0d589) SHA1(fe4aa95555e478ceb2d28fd27d83ee06cd09520c) )
+ ROM_LOAD16_BYTE( "097-c2.c2", 0x000001, 0x400000, CRC(186f8b43) SHA1(f5cced93e21dc841b00ebeaa30786cb0e047bd9a) )
+ ROM_LOAD16_BYTE( "097-c3.c3", 0x800000, 0x200000, CRC(c339fff5) SHA1(58dfd1e30dc0ad3f816a5dbd1cc7e7ccbb792c53) )
+ ROM_LOAD16_BYTE( "097-c4.c4", 0x800001, 0x200000, CRC(84a40c6e) SHA1(061a13fba5fed883e5ee9566cedc208df2511bcf) )
+ROM_END
+
+ROM_START( sonicwi3h )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "097h.p1", 0x100000, 0x100000, CRC(a09735bd) SHA1(ab7b8f14d4e07933bed52219b0c161cfd85601a0) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "097-s1.s1", CRC(8dd66743) SHA1(39214bb25a1d5b44a8524010be05bf5a0211981f) )
+
+ NEO_BIOS_AUDIO_128K( "097-m1.m1", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "097-v1.v1", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
+ ROM_LOAD( "097-v2.v2", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "097-c1.c1", 0x000000, 0x400000, CRC(33d0d589) SHA1(fe4aa95555e478ceb2d28fd27d83ee06cd09520c) )
+ ROM_LOAD16_BYTE( "097-c2.c2", 0x000001, 0x400000, CRC(186f8b43) SHA1(f5cced93e21dc841b00ebeaa30786cb0e047bd9a) )
+ ROM_LOAD16_BYTE( "097-c3.c3", 0x800000, 0x200000, CRC(c339fff5) SHA1(58dfd1e30dc0ad3f816a5dbd1cc7e7ccbb792c53) )
+ ROM_LOAD16_BYTE( "097-c4.c4", 0x800001, 0x200000, CRC(84a40c6e) SHA1(061a13fba5fed883e5ee9566cedc208df2511bcf) )
+ROM_END
+
+ROM_START( sonicwi3px )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "097px.p1", 0x100000, 0x100000, CRC(da80771c) SHA1(654d7d04d03cf2a30fb9cc612cf099bbea852403) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "097-s1.s1", CRC(8dd66743) SHA1(39214bb25a1d5b44a8524010be05bf5a0211981f) )
+
+ NEO_BIOS_AUDIO_128K( "097-m1.m1", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "097-v1.v1", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
+ ROM_LOAD( "097-v2.v2", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "097-c1.c1", 0x000000, 0x400000, CRC(33d0d589) SHA1(fe4aa95555e478ceb2d28fd27d83ee06cd09520c) )
+ ROM_LOAD16_BYTE( "097-c2.c2", 0x000001, 0x400000, CRC(186f8b43) SHA1(f5cced93e21dc841b00ebeaa30786cb0e047bd9a) )
+ ROM_LOAD16_BYTE( "097-c3.c3", 0x800000, 0x200000, CRC(c339fff5) SHA1(58dfd1e30dc0ad3f816a5dbd1cc7e7ccbb792c53) )
+ ROM_LOAD16_BYTE( "097-c4.c4", 0x800001, 0x200000, CRC(84a40c6e) SHA1(061a13fba5fed883e5ee9566cedc208df2511bcf) )
+ROM_END
+
+
+ROM_START( spinmasth )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "062h.p1", 0x000000, 0x100000, CRC(51d531ee) SHA1(bc8b16ddc76d14de9d239efddd3a1cdfbf207521) )
+ ROM_LOAD16_WORD_SWAP( "062-p2.sp2", 0x100000, 0x100000, CRC(f025ab77) SHA1(4944be04648296d0b93cfe4c5ca7b9cede072cff) )
+
+ NEO_SFIX_128K( "062-s1.s1", CRC(289e2bbe) SHA1(f52c7f2bffc89df3130b3cabd200408509a28cdc) )
+
+ NEO_BIOS_AUDIO_128K( "062-m1.m1", CRC(76108b2f) SHA1(08c89a8b746dbb10ff885b41cde344173c2e3699) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "062-v1.v1", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "062-c1.c1", 0x000000, 0x100000, CRC(a9375aa2) SHA1(69218d8f1361e9ea709da11e3f15fe46b1db7181) )
+ ROM_LOAD16_BYTE( "062-c2.c2", 0x000001, 0x100000, CRC(0e73b758) SHA1(a247f736fbca0b609818dca4844ebb8442753bc1) )
+ ROM_LOAD16_BYTE( "062-c3.c3", 0x200000, 0x100000, CRC(df51e465) SHA1(171953c7a870f3ab96e0f875117ee7343931fd38) )
+ ROM_LOAD16_BYTE( "062-c4.c4", 0x200001, 0x100000, CRC(38517e90) SHA1(f7c64b94ac20f5146f9bb48b53cb2b30fe5b8f8c) )
+ ROM_LOAD16_BYTE( "062-c5.c5", 0x400000, 0x100000, CRC(7babd692) SHA1(0d4cd5006baa8d951cd2b6194ace566fa2845b8a) )
+ ROM_LOAD16_BYTE( "062-c6.c6", 0x400001, 0x100000, CRC(cde5ade5) SHA1(5899ef5dfcdbb8cf8c6aba748dbb52f3c5fed5fe) )
+ ROM_LOAD16_BYTE( "062-c7.c7", 0x600000, 0x100000, CRC(bb2fd7c0) SHA1(cce11c4cf39ac60143235ff89261806df339dae5) )
+ ROM_LOAD16_BYTE( "062-c8.c8", 0x600001, 0x100000, CRC(8d7be933) SHA1(e7097cfa26a959f90721e2e8368ceb47ea9db661) )
+ROM_END
+
+ROM_START( spinmastpx )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "062px.p1", 0x000000, 0x100000, CRC(beea0162) SHA1(7e61e690bb5664d49149179309a58b71c5e75b75) )
+ ROM_LOAD16_WORD_SWAP( "062-p2.sp2", 0x100000, 0x100000, CRC(f025ab77) SHA1(4944be04648296d0b93cfe4c5ca7b9cede072cff) )
+
+ NEO_SFIX_128K( "062-s1.s1", CRC(289e2bbe) SHA1(f52c7f2bffc89df3130b3cabd200408509a28cdc) )
+
+ NEO_BIOS_AUDIO_128K( "062-m1.m1", CRC(76108b2f) SHA1(08c89a8b746dbb10ff885b41cde344173c2e3699) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "062-v1.v1", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "062-c1.c1", 0x000000, 0x100000, CRC(a9375aa2) SHA1(69218d8f1361e9ea709da11e3f15fe46b1db7181) )
+ ROM_LOAD16_BYTE( "062-c2.c2", 0x000001, 0x100000, CRC(0e73b758) SHA1(a247f736fbca0b609818dca4844ebb8442753bc1) )
+ ROM_LOAD16_BYTE( "062-c3.c3", 0x200000, 0x100000, CRC(df51e465) SHA1(171953c7a870f3ab96e0f875117ee7343931fd38) )
+ ROM_LOAD16_BYTE( "062-c4.c4", 0x200001, 0x100000, CRC(38517e90) SHA1(f7c64b94ac20f5146f9bb48b53cb2b30fe5b8f8c) )
+ ROM_LOAD16_BYTE( "062-c5.c5", 0x400000, 0x100000, CRC(7babd692) SHA1(0d4cd5006baa8d951cd2b6194ace566fa2845b8a) )
+ ROM_LOAD16_BYTE( "062-c6.c6", 0x400001, 0x100000, CRC(cde5ade5) SHA1(5899ef5dfcdbb8cf8c6aba748dbb52f3c5fed5fe) )
+ ROM_LOAD16_BYTE( "062-c7.c7", 0x600000, 0x100000, CRC(bb2fd7c0) SHA1(cce11c4cf39ac60143235ff89261806df339dae5) )
+ ROM_LOAD16_BYTE( "062-c8.c8", 0x600001, 0x100000, CRC(8d7be933) SHA1(e7097cfa26a959f90721e2e8368ceb47ea9db661) )
+ROM_END
+
+
+ROM_START( ssidekicd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "052cd.p1", 0x000000, 0x080000, CRC(5cdf0a46) SHA1(60b200eb8d7a217d1f4ce9a51d3c9730d5259fac) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_64K( "052cd.m1", CRC(f47f31a4) SHA1(50eaf535aec5f8f983e13c24f547d6d2d1004f39) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "052cd.v1", 0x000000, 0x100000, CRC(a6944870) SHA1(3c46d028998a57fa8bd46327f3497af1233698b0) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "052cd.c1", 0x000000, 0x100000, CRC(bf1b962b) SHA1(9bdec8df91a6713d6ce4dbc1ba5028eec74d4cb0) )
+ ROM_LOAD16_BYTE( "052cd.c2", 0x000001, 0x100000, CRC(c3ce856b) SHA1(326c4a17c62ea97acc9a38e3b144dc9bc69158d4) )
+ ROM_LOAD16_BYTE( "052cd.c3", 0x200000, 0x100000, CRC(7642df56) SHA1(f65cee51d4d8734982d305a1c5c4ddd4e064ebf7) )
+ ROM_LOAD16_BYTE( "052cd.c4", 0x200001, 0x100000, CRC(265222dc) SHA1(d52a757779d74c2e32fd28bbc953ff8053f33a6c) )
+ROM_END
+
+
+ROM_START( strhoopcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "079cd.p1", 0x000000, 0x100000, CRC(16795f7f) SHA1(977a6c31ca6553e1cfa3402a5e541bab4c2244be) )
+
+ NEO_SFIX_128K( "079cd.s1", CRC(c65a5fe8) SHA1(ec8e8c49994ce9286ea5160c2450912da0746fb0) )
+
+ NEO_BIOS_AUDIO_64K( "079cd.m1", CRC(1a5f08db) SHA1(3121ed568fba4c30794b00d326ddb0c750b7f4ee) )
+
+ ROM_REGION( 0x280000, "ymsnd", 0 )
+ ROM_LOAD( "079-v1.v1", 0x000000, 0x200000, CRC(718a2400) SHA1(cefc5d0b302bd4a87ab1fa244ade4482c23c6806) )
+ ROM_LOAD( "079cd.v2", 0x200000, 0x080000, CRC(b19884f8) SHA1(5fe910f2029da19ddab4dc95c2292d7fbb086741) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "079cd.c1", 0x000000, 0x200000, CRC(c3ebd902) SHA1(daae0ae972ecc0c19b2e6a439e5f2547286f190a) )
+ ROM_LOAD16_BYTE( "079cd.c2", 0x000001, 0x200000, CRC(1a471f80) SHA1(725864d734ec9ab2933a46a6dc4d18dbc31fe2c7) )
+ ROM_LOAD16_BYTE( "079cd.c3", 0x680000, 0x080000, CRC(4d490ecc) SHA1(8ced8f547799b613edd95acabd6f8cb28c41eab5) )
+ ROM_LOAD16_BYTE( "079cd.c4", 0x680001, 0x080000, CRC(e223d27c) SHA1(2e195fea0d5808e90f154412b5e80b430e6341e2) )
+ROM_END
+
+
+ROM_START( superspycd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "011cd.p1", 0x000000, 0x0a0000, CRC(6ef37a8c) SHA1(b65328a4d9af099dabdca931a7487b07122e9433) )
+
+ NEO_SFIX_128K( "011-s1.s1", CRC(ec5fdb96) SHA1(8003028025ac7bf531e568add6ba66c02d0b7e84) )
+
+ NEO_BIOS_AUDIO_64K( "011cd.m1", CRC(543a711a) SHA1(2d4a5b0a9c7d10c3b182c3a887b9ff7f50a2937a) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "011cd.v1", 0x000000, 0x100000, CRC(9d697082) SHA1(92497e97e1755b930bd960d861f4c5289af7d78d) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "011-c1.c1", 0x000000, 0x100000, CRC(cae7be57) SHA1(43b35b349594535689c358d9f324adda55e5281a) )
+ ROM_LOAD16_BYTE( "011-c2.c2", 0x000001, 0x100000, CRC(9e29d986) SHA1(b417763bad1acf76116cd56f4203c2d2677e22e5) )
+ ROM_LOAD16_BYTE( "011-c3.c3", 0x200000, 0x100000, CRC(14832ff2) SHA1(1179792d773d97d5e45e7d8f009051d362d72e24) )
+ ROM_LOAD16_BYTE( "011-c4.c4", 0x200001, 0x100000, CRC(b7f63162) SHA1(077a81b2bb0a8f17c9df6945078608f74432877a) )
+ROM_END
+
+
+ROM_START( tophuntrpx )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "046px.p1", 0x000000, 0x100000, CRC(949dbb78) SHA1(fb005e60ff693c6656e33cd0641c7300826a6b54) )
+ ROM_LOAD16_WORD_SWAP( "046-p2.sp2", 0x100000, 0x100000, CRC(f182cb3e) SHA1(6b4e0af5d4e623f0682f37ff5c69e5b705e20028) )
+
+ NEO_SFIX_128K( "046-s1.s1", CRC(14b01d7b) SHA1(618ce75c25d6cc86a3b46bd64a0aa34ab82f75ae) )
+
+ NEO_BIOS_AUDIO_128K( "046-m1.m1", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "046-v1.v1", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) )
+ ROM_LOAD( "046-v2.v2", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) )
+ ROM_LOAD( "046-v3.v3", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) )
+ ROM_LOAD( "046-v4.v4", 0x300000, 0x100000, CRC(4f54c187) SHA1(63a76949301b83bdd44aa1a4462f642ab9ca3c0b) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "046-c1.c1", 0x000000, 0x100000, CRC(fa720a4a) SHA1(364913b9fa40d46e4e39ae3cdae914cfd0de137d) )
+ ROM_LOAD16_BYTE( "046-c2.c2", 0x000001, 0x100000, CRC(c900c205) SHA1(50274e79aa26f334eb806288688b30720bade883) )
+ ROM_LOAD16_BYTE( "046-c3.c3", 0x200000, 0x100000, CRC(880e3c25) SHA1(b6974af0c833b766866919b6f15b6f8cef82530d) )
+ ROM_LOAD16_BYTE( "046-c4.c4", 0x200001, 0x100000, CRC(7a2248aa) SHA1(8af0b26025a54e3b91604dd24a3c1c518fbd8536) )
+ ROM_LOAD16_BYTE( "046-c5.c5", 0x400000, 0x100000, CRC(4b735e45) SHA1(2f8b46388c4696aee6a97e1e21cdadf6b142b01a) )
+ ROM_LOAD16_BYTE( "046-c6.c6", 0x400001, 0x100000, CRC(273171df) SHA1(9c35832221e016c12ef1ed71da167f565daaf86c) )
+ ROM_LOAD16_BYTE( "046-c7.c7", 0x600000, 0x100000, CRC(12829c4c) SHA1(ac5f3d848d7116fc35c97f53a72c85e049dd3a2f) )
+ ROM_LOAD16_BYTE( "046-c8.c8", 0x600001, 0x100000, CRC(c944e03d) SHA1(be23999b8ce09ee15ba500ce4d5e2a82a4f58d9b) )
+ROM_END
+
+
+ROM_START( tpgolfcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "003cd.p1", 0x000000, 0x100000, CRC(87f2a8ce) SHA1(ad903d7711ac4af47f1dee64ba7c6bb247029407) )
+
+ NEO_SFIX_128K( "003-s1.s1", CRC(7b3eb9b1) SHA1(39cd8bad9f8bfdeb8ac681b5b79ae5aa81c8dd5f) )
+
+ NEO_BIOS_AUDIO_64K( "003cd.m1", CRC(7851d0d9) SHA1(d021cef958cc37ab170b78d7a4b3ae94947e4d13) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "003-v11.v11", 0x000000, 0x080000, CRC(ff97f1cb) SHA1(defa249d46ae220f7bfa70746f5202bbbcc3e5fe) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "003-c1.c1", 0x000000, 0x80000, CRC(0315fbaf) SHA1(583c9253219c1026d81ee5e0cf5568683adc2633) )
+ ROM_LOAD16_BYTE( "003-c2.c2", 0x000001, 0x80000, CRC(b4c15d59) SHA1(b0d8ec967f9b8e5216301c10b2d36912abce6515) )
+ ROM_LOAD16_BYTE( "003cd.c3", 0x100000, 0x80000, CRC(b09f1612) SHA1(03fbb5db4e377ce9cb4e65ddbc0b114c02e7bae1) )
+ ROM_LOAD16_BYTE( "003cd.c4", 0x100001, 0x80000, CRC(150ea7a1) SHA1(13edc30144b56285ef37eb8aa6fb934704de18d8) )
+ ROM_LOAD16_BYTE( "003-c5.c5", 0x200000, 0x80000, CRC(9a7146da) SHA1(2fc83d13e3e9565919aab01bf2a1b028f433b547) )
+ ROM_LOAD16_BYTE( "003-c6.c6", 0x200001, 0x80000, CRC(1e63411a) SHA1(ee397e2f679042e87b37d95837af62bb95a72af9) )
+ ROM_LOAD16_BYTE( "003-c7.c7", 0x300000, 0x80000, CRC(2886710c) SHA1(1533dd935f0a8f92a0a3c47d1d2bc6d035454244) )
+ ROM_LOAD16_BYTE( "003-c8.c8", 0x300001, 0x80000, CRC(422af22d) SHA1(f67c844c34545de6ea187f5bfdf440dec8518532) )
+ROM_END
+
+
+ROM_START( trallycd ) // title screen is corrupt
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "038-p1.p1", 0x000000, 0x080000, CRC(1e52a576) SHA1(a1cb56354c3378e955b0cd482c3c41ae15add952) )
+ ROM_LOAD16_WORD_SWAP( "038cd.p2", 0x080000, 0x080000, CRC(9facb7fb) SHA1(96b4edbdddbd9ba642d0d046b33349c95559badd) )
+
+ NEO_SFIX_128K( "038cd.s1", CRC(81022312) SHA1(bdb8ae4cd43f196f1b185a48e25980565226bb71) )
+
+ NEO_BIOS_AUDIO_64K( "038cd.m1", CRC(2e1a89d6) SHA1(d0761c57f58e5a63b7c6a03538b3b5b7fe89271b) )
+
+ ROM_REGION( 0x0e0000, "ymsnd", 0 )
+ ROM_LOAD( "038cd.v1", 0x000000, 0x0e0000, CRC(f7ce806e) SHA1(83967145a6bd616ffe8c19dbf5b0bf63296f2c24) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "038cd.c1", 0x000000, 0x100000, CRC(840e6161) SHA1(553431723d0f348f4776b1e41beb2a4b39c2aeec) )
+ ROM_LOAD16_BYTE( "038cd.c2", 0x000001, 0x100000, CRC(51979c7a) SHA1(833600da39daeae40ac700931e77898e9c60a45d) )
+ ROM_LOAD16_BYTE( "038-c3.c3", 0x200000, 0x080000, CRC(3bb7b9d6) SHA1(bc1eae6181ad5abf79736afc8db4ca34113d43f8) )
+ ROM_LOAD16_BYTE( "038-c4.c4", 0x200001, 0x080000, CRC(a4513ecf) SHA1(934aa103c226eac55157b44d7b4dfa35515322c3) )
+ROM_END
+
+
+ROM_START( twinsprih )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "224h.p1", 0x100000, 0x100000, CRC(df71c8cd) SHA1(1e49205b46c59c7f4ca6ee1dc06f555320d3b9af) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "224-s1.s1", CRC(eeed5758) SHA1(24e48f396716e145b692468762cf595fb7267873) )
+
+ NEO_BIOS_AUDIO_128K( "224-m1.m1", CRC(364d6f96) SHA1(779b95a6476089b71f48c8368d9043ee1dba9032) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "224-v1.v1", 0x000000, 0x400000, CRC(ff57f088) SHA1(1641989b8aac899dbd68aa2332bcdf9b90b33564) )
+ ROM_LOAD( "224-v2.v2", 0x400000, 0x200000, CRC(7ad26599) SHA1(822030037b7664795bf3d64e1452d0aecc22497e) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "224-c1.c1", 0x000000, 0x400000, CRC(f7da64ab) SHA1(587a10ed9235c9046a3523fe80feba07764fac9b) )
+ ROM_LOAD16_BYTE( "224-c2.c2", 0x000001, 0x400000, CRC(4c09bbfb) SHA1(e781aafba3bdefb7ed152826f4c3eb441735331c) )
+ ROM_LOAD16_BYTE( "224-c3.c3", 0x800000, 0x100000, CRC(c59e4129) SHA1(93f02d1b4fbb152a9d336494fbff0d7642921de5) )
+ ROM_LOAD16_BYTE( "224-c4.c4", 0x800001, 0x100000, CRC(b5532e53) SHA1(7d896c25ba97f6e5d43c13d4df4ba72964a976ed) )
+ROM_END
+
+
+ROM_START( viewpoinf )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "051f.p1", 0x000000, 0x100000, CRC(d28c99ef) SHA1(c603ae8ad4a80fa3921016cd294a61a60cc37923) )
+
+ NEO_SFIX_64K( "051tr.s1", CRC(6d0f146a) SHA1(537fc5ef099f46fef64d147c0d1264b319758b4f) )
+
+ NEO_BIOS_AUDIO_64K( "051tr.m1", CRC(d57bd7af) SHA1(9ed766dbc3c07dbba7869ff335eeb7e297c8e2d9) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "051-v2.v1", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) )
+ ROM_LOAD( "051-v4.v2", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "051-c1.c1", 0x000000, 0x100000, CRC(d624c132) SHA1(49c7e9f020cba45d7083b45252bcc03397f8c286) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "051-c2.c2", 0x000001, 0x100000, CRC(40d69f1e) SHA1(ec4a13582772594957f927622d50f54b0dfcd8d8) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+ROM_START( viewpointr ) /* Viewpoint - Hack by KiWi Starlight - (Unlimited lives and mega-bombs for p1 and p2) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "051tr.p1", 0x000000, 0x100000, CRC(063b9fa2) SHA1(e2d43646a976d82c809c6fad7dd40cc3dda07b15) )
+
+ NEO_SFIX_64K( "051tr.s1", CRC(6d0f146a) SHA1(537fc5ef099f46fef64d147c0d1264b319758b4f) )
+
+ NEO_BIOS_AUDIO_64K( "051tr.m1", CRC(d57bd7af) SHA1(9ed766dbc3c07dbba7869ff335eeb7e297c8e2d9) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "051-v2.v1", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) )
+ ROM_LOAD( "051-v4.v2", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "051-c1.c1", 0x000000, 0x100000, CRC(d624c132) SHA1(49c7e9f020cba45d7083b45252bcc03397f8c286) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "051-c2.c2", 0x000001, 0x100000, CRC(40d69f1e) SHA1(ec4a13582772594957f927622d50f54b0dfcd8d8) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+
+ROM_START( wakuwak7bh ) /* Waku Waku 7 - Hack by Dodowang - (Can choose Fernandez and Bonus Kun - only playable when 2 Player play AES/MVS) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "225bh.p1", 0x000000, 0x100000, CRC(7a8fda8e) SHA1(d55c427173278aa513cb86ee2a90ecd8402d55b0) )
+ ROM_LOAD16_WORD_SWAP( "225-p2.sp2", 0x100000, 0x200000, CRC(fe190665) SHA1(739d9a8fc2da34381654d9e291141eacc210ae5c) )
+
+ NEO_SFIX_128K( "225-s1.s1", CRC(71c4b4b5) SHA1(9410f13807f01082dc86f2d84051be4bed8e9f7c) )
+
+ NEO_BIOS_AUDIO_128K( "225-m1.m1", CRC(0634bba6) SHA1(153aaf016440500df7a4454f3f2f2911219cb7d8) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "225-v1.v1", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) )
+ ROM_LOAD( "225-v2.v2", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "225-c1.c1", 0x0000000, 0x400000, CRC(ee4fea54) SHA1(314b513a52b2cc88cbf2409d1934c357269a8bb2) )
+ ROM_LOAD16_BYTE( "225-c2.c2", 0x0000001, 0x400000, CRC(0c549e2d) SHA1(d8c4626231c92e43d9bf183202553ee2b5c532e6) )
+ ROM_LOAD16_BYTE( "225-c3.c3", 0x0800000, 0x400000, CRC(af0897c0) SHA1(2b8ec19b9dd0bd1f1171fb01b915e9d25ec8c421) )
+ ROM_LOAD16_BYTE( "225-c4.c4", 0x0800001, 0x400000, CRC(4c66527a) SHA1(6c8c9342fad70b456e282b0d52e7ad890e4673d3) )
+ ROM_LOAD16_BYTE( "225-c5.c5", 0x1000000, 0x400000, CRC(8ecea2b5) SHA1(cad51e6e76d8258a78becb6f4096dd061f537494) )
+ ROM_LOAD16_BYTE( "225-c6.c6", 0x1000001, 0x400000, CRC(0eb11a6d) SHA1(c6d4f978ff3ca190a3060ac52bd7347189194f76) )
+ROM_END
+
+ROM_START( wakuwak7h )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "225h.p1", 0x000000, 0x100000, CRC(0b7a3776) SHA1(3d8d9e7bdd481dbec3765901999b5148c0f3d776) )
+ ROM_LOAD16_WORD_SWAP( "225-p2.sp2", 0x100000, 0x200000, CRC(fe190665) SHA1(739d9a8fc2da34381654d9e291141eacc210ae5c) )
+
+ NEO_SFIX_128K( "225-s1.s1", CRC(71c4b4b5) SHA1(9410f13807f01082dc86f2d84051be4bed8e9f7c) )
+
+ NEO_BIOS_AUDIO_128K( "225-m1.m1", CRC(0634bba6) SHA1(153aaf016440500df7a4454f3f2f2911219cb7d8) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "225-v1.v1", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) )
+ ROM_LOAD( "225-v2.v2", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "225-c1.c1", 0x0000000, 0x400000, CRC(ee4fea54) SHA1(314b513a52b2cc88cbf2409d1934c357269a8bb2) )
+ ROM_LOAD16_BYTE( "225-c2.c2", 0x0000001, 0x400000, CRC(0c549e2d) SHA1(d8c4626231c92e43d9bf183202553ee2b5c532e6) )
+ ROM_LOAD16_BYTE( "225-c3.c3", 0x0800000, 0x400000, CRC(af0897c0) SHA1(2b8ec19b9dd0bd1f1171fb01b915e9d25ec8c421) )
+ ROM_LOAD16_BYTE( "225-c4.c4", 0x0800001, 0x400000, CRC(4c66527a) SHA1(6c8c9342fad70b456e282b0d52e7ad890e4673d3) )
+ ROM_LOAD16_BYTE( "225-c5.c5", 0x1000000, 0x400000, CRC(8ecea2b5) SHA1(cad51e6e76d8258a78becb6f4096dd061f537494) )
+ ROM_LOAD16_BYTE( "225-c6.c6", 0x1000001, 0x400000, CRC(0eb11a6d) SHA1(c6d4f978ff3ca190a3060ac52bd7347189194f76) )
+ROM_END
+
+
+ROM_START( wjammersf )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "065f.p1", 0x000000, 0x100000, CRC(a458cc18) SHA1(0d476edef593c4fa6f50ec4457f69629b2be37e7) )
+
+ NEO_SFIX_128K( "065-s1.s1", CRC(074b5723) SHA1(86d3b3bb5414f43e4d3b7a2af0db23cc71ce8412) )
+
+ NEO_BIOS_AUDIO_128K( "065-m1.m1", CRC(52c23cfc) SHA1(809a7e072ad9acbffc25e9bd27cdb97638d09d07) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "065-v1.v1", 0x000000, 0x100000, CRC(ce8b3698) SHA1(7d75e2a5cf8c90be422f8b425447e81597fe145a) )
+ ROM_LOAD( "065-v2.v2", 0x100000, 0x100000, CRC(659f9b96) SHA1(62f40365212153bc3b92a1187fa44f6cdc7f7b83) )
+ ROM_LOAD( "065-v3.v3", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) )
+ ROM_LOAD( "065-v4.v4", 0x300000, 0x100000, CRC(5dee7963) SHA1(f8e6de73d65dd80b29c711f00835a574a770cb4e) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "065-c1.c1", 0x000000, 0x100000, CRC(c7650204) SHA1(42918d700d59864f8ab15caf968a062a563c9b09) )
+ ROM_LOAD16_BYTE( "065-c2.c2", 0x000001, 0x100000, CRC(d9f3e71d) SHA1(fad1f64061eac1bf85bf6d75d2eae974a8c94069) )
+ ROM_LOAD16_BYTE( "065-c3.c3", 0x200000, 0x100000, CRC(40986386) SHA1(65795a50197049681265946713d416c9cdb68f08) )
+ ROM_LOAD16_BYTE( "065-c4.c4", 0x200001, 0x100000, CRC(715e15ff) SHA1(ac8b8b01f5c7384b883afbe0cf977430378e3fef) )
+ROM_END
+
+ROM_START( wjammersk )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "065-p1.p1", 0x000000, 0x100000, CRC(6692c140) SHA1(5da574e906974fac92bb2f49bdeea257c014a897) )
+
+ NEO_SFIX_128K( "065-s1.s1", CRC(074b5723) SHA1(86d3b3bb5414f43e4d3b7a2af0db23cc71ce8412) )
+
+ NEO_BIOS_AUDIO_128K( "065-m1.m1", CRC(52c23cfc) SHA1(809a7e072ad9acbffc25e9bd27cdb97638d09d07) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "065-v1.v1", 0x000000, 0x100000, CRC(ce8b3698) SHA1(7d75e2a5cf8c90be422f8b425447e81597fe145a) )
+ ROM_LOAD( "065-v2.v2", 0x100000, 0x100000, CRC(659f9b96) SHA1(62f40365212153bc3b92a1187fa44f6cdc7f7b83) )
+ ROM_LOAD( "065-v3.v3", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) )
+ ROM_LOAD( "065-v4.v4", 0x300000, 0x100000, CRC(5dee7963) SHA1(f8e6de73d65dd80b29c711f00835a574a770cb4e) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "065k.c1", 0x000000, 0x100000, CRC(ebded27e) SHA1(574a0086bf13a5ac5d27de90c4d4611a19668cf8) )
+ ROM_LOAD16_BYTE( "065k.c2", 0x000001, 0x100000, CRC(f5483767) SHA1(756dd8e161bf428659c642b5056aa0bcf5e0d9a8) )
+ ROM_LOAD16_BYTE( "065-c3.c3", 0x200000, 0x100000, CRC(40986386) SHA1(65795a50197049681265946713d416c9cdb68f08) )
+ ROM_LOAD16_BYTE( "065-c4.c4", 0x200001, 0x100000, CRC(715e15ff) SHA1(ac8b8b01f5c7384b883afbe0cf977430378e3fef) )
+ROM_END
+
+
+ROM_START( zupapad )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "070-p1.p1", 0x000000, 0x100000, CRC(5a96203e) SHA1(49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1) )
+
+ NEO_SFIX_128K( "070d.s1", CRC(307967ba) SHA1(b91430d0fb08ca6e0d63ded42016fd2a5cd9728b) )
+
+ NEO_BIOS_AUDIO_128K( "070-epr.m1", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) )
+
+ ROM_REGION( 0x0200000, "ymsnd", 0 )
+ ROM_LOAD( "070-v1.v1", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "070d.c1", 0x0000000, 0x200000, CRC(2bf91ba1) SHA1(5eecbc5ec2c493d2ffd0e57012e0808d4349871f) )
+ ROM_LOAD16_BYTE( "070d.c2", 0x0000001, 0x200000, CRC(8700a5b8) SHA1(bc1ff7e55309120c0ca2d8800b7b003dc3c5ed65) )
+ROM_END
+
+
+
+GAME( 1991, 2020bbcd, 2020bb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "2020 Super Baseball (CD conversion)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, androdunpx, androdun, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Andro Dunos (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, aofbh, aof, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Art of Fighting (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2b, aof2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Art of Fighting 2 (Geese instead of Mr. Big)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2b1, aof2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Art of Fighting 2 (Boss hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2bh, aof2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Art of Fighting 2 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2br2, aof2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Art of Fighting 2 (Geese instead of Ryo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3b, aof3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Art of Fighting 3 (Boss hack by Dodowang)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3bh, aof3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Art of Fighting 3 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2000, bangbeadp, bangbead, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Bang Bead (prototype)", MACHINE_SUPPORTS_SAVE ) // commented out in official MAME source
+GAME( 1990, bjourneypx, bjourney, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Blue's Journey / Raguy (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, breakersbh, breakers, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Breakers (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, breakersp, breakers, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Breakers (Move change 26c?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, breakersy, breakers, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Breakers (Boss Robert PPX Team hack remixed by ZKW)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, breakrevb, breakrev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Breakers Revenge (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, breakrevpp, breakrev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Pipi899", "Breakers Revenge (Enhanced Power hack by Pipi899 11/06/09)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, breakrevy, breakrev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Breakers Revenge (Boss Robert PPX Team hack remixed by ZKW)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfhp, burningf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Lb70", "Burning Fight (High Power by EEZEZY(LB70))", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1999, ctomadaypx, ctomaday, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Captain Tomaday (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1997, dragons1, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face", "Dragon's Heaven", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2009, eightmaneb, eightman, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Eight Man (Enhanced Version hack by Blackheart 2009-08-22)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1994, fightfevbs, fightfev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Fight Fever (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfevk, fightfev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Fight Fever (Kanji Patch)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1998, flipshotk, flipshot, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Battle Flip Shot (Korean)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, galaxyfgb, galaxyfg, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Galaxy Fight (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, galaxyfgbh, galaxyfg, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Galaxy Fight (Boss Hack 2014 Edition by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, ganryud, ganryu, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Visco", "Ganryu / Musashi Ganryuki (decrypted C)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, gowcaizrb, gowcaizr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Voltage Fighter (Boss hack by Wesker (FGCH))", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gowcaizrbs, gowcaizr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Voltage Fighter (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, gowcaizrrv, gowcaizr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Voltage Fighter (Boss Revised Version 2009-10-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gowcaizry, gowcaizr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Voltage Fighter - Gowcaizer (Boss Hack - Easy Moves)", MACHINE_SUPPORTS_SAVE)
+
+GAME( 1991, gpilotscd, gpilots, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Ghost Pilots (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilotse, gpilots, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Robert", "Ghost Pilots (Enhanced Version, Hack by Robert)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilotspx, gpilots, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Ghost Pilots (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1996, ironcladb, ironclad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Ironclad (conversion from Wii)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironcladcd, ironclad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Ironclad (CD conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+
+GAME( 2001, jockeygpd, jockeygp, neogeo_noslot, jockeygp, neogeo_hbmame, jckeygpd, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (decrypted C)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2007, joyjoycd, joyjoy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Puzzled (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, joyjoycd1, joyjoy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Puzzled / Joy Joy Kid (CD conversion)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, kabukiklb, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den (Boss Hack by Ydmis and Creamymami)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukikleh, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Far East of Eden - Kabuki Klash (Add Char)", MACHINE_SUPPORTS_SAVE ) // Manto, Karakuri, Jyashinsai and Lucifeller
+GAME( 1995, kabukiklgm, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Flycboy", "Far East of Eden - Kabuki Klash (Color Fix set 2 - Title screen and char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukiklgmc, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Flycboy", "Far East of Eden - Kabuki Klash (Color Fix set 1 - Title screen and char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukiklmc, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Far East of Eden - Kabuki Klash (Magic always max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukiklyc, kabukikl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Far East of Eden - Kabuki Klash (Add Char - Magic always max)", MACHINE_SUPPORTS_SAVE ) // Manto, Karakuri, Jyashinsai and Lucifeller - Based on kabukleh
+
+GAME( 1994, karnovreh, karnovr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Karnov's Revenge (Add Char)", MACHINE_SUPPORTS_SAVE ) // Big Tornado
+
+GAME( 1996, kizunab, kizuna, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kizuna Encounter (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, kizunaeh, kizuna, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "007325", "Kizuna Encounter (Easy Moves hack by 007325 2009-02-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2004, lans2k4d, shocktr2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Lansquenet 2004 (Shock Troopers - 2nd Squad Bootleg / fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, lbowlingcd, lbowling, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "League Bowling (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresortpx, lresort, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Last Resort (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2003, magdrop3fr, magdrop3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Magical Drop III (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, maglordpx, maglord, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Magician Lord (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2003, matrima, matrim, neogeo_noslot, neogeo, neogeo_hbmame, matrima, ROT0, "Noise Factory / Atlus Corporation", "Power Instinct - Matrimelee / Shin Gouketsuji Ichizoku Toukon (Alternate)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimbh, matrim, neogeo_noslot, neogeo, neogeo_noslot_state, matrim, ROT0, "Creamymami", "Matrimelee (Boss hack by Creamymami (EGCG))", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimd, matrim, neogeo_noslot, neogeo, neogeo_hbmame, matrimd, ROT0, "Noise Factory / Atlus", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660)(NGH-2660) (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimdh, matrim, neogeo_noslot, neogeo, neogeo_hbmame, matrmehc, ROT0, "Dodowang", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (decrypted C) hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimeh, matrim, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Matrimelee (Bootleg, Hero Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimehc, matrim, neogeo_noslot, neogeo, neogeo_hbmame, matrmehc, ROT0, "Creamymami", "Matrimelee (Pow always max - MVS protection rem)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimnd, matrim, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Matrimelee (hack nd)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2005, miexchngfr, miexchng, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Money Puzzle Exchanger (French)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, mutnatex, mutnat, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Pipi899", "Mutation Nation (Ex version, Pipi899)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2008, nam1975g, nam1975, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "NAM-1975 (hack?)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, nam1975h, nam1975, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blast of the Wolf", "NAM-1975 (Max Blast edition)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1990, ncombatpk, ncombat, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Krizal chen", "Ninja Combat (Plus hack by Krizal chen (Dsght))", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ncommandsp, ncommand, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "e107", "Ninja Commando (Super Plus hack by e107 2009-08-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, neocup98k, neocup98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Neo-Geo Cup '98 - The Road to the Victory (Korean)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1996, ninjamasasp, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "Ninja Master's (Plus Remixed by ZKW)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamaschl, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Ninja Master's (Hack by CHL)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamaseh, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Ninja Master's (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamasehc, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Ninja Master's (Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamasehyc, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Ninja Master's (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamasha, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "007325", "Ninja Master's - haoh-ninpo-cho PLUS (Hack by 007325)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ninjamashb, ninjamas, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "007325", "Ninja Master's (Happy Batter Edition hack by 007325 2009-09-09)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2000, nitdd, nitd, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Eleven / Gavaking", "Nightmare in the Dark (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, nitdfr, nitd, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Arkatrad", "Nightmare in the Dark (French)", MACHINE_SUPPORTS_SAVE ) // based on decrypted C
+GAME( 2005, nitdfro, nitd, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Arkatrad", "Nightmare in the Dark (French) (Old)", MACHINE_SUPPORTS_SAVE ) // based on decrypted C
+GAME( 2000, nitdfro1, nitd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eleven / Gavaking", "Nightmare in the Dark French (NEO ARC Traduction)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, nitdpx, nitd, neogeo_noslot, neogeo, neogeo_noslot_state, nitd, ROT0, "Xyahzhs", "Nightmare in the Dark (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, nitdsp, nitd, neogeo_noslot, neogeo, neogeo_noslot_state, nitd, ROT0, "hack", "Nightmare in the Dark (Spanish)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, nitdsp1, nitd, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "hack", "Nightmare in the Dark (Spanish.Rev2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, nitdsp2, nitd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Meganiuz", "Nightmare in the Dark Spanish (Version 1.1 by MEGANIUZ)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2009, pbcrazyb1, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Elrayzeur", "Puzzle Bobble Crazy (beta1 2009-07-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, pbcrazyb2, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Elrayzeur", "Puzzle Bobble Crazy (beta2 2009-07-23)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pbobblenba, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Taito", "Puzzle Bobble / Bust-A-Move (Neo-Geo) (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pbobblencd, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Puzzle Bobble / Bust-A-Move (Neo-Geo)(CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pbobblendx, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Puzzle Bobble Deluxe / Bust-A-Move Deluxe", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2003, pnyaad, pnyaa, neogeo_noslot, neogeo, neogeo_hbmame, pnyaad, ROT0, "Aiky", "Pochi & Nyaa (decrypted C)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1999, preisle2d, preisle2, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Yumekobo", "Prehistoric Isle 2 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, preisle2px, preisle2, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Xyahzhs", "Prehistoric Isle 2 (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pspikes2cd, pspikes2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Power Spikes II (CD conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1996, ragnagrdbe, ragnagrd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Operation Ragnagard (Easy Moves hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ragnagrdbs, ragnagrd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Operation Ragnagard (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ragnagrdeh, ragnagrd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Operation Ragnagard (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, ragnagrdsb, ragnagrd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Lichenzhao", "Operation Ragnagard (Super Boss Easy Moves hack by Lichenzhao 2009-11-16)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1999, s1945pd, s1945p, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "Psikyo", "Strikers 1945 Plus (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, s1945peh, s1945p, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "KrysoFun", "Strikers 1945 Plus (Super Shot hack by KrysoFun)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, s1945ph, s1945p, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "Yumeji", "Strikers 1945 Plus (Ascender P55 hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, s1945pwe, s1945p, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "Wesker", "Strikers 1945 Plus (Hack)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, savagereb, savagere, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji, Dodowang", "Savage Reign (Boss hack by Yumeji/Dodowang)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, savageredb, savagere, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Savage Reign (Debug menu unlocked - P1 and P2 Press select to change stage)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sdodgebp, sdodgeb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Super Dodge Ball (Power hack by Blackheart 2009-09-02)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, shocktr2px, shocktr2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Shock Troopers - 2nd Squad (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, shocktr2w, shocktr2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Shock Troopers - 2nd Squad (Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, shocktrosp, shocktro, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "e107", "Shock Troopers (Super Plus hack by e107 2009-08-18)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, sonicwi2eh, sonicwi2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Robert", "Aero Fighters 2 / Sonic Wings 2 (Hack alternate set by Robert)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, sonicwi2px, sonicwi2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Aero Fighters 2 / Sonic Wings 2 (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sonicwi3eh, sonicwi3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Robert", "Aero Fighters 3 / Sonic Wings 3 (Hack alternate set by Robert)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sonicwi3h, sonicwi3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Aero Fighters 3 / Sonic Wings 3 (ExChar hack by Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sonicwi3px, sonicwi3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Aero Fighters 3 / Sonic Wings 3 (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, spinmasth, spinmast, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Robert", "Spin Master / Miracle Adventure (Enhanced Version, Hack by Robert)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, spinmastpx, spinmast, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Spin Master / Miracle Adventure (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ssidekicd, ssideki, neogeo_noslot, neogeo, neogeo_noslot_state, fatfury2, ROT0, "CD_conv", "Super Sidekicks / Tokuten Ou (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, strhoopcd, strhoop, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Street Hoop (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, superspycd, superspy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "The Super Spy (CD conversion)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1994, tophuntrpx, tophuntr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xyahzhs", "Top Hunter - Roddy & Cathy (Plus Max hack by Xyahzhs)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, tpgolfcd, tpgolf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Top Player's Golf (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, trallycd, trally, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CD_conv", "Thrash Rally (CD conversion)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, twinsprih, twinspri, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Twinkle Star Sprites (ExChar hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, viewpoinf, viewpoin, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SHYMA.X", "Viewpoint (French by NEOARC Team)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, viewpointr, viewpoin, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KiWi Starlight", "Viewpoint Enhanced", MACHINE_SUPPORTS_SAVE ) // Unlimited lives and mega-bombs for p1 and p2
+
+GAME( 1996, wakuwak7bh, wakuwak7, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Waku Waku 7 (Add Char - 2 players only)", MACHINE_SUPPORTS_SAVE ) // Fernandez and Bonus Kun
+GAME( 1996, wakuwak7h, wakuwak7, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Waku Waku 7 (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1994, wjammersf, wjammers, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Elrayzeur", "Windjammers (French v0.1 beta by Elrayzeur)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wjammersk, wjammers, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Aneue Bannzai", "Windjammers (Korean hack by Aneue Bannzai)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2001, zupapad, zupapa, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Zupapa! (custom decrypted C)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/neogeo_noslot.cpp b/docs/release/src/hbmame/drivers/neogeo_noslot.cpp
new file mode 100644
index 00000000000..7f61b71aa90
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/neogeo_noslot.cpp
@@ -0,0 +1,9212 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari, Robbbert
+// thanks-to:Fuzz
+
+#include "emu.h"
+#include "includes/neogeo.h"
+
+
+
+static ADDRESS_MAP_START( main_map_noslot, AS_PROGRAM, 16, neogeo_state )
+ AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r)
+ AM_RANGE(0x000080, 0x0fffff) AM_ROM
+ AM_IMPORT_FROM( neogeo_main_map )
+ADDRESS_MAP_END
+
+
+static MACHINE_CONFIG_DERIVED_CLASS( neogeo_noslot, neogeo_arcade, neogeo_noslot_state ) // no slot config (legacy mame)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(main_map_noslot)
+
+ //joystick controller
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "joy", true)
+
+ //no mahjong controller
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", true)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
+
+ MCFG_MSLUGX_PROT_ADD("mslugx_prot")
+ MCFG_SMA_PROT_ADD("sma_prot")
+ MCFG_CMC_PROT_ADD("cmc_prot")
+ MCFG_PCM2_PROT_ADD("pcm2_prot")
+ MCFG_PVC_PROT_ADD("pvc_prot")
+ MCFG_NGBOOTLEG_PROT_ADD("bootleg_prot")
+ MCFG_KOF2002_PROT_ADD("kof2002_prot")
+ MCFG_FATFURY2_PROT_ADD("fatfury2_prot")
+ MCFG_KOF98_PROT_ADD("kof98_prot")
+ MCFG_SBP_PROT_ADD("sbp_prot")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED_CLASS( neogeo_kog, neogeo_arcade, neogeo_noslot_kog_state )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(main_map_noslot)
+
+ //joystick controller
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "joy", true)
+
+ //no mahjong controller
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", true)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
+
+ MCFG_NGBOOTLEG_PROT_ADD("bootleg_prot")
+ MCFG_KOG_PROT_ADD("kog_prot")
+MACHINE_CONFIG_END
+
+// these basically correspond to the cabinets which were available in arcades:
+// with mahjong panel, with dial for Pop'n Bounce and with 4 controls for Kizuna...
+static MACHINE_CONFIG_DERIVED( neogeo_mj, neogeo_noslot )
+
+ //no joystick panel
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "", true)
+
+ //P1 mahjong controller
+ MCFG_DEVICE_REMOVE("ctrl1")
+ MCFG_DEVICE_REMOVE("ctrl2")
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "mahjong", true)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( neogeo_dial, neogeo_noslot )
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "dial", true)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( neogeo_imaze, neogeo_noslot )
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "irrmaze", true)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( neogeo_kiz4p, neogeo_noslot )
+ MCFG_DEVICE_REMOVE("edge")
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "kiz4p", true)
+MACHINE_CONFIG_END
+
+// this is used by V-Liner, which handles differently inputs...
+static MACHINE_CONFIG_DERIVED( neogeo_noctrl, neogeo_noslot )
+ MCFG_DEVICE_REMOVE("ctrl1")
+ MCFG_DEVICE_REMOVE("ctrl2")
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * Official sets
+ *
+ *************************************
+
+ About supported sets:
+ =====================
+
+ MVS carts (arcade) were released before the AES carts (home)
+ The actual codepath taken depends entirely on the BIOS rom, not the roms in the cartridge, which (with
+ a few exceptions) support both codepaths.
+
+ The initial AES releases are therefore later revisions of the game, often with bug fixes over the
+ initial MVS releases. It isn't uncommon for later production runs and bootlegs to use these newer sets,
+ so all of them are supported in MAME.
+
+ Likewise, because the MVS carts were released first (and were produced in higher numbers and generally
+ have a lower cost) it's not uncommon for AES units to operate with converted MVS carts, so, with the
+ exception of the sets that specifically lock out the AES mode* these sets are all equally suitable
+ for MESS.
+ * nitd, kof2001 (initial release has no AES code), and a number of the hacked bootlegs.
+
+ The 'MVS ONLY RELEASE' tagged sets were not officially released for the AES (home) system.
+ Information about this can be found at 'The NeoGeo Master List' (unofficial) - http://www.neo-geo.com
+ and the official NeoGeo museum - http://neogeomuseum.snkplaymore.co.jp/english/index.php
+ Several unofficial 'conversions' of these sets can be found across the internet.
+ For completeness sake: Some of these have sets have been released for the CD system.
+
+
+ M1 (sound driver) rom information:
+ ==================================
+ . Many 'M1' roms contain mirrored data (64k mirrored or 128k mirrored).
+ . Found on several early sets (ID 0001 ~ 0045) and on the last sets (ID 0267 ~ 0272).
+ . This caused some confusion and incorrect rom sizes.
+ . Minimum 'M1' size is 1mbit, maximum size 4mbit.
+ . The remaining 64k 'M1' are marked BAD_DUMP.
+
+
+ S1 (text layer) rom information:
+ ================================
+ . All 'S1' roms found on prom are 1mbit.
+ . The remainig 64k 'S1' are marked BAD_DUMP.
+
+
+ MULTI PLAY MODE:
+ ================
+ The NeoGeo has three games which support MULTI PLAY MODE (Riding Hero / League Bowling / Trash Rally).
+ This allows you to 'link' 4 games (MVS) / 2 games (AES) using in game 'Multi-Play' option. To establish
+ a link between the carts you have to connect the carts to each other by a communicator cable. The communicatior
+ cable is a regular headphone cable with stereo pin jack. It has been reported that you can also 'link' MVS <-> AES.
+
+ All three games use a special PROG board for MULTI PLAY MODE support:
+ . Riding Hero (AES - NEO-AEG PROG-HERO / MVS NEO-MVS PROG-HERO)
+ . League Bowling (AES - NEO-AEG PROG-HERO / MVS NEO-MVS PROG-HERO)
+ . Trash Rally (AES - NEO-AEG PROG42G-COM / NEO-MVS PROG42G-COM)
+
+ A HD6301V1P MCU on the above boards is used for establishing the 'link'. The MCU has a 4kb internal ROM which
+ is not dumped.
+ To use the MULTI PLAY MODE on your MVS you have to set the following hardware dips:
+ HARD DIP SETTING 4 5 6
+ CABINET 1: OFF OFF ON
+ CABINET 2: OFF ON ON
+ CABINET 3: ON OFF ON
+ CABINET 4: ON ON ON
+
+
+ SPHERO SYMPHONY:
+ ================
+ Several early games have a 'feature' called "sphero symphony". None of the games featuring "sphero symphony"
+ uses special hardware. It is something sound based, but what exactly it is (specially arragend samples,
+ FM synthesis etc.) is unknown. The AES and MVS releases share the same sound data and driver.
+
+ The AES game-inserts and manuals have an eye-shaped logo with the following text (not to be found on MVS sets):
+ sphero
+ symphony
+ STEREOPHONIC SOUND
+
+ Experience this "LIVE" 3 dimensional sound coming from all around you.
+
+ Games featuring "sphero symphony":
+ ID-0006 - Riding Hero
+ ID-0007 - Alpha Mission II / ASO II - Last Guardian
+ ID-0009 - Ninja Combat
+ ID-0010 - Cyber-Lip
+ ID-0011 - The Super Spy
+ ID-0014 - Mutation Nation
+ ID-0017 - Sengoku / Sengoku Denshou
+ ID-0018 - Burning Fight
+ ID-0020 - Ghost Pilots
+ ID-0024 - Last Resort
+ ID-0031 - Soccer Brawl
+ ID-0033 - Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai
+ ID-0034 - Football Frenzy
+ ID-0037 - Crossed Swords
+ ID-0038 - Thrash Rally
+ ID-0039 - King of the Monsters 2 - The Next Thing
+ ID-0041 - Baseball Stars 2
+ ID-0044 - Art of Fighting / Ryuuko no Ken
+ ID-0047 - Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai
+ ID-0049 - Andro Dunos
+
+*/
+
+
+// Game specific input definitions
+
+static INPUT_PORTS_START( dualbios )
+ PORT_INCLUDE( neogeo )
+
+ /* the rom banking seems to be tied directly to the dipswitch */
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Region ) ) PORT_DIPLOCATION("SW:3") PORT_CHANGED_MEMBER(DEVICE_SELF, neogeo_state, select_bios, 0)
+ PORT_DIPSETTING( 0x00, DEF_STR( Asia ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Japan ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( mjneogeo )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Joystick ) )
+ PORT_DIPSETTING( 0x00, "Mahjong Panel" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( kizuna4p )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Players ) ) PORT_DIPLOCATION("SW:2")
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x00, "4" )
+
+ PORT_MODIFY("SYSTEM")
+ PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, kizuna4p_start_r, nullptr)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( irrmaze )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("SYSTEM")
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( vliner )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("DSW")
+ PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("View Payout Table/Big")
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Bet/Small")
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Stop/Double Up")
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Start/Collect")
+
+ PORT_MODIFY("SYSTEM")
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* this bit is used.. */
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* this bit is used.. */
+
+ PORT_MODIFY("AUDIO/COIN")
+ PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN5")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Operator Menu") PORT_CODE(KEYCODE_F1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Clear Credit")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Hopper Out")
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ /* not sure what any of these bits are */
+ PORT_START("IN6")
+ PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( jockeygp )
+ PORT_INCLUDE( neogeo )
+
+ PORT_MODIFY("SYSTEM")
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* game freezes with this bit enabled */
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* game freezes with this bit enabled */
+INPUT_PORTS_END
+
+
+
+/****************************************
+ ID-0001
+ . NGM-001
+ NEO-MVS PROG-NAM / NEO-MVS CHA-32
+ . NGH-001
+ NEO-AEG PROG-NAM / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( nam1975 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "001-p1.p1", 0x000000, 0x080000, CRC(cc9fc951) SHA1(92f4e6ddeeb825077d92dbb70b50afea985f15c0) )
+
+ NEO_SFIX_128K( "001-s1.s1", CRC(7988ba51) SHA1(bc2f661f381b06b34ac2fa215dd5689d3bf84832) )
+
+ NEO_BIOS_AUDIO_256K( "001-m1.m1", CRC(ba874463) SHA1(a83514f4b20301f84a98699900e2593f1c1b8846) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "001-v11.v11", 0x000000, 0x080000, CRC(a7c3d5e5) SHA1(e3efc86940f91c53b7724c4566cfc21ea1a7a465) )
+ // AES has different label, data is the same: 001-v1.v1
+
+ ROM_REGION( 0x180000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "001-v21.v21", 0x000000, 0x080000, CRC(55e670b3) SHA1(a047049646a90b6db2d1882264df9256aa5a85e5) )
+ // AES has different label, data is the same: 001-v2.v21
+ ROM_LOAD( "001-v22.v22", 0x080000, 0x080000, CRC(ab0d8368) SHA1(404114db9f3295929080b87a5d0106b40da6223a) )
+ ROM_LOAD( "001-v23.v23", 0x100000, 0x080000, CRC(df468e28) SHA1(4e5d4a709a4737a87bba4083aeb788f657862f1a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "001-c1.c1", 0x000000, 0x80000, CRC(32ea98e1) SHA1(c2fb3fb7dd14523a4b4b7fbdb81f44cb4cc48239) )
+ ROM_LOAD16_BYTE( "001-c2.c2", 0x000001, 0x80000, CRC(cbc4064c) SHA1(224c970fd060d841fd430c946ef609bb57b6d78c) )
+ ROM_LOAD16_BYTE( "001-c3.c3", 0x100000, 0x80000, CRC(0151054c) SHA1(f24fb501a7845f64833f4e5a461bcf9dc3262557) )
+ ROM_LOAD16_BYTE( "001-c4.c4", 0x100001, 0x80000, CRC(0a32570d) SHA1(f108446ec7844fde25f7a4ab454f76d384bf5e52) )
+ ROM_LOAD16_BYTE( "001-c5.c5", 0x200000, 0x80000, CRC(90b74cc2) SHA1(89898da36db259180e5261ed45eafc99ca13e504) )
+ ROM_LOAD16_BYTE( "001-c6.c6", 0x200001, 0x80000, CRC(e62bed58) SHA1(d05b2903b212a51ee131e52c761b714cb787683e) )
+ROM_END
+
+/****************************************
+ ID-0002
+ . NGM-002
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-002
+ NEO-AEG PROG-4A / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( bstars ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "002-pg.p1", 0x000000, 0x080000, CRC(c100b5f5) SHA1(4cea9f29ad67288c3eccfa4cf961ee9782e49165) )
+
+ NEO_SFIX_128K( "002-s1.s1", CRC(1a7fd0c6) SHA1(3fc701b7afddab369ddf9dedfbc5e1aaf80b8af3) )
+
+ NEO_BIOS_AUDIO_256K( "002-m1.m1", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "002-v11.v11", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) )
+ ROM_LOAD( "002-v12.v12", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) )
+ ROM_LOAD( "002-v13.v13", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) )
+ ROM_LOAD( "002-v14.v14", 0x180000, 0x080000, CRC(c7e11c38) SHA1(5abf2a7877e0162c758a4dcf09f183930fa7ef24) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "002-v21.v21", 0x000000, 0x080000, CRC(04a733d1) SHA1(84159368c0f6de2c3b8121227201cd3422455cf6) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "002-c1.c1", 0x000000, 0x080000, CRC(aaff2a45) SHA1(c91ee72d1d74514df8ec44fca703409d92158ae3) )
+ ROM_LOAD16_BYTE( "002-c2.c2", 0x000001, 0x080000, CRC(3ba0f7e4) SHA1(f023b134b9c7994f477867307d2732026033501d) )
+ ROM_LOAD16_BYTE( "002-c3.c3", 0x100000, 0x080000, CRC(96f0fdfa) SHA1(9f779a1ae46aeda54d69382b074392ade687f62f) )
+ ROM_LOAD16_BYTE( "002-c4.c4", 0x100001, 0x080000, CRC(5fd87f2f) SHA1(a5dd6f26f9485f216c2428ae1792c182beb10dbc) )
+ ROM_LOAD16_BYTE( "002-c5.c5", 0x200000, 0x080000, CRC(807ed83b) SHA1(3268e7d4602c3f55f1e0da2c80653d5ae461ef67) )
+ ROM_LOAD16_BYTE( "002-c6.c6", 0x200001, 0x080000, CRC(5a3cad41) SHA1(c620d18f4ff32ed5489c941dfc641030a54f1c14) )
+ROM_END
+
+ROM_START( bstarsh ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "002-p1.p1", 0x000000, 0x080000, CRC(3bc7790e) SHA1(50b2fffb1278151bb4849fbe1f8cb23916019815) )
+
+ NEO_SFIX_128K( "002-s1.s1", CRC(1a7fd0c6) SHA1(3fc701b7afddab369ddf9dedfbc5e1aaf80b8af3) )
+
+ NEO_BIOS_AUDIO_256K( "002-m1.m1", CRC(4ecaa4ee) SHA1(50abfb8eed6cb4887393089f9ccc76f306ef69b5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "002-v11.v11", 0x000000, 0x080000, CRC(b7b925bd) SHA1(644c92fa90e74998e73714f74b1e0680ee372a07) )
+ ROM_LOAD( "002-v12.v12", 0x080000, 0x080000, CRC(329f26fc) SHA1(2c8009edc88c6b26f7be5beb2b8d260aac394ee1) )
+ ROM_LOAD( "002-v13.v13", 0x100000, 0x080000, CRC(0c39f3c8) SHA1(db8f8670639601215707d918d4fb93221460446a) )
+ ROM_LOAD( "002-v14.v14", 0x180000, 0x080000, CRC(c7e11c38) SHA1(5abf2a7877e0162c758a4dcf09f183930fa7ef24) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "002-v21.v21", 0x000000, 0x080000, CRC(04a733d1) SHA1(84159368c0f6de2c3b8121227201cd3422455cf6) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "002-c1.c1", 0x000000, 0x080000, CRC(aaff2a45) SHA1(c91ee72d1d74514df8ec44fca703409d92158ae3) )
+ ROM_LOAD16_BYTE( "002-c2.c2", 0x000001, 0x080000, CRC(3ba0f7e4) SHA1(f023b134b9c7994f477867307d2732026033501d) )
+ ROM_LOAD16_BYTE( "002-c3.c3", 0x100000, 0x080000, CRC(96f0fdfa) SHA1(9f779a1ae46aeda54d69382b074392ade687f62f) )
+ ROM_LOAD16_BYTE( "002-c4.c4", 0x100001, 0x080000, CRC(5fd87f2f) SHA1(a5dd6f26f9485f216c2428ae1792c182beb10dbc) )
+ ROM_LOAD16_BYTE( "002-c5.c5", 0x200000, 0x080000, CRC(807ed83b) SHA1(3268e7d4602c3f55f1e0da2c80653d5ae461ef67) )
+ ROM_LOAD16_BYTE( "002-c6.c6", 0x200001, 0x080000, CRC(5a3cad41) SHA1(c620d18f4ff32ed5489c941dfc641030a54f1c14) )
+ROM_END
+
+/****************************************
+ ID-0003
+ . NGM-003
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-003
+ NEO-AEG PROG-4B / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( tpgolf ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "003-p1.p1", 0x000000, 0x080000, CRC(f75549ba) SHA1(3f7bdf5e2964e921fe1dd87c51a79a1a501fc73f) )
+ ROM_LOAD16_WORD_SWAP( "003-p2.p2", 0x080000, 0x080000, CRC(b7809a8f) SHA1(1604c889592c9610668bff296de48a0d6906156d) )
+
+ NEO_SFIX_128K( "003-s1.s1", CRC(7b3eb9b1) SHA1(39cd8bad9f8bfdeb8ac681b5b79ae5aa81c8dd5f) )
+
+ NEO_BIOS_AUDIO_128K( "003-m1.m1", CRC(4cc545e6) SHA1(8e014b8cab3e5b3995756a4ea52ce49c36866377) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "003-v11.v11", 0x000000, 0x080000, CRC(ff97f1cb) SHA1(defa249d46ae220f7bfa70746f5202bbbcc3e5fe) )
+ // AES has different label, data is the same (also found on MVS): 003-v1.v11
+
+ ROM_REGION( 0x200000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "003-v21.v21", 0x000000, 0x080000, CRC(d34960c6) SHA1(36d5877d5e42aab943f4d693159f4f3ad8b0addc) )
+ // AES has different label, data is the same (also found on MVS): 003-v2.v21
+ ROM_LOAD( "003-v22.v22", 0x080000, 0x080000, CRC(9a5f58d4) SHA1(2b580595e1820430a36f06fd3e0e0b8f7d686889) )
+ ROM_LOAD( "003-v23.v23", 0x100000, 0x080000, CRC(30f53e54) SHA1(22461f88a56d272b78dbc23204c0c6816200532b) )
+ ROM_LOAD( "003-v24.v24", 0x180000, 0x080000, CRC(5ba0f501) SHA1(ca02937a611a2c50c9e4b54f8fd4eaea09259894) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "003-c1.c1", 0x000000, 0x80000, CRC(0315fbaf) SHA1(583c9253219c1026d81ee5e0cf5568683adc2633) )
+ ROM_LOAD16_BYTE( "003-c2.c2", 0x000001, 0x80000, CRC(b4c15d59) SHA1(b0d8ec967f9b8e5216301c10b2d36912abce6515) )
+ ROM_LOAD16_BYTE( "003-c3.c3", 0x100000, 0x80000, CRC(8ce3e8da) SHA1(bc6c49b27d498f75a0d1a8c4d0cca75e140b9efc) )
+ ROM_LOAD16_BYTE( "003-c4.c4", 0x100001, 0x80000, CRC(29725969) SHA1(f1407da84919c2b3fe0e8f1fca65934b147c86c7) )
+ ROM_LOAD16_BYTE( "003-c5.c5", 0x200000, 0x80000, CRC(9a7146da) SHA1(2fc83d13e3e9565919aab01bf2a1b028f433b547) )
+ ROM_LOAD16_BYTE( "003-c6.c6", 0x200001, 0x80000, CRC(1e63411a) SHA1(ee397e2f679042e87b37d95837af62bb95a72af9) )
+ ROM_LOAD16_BYTE( "003-c7.c7", 0x300000, 0x80000, CRC(2886710c) SHA1(1533dd935f0a8f92a0a3c47d1d2bc6d035454244) )
+ ROM_LOAD16_BYTE( "003-c8.c8", 0x300001, 0x80000, CRC(422af22d) SHA1(f67c844c34545de6ea187f5bfdf440dec8518532) )
+ROM_END
+
+/****************************************
+ ID-0004
+ . NGM-004
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-004
+ NEO-AEG PROG B / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( mahretsu ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "004-p1.p1", 0x000000, 0x080000, CRC(fc6f53db) SHA1(64a62ca4c8fb68954e06121399c9402278bd0467) )
+
+ NEO_SFIX_128K( "004-s1.s1", CRC(2bd05a06) SHA1(876deadd4645373d82a503154eeddf18f440d743) )
+
+ NEO_BIOS_AUDIO_128K( "004-m1.m1", CRC(c71fbb3b) SHA1(59c58665b53da61352359d191a0569de5dd1f4b3) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "004-v11.v11", 0x000000, 0x080000, CRC(b2fb2153) SHA1(36e0cc8927b11105de40188af46f6cf532794c10) )
+ ROM_LOAD( "004-v12.v12", 0x080000, 0x080000, CRC(8503317b) SHA1(ab22f1aba1e977ab234a4f1d73dc6ed789dbeb85) )
+
+ ROM_REGION( 0x180000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "004-v21.v21", 0x000000, 0x080000, CRC(4999fb27) SHA1(2d4926a220ea21bdd5e816bb16f985fff089500a) )
+ ROM_LOAD( "004-v22.v22", 0x080000, 0x080000, CRC(776fa2a2) SHA1(e7d5a362ab7806b7b009700a435c815a20e8ec68) )
+ ROM_LOAD( "004-v23.v23", 0x100000, 0x080000, CRC(b3e7eeea) SHA1(4d1e97f380702a3a06e7f954b4caddd9c4119d8f) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "004-c1.c1", 0x000000, 0x80000, CRC(f1ae16bc) SHA1(df68feed4dcba1e1566032b01ebb7b478a1792bf) )
+ ROM_LOAD16_BYTE( "004-c2.c2", 0x000001, 0x80000, CRC(bdc13520) SHA1(2bc4c996d019a4c539f6c3188ef18089e54b7efa) )
+ ROM_LOAD16_BYTE( "004-c3.c3", 0x100000, 0x80000, CRC(9c571a37) SHA1(21388aeb92bb8e15a55a063701ca9df79e292127) )
+ ROM_LOAD16_BYTE( "004-c4.c4", 0x100001, 0x80000, CRC(7e81cb29) SHA1(5036f04df30cf6903bd1a8cc06ff6f015c24a74b) )
+ROM_END
+
+/****************************************
+ ID-0005
+ . NGM-005
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-005
+ NEO-AEG PROG-4B / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( maglord ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "005-pg1.p1", 0x000000, 0x080000, CRC(bd0a492d) SHA1(d043d3710cf2b0d2b3798008e65e4c7c3ead1af3) )
+
+ NEO_SFIX_128K( "005-s1.s1", CRC(1c5369a2) SHA1(db0dba0a7dced6c9ca929c5abda491b05d84199c) )
+
+ NEO_BIOS_AUDIO_256K( "005-m1.m1", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "005-v11.v11", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) )
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "005-v21.v21", 0x000000, 0x080000, CRC(f94ab5b7) SHA1(2c16985102e3585e08622d8c54ac5c60425b9ff8) )
+ ROM_LOAD( "005-v22.v22", 0x080000, 0x080000, CRC(232cfd04) SHA1(61b66a9decbbd1f500a8c186615e7fd077c6861e) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "005-c1.c1", 0x000000, 0x80000, CRC(806aee34) SHA1(3c32a0edbbddb694495b510c13979c44b83de8bc) )
+ ROM_LOAD16_BYTE( "005-c2.c2", 0x000001, 0x80000, CRC(34aa9a86) SHA1(cec97e1ff7f91158040c629ba75742db82c4ae5e) )
+ ROM_LOAD16_BYTE( "005-c3.c3", 0x100000, 0x80000, CRC(c4c2b926) SHA1(478bfafca21f5a1338808251a06ab405e6a9e65f) )
+ ROM_LOAD16_BYTE( "005-c4.c4", 0x100001, 0x80000, CRC(9c46dcf4) SHA1(4c05f3dc25777a87578ce09a6cefb3a4cebf3266) )
+ ROM_LOAD16_BYTE( "005-c5.c5", 0x200000, 0x80000, CRC(69086dec) SHA1(7fa47f4a765948813ebf366168275dcc3c42e951) )
+ ROM_LOAD16_BYTE( "005-c6.c6", 0x200001, 0x80000, CRC(ab7ac142) SHA1(e6ad2843947d35d8e913d2666f87946c1ba7944f) )
+ROM_END
+
+ROM_START( maglordh ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "005-p1.p1", 0x000000, 0x080000, CRC(599043c5) SHA1(43f234b0f89b72b4c6050c40d9daa5c4e96b94ce) )
+
+ NEO_SFIX_128K( "005-s1.s1", CRC(1c5369a2) SHA1(db0dba0a7dced6c9ca929c5abda491b05d84199c) )
+
+ NEO_BIOS_AUDIO_256K( "005-m1.m1", CRC(26259f0f) SHA1(4f3e500093d61585048767dbd9fa09b3911a05d6) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "005-v11.v11", 0x000000, 0x080000, CRC(cc0455fd) SHA1(a8ff4270e7705e263d25ff0b301f503bccea7e59) )
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "005-v21.v21", 0x000000, 0x080000, CRC(f94ab5b7) SHA1(2c16985102e3585e08622d8c54ac5c60425b9ff8) )
+ ROM_LOAD( "005-v22.v22", 0x080000, 0x080000, CRC(232cfd04) SHA1(61b66a9decbbd1f500a8c186615e7fd077c6861e) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "005-c1.c1", 0x000000, 0x80000, CRC(806aee34) SHA1(3c32a0edbbddb694495b510c13979c44b83de8bc) )
+ ROM_LOAD16_BYTE( "005-c2.c2", 0x000001, 0x80000, CRC(34aa9a86) SHA1(cec97e1ff7f91158040c629ba75742db82c4ae5e) )
+ ROM_LOAD16_BYTE( "005-c3.c3", 0x100000, 0x80000, CRC(c4c2b926) SHA1(478bfafca21f5a1338808251a06ab405e6a9e65f) )
+ ROM_LOAD16_BYTE( "005-c4.c4", 0x100001, 0x80000, CRC(9c46dcf4) SHA1(4c05f3dc25777a87578ce09a6cefb3a4cebf3266) )
+ ROM_LOAD16_BYTE( "005-c5.c5", 0x200000, 0x80000, CRC(69086dec) SHA1(7fa47f4a765948813ebf366168275dcc3c42e951) )
+ ROM_LOAD16_BYTE( "005-c6.c6", 0x200001, 0x80000, CRC(ab7ac142) SHA1(e6ad2843947d35d8e913d2666f87946c1ba7944f) )
+ROM_END
+
+/****************************************
+ ID-0006
+ . NGM-006
+ NEO-MVS PROG-HERO / NEO-MVS CHA-32
+ . NGH-006
+ NEO-AEG PROG-HERO / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( ridhero ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "006-p1.p1", 0x000000, 0x080000, CRC(d4aaf597) SHA1(34d35b71adb5bd06f4f1b50ffd9c58ab9c440a84) )
+
+ ROM_REGION( 0x2000, "mcu", 0 ) /* Hitachi HD6301V1 MCU */
+ ROM_LOAD( "rhcom.bin", 0x0000, 0x2000, CRC(e5cd6306) SHA1(f6bbb8ae562804d67e137290c765c3589fa334c0) ) // dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally)
+
+ NEO_SFIX_128K( "006-s1.s1", CRC(eb5189f0) SHA1(0239c342ea62e73140a2306052f226226461a478) )
+
+ NEO_BIOS_AUDIO_256K( "006-m1.m1", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "006-v11.v11", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) )
+ ROM_LOAD( "006-v12.v12", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) )
+
+ ROM_REGION( 0x200000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "006-v21.v21", 0x000000, 0x080000, CRC(94092bce) SHA1(1a2906271fe6bc396898a756153629a5862930eb) )
+ ROM_LOAD( "006-v22.v22", 0x080000, 0x080000, CRC(4e2cd7c3) SHA1(72fb215a4f208a22a764e801186d1643d3d840ca) )
+ ROM_LOAD( "006-v23.v23", 0x100000, 0x080000, CRC(069c71ed) SHA1(f450e9f60cd6ef846dbc77993159ec6157fb64e7) )
+ ROM_LOAD( "006-v24.v24", 0x180000, 0x080000, CRC(89fbb825) SHA1(656a97c6a8832dab3a5e1577d9cd257b561cc356) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "006-c1.c1", 0x000000, 0x080000, CRC(4a5c7f78) SHA1(f8f1e6b7841c74368210d52a84307bb28f722a2d) )
+ ROM_LOAD16_BYTE( "006-c2.c2", 0x000001, 0x080000, CRC(e0b70ece) SHA1(e2b750e43cdddcea29d1c9c943a3628117a16a1b) )
+ ROM_LOAD16_BYTE( "006-c3.c3", 0x100000, 0x080000, CRC(8acff765) SHA1(11fe89b9d112d0658c9ddf40d928584de6ea9202) )
+ ROM_LOAD16_BYTE( "006-c4.c4", 0x100001, 0x080000, CRC(205e3208) SHA1(aa2acf2c6f48ffffdcc0c94ddc031acc9e4a2e68) )
+ROM_END
+
+ROM_START( ridheroh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "006-pg1.p1", 0x000000, 0x080000, BAD_DUMP CRC(52445646) SHA1(647bb31f2f68453c1366cb6e2e867e37d1df7a54) )
+ /* Chip label p1h does not exist, renamed temporarly to pg1, marked BAD_DUMP. This needs to be verified. */
+
+ ROM_REGION( 0x2000, "mcu", 0 ) /* Hitachi HD6301V1 MCU */
+ ROM_LOAD( "rhcom.bin", 0x0000, 0x2000, CRC(e5cd6306) SHA1(f6bbb8ae562804d67e137290c765c3589fa334c0) ) // dumped from a prototype with external ROM, not 100% confirmed as being the same on a final, or other games (lbowling, trally)
+
+ NEO_SFIX_128K( "006-s1.s1", CRC(eb5189f0) SHA1(0239c342ea62e73140a2306052f226226461a478) )
+
+ NEO_BIOS_AUDIO_256K( "006-m1.m1", CRC(92e7b4fe) SHA1(d240056cd632f92bdfaa5e0492c09aa9bd7b0471) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "006-v11.v11", 0x000000, 0x080000, CRC(cdf74a42) SHA1(a17106cc3f9e5c5d52b4def861c0545a98151da2) )
+ ROM_LOAD( "006-v12.v12", 0x080000, 0x080000, CRC(e2fd2371) SHA1(cc95297bee7ffbdcb24ac4daeb5307cb39a52067) )
+
+ ROM_REGION( 0x200000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "006-v21.v21", 0x000000, 0x080000, CRC(94092bce) SHA1(1a2906271fe6bc396898a756153629a5862930eb) )
+ ROM_LOAD( "006-v22.v22", 0x080000, 0x080000, CRC(4e2cd7c3) SHA1(72fb215a4f208a22a764e801186d1643d3d840ca) )
+ ROM_LOAD( "006-v23.v23", 0x100000, 0x080000, CRC(069c71ed) SHA1(f450e9f60cd6ef846dbc77993159ec6157fb64e7) )
+ ROM_LOAD( "006-v24.v24", 0x180000, 0x080000, CRC(89fbb825) SHA1(656a97c6a8832dab3a5e1577d9cd257b561cc356) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "006-c1.c1", 0x000000, 0x080000, CRC(4a5c7f78) SHA1(f8f1e6b7841c74368210d52a84307bb28f722a2d) )
+ ROM_LOAD16_BYTE( "006-c2.c2", 0x000001, 0x080000, CRC(e0b70ece) SHA1(e2b750e43cdddcea29d1c9c943a3628117a16a1b) )
+ ROM_LOAD16_BYTE( "006-c3.c3", 0x100000, 0x080000, CRC(8acff765) SHA1(11fe89b9d112d0658c9ddf40d928584de6ea9202) )
+ ROM_LOAD16_BYTE( "006-c4.c4", 0x100001, 0x080000, CRC(205e3208) SHA1(aa2acf2c6f48ffffdcc0c94ddc031acc9e4a2e68) )
+ROM_END
+
+/****************************************
+ ID-0007
+ . NGM-007
+ NEO-MVS PROG42G / NEO-MVS CHA42G
+ . NGH-007
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+ NEO-AEG PROG42G / NEO-AEG CHA-8M
+ . prototype
+ NEO-AEG PROG-EP / NEO-AEG CHA-EP
+****************************************/
+
+ROM_START( alpham2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "007-p1.p1", 0x000000, 0x080000, CRC(5b266f47) SHA1(8afbf995989f47ad93fea1f31a884afc7228b53a) )
+ ROM_LOAD16_WORD_SWAP( "007-p2.p2", 0x080000, 0x020000, CRC(eb9c1044) SHA1(65d3416dcd96663bc4e7cefe90ecb7c1eafb2dda) )
+
+ NEO_SFIX_128K( "007-s1.s1", CRC(85ec9acf) SHA1(39a11974438ad36a2cc84307151b31474c3c5518) )
+
+ NEO_BIOS_AUDIO_128K( "007-m1.m1", CRC(28dfe2cd) SHA1(1a1a99fb917c6c8db591e3be695ce03f843ee1df) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "007-v1.v1", 0x000000, 0x100000, CRC(cd5db931) SHA1(b59f9f2df29f49470312a6cd20f5669b6aaf51ff) )
+ ROM_LOAD( "007-v2.v2", 0x100000, 0x100000, CRC(63e9b574) SHA1(1ade4cd0b15c84dd4a0fb7f7abf0885eef3a3f71) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "007-c1.c1", 0x000000, 0x100000, CRC(8fba8ff3) SHA1(1a682292e99eb91b0edb9771c44bc5e762867e98) )
+ ROM_LOAD16_BYTE( "007-c2.c2", 0x000001, 0x100000, CRC(4dad2945) SHA1(ac85a146276537fed124bda892bb93ff549f1d93) )
+ ROM_LOAD16_BYTE( "007-c3.c3", 0x200000, 0x080000, CRC(68c2994e) SHA1(4f8dfc6e5188942e03b853a2c9f0ea6138dec791) )
+ ROM_LOAD16_BYTE( "007-c4.c4", 0x200001, 0x080000, CRC(7d588349) SHA1(a5ed789d7bbc25be5c5b2d99883b64d379c103a2) )
+ROM_END
+
+ROM_START( alpham2p ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ /* AES VERSION*/
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "007_p1_faac.p1", 0x000001, 0x080000, CRC(c763e52a) SHA1(b24acbac255c5ee1a2e92e77cdde6620a24081cf) )
+ ROM_LOAD16_BYTE( "007_p2_1813.p2", 0x000000, 0x080000, CRC(7a0b435c) SHA1(40e6f42a92001d9f4e51898dd7489da143b6b74b) )
+
+ NEO_SFIX_128K( "007_s1_36f1.s1", CRC(efc9ae2e) SHA1(a594826b0082fe5a13191673e8d9aa42517230f5) )
+
+ NEO_BIOS_AUDIO_128K( "007_m1_9384.m1", CRC(5976b464) SHA1(ec824567ecc3579f6d86c9d9385710cbaeef16a3) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "007_v11_1bb4.v11", 0x000000, 0x080000, CRC(18eaa9e1) SHA1(85c94d8660f8a32e4ca8e015f0bd704208482d68) )
+ ROM_LOAD( "007_v12_c8e8.v12", 0x080000, 0x080000, CRC(2487d495) SHA1(49af3c4dc6a38c5158d3641fd8f9a40041b42aa6) )
+ ROM_LOAD( "007_v13_09fa.v13", 0x100000, 0x080000, CRC(25e60f25) SHA1(d06b0df872372de38fcf90187195070ac5f8c651) )
+ ROM_LOAD( "007_v21_28c2.v21", 0x180000, 0x080000, CRC(ac44b75a) SHA1(7399a05cd4e2c7ecde4a7323d3e189255afe5fc2) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_COPY( "ymsnd", 0x180000, 0x00000, 0x80000 )
+
+ ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE
+ ROM_LOAD32_BYTE( "007_c1_210e.c11", 0x000000, 0x80000, CRC(24841639) SHA1(fcc2a349121dad86ffefc44b9f0e8ba616ce0d30) )
+ ROM_LOAD32_BYTE( "007_c2_29ae.c12", 0x000002, 0x80000, CRC(912763ab) SHA1(cedf26d7d85ad140399ee62813c71f35e65498d6) )
+ ROM_LOAD32_BYTE( "007_c3_c873.c13", 0x000001, 0x80000, CRC(0743bde2) SHA1(0d13ad6333909ad3cf10f9ac360f9abf191318de) )
+ ROM_LOAD32_BYTE( "007_c4_2462.c14", 0x000003, 0x80000, CRC(61240212) SHA1(dee36f6604adaeb96e0d761a7256241c066b1cd2) )
+ ROM_LOAD32_BYTE( "007_c5_5f16.c15", 0x200000, 0x80000, CRC(cf9f4c53) SHA1(f979c85f83d9f76e554c2617f85f6d4efca6799c) )
+ ROM_LOAD32_BYTE( "007_c6_8abc.c16", 0x200002, 0x80000, CRC(3d903b19) SHA1(001a8c762336b855fe1df69fe2e605d30a3f00a1) )
+ ROM_LOAD32_BYTE( "007_c7_c983.c17", 0x200001, 0x80000, CRC(e41e3875) SHA1(730aceb8a66cb33d0194b096568f053ad7dc000a) )
+ ROM_LOAD32_BYTE( "007_c8_b599.c18", 0x200003, 0x80000, CRC(4483e2cf) SHA1(47c3364f5c36ae9dc3a49fe37ca60bcee0e73314) )
+ROM_END
+
+/****************************************
+ ID-0008
+ Sun Shine (prototype) 1990 SNK / Alpha
+****************************************/
+
+/****************************************
+ ID-0009
+ . NGM-009
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-009
+ NEO-AEG PROG-4A / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( ncombat ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "009-p1.p1", 0x000000, 0x080000, CRC(b45fcfbf) SHA1(3872147dda2d1ba905d35f4571065d87b1958b4a) )
+
+ NEO_SFIX_128K( "009-s1.s1", CRC(d49afee8) SHA1(77615f12edf08ae8f1353f7a056a8f3a50d3ebdc) )
+
+ NEO_BIOS_AUDIO_128K( "009-m1.m1", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "009-v11.v11", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) )
+ ROM_LOAD( "009-v12.v12", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) )
+ ROM_LOAD( "009-v13.v13", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "009-v21.v21", 0x000000, 0x080000, CRC(365f9011) SHA1(aebd292214ab280b05ee9e759b7e9a681a099c4a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "009-c1.c1", 0x000000, 0x80000, CRC(33cc838e) SHA1(c445c891c0ba4190aa0b472786150620e76df5b4) )
+ ROM_LOAD16_BYTE( "009-c2.c2", 0x000001, 0x80000, CRC(26877feb) SHA1(8f48097fb8e4757f50b6d86219122fbf4b6f87ef) )
+ ROM_LOAD16_BYTE( "009-c3.c3", 0x100000, 0x80000, CRC(3b60a05d) SHA1(0a165a17af4834876fcd634599cd2208adc9248f) )
+ ROM_LOAD16_BYTE( "009-c4.c4", 0x100001, 0x80000, CRC(39c2d039) SHA1(8ca6c3f977c43c7abba2a00a0e70f02e2a49f5f2) )
+ ROM_LOAD16_BYTE( "009-c5.c5", 0x200000, 0x80000, CRC(67a4344e) SHA1(b325f152c7b2388fc92c5826e1dc99094b9ea749) )
+ ROM_LOAD16_BYTE( "009-c6.c6", 0x200001, 0x80000, CRC(2eca8b19) SHA1(16764ef10e404325ba0a1a2ad3a4c0af287be21f) )
+ROM_END
+
+ROM_START( ncombath ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "009-pg1.p1", 0x000000, 0x080000, CRC(8e9f0add) SHA1(d0b908a86a58f2537eea73a431038f1cd74a5a2f) )
+
+ NEO_SFIX_128K( "009-s1.s1", CRC(d49afee8) SHA1(77615f12edf08ae8f1353f7a056a8f3a50d3ebdc) )
+
+ NEO_BIOS_AUDIO_128K( "009-m1.m1", CRC(b5819863) SHA1(6f2309d51531052dbf7d712993c9e35649db0d84) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "009-v11.v11", 0x000000, 0x080000, CRC(cf32a59c) SHA1(af5b7fcd8a4aff1307c0a1d937e5f0460c32de79) )
+ ROM_LOAD( "009-v12.v12", 0x080000, 0x080000, CRC(7b3588b7) SHA1(a4e6d9d4113ff4ce48b371f65e9187d551821d3b) )
+ ROM_LOAD( "009-v13.v13", 0x100000, 0x080000, CRC(505a01b5) SHA1(9426a4f5b31e16f74e72e61951c189a878f211c5) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "009-v21.v21", 0x000000, 0x080000, CRC(365f9011) SHA1(aebd292214ab280b05ee9e759b7e9a681a099c4a) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "009-c1.c1", 0x000000, 0x80000, CRC(33cc838e) SHA1(c445c891c0ba4190aa0b472786150620e76df5b4) )
+ ROM_LOAD16_BYTE( "009-c2.c2", 0x000001, 0x80000, CRC(26877feb) SHA1(8f48097fb8e4757f50b6d86219122fbf4b6f87ef) )
+ ROM_LOAD16_BYTE( "009-c3.c3", 0x100000, 0x80000, CRC(3b60a05d) SHA1(0a165a17af4834876fcd634599cd2208adc9248f) )
+ ROM_LOAD16_BYTE( "009-c4.c4", 0x100001, 0x80000, CRC(39c2d039) SHA1(8ca6c3f977c43c7abba2a00a0e70f02e2a49f5f2) )
+ ROM_LOAD16_BYTE( "009-c5.c5", 0x200000, 0x80000, CRC(67a4344e) SHA1(b325f152c7b2388fc92c5826e1dc99094b9ea749) )
+ ROM_LOAD16_BYTE( "009-c6.c6", 0x200001, 0x80000, CRC(2eca8b19) SHA1(16764ef10e404325ba0a1a2ad3a4c0af287be21f) )
+ROM_END
+
+/****************************************
+ ID-0010
+ . NGM-010
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-010
+ NEO-AEG PROG-B / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( cyberlip )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "010-p1.p1", 0x000000, 0x080000, CRC(69a6b42d) SHA1(6e7cb089de83f1d22cc4a87db5b1a94bf76fb1e8) )
+
+ NEO_SFIX_128K( "010-s1.s1", CRC(79a35264) SHA1(c2819a82adbe1f5e489496e0e03477863a5b7665) )
+
+ NEO_BIOS_AUDIO_128K( "010-m1.m1", CRC(8be3a078) SHA1(054ec6a061fcc88df1ecbb0a01611a31f37a7709) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "010-v11.v11", 0x000000, 0x080000, CRC(90224d22) SHA1(5443ee6f90d80d43194cb4b4f0e08851a59e7784) )
+ ROM_LOAD( "010-v12.v12", 0x080000, 0x080000, CRC(a0cf1834) SHA1(8df57a7941bdae7e446a6056039adb012cdde246) )
+ ROM_LOAD( "010-v13.v13", 0x100000, 0x080000, CRC(ae38bc84) SHA1(c0937b4f89b8b26c8a0e747b234f44ad6a3bf2ba) )
+ ROM_LOAD( "010-v14.v14", 0x180000, 0x080000, CRC(70899bd2) SHA1(8cf01144f0bcf59f09777175ae6b71846b09f3a1) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "010-v21.v21", 0x000000, 0x080000, CRC(586f4cb2) SHA1(588460031d84c308e3353ecf714db9986425c21c) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "010-c1.c1", 0x000000, 0x80000, CRC(8bba5113) SHA1(70f0926409ab265da4b8632500d1d32d63cf77cf) )
+ ROM_LOAD16_BYTE( "010-c2.c2", 0x000001, 0x80000, CRC(cbf66432) SHA1(cc529640c475d08330e116ea9c5e5a28b7cd13db) )
+ ROM_LOAD16_BYTE( "010-c3.c3", 0x100000, 0x80000, CRC(e4f86efc) SHA1(fa60863d8a7ed4f21d30f91eb1936d0b8329db7a) )
+ ROM_LOAD16_BYTE( "010-c4.c4", 0x100001, 0x80000, CRC(f7be4674) SHA1(b4ad0432d4bb6d5a98e27015910343c964b73ed4) )
+ ROM_LOAD16_BYTE( "010-c5.c5", 0x200000, 0x80000, CRC(e8076da0) SHA1(3ec5cc19809dea688041a42b32c13d257576f3da) )
+ ROM_LOAD16_BYTE( "010-c6.c6", 0x200001, 0x80000, CRC(c495c567) SHA1(2f58475fbb5f1adafce027d396fb05dd71e8fb55) )
+ROM_END
+
+/****************************************
+ ID-0011
+ . NGM-011
+ NEO-MVS PROG-8MB / NEO-MVS CHA-8M
+ . NGH-011
+ NEO-AEG PROG-8MB / NEO-AEG CHA-8M
+****************************************/
+
+ROM_START( superspy ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "011-p1.p1", 0x000000, 0x080000, CRC(c7f944b5) SHA1(da7560e09187c68f1d9f7656218497b4464c56c9) )
+ ROM_LOAD16_WORD_SWAP( "sp2.p2", 0x080000, 0x020000, CRC(811a4faf) SHA1(8169dfaf79f52d80ecec402ce1b1ab9cafb7ebdd) )
+
+ NEO_SFIX_128K( "011-s1.s1", CRC(ec5fdb96) SHA1(8003028025ac7bf531e568add6ba66c02d0b7e84) )
+
+ NEO_BIOS_AUDIO_256K( "011-m1.m1", CRC(ca661f1b) SHA1(4e3cb57db716ec48487c1b070c3a55a5faf40856) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "011-v11.v11", 0x000000, 0x100000, CRC(5c674d5c) SHA1(d7b9beddeb247b584cea9ca6c43ec6869809b673) )
+ ROM_LOAD( "011-v12.v12", 0x100000, 0x080000, CRC(9f513d5a) SHA1(37b04962f0b8e2a74abd35c407337a6151dc4e95) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "011-v21.v21", 0x000000, 0x080000, CRC(426cd040) SHA1(b2b45189837c8287223c2b8bd4df9525b72a3f16) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "011-c1.c1", 0x000000, 0x100000, CRC(cae7be57) SHA1(43b35b349594535689c358d9f324adda55e5281a) )
+ ROM_LOAD16_BYTE( "011-c2.c2", 0x000001, 0x100000, CRC(9e29d986) SHA1(b417763bad1acf76116cd56f4203c2d2677e22e5) )
+ ROM_LOAD16_BYTE( "011-c3.c3", 0x200000, 0x100000, CRC(14832ff2) SHA1(1179792d773d97d5e45e7d8f009051d362d72e24) )
+ ROM_LOAD16_BYTE( "011-c4.c4", 0x200001, 0x100000, CRC(b7f63162) SHA1(077a81b2bb0a8f17c9df6945078608f74432877a) )
+ROM_END
+
+/****************************************
+ ID-0012
+ unknown
+****************************************/
+
+/****************************************
+ ID-0013
+ unknown
+****************************************/
+
+/****************************************
+ ID-0014
+ . NGM-014
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-014
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( mutnat ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "014-p1.p1", 0x000000, 0x080000, CRC(6f1699c8) SHA1(87206f67a619dede7959230f9ff3701b8b78957a) )
+
+ NEO_SFIX_128K( "014-s1.s1", CRC(99419733) SHA1(b2524af8704941acc72282aa1d62fd4c93e3e822) )
+
+ NEO_BIOS_AUDIO_128K( "014-m1.m1", CRC(b6683092) SHA1(623ec7ec2915fb077bf65b4a16c815e071c25259) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "014-v1.v1", 0x000000, 0x100000, CRC(25419296) SHA1(c9fc04987c4e0875d276e1a0fb671740b6f548ad) )
+ ROM_LOAD( "014-v2.v2", 0x100000, 0x100000, CRC(0de53d5e) SHA1(467f6040da3dfb1974785e95e14c3f608a93720a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "014-c1.c1", 0x000000, 0x100000, CRC(5e4381bf) SHA1(d429a5e09dafd2fb99495658b3652eecbf58f91b) )
+ ROM_LOAD16_BYTE( "014-c2.c2", 0x000001, 0x100000, CRC(69ba4e18) SHA1(b3369190c47771a790c7adffa958ff55d90e758b) )
+ ROM_LOAD16_BYTE( "014-c3.c3", 0x200000, 0x100000, CRC(890327d5) SHA1(47f97bf120a8480758e1f3bb8982be4c5325c036) )
+ ROM_LOAD16_BYTE( "014-c4.c4", 0x200001, 0x100000, CRC(e4002651) SHA1(17e53a5f4708866a120415bf24f3b89621ad0bcc) )
+ROM_END
+
+/****************************************
+ ID-0015
+ unknown
+****************************************/
+
+/****************************************
+ ID-0016
+ . NGM-016
+ NEO-MVS PROG42G / NEO-MVS CHA42G
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-016
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( kotm ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "016-p1.p1", 0x000000, 0x080000, CRC(1b818731) SHA1(b98b1b33c0301fd79aac908f6b635dd00d1cb08d) )
+ ROM_LOAD16_WORD_SWAP( "016-p2.p2", 0x080000, 0x020000, CRC(12afdc2b) SHA1(3a95f5910cbb9f17e63ddece995c6e120fa2f622) )
+
+ NEO_SFIX_128K( "016-s1.s1", CRC(1a2eeeb3) SHA1(8d2b96d395020197bc59294b6b0c8d62b1d8d4dd) )
+
+ NEO_BIOS_AUDIO_128K( "016-m1.m1", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "016-v1.v1", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) )
+ ROM_LOAD( "016-v2.v2", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "016-c1.c1", 0x000000, 0x100000, CRC(71471c25) SHA1(bc8e3fee56b33ef2bac5b4b852339d2fbcd09b7c) )
+ ROM_LOAD16_BYTE( "016-c2.c2", 0x000001, 0x100000, CRC(320db048) SHA1(d6b43834de6f5442e23ca8fb26b3a36e96790d8d) )
+ ROM_LOAD16_BYTE( "016-c3.c3", 0x200000, 0x100000, CRC(98de7995) SHA1(e33edf4d36c82196d2b474e37be180a05976f558) )
+ ROM_LOAD16_BYTE( "016-c4.c4", 0x200001, 0x100000, CRC(070506e2) SHA1(3a2ec365e1d87a9c5ce1ee9bea88402a8eef4ed7) )
+ROM_END
+
+ROM_START( kotmh ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "016-hp1.p1",0x000000, 0x080000, CRC(b774621e) SHA1(7684b2e07163aec68cd083ef1d8900f855f6cb42) )
+ ROM_LOAD16_WORD_SWAP( "016-p2.p2", 0x080000, 0x020000, CRC(12afdc2b) SHA1(3a95f5910cbb9f17e63ddece995c6e120fa2f622) )
+
+ NEO_SFIX_128K( "016-s1.s1", CRC(1a2eeeb3) SHA1(8d2b96d395020197bc59294b6b0c8d62b1d8d4dd) )
+
+ NEO_BIOS_AUDIO_128K( "016-m1.m1", CRC(9da9ca10) SHA1(88b915827d529f39c365d3e41197d5461e07a085) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "016-v1.v1", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) )
+ ROM_LOAD( "016-v2.v2", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "016-c1.c1", 0x000000, 0x100000, CRC(71471c25) SHA1(bc8e3fee56b33ef2bac5b4b852339d2fbcd09b7c) )
+ ROM_LOAD16_BYTE( "016-c2.c2", 0x000001, 0x100000, CRC(320db048) SHA1(d6b43834de6f5442e23ca8fb26b3a36e96790d8d) )
+ ROM_LOAD16_BYTE( "016-c3.c3", 0x200000, 0x100000, CRC(98de7995) SHA1(e33edf4d36c82196d2b474e37be180a05976f558) )
+ ROM_LOAD16_BYTE( "016-c4.c4", 0x200001, 0x100000, CRC(070506e2) SHA1(3a2ec365e1d87a9c5ce1ee9bea88402a8eef4ed7) )
+ROM_END
+
+/****************************************
+ ID-0017
+ . NGM-017
+ NEO-MVS PROG42G / NEO-MVS CHA42G
+ . NGH-017
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+ NEO-AEG PRO42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( sengoku ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "017-p1.p1", 0x000000, 0x080000, CRC(f8a63983) SHA1(7a10ecb2f0fd8315641374c065d2602107b09e72) )
+ ROM_LOAD16_WORD_SWAP( "017-p2.p2", 0x080000, 0x020000, CRC(3024bbb3) SHA1(88892e1292dd60f35a76f9a22e623d4f0f9693cc) )
+
+ NEO_SFIX_128K( "017-s1.s1", CRC(b246204d) SHA1(73dce64c61fb5bb7e836a8e60f081bb77d80d281) )
+
+ NEO_BIOS_AUDIO_128K( "017-m1.m1", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "017-v1.v1", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) )
+ ROM_LOAD( "017-v2.v2", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "017-c1.c1", 0x000000, 0x100000, CRC(b4eb82a1) SHA1(79879e2ea78c07d04c88dc9a1ad59604b7a078be) )
+ ROM_LOAD16_BYTE( "017-c2.c2", 0x000001, 0x100000, CRC(d55c550d) SHA1(6110f693aa23710939c04153cf5af26493e4a03f) )
+ ROM_LOAD16_BYTE( "017-c3.c3", 0x200000, 0x100000, CRC(ed51ef65) SHA1(e8a8d86e24454948e51a75c883bc6e4091cbf820) )
+ ROM_LOAD16_BYTE( "017-c4.c4", 0x200001, 0x100000, CRC(f4f3c9cb) SHA1(8faafa89dbd0345218f71f891419d2e4e7578200) )
+ROM_END
+
+ROM_START( sengokuh ) /* AES VERSION (US) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "017-hp1.p1", 0x000000, 0x080000, CRC(33eccae0) SHA1(000ccf9a9c73df75eeba3f2c367c3a1a9e0a3a6b) )
+ ROM_LOAD16_WORD_SWAP( "017-p2.p2", 0x080000, 0x020000, CRC(3024bbb3) SHA1(88892e1292dd60f35a76f9a22e623d4f0f9693cc) )
+
+ NEO_SFIX_128K( "017-s1.s1", CRC(b246204d) SHA1(73dce64c61fb5bb7e836a8e60f081bb77d80d281) )
+
+ NEO_BIOS_AUDIO_128K( "017-m1.m1", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "017-v1.v1", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) )
+ ROM_LOAD( "017-v2.v2", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "017-c1.c1", 0x000000, 0x100000, CRC(b4eb82a1) SHA1(79879e2ea78c07d04c88dc9a1ad59604b7a078be) )
+ ROM_LOAD16_BYTE( "017-c2.c2", 0x000001, 0x100000, CRC(d55c550d) SHA1(6110f693aa23710939c04153cf5af26493e4a03f) )
+ ROM_LOAD16_BYTE( "017-c3.c3", 0x200000, 0x100000, CRC(ed51ef65) SHA1(e8a8d86e24454948e51a75c883bc6e4091cbf820) )
+ ROM_LOAD16_BYTE( "017-c4.c4", 0x200001, 0x100000, CRC(f4f3c9cb) SHA1(8faafa89dbd0345218f71f891419d2e4e7578200) )
+ROM_END
+
+/****************************************
+ ID-0018
+ . NGM-018
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ also found on (seen several times; CHA and PROG board are 'manually patched up' with wires and resistors)
+ NEO-MVS PROG42G / NEO-MVS CHA42G
+ . NGH-018
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+ . prototype
+ NEO-AEG PROG-EP / NEO-AEG CHA-EP
+****************************************/
+
+ROM_START( burningf ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "018-p1.p1", 0x000000, 0x080000, CRC(4092c8db) SHA1(df194a4ad2c35e0e18bc053ff9284183444a4666) )
+
+ NEO_SFIX_128K( "018-s1.s1", CRC(6799ea0d) SHA1(ec75ef9dfdcb0b123574fc6d81ebaaadfba32fb5) )
+
+ NEO_BIOS_AUDIO_128K( "018-m1.m1", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "018-v1.v1", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) )
+ ROM_LOAD( "018-v2.v2", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "018-c1.c1", 0x000000, 0x100000, CRC(25a25e9b) SHA1(3cf02d0662e190678d0530d7b7d3f425209adf83) )
+ ROM_LOAD16_BYTE( "018-c2.c2", 0x000001, 0x100000, CRC(d4378876) SHA1(45659aa1755d96b992c977042186e47fff68bba9) )
+ ROM_LOAD16_BYTE( "018-c3.c3", 0x200000, 0x100000, CRC(862b60da) SHA1(e2303eb1609f1050f0b4f46693a15e37deb176fb) )
+ ROM_LOAD16_BYTE( "018-c4.c4", 0x200001, 0x100000, CRC(e2e0aff7) SHA1(1c691c092a6e2787de4f433b0eb9252bfdaa7e16) )
+ROM_END
+
+ROM_START( burningfh ) /* AES VERSION (US) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "018-hp1.p1", 0x000000, 0x080000, CRC(ddffcbf4) SHA1(c646c4bbdb4e9b32df76c90f582ccd69fcc9f8e7) )
+
+ NEO_SFIX_128K( "018-s1.s1", CRC(6799ea0d) SHA1(ec75ef9dfdcb0b123574fc6d81ebaaadfba32fb5) )
+
+ NEO_BIOS_AUDIO_128K( "018-m1.m1", CRC(0c939ee2) SHA1(57d580d3279e66b9fe66bbcc68529d3384a926ff) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "018-v1.v1", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) )
+ ROM_LOAD( "018-v2.v2", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "018-c1.c1", 0x000000, 0x100000, CRC(25a25e9b) SHA1(3cf02d0662e190678d0530d7b7d3f425209adf83) )
+ ROM_LOAD16_BYTE( "018-c2.c2", 0x000001, 0x100000, CRC(d4378876) SHA1(45659aa1755d96b992c977042186e47fff68bba9) )
+ ROM_LOAD16_BYTE( "018-c3.c3", 0x200000, 0x100000, CRC(862b60da) SHA1(e2303eb1609f1050f0b4f46693a15e37deb176fb) )
+ ROM_LOAD16_BYTE( "018-c4.c4", 0x200001, 0x100000, CRC(e2e0aff7) SHA1(1c691c092a6e2787de4f433b0eb9252bfdaa7e16) )
+ROM_END
+
+ROM_START( burningfp ) /* early prototype - all roms were hand labeled with CRCs, dumps verified against them */ /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "018_p1_9397.p1", 0x000001, 0x080000, CRC(5b4032e7) SHA1(55df91dad6f484d3d49c28ab5972700bf71a8662) )
+ ROM_LOAD16_BYTE( "018_p2_e335.p2", 0x000000, 0x080000, CRC(78762f68) SHA1(12170fc6efe75cb5d32624033d3d341032c97548) )
+
+ NEO_SFIX_128K( "018_s1_9899.s1", CRC(f3d130e8) SHA1(2fdeb93f4bb2a60d391cac2822be41661b1e1795) )
+
+ NEO_BIOS_AUDIO_128K( "018_m1_4586.m1", CRC(470dd5d4) SHA1(4291811b4aefe45261a1ae3631b6999fcd74fb3f) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "018_v11_56ac.v11", 0x000000, 0x080000, CRC(dc07ea3c) SHA1(c3e71aaec44ead7ddc581565d16b90030e6db5fd) )
+ ROM_LOAD( "018_v12_db95.v12", 0x080000, 0x080000, CRC(f1ae637c) SHA1(02a4c7d4a544350a314ab7b26d8c9d3baa8f5778) )
+ ROM_LOAD( "018_v21_98dd.v21", 0x100000, 0x080000, CRC(9f3b4eda) SHA1(7f516923d04daa483b4b99c9babba66505931a34) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_COPY( "ymsnd", 0x100000, 0x00000, 0x80000 )
+
+ ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE
+ ROM_LOAD32_BYTE( "018_c1_ba06.c11", 0x000000, 0x80000, CRC(6569018b) SHA1(25040e0a9c2b72900100a22a2a41de5f6c339d8a) )
+ ROM_LOAD32_BYTE( "018_c2_d534.c12", 0x000002, 0x80000, CRC(6949b501) SHA1(d8ee48837faff6cc849046ee8757b2b94d440303) )
+ ROM_LOAD32_BYTE( "018_c3_9d70.c13", 0x000001, 0x80000, CRC(410f653b) SHA1(ce94667721baa7b2c318fc268e3bb9209671c9f5) )
+ ROM_LOAD32_BYTE( "018_c4_bf9d.c14", 0x000003, 0x80000, CRC(d43bf2a5) SHA1(c27985d8973611d02570f469a0d8cb4f5b63b614) )
+ ROM_LOAD32_BYTE( "018_c5_ac9d.c15", 0x200000, 0x80000, CRC(837d09d3) SHA1(d3b06931fca6123604549599544b04529ef34c53) )
+ ROM_LOAD32_BYTE( "018_c6_d2a5.c16", 0x200002, 0x80000, CRC(5fee51e7) SHA1(835c632fa12a1d5b4104cd80b8f686ac80b314a1) )
+ ROM_LOAD32_BYTE( "018_c7_d568.c17", 0x200001, 0x80000, CRC(0f3f0823) SHA1(ec1d681c1795de43d20f30f85956e2473ec39c95) )
+ ROM_LOAD32_BYTE( "018_c8_d256.c18", 0x200003, 0x80000, CRC(67cc9e34) SHA1(dc72a464c1456a4d2f7b992b416a984fb7885e99) )
+ROM_END
+
+/****************************************
+ ID-0019
+ . NGM-019
+ NEO-MVS PROG-HERO / NEO-MVS CHA-32
+ . NGH-019
+ NEO-AEG PROG-HERO / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( lbowling ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "019-p1.p1", 0x000000, 0x080000, CRC(a2de8445) SHA1(893d7ae72b4644123469de143fa35fac1cbcd61e) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* Hitachi HD6301V1 MCU */
+ ROM_LOAD( "hd6301v1p.com", 0x0000, 0x1000, NO_DUMP )
+
+ NEO_SFIX_128K( "019-s1.s1", CRC(5fcdc0ed) SHA1(86415077e7adc3ba6153eeb4fb0c62cf36e903fa) )
+
+ NEO_BIOS_AUDIO_128K( "019-m1.m1", CRC(d568c17d) SHA1(a2e318ed6ad1809c79f3f0853d75e0dd1a2f275c) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "019-v11.v11", 0x000000, 0x080000, CRC(0fb74872) SHA1(38c555926c77576d63472bc075210c42e9ce13a3) )
+ ROM_LOAD( "019-v12.v12", 0x080000, 0x080000, CRC(029faa57) SHA1(7bbaa87e38929ab1e32df5f6a2ec0fd5001e7cdb) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "019-v21.v21", 0x000000, 0x080000, CRC(2efd5ada) SHA1(8ba70f5f665d566824333075227d9bce1253b8d8) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "019-c1.c1", 0x000000, 0x080000, CRC(4ccdef18) SHA1(5011e30ec235d0b0a5a513a11d4275777e61acdb) )
+ ROM_LOAD16_BYTE( "019-c2.c2", 0x000001, 0x080000, CRC(d4dd0802) SHA1(82069752028c118d42384a95befde45844f0f247) )
+ROM_END
+
+/****************************************
+ ID-0020
+ . NGM-020
+ NEO-MVS PROG8M42 / NEO-MVS CHA-8M
+ . NGH-020
+ NEO-AEG PROG8M42 / NEO-AEG CHA-8M
+****************************************/
+
+ROM_START( gpilots ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "020-p1.p1", 0x000000, 0x080000, CRC(e6f2fe64) SHA1(50ab82517e077727d97668a4df2b9b96d2e78ab6) )
+ ROM_LOAD16_WORD_SWAP( "020-p2.p2", 0x080000, 0x020000, CRC(edcb22ac) SHA1(505d2db38ae999b7d436e8f2ff56b81796d62b54) )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) )
+
+ NEO_BIOS_AUDIO_128K( "020-m1.m1", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "020-v11.v11", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "020-c1.c1", 0x000000, 0x100000, CRC(bd6fe78e) SHA1(50b704862cd79d64fa488e621b079f6e413c33bc) )
+ ROM_LOAD16_BYTE( "020-c2.c2", 0x000001, 0x100000, CRC(5f4a925c) SHA1(71c5ef8141234daaa7025427a6c65e79766973a5) )
+ ROM_LOAD16_BYTE( "020-c3.c3", 0x200000, 0x100000, CRC(d1e42fd0) SHA1(f0d476aebbdc2ce008f5f0783be86d295b24aa44) )
+ ROM_LOAD16_BYTE( "020-c4.c4", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
+ROM_END
+
+ROM_START( gpilotsh ) /* AES VERSION (US) */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "020-hp1.p1", 0x000000, 0x080000, CRC(7cdb01ce) SHA1(32cae2ddf5e26fb7e8a09132e600220db82df3b8) )
+ ROM_LOAD16_WORD_SWAP( "020-p2.p2", 0x080000, 0x020000, CRC(edcb22ac) SHA1(505d2db38ae999b7d436e8f2ff56b81796d62b54) )
+
+ NEO_SFIX_128K( "020-s1.s1", CRC(a6d83d53) SHA1(9a8c092f89521cc0b27a385aa72e29cbaca926c5) )
+
+ NEO_BIOS_AUDIO_128K( "020-m1.m1", CRC(48409377) SHA1(0e212d2c76856a90b2c2fdff675239525972ac43) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "020-v11.v11", 0x000000, 0x100000, CRC(1b526c8b) SHA1(2801868d2badcf8aaf5d490e010e4049d81d7bc1) )
+ ROM_LOAD( "020-v12.v12", 0x100000, 0x080000, CRC(4a9e6f03) SHA1(d3ac11f333b03d8a318921bdaefb14598e289a14) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "020-v21.v21", 0x000000, 0x080000, CRC(7abf113d) SHA1(5b2a0e70f2eaf4638b44702dacd4cb17838fb1d5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "020-c1.c1", 0x000000, 0x100000, CRC(bd6fe78e) SHA1(50b704862cd79d64fa488e621b079f6e413c33bc) )
+ ROM_LOAD16_BYTE( "020-c2.c2", 0x000001, 0x100000, CRC(5f4a925c) SHA1(71c5ef8141234daaa7025427a6c65e79766973a5) )
+ ROM_LOAD16_BYTE( "020-c3.c3", 0x200000, 0x100000, CRC(d1e42fd0) SHA1(f0d476aebbdc2ce008f5f0783be86d295b24aa44) )
+ ROM_LOAD16_BYTE( "020-c4.c4", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
+ROM_END
+
+/****************************************
+ ID-0021
+ . NGM-021
+ NEO-MVS PROG-EP / NEO-MVS CHA-32
+ . NGH-021
+ NEO-AEG PROG B / NEO-AEG CHA-32
+****************************************/
+
+ROM_START( joyjoy ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "021-p1.p1", 0x000000, 0x080000, CRC(39c3478f) SHA1(06ebe54c9c4e14c5c31e770013d58b7162359ecc) )
+
+ NEO_SFIX_128K( "021-s1.s1", CRC(6956d778) SHA1(e3757776d60dc07d8e07c9ca61b223b14732f860) )
+
+ NEO_BIOS_AUDIO_256K( "021-m1.m1", CRC(5a4be5e8) SHA1(552f025ce0d51c25f42e1a81cf0d08376ca5475d) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "021-v11.v11", 0x000000, 0x080000, CRC(66c1e5c4) SHA1(7e85420021d4c39c36ed75a1cec567c5610ffce0) )
+
+ ROM_REGION( 0x080000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "021-v21.v21", 0x000000, 0x080000, CRC(8ed20a86) SHA1(d15cba5eac19ea56fdd4877541f1bb3eb755ebba) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "021-c1.c1", 0x000000, 0x080000, CRC(509250ec) SHA1(d6ddb16d8222088f153a85a905bcb99541a5f2cf) )
+ ROM_LOAD16_BYTE( "021-c2.c2", 0x000001, 0x080000, CRC(09ed5258) SHA1(6bf50cd10236e29146b49e714a0e0ebcfe30a682) )
+ROM_END
+
+/****************************************
+ ID-0022
+ . ALM-001
+ NEO-MVS PROG8M42 / NEO-MVS CHA-8M
+ . ALH-001
+ NEO-AEG PROG 8M42 / NEO-AEG CHA-8M
+****************************************/
+
+ROM_START( bjourney ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "022-p1.p1", 0x000000, 0x100000, CRC(6a2f6d4a) SHA1(b8ca548e56f1c7abcdce415ba7329e0cf698ee13) )
+
+ NEO_SFIX_128K( "022-s1.s1", CRC(843c3624) SHA1(dbdf86c193b7c1d795f8c21f2c103c1d3e18abbe) )
+
+ NEO_BIOS_AUDIO_128K( "022-m1.m1", CRC(8e1d4ab6) SHA1(deabc11ab81e7e68a3e041c03a127ae28d0d7264) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "022-v11.v11", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) )
+ ROM_LOAD( "022-v22.v22", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "022-c1.c1", 0x000000, 0x100000, CRC(4d47a48c) SHA1(6e282285be72583d828e7765b1c1695ecdc44777) )
+ ROM_LOAD16_BYTE( "022-c2.c2", 0x000001, 0x100000, CRC(e8c1491a) SHA1(c468d2556b3de095aaa05edd1bc16d71303e9478) )
+ ROM_LOAD16_BYTE( "022-c3.c3", 0x200000, 0x080000, CRC(66e69753) SHA1(974b823fc62236fbc23e727f25b61a805a707a9e) )
+ ROM_LOAD16_BYTE( "022-c4.c4", 0x200001, 0x080000, CRC(71bfd48a) SHA1(47288be69e6992d09ebef108b4de9ffab6293dc8) )
+ROM_END
+
+/****************************************
+ ID-0023
+ . NGM-023
+ NEO-MVS PROG42G / NEO-MVS CHA42G
+ NEO-MVS PROGTOP / NEO-MVS CHA-256
+ Boards used for the Korean release
+ . NGH-023
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( quizdais ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "023-p1.p1", 0x000000, 0x100000, CRC(c488fda3) SHA1(4cdf2f1837fffd720efef42f81f933bdf2ef1402) )
+
+ NEO_SFIX_128K( "023-s1.s1", CRC(ac31818a) SHA1(93c8d67a93606a2e02f12ca4cab849dc3f3de286) )
+
+ NEO_BIOS_AUDIO_128K( "023-m1.m1", CRC(2a2105e0) SHA1(26fc13556fda2dbeb7b5b035abd994e302dc7662) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "023-v1.v1", 0x000000, 0x100000, CRC(a53e5bd3) SHA1(cf115c6478ce155d889e6a5acb962339e08e024b) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "023-c1.c1", 0x000000, 0x100000, CRC(2999535a) SHA1(0deabf771039987b559edc2444eea741bd7ba861) )
+ ROM_LOAD16_BYTE( "023-c2.c2", 0x000001, 0x100000, CRC(876a99e6) SHA1(8d1dcfc0927d7523f8be8203573192406ec654b4) )
+ROM_END
+
+ROM_START( quizdaisk ) /* KOREAN VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "123-p1.p1", 0x000000, 0x100000, CRC(a6f35eae) SHA1(edd3fd5ba8eae2231e2b0a6605fa00e5c6de094a) )
+
+ NEO_SFIX_128K( "123-s1.s1", CRC(53de938a) SHA1(5024fee3b245f8a069d7ecfa6f033b70ed1a5fce) )
+
+ NEO_BIOS_AUDIO_128K( "123-m1.m1", CRC(d67f53f9) SHA1(73a1bd175ae29dd957a907a046884f8715bd0a34) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "123-v1.v1", 0x000000, 0x200000, CRC(986f4af9) SHA1(9e15d2142ec5e5d076582dc1cecfd724b0924f54) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "123-c1.c1", 0x000000, 0x100000, CRC(e579a606) SHA1(b9430ec157902f0707e5d52e69bd5d93792e7118) )
+ ROM_LOAD16_BYTE( "123-c2.c2", 0x000001, 0x100000, CRC(e182c837) SHA1(a8f7648bf21ebd3efe3a49606b53220815a60d0f) )
+ROM_END
+
+/****************************************
+ ID-0024
+ . NGM-024
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-024
+
+ . prototype
+ NEO-MVS PROG-EP / NEO-MVS CHA-EPG
+****************************************/
+
+ROM_START( lresort )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "024-p1.p1", 0x000000, 0x080000, CRC(89c4ab97) SHA1(3a1817c427185ea1b44fe52f009c00b0a9007c85) )
+
+ NEO_SFIX_128K( "024-s1.s1", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) )
+
+ NEO_BIOS_AUDIO_128K( "024-m1.m1", CRC(cec19742) SHA1(ab6c6ba7737e68d2420a0617719c6d4c89039c45) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "024-v1.v1", 0x000000, 0x100000, CRC(efdfa063) SHA1(e4609ecbcc1c820758f229da5145f51285b50555) )
+ ROM_LOAD( "024-v2.v2", 0x100000, 0x100000, CRC(3c7997c0) SHA1(8cb7e8e69892b19d318978370dbc510d51b06a69) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "024-c1.c1", 0x000000, 0x100000, CRC(3617c2dc) SHA1(8de2643a618272f8aa1c705363edb007f4a5f5b7) )
+ ROM_LOAD16_BYTE( "024-c2.c2", 0x000001, 0x100000, CRC(3f0a7fd8) SHA1(d0c9c7a9dde9ce175fb243d33ec11fa719d0158c) )
+ ROM_LOAD16_BYTE( "024-c3.c3", 0x200000, 0x080000, CRC(e9f745f8) SHA1(bbe6141da28b0db7bf5cf321d69b7e613e2414d7) )
+ ROM_LOAD16_BYTE( "024-c4.c4", 0x200001, 0x080000, CRC(7382fefb) SHA1(e916dec5bb5462eb9ae9711f08c7388937abb980) )
+ROM_END
+
+ROM_START( lresortp ) /* prototype - all roms were hand labeled with CRCs */ /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "024_p1_5937.podd", 0x000001, 0x080000, CRC(8e6008ee) SHA1(6779663118782207156dc9fa9e24e81e30c6391c) )
+ ROM_LOAD16_BYTE( "024_p2_8d37.peven", 0x000000, 0x080000, CRC(6d9ee90f) SHA1(ecd42182988092417bc96db8301ea408e47735f2) )
+
+ NEO_SFIX_128K( "024_s1_22fe.s1", CRC(5cef5cc6) SHA1(9ec305007bdb356e9f8f279beae5e2bcb3f2cf7b) )
+
+ NEO_BIOS_AUDIO_128K( "024_m1_fc7a.m1", CRC(22122875) SHA1(540c21559163381467679f836cb068adaf526659) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "024_v11_b085.v11", 0x000000, 0x080000, CRC(0722da38) SHA1(66a9b463d5277908b3a01c03de82b3de9118f2cb) ) // 024_v11_b085.bin 024-v1.v1 [1/2] IDENTICAL
+ ROM_LOAD( "024_v12_d3b7.v12", 0x080000, 0x080000, CRC(670ce3ec) SHA1(9004aa85d4a9b0ecf9cf9357b073ed55a98fdb02) ) // 024_v12_d3b7.bin 024-v1.v1 [2/2] IDENTICAL
+ ROM_LOAD( "024_v13_a31e.v13", 0x100000, 0x080000, CRC(2e39462b) SHA1(b0a9b1a3377bf0369f3020192505c46ca52927d6) ) // 024_v13_a31e.bin 024-v2.v2 [1/2] IDENTICAL
+ ROM_LOAD( "024_v24_2f0f.v24", 0x180000, 0x080000, CRC(7944754f) SHA1(d42a46c5127c6c62041ebffb0007af8a24abd360) ) // 024_v24_2f0f.bin 024-v2.v2 [2/2] IDENTICAL
+
+ ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE
+ ROM_LOAD32_BYTE( "024_c1_b764.c1", 0x000000, 0x80000, CRC(677749ec) SHA1(6f94675e037956a380652ab1056e6f1dec605bec) )
+ ROM_LOAD32_BYTE( "024_c2_1951.c2", 0x000002, 0x80000, CRC(104d7b59) SHA1(404e8776ee8df4ca282eb7b747759af8628ddca1) )
+ ROM_LOAD32_BYTE( "024_c3_0f63.c3", 0x000001, 0x80000, CRC(b0965a74) SHA1(e8026dd4f722ccab9c913261d09ab8843ef56a0e) )
+ ROM_LOAD32_BYTE( "024_c4_c5b5.c4", 0x000003, 0x80000, CRC(dcfc3860) SHA1(8443b455ae8de656adab57f3b7e68919f22d3b9d) )
+ ROM_LOAD32_BYTE( "024_c5_dd03.c5", 0x200000, 0x80000, CRC(50322397) SHA1(3308fbe48ad165b9894a52fc3a8d9898bbbc0c0e) )
+ ROM_LOAD32_BYTE( "024_c6_c81a.c6", 0x200002, 0x80000, CRC(c3c93894) SHA1(f23b9d7e2b54d44c96370dde282bdf45cebd9cba) )
+ ROM_LOAD32_BYTE( "024_c7_5edc.c7", 0x200001, 0x80000, CRC(21faf72b) SHA1(00bf257b06180ae6ede57744cea6257b3488d9f0) )
+ ROM_LOAD32_BYTE( "024_c8_0850.c8", 0x200003, 0x80000, CRC(fb57217b) SHA1(607a98da754e8b1dd94a6432b21a36cc38e06a0f) )
+ROM_END
+
+
+/****************************************
+ ID-0025
+ . NGM-025
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-025
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+****************************************/
+
+ROM_START( eightman ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "025-p1.p1", 0x000000, 0x080000, CRC(43344cb0) SHA1(29dfd699f35b0a74e20fedd6c9174c289f0ef6e0) )
+
+ NEO_SFIX_128K( "025-s1.s1", CRC(a402202b) SHA1(75c44e1af459af155f5b892fd18706268dd5e602) )
+
+ NEO_BIOS_AUDIO_128K( "025-m1.m1", CRC(9927034c) SHA1(205665361c5b2ab4f01ec480dd3c9b69db858d09) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "025-v1.v1", 0x000000, 0x100000, CRC(4558558a) SHA1(a4b277703ed67225c652be0d618daeca65a27b88) )
+ ROM_LOAD( "025-v2.v2", 0x100000, 0x100000, CRC(c5e052e9) SHA1(fa1119c90ce4c706a6aa0c17d7bc06aa3068d9b2) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "025-c1.c1", 0x000000, 0x100000, CRC(555e16a4) SHA1(1c96f3d2fd0991680fbf627a6cdd26ad2cd60319) )
+ ROM_LOAD16_BYTE( "025-c2.c2", 0x000001, 0x100000, CRC(e1ee51c3) SHA1(da8d074bb4e923ed7b8a154fd31b42f2d65b8e96) )
+ ROM_LOAD16_BYTE( "025-c3.c3", 0x200000, 0x080000, CRC(0923d5b0) SHA1(ab72ba1e3ebf56dd356f9ad181f986b1360a1089) )
+ ROM_LOAD16_BYTE( "025-c4.c4", 0x200001, 0x080000, CRC(e3eca67b) SHA1(88154cbc1a261c2f425430119ebc08a30adc9675) )
+ROM_END
+
+/****************************************
+ ID-0026
+ Fun Fun Brothers (prototype) 1991 Alpha
+****************************************/
+
+/****************************************
+ ID-0027
+ . MOM-001
+ NEO-MVS PROG-8MB / NEO-MVS CHA-8M
+ . MOH-001
+ NEO-AEG PROG-8MB / NEO-AEG CHA-8M
+****************************************/
+
+ROM_START( minasan ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "027-p1.p1", 0x000000, 0x080000, CRC(c8381327) SHA1(c8f8be0ba276c6d12ef13d05af3cf83a2b924894) )
+
+ NEO_SFIX_128K( "027-s1.s1", CRC(e5824baa) SHA1(8230ff7fe3cabeacecc762d90a084e893db84906) )
+
+ NEO_BIOS_AUDIO_128K( "027-m1.m1", CRC(add5a226) SHA1(99995bef2584abbba16777bac52f55523f7aa97d) )
+
+ ROM_DEFAULT_BIOS( "japan" ) /* so the mahjong panel will work in the service menu */
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "027-v11.v11", 0x000000, 0x100000, CRC(59ad4459) SHA1(bbb8ba8a8e337dd2946eefda4757e80d0547d54a) )
+
+ ROM_REGION( 0x100000, "ymsnd.deltat", 0 )
+ ROM_LOAD( "027-v21.v21", 0x000000, 0x100000, CRC(df5b4eeb) SHA1(134f3bcc3bb82e2a5711496af1019f343f9c0f7e) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "027-c1.c1", 0x000000, 0x100000, CRC(d0086f94) SHA1(7d6579530ccb5188f653be69b1df17e47e40e7a6) )
+ ROM_LOAD16_BYTE( "027-c2.c2", 0x000001, 0x100000, CRC(da61f5a6) SHA1(82c5b4e5c5c5e30a3fd1c2e11c6157f39d033c42) )
+ ROM_LOAD16_BYTE( "027-c3.c3", 0x200000, 0x100000, CRC(08df1228) SHA1(288b7ad328c2249f28d17df4dad3584995dca7bf) )
+ ROM_LOAD16_BYTE( "027-c4.c4", 0x200001, 0x100000, CRC(54e87696) SHA1(90816dc86be3983dc57f56ededf7738475c0c61e) )
+ROM_END
+
+/****************************************
+ ID-0028
+ Dunk Star (prototype) 1991 Sammy
+****************************************/
+
+/****************************************
+ ID-0029
+ . ??M-029
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . ??H-029
+****************************************/
+
+ROM_START( legendos )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "029-p1.p1", 0x000000, 0x080000, CRC(9d563f19) SHA1(9bff7bf9fdcf81a0a6c4ce3e196097d4f05e67b6) )
+
+ NEO_SFIX_128K( "029-s1.s1", CRC(bcd502f0) SHA1(a3400f52c037aa6a42e59e602cc24fa45fcbc951) )
+
+ NEO_BIOS_AUDIO_128K( "029-m1.m1", CRC(6f2843f0) SHA1(975fb1598b87a2798fff05e951fca2e2e0329e79) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "029-v1.v1", 0x000000, 0x100000, CRC(85065452) SHA1(7154b7c59b16c32753ac6b5790fb50b51ce30a20) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "029-c1.c1", 0x000000, 0x100000, CRC(2f5ab875) SHA1(3e060973bba41a6c22ff7054104bdc5eee1fa13a) )
+ ROM_LOAD16_BYTE( "029-c2.c2", 0x000001, 0x100000, CRC(318b2711) SHA1(7014110cee98280317e1189f306ca40652b61f6f) )
+ ROM_LOAD16_BYTE( "029-c3.c3", 0x200000, 0x100000, CRC(6bc52cb2) SHA1(14323a4664b7dcbcde82e594168e535d7a921e44) )
+ ROM_LOAD16_BYTE( "029-c4.c4", 0x200001, 0x100000, CRC(37ef298c) SHA1(7a0c4c896dc3e730e06dcadbf00cf354f08a4466) )
+ROM_END
+
+/****************************************
+ ID-0030
+ . NGM-030
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-030
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+****************************************/
+
+ROM_START( 2020bb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "030-p1.p1", 0x000000, 0x080000, CRC(d396c9cb) SHA1(47ba421d14d05b965a8d44e7475b227a208e5a07) )
+ /* also found AES set with p1 label 030-P1 on TC534200 on NEO-AEG PROG42G and m1 label 030-M1 on TC531001 on NEO-AEG CHA42G; other chip labels are the same */
+
+ NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) )
+
+ NEO_BIOS_AUDIO_128K( "030-m1.m1", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
+ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) )
+ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) )
+ ROM_LOAD16_BYTE( "030-c3.c3", 0x200000, 0x100000, CRC(47fddfee) SHA1(297c505a63448c999a2510c27bf4549102134db8) )
+ ROM_LOAD16_BYTE( "030-c4.c4", 0x200001, 0x100000, CRC(780d1c4e) SHA1(2e2cf9de828e3b48642dd2203637103438c62142) )
+ROM_END
+
+ROM_START( 2020bba ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "030-epr.p1", 0x000000, 0x080000, CRC(c59be3dd) SHA1(4fbd462c1c18e85a252c58b04b54fd3b82b46cb0) )
+ /* P1 on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) )
+
+ NEO_BIOS_AUDIO_128K( "030-m1.m1", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
+ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) )
+ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) )
+ ROM_LOAD16_BYTE( "030-c3.c3", 0x200000, 0x100000, CRC(47fddfee) SHA1(297c505a63448c999a2510c27bf4549102134db8) )
+ ROM_LOAD16_BYTE( "030-c4.c4", 0x200001, 0x100000, CRC(780d1c4e) SHA1(2e2cf9de828e3b48642dd2203637103438c62142) )
+ROM_END
+
+ROM_START( 2020bbh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "030-pg1.p1", 0x000000, 0x080000, BAD_DUMP CRC(12d048d7) SHA1(ee0d03a565b11ca3bee2d24f62ff46a85ef18d90) )
+ /* Chip label p1h does not exist, renamed temporarly to pg1, marked BAD_DUMP. This needs to be verified. */
+
+ NEO_SFIX_128K( "030-s1.s1", CRC(7015b8fc) SHA1(8c09bc3e6c62e0f7c9557c1e10c901be325bae7f) )
+
+ NEO_BIOS_AUDIO_128K( "030-m1.m1", CRC(4cf466ec) SHA1(6a003b53c7a4af9d7529e2c10f27ffc4e58dcda5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) )
+ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) )
+ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) )
+ ROM_LOAD16_BYTE( "030-c3.c3", 0x200000, 0x100000, CRC(47fddfee) SHA1(297c505a63448c999a2510c27bf4549102134db8) )
+ ROM_LOAD16_BYTE( "030-c4.c4", 0x200001, 0x100000, CRC(780d1c4e) SHA1(2e2cf9de828e3b48642dd2203637103438c62142) )
+ROM_END
+
+/****************************************
+ ID-0031
+ . NGM-031
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-031
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( socbrawl ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "031-pg1.p1", 0x000000, 0x080000, CRC(17f034a7) SHA1(2e66c7bd93a08efe63c4894494db50bbf58f60e4) )
+
+ NEO_SFIX_128K( "031-s1.s1", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) )
+
+ NEO_BIOS_AUDIO_128K( "031-m1.m1", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "031-v1.v1", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
+ ROM_LOAD( "031-v2.v2", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "031-c1.c1", 0x000000, 0x100000, CRC(bd0a4eb8) SHA1(b67988cb3e550d083e81c9bd436da55b242785ed) )
+ ROM_LOAD16_BYTE( "031-c2.c2", 0x000001, 0x100000, CRC(efde5382) SHA1(e42789c8d87ee3d4549d0a903e990c03338cbbd8) )
+ ROM_LOAD16_BYTE( "031-c3.c3", 0x200000, 0x080000, CRC(580f7f33) SHA1(f4f95a7c8de00e1366a723fc4cd0e8c1905af636) )
+ ROM_LOAD16_BYTE( "031-c4.c4", 0x200001, 0x080000, CRC(ed297de8) SHA1(616f8fa4c86231f3e79faf9f69f8bb909cbc35f0) )
+ROM_END
+
+ROM_START( socbrawlh ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "031-p1.p1", 0x000000, 0x080000, CRC(a2801c24) SHA1(627d76ff0740ca29586f37b268f47fb469822529) )
+
+ NEO_SFIX_128K( "031-s1.s1", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) )
+
+ NEO_BIOS_AUDIO_128K( "031-m1.m1", CRC(cb37427c) SHA1(99efe9600ebeda48331f396e3203c7588bdb7d24) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "031-v1.v1", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
+ ROM_LOAD( "031-v2.v2", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "031-c1.c1", 0x000000, 0x100000, CRC(bd0a4eb8) SHA1(b67988cb3e550d083e81c9bd436da55b242785ed) )
+ ROM_LOAD16_BYTE( "031-c2.c2", 0x000001, 0x100000, CRC(efde5382) SHA1(e42789c8d87ee3d4549d0a903e990c03338cbbd8) )
+ ROM_LOAD16_BYTE( "031-c3.c3", 0x200000, 0x080000, CRC(580f7f33) SHA1(f4f95a7c8de00e1366a723fc4cd0e8c1905af636) )
+ ROM_LOAD16_BYTE( "031-c4.c4", 0x200001, 0x080000, CRC(ed297de8) SHA1(616f8fa4c86231f3e79faf9f69f8bb909cbc35f0) )
+ROM_END
+
+/****************************************
+ ID-0032
+ . NGM-032
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-032
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( roboarmy )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "032-p1.p1", 0x000000, 0x080000, CRC(cd11cbd4) SHA1(23163e3da2f07e830a7f4a02aea1cb01a54ccbf3) )
+ /* also found AES and MVS set with p1 on eprom on NEO-AEG PROG42G-1 and NEO-MVS PROG42G-COM; correct chip label unknown */
+
+ NEO_SFIX_128K( "032-s1.s1", CRC(ac0daa1b) SHA1(93bae4697dc403fce19422752a514326ccf66a91) )
+
+ NEO_BIOS_AUDIO_128K( "032-m1.m1", CRC(35ec952d) SHA1(8aed30e26d7e2c70dbce5de752df416091066f7b) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "032-v1.v1", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) )
+ ROM_LOAD( "032-v2.v2", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "032-c1.c1", 0x000000, 0x100000, CRC(97984c6c) SHA1(deea59c0892f05dc7db98cb57b3eb83688dc57f0) )
+ ROM_LOAD16_BYTE( "032-c2.c2", 0x000001, 0x100000, CRC(65773122) SHA1(2c0162a8e971e5e57933e4ae16040bf824ffdefe) )
+ ROM_LOAD16_BYTE( "032-c3.c3", 0x200000, 0x080000, CRC(40adfccd) SHA1(b11f866dd70ba0ed9123424508355cb948b19bdc) )
+ ROM_LOAD16_BYTE( "032-c4.c4", 0x200001, 0x080000, CRC(462571de) SHA1(5c3d610d492f91564423873b3b434dcda700373f) )
+ROM_END
+
+/****************************************
+ ID-0033
+ . NGM-033
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-033
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( fatfury1 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "033-p1.p1", 0x000000, 0x080000, CRC(47ebdc2f) SHA1(d46786502920fb510f1999db00c5e09fb641c0bd) )
+ ROM_LOAD16_WORD_SWAP( "033-p2.p2", 0x080000, 0x020000, CRC(c473af1c) SHA1(4919eeca20abe807493872ca7c79a5d1f496fe68) )
+
+ NEO_SFIX_128K( "033-s1.s1", CRC(3c3bdf8c) SHA1(2f3e5feed6c27850b2a0f6fae0b97041690e944c) )
+
+ NEO_BIOS_AUDIO_128K( "033-m1.m1", CRC(5be10ffd) SHA1(90a5e6cbbc58a7883cd2a3a597180d631a466882) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "033-v1.v1", 0x000000, 0x100000, CRC(212fd20d) SHA1(120c040db8c01a6f140eea03725448bfa9ca98c2) )
+ ROM_LOAD( "033-v2.v2", 0x100000, 0x100000, CRC(fa2ae47f) SHA1(80d0ba4cd30aab59b6f0db8fa341387bd7388afc) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "033-c1.c1", 0x000000, 0x100000, CRC(74317e54) SHA1(67b9c2814a12603b959612456f59de55f9bf6f57) )
+ ROM_LOAD16_BYTE( "033-c2.c2", 0x000001, 0x100000, CRC(5bb952f3) SHA1(ea964bbcc0408b6ae07cbb5043d003281b1aca15) )
+ ROM_LOAD16_BYTE( "033-c3.c3", 0x200000, 0x100000, CRC(9b714a7c) SHA1(b62bdcede3207d062a89e0a4a9adf706101bb681) )
+ ROM_LOAD16_BYTE( "033-c4.c4", 0x200001, 0x100000, CRC(9397476a) SHA1(a12dbb74020aeb6ebf24ec2abbfba5129cabcb7d) )
+ROM_END
+
+/****************************************
+ ID-0034
+ . NGM-034
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-034
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( fbfrenzy ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "034-p1.p1", 0x000000, 0x080000, CRC(cdef6b19) SHA1(97482db0dffc6d625fb41fa38449c0a74d741a72) )
+
+ NEO_SFIX_128K( "034-s1.s1", CRC(8472ed44) SHA1(42e1a9671dddd090d2a634cff986f6c73ba08b70) )
+
+ NEO_BIOS_AUDIO_128K( "034-m1.m1", CRC(f41b16b8) SHA1(f3e1cfc4cd2c5baece176f169906aa796367d303) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "034-v1.v1", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) )
+ ROM_LOAD( "034-v2.v2", 0x100000, 0x100000, CRC(5aa15686) SHA1(efe47954827a98d539ba719347c5f8aa60e6338b) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "034-c1.c1", 0x000000, 0x100000, CRC(91c56e78) SHA1(2944d49ebfc71239d345209ca7f25993c2cc5a77) )
+ ROM_LOAD16_BYTE( "034-c2.c2", 0x000001, 0x100000, CRC(9743ea2f) SHA1(cf4fccdf10d521d555e92bc24123142393c2b3bb) )
+ ROM_LOAD16_BYTE( "034-c3.c3", 0x200000, 0x080000, CRC(e5aa65f5) SHA1(714356a2cee976ec0f515b1034ce971018e5c02e) )
+ ROM_LOAD16_BYTE( "034-c4.c4", 0x200001, 0x080000, CRC(0eb138cc) SHA1(21d31e1f136c674caa6dd44073281cd07b72ea9b) )
+ROM_END
+
+/****************************************
+ ID-0035
+ Mystic Wand (prototype) 1991 Alpha
+****************************************/
+
+/****************************************
+ ID-0036
+ . MOM-002
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ NEO-MVS PROG42G-COM / NEO-MVS CHA42G-1
+ . MOH-002
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+****************************************/
+
+ROM_START( bakatono ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "036-p1.p1", 0x000000, 0x080000, CRC(1c66b6fa) SHA1(6c50cc452971c46c763ae0b2def95792671a1798) )
+
+ NEO_SFIX_128K( "036-s1.s1", CRC(f3ef4485) SHA1(c30bfceed7e669e4c97b0b3ec2e9f4271e5b6662) )
+
+ NEO_BIOS_AUDIO_128K( "036-m1.m1", CRC(f1385b96) SHA1(e7e3d1484188a115e262511116aaf466b8b1f428) )
+
+ ROM_DEFAULT_BIOS( "japan" ) /* so the mahjong panel will work in the service menu */
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "036-v1.v1", 0x000000, 0x100000, CRC(1c335dce) SHA1(493c273fa71bf81861a20af4c4eaae159e169f39) )
+ ROM_LOAD( "036-v2.v2", 0x100000, 0x100000, CRC(bbf79342) SHA1(45a4f40e415cdf35c3073851506648c8f7d53958) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "036-c1.c1", 0x000000, 0x100000, CRC(fe7f1010) SHA1(5b6f5053821f4da8dc3768371e2cd51bb29da963) )
+ ROM_LOAD16_BYTE( "036-c2.c2", 0x000001, 0x100000, CRC(bbf003f5) SHA1(054b2a3327e038836eece652055bb84c115cf8ed) )
+ ROM_LOAD16_BYTE( "036-c3.c3", 0x200000, 0x100000, CRC(9ac0708e) SHA1(8decfe06d73a3dd3c3cf280719978fcf6d559d29) )
+ ROM_LOAD16_BYTE( "036-c4.c4", 0x200001, 0x100000, CRC(f2577d22) SHA1(a37db8055ca4680e244c556dc6df8bdba16c2083) )
+ROM_END
+
+/****************************************
+ ID-0037
+ . ALM-002
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . ALH-002
+ NEO-AEG PROG42G / NEO-AEG CHA42G
+****************************************/
+
+ROM_START( crsword ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "037-p1.p1", 0x000000, 0x080000, CRC(e7f2553c) SHA1(8469ecb900477feed05ae3311fe9515019bbec2a) )
+
+ NEO_SFIX_128K( "037-s1.s1", CRC(74651f27) SHA1(bff7ff2429d2be82c1647abac2ee45b339b3b310) )
+
+ NEO_BIOS_AUDIO_128K( "037-m1.m1", CRC(9504b2c6) SHA1(9ce8e681b9df6eacd0d23a36bad836bd5074233d) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "037-v1.v1", 0x000000, 0x100000, CRC(61fedf65) SHA1(98f31d1e23bf7c1f7844e67f14707a704134042e) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "037-c1.c1", 0x000000, 0x100000, CRC(09df6892) SHA1(df2579dcf9c9dc88d461212cb74de106be2983c1) )
+ ROM_LOAD16_BYTE( "037-c2.c2", 0x000001, 0x100000, CRC(ac122a78) SHA1(7bfa4d29b7d7d9443f64d81caeafa74fe05c606e) )
+ ROM_LOAD16_BYTE( "037-c3.c3", 0x200000, 0x100000, CRC(9d7ed1ca) SHA1(2bbd25dc3a3f825d0af79a418f06a23a1bf03cc0) )
+ ROM_LOAD16_BYTE( "037-c4.c4", 0x200001, 0x100000, CRC(4a24395d) SHA1(943f911f40985db901eaef4c28dfcda299fca73e) )
+ROM_END
+
+/****************************************
+ ID-0038
+ . ALM-003
+ NEO-MVS PROG42G-COM / NEO-MVS CHA42G-1
+ . ALH-003
+ NEO-AEG PROG42G-COM / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( trally ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "038-p1.p1", 0x000000, 0x080000, CRC(1e52a576) SHA1(a1cb56354c3378e955b0cd482c3c41ae15add952) )
+ ROM_LOAD16_WORD_SWAP( "038-p2.p2", 0x080000, 0x080000, CRC(a5193e2f) SHA1(96803480439e90da23cdca70d59ff519ee85beeb) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* Hitachi HD6301V1 MCU */
+ ROM_LOAD( "hd6301v1p.hd6301v1", 0x0000, 0x1000, NO_DUMP )
+
+ NEO_SFIX_128K( "038-s1.s1", CRC(fff62ae3) SHA1(6510a762ea41557a8938cbfc0557cd5921306061) )
+
+ NEO_BIOS_AUDIO_128K( "038-m1.m1", CRC(0908707e) SHA1(df7489ea6abf84d7f137ba7a8f52a4fd1b088fd7) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "038-v1.v1", 0x000000, 0x100000, CRC(5ccd9fd5) SHA1(c3c8c758a320c39e4ceb0b6d9f188ed6d122eec4) )
+ ROM_LOAD( "038-v2.v2", 0x100000, 0x080000, CRC(ddd8d1e6) SHA1(65c819fa2392f264f5a1a0a4967c96775732500b) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "038-c1.c1", 0x000000, 0x100000, CRC(c58323d4) SHA1(a6bd277471a4b612d165f8b804f3cb662f499b70) )
+ ROM_LOAD16_BYTE( "038-c2.c2", 0x000001, 0x100000, CRC(bba9c29e) SHA1(b70bbfdfa8c4f9ea76406530e86b16e42498d284) )
+ ROM_LOAD16_BYTE( "038-c3.c3", 0x200000, 0x080000, CRC(3bb7b9d6) SHA1(bc1eae6181ad5abf79736afc8db4ca34113d43f8) )
+ ROM_LOAD16_BYTE( "038-c4.c4", 0x200001, 0x080000, CRC(a4513ecf) SHA1(934aa103c226eac55157b44d7b4dfa35515322c3) )
+ROM_END
+
+/****************************************
+ ID-0039
+ . NGM-039
+ NEO-MVS PROG16 / NEO-MVS CHA42G-1
+ . NGH-039
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( kotm2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "039-p1.p1", 0x000000, 0x080000, CRC(b372d54c) SHA1(b70fc6f72e16a66b6e144cc01370548e3398b8b8) )
+ ROM_LOAD16_WORD_SWAP( "039-p2.p2", 0x080000, 0x080000, CRC(28661afe) SHA1(6c85ff6ab334b1ca744f726f42dac211537e7315) )
+
+ NEO_SFIX_128K( "039-s1.s1", CRC(63ee053a) SHA1(7d4b92bd022708975b1470e8f24d1f5a712e1b94) )
+
+ NEO_BIOS_AUDIO_128K( "039-m1.m1", CRC(0c5b2ad5) SHA1(15eb5ea10fecdbdbcfd06225ae6d88bb239592e7) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "039-v2.v2", 0x000000, 0x200000, CRC(86d34b25) SHA1(89bdb614b0c63d678962da52e2f596750d20828c) )
+ ROM_LOAD( "039-v4.v4", 0x200000, 0x100000, CRC(8fa62a0b) SHA1(58ac2fdd73c542eb8178cfc4adfa0e5940183283) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "039-c1.c1", 0x000000, 0x100000, CRC(6d1c4aa9) SHA1(4fbc9d7cb37522ec298eefbe38c75a2d050fbb4a) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "039-c2.c2", 0x000001, 0x100000, CRC(f7b75337) SHA1(4d85f85948c3e6ed38b0b0ccda79de3ce026e2d9) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "039-c3.c3", 0x200000, 0x080000, CRC(bfc4f0b2) SHA1(f4abe2b52882b966412f3b503b8f2c8f49b57968) )
+ ROM_LOAD16_BYTE( "039-c4.c4", 0x200001, 0x080000, CRC(81c9c250) SHA1(e3a34ff69081a8681b5ca895915892dcdccfa7aa) )
+ROM_END
+
+ROM_START( kotm2p ) /* fairly late prototype release, only the code differs from the main set */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "proto_039-p1.p1", 0x000001, 0x080000, CRC(3c1d17e7) SHA1(aeaff465fafa46ded903ed4e8cb8cd05de8dc096) )
+ ROM_LOAD16_BYTE( "proto_039-p2.p2", 0x000000, 0x080000, CRC(bc9691f0) SHA1(3854659b952d4f8c2edd5d59858a61ce6d518604) )
+
+ NEO_SFIX_128K( "039-s1.s1", CRC(63ee053a) SHA1(7d4b92bd022708975b1470e8f24d1f5a712e1b94) )
+
+ NEO_BIOS_AUDIO_128K( "039-m1.m1", CRC(0c5b2ad5) SHA1(15eb5ea10fecdbdbcfd06225ae6d88bb239592e7) )
+
+ // same data as main set, but prototype board layout
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "proto_039-v1.v1", 0x000000, 0x080000, CRC(dd3566f1) SHA1(f7c2a3747aaab2bc57cdfa33d8bb9fab057b5214) )
+ ROM_LOAD( "proto_039-v2.v2", 0x080000, 0x080000, CRC(57f60274) SHA1(7e17740aa05cf7ad4f9084e147600a8eb82c7284) )
+ ROM_LOAD( "proto_039-v3.v3", 0x100000, 0x080000, CRC(0f008a07) SHA1(ed243a0449232bbea409308c3fec7e057fcd8501) )
+ ROM_LOAD( "proto_039-v4.v4", 0x180000, 0x080000, CRC(1943d0fe) SHA1(47fb716c76ea6b5fe64204ff6d72b7feea10bda9) )
+ ROM_LOAD( "proto_039-v5.v5", 0x200000, 0x080000, CRC(13be045b) SHA1(0e3713ae6b164ebae434c0f18c466365b26b9a77) )
+ ROM_LOAD( "proto_039-v6.v6", 0x280000, 0x080000, CRC(d1dd3fd6) SHA1(052b92168a76cf3a97c8cacebcc3ebab228726df) )
+
+ // same data as main set, but prototype board layout
+ ROM_REGION( 0x600000, "sprites", 0 ) // note, ROM_LOAD32_BYTE
+ ROM_LOAD32_BYTE( "proto_039-c1.c1", 0x000000, 0x100000, CRC(7192a787) SHA1(7bef6ce79c618103485480aee3c6f856968eb51f) )
+ ROM_LOAD32_BYTE( "proto_039-c2.c2", 0x000002, 0x100000, CRC(7157eca1) SHA1(65f36c6a3834775b04076d2c38a6047bffe9a8cf) )
+ ROM_LOAD32_BYTE( "proto_039-c3.c3", 0x000001, 0x100000, CRC(11d75727) SHA1(5a4c7b5ca3f1195e7853b45c5e71c13fe74d16e9) )
+ ROM_LOAD32_BYTE( "proto_039-c4.c4", 0x000003, 0x100000, CRC(7ad48b28) SHA1(27e65d948f08c231107cb1a810e2b06731091fc3) )
+ ROM_LOAD32_BYTE( "proto_039-c5.c5", 0x400000, 0x080000, CRC(5bdaf9ca) SHA1(60620d42ac6cd0e5da019fede2814a2f4171ff3f) )
+ ROM_LOAD32_BYTE( "proto_039-c6.c6", 0x400002, 0x080000, CRC(21d4be8c) SHA1(f1b19d37d52d21584f304b7d37d5c096b58219d6) )
+ ROM_LOAD32_BYTE( "proto_039-c7.c7", 0x400001, 0x080000, CRC(da55fd00) SHA1(52804f955597591fdd1d7478dc340b36d3c08c4a) )
+ ROM_LOAD32_BYTE( "proto_039-c8.c8", 0x400003, 0x080000, CRC(592e9267) SHA1(0d27de59970ccbcaa1d47909ea3d741ffb0d9e07) )
+ROM_END
+
+/****************************************
+ ID-0040
+ . NGM-040
+ NEO-MVS PROG 4096 / NEO-MVS CHA 42G-2
+ . NGH-040
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( sengoku2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "040-p1.p1", 0x000000, 0x100000, CRC(6dde02c2) SHA1(e432e63feb88c71629ec96aa84650dcfe356a551) )
+
+ NEO_SFIX_128K( "040-s1.s1", CRC(cd9802a3) SHA1(f685d4638f4f68e7e3f101c0c39128454536721b) )
+
+ NEO_BIOS_AUDIO_128K( "040-m1.m1", CRC(d4de4bca) SHA1(ecf604d06f01d40b04e285facef66a6ae2d35661) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "040-v1.v1", 0x000000, 0x200000, CRC(71cb4b5d) SHA1(56d9aca1d476c19c7d0f707176a8fed53e0189b7) )
+ // AES has different label, data is the same: 040-v1.v2
+ ROM_LOAD( "040-v2.v2", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) )
+ // AES has different label, data is the same: 040-v2.v4
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "040-c1.c1", 0x000000, 0x100000, CRC(faa8ea99) SHA1(714575e57ea1990612f960ec42b38d2e157ad400) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "040-c2.c2", 0x000001, 0x100000, CRC(87d0ec65) SHA1(23645e0cf859fb4cec3745b3846ca0ef64c689fb) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "040-c3.c3", 0x200000, 0x080000, CRC(24b5ba80) SHA1(29d58a6b56bd24ee2046a8d45e023b4d7ab7685b) )
+ ROM_LOAD16_BYTE( "040-c4.c4", 0x200001, 0x080000, CRC(1c9e9930) SHA1(d017474873750a7602b7708c663d29b25ef7bb63) )
+ROM_END
+
+/****************************************
+ ID-0041
+ . NGM-041
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-041
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( bstars2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "041-p1.p1", 0x000000, 0x080000, CRC(523567fd) SHA1(f1e81eb4678f586b214ea102cde6effea1b0f768) )
+
+ NEO_SFIX_128K( "041-s1.s1", CRC(015c5c94) SHA1(f1c60cd3dc54986b39f630ef3bf48f68c68695dc) )
+
+ NEO_BIOS_AUDIO_128K( "041-m1.m1", CRC(15c177a6) SHA1(3f4abed635102f9bc8b44809750828c82e79b44f) )
+
+ ROM_REGION( 0x280000, "ymsnd", 0 )
+ ROM_LOAD( "041-v1.v1", 0x000000, 0x100000, CRC(cb1da093) SHA1(4f4d1d5fefa9dda372083c045bf0d268a57ce8f1) )
+ ROM_LOAD( "041-v2.v2", 0x100000, 0x100000, CRC(1c954a9d) SHA1(159bc6efdd531615461f6e16f83f6d4c4e67c237) )
+ ROM_LOAD( "041-v3.v3", 0x200000, 0x080000, CRC(afaa0180) SHA1(c4a047e21f093830498a163598ed7bd48a8cf9d1) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "041-c1.c1", 0x000000, 0x100000, CRC(b39a12e1) SHA1(bafe383bd7c5a6aac4cb92dabbc56e3672fe174d) )
+ ROM_LOAD16_BYTE( "041-c2.c2", 0x000001, 0x100000, CRC(766cfc2f) SHA1(79e1063925d54a57df943019a88bea56c9152df3) )
+ ROM_LOAD16_BYTE( "041-c3.c3", 0x200000, 0x100000, CRC(fb31339d) SHA1(f4e821299680970b2e979acc4a170029b968c807) )
+ ROM_LOAD16_BYTE( "041-c4.c4", 0x200001, 0x100000, CRC(70457a0c) SHA1(a1e307f11ddab85d2e9c09d0428fac2e6da774b1) )
+ROM_END
+
+/****************************************
+ ID-0042
+ . NGM-042
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . NGH-042
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( quizdai2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "042-p1.p1", 0x000000, 0x100000, CRC(ed719dcf) SHA1(12baf2601e86c0e4358517b9fa1c55f2f5835f1d) )
+
+ NEO_SFIX_128K( "042-s1.s1", CRC(164fd6e6) SHA1(dad35bedc33d502a5ae745a45a972af8d901b160) )
+
+ NEO_BIOS_AUDIO_128K( "042-m1.m1", CRC(bb19995d) SHA1(ed458fad5a23c6bd0d099927d98c31e1e6562d1b) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "042-v1.v1", 0x000000, 0x100000, CRC(af7f8247) SHA1(99a47014017c20e4e22010c60612b6b7f6efc9e5) )
+ ROM_LOAD( "042-v2.v2", 0x100000, 0x100000, CRC(c6474b59) SHA1(a6c5054032b698116247b2f09a8b94a1b588c4f1) )
+
+ ROM_REGION( 0x300000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "042-c1.c1", 0x000000, 0x100000, CRC(cb5809a1) SHA1(b53d06685246dd51b82b5c1d54d639d10e2ec26d) )
+ ROM_LOAD16_BYTE( "042-c2.c2", 0x000001, 0x100000, CRC(1436dfeb) SHA1(27d136fb1be793bd345a741f5e55a977275fff86) )
+ ROM_LOAD16_BYTE( "042-c3.c3", 0x200000, 0x080000, CRC(bcd4a518) SHA1(f355298fe0f2cf50ddcc0d613db56a5c04d7230f) )
+ ROM_LOAD16_BYTE( "042-c4.c4", 0x200001, 0x080000, CRC(d602219b) SHA1(34cf0f16db1e224396464ac838f4cd2e6d1c640e) )
+ROM_END
+
+/****************************************
+ ID-0043
+ . NGM-043
+ NEO-MVS PROG 4096 / NEO-MVS CHA 42G-2
+ NEO-MVS PROG-G2 / NEO-MVS CHA 42G-2
+ . NGH-043
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( 3countb ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "043-p1.p1", 0x000000, 0x100000, CRC(ffbdd928) SHA1(05b24655ca32723661adc5509b450824deb0c176) )
+ /* The original p1 is 8mbit; also found sets with p1 / p2 4mbit on eprom. */
+
+ NEO_SFIX_128K( "043-s1.s1", CRC(c362d484) SHA1(a3c029292572842feabe9aa8c3372628fb63978d) )
+
+ NEO_BIOS_AUDIO_128K( "043-m1.m1", CRC(7eab59cb) SHA1(5ae4107457e091f73960bfba39b589ae36d51ca3) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "043-v1.v1", 0x000000, 0x200000, CRC(63688ce8) SHA1(5c6ac29a0cc0655a87cfe3ada8706838b86b86e4) )
+ ROM_LOAD( "043-v2.v2", 0x200000, 0x200000, CRC(c69a827b) SHA1(f5197ea87bb6573fa6aef3a1713c3679c58c1e74) )
+
+ ROM_REGION( 0x0800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "043-c1.c1", 0x000000, 0x100000, CRC(bad2d67f) SHA1(04928e50ca75b7fbc52b64e816ec5701901f5893) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "043-c2.c2", 0x000001, 0x100000, CRC(a7fbda95) SHA1(9da3c5faf22592a7eaf8df9fa6454f48c2a927ae) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "043-c3.c3", 0x200000, 0x100000, CRC(f00be011) SHA1(2721cdba37a511a966a2a53b9bd6240f181d920c) )
+ ROM_CONTINUE( 0x600000, 0x100000 )
+ ROM_LOAD16_BYTE( "043-c4.c4", 0x200001, 0x100000, CRC(1887e5c0) SHA1(9b915359add7c10c78d8b281b4084eceea8f0499) )
+ ROM_CONTINUE( 0x600001, 0x100000 )
+ROM_END
+
+/****************************************
+ ID-0044
+ . NGM-044
+ NEO-MVS PROG16 / NEO-MVS CHA42G-1
+ NEO-MVS PROG4096 / NEO-MVS CHA42G-1
+ . NGH-044
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( aof ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "044-p1.p1", 0x000000, 0x080000, CRC(ca9f7a6d) SHA1(4d28ef86696f7e832510a66d3e8eb6c93b5b91a1) )
+ /* also found sets with ep1 or p1 on eprom. */
+
+ NEO_SFIX_128K( "044-s1.s1", CRC(89903f39) SHA1(a04a0c244a5d5c7a595fcf649107969635a6a8b6) )
+
+ NEO_BIOS_AUDIO_128K( "044-m1.m1", CRC(0987e4bb) SHA1(8fae4b7fac09d46d4727928e609ed9d3711dbded) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "044-v2.v2", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) )
+ ROM_LOAD( "044-v4.v4", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "044-c1.c1", 0x000000, 0x100000, CRC(ddab98a7) SHA1(f20eb81ec431268798c142c482146c1545af1c24) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c2.c2", 0x000001, 0x100000, CRC(d8ccd575) SHA1(f697263fe92164e274bf34c55327b3d4a158b332) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c3.c3", 0x200000, 0x100000, CRC(403e898a) SHA1(dd5888f8b24a33b2c1f483316fe80c17849ccfc4) )
+ ROM_CONTINUE( 0x600000, 0x100000 )
+ ROM_LOAD16_BYTE( "044-c4.c4", 0x200001, 0x100000, CRC(6235fbaa) SHA1(9090e337d7beed25ba81ae0708d0aeb57e6cf405) )
+ ROM_CONTINUE( 0x600001, 0x100000 )
+ROM_END
+
+/****************************************
+ ID-0045
+ . NGM-045
+ NEO-MVS PROGGSC / NEO-MVS CHA 42G-3
+ . NGH-045
+ NEO-AEG PROGGS / NEO-AEG CHA42G-4
+****************************************/
+
+ROM_START( samsho ) /* MVS VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045-p1.p1", 0x000000, 0x100000, CRC(dfe51bf0) SHA1(2243af3770a516ae698b69bcd9daf53632d9128d) )
+ ROM_LOAD16_WORD_SWAP( "045-pg2.sp2", 0x100000, 0x100000, CRC(46745b94) SHA1(d9e959fd1f88c9402915c1d0dcdb4a9e3d49cdcb) )
+ /* also found set with ep1 / ep2 on eprom and sp2 on maskrom; same rom data as samshoh is used. */
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c51.c5", 0x800000, 0x100000, CRC(81932894) SHA1(550f15dc5892c4602422c51869f0d59f70f01e9e) )
+ ROM_LOAD16_BYTE( "045-c61.c6", 0x800001, 0x100000, CRC(be30612e) SHA1(5e8b785f917c176d6796eba0caed37b13ddb3e63) )
+ROM_END
+
+ROM_START( samshoh ) /* AES VERSION */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045-p1.p1", 0x000000, 0x100000, CRC(dfe51bf0) SHA1(2243af3770a516ae698b69bcd9daf53632d9128d) )
+ ROM_LOAD16_WORD_SWAP( "045-p2.sp2", 0x100000, 0x080000, CRC(38ee9ba9) SHA1(48190699a6be83cb6257365ae81f93fdd23abe09) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0x900000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c5.c5", 0x800000, 0x080000, CRC(a2bb8284) SHA1(aa118e3b8c062daa219b36758b9a3814c08c69dc) )
+ ROM_LOAD16_BYTE( "045-c6.c6", 0x800001, 0x080000, CRC(4fa71252) SHA1(afe374a9d1f2d955a59efe7b6196b89e021b164c) )
+ /* also found AES set with C6 on TC538200; label is 045-C61.C6 */
+ROM_END
+
+/****************************************
+ ID-0046
+ . NGM-046
+ NEO-MVS PROGTOP / NEO-MVS CHA256B
+ . NGH-046
+ NEO-AEG PROGTOP / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( tophuntr ) /* MVS VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "046-p1.p1", 0x000000, 0x100000, CRC(69fa9e29) SHA1(9a40a16163193bb506a32bd34f6323b25ec69622) )
+ ROM_LOAD16_WORD_SWAP( "046-p2.sp2", 0x100000, 0x100000, CRC(f182cb3e) SHA1(6b4e0af5d4e623f0682f37ff5c69e5b705e20028) )
+
+ NEO_SFIX_128K( "046-s1.s1", CRC(14b01d7b) SHA1(618ce75c25d6cc86a3b46bd64a0aa34ab82f75ae) )
+
+ NEO_BIOS_AUDIO_128K( "046-m1.m1", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "046-v1.v1", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) )
+ ROM_LOAD( "046-v2.v2", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) )
+ ROM_LOAD( "046-v3.v3", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) )
+ ROM_LOAD( "046-v4.v4", 0x300000, 0x100000, CRC(4f54c187) SHA1(63a76949301b83bdd44aa1a4462f642ab9ca3c0b) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "046-c1.c1", 0x000000, 0x100000, CRC(fa720a4a) SHA1(364913b9fa40d46e4e39ae3cdae914cfd0de137d) )
+ ROM_LOAD16_BYTE( "046-c2.c2", 0x000001, 0x100000, CRC(c900c205) SHA1(50274e79aa26f334eb806288688b30720bade883) )
+ ROM_LOAD16_BYTE( "046-c3.c3", 0x200000, 0x100000, CRC(880e3c25) SHA1(b6974af0c833b766866919b6f15b6f8cef82530d) )
+ ROM_LOAD16_BYTE( "046-c4.c4", 0x200001, 0x100000, CRC(7a2248aa) SHA1(8af0b26025a54e3b91604dd24a3c1c518fbd8536) )
+ ROM_LOAD16_BYTE( "046-c5.c5", 0x400000, 0x100000, CRC(4b735e45) SHA1(2f8b46388c4696aee6a97e1e21cdadf6b142b01a) )
+ ROM_LOAD16_BYTE( "046-c6.c6", 0x400001, 0x100000, CRC(273171df) SHA1(9c35832221e016c12ef1ed71da167f565daaf86c) )
+ ROM_LOAD16_BYTE( "046-c7.c7", 0x600000, 0x100000, CRC(12829c4c) SHA1(ac5f3d848d7116fc35c97f53a72c85e049dd3a2f) )
+ ROM_LOAD16_BYTE( "046-c8.c8", 0x600001, 0x100000, CRC(c944e03d) SHA1(be23999b8ce09ee15ba500ce4d5e2a82a4f58d9b) )
+ROM_END
+
+ROM_START( tophuntrh ) /* AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "046-pg1.p1",0x000000, 0x100000, CRC(771e39bc) SHA1(c0e05fd1ca81926438bb75e2fa6894e40ab6521e) )
+ ROM_LOAD16_WORD_SWAP( "046-p2.sp2",0x100000, 0x100000, CRC(f182cb3e) SHA1(6b4e0af5d4e623f0682f37ff5c69e5b705e20028) )
+
+ NEO_SFIX_128K( "046-sg1.s1", CRC(92e9ac8c) SHA1(cab5c77c091e8d12d9c3a2cc8d741b74e4386efb) )
+
+ NEO_BIOS_AUDIO_128K( "046-m1.m1", CRC(3f84bb9f) SHA1(07446040871d11da3c2217ee9d1faf8c3cae7420) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "046-v1.v1", 0x000000, 0x100000, CRC(c1f9c2db) SHA1(bed95a76afefa46503a12e0f0a9787c4c967ac50) )
+ ROM_LOAD( "046-v2.v2", 0x100000, 0x100000, CRC(56254a64) SHA1(1cf049cb4c414419859d2c8ee714317a35a85251) )
+ ROM_LOAD( "046-v3.v3", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) )
+ ROM_LOAD( "046-v4.v4", 0x300000, 0x100000, CRC(4f54c187) SHA1(63a76949301b83bdd44aa1a4462f642ab9ca3c0b) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "046-c1.c1", 0x000000, 0x100000, CRC(fa720a4a) SHA1(364913b9fa40d46e4e39ae3cdae914cfd0de137d) )
+ ROM_LOAD16_BYTE( "046-c2.c2", 0x000001, 0x100000, CRC(c900c205) SHA1(50274e79aa26f334eb806288688b30720bade883) )
+ ROM_LOAD16_BYTE( "046-c3.c3", 0x200000, 0x100000, CRC(880e3c25) SHA1(b6974af0c833b766866919b6f15b6f8cef82530d) )
+ ROM_LOAD16_BYTE( "046-c4.c4", 0x200001, 0x100000, CRC(7a2248aa) SHA1(8af0b26025a54e3b91604dd24a3c1c518fbd8536) )
+ ROM_LOAD16_BYTE( "046-c5.c5", 0x400000, 0x100000, CRC(4b735e45) SHA1(2f8b46388c4696aee6a97e1e21cdadf6b142b01a) )
+ ROM_LOAD16_BYTE( "046-c6.c6", 0x400001, 0x100000, CRC(273171df) SHA1(9c35832221e016c12ef1ed71da167f565daaf86c) )
+ ROM_LOAD16_BYTE( "046-c7.c7", 0x600000, 0x100000, CRC(12829c4c) SHA1(ac5f3d848d7116fc35c97f53a72c85e049dd3a2f) )
+ ROM_LOAD16_BYTE( "046-c8.c8", 0x600001, 0x100000, CRC(c944e03d) SHA1(be23999b8ce09ee15ba500ce4d5e2a82a4f58d9b) )
+ROM_END
+
+/****************************************
+ ID-0047
+ . NGM-047
+ NEO-MVS PROG-G2 (SNK-9201) / NEO-MVS CHA42G-1
+ . NGH-047
+ NEO-AEG PROG-G2 (PRO-CT0) / NEO-AEG CHA42G-2B
+ NEO-AEG PROG-G2 (PRO-CT0) / NEO-AEG CHA42G-2
+****************************************/
+
+ROM_START( fatfury2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "047-p1.p1", 0x000000, 0x100000, CRC(ecfdbb69) SHA1(59e2f137c6eaf043df4ddae865a9159a10265c60) )
+ /* The original p1 is 8mbit; also found sets with p1 / p2 4mbit on eprom. */
+
+ NEO_SFIX_128K( "047-s1.s1", CRC(d7dbbf39) SHA1(29253e596f475ebd41a6e3bb53952e3a0ccd2eed) )
+
+ NEO_BIOS_AUDIO_128K( "047-m1.m1", CRC(820b0ba7) SHA1(5708248d89446e49184eaadb52f7c61b2b6c13c5) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "047-v1.v1", 0x000000, 0x200000, CRC(d9d00784) SHA1(f6a91eada8c23aa4518c4b82eeebca69f79d845c) )
+ ROM_LOAD( "047-v2.v2", 0x200000, 0x200000, CRC(2c9a4b33) SHA1(d4a1c0951c02c8919b3ec32ed96933634ff9e54c) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "047-c1.c1", 0x000000, 0x100000, CRC(f72a939e) SHA1(67fc398ec28061adca0d3be82bbe7297015800da) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c2.c2", 0x000001, 0x100000, CRC(05119a0d) SHA1(c2f100b73eb04f65b6ba6089d49aceb51b470ec6) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c3.c3", 0x200000, 0x100000, CRC(01e00738) SHA1(79654f24d777dd5eb68bafc3b8cb9db71d5822e2) )
+ ROM_CONTINUE( 0x600000, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c4.c4", 0x200001, 0x100000, CRC(9fe27432) SHA1(89d22d77ba8bc6d1f6c974195c34ad61b9010de7) )
+ ROM_CONTINUE( 0x600001, 0x100000 )
+ROM_END
+
+/****************************************
+ ID-0048
+ . ??M-048
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+****************************************/
+
+ROM_START( janshin ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "048-p1.p1", 0x000000, 0x100000, CRC(fa818cbb) SHA1(afee2c897b766c84f13891fb52c574fb18df0951) )
+
+ NEO_SFIX_128K( "048-s1.s1", CRC(8285b25a) SHA1(d983640cda3e346e38469b4d3ec8048b116a7bb7) )
+
+ NEO_BIOS_AUDIO_128K( "048-m1.m1", CRC(310467c7) SHA1(c529961195c9bdf5d1ce70a38ad129002d1f3b5f) )
+
+ ROM_DEFAULT_BIOS( "japan" ) /* so the mahjong panel will work in the service menu */
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "048-v1.v1", 0x000000, 0x200000, CRC(f1947d2b) SHA1(955ff91ab24eb2a7ec51ff46c9f9f2ec060456b2) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "048-c1.c1", 0x000000, 0x200000, CRC(3fa890e9) SHA1(e73d2802bacfbc2b2b16fbbedddde17488e4bbde) )
+ ROM_LOAD16_BYTE( "048-c2.c1", 0x000001, 0x200000, CRC(59c48ad8) SHA1(2630817e735a6d197377558f4324c1442803fe15) )
+ROM_END
+
+/****************************************
+ ID-0049
+ . NGM-049
+ NEO-MVS PROG16 / NEO-MVS CHA42G-1
+ . NGH-049
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( androdun ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "049-p1.p1", 0x000000, 0x080000, CRC(3b857da2) SHA1(4dd86c739944696c16c3cdd85935d6dfa9fdc276) )
+ ROM_LOAD16_WORD_SWAP( "049-p2.p2", 0x080000, 0x080000, CRC(2f062209) SHA1(991cf3e3677929b2cc0b2787b0c7b6ad3700f618) )
+
+ NEO_SFIX_128K( "049-s1.s1", CRC(6349de5d) SHA1(bcc44b9576d7bedd9a39294530bb66f707690c72) )
+
+ NEO_BIOS_AUDIO_128K( "049-m1.m1", CRC(edd2acf4) SHA1(c4ee6ba834d54b9fc5a854dbc41a05877e090371) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "049-v1.v1", 0x000000, 0x100000, CRC(ce43cb89) SHA1(47f82e077abb6efc6b1b0490412ae147d5d2acef) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "049-c1.c1", 0x000000, 0x100000, CRC(7ace6db3) SHA1(c41cc9de8c0788dcc49ca494fd3bb3124062d9dd) )
+ ROM_LOAD16_BYTE( "049-c2.c2", 0x000001, 0x100000, CRC(b17024f7) SHA1(fcf7efae48fcdccaf5255c145de414fb246128f0) )
+ROM_END
+
+/****************************************
+ ID-0050
+ . ALM-004
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . ALH-004
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( ncommand )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "050-p1.p1", 0x000000, 0x100000, CRC(4e097c40) SHA1(43311a7ca14a14dcd4a99d8576a12e897b078643) )
+
+ NEO_SFIX_128K( "050-s1.s1", CRC(db8f9c8e) SHA1(11cb82cf3c4d0fc2da5df0c26410a64808093610) )
+
+ NEO_BIOS_AUDIO_128K( "050-m1.m1", CRC(6fcf07d3) SHA1(e9ecff4bfec1f5964bf06645f75d80d611b6231c) )
+
+ ROM_REGION( 0x180000, "ymsnd", 0 )
+ ROM_LOAD( "050-v1.v1", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) )
+ ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "050-c1.c1", 0x000000, 0x100000, CRC(87421a0a) SHA1(1d8faaf03778f7c5b062554d7333bbd3f0ca12ad) )
+ ROM_LOAD16_BYTE( "050-c2.c2", 0x000001, 0x100000, CRC(c4cf5548) SHA1(ef9eca5aeff9dda2209a050c2af00ed8979ae2bc) )
+ ROM_LOAD16_BYTE( "050-c3.c3", 0x200000, 0x100000, CRC(03422c1e) SHA1(920e5015aebe2ffc5ce43a52365c7f0a705f3b9e) )
+ ROM_LOAD16_BYTE( "050-c4.c4", 0x200001, 0x100000, CRC(0845eadb) SHA1(3c71a02bf0e07a5381846bb6d75bbe7dd546adea) )
+ROM_END
+
+/****************************************
+ ID-0051
+ . AIM-051
+ NEO-MVS PROG-G2 / NEO-MVS CHA42G-1
+ NEO-MVS PROG 4096 / NEO-MVS CHA 42G-2
+ . AIH-051
+****************************************/
+
+ROM_START( viewpoin )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "051-p1.p1", 0x000000, 0x100000, CRC(17aa899d) SHA1(674cd8ace7acdf4f407de741e3d0071bcb49c902) )
+
+ NEO_SFIX_128K( "051-s1.s1", CRC(9fea5758) SHA1(5c6f01da89f2639cf741ee7c39e27023b8083052) )
+
+ NEO_BIOS_AUDIO_128K( "051-m1.m1", CRC(8e69f29a) SHA1(7a25f4997996434ea1b7d0d1ca9e7aaf966cbd03) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ /* What board was originally used (labels 051-V2 and 051-V4)? MVS is twice confirmed on NEO-MVS PROG-G2 */
+ ROM_LOAD( "051-v2.v1", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) )
+ ROM_LOAD( "051-v4.v2", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "051-c1.c1", 0x000000, 0x100000, CRC(d624c132) SHA1(49c7e9f020cba45d7083b45252bcc03397f8c286) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "051-c2.c2", 0x000001, 0x100000, CRC(40d69f1e) SHA1(ec4a13582772594957f927622d50f54b0dfcd8d8) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+/****************************************
+ ID-0052
+ . NGM-052
+ NEO-MVS PROG-G2 (SNK-9201) / NEO-MVS CHA 42G-2
+ . NGH-052
+ NEO-AEG PROG-G2 (SNK-9201) / NEO-AEG CHA42G-2
+****************************************/
+
+ROM_START( ssideki )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "052-p1.p1", 0x000000, 0x080000, CRC(9cd97256) SHA1(1c780b711137fd79cc81b01941e84f3d59e0071f) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "052-c1.c1", 0x000000, 0x100000, CRC(53e1c002) SHA1(2125b1be379ea7933893ffb1cd65d6c4bf8b03bd) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "052-c2.c2", 0x000001, 0x100000, CRC(776a2d1f) SHA1(bca0bac87443e9e78c623d284f6cc96cc9c9098f) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+/****************************************
+ ID-0053
+ . ALM-005
+ NEO-MVS PROG16 / NEO-MVS CHA42G-1
+ . ALH-005
+ NEO-AEG PROG16 / NEO-AEG CHA42G-1
+ NEO-AEG PROG-G2 / NEO-AEG CHA42G-2C
+****************************************/
+
+ROM_START( wh1 ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "053-epr.p1", 0x000000, 0x080000, CRC(d42e1e9a) SHA1(9d1911fe4bf6202466ec45557dd008cbf01ca9c6) )
+ ROM_LOAD16_WORD_SWAP( "053-epr.p2", 0x080000, 0x080000, CRC(0e33e8a3) SHA1(4b7086edb504f3c30529d51ba8f453d48eba5164) )
+ /* P's on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) )
+
+ NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
+ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c2.c2", 0x000001, 0x100000, CRC(ec93b048) SHA1(d4159210df94e259f874a4671d271ec27be13451) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c3.c3", 0x200000, 0x100000, CRC(0dd64965) SHA1(e97b3b8a461da5e8861b3dfdacb25e007ced37a1) )
+ ROM_LOAD16_BYTE( "053-c4.c4", 0x200001, 0x100000, CRC(9270d954) SHA1(a2ef909868f6b06cdcc22a63ddf6c96be12b999c) )
+ROM_END
+
+ROM_START( wh1h ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "053-p1.p1", 0x000000, 0x080000, CRC(95b574cb) SHA1(b7b7af6a04c3d902e7f8852897741ecaf0b1062c) )
+ ROM_LOAD16_WORD_SWAP( "053-p2.p2", 0x080000, 0x080000, CRC(f198ed45) SHA1(24ccc091e97f63796562bb5b30df51f39bd504ef) )
+
+ NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) )
+
+ NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
+ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c2.c2", 0x000001, 0x100000, CRC(ec93b048) SHA1(d4159210df94e259f874a4671d271ec27be13451) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c3.c3", 0x200000, 0x100000, CRC(0dd64965) SHA1(e97b3b8a461da5e8861b3dfdacb25e007ced37a1) )
+ ROM_LOAD16_BYTE( "053-c4.c4", 0x200001, 0x100000, CRC(9270d954) SHA1(a2ef909868f6b06cdcc22a63ddf6c96be12b999c) )
+ROM_END
+
+ROM_START( wh1ha )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "053-p1_a.p1", 0x000000, 0x080000, CRC(ed29fde2) SHA1(52b8ca5b804f786f95e1dfb348d8c7b82f1d4ddf) )
+ ROM_LOAD16_WORD_SWAP( "053-p2_a.p2", 0x080000, 0x080000, CRC(98f2b158) SHA1(a64e1425970eb53cc910891db39973dee3d54ccc) )
+ /* Correct chip labels for p1 and p2 unknown */
+
+ NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) )
+
+ NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
+ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c2.c2", 0x000001, 0x100000, CRC(ec93b048) SHA1(d4159210df94e259f874a4671d271ec27be13451) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c3.c3", 0x200000, 0x100000, CRC(0dd64965) SHA1(e97b3b8a461da5e8861b3dfdacb25e007ced37a1) )
+ ROM_LOAD16_BYTE( "053-c4.c4", 0x200001, 0x100000, CRC(9270d954) SHA1(a2ef909868f6b06cdcc22a63ddf6c96be12b999c) )
+ROM_END
+
+/****************************************
+ ID-0054
+ Crossed Swords 2 (CD only? not confirmed, MVS might exist)
+****************************************/
+
+/****************************************
+ ID-0055
+ . NGM-055
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA256B
+ . NGH-055
+ NEO-AEG PROGRK / NEO-AEG CHA256
+****************************************/
+
+ROM_START( kof94 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "055-p1.p1", 0x100000, 0x100000, CRC(f10a2042) SHA1(d08a3f3c28be4b1793de7d362456281329fe1828) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "055-s1.s1", CRC(825976c1) SHA1(cb6a70bdd95d449d25196ca269b621c362db6743) )
+
+ NEO_BIOS_AUDIO_128K( "055-m1.m1", CRC(f6e77cf5) SHA1(292a3e3a4918ffe72bd1c41acb927b91844e035e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "055-v1.v1", 0x000000, 0x200000, CRC(8889596d) SHA1(c9ce713b720511438dbd3fe3bcc7c246f475c6a2) )
+ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) )
+ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) )
+ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) )
+ ROM_LOAD16_BYTE( "055-c3.c3", 0x400000, 0x200000, CRC(54f66254) SHA1(c594384bcd8b03beb8c595591505fecc44b185ac) )
+ ROM_LOAD16_BYTE( "055-c4.c4", 0x400001, 0x200000, CRC(0b01765f) SHA1(ec1fdcc944611408367bf5023d4ebe7edd9dfa88) )
+ ROM_LOAD16_BYTE( "055-c5.c5", 0x800000, 0x200000, CRC(ee759363) SHA1(8a5621c1b1f8267b9b9b6a14ab4944de542e1945) )
+ ROM_LOAD16_BYTE( "055-c6.c6", 0x800001, 0x200000, CRC(498da52c) SHA1(1e6e6202ee053a5261db889177ce3a087e078bda) )
+ ROM_LOAD16_BYTE( "055-c7.c7", 0xc00000, 0x200000, CRC(62f66888) SHA1(ac91a0eab0753bee175ad40213a4ae5d38ed5b87) )
+ ROM_LOAD16_BYTE( "055-c8.c8", 0xc00001, 0x200000, CRC(fe0a235d) SHA1(a45c66836e4e3c77dfef9d4c6cc422cb59169149) )
+ROM_END
+
+/****************************************
+ ID-0056
+ . NGM-056
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . NGH-056
+ NEO-AEG PROGRKB / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( aof2 ) /* MVS VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056-p1.p1", 0x000000, 0x100000, CRC(a3b1d021) SHA1(ee42f3ca4516226b0088d0303ed28e3ecdabcd71) )
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Different layout with 4xC (32mbit) also exists; chip labels are 056-C13, 056-C24, 056-C57 and 056-C68 */
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+ROM_START( aof2a ) /* AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "056-p1.p1", 0x000000, 0x100000, CRC(a3b1d021) SHA1(ee42f3ca4516226b0088d0303ed28e3ecdabcd71) )
+ /* the rom below acts as a patch to the program rom in the cart, replacing the first 512kb */
+ ROM_LOAD16_WORD_SWAP( "056-epr.ep1", 0x000000, 0x80000, CRC(75d6301c) SHA1(e72d15fba55f96be7b4fa29e705a7b78f56edf7d) )
+ /* P is on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "056-s1.s1", CRC(8b02638e) SHA1(aa4d28804ca602da776948b5f223ea89e427906b) )
+
+ NEO_BIOS_AUDIO_128K( "056-m1.m1", CRC(f27e9d52) SHA1(dddae733d87ce7c88ad2580a8f64cb6ff9572e67) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "056-v1.v1", 0x000000, 0x200000, CRC(4628fde0) SHA1(ece2a50f5270d844d58401b1447d1d856d78ea45) )
+ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) )
+ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) )
+ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) )
+ ROM_LOAD16_BYTE( "056-c3.c3", 0x400000, 0x200000, CRC(d2c88768) SHA1(22e2d84aa0c095944190e249ce87ef50d3f7b8ce) )
+ ROM_LOAD16_BYTE( "056-c4.c4", 0x400001, 0x200000, CRC(db39b883) SHA1(59de86c513dc4e230ae25d9e3b7e84621b657b54) )
+ ROM_LOAD16_BYTE( "056-c5.c5", 0x800000, 0x200000, CRC(c3074137) SHA1(9a75e3d63cb98d54f900dcfb3a03e21f3148d32f) )
+ ROM_LOAD16_BYTE( "056-c6.c6", 0x800001, 0x200000, CRC(31de68d3) SHA1(13ba7046cdd6863125f8284e60f102d4720af5a4) )
+ ROM_LOAD16_BYTE( "056-c7.c7", 0xc00000, 0x200000, CRC(3f36df57) SHA1(79ee97e9ae811a51141b535633f90e1491209d54) )
+ ROM_LOAD16_BYTE( "056-c8.c8", 0xc00001, 0x200000, CRC(e546d7a8) SHA1(74a2fca994a5a93a5784a46c0f68193122456a09) )
+ROM_END
+
+/****************************************
+ ID-0057
+ . ALM-006
+ NEO-MVS PROG 4096 B / NEO-MVS CHA 42G-3
+ . ALH-006
+ NEO-AEG PROG4096 B / NEO-AEG CHA42G-3
+****************************************/
+
+ROM_START( wh2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "057-p1.p1", 0x100000, 0x100000, CRC(65a891d9) SHA1(ff8d5ccb0dd22c523902bb3db3c645583a335056) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "057-s1.s1", CRC(fcaeb3a4) SHA1(1f3f85e38b8552333261c04ae5af0d6e3b310622) )
+
+ NEO_BIOS_AUDIO_128K( "057-m1.m1", CRC(8fa3bc77) SHA1(982f92978671e4ee66630948e6bb7565b37b5dc0) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "057-v1.v1", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) )
+ ROM_LOAD( "057-v2.v2", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "057-c1.c1", 0x000000, 0x200000, CRC(21c6bb91) SHA1(a2c17d0c91dd59528d8fa7fe110af8b20b25ff99) )
+ ROM_LOAD16_BYTE( "057-c2.c2", 0x000001, 0x200000, CRC(a3999925) SHA1(0ee861a77850d378d03c1bf00b9692abd860c759) )
+ ROM_LOAD16_BYTE( "057-c3.c3", 0x400000, 0x200000, CRC(b725a219) SHA1(4857687d156a9150a69b97d2729245a51c144a0c) )
+ ROM_LOAD16_BYTE( "057-c4.c4", 0x400001, 0x200000, CRC(8d96425e) SHA1(0f79c868a6a33ad25e38d842f30ec4440d809033) )
+ ROM_LOAD16_BYTE( "057-c5.c5", 0x800000, 0x200000, CRC(b20354af) SHA1(da7609fd467f2f4d71d92970f438a04d11ab1cc1) )
+ ROM_LOAD16_BYTE( "057-c6.c6", 0x800001, 0x200000, CRC(b13d1de3) SHA1(7d749c23a33d90fe50279e884540d71cf1aaaa6b) )
+ROM_END
+
+/****************************************
+ ID-0058
+ . NGM-058
+ NEO-MVS PROGGSC / NEO-MVS CHA42G-3B
+ NEO-MVS PROGGSC / NEO-MVS CHA 42G-3
+ . NGH-058
+ NEO-AEG PROGGS / NEO-AEG CHA42G-4
+****************************************/
+
+ROM_START( fatfursp ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058-p1.p1", 0x000000, 0x100000, CRC(2f585ba2) SHA1(429b4bf43fb9b1082c15d645ca328f9d175b976b) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+ROM_START( fatfurspa ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058-p1.p1", 0x000000, 0x100000, CRC(2f585ba2) SHA1(429b4bf43fb9b1082c15d645ca328f9d175b976b) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+ /* the rom below acts as a patch to the program rom in the cart, replacing the first 512kb */
+ ROM_LOAD16_WORD_SWAP( "058-epr.ep1", 0x000000, 0x080000, CRC(9f0c1e1a) SHA1(02861b0f230541becccc3df6a2c85dbe8733e7ce) )
+ /* P is on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+/****************************************
+ ID-0059
+ . NGM-059
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROG 4096 B / NEO-MVS CHA 42G-3
+ . NGH-059
+****************************************/
+
+ROM_START( savagere )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "059-p1.p1", 0x100000, 0x100000, CRC(01d4e9c0) SHA1(3179d2be59bf2de6918d506117cff50acf7e09f3) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "059-s1.s1", CRC(e08978ca) SHA1(55152cb9bd0403ae8656b93a6b1522dba5db6d1a) )
+
+ NEO_BIOS_AUDIO_128K( "059-m1.m1", CRC(29992eba) SHA1(187be624abe8670503edb235ff21ae8fdc3866e0) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "059-v2.v2", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ ROM_LOAD16_BYTE( "059-c3.c3", 0x400000, 0x200000, CRC(3e4eba4b) SHA1(770adec719e63a30ebe9522cc7576caaca44f3b2) )
+ ROM_LOAD16_BYTE( "059-c4.c4", 0x400001, 0x200000, CRC(3c2a3808) SHA1(698adcec0715c9e78b6286be38debf0ce28fd644) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x800000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x800001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ ROM_LOAD16_BYTE( "059-c7.c7", 0xc00000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0xc00001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+/****************************************
+ ID-0060
+ . ??M-060
+ NEO-MVS PROGGSC / NEO-MVS CHA256B
+****************************************/
+
+ROM_START( fightfev ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "060-p1.p1", 0x0000000, 0x100000, CRC(2a104b50) SHA1(3eb663d3df7074e1cdf4c0e450a35c9cf55d8979) )
+
+ NEO_SFIX_128K( "060-s1.s1", CRC(d62a72e9) SHA1(a23e4c4fd4ec11a7467ce41227c418b4dd1ef649) )
+
+ NEO_BIOS_AUDIO_128K( "060-m1.m1", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
+ ROM_LOAD( "060-v2.v2", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) )
+
+ ROM_REGION( 0x0800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) )
+ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) )
+ ROM_LOAD16_BYTE( "060-c3.c3", 0x0400000, 0x200000, CRC(0956b437) SHA1(c70be8b5cebf321afe4c3f5e9a12413c3077694a) )
+ ROM_LOAD16_BYTE( "060-c4.c4", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) )
+ROM_END
+
+ROM_START( fightfeva ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "060-p1.p1", 0x0000000, 0x100000, CRC(2a104b50) SHA1(3eb663d3df7074e1cdf4c0e450a35c9cf55d8979) )
+ /* the rom below acts as a patch to the program rom in the cart, replacing the first 512kb */
+ ROM_LOAD16_WORD_SWAP( "1.sp2", 0x000000, 0x080000, CRC(3032041b) SHA1(4b8ed2e6f74579ea35a53e06ccac42d6905b0f51) )
+ /* P is on eprom, has a Viccom logo at the top of the label with a circled '1' in the center */
+
+ NEO_SFIX_128K( "060-s1.s1", CRC(d62a72e9) SHA1(a23e4c4fd4ec11a7467ce41227c418b4dd1ef649) )
+
+ NEO_BIOS_AUDIO_128K( "060-m1.m1", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) )
+ ROM_LOAD( "060-v2.v2", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) )
+
+ ROM_REGION( 0x0800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) )
+ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) )
+ ROM_LOAD16_BYTE( "060-c3.c3", 0x0400000, 0x200000, CRC(0956b437) SHA1(c70be8b5cebf321afe4c3f5e9a12413c3077694a) )
+ ROM_LOAD16_BYTE( "060-c4.c4", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) )
+ROM_END
+
+/****************************************
+ ID-0061
+ . NGM-061
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROG 4096 B / NEO-MVS CHA256
+ . NGH-061
+ NEO-AEG PROGRKB / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( ssideki2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "061-p1.p1", 0x000000, 0x100000, CRC(5969e0dc) SHA1(78abea880c125ec5a85bef6404478512a34b5513) )
+ /* also found MVS sets with ep1 / ep2 on eprom; correct chip label unknown. */
+
+ NEO_SFIX_128K( "061-s1.s1", CRC(226d1b68) SHA1(de010f6fda3ddadb181fe37daa6105f22e78b970) )
+
+ NEO_BIOS_AUDIO_128K( "061-m1.m1", CRC(156f6951) SHA1(49686f615f109a02b4f23931f1c84fee13872ffd) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "061-v1.v1", 0x000000, 0x200000, CRC(f081c8d3) SHA1(fc9da0ddc1ddd1f9ae1443a726815c25e9dc38ae) )
+ ROM_LOAD( "061-v2.v2", 0x200000, 0x200000, CRC(7cd63302) SHA1(c39984c0ae0a8e76f1fc036344bbb83635c18937) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ /* Different layout with 8xC (8 mbit) also exists; naming sheme 061-Cx */
+ ROM_LOAD16_BYTE( "061-c1-16.c1", 0x000000, 0x200000, CRC(a626474f) SHA1(d695f0dcb9480088b3a7c1488bd541b4c159528a) )
+ ROM_LOAD16_BYTE( "061-c2-16.c2", 0x000001, 0x200000, CRC(c3be42ae) SHA1(7fa65538bd0a0a162e4d3e9f49913da59d915e02) )
+ ROM_LOAD16_BYTE( "061-c3-16.c3", 0x400000, 0x200000, CRC(2a7b98b9) SHA1(75e1019dca8a8583afcc53651ac856cba3a96315) )
+ ROM_LOAD16_BYTE( "061-c4-16.c4", 0x400001, 0x200000, CRC(c0be9a1f) SHA1(228f41eaefdf3e147761f8ef849e3b5f321877d4) )
+ROM_END
+
+/****************************************
+ ID-0062
+ . DEM-001
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . DEH-001
+****************************************/
+
+ROM_START( spinmast )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "062-p1.p1", 0x000000, 0x100000, CRC(37aba1aa) SHA1(1a2ab9593371cc2f665121d554eec3f6bb4d09ff) )
+ ROM_LOAD16_WORD_SWAP( "062-p2.sp2", 0x100000, 0x100000, CRC(f025ab77) SHA1(4944be04648296d0b93cfe4c5ca7b9cede072cff) )
+
+ NEO_SFIX_128K( "062-s1.s1", CRC(289e2bbe) SHA1(f52c7f2bffc89df3130b3cabd200408509a28cdc) )
+
+ NEO_BIOS_AUDIO_128K( "062-m1.m1", CRC(76108b2f) SHA1(08c89a8b746dbb10ff885b41cde344173c2e3699) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "062-v1.v1", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "062-c1.c1", 0x000000, 0x100000, CRC(a9375aa2) SHA1(69218d8f1361e9ea709da11e3f15fe46b1db7181) )
+ ROM_LOAD16_BYTE( "062-c2.c2", 0x000001, 0x100000, CRC(0e73b758) SHA1(a247f736fbca0b609818dca4844ebb8442753bc1) )
+ ROM_LOAD16_BYTE( "062-c3.c3", 0x200000, 0x100000, CRC(df51e465) SHA1(171953c7a870f3ab96e0f875117ee7343931fd38) )
+ ROM_LOAD16_BYTE( "062-c4.c4", 0x200001, 0x100000, CRC(38517e90) SHA1(f7c64b94ac20f5146f9bb48b53cb2b30fe5b8f8c) )
+ ROM_LOAD16_BYTE( "062-c5.c5", 0x400000, 0x100000, CRC(7babd692) SHA1(0d4cd5006baa8d951cd2b6194ace566fa2845b8a) )
+ ROM_LOAD16_BYTE( "062-c6.c6", 0x400001, 0x100000, CRC(cde5ade5) SHA1(5899ef5dfcdbb8cf8c6aba748dbb52f3c5fed5fe) )
+ ROM_LOAD16_BYTE( "062-c7.c7", 0x600000, 0x100000, CRC(bb2fd7c0) SHA1(cce11c4cf39ac60143235ff89261806df339dae5) )
+ ROM_LOAD16_BYTE( "062-c8.c8", 0x600001, 0x100000, CRC(8d7be933) SHA1(e7097cfa26a959f90721e2e8368ceb47ea9db661) )
+ROM_END
+
+/****************************************
+ ID-0063
+ . NGM-063
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ . NGH-063
+ NEO-AEG PROGTOP2 / NEO-AEG CHA256 B
+****************************************/
+
+ROM_START( samsho2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063-p1.p1", 0x100000, 0x100000, CRC(22368892) SHA1(0997f8284aa0f57a333be8a0fdea777d0d01afd6) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+ /* also found MVS sets with ep1 / ep2 on eprom and p1 / sp2 on maskrom; correct chip label unknown */
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2k ) /* KOREAN VERSION */
+ // This has corrupt text if used with the Japan bios due to the replacement of the s1 rom to contain the new logo
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063-p1-kan.p1", 0x100000, 0x100000, CRC(147cc6d7) SHA1(8e22305f41a0688786ff55437c25948e6c8fda58) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+ // the roms below apply as patch over the main program (I haven't checked what they change, the game boots as the Korean version even with just the above program)
+ ROM_LOAD16_WORD_SWAP( "063-ep1-kan.ep1", 0x000000, 0x080000, CRC(fa32e2d8) SHA1(94f56759ec04ab3a1e557bc2dc51b92176b3c147) )
+ ROM_LOAD16_WORD_SWAP( "063-ep2-kan.ep2", 0x080000, 0x080000, CRC(70b1a4d9) SHA1(387737e87a68d0ea4fd13693f1f30d3227a17c82) ) // this is exactly the same data anyway!
+
+ NEO_SFIX_128K( "063-s1-kan.s1", CRC(ff08f80b) SHA1(240c6a1c52edebb49cc99ea08484c6a2d61ebf84) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+/****************************************
+ ID-0064
+ . ADM-007
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . ADH-007
+ NEO-AEG PROGRK / NEO-AEG CHA256
+ NEO-AEG PROGRKB / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( wh2j ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "064-p1.p1", 0x100000, 0x100000, CRC(385a2e86) SHA1(cfde4a1aeae038a3d6ca9946065624f097682d3d) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "064-s1.s1", CRC(2a03998a) SHA1(5e33f469982f12d4622a06d323a345f192bf88e6) )
+
+ NEO_BIOS_AUDIO_128K( "064-m1.m1", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "064-v1.v1", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Different layout with 4xC (32 mbit) also exists; chip labels are 064-C13, 064-C24, 064-C57 and 064-c68. */
+ ROM_LOAD16_BYTE( "064-c1.c1", 0x000000, 0x200000, CRC(2ec87cea) SHA1(e713ec7839a7665edee6ee3f82a6e530b3b4bd7c) )
+ ROM_LOAD16_BYTE( "064-c2.c2", 0x000001, 0x200000, CRC(526b81ab) SHA1(b5f0a2f04489539ed6b9d0810b12787356c64b23) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x400000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x400001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x800000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x800001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0xc00000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0xc00001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+/****************************************
+ ID-0065
+ . DEM-002
+ NEO-MVS PROG42G-1 / NEO-MVS CHA42G-1
+ . DEH-002
+ NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
+****************************************/
+
+ROM_START( wjammers )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "065-p1.p1", 0x000000, 0x100000, CRC(6692c140) SHA1(5da574e906974fac92bb2f49bdeea257c014a897) )
+
+ NEO_SFIX_128K( "065-s1.s1", CRC(074b5723) SHA1(86d3b3bb5414f43e4d3b7a2af0db23cc71ce8412) )
+
+ NEO_BIOS_AUDIO_128K( "065-m1.m1", CRC(52c23cfc) SHA1(809a7e072ad9acbffc25e9bd27cdb97638d09d07) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "065-v1.v1", 0x000000, 0x100000, CRC(ce8b3698) SHA1(7d75e2a5cf8c90be422f8b425447e81597fe145a) )
+ ROM_LOAD( "065-v2.v2", 0x100000, 0x100000, CRC(659f9b96) SHA1(62f40365212153bc3b92a1187fa44f6cdc7f7b83) )
+ ROM_LOAD( "065-v3.v3", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) )
+ ROM_LOAD( "065-v4.v4", 0x300000, 0x100000, CRC(5dee7963) SHA1(f8e6de73d65dd80b29c711f00835a574a770cb4e) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "065-c1.c1", 0x000000, 0x100000, CRC(c7650204) SHA1(42918d700d59864f8ab15caf968a062a563c9b09) )
+ ROM_LOAD16_BYTE( "065-c2.c2", 0x000001, 0x100000, CRC(d9f3e71d) SHA1(fad1f64061eac1bf85bf6d75d2eae974a8c94069) )
+ ROM_LOAD16_BYTE( "065-c3.c3", 0x200000, 0x100000, CRC(40986386) SHA1(65795a50197049681265946713d416c9cdb68f08) )
+ ROM_LOAD16_BYTE( "065-c4.c4", 0x200001, 0x100000, CRC(715e15ff) SHA1(ac8b8b01f5c7384b883afbe0cf977430378e3fef) )
+ROM_END
+
+/****************************************
+ ID-0066
+ . DEM-003
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . DEH-003
+****************************************/
+
+ROM_START( karnovr )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "066-p1.p1", 0x000000, 0x100000, CRC(8c86fd22) SHA1(8cf97c6fb9c5717167ccc54bf5856248ccaf32c6) )
+
+ NEO_SFIX_128K( "066-s1.s1", CRC(bae5d5e5) SHA1(aa69d9b235b781ec51f72a528fada9cb12e72cbc) )
+
+ NEO_BIOS_AUDIO_128K( "066-m1.m1", CRC(030beae4) SHA1(ceb6ee6c09514504efacdbca7b280901e4c97084) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "066-v1.v1", 0x000000, 0x200000, CRC(0b7ea37a) SHA1(34e7d4f6db053674a7e8c8b2e3e398777d5b02e6) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "066-c1.c1", 0x000000, 0x200000, CRC(09dfe061) SHA1(ca4c0f0ce80967b4be2f18b72435c468bbfbac4c) )
+ ROM_LOAD16_BYTE( "066-c2.c2", 0x000001, 0x200000, CRC(e0f6682a) SHA1(addb4fbc30da2b8ffc86819d92a874eb232f67dd) )
+ ROM_LOAD16_BYTE( "066-c3.c3", 0x400000, 0x200000, CRC(a673b4f7) SHA1(d138f5b38fd65c61549ce36f5c4983f7c8a3e7f6) )
+ ROM_LOAD16_BYTE( "066-c4.c4", 0x400001, 0x200000, CRC(cb3dc5f4) SHA1(865d9ccfc3df517c341d6aac16120f6b6aa759fe) )
+ ROM_LOAD16_BYTE( "066-c5.c5", 0x800000, 0x200000, CRC(9a28785d) SHA1(19723e1f7ff429e8a038d89488b279f830dfaf6e) )
+ ROM_LOAD16_BYTE( "066-c6.c6", 0x800001, 0x200000, CRC(c15c01ed) SHA1(7cf5583e6610bcdc3b332896cefc71df84fb3f19) )
+ROM_END
+
+/****************************************
+ ID-0067
+ . ??M-067
+ NEO-MVS PROG16 / NEO-MVS CHA256B
+ NEO-MVS PROG16 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( gururin ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "067-p1.p1", 0x000000, 0x80000, CRC(4cea8a49) SHA1(cea4a35db8de898e30eb40dd339b3cbe77ac0856) )
+
+ NEO_SFIX_128K( "067-s1.s1", CRC(b119e1eb) SHA1(f63a68a71aea220d3d4475847652e2a1f68b2b6f) )
+
+ NEO_BIOS_AUDIO_128K( "067-m1.m1", CRC(9e3c6328) SHA1(17e8479c258f28a01d2283be9e692ff7685898cc) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "067-v1.v1", 0x000000, 0x80000, CRC(cf23afd0) SHA1(10f87014ee10613f92b04f482f449721a6379db7) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "067-c1.c1", 0x000000, 0x200000, CRC(35866126) SHA1(e4b24670ccc7901af5f66b11b15fae4e67f843ab) )
+ ROM_LOAD16_BYTE( "067-c2.c2", 0x000001, 0x200000, CRC(9db64084) SHA1(68a43c12f63f5e98d68ad0902a6551c5d30f8543) )
+ROM_END
+
+/****************************************
+ ID-0068
+ . NGM-068
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+****************************************/
+
+ROM_START( pspikes2 ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "068-pg1.p1", 0x000000, 0x100000, CRC(105a408f) SHA1(2ee51defa1c24c66c63a6498ee542ac26de3cfbb) )
+
+ NEO_SFIX_128K( "068-sg1.s1", CRC(18082299) SHA1(efe93fabe6a76a5dc8cf12f255e571480afb40a0) )
+
+ NEO_BIOS_AUDIO_128K( "068-mg1.m1", CRC(b1c7911e) SHA1(27b298e7d50981331e17aa642e2e363ffac4333a) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "068-v1.v1", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) )
+ ROM_LOAD( "068-v2.v2", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) )
+ ROM_LOAD( "068-v3.v3", 0x200000, 0x100000, CRC(81ff05aa) SHA1(d74302f38c59055bfc83b39dff798a585314fecd) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "068-c1.c1", 0x000000, 0x100000, CRC(7f250f76) SHA1(5109a41adcb7859e24dc43d88842d4cc18cd3305) )
+ ROM_LOAD16_BYTE( "068-c2.c2", 0x000001, 0x100000, CRC(20912873) SHA1(2df8766b531e47ffc30457e41c63b83557b4f468) )
+ ROM_LOAD16_BYTE( "068-c3.c3", 0x200000, 0x100000, CRC(4b641ba1) SHA1(7a9c42a30163eda455f7bde2302402b1a5de7178) )
+ ROM_LOAD16_BYTE( "068-c4.c4", 0x200001, 0x100000, CRC(35072596) SHA1(4150a21041f06514c97592bd8af686504b06e187) )
+ ROM_LOAD16_BYTE( "068-c5.c5", 0x400000, 0x100000, CRC(151dd624) SHA1(f2690a3fe9c64f70f283df785a5217d5b92a289f) )
+ ROM_LOAD16_BYTE( "068-c6.c6", 0x400001, 0x100000, CRC(a6722604) SHA1(b40c57fb4be93ac0b918829f88393ced3d4f8bde) )
+ROM_END
+
+/****************************************
+ ID-0069
+ . NGM-069
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+. NGH-069
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( fatfury3 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "069-p1.p1", 0x000000, 0x100000, CRC(a8bcfbbc) SHA1(519c4861151797e5f4d4f33432b83dfabed8e7c4) )
+ ROM_LOAD16_WORD_SWAP( "069-sp2.sp2", 0x100000, 0x200000, CRC(dbe963ed) SHA1(8ece7f663cfe8e563576a397e41161d392cee67e) )
+
+ NEO_SFIX_128K( "069-s1.s1", CRC(0b33a800) SHA1(b7d2cc97da4f30ddebc7b801f5e1d17d2306b2db) )
+
+ NEO_BIOS_AUDIO_128K( "069-m1.m1", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "069-c5.c5", 0x1000000, 0x200000, CRC(b3ec6fa6) SHA1(7e4c8ee9dd8d9a25ff183d9d8b05f38769348bc7) )
+ ROM_LOAD16_BYTE( "069-c6.c6", 0x1000001, 0x200000, CRC(69210441) SHA1(6d496c549dba65caabeaffe5b762e86f9d648a26) )
+ROM_END
+
+/****************************************
+ ID-0070
+ . ??M-070
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( zupapa ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "070-p1.p1", 0x000000, 0x100000, CRC(5a96203e) SHA1(49cddec9ca6cc51e5ecf8a34e447a23e1f8a15a1) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "070-epr.m1", CRC(5a3b3191) SHA1(fa9a9930e18c64e598841fb344c4471d3d2c1964) )
+ /* M1 on eprom, correct chip label unknown */
+
+ ROM_REGION( 0x0200000, "ymsnd", 0 )
+ ROM_LOAD( "070-v1.v1", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "070-c1.c1", 0x0000000, 0x800000, CRC(f8ad02d8) SHA1(9be54532332a8e963ec35ff1e518947bb11ebade) )
+ ROM_LOAD16_BYTE( "070-c2.c2", 0x0000001, 0x800000, CRC(70156dde) SHA1(06286bf043d50199b47df9a76ca91f39cb28cb90) )
+ROM_END
+
+/****************************************
+ ID-0071
+ Bang Bang Busters (prototype) 1994 Visco
+ Prepared for release in 2000/2001, but apparently Zupapa was favored
+ The 2000 version was released in 2010 for MVS and AES (Releaser claims that it is officially licensed by VISCO)
+
+ Reported UNIVERSE BIOS CRC32:
+ ROM EC861CAF
+ BANK 0 NOT USED
+ BANK 1 NOT USED
+ BANK 2 NOT USED
+ BANK 3 NOT USED
+ ****************************************/
+ROM_START( b2b )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "071.p1", 0x000000, 0x080000, CRC(7687197d) SHA1(4bb9cb7819807f7a7e1f85f1c4faac4a2f8761e8) )
+
+ NEO_SFIX_128K( "071.s1", CRC(44e5f154) SHA1(b3f80051789e60e5d8c5df0408f1aba51616e92d) )
+
+ NEO_BIOS_AUDIO_128K( "071.m1", CRC(6da739ad) SHA1(cbf5f55c54b4ee00943e2a411eeee4e465ce9c34) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "071.v1", 0x000000, 0x100000, CRC(50feffb0) SHA1(00127dae0130889995bfa7560bc4b0662f74fba5) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "071.c1", 0x000000, 0x200000, CRC(23d84a7a) SHA1(9034658ad40e2c45558abc3db312aa2764102fc4) )
+ ROM_LOAD16_BYTE( "071.c2", 0x000001, 0x200000, CRC(ce7b6248) SHA1(ad1cd5adae5c151e183ff88b68afe10f7009f48e) )
+ROM_END
+
+
+/****************************************
+ ID-0072
+ Last Odyssey Pinball Fantasia (prototype) 1995 Monolith
+ A video of this was on youtube in 2010/2011.
+ ****************************************/
+
+/****************************************
+ ID-0073
+ . ??M-073
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+****************************************/
+
+ROM_START( panicbom ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "073-p1.p1", 0x000000, 0x080000, CRC(adc356ad) SHA1(801e0a54b65d7a3500e6cef2d6bba40c6356dc1f) )
+
+ NEO_SFIX_128K( "073-s1.s1", CRC(b876de7e) SHA1(910347d7657470da914fb0a6b0ea02891e13c081) )
+
+ NEO_BIOS_AUDIO_128K( "073-m1.m1", CRC(3cdf5d88) SHA1(6d8365a946fbd0b7c7b896536322638d80f6a764) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "073-v1.v1", 0x000000, 0x200000, CRC(7fc86d2f) SHA1(aa4234d22157060e0ba97a09c4e85c5276b74099) )
+ ROM_LOAD( "073-v2.v2", 0x200000, 0x100000, CRC(082adfc7) SHA1(19c168e9a6cadcbed79033c320bcf3a45f846daf) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "073-c1.c1", 0x000000, 0x100000, CRC(8582e1b5) SHA1(e17d8f57b8ebee14b8e705374b34abe928937258) )
+ ROM_LOAD16_BYTE( "073-c2.c2", 0x000001, 0x100000, CRC(e15a093b) SHA1(548a418c81af79cd7ab6ad165b8d6daee30abb49) )
+ROM_END
+
+/****************************************
+ ID-0074
+ . ADM-008
+ NEO-MVS PROGTOP / NEO-MVS CHA256B
+ . ADH-008
+ NEO-AEG PROGRK / NEO-AEG CHA256
+****************************************/
+
+ROM_START( aodk ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "074-p1.p1", 0x100000, 0x100000, CRC(62369553) SHA1(ca4d561ee08d16fe6804249d1ba49188eb3bd606) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "074-s1.s1", CRC(96148d2b) SHA1(47725a8059346ebe5639bbdbf62a2ac8028756a9) )
+
+ NEO_BIOS_AUDIO_128K( "074-m1.m1", CRC(5a52a9d1) SHA1(ef913a9a55d29d5dd3beab1ce6039d64ce9b1a5b) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "074-v1.v1", 0x000000, 0x200000, CRC(7675b8fa) SHA1(29f4facf89d551237b31bf779693cbbbc94e1ede) )
+ ROM_LOAD( "074-v2.v2", 0x200000, 0x200000, CRC(a9da86e9) SHA1(ff65af61e42b79a75060a352b24077d1fa28c83f) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "074-c1.c1", 0x000000, 0x200000, CRC(a0b39344) SHA1(adfff7b8836347abf030611563e6068a91164d0a) )
+ ROM_LOAD16_BYTE( "074-c2.c2", 0x000001, 0x200000, CRC(203f6074) SHA1(737f2d707d504df1da1ca5c5cf61cf489a33eb56) )
+ ROM_LOAD16_BYTE( "074-c3.c3", 0x400000, 0x200000, CRC(7fff4d41) SHA1(bebd18a75adeb34c3bbd49cfc8fd3d8c2bf9e475) )
+ ROM_LOAD16_BYTE( "074-c4.c4", 0x400001, 0x200000, CRC(48db3e0a) SHA1(a88505e001e01bb45fb26beda5af24943d02552a) )
+ ROM_LOAD16_BYTE( "074-c5.c5", 0x800000, 0x200000, CRC(c74c5e51) SHA1(0399c53e2a3d721901dddc073fda6ec22e02dfd4) )
+ ROM_LOAD16_BYTE( "074-c6.c6", 0x800001, 0x200000, CRC(73e8e7e0) SHA1(dd6580227743e6a3db4950456ebe870008e022b2) )
+ ROM_LOAD16_BYTE( "074-c7.c7", 0xc00000, 0x200000, CRC(ac7daa01) SHA1(78407a464f67d949933ce2ccaa23fbed80dff1ea) )
+ ROM_LOAD16_BYTE( "074-c8.c8", 0xc00001, 0x200000, CRC(14e7ad71) SHA1(d4583fbce361fd1a11ac6c1a27b0b669e8a5c718) )
+ROM_END
+
+/****************************************
+ ID-0075
+ . NGM-075
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . NGH-075
+ NEO-AEG PROGRK / NEO-AEG CHA256
+****************************************/
+
+ROM_START( sonicwi2 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "075-p1.p1", 0x100000, 0x100000, CRC(92871738) SHA1(fed040a7c1ff9e495109813a702d09fb1d2ecf3a) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "075-s1.s1", CRC(c9eec367) SHA1(574e1afe7e0d54610c145131106e59ba2894eeb7) )
+
+ NEO_BIOS_AUDIO_128K( "075-m1.m1", CRC(bb828df1) SHA1(eab8e2868173bdaac7c7ed97305a9aa1033fd303) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "075-v1.v1", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) )
+ ROM_LOAD( "075-v2.v2", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "075-c1.c1", 0x000000, 0x200000, CRC(3278e73e) SHA1(d9e6c8a3a5213690a1b8747d27806d8ac5aac405) )
+ ROM_LOAD16_BYTE( "075-c2.c2", 0x000001, 0x200000, CRC(fe6355d6) SHA1(ca72fff7a908b6d9325761079ff2a0e28f34cf89) )
+ ROM_LOAD16_BYTE( "075-c3.c3", 0x400000, 0x200000, CRC(c1b438f1) SHA1(b3751c5b426bca0fcc3a58bdb86712c22ef908ab) )
+ ROM_LOAD16_BYTE( "075-c4.c4", 0x400001, 0x200000, CRC(1f777206) SHA1(e29c5ae65ebdcc1167a894306d2446ce909639da) )
+ROM_END
+
+/****************************************
+ ID-0076
+ . ??M-076
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+****************************************/
+
+ROM_START( zedblade ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "076-p1.p1", 0x000000, 0x080000, CRC(d7c1effd) SHA1(485c2308a40baecd122be9ab4996044622bdcc7e) )
+
+ NEO_SFIX_128K( "076-s1.s1", CRC(f4c25dd5) SHA1(8ec9026219f393930634f9170edbaaee479f875e) )
+
+ NEO_BIOS_AUDIO_128K( "076-m1.m1", CRC(7b5f3d0a) SHA1(4a301781a57ff236f49492b576ff4858b0ffbdf8) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "076-v1.v1", 0x000000, 0x200000, CRC(1a21d90c) SHA1(4793ab06421228ad122e359653ed0f1339b90c7a) )
+ ROM_LOAD( "076-v2.v2", 0x200000, 0x200000, CRC(b61686c3) SHA1(5a3405e833ce36abb7421190438b5cccc8537919) )
+ ROM_LOAD( "076-v3.v3", 0x400000, 0x100000, CRC(b90658fa) SHA1(b9a4b34565ce3688495c47e35c9b888ef686ae9f) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "076-c1.c1", 0x000000, 0x200000, CRC(4d9cb038) SHA1(c0b52b32e1fa719b99ae242d61d5dbea1437331c) )
+ ROM_LOAD16_BYTE( "076-c2.c2", 0x000001, 0x200000, CRC(09233884) SHA1(1895cd0d126a022bce1cc4c7a569032d89f35e3f) )
+ ROM_LOAD16_BYTE( "076-c3.c3", 0x400000, 0x200000, CRC(d06431e3) SHA1(643bd1ad74af272795b02143ba80a76e375036ab) )
+ ROM_LOAD16_BYTE( "076-c4.c4", 0x400001, 0x200000, CRC(4b1c089b) SHA1(cd63961d88c5be84673cce83c683a86b222a064d) )
+ROM_END
+
+/****************************************
+ ID-0077
+ The Warlocks of the Fates / Shinryu Senki (prototype) 1995 SNK/Astec21
+ a video of intro and full gameplay was on youtube in 2014.
+****************************************/
+
+/****************************************
+ ID-0078
+ . NGM-078
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ . NGH-078
+****************************************/
+
+ROM_START( galaxyfg )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "078-p1.p1", 0x100000, 0x100000, CRC(45906309) SHA1(cdcd96a564acf42e959193e139e149b29c103e25) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "078-s1.s1", CRC(72f8923e) SHA1(da908bffc2b5d8baa2002dbb5bfb3aa17d2472b7) )
+
+ NEO_BIOS_AUDIO_128K( "078-m1.m1", CRC(8e9e3b10) SHA1(7c44d1dbd4f8d337c99e90361d1dab837df85e31) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "078-v1.v1", 0x000000, 0x200000, CRC(e3b735ac) SHA1(e16dfac09aef8115a20bae0bef8c86d4e7d0dc4a) )
+ ROM_LOAD( "078-v2.v2", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) )
+ ROM_LOAD( "078-v3.v3", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "078-c1.c1", 0x000000, 0x200000, CRC(c890c7c0) SHA1(b96c18a41c34070a4f24ca77cb7516fae8b0fd0c) )
+ ROM_LOAD16_BYTE( "078-c2.c2", 0x000001, 0x200000, CRC(b6d25419) SHA1(e089df9c9a9645f706e501108d634f4d222622a2) )
+ ROM_LOAD16_BYTE( "078-c3.c3", 0x400000, 0x200000, CRC(9d87e761) SHA1(ea1b6d7c9d5ef3a9b48968bde5a52d5699d591cc) )
+ ROM_LOAD16_BYTE( "078-c4.c4", 0x400001, 0x200000, CRC(765d7cb8) SHA1(7b9c86714d688602064d928c9d2b49d70bb7541e) )
+ ROM_LOAD16_BYTE( "078-c5.c5", 0x800000, 0x200000, CRC(e6b77e6a) SHA1(db3b8fc62a6f21c6653621c0665450d5d9a9913d) )
+ ROM_LOAD16_BYTE( "078-c6.c6", 0x800001, 0x200000, CRC(d779a181) SHA1(2761026abd9698a7b56114b76631563abd41fd12) )
+ ROM_LOAD16_BYTE( "078-c7.c7", 0xc00000, 0x100000, CRC(4f27d580) SHA1(c0f12496b45b2fe6e94aa8ac52b0157063127e0a) )
+ ROM_LOAD16_BYTE( "078-c8.c8", 0xc00001, 0x100000, CRC(0a7cc0d8) SHA1(68aaee6341c87e56ce11acc1c4ec8047839fe70d) )
+ROM_END
+
+/****************************************
+ ID-0079
+ . DEM-004
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ . DEH-004
+ NEO-AEG PROGRK / NEO-AEG CHA256
+****************************************/
+
+ROM_START( strhoop ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "079-p1.p1", 0x000000, 0x100000, CRC(5e78328e) SHA1(7a00b096ed6dd77afc3008c5a4c83686e475f323) )
+
+ NEO_SFIX_128K( "079-s1.s1", CRC(3ac06665) SHA1(ba9ab51eb95c3568304377ef6d7b5f32e8fbcde1) )
+
+ NEO_BIOS_AUDIO_128K( "079-m1.m1", CRC(bee3455a) SHA1(fd5345d9847982085a9b364fff542580889bf02f) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "079-v1.v1", 0x000000, 0x200000, CRC(718a2400) SHA1(cefc5d0b302bd4a87ab1fa244ade4482c23c6806) )
+ ROM_LOAD( "079-v2.v2", 0x200000, 0x100000, CRC(720774eb) SHA1(e4926f01322d0a15e700fb150b368152f2091146) )
+ /* AES 079-v2 is only 4 mbit (TC534200), data is the same */
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "079-c1.c1", 0x000000, 0x200000, CRC(0581c72a) SHA1(453f7a8474195a1120da5fa24337d79674563d9e) )
+ ROM_LOAD16_BYTE( "079-c2.c2", 0x000001, 0x200000, CRC(5b9b8fb6) SHA1(362aa0de0d2cf9aa03758363ffb1e15e046a3930) )
+ ROM_LOAD16_BYTE( "079-c3.c3", 0x400000, 0x200000, CRC(cd65bb62) SHA1(6f47d77d61d4289bcee82df7c4efa5346a6e4c80) )
+ ROM_LOAD16_BYTE( "079-c4.c4", 0x400001, 0x200000, CRC(a4c90213) SHA1(1b9f7b5f31acd6df2bdab81b849f32c13aa1b884) )
+ROM_END
+
+/****************************************
+ ID-0080
+ . SAM-080
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ Boards used for the Korean release
+ . SAH-080
+ NEO-AEG PROGTOP2 / NEO-AEG CHA256 B
+****************************************/
+
+ROM_START( quizkof ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "080-p1.p1", 0x000000, 0x100000, CRC(4440315e) SHA1(f4adba8e341d64a1f6280dfd98ebf6918c00608d) )
+
+ NEO_SFIX_128K( "080-s1.s1", CRC(d7b86102) SHA1(09e1ca6451f3035ce476e3b045541646f860aad5) )
+
+ NEO_BIOS_AUDIO_128K( "080-m1.m1", CRC(f5f44172) SHA1(eaaba1781622901b91bce9257be4e05f84df053b) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "080-v1.v1", 0x000000, 0x200000, CRC(0be18f60) SHA1(05c8b7d9f5a8583015f31902ad16d9c621f47d4e) )
+ ROM_LOAD( "080-v2.v2", 0x200000, 0x200000, CRC(4abde3ff) SHA1(0188bfcafa9a1aac302705736a2bcb26b9d684c2) )
+ ROM_LOAD( "080-v3.v3", 0x400000, 0x200000, CRC(f02844e2) SHA1(8c65ebe146f4ddb6c904f8125cb32767f74c24d5) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "080-c1.c1", 0x000000, 0x200000, CRC(ea1d764a) SHA1(78cc1735624c37f90607baa92e110a3c5cc54c6f) )
+ ROM_LOAD16_BYTE( "080-c2.c2", 0x000001, 0x200000, CRC(d331d4a4) SHA1(94228d13fb1e30973eb54058e697f17456ee16ea) )
+ ROM_LOAD16_BYTE( "080-c3.c3", 0x400000, 0x200000, CRC(b4851bfe) SHA1(b8286c601de5755c1681ea46e177fc89006fc066) )
+ ROM_LOAD16_BYTE( "080-c4.c4", 0x400001, 0x200000, CRC(ca6f5460) SHA1(ed36e244c9335f4c0a97c57b7b7f1b849dd3a90d) )
+ROM_END
+
+ROM_START( quizkofk ) /* KOREAN VERSION */
+ /* Made by Viccom Corp.; proms have manufacturer stamp VICxxxxxx-xxx, chip labels same as quizkof; Cart ID 0080 */
+ /* Due to parent set naming limitations, roms have been named vic-xxx */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "vic-080-p1.p1", 0x000000, 0x100000, CRC(2589488e) SHA1(609f3095c1cf8b11335b56f23c5d955eebd66dd2) )
+
+ NEO_SFIX_128K( "vic-080-s1.s1", CRC(af72c30f) SHA1(f6a2c583f38295b7da2cbcf4b2c7ed3d3e01db4f) )
+
+ NEO_BIOS_AUDIO_128K( "vic-080-m1.m1", CRC(4f157e9a) SHA1(8397bfdd5738914670ada7cd8c611c20ed1f74da) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "080-v1.v1", 0x000000, 0x200000, CRC(0be18f60) SHA1(05c8b7d9f5a8583015f31902ad16d9c621f47d4e) )
+ ROM_LOAD( "vic-080-v2.v2", 0x200000, 0x200000, CRC(719fee5b) SHA1(c94f8ca066c9693cd7c9fd311db1ad9b2665fc69) )
+ ROM_LOAD( "vic-080-v3.v3", 0x400000, 0x200000, CRC(64b7efde) SHA1(11727f9a3c4da17fa7b00559c7081b66e7211c49) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "vic-080-c1.c1", 0x000000, 0x200000, CRC(94d90170) SHA1(4ab63dadc6ee0d32b8784c327681376f5fef0df9) )
+ ROM_LOAD16_BYTE( "vic-080-c2.c2", 0x000001, 0x200000, CRC(297f25a1) SHA1(0dd845726c640d70804b5fd5854921771e8dbf19) )
+ ROM_LOAD16_BYTE( "vic-080-c3.c3", 0x400000, 0x200000, CRC(cf484c4f) SHA1(f588908a693dbbb8362ffbfe5035dd5f867d9697) )
+ ROM_LOAD16_BYTE( "vic-080-c4.c4", 0x400001, 0x200000, CRC(36e5d997) SHA1(99955ff947e2e586e60c1146c978c70705787917) )
+ROM_END
+
+/****************************************
+ ID-0081
+ . NGM-081
+ NEO-MVS PROGTOP / NEO-MVS CHA42G-3B
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROG 4096 B / NEO-MVS CHA 42G-3
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . NGH-081
+ NEO-AEG PROGTOP2 / NEO-AEG CHA256 B
+****************************************/
+
+ROM_START( ssideki3 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "081-p1.p1", 0x100000, 0x100000, CRC(6bc27a3d) SHA1(94692abe7343f9204a557acae4ab74d0af511ca3) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "081-s1.s1", CRC(7626da34) SHA1(30bad65633d0035fd578323c22cbddb8c9d549a6) )
+
+ NEO_BIOS_AUDIO_128K( "081-m1.m1", CRC(82fcd863) SHA1(b219a5685450f9c24cc195f1c914bc3b292d72c0) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "081-v1.v1", 0x000000, 0x200000, CRC(201fa1e1) SHA1(9c27cc1b1d075223ed4a90dd02571d09a2f0d076) )
+ ROM_LOAD( "081-v2.v2", 0x200000, 0x200000, CRC(acf29d96) SHA1(5426985c33aea2efc8ff774b59d34d8b03bd9a85) )
+ ROM_LOAD( "081-v3.v3", 0x400000, 0x200000, CRC(e524e415) SHA1(8733e1b63471381b16c2b7c64b909745d99c8925) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "081-c1.c1", 0x000000, 0x200000, CRC(1fb68ebe) SHA1(abd9dbe7b7cbe0b6cd1d87e53c6bdc6edeccf83c) )
+ ROM_LOAD16_BYTE( "081-c2.c2", 0x000001, 0x200000, CRC(b28d928f) SHA1(9f05148e3e1e94339752658c066f47f133db8fbf) )
+ ROM_LOAD16_BYTE( "081-c3.c3", 0x400000, 0x200000, CRC(3b2572e8) SHA1(41aba1554bf59d4e5d5814249eaa0d531449e1de) )
+ ROM_LOAD16_BYTE( "081-c4.c4", 0x400001, 0x200000, CRC(47d26a7c) SHA1(591ef24a3d381163c5da80fa64e6883b8ea9abfb) )
+ ROM_LOAD16_BYTE( "081-c5.c5", 0x800000, 0x200000, CRC(17d42f0d) SHA1(7de7765bf43d390c50b2f59c2288502a7121d086) )
+ ROM_LOAD16_BYTE( "081-c6.c6", 0x800001, 0x200000, CRC(6b53fb75) SHA1(fadf7a12661d83ae35d9258aa4947969d51c08b8) )
+ROM_END
+
+/****************************************
+ ID-0082
+ . NGM-082
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA 42G-3
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA256B
+ NEO-MVS PROG 4096 B / NEO-MVS CHA 42G-3
+ . NGH-082
+****************************************/
+
+ROM_START( doubledr )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082-p1.p1", 0x100000, 0x100000, CRC(34ab832a) SHA1(fbb1bd195f5653f7b9c89648649f838eaf83cbe4) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+/****************************************
+ ID-0083
+ . NGM-083
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+****************************************/
+
+ROM_START( pbobblen ) /* MVS ONLY RELEASE */
+ /* This set uses CHA and PROG board from Power Spikes II. Six Power Spikes II prom's are replaced with
+ Puzzle Bobble prom's. Confirmed on several original carts. Do other layouts also exist? */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "d96-07.ep1", 0x000000, 0x080000, CRC(6102ca14) SHA1(328429d11de5b327a0654ae0548da4d0025a2ae6) )
+
+ NEO_SFIX_128K( "d96-04.s1", CRC(9caae538) SHA1(cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_128K( "d96-06.m1", CRC(f424368a) SHA1(5e5bbcaeb82bed2ee17df08f005ca20ad1030723) )
+ /* M1 on eprom with sticker; label is D96-06 */
+
+ ROM_REGION( 0x380000, "ymsnd", 0 )
+ ROM_LOAD( "068-v1.v1", 0x000000, 0x100000, CRC(2ced86df) SHA1(d6b73d1f31efbd74fb745200d4dade5f80b71541) ) /* unused */
+ ROM_LOAD( "068-v2.v2", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) ) /* unused */
+ ROM_LOAD( "d96-01.v3", 0x200000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
+ ROM_LOAD( "d96-05.v4", 0x300000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x500000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "068-c1.c1", 0x000000, 0x100000, CRC(7f250f76) SHA1(5109a41adcb7859e24dc43d88842d4cc18cd3305) ) /* unused */
+ ROM_LOAD16_BYTE( "068-c2.c2", 0x000001, 0x100000, CRC(20912873) SHA1(2df8766b531e47ffc30457e41c63b83557b4f468) ) /* unused */
+ ROM_LOAD16_BYTE( "068-c3.c3", 0x200000, 0x100000, CRC(4b641ba1) SHA1(7a9c42a30163eda455f7bde2302402b1a5de7178) ) /* unused */
+ ROM_LOAD16_BYTE( "068-c4.c4", 0x200001, 0x100000, CRC(35072596) SHA1(4150a21041f06514c97592bd8af686504b06e187) ) /* unused */
+ ROM_LOAD16_BYTE( "d96-02.c5", 0x400000, 0x080000, CRC(e89ad494) SHA1(69c9ea415773af94ac44c48af05d55ada222b138) )
+ ROM_LOAD16_BYTE( "d96-03.c6", 0x400001, 0x080000, CRC(4b42d7eb) SHA1(042ae50a528cea21cf07771d3915c57aa16fd5af) )
+ROM_END
+
+/****************************************
+ ID-0084
+ . NGM-084
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGSM / NEO-MVS CHA256
+ . NGH-084
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( kof95 ) /* MVS VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084-p1.p1",0x100000, 0x100000, CRC(2cba2716) SHA1(f6c2d0537c9c3e0938065c65b1797c47198fcff8) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ /* 600000-7fffff empty */
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95a ) /* MVS VERSION */
+ /* This set uses NEO-MVS PROGSM board; same rom data as in kof95h is used */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084-epr.ep1", 0x000000, 0x080000, CRC(577ca1bb) SHA1(0d9d8b6db8a5a4ea47fd6602bc77df68b74b1691) )
+ ROM_LOAD16_WORD_SWAP( "084-epr.ep2", 0x080000, 0x080000, CRC(30802a5d) SHA1(04109e7c4f8d171fcebbe1198f85a271b008f8f1) )
+ ROM_LOAD16_WORD_SWAP( "084-epr.ep3", 0x100000, 0x080000, CRC(21ae248a) SHA1(87318a1bc667f31a9824beefee94617b4724dc2d) )
+ ROM_LOAD16_WORD_SWAP( "084-epr.ep4", 0x180000, 0x080000, CRC(19d3fbee) SHA1(39225ec8a7ed5d2f5e83f5d575b9fa38800b0704) )
+ /* P's on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ /* 600000-7fffff empty */
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+ROM_START( kof95h ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "084-pg1.p1", 0x100000, 0x100000, CRC(5e54cf95) SHA1(41abe2042fdbb1526e92a0789976a9b1ac5e60f0) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "084-s1.s1", CRC(de716f8a) SHA1(f7386454a943ed5caf625f67ee1d0197b1c6fa13) )
+
+ NEO_BIOS_AUDIO_128K( "084-m1.m1", CRC(6f2d7429) SHA1(6f8462e4f07af82a5ca3197895d5dcbb67bdaa61) )
+
+ ROM_REGION( 0x900000, "ymsnd", 0 )
+ ROM_LOAD( "084-v1.v1", 0x000000, 0x400000, CRC(84861b56) SHA1(1b6c91ddaed01f45eb9b7e49d9c2b9b479d50da6) )
+ ROM_LOAD( "084-v2.v2", 0x400000, 0x200000, CRC(b38a2803) SHA1(dbc2c8606ca09ed7ff20906b022da3cf053b2f09) )
+ /* 600000-7fffff empty */
+ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) )
+ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) )
+ ROM_LOAD16_BYTE( "084-c3.c3", 0x0800000, 0x400000, CRC(a4e65d1b) SHA1(740a405b40b3a4b324697d2652cae29ffe0ac0bd) )
+ ROM_LOAD16_BYTE( "084-c4.c4", 0x0800001, 0x400000, CRC(c1ace468) SHA1(74ea2a3cfd7b744f0988a05baaff10016ca8f625) )
+ ROM_LOAD16_BYTE( "084-c5.c5", 0x1000000, 0x200000, CRC(8a2c1edc) SHA1(67866651bc0ce27122285a66b0aab108acf3d065) )
+ ROM_LOAD16_BYTE( "084-c6.c6", 0x1000001, 0x200000, CRC(f593ac35) SHA1(302c92c63f092a8d49429c3331e5e5678f0ea48d) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "084-c7.c7", 0x1800000, 0x100000, CRC(9904025f) SHA1(eec770746a0ad073f7d353ab16a2cc3a5278d307) )
+ ROM_LOAD16_BYTE( "084-c8.c8", 0x1800001, 0x100000, CRC(78eb0f9b) SHA1(2925ea21ed2ce167f08a25589e94f28643379034) )
+ROM_END
+
+/****************************************
+ ID-0085
+ Shinsetsu Samurai Spirits Bushidoretsuden / Samurai Shodown RPG (CD only)
+****************************************/
+
+/****************************************
+ ID-0086
+ . ??M-086
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+****************************************/
+
+ROM_START( tws96 ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "086-p1.p1", 0x000000, 0x100000, CRC(03e20ab6) SHA1(3a0a5a54649178ce7a6158980cb4445084b40fb5) )
+
+ NEO_SFIX_128K( "086-s1.s1", CRC(6f5e2b3a) SHA1(273341489f6625d35a4a920042a60e2b86373847) )
+
+ NEO_BIOS_AUDIO_128K( "086-m1.m1", CRC(cb82bc5d) SHA1(8e3ecabec25d89adb6e0eed0ef5f94d34a4d5fc0) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "086-v1.v1", 0x000000, 0x200000, CRC(97bf1986) SHA1(b80d3a37e18d0a52f1e0092dc300989c9647efd1) )
+ ROM_LOAD( "086-v2.v2", 0x200000, 0x200000, CRC(b7eb05df) SHA1(ff2b55c7021c248cfdcfc9cd3658f2896bcbca38) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "086-c1.c1", 0x000000, 0x400000, CRC(2611bc2a) SHA1(bb5a96acd4a90fcb41c49cc8e9f760c4a06d6b84) )
+ ROM_LOAD16_BYTE( "086-c2.c2", 0x000001, 0x400000, CRC(6b0d6827) SHA1(3cb2bbab381a26ec69f97c3d6116ce47254286b4) )
+ ROM_LOAD16_BYTE( "086-c3.c3", 0x800000, 0x100000, CRC(750ddc0c) SHA1(9304a83d81afd544d88be0cd3ee47ae401d2da0e) )
+ ROM_LOAD16_BYTE( "086-c4.c4", 0x800001, 0x100000, CRC(7a6e7d82) SHA1(b1bb82cec3d68367d5e01e63c44c11b67e577411) )
+ROM_END
+
+/****************************************
+ ID-0087
+ . NGM-087
+ NEO-MVS PROGSS3 / NEO-MVS CHA256
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-087
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( samsho3 ) /* MVS VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087-epr.ep1", 0x000000, 0x080000, CRC(23e09bb8) SHA1(79da99fa50a639fce9d1266699b5e53c9ac55642) )
+ ROM_LOAD16_WORD_SWAP( "087-epr.ep2", 0x080000, 0x080000, CRC(256f5302) SHA1(e2d21b413a6059194a994b7902b2a7df98a15151) )
+ ROM_LOAD16_WORD_SWAP( "087-epr.ep3", 0x100000, 0x080000, CRC(bf2db5dd) SHA1(b4fa1dc1eccc9eb1ce74f0a06992ef89b1cbc732) )
+ ROM_LOAD16_WORD_SWAP( "087-epr.ep4", 0x180000, 0x080000, CRC(53e60c58) SHA1(f975e81cab6322d3260348402721c673023259fa) )
+ /* P's on eprom, correct chip label unknown */
+ ROM_LOAD16_WORD_SWAP( "087-p5.p5", 0x200000, 0x100000, CRC(e86ca4af) SHA1(5246acbab77ac2f232b88b8522187764ff0872f0) )
+ /* also found MVS set with p1 / sp2 on maskrom on PROG board NEO-MVS PROGBK1; chip label are 087-PG1 and 087-P2 */
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3h ) /* AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087-pg1.p1", 0x000000, 0x100000, CRC(282a336e) SHA1(e062f1939d36a45f185b5dbd726cdd833dc7c28c) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( fswords ) /* KOREAN VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "187-p1k.p1", 0x000000, 0x100000, CRC(c8e7c075) SHA1(7b74f2917114460d79d8f46ee24829a4c08cbf2a) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+/****************************************
+ ID-0088
+ . NGM-088
+ NEO-MVS PROGBK1 / NEO-MVS CHA42-3B
+ . NGH-088
+ NEO-AEG PROGRKB / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( stakwin )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "088-p1.p1", 0x100000, 0x100000, CRC(bd5814f6) SHA1(95179a4dee61ae88bb5d9fd74af0c56c8c29f5ea) )
+ ROM_CONTINUE( 0x000000, 0x100000)
+
+ NEO_SFIX_128K( "088-s1.s1", CRC(073cb208) SHA1(c5b4697d767575884dd49ae416c1fe4a4a92d3f6) )
+
+ NEO_BIOS_AUDIO_128K( "088-m1.m1", CRC(2fe1f499) SHA1(5b747eeef65be04423d2db05e086df9132758a47) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "088-v1.v1", 0x000000, 0x200000, CRC(b7785023) SHA1(d11df1e623434669cd3f97f0feda747b24dac05d) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "088-c1.c1", 0x000000, 0x200000, CRC(6e733421) SHA1(b67c5d2654a62cc4e44bd54d28e62c7da5eea424) )
+ ROM_LOAD16_BYTE( "088-c2.c2", 0x000001, 0x200000, CRC(4d865347) SHA1(ad448cf96f3dce44c83412ed6878c495eb4a8a1e) )
+ ROM_LOAD16_BYTE( "088-c3.c3", 0x400000, 0x200000, CRC(8fa5a9eb) SHA1(7bee19d8a2bccedd8e2cf0c0e9138902b9dafc23) )
+ ROM_LOAD16_BYTE( "088-c4.c4", 0x400001, 0x200000, CRC(4604f0dc) SHA1(ddf5dbb5e07313998a8f695ad19354ea54585dd6) )
+ROM_END
+
+/****************************************
+ ID-0089
+ . NGM-089
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-089
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( pulstar )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "089-p1.p1", 0x000000, 0x100000, CRC(5e5847a2) SHA1(b864d0ec4184b785569ddbf67c2115b5ab86ee3e) )
+ ROM_LOAD16_WORD_SWAP( "089-p2.sp2", 0x100000, 0x200000, CRC(028b774c) SHA1(fc5da2821a5072f2b78245fc59b6e3eeef116d16) )
+
+ NEO_SFIX_128K( "089-s1.s1", CRC(c79fc2c8) SHA1(914c224fb3c461a68d7425cae724cf22bd5f985d) )
+
+ NEO_BIOS_AUDIO_128K( "089-m1.m1", CRC(ff3df7c7) SHA1(59d2ef64f734f6026073b365300221909057a512) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "089-v1.v1", 0x000000, 0x400000, CRC(6f726ecb) SHA1(e8e2a46af690ce6c7ee64a58ab5010d22df9548c) )
+ ROM_LOAD( "089-v2.v2", 0x400000, 0x400000, CRC(9d2db551) SHA1(83f7e5db7fb1502ceadcd334df90b11b1bba78e5) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "089-c1.c1", 0x0000000, 0x400000, CRC(f4e97332) SHA1(54693827a99836e7d61c45d495dd78bf3fcf1544) )
+ ROM_LOAD16_BYTE( "089-c2.c2", 0x0000001, 0x400000, CRC(836d14da) SHA1(99cc4f9b764503eff7849ff2977d90bb47c5564a) )
+ ROM_LOAD16_BYTE( "089-c3.c3", 0x0800000, 0x400000, CRC(913611c4) SHA1(9664eb1fe1e6f8c3ddeeff872d38ea920ed38a82) )
+ ROM_LOAD16_BYTE( "089-c4.c4", 0x0800001, 0x400000, CRC(44cef0e3) SHA1(34f6f348ba86a2a06cb9c43a16b97cf6ee6158ac) )
+ ROM_LOAD16_BYTE( "089-c5.c5", 0x1000000, 0x400000, CRC(89baa1d7) SHA1(976c745c44967de61e2a23227835be580b1d283a) )
+ ROM_LOAD16_BYTE( "089-c6.c6", 0x1000001, 0x400000, CRC(b2594d56) SHA1(685c0bf8ff76c76e41c2ceaebb96349634cfdb2e) )
+ ROM_LOAD16_BYTE( "089-c7.c7", 0x1800000, 0x200000, CRC(6a5618ca) SHA1(9a1d5f998b0dfabacf9dad45c94bef2bb43e5e0c) )
+ ROM_LOAD16_BYTE( "089-c8.c8", 0x1800001, 0x200000, CRC(a223572d) SHA1(2791b1212f57937b2b2a95bc9e420c06d0c37669) )
+ROM_END
+
+/****************************************
+ ID-0090
+ . ADM-009
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ NEO-MVS PROGGSC / NEO-MVS CHA256
+ NEO-MVS PROGGSC / NEO-MVS CHA256B
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . ADH-009
+****************************************/
+
+ROM_START( whp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090-p1.p1", 0x100000, 0x100000, CRC(afaa4702) SHA1(83d122fddf17d4774353abf4a0655f3939f7b752) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ /* 0c00000-0ffffff empty */
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+/****************************************
+ ID-0091
+ ADK World / ADK Special 1995 ADK (CD only)
+****************************************/
+
+/****************************************
+ ID-0092
+ . NGM-092
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ . NGH-092
+****************************************/
+
+ROM_START( kabukikl )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "092-p1.p1", 0x100000, 0x100000, CRC(28ec9b77) SHA1(7cdc789a99f8127f437d68cbc41278c926be9efd) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "092-s1.s1", CRC(a3d68ee2) SHA1(386f6110a16967a72fbf788f9d968fddcdcd2889) )
+
+ NEO_BIOS_AUDIO_128K( "092-m1.m1", CRC(91957ef6) SHA1(7b6907532a0e02ceb643623cbd689cf228776ed1) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "092-v1.v1", 0x000000, 0x200000, CRC(69e90596) SHA1(1a2007d7784b3ce90d115980c3353862f1664d45) )
+ ROM_LOAD( "092-v2.v2", 0x200000, 0x200000, CRC(7abdb75d) SHA1(0bff764889fe02f37877514c7fc450250839f632) )
+ ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) )
+ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) )
+ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) )
+ ROM_LOAD16_BYTE( "092-c3.c3", 0x800000, 0x400000, CRC(5da735d6) SHA1(f1c05a73794ece15576a0a30c81f4a44faac475a) )
+ ROM_LOAD16_BYTE( "092-c4.c4", 0x800001, 0x400000, CRC(de07f997) SHA1(c27a4d4bef868eed38dc152ff37d4135b16cc991) )
+ROM_END
+
+/****************************************
+ ID-0093
+ . ??M-093
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( neobombe ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "093-p1.p1", 0x000000, 0x100000, CRC(a1a71d0d) SHA1(059284c84f61a825923d86d2f29c91baa2c439cd) )
+
+ NEO_SFIX_128K( "093-s1.s1", CRC(4b3fa119) SHA1(41cb0909bfb017eb6f2c530cb92a423319ed7ab1) )
+
+ NEO_BIOS_AUDIO_128K( "093-m1.m1", CRC(e81e780b) SHA1(c56c53984e0f92e180e850c60a75f550ee84917c) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "093-v1.v1", 0x000000, 0x400000, CRC(02abd4b0) SHA1(6bf33ebc9b01cd4a029f6a555694a9835e30ca1b) )
+ ROM_LOAD( "093-v2.v2", 0x400000, 0x200000, CRC(a92b8b3d) SHA1(b672c97b85d2f52eba3cb26025008ebc7a18312a) )
+
+ ROM_REGION( 0x900000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "093-c1.c1", 0x000000, 0x400000, CRC(d1f328f8) SHA1(ddf71280c2ce85225f15fe9e973f330609281878) )
+ ROM_LOAD16_BYTE( "093-c2.c2", 0x000001, 0x400000, CRC(82c49540) SHA1(5f37c1bc0d63c98a13967b44da3d2c85e6dbbe50) )
+ ROM_LOAD16_BYTE( "093-c3.c3", 0x800000, 0x080000, CRC(e37578c5) SHA1(20024caa0f09ee887a6418dd02d02a0df93786fd) )
+ ROM_LOAD16_BYTE( "093-c4.c4", 0x800001, 0x080000, CRC(59826783) SHA1(0110a2b6186cca95f75225d4d0269d61c2ad25b1) )
+ROM_END
+
+/****************************************
+ ID-0094
+ . NGM-094
+ NEO-MVS PROGBK1 / NEO-MVS CHA42G-3B
+ . NGH-094
+****************************************/
+
+ROM_START( gowcaizr )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "094-p1.p1", 0x100000, 0x100000, CRC(33019545) SHA1(213db6c0b7d24b74b809854f9c606dbea1d9ba00) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "094-s1.s1", CRC(2f8748a2) SHA1(5cc723c4284120473d63d8b0c1a3b3be74bdc324) )
+
+ NEO_BIOS_AUDIO_128K( "094-m1.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "094-v1.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+ ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) )
+ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) )
+ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) )
+ ROM_LOAD16_BYTE( "094-c3.c3", 0x400000, 0x200000, CRC(58bfbaa1) SHA1(4c6f9cf138c5e6dfe89a45e2a690a986c75f5bfc) )
+ ROM_LOAD16_BYTE( "094-c4.c4", 0x400001, 0x200000, CRC(9451ee73) SHA1(7befee4a886b1d7493c06cefb7abf4ec01c14a8b) )
+ ROM_LOAD16_BYTE( "094-c5.c5", 0x800000, 0x200000, CRC(ff9cf48c) SHA1(5f46fb5d0812275b0006919d8540f22be7c16492) )
+ ROM_LOAD16_BYTE( "094-c6.c6", 0x800001, 0x200000, CRC(31bbd918) SHA1(7ff8c5e3f17d40e7a8a189ad8f8026de55368810) )
+ ROM_LOAD16_BYTE( "094-c7.c7", 0xc00000, 0x200000, CRC(2091ec04) SHA1(a81d4bdbef1ac6ea49845dc30e31bf9745694100) )
+ ROM_LOAD16_BYTE( "094-c8.c8", 0xc00001, 0x200000, CRC(d80dd241) SHA1(1356a64e4d4e271f62cd0d83f79ee9c906440810) )
+ROM_END
+
+/****************************************
+ dev board, same ID as gowcaizr
+****************************************/
+
+ROM_START( dragonsh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "EP2.bin", 0x000000, 0x080000, CRC(f25c71ad) SHA1(803fb6cd6a7ada59678ad901ff9788b1e54ddd0c) )
+ ROM_LOAD16_BYTE( "EP1.bin", 0x000001, 0x080000, CRC(f353448c) SHA1(f0f966ca15d503e01b40e901765ff0888463b65d) )
+
+ NEO_SFIX_128K( "s1.s1", BAD_DUMP CRC(706477a7) SHA1(8cbee7f6832e7edd2dc792ca330420a6a984b879) ) // was a dead AXS512PC 512KB sram card, this data is handcrafted to make the set usable (hence BAD_DUMP)
+
+ NEOGEO_BIOS
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+ ROM_REGION( 0x30000, "audiocpu", ROMREGION_ERASEFF )
+ /* not present */
+
+ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
+ ROM_LOAD( "sram.v1", 0x000000, 0x200000, NO_DUMP ) // was a dead AXS2000PC 2MB sram card, battery dead, data lost.
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "no3.bin", 0x000000, 0x1000000, CRC(81821826) SHA1(b7c1a53e32633383675206a16c68f6f2ff984865) )
+ ROM_LOAD16_BYTE( "no4.bin", 0x000001, 0x1000000, CRC(3601d568) SHA1(800323e52f5d33b402f84d31850b42c688082d67) )
+ROM_END
+
+/****************************************
+ ID-0095
+ . NGM-095
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-095
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( rbff1 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "095-p1.p1", 0x000000, 0x100000, CRC(63b4d8ae) SHA1(03aa9f6bab6aee685d1b57a52823797704eea845) )
+ ROM_LOAD16_WORD_SWAP( "095-p2.sp2", 0x100000, 0x200000, CRC(cc15826e) SHA1(44d6ac6c0ca697a6f367dcfd809b1e1771cb0635) )
+
+ NEO_SFIX_128K( "095-s1.s1", CRC(b6bf5e08) SHA1(b527355c35ea097f3448676f2ffa65b8e56ae30c) )
+
+ NEO_BIOS_AUDIO_128K( "095-m1.m1", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "095-v3.v3", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "095-c5.c5", 0x1000000, 0x400000, CRC(8b9b65df) SHA1(e2a7e20855501f240bcd22f5cc92fcb4a9806abe) )
+ ROM_LOAD16_BYTE( "095-c6.c6", 0x1000001, 0x400000, CRC(3e164718) SHA1(53217f938c8964c1ca68a6fd5249c4169a5ac8e6) )
+ ROM_LOAD16_BYTE( "095-c7.c7", 0x1800000, 0x200000, CRC(ca605e12) SHA1(5150b835247fd705bc1dece97d423d9c20a51416) )
+ ROM_LOAD16_BYTE( "095-c8.c8", 0x1800001, 0x200000, CRC(4e6beb6c) SHA1(c0ac7cfc832ace6ad52c58f5da3a8101baead749) )
+ROM_END
+
+ROM_START( rbff1a ) /* MVS VERSION */
+ /* This is a bug fixed revision applied over the original cart. The original P1 and P2 stayed in the cart and this */
+ /* 512k ROM was added to replace the first 512k of P1. */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "095-p1.p1", 0x000000, 0x100000, CRC(63b4d8ae) SHA1(03aa9f6bab6aee685d1b57a52823797704eea845) )
+ ROM_LOAD16_WORD_SWAP( "095-p2.sp2", 0x100000, 0x200000, CRC(cc15826e) SHA1(44d6ac6c0ca697a6f367dcfd809b1e1771cb0635) )
+ /* the rom below acts as a patch to the program rom in the cart, replacing the first 512kb */
+ ROM_LOAD16_WORD_SWAP( "095-epr.ep1", 0x000000, 0x080000, CRC(be0060a3) SHA1(fa741d34898ad5004a23e280139d1446f1a082c7) )
+ /* P is on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "095-s1.s1", CRC(b6bf5e08) SHA1(b527355c35ea097f3448676f2ffa65b8e56ae30c) )
+
+ NEO_BIOS_AUDIO_128K( "095-m1.m1", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "095-v3.v3", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "095-c5.c5", 0x1000000, 0x400000, CRC(8b9b65df) SHA1(e2a7e20855501f240bcd22f5cc92fcb4a9806abe) )
+ ROM_LOAD16_BYTE( "095-c6.c6", 0x1000001, 0x400000, CRC(3e164718) SHA1(53217f938c8964c1ca68a6fd5249c4169a5ac8e6) )
+ ROM_LOAD16_BYTE( "095-c7.c7", 0x1800000, 0x200000, CRC(ca605e12) SHA1(5150b835247fd705bc1dece97d423d9c20a51416) )
+ ROM_LOAD16_BYTE( "095-c8.c8", 0x1800001, 0x200000, CRC(4e6beb6c) SHA1(c0ac7cfc832ace6ad52c58f5da3a8101baead749) )
+ROM_END
+
+/****************************************
+ ID-0096
+ . NGM-096
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-096
+****************************************/
+
+ROM_START( aof3 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "096-p1.p1", 0x000000, 0x100000, CRC(9edb420d) SHA1(150d80707325ece351c72c21c6186cfb5996adba) )
+ ROM_LOAD16_WORD_SWAP( "096-p2.sp2", 0x100000, 0x200000, CRC(4d5a2602) SHA1(4c26d6135d2877d9c38169662033e9d0cc24d943) )
+
+ NEO_SFIX_128K( "096-s1.s1", CRC(cc7fd344) SHA1(2c6846cf8ea61fb192ba181dbccb63594d572c0e) )
+
+ NEO_BIOS_AUDIO_128K( "096-m1.m1", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "096-v1.v1", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
+ ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
+ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) )
+ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) )
+ ROM_LOAD16_BYTE( "096-c3.c3", 0x0800000, 0x400000, CRC(55f9ee1e) SHA1(fbe1b7891beae66c5fcbc7e36168dc1b460ede91) )
+ ROM_LOAD16_BYTE( "096-c4.c4", 0x0800001, 0x400000, CRC(585b7e47) SHA1(d50ea91397fc53d86470ff5b493a44d57c010306) )
+ ROM_LOAD16_BYTE( "096-c5.c5", 0x1000000, 0x400000, CRC(c75a753c) SHA1(fc977f8710816a369a5d0d49ee84059380e93fb7) )
+ ROM_LOAD16_BYTE( "096-c6.c6", 0x1000001, 0x400000, CRC(9a9d2f7a) SHA1(a89a713bfcd93974c9acb21ce699d365b08e7e39) )
+ ROM_LOAD16_BYTE( "096-c7.c7", 0x1800000, 0x200000, CRC(51bd8ab2) SHA1(c8def9c64de64571492b5b7e14b794e3c18f1393) )
+ ROM_LOAD16_BYTE( "096-c8.c8", 0x1800001, 0x200000, CRC(9a34f99c) SHA1(fca72d95ec42790a7f1e771a1e25dbc5bec5fc19) )
+ROM_END
+
+ROM_START( aof3k ) /* KOREAN VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "196-p1k.p1", 0x000000, 0x100000, CRC(a0780789) SHA1(83657922a9a3502653ef8cda45b15d9f935aa96a) )
+ ROM_LOAD16_WORD_SWAP( "096-p2.sp2", 0x100000, 0x200000, CRC(4d5a2602) SHA1(4c26d6135d2877d9c38169662033e9d0cc24d943) )
+
+ NEO_SFIX_128K( "096-s1.s1", CRC(cc7fd344) SHA1(2c6846cf8ea61fb192ba181dbccb63594d572c0e) )
+
+ NEO_BIOS_AUDIO_128K( "096-m1.m1", CRC(cb07b659) SHA1(940b379957c2987d7ab0443cb80c3ff58f6ba559) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "096-v1.v1", 0x000000, 0x200000, CRC(e2c32074) SHA1(69426e7e63fc31a73d1cd056cc9ae6a2c4499407) )
+ ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) )
+ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) )
+ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) )
+ ROM_LOAD16_BYTE( "096-c3.c3", 0x0800000, 0x400000, CRC(55f9ee1e) SHA1(fbe1b7891beae66c5fcbc7e36168dc1b460ede91) )
+ ROM_LOAD16_BYTE( "096-c4.c4", 0x0800001, 0x400000, CRC(585b7e47) SHA1(d50ea91397fc53d86470ff5b493a44d57c010306) )
+ ROM_LOAD16_BYTE( "096-c5.c5", 0x1000000, 0x400000, CRC(c75a753c) SHA1(fc977f8710816a369a5d0d49ee84059380e93fb7) )
+ ROM_LOAD16_BYTE( "096-c6.c6", 0x1000001, 0x400000, CRC(9a9d2f7a) SHA1(a89a713bfcd93974c9acb21ce699d365b08e7e39) )
+ ROM_LOAD16_BYTE( "096-c7.c7", 0x1800000, 0x200000, CRC(51bd8ab2) SHA1(c8def9c64de64571492b5b7e14b794e3c18f1393) )
+ ROM_LOAD16_BYTE( "096-c8.c8", 0x1800001, 0x200000, CRC(9a34f99c) SHA1(fca72d95ec42790a7f1e771a1e25dbc5bec5fc19) )
+ROM_END
+
+/****************************************
+ ID-0097
+ . NGM-097
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-097
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( sonicwi3 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "097-p1.p1", 0x100000, 0x100000, CRC(0547121d) SHA1(e0bb6c614f572b74ba9a9f0d3d5b69fbc91ebc52) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "097-s1.s1", CRC(8dd66743) SHA1(39214bb25a1d5b44a8524010be05bf5a0211981f) )
+
+ NEO_BIOS_AUDIO_128K( "097-m1.m1", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "097-v1.v1", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
+ ROM_LOAD( "097-v2.v2", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "097-c1.c1", 0x000000, 0x400000, CRC(33d0d589) SHA1(fe4aa95555e478ceb2d28fd27d83ee06cd09520c) )
+ ROM_LOAD16_BYTE( "097-c2.c2", 0x000001, 0x400000, CRC(186f8b43) SHA1(f5cced93e21dc841b00ebeaa30786cb0e047bd9a) )
+ ROM_LOAD16_BYTE( "097-c3.c3", 0x800000, 0x200000, CRC(c339fff5) SHA1(58dfd1e30dc0ad3f816a5dbd1cc7e7ccbb792c53) )
+ ROM_LOAD16_BYTE( "097-c4.c4", 0x800001, 0x200000, CRC(84a40c6e) SHA1(061a13fba5fed883e5ee9566cedc208df2511bcf) )
+ROM_END
+
+/****************************************
+ ID-0098
+ Idol Mahjong - final romance 2 (CD only? not confirmed, MVS might exist)
+****************************************/
+
+/****************************************
+ ID-0099
+ Neo Pool Masters
+****************************************/
+
+
+/* ID range from 100 - 199 is used for Korean (some) and Neo Print carts */
+
+/*
+ The following ID's are used by Korean releases:
+
+ ID-0122 - Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)
+ ID-0123 - Quiz Daisousa Sen - The Last Count Down (Korean release)
+ ID-0124 - Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)
+ ID-0134 - The Last Soldier (Korean release of The Last Blade)
+ ID-0140 - Real Bout Fatal Fury 2 - The Newcomers (Korean release)
+ ID-0152 - The King of Fighters '99 - Millennium Battle (Korean release)
+ ID-0163 - Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II)
+ ID-0187 - Fighters Swords (Korean release of Samurai Shodown III)
+ ID-0196 - Art of Fighting 3 - The Path of the Warrior (Korean release)
+*/
+
+
+/****************************************
+ ID-0200
+ . NGM-200
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-200
+****************************************/
+
+ROM_START( turfmast )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "200-p1.p1", 0x100000, 0x100000, CRC(28c83048) SHA1(e7ef87e1de21d2bb17ef17bb08657e92363f0e9a) )
+ ROM_CONTINUE( 0x000000, 0x100000)
+
+ NEO_SFIX_128K( "200-s1.s1", CRC(9a5402b2) SHA1(ae1a0b5450869d61b2bb23671c744d3dda8769c4) )
+
+ NEO_BIOS_AUDIO_128K( "200-m1.m1", CRC(9994ac00) SHA1(7bded797f3b80fd00bcbe451ac0abe6646b19a14) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "200-v1.v1", 0x000000, 0x200000, CRC(00fd48d2) SHA1(ddfee09328632e598fd51537b3ae8593219b2111) )
+ ROM_LOAD( "200-v2.v2", 0x200000, 0x200000, CRC(082acb31) SHA1(2f1c053040e9d50a6d45fd7bea1b96742bae694f) )
+ ROM_LOAD( "200-v3.v3", 0x400000, 0x200000, CRC(7abca053) SHA1(e229bc0ea82a371d6ee8fd9fe442b0fd141d0a71) )
+ ROM_LOAD( "200-v4.v4", 0x600000, 0x200000, CRC(6c7b4902) SHA1(d55e0f542d928a9a851133ff26763c8236cbbd4d) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "200-c1.c1", 0x000000, 0x400000, CRC(8e7bf41a) SHA1(148eb747f2f4d8e921eb0411c88a636022ceab80) )
+ ROM_LOAD16_BYTE( "200-c2.c2", 0x000001, 0x400000, CRC(5a65a8ce) SHA1(d6c7afe035411f3eacdf6868d36f91572dd593e0) )
+ROM_END
+
+/****************************************
+ ID-0201
+ . NGM-201
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . NGH-201
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( mslug )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "201-p1.p1", 0x100000, 0x100000, CRC(08d8daa5) SHA1(b888993dbb7e9f0a28a01d7d2e1da00ef9cf6f38) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "201-s1.s1", CRC(2f55958d) SHA1(550b53628daec9f1e1e11a398854092d90f9505a) )
+
+ NEO_BIOS_AUDIO_128K( "201-m1.m1", CRC(c28b3253) SHA1(fd75bd15aed30266a8b3775f276f997af57d1c06) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) )
+ ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) )
+ ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) )
+ ROM_LOAD16_BYTE( "201-c3.c3", 0x800000, 0x400000, CRC(5121456a) SHA1(0a7a27d603d1bb2520b5570ebf5b34a106e255a6) )
+ ROM_LOAD16_BYTE( "201-c4.c4", 0x800001, 0x400000, CRC(f4ad59a3) SHA1(4e94fda8ee63abf0f92afe08060a488546e5c280) )
+ROM_END
+
+/****************************************
+ ID-0202
+ . ??M-202
+ NEO-MVS PROG 4096 / NEO-MVS CHA 42G-2
+****************************************/
+
+ROM_START( puzzledp ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "202-p1.p1", 0x000000, 0x080000, CRC(2b61415b) SHA1(0e3e4faf2fd6e63407425e1ac788003e75aeeb4f) )
+ /* also found set with p1 on eprom with sticker; label is 202-P1 */
+
+ NEO_SFIX_128K( "202-s1.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "202-c1.c1", 0x000000, 0x100000, CRC(cc0095ef) SHA1(3d86f455e6db10a2449b775dc386f1826ba3b62e) )
+ ROM_LOAD16_BYTE( "202-c2.c2", 0x000001, 0x100000, CRC(42371307) SHA1(df794f989e2883634bf7ffeea48d6bc3854529af) )
+ROM_END
+
+/****************************************
+ ID-0203
+ . ADM-010
+ NEO-MVS PROGTOP / NEO-MVS CHA42G-3B
+ . ADH-010
+****************************************/
+
+ROM_START( mosyougi )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "203-p1.p1", 0x000000, 0x100000, CRC(7ba70e2d) SHA1(945f472cc3e7706f613c52df18de35c986d166e7) )
+
+ NEO_SFIX_128K( "203-s1.s1", CRC(bfdc8309) SHA1(781337eab932a130b396a6c1080611d6f9c24c6e) )
+
+ NEO_BIOS_AUDIO_128K( "203-m1.m1", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "203-v1.v1", 0x000000, 0x200000, CRC(baa2b9a5) SHA1(914782b6c81d9a76ce02251575592b0648434ba3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "203-c1.c1", 0x000000, 0x200000, CRC(bba9e8c0) SHA1(db89b7275a59ae6104a8308025c7e142a67b947b) )
+ ROM_LOAD16_BYTE( "203-c2.c2", 0x000001, 0x200000, CRC(2574be03) SHA1(198cfd697c623022919ae4118928a7fe30cd6c46) )
+ROM_END
+
+/****************************************
+ ID-0204
+ QP (prototype) 1997 Success
+****************************************/
+
+/****************************************
+ ID-0205
+ Neo-Geo CD Special (CD only)
+****************************************/
+
+/****************************************
+ ID-0206
+ . ??M-206
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . ??H-206
+****************************************/
+
+ROM_START( marukodq )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "206-p1.p1", 0x000000, 0x100000, CRC(c33ed21e) SHA1(bffff0d17e587e67672227e60c0ebd3f3a7193e6) )
+
+ NEO_SFIX_128K( "206-s1.s1", CRC(f0b68780) SHA1(3f60950b14d121a5af3e6a8155ae9832ddc6ec46) )
+
+ NEO_BIOS_AUDIO_128K( "206-m1.m1", CRC(0e22902e) SHA1(fb8466c342d4abd8bb4cad01c6ceab03f96cdad8) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "206-v1.v1", 0x000000, 0x200000, CRC(5385eca8) SHA1(1ca171ce74a5885ae8841d0924de21dc0af2214e) )
+ ROM_LOAD( "206-v2.v2", 0x200000, 0x200000, CRC(f8c55404) SHA1(cecc41e9e08a7ff05b6f62e713fc86a816bf55a2) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "206-c1.c1", 0x000000, 0x400000, CRC(846e4e8e) SHA1(ba9b96340aca7fadaff0e6d484391ddb5c5e7bd4) )
+ ROM_LOAD16_BYTE( "206-c2.c2", 0x000001, 0x400000, CRC(1cba876d) SHA1(3254ceb5a2f76c172930d9889d5d81e093e87628) )
+ ROM_LOAD16_BYTE( "206-c3.c3", 0x800000, 0x100000, CRC(79aa2b48) SHA1(31f94217cd35f48845c74a55256314c16fd26ed7) )
+ ROM_LOAD16_BYTE( "206-c4.c4", 0x800001, 0x100000, CRC(55e1314d) SHA1(fffbc9eb9000ff5b1063af1817de7ea4a267fedd) )
+ROM_END
+
+/****************************************
+ ID-0207
+ . ??M-207
+ NEO-MVS PROGBK1 / NEO-MVS CHA42G-3B
+ NEO-MVS PROG 4096 / NEO-MVS CHA42G-3B
+****************************************/
+
+ROM_START( neomrdo ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "207-p1.p1", 0x000000, 0x100000, CRC(334ea51e) SHA1(0a642f8565ec6e9587ed767bcf177f4677547162) )
+
+ NEO_SFIX_128K( "207-s1.s1", CRC(6aebafce) SHA1(5db03715fbed62f2ff3cef7f93606f30261c0362) )
+
+ NEO_BIOS_AUDIO_128K( "207-m1.m1", CRC(b5b74a95) SHA1(7b01f3b87c247cc7472591f8cdcf0ae8065e31c6) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "207-v1.v1", 0x000000, 0x200000, CRC(4143c052) SHA1(561b19bc8811b80f2f42ffc0b5df27132696470a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "207-c1.c1", 0x000000, 0x200000, CRC(c7541b9d) SHA1(25ca1a2b14cc2648d8dbe432cbd1396017af822c) )
+ ROM_LOAD16_BYTE( "207-c2.c2", 0x000001, 0x200000, CRC(f57166d2) SHA1(bf3aa47d17156485c2177fb63cba093f050abb98) )
+ROM_END
+
+/****************************************
+ ID-0208
+ . ??M-208
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+****************************************/
+
+ROM_START( sdodgeb ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "208-p1.p1", 0x100000, 0x100000, CRC(127f3d32) SHA1(18e77b79b1197a89371533ef9b1e4d682c44d875) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "208-s1.s1", CRC(64abd6b3) SHA1(0315d724e4d83a44ce84c531ff9b8c398363c039) )
+
+ NEO_BIOS_AUDIO_128K( "208-m1.m1", CRC(0a5f3325) SHA1(04e0236df478a5452654c823dcb42fea65b6a718) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "208-v1.v1", 0x000000, 0x400000, CRC(e7899a24) SHA1(3e75b449898fee73fbacf58d70e3a460b9e0c573) )
+
+ ROM_REGION( 0x0c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "208-c1.c1", 0x0000000, 0x400000, CRC(93d8619b) SHA1(6588cb67e38722d5843fb29943d92e3905101aff) )
+ ROM_LOAD16_BYTE( "208-c2.c2", 0x0000001, 0x400000, CRC(1c737bb6) SHA1(8e341989981a713e61dfed8bde9a6459583ef46d) )
+ ROM_LOAD16_BYTE( "208-c3.c3", 0x0800000, 0x200000, CRC(14cb1703) SHA1(a46acec03c1b2351fe36810628f02b7c848d13db) )
+ ROM_LOAD16_BYTE( "208-c4.c4", 0x0800001, 0x200000, CRC(c7165f19) SHA1(221f03de893dca0e5305fa17aa94f96c67713818) )
+ROM_END
+
+/****************************************
+ ID-0209
+ . ??M-209
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( goalx3 ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "209-p1.p1", 0x100000, 0x100000, CRC(2a019a79) SHA1(422a639e74284fef2e53e1b49cf8803b0a7e80c6) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "209-s1.s1", CRC(c0eaad86) SHA1(99412093c9707d51817893971e73fb8469cdc9d0) )
+
+ NEO_BIOS_AUDIO_128K( "209-m1.m1", CRC(cd758325) SHA1(b51eac634fc646c07210dff993018ad9ebabd3f9) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "209-v1.v1", 0x000000, 0x200000, CRC(ef214212) SHA1(3e05ccaa2d06decb18b379b96f900c0e6b39ce70) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "209-c1.c1", 0x000000, 0x400000, CRC(b49d980e) SHA1(722d10074f16fa7f14c71270f43fdab427b85e2b) )
+ ROM_LOAD16_BYTE( "209-c2.c2", 0x000001, 0x400000, CRC(5649b015) SHA1(9c9674f3841e6becd3b8e63bae9b9df45ac9f11e) )
+ ROM_LOAD16_BYTE( "209-c3.c3", 0x800000, 0x100000, CRC(5f91bace) SHA1(3864be27dce6d8f8828d3bf09bfc8116116a2b56) )
+ ROM_LOAD16_BYTE( "209-c4.c4", 0x800001, 0x100000, CRC(1e9f76f2) SHA1(b57fdc226bfe328b8848127fb4292295f1287bf6) )
+ROM_END
+
+/****************************************
+ ID-0210
+ Karate Ninja Sho (prototype) 1995 Yumekobo
+****************************************/
+
+/****************************************
+ ID-0211
+ Oshidashi Zintrick (CD only? not confirmed, MVS might exist) 1996 SNK/ADK
+****************************************/
+
+/****************************************
+ ID-0212
+ . ADM-011
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . ADH-011
+****************************************/
+
+ROM_START( overtop )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "212-p1.p1", 0x100000, 0x100000, CRC(16c063a9) SHA1(5432869f830eed816ee5ed71c7fd39f749d15619) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "212-s1.s1", CRC(481d3ddc) SHA1(7b0df3fc5b19f282abfd0eb5a4c6ed836a536ece) )
+
+ NEO_BIOS_AUDIO_128K( "212-m1.m1", CRC(fcab6191) SHA1(488b8310b0957f0012fe50f73641b606f6ac4a57) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "212-v1.v1", 0x000000, 0x400000, CRC(013d4ef9) SHA1(438a697c44525bdf78b54432c4f7217ab5667047) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "212-c1.c1", 0x0000000, 0x400000, CRC(50f43087) SHA1(e5a8c914ef8e77c7a29bffdeb18f1877b5c2fc7d) )
+ ROM_LOAD16_BYTE( "212-c2.c2", 0x0000001, 0x400000, CRC(a5b39807) SHA1(e98e82cf99576cb48cc5e8dc655b7e9a428c2843) )
+ ROM_LOAD16_BYTE( "212-c3.c3", 0x0800000, 0x400000, CRC(9252ea02) SHA1(269066e0f893d3e8e7c308528026a486c2b023a2) )
+ ROM_LOAD16_BYTE( "212-c4.c4", 0x0800001, 0x400000, CRC(5f41a699) SHA1(abbb162658e06a37db8475b659ece7e1270ebb49) )
+ ROM_LOAD16_BYTE( "212-c5.c5", 0x1000000, 0x200000, CRC(fc858bef) SHA1(0031def13e7cf4a465a1eca7aa0d13d1b21427e2) )
+ ROM_LOAD16_BYTE( "212-c6.c6", 0x1000001, 0x200000, CRC(0589c15e) SHA1(b1167caf7cb61f3e05a5d342290bfe00e02e9d38) )
+ROM_END
+
+/****************************************
+ ID-0213
+ . ??M-213
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+****************************************/
+
+ROM_START( neodrift ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "213-p1.p1", 0x100000, 0x100000, CRC(e397d798) SHA1(10f459111db4bab7aaa63ca47e83304a84300812) )
+ ROM_CONTINUE( 0x000000, 0x100000)
+
+ NEO_SFIX_128K( "213-s1.s1", CRC(b76b61bc) SHA1(5fdb407d16ab9e33c4f26ee09ff70891ae1d2bd0) )
+
+ NEO_BIOS_AUDIO_128K( "213-m1.m1", CRC(200045f1) SHA1(7a6cd1c8d4447ea260d7ff4520c676b8d685f2e4) ) /* mask rom TC531001*/
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "213-v1.v1", 0x000000, 0x200000, CRC(a421c076) SHA1(129f05c1a28a6493442f47a79c2d3577a1a43ef5) )
+ ROM_LOAD( "213-v2.v2", 0x200000, 0x200000, CRC(233c7dd9) SHA1(be7f980aa83831b6605aaaf4ec904180bb96c935) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "213-c1.c1", 0x000000, 0x400000, CRC(3edc8bd3) SHA1(71dcba9afd3b08ebfa13294644dcb365c2740780) )
+ ROM_LOAD16_BYTE( "213-c2.c2", 0x000001, 0x400000, CRC(46ae5f16) SHA1(a01310632734e776e889af6a531063cb1661c33a) )
+ROM_END
+
+/****************************************
+ ID-0214
+ . NGM-214
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGSS3 / NEO-MVS CHA256
+ . NGH-214
+ NEO-AEG PROGBK1Y / NEO-GEO AEG CHA256RY
+****************************************/
+
+ROM_START( kof96 ) /* MVS VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+ /* also found sets with ep1 / ep2 / ep3 / ep4 on eprom and 214-P5 on TC5316200; correct chip labels for eproms is unknown */
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+ROM_START( kof96h ) /* AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "214-pg1.p1", 0x000000, 0x100000, CRC(bd3757c9) SHA1(35392a044117e46c088ff0fdd07d69a3faa4f96e) )
+ ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) )
+
+ NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) )
+
+ NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) )
+ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) )
+ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) )
+ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) )
+ ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) )
+ ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) )
+ ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) )
+ ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) )
+ ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) )
+ ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) )
+ROM_END
+
+/****************************************
+ ID-0215
+ . NGM-215
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-215
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( ssideki4 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "215-p1.p1", 0x100000, 0x100000, CRC(519b4ba3) SHA1(5aa59514b23aa663f2c4014ee94a31e9f59151de) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "215-s1.s1", CRC(f0fe5c36) SHA1(b7badd6d2ac3788ce5cace1fcf5cdad14734e4e6) )
+
+ NEO_BIOS_AUDIO_128K( "215-m1.m1", CRC(a932081d) SHA1(376a45e19edb780ac8798c41ae2260c8a8a4bba8) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "215-v1.v1", 0x000000, 0x400000, CRC(877d1409) SHA1(77c58ebffe677ea6369c964ec7975b11df512fa1) )
+ ROM_LOAD( "215-v2.v2", 0x400000, 0x200000, CRC(1bfa218b) SHA1(344836a578bde3c0ab59b58c8734f868e7403c26) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "215-c1.c1", 0x0000000, 0x400000, CRC(8ff444f5) SHA1(e2dc52d09512cb378df96ddf45435f9bcbbe9947) )
+ ROM_LOAD16_BYTE( "215-c2.c2", 0x0000001, 0x400000, CRC(5b155037) SHA1(68900c0fdcd35c9f38e0effdf27e1dbd3c53daf8) )
+ ROM_LOAD16_BYTE( "215-c3.c3", 0x0800000, 0x400000, CRC(456a073a) SHA1(3488013f371012eab4e788e1525c81260e0b7080) )
+ ROM_LOAD16_BYTE( "215-c4.c4", 0x0800001, 0x400000, CRC(43c182e1) SHA1(343f034c65ca498b437e22e06a866a5daf3b9602) )
+ ROM_LOAD16_BYTE( "215-c5.c5", 0x1000000, 0x200000, CRC(0c6f97ec) SHA1(b8d297f0ba2b04404eb0f7c6673ecc206fadae0c) )
+ ROM_LOAD16_BYTE( "215-c6.c6", 0x1000001, 0x200000, CRC(329c5e1b) SHA1(015c36b8d3efab9b4647f110ecb5c118a9c80f43) )
+ROM_END
+
+/****************************************
+ ID-0216
+ . ??M-216
+ NEO-MVS PROGTOP / NEO-MVS CHA256
+ . ??H-216
+ NEO-AEG PROGTOP2Y / NEO-AEG CHA256BY
+ NEO-AEG PROGTOP2Y / NEO-AEG CHA256[B]
+****************************************/
+
+ROM_START( kizuna )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "216-p1.p1", 0x100000, 0x100000, CRC(75d2b3de) SHA1(ee778656c26828935ee2a2bfd0ce5a22aa681c10) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "216-s1.s1", CRC(efdc72d7) SHA1(be37cbf1852e2e4c907cc799b754b538544b6703) )
+
+ NEO_BIOS_AUDIO_128K( "216-m1.m1", CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "216-v2.v2", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ /* 400000-7fffff empty */
+ ROM_LOAD16_BYTE( "216-c3.c3", 0x0800000, 0x400000, CRC(665c9f16) SHA1(7ec781a49a462f395b450460b29493f55134eac2) )
+ ROM_LOAD16_BYTE( "216-c4.c4", 0x0800001, 0x400000, CRC(7f5d03db) SHA1(365ed266c121f4df0bb76898955a8ae0e668a216) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x1000000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x1000001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "059-c7.c7", 0x1800000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0x1800001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+
+ROM_START( kizuna4p ) /* same cartridge as kizuna - 4-player mode is enabled by an extension board that plugs into a compatible MVS */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "216-p1.p1", 0x100000, 0x100000, CRC(75d2b3de) SHA1(ee778656c26828935ee2a2bfd0ce5a22aa681c10) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "216-s1.s1", CRC(efdc72d7) SHA1(be37cbf1852e2e4c907cc799b754b538544b6703) )
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* these two BIOSes are the only ones we have that are compatible with the 4-player extension board */
+ ROM_SYSTEM_BIOS( 0, "asia", "NEO-MVH MV1C" )
+ ROM_LOAD16_WORD_SWAP_BIOS( 0, "sp-45.sp1",0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) )
+ ROM_SYSTEM_BIOS( 1, "japan", "Japan MVS (J3)" )
+ ROM_LOAD16_WORD_SWAP_BIOS( 1, "japan-j3.bin",0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 )
+ ROM_LOAD( "216-m1.m1", 0x00000, 0x20000, CRC(1b096820) SHA1(72852e78c620038f8dafde5e54e02e418c31be9c) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "059-v1.v1", 0x000000, 0x200000, CRC(530c50fd) SHA1(29401cee7f7d2c199c7cb58092e86b28205e81ad) )
+ ROM_LOAD( "216-v2.v2", 0x200000, 0x200000, CRC(03667a8d) SHA1(3b0475e553a49f8788f32b0c84f82645cc6b4273) )
+ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) )
+ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) )
+ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) )
+ /* 400000-7fffff empty */
+ ROM_LOAD16_BYTE( "216-c3.c3", 0x0800000, 0x400000, CRC(665c9f16) SHA1(7ec781a49a462f395b450460b29493f55134eac2) )
+ ROM_LOAD16_BYTE( "216-c4.c4", 0x0800001, 0x400000, CRC(7f5d03db) SHA1(365ed266c121f4df0bb76898955a8ae0e668a216) )
+ ROM_LOAD16_BYTE( "059-c5.c5", 0x1000000, 0x200000, CRC(59013f9e) SHA1(5bf48fcc450da72a8c4685f6e3887e67eae49988) )
+ ROM_LOAD16_BYTE( "059-c6.c6", 0x1000001, 0x200000, CRC(1c8d5def) SHA1(475d89a5c4922a9f6bd756d23c2624d57b6e9d62) )
+ /* 1400000-17fffff empty */
+ ROM_LOAD16_BYTE( "059-c7.c7", 0x1800000, 0x200000, CRC(c88f7035) SHA1(c29a428b741f4fe7b71a3bc23c87925b6bc1ca8f) )
+ ROM_LOAD16_BYTE( "059-c8.c8", 0x1800001, 0x200000, CRC(484ce3ba) SHA1(4f21ed20ce6e2b67e2b079404599310c94f591ff) )
+ROM_END
+
+
+/****************************************
+ ID-0217
+ . ADM-012
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . ADH-012
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( ninjamas )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "217-p1.p1", 0x000000, 0x100000, CRC(3e97ed69) SHA1(336bcae375a5109945d11356503bf0d9f4a9a50a) )
+ ROM_LOAD16_WORD_SWAP( "217-p2.sp2", 0x100000, 0x200000, CRC(191fca88) SHA1(e318e5931704779bbe461719a5eeeba89bd83a5d) )
+
+ NEO_SFIX_128K( "217-s1.s1", CRC(8ff782f0) SHA1(90099c154357042ba658d4ef6abe4d9335bb7172) )
+
+ NEO_BIOS_AUDIO_128K( "217-m1.m1", CRC(d00fb2af) SHA1(6bcaa52e1641cc24288e1f22f4dc98e8d8921b90) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) )
+ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) )
+ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) )
+ ROM_LOAD16_BYTE( "217-c3.c3", 0x0800000, 0x400000, CRC(59e8525f) SHA1(19f602c71545d6c021dc72e112d3a8b8efe7a9b7) )
+ ROM_LOAD16_BYTE( "217-c4.c4", 0x0800001, 0x400000, CRC(8521add2) SHA1(0d1a6f2979302c4c282e31ff334d2d887aec74f7) )
+ ROM_LOAD16_BYTE( "217-c5.c5", 0x1000000, 0x400000, CRC(fb1896e5) SHA1(777a8caa9ebdbddf89e3d5ab650c94a55228ce54) )
+ ROM_LOAD16_BYTE( "217-c6.c6", 0x1000001, 0x400000, CRC(1c98c54b) SHA1(cb1cad161d9b9f2f5a7cf8ae4d6d35b51acf90f5) )
+ ROM_LOAD16_BYTE( "217-c7.c7", 0x1800000, 0x400000, CRC(8b0ede2e) SHA1(ea632ac98291ddac95441b7fe2349974b2da8a42) )
+ ROM_LOAD16_BYTE( "217-c8.c8", 0x1800001, 0x400000, CRC(a085bb61) SHA1(6a3e9e6ba96072b8849b407f2b24103dc0852259) )
+ROM_END
+
+/****************************************
+ ID-0218
+ . NGM-218
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-218
+****************************************/
+
+ROM_START( ragnagrd )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "218-p1.p1", 0x100000, 0x100000, CRC(ca372303) SHA1(67991e4fef9b36bc7d909810eebb857ac2f906f1) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "218-s1.s1", CRC(7d402f9a) SHA1(59ec29d03e62e7a8bef689a124a9164f43b2ace1) )
+
+ NEO_BIOS_AUDIO_128K( "218-m1.m1", CRC(17028bcf) SHA1(7a4e8f33ce9b41beac2152b8f6003f247699e2e1) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) )
+ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) )
+ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) )
+ ROM_LOAD16_BYTE( "218-c3.c3", 0x0800000, 0x400000, CRC(833c163a) SHA1(b7e5356bbd9efab67fedb5bc671ba8bbd661fe0f) )
+ ROM_LOAD16_BYTE( "218-c4.c4", 0x0800001, 0x400000, CRC(c1a30f69) SHA1(f87ddda4695abcd14f5c2d4b7d41f72ad5b064cc) )
+ ROM_LOAD16_BYTE( "218-c5.c5", 0x1000000, 0x400000, CRC(6b6de0ff) SHA1(1abb24cb407258235f4a572cf101d0774823040b) )
+ ROM_LOAD16_BYTE( "218-c6.c6", 0x1000001, 0x400000, CRC(94beefcf) SHA1(d2ff0bac325c9c823dba68bd4f281b3b9f8f68e7) )
+ ROM_LOAD16_BYTE( "218-c7.c7", 0x1800000, 0x400000, CRC(de6f9b28) SHA1(455adb6bb986af8a00d7f32b7f4f3715fc3007f6) )
+ ROM_LOAD16_BYTE( "218-c8.c8", 0x1800001, 0x400000, CRC(d9b311f6) SHA1(ba61a7ab3f08bb7348ad6cd01e5d29ca5ee75074) )
+ROM_END
+
+/****************************************
+ ID-0219
+ . NGM-219
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( pgoal ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "219-p1.p1", 0x100000, 0x100000, CRC(6af0e574) SHA1(c3f0fed0d942e48c99c80b1713f271c033ce0f4f) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "219-s1.s1", CRC(002f3c88) SHA1(a8a5bbc5397c8ae9858e38997ebdc713b7b4f50a) )
+
+ NEO_BIOS_AUDIO_128K( "219-m1.m1", CRC(958efdc8) SHA1(aacc6056b1ff48cde8f241a11a27473cfb4b4aa3) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "219-v1.v1", 0x000000, 0x400000, CRC(d0ae33d9) SHA1(cb21a91184d9d84ff25ca86c00dcadfc210272a8) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "219-c1.c1", 0x0000000, 0x400000, CRC(67fec4dc) SHA1(b99767972a2a4fce2b704df8d08e6b092665a696) )
+ ROM_LOAD16_BYTE( "219-c2.c2", 0x0000001, 0x400000, CRC(86ed01f2) SHA1(9d7d1493946e8fbbd572503d2362b0156c023b76) )
+ ROM_LOAD16_BYTE( "219-c3.c3", 0x0800000, 0x200000, CRC(5fdad0a5) SHA1(56f6d2a7224aa4e82a1858079f918e85cadbd6c2) )
+ ROM_LOAD16_BYTE( "219-c4.c4", 0x0800001, 0x200000, CRC(f57b4a1c) SHA1(875ca69afbc5304ec23f4bc9186abe92f477f6c8) )
+ROM_END
+
+/****************************************
+ ID-0220
+ Choutetsu Brikin'ger - Iron clad (prototype) 1996 Saurus
+****************************************/
+
+ROM_START( ironclad ) /* Prototype - crcs should match the ones of the unreleased dump. */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_220-p1.p1", 0x100000, 0x100000, CRC(62a942c6) SHA1(12aaa7d9bd84328d1bf4610e056b5c57d0252537) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "proto_220-s1.s1", CRC(372fe217) SHA1(493433e682f519bf647e1481c8bdd3a980830ffb) )
+
+ NEO_BIOS_AUDIO_128K( "proto_220-m1.m1", CRC(3a08bb63) SHA1(d8fbbf42a006ccafc3cd99808d28c82dbaac4590) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "proto_220-v1.v1", 0x000000, 0x400000, CRC(8f30a215) SHA1(0ee866a468c4c3608d55df2b5cb9243c8016d77c) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_220-c1.c1", 0x000000, 0x400000, CRC(9aa2b7dc) SHA1(6b3dff292c86f949890b1f8201bc5278f38c2668) )
+ ROM_LOAD16_BYTE( "proto_220-c2.c2", 0x000001, 0x400000, CRC(8a2ad708) SHA1(9568ac4cc0552e7fd3e50d3cd8d9f0f4fe7df1d4) )
+ ROM_LOAD16_BYTE( "proto_220-c3.c3", 0x800000, 0x400000, CRC(d67fb15a) SHA1(842971aeaf3c92e70f7c653bbf29058bc60f5b71) )
+ ROM_LOAD16_BYTE( "proto_220-c4.c4", 0x800001, 0x400000, CRC(e73ea38b) SHA1(27138d588e61e86c292f12d16e36c3681075c607) )
+ROM_END
+
+ROM_START( ironclado ) /* Prototype - bootleg/hack based on later release. */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_220-p1o.p1", 0x100000, 0x100000, CRC(ce37e3a0) SHA1(488f95fa15f56eea6666dda13d96ec29dba18e19) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "proto_220-s1.s1", CRC(372fe217) SHA1(493433e682f519bf647e1481c8bdd3a980830ffb) )
+
+ NEO_BIOS_AUDIO_128K( "proto_220-m1.m1", CRC(3a08bb63) SHA1(d8fbbf42a006ccafc3cd99808d28c82dbaac4590) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "proto_220-v1.v1", 0x000000, 0x400000, CRC(8f30a215) SHA1(0ee866a468c4c3608d55df2b5cb9243c8016d77c) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_220-c1.c1", 0x000000, 0x400000, CRC(9aa2b7dc) SHA1(6b3dff292c86f949890b1f8201bc5278f38c2668) )
+ ROM_LOAD16_BYTE( "proto_220-c2.c2", 0x000001, 0x400000, CRC(8a2ad708) SHA1(9568ac4cc0552e7fd3e50d3cd8d9f0f4fe7df1d4) )
+ ROM_LOAD16_BYTE( "proto_220-c3.c3", 0x800000, 0x400000, CRC(d67fb15a) SHA1(842971aeaf3c92e70f7c653bbf29058bc60f5b71) )
+ ROM_LOAD16_BYTE( "proto_220-c4.c4", 0x800001, 0x400000, CRC(e73ea38b) SHA1(27138d588e61e86c292f12d16e36c3681075c607) )
+ROM_END
+
+/****************************************
+ ID-0221
+ . NGM-221
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-221
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( magdrop2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "221-p1.p1", 0x000000, 0x80000, CRC(7be82353) SHA1(08ab39f52b893591c13a7d7aa26b20ce86e9ddf5) )
+
+ NEO_SFIX_128K( "221-s1.s1", CRC(2a4063a3) SHA1(0e09a7d88d85b1a2100888f4211960ea56ef978b) )
+
+ NEO_BIOS_AUDIO_128K( "221-m1.m1", CRC(bddae628) SHA1(02c77e6aaaed43e39778bf83a3184e7c21db63d4) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "221-v1.v1", 0x000000, 0x200000, CRC(7e5e53e4) SHA1(72b063b2d4acaaf72a20d14ad5bfc90cb64d3fed) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "221-c1.c1", 0x000000, 0x400000, CRC(1f862a14) SHA1(1253e8b65d863d552d00dbdbfc5c168f5fc7edd1) )
+ ROM_LOAD16_BYTE( "221-c2.c2", 0x000001, 0x400000, CRC(14b90536) SHA1(e0d41f6b84d8261729f154b44ddd95c9b9c0714a) )
+ROM_END
+
+/****************************************
+ ID-0222
+ . NGM-222
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-222
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( samsho4 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222-p1.p1", 0x000000, 0x100000, CRC(1a5cb56d) SHA1(9a0a5a1c7c5d428829f22d3d17f7033d43a51b5b) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4k ) /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222-p1k.p1", 0x000000, 0x100000, CRC(06e0a25d) SHA1(81e6727e0acb67ae41383518c0fc07f28d232979) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1k.s1", CRC(d313687d) SHA1(9ba468a9d582ef76c863f57ad9a0f811f3f08bd9) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+/****************************************
+ ID-0223
+ . NGM-223
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . NGH-223
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( rbffspec )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223-p1.p1", 0x000000, 0x100000, CRC(f84a2d1d) SHA1(fc19225d9dbdb6bd0808023ee32c7829f6ffdef6) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffspeck ) /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223-p1k.p1", 0x000000, 0x100000, CRC(b78c8391) SHA1(936b356ac135331b10a37bc10882ec2e4f6b400b) )
+ /* Chip label is correct. They used Cart ID 0124 as 0123 was already used by quizdaisk */
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+/****************************************
+ ID-0224
+ . ADM-013
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . ADH-013
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( twinspri )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "224-p1.p1", 0x100000, 0x100000, CRC(7697e445) SHA1(5b55ca120f77a931d40719b14e0bfc8cac1d628c) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "224-s1.s1", CRC(eeed5758) SHA1(24e48f396716e145b692468762cf595fb7267873) )
+
+ NEO_BIOS_AUDIO_128K( "224-m1.m1", CRC(364d6f96) SHA1(779b95a6476089b71f48c8368d9043ee1dba9032) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "224-v1.v1", 0x000000, 0x400000, CRC(ff57f088) SHA1(1641989b8aac899dbd68aa2332bcdf9b90b33564) )
+ ROM_LOAD( "224-v2.v2", 0x400000, 0x200000, CRC(7ad26599) SHA1(822030037b7664795bf3d64e1452d0aecc22497e) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "224-c1.c1", 0x000000, 0x400000, CRC(f7da64ab) SHA1(587a10ed9235c9046a3523fe80feba07764fac9b) )
+ ROM_LOAD16_BYTE( "224-c2.c2", 0x000001, 0x400000, CRC(4c09bbfb) SHA1(e781aafba3bdefb7ed152826f4c3eb441735331c) )
+ ROM_LOAD16_BYTE( "224-c3.c3", 0x800000, 0x100000, CRC(c59e4129) SHA1(93f02d1b4fbb152a9d336494fbff0d7642921de5) )
+ ROM_LOAD16_BYTE( "224-c4.c4", 0x800001, 0x100000, CRC(b5532e53) SHA1(7d896c25ba97f6e5d43c13d4df4ba72964a976ed) )
+ROM_END
+
+/****************************************
+ ID-0225
+ . SUM-225
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . SUH-225
+****************************************/
+
+ROM_START( wakuwak7 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "225-p1.p1", 0x000000, 0x100000, CRC(b14da766) SHA1(bdffd72ff705fc6b085a4026217bac1c4bc93163) )
+ ROM_LOAD16_WORD_SWAP( "225-p2.sp2", 0x100000, 0x200000, CRC(fe190665) SHA1(739d9a8fc2da34381654d9e291141eacc210ae5c) )
+ /* also found Korean MVS set with ep1 /ep2 on eprom and sp2 on TC5316200 on NEO-MVS PROGBK1; correct chip label for eproms unknown */
+
+ NEO_SFIX_128K( "225-s1.s1", CRC(71c4b4b5) SHA1(9410f13807f01082dc86f2d84051be4bed8e9f7c) )
+
+ NEO_BIOS_AUDIO_128K( "225-m1.m1", CRC(0634bba6) SHA1(153aaf016440500df7a4454f3f2f2911219cb7d8) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "225-v1.v1", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) )
+ ROM_LOAD( "225-v2.v2", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "225-c1.c1", 0x0000000, 0x400000, CRC(ee4fea54) SHA1(314b513a52b2cc88cbf2409d1934c357269a8bb2) )
+ ROM_LOAD16_BYTE( "225-c2.c2", 0x0000001, 0x400000, CRC(0c549e2d) SHA1(d8c4626231c92e43d9bf183202553ee2b5c532e6) )
+ ROM_LOAD16_BYTE( "225-c3.c3", 0x0800000, 0x400000, CRC(af0897c0) SHA1(2b8ec19b9dd0bd1f1171fb01b915e9d25ec8c421) )
+ ROM_LOAD16_BYTE( "225-c4.c4", 0x0800001, 0x400000, CRC(4c66527a) SHA1(6c8c9342fad70b456e282b0d52e7ad890e4673d3) )
+ ROM_LOAD16_BYTE( "225-c5.c5", 0x1000000, 0x400000, CRC(8ecea2b5) SHA1(cad51e6e76d8258a78becb6f4096dd061f537494) )
+ ROM_LOAD16_BYTE( "225-c6.c6", 0x1000001, 0x400000, CRC(0eb11a6d) SHA1(c6d4f978ff3ca190a3060ac52bd7347189194f76) )
+ROM_END
+
+/****************************************
+ ID-0226
+ Pair Pair Wars (prototype) 1996 Sunsoft?
+****************************************/
+
+/****************************************
+ ID-0227
+ . NGM-227
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-227
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( stakwin2 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "227-p1.p1", 0x100000, 0x100000, CRC(daf101d2) SHA1(96b90f884bae2969ebd8c04aba509928464e2433) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "227-s1.s1", CRC(2a8c4462) SHA1(9155fbb5fee6d46a68d17ea780a7a92565f9aa47) )
+
+ NEO_BIOS_AUDIO_128K( "227-m1.m1", CRC(c8e5e0f9) SHA1(09bb05ae6f09b59b9e4871fae1fc7c3bafd07394) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "227-v1.v1", 0x000000, 0x400000, CRC(b8f24181) SHA1(0a3af88d20ff65b82c58325d32c20b99fc07f7f3) )
+ ROM_LOAD( "227-v2.v2", 0x400000, 0x400000, CRC(ee39e260) SHA1(4ed6802564ce262ebe92c7276424056b70998758) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "227-c1.c1", 0x0000000, 0x400000, CRC(7d6c2af4) SHA1(e54f0ab15c95d7a6f965b5d8ab28b5445100650b) )
+ ROM_LOAD16_BYTE( "227-c2.c2", 0x0000001, 0x400000, CRC(7e402d39) SHA1(9d3a44f98ddd0b606c8b3efa0c6b9d5a46c0bfeb) )
+ ROM_LOAD16_BYTE( "227-c3.c3", 0x0800000, 0x200000, CRC(93dfd660) SHA1(5b473c556ef919cd7a872351dbb20a636aae32b6) )
+ ROM_LOAD16_BYTE( "227-c4.c4", 0x0800001, 0x200000, CRC(7efea43a) SHA1(3f2b1718fe7be06b6d75ec34badc2de2a3554d3e) )
+ROM_END
+
+/****************************************
+ ID-0228
+ Ghostlop (prototype) 1996 Data East Corp.
+****************************************/
+
+ROM_START( ghostlop ) /* Prototype */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_228-p1.p1", 0x000000, 0x100000, CRC(6033172e) SHA1(f57fb706aa8dd9e5f9e992a5d35c1799578b59f8) )
+
+ NEO_SFIX_128K( "proto_228-s1.s1", CRC(83c24e81) SHA1(585ef209d8bfc23bdccc1f37d8b764eeedfedc1c) )
+
+ NEO_BIOS_AUDIO_128K( "proto_228-m1.m1", CRC(fd833b33) SHA1(ab6c218c42cba821654cbdae154efecb69f844f6) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "proto_228-v1.v1", 0x000000, 0x200000, CRC(c603fce6) SHA1(5a866471d35895b2ae13cbd5d1cb41bf2e72e1b8) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_228-c1.c1", 0x000000, 0x400000, CRC(bfc99efe) SHA1(5cd2545310142080b8286e787cf5b859f627b3db) )
+ ROM_LOAD16_BYTE( "proto_228-c2.c2", 0x000001, 0x400000, CRC(69788082) SHA1(c3ecb42ddcbd9e16d0018a0c3adb56a911d813ca) )
+ROM_END
+
+/****************************************
+ ID-0229
+ King of Fighters '96 CD Collection (CD only)
+****************************************/
+
+
+/* With ID-0230 the product ID code changed from xxM-xxx / xxH-xxx to xxM-xxx0 / xxH-xxx0 */
+
+
+/****************************************
+ ID-0230
+ . NGM-2300
+ NEO-MVS PROGBK1 / NEO-MVS CHA256B
+ . NGH-2300
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( breakers )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "230-p1.p1", 0x100000, 0x100000, CRC(ed24a6e6) SHA1(3fb77ae696d92d2f9a5d589e08b708545c7cda0a) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "230-s1.s1", CRC(076fb64c) SHA1(c166038128d7004f69932141f83b320a35c2b4ca) )
+
+ NEO_BIOS_AUDIO_128K( "230-m1.m1", CRC(3951a1c1) SHA1(1e6442a7ea82ada9503d71045dd93e12bd05254f) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "230-v1.v1", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) )
+ ROM_LOAD( "230-v2.v2", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "230-c1.c1", 0x000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "230-c2.c2", 0x000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "230-c3.c3", 0x800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "230-c4.c4", 0x800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ROM_END
+
+/****************************************
+ ID-0231
+ . ??M-2310
+ NEO-MVS PROGBK1 / NEO-MVS CHA42G-3B
+****************************************/
+
+ROM_START( miexchng ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "231-p1.p1", 0x000000, 0x80000, CRC(61be1810) SHA1(1ab0e11352ca05329c6e3f5657b60e4a227fcbfb) )
+
+ NEO_SFIX_128K( "231-s1.s1", CRC(fe0c0c53) SHA1(54d56d4463db193e504658f4f6f4997a62ae3d95) )
+
+ NEO_BIOS_AUDIO_128K( "231-m1.m1", CRC(de41301b) SHA1(59ce3836ac8f064d56a446c9374f05bcb40fcfd8) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "231-v1.v1", 0x000000, 0x400000, CRC(113fb898) SHA1(9168ba90c4aa969f69eb11ba3f4d76592d81e05a) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "231-c1.c1", 0x000000, 0x200000, CRC(6c403ba3) SHA1(3830446fbd07d5a6564f9ac68a4bec5ff5b7d5c9) )
+ ROM_LOAD16_BYTE( "231-c2.c2", 0x000001, 0x200000, CRC(554bcd9b) SHA1(e658161618bd41a66f1040be409efdea28020cf6) )
+ ROM_LOAD16_BYTE( "231-c3.c3", 0x400000, 0x100000, CRC(4f6f7a63) SHA1(10935dbc1f52b95979a097b13a114cff18d4d446) )
+ ROM_LOAD16_BYTE( "231-c4.c4", 0x400001, 0x100000, CRC(2e35e71b) SHA1(6f248191c2c60ca1b1b4f2ebf08756e036682144) )
+ROM_END
+
+/****************************************
+ ID-0232
+ . NGM-2320
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2320
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( kof97 ) /* MVS VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97h ) /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-pg1.p1", 0x000000, 0x100000, CRC(5c2400b7) SHA1(49e23f80c012c62146a1bb8f254a7597823de430) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97k ) /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "232-p1.p1", 0x000000, 0x100000, CRC(7db81ad9) SHA1(8bc42be872fd497eb198ca13bf004852b88eb1dc) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1k.m1", CRC(bbea9070) SHA1(c26c2e29fe90966dd574838be63f0037ea799aca) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+/****************************************
+ ID-0233
+ . NGM-2330
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-2330
+ NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
+****************************************/
+
+ROM_START( magdrop3 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "233-p1.p1", 0x000000, 0x100000, CRC(931e17fa) SHA1(4a95c4b79d0878485ce272e9f4c4f647bec0e070) )
+
+ NEO_SFIX_128K( "233-s1.s1", CRC(7399e68a) SHA1(b535ee56a0f0995f04674e676f6aa636ffad26aa) )
+
+ NEO_BIOS_AUDIO_128K( "233-m1.m1", CRC(5beaf34e) SHA1(2905d26945932cddc2dd3a1dc5abba8aa3baee14) )
+
+ ROM_REGION( 0x480000, "ymsnd", 0 )
+ ROM_LOAD( "233-v1.v1", 0x000000, 0x400000, CRC(58839298) SHA1(18cae7bba997c52780761cbf119c4e4b34397a61) )
+ ROM_LOAD( "233-v2.v2", 0x400000, 0x080000, CRC(d5e30df4) SHA1(bbbc0ff5b975471bd682f85976ac4a93f6d44f2e) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "233-c1.c1", 0x000000, 0x400000, CRC(65e3f4c4) SHA1(a6deb75d802225327f8f1c2733a7f2b47e722e59) )
+ ROM_LOAD16_BYTE( "233-c2.c2", 0x000001, 0x400000, CRC(35dea6c9) SHA1(ea133bf947f950236f49d0ae0d1a9af3bc1a9a50) )
+ ROM_LOAD16_BYTE( "233-c3.c3", 0x800000, 0x400000, CRC(0ba2c502) SHA1(8e0f1e553aef04758aaaa14d5115f0ecace4391e) )
+ ROM_LOAD16_BYTE( "233-c4.c4", 0x800001, 0x400000, CRC(70dbbd6d) SHA1(32dd6a04c6329e89f4878e7a56f0d172a6388eea) )
+ROM_END
+
+/****************************************
+ ID-0234
+ . NGM-2340
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2340
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( lastblad ) /* MVS VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234-p1.p1", 0x000000, 0x100000, CRC(e123a5a3) SHA1(a3ddabc00feeb54272b145246612ad4632b0e413) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+ /* also found sets with p1 / sp2 / ep1 / ep2 / m1 on eprom with sticker */
+ /* chip labels for eproms are 0234-P1, 0234-SP2, 0234-EP1, 0234-EP2 and 0234-M1 */
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lastbladh ) /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234-pg1.p1", 0x000000, 0x100000, CRC(cd01c06d) SHA1(d66142571afe07c6191b52f319f1bc8bc8541c14) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lastsold ) /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "134-p1k.p1", 0x000000, 0x100000, CRC(906f3065) SHA1(25167665f1b8e82e13f7fcf4d0e3c54a925c2a58) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+/****************************************
+ ID-0235
+ . ??M-2350
+ NEO-MVS PROG 4096 / NEO-MVS CHA 42G-2
+****************************************/
+
+ROM_START( puzzldpr ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "235-p1.p1", 0x000000, 0x080000, CRC(afed5de2) SHA1(a5d82c6dbe687505e8c8d7339908da45cd379a0b) )
+
+ NEO_SFIX_128K( "235-s1.s1", CRC(3b13a22f) SHA1(4506fc340d9658a50fa415676564f10bbfba2703) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "202-c1.c1", 0x000000, 0x100000, CRC(cc0095ef) SHA1(3d86f455e6db10a2449b775dc386f1826ba3b62e) )
+ ROM_LOAD16_BYTE( "202-c2.c2", 0x000001, 0x100000, CRC(42371307) SHA1(df794f989e2883634bf7ffeea48d6bc3854529af) )
+ROM_END
+
+/****************************************
+ ID-0236
+ . ??M-2360
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+****************************************/
+
+ROM_START( irrmaze ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "236-p1.p1", 0x100000, 0x100000, CRC(4c2ff660) SHA1(4a0cbd09044648ff9ec67723729f16d422c34bda) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "236-s1.s1", CRC(5d1ca640) SHA1(40a9668a1742a44597a07ce72273d17119815637) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ /* special BIOS with trackball support, we only have one Irritating Maze bios and thats asia */
+ ROM_LOAD16_WORD_SWAP("236-bios.sp1", 0x00000, 0x020000, CRC(853e6b96) SHA1(de369cb4a7df147b55168fa7aaf0b98c753b735e) )
+
+ ROM_REGION( 0x30000, "audiocpu", 0 )
+ ROM_LOAD( "236-m1.m1", 0x00000, 0x20000, CRC(880a1abd) SHA1(905afa157aba700e798243b842792e50729b19a0) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "236-v1.v1", 0x000000, 0x200000, CRC(5f89c3b4) SHA1(dc8fd561cf8dfdd41696dcf14ea8d2d0ac4eec4b) )
+ ROM_LOAD( "236-v2.v2", 0x200000, 0x100000, CRC(72e3add7) SHA1(dc49f05274693255416d2e41ecc088027b798eb9) )
+
+ ROM_REGION( 0x0800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "236-c1.c1", 0x000000, 0x400000, CRC(c1d47902) SHA1(727001c34f979226fc8f581113ce2aaac4fc0d42) )
+ ROM_LOAD16_BYTE( "236-c2.c2", 0x000001, 0x400000, CRC(e15f972e) SHA1(6a329559c57a67be73a6733513b59e9e6c8d61cc) )
+ROM_END
+
+/****************************************
+ ID-0237
+ . ??M-2370
+ NEO-MVS PROG 4096 / NEO-MVS CHA42G-3B
+****************************************/
+
+ROM_START( popbounc ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "237-p1.p1", 0x000000, 0x100000, CRC(be96e44f) SHA1(43679da8664fbb491103a1108040ddf94d59fc2b) )
+
+ NEO_SFIX_128K( "237-s1.s1", CRC(b61cf595) SHA1(b14f8b78af7c634d41cf34d36b11b116e61f7342) )
+
+ NEO_BIOS_AUDIO_128K( "237-m1.m1", CRC(d4c946dd) SHA1(6ca09040b5db8d89511d627954c783154d58ab01) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "237-v1.v1", 0x000000, 0x200000, CRC(edcb1beb) SHA1(62f086b9968b366b59276ee4ae3c32c4d76fc6ce) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "237-c1.c1", 0x000000, 0x200000, CRC(eda42d66) SHA1(2735538fcb9dc0c16e043a8728c8b642650189f4) )
+ ROM_LOAD16_BYTE( "237-c2.c2", 0x000001, 0x200000, CRC(5e633c65) SHA1(9a82107caf027317c173c1c1ef676f0fdeea79b2) )
+ROM_END
+
+/****************************************
+ ID-0238
+ . ??M-2380
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( shocktro ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "238-p1.p1", 0x000000, 0x100000, CRC(5677456f) SHA1(f76169fa5c90871d65e2a16fd1bb036c90533ac8) )
+ ROM_LOAD16_WORD_SWAP( "238-p2.sp2", 0x100000, 0x400000, CRC(5b4a09c5) SHA1(de04036cba2da4bb2da73d902d1822b82b4f67a9) )
+
+ NEO_SFIX_128K( "238-s1.s1", CRC(1f95cedb) SHA1(adfa74868147fd260481e4c387d254d3b6de83f4) )
+
+ NEO_BIOS_AUDIO_128K( "238-m1.m1", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "238-v1.v1", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) )
+ ROM_LOAD( "238-v2.v2", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "238-c1.c1", 0x0000000, 0x400000, CRC(90c6a181) SHA1(a381bc8449718814ff12b3a4f7fc4d1bb7ea1631) )
+ ROM_LOAD16_BYTE( "238-c2.c2", 0x0000001, 0x400000, CRC(888720f0) SHA1(cd4d65df8d3ef0dbcca2b7f3f803f45c457f5beb) )
+ ROM_LOAD16_BYTE( "238-c3.c3", 0x0800000, 0x400000, CRC(2c393aa3) SHA1(1cd7cebe5861a2d65f1d6615dd7752162e573a02) )
+ ROM_LOAD16_BYTE( "238-c4.c4", 0x0800001, 0x400000, CRC(b9e909eb) SHA1(33cc9b2d13e4ed2ab6040ff582a53dc9bca402e0) )
+ ROM_LOAD16_BYTE( "238-c5.c5", 0x1000000, 0x400000, CRC(c22c68eb) SHA1(a4b04118b1b1909d3b76be8d9ee5d97db6120600) )
+ ROM_LOAD16_BYTE( "238-c6.c6", 0x1000001, 0x400000, CRC(119323cd) SHA1(05a9d4b1fb4cc963b25452ff6f81e296e0c0b2a1) )
+ ROM_LOAD16_BYTE( "238-c7.c7", 0x1800000, 0x400000, CRC(a72ce7ed) SHA1(05b151554bd7af09ccf554a17bc3c75a0512faaf) )
+ ROM_LOAD16_BYTE( "238-c8.c8", 0x1800001, 0x400000, CRC(1c7c2efb) SHA1(b055ee43cbdaf9a3cb19e4e1f9dd2c40bde69d70) )
+ROM_END
+
+ROM_START( shocktroa ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "238-pg1.p1", 0x000000, 0x100000, CRC(efedf8dc) SHA1(f638df9bf7aa7d514ee2bccfc7f2adbf39ca83fc) )
+ ROM_LOAD16_WORD_SWAP( "238-p2.sp2", 0x100000, 0x400000, CRC(5b4a09c5) SHA1(de04036cba2da4bb2da73d902d1822b82b4f67a9) )
+
+ NEO_SFIX_128K( "238-s1.s1", CRC(1f95cedb) SHA1(adfa74868147fd260481e4c387d254d3b6de83f4) )
+
+ NEO_BIOS_AUDIO_128K( "238-m1.m1", CRC(075b9518) SHA1(ac21b88a860b9572bf24432b4cadcc96d108055d) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "238-v1.v1", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) )
+ ROM_LOAD( "238-v2.v2", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "238-c1.c1", 0x0000000, 0x400000, CRC(90c6a181) SHA1(a381bc8449718814ff12b3a4f7fc4d1bb7ea1631) )
+ ROM_LOAD16_BYTE( "238-c2.c2", 0x0000001, 0x400000, CRC(888720f0) SHA1(cd4d65df8d3ef0dbcca2b7f3f803f45c457f5beb) )
+ ROM_LOAD16_BYTE( "238-c3.c3", 0x0800000, 0x400000, CRC(2c393aa3) SHA1(1cd7cebe5861a2d65f1d6615dd7752162e573a02) )
+ ROM_LOAD16_BYTE( "238-c4.c4", 0x0800001, 0x400000, CRC(b9e909eb) SHA1(33cc9b2d13e4ed2ab6040ff582a53dc9bca402e0) )
+ ROM_LOAD16_BYTE( "238-c5.c5", 0x1000000, 0x400000, CRC(c22c68eb) SHA1(a4b04118b1b1909d3b76be8d9ee5d97db6120600) )
+ ROM_LOAD16_BYTE( "238-c6.c6", 0x1000001, 0x400000, CRC(119323cd) SHA1(05a9d4b1fb4cc963b25452ff6f81e296e0c0b2a1) )
+ ROM_LOAD16_BYTE( "238-c7.c7", 0x1800000, 0x400000, CRC(a72ce7ed) SHA1(05b151554bd7af09ccf554a17bc3c75a0512faaf) )
+ ROM_LOAD16_BYTE( "238-c8.c8", 0x1800001, 0x400000, CRC(1c7c2efb) SHA1(b055ee43cbdaf9a3cb19e4e1f9dd2c40bde69d70) )
+ROM_END
+
+/****************************************
+ ID-0239
+ . NGM-2390
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2390
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( blazstar )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "239-p1.p1", 0x000000, 0x100000, CRC(183682f8) SHA1(dcee1c2cf4a991ca1f9f2b40c4a738f21682807b) )
+ ROM_LOAD16_WORD_SWAP( "239-p2.sp2", 0x100000, 0x200000, CRC(9a9f4154) SHA1(f8805453d0995c8fa16cd9accfb7a990071ca630) )
+
+ NEO_SFIX_128K( "239-s1.s1", CRC(d56cb498) SHA1(420ce56431dc7f3f7de84fcbc8c0a17b5eab205e) )
+
+ NEO_BIOS_AUDIO_128K( "239-m1.m1", CRC(d31a3aea) SHA1(e23abfeb23052f0358edcf2c83401025fe632511) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "239-v1.v1", 0x000000, 0x400000, CRC(1b8d5bf7) SHA1(67fc1f7e36e92a89cd1d415eb31a2892f57b0d04) )
+ ROM_LOAD( "239-v2.v2", 0x400000, 0x400000, CRC(74cf0a70) SHA1(b00451a2a30de2517ae3eca35eb1fe985b950eb8) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "239-c1.c1", 0x0000000, 0x400000, CRC(84f6d584) SHA1(ff36db8504611b0d8d942d1e24823ff71e4aeb37) )
+ ROM_LOAD16_BYTE( "239-c2.c2", 0x0000001, 0x400000, CRC(05a0cb22) SHA1(4abe03e7f3a86f277131d413a3151c7b9c3646c8) )
+ ROM_LOAD16_BYTE( "239-c3.c3", 0x0800000, 0x400000, CRC(5fb69c9e) SHA1(77b96518d8ad8ad120537e0f8ba65d69d1c33566) )
+ ROM_LOAD16_BYTE( "239-c4.c4", 0x0800001, 0x400000, CRC(0be028c4) SHA1(d3f8b37786ca7838c3525895a7f2b49afc8530d4) )
+ ROM_LOAD16_BYTE( "239-c5.c5", 0x1000000, 0x400000, CRC(74bae5f8) SHA1(812c9a31f0721c2971a316b084ce69337dbe3747) )
+ ROM_LOAD16_BYTE( "239-c6.c6", 0x1000001, 0x400000, CRC(4e0700d2) SHA1(cd059fb713c403208923c17e1e8ef02fcfd2fe8d) )
+ ROM_LOAD16_BYTE( "239-c7.c7", 0x1800000, 0x400000, CRC(010ff4fd) SHA1(2571d406442f007a7458d8ccb0939a9201c9c9bf) )
+ ROM_LOAD16_BYTE( "239-c8.c8", 0x1800001, 0x400000, CRC(db60460e) SHA1(a5cb27c0983c8b400d96fd0828ef0639a66d4dba) )
+ROM_END
+
+/****************************************
+ ID-0240
+ . NGM-2400
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2400
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( rbff2 ) /* MVS VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240-p1.p1", 0x000000, 0x100000, CRC(80e41205) SHA1(8f83eb8ff54be4ec40f8a0dd2cbe56c54908d00a) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) )
+ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2h ) /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240-pg1.p1", 0x000000, 0x100000, CRC(b6969780) SHA1(e3373d18e0f0724d69efb8024a27cca121f1b5b2) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) )
+ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2k ) /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "140-p1k.p1", 0x000000, 0x100000, CRC(965edee1) SHA1(7f4b947b19ccfee32fc73e4fd89645eb313b5c77) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) )
+ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+/****************************************
+ ID-0241
+ . NGM-2410
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ . NGH-2410
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( mslug2 ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "241-p1.p1", 0x000000, 0x100000, CRC(2a53c5da) SHA1(5a6aba482cac588a6c2c51179c95b487c6e11899) )
+ ROM_LOAD16_WORD_SWAP( "241-p2.sp2", 0x100000, 0x200000, CRC(38883f44) SHA1(fcf34b8c6e37774741542393b963635412484a27) )
+
+ NEO_SFIX_128K( "241-s1.s1", CRC(f3d32f0f) SHA1(2dc38b7dfd3ff14f64d5c0733c510b6bb8c692d0) )
+
+ NEO_BIOS_AUDIO_128K( "241-m1.m1", CRC(94520ebd) SHA1(f8a1551cebcb91e416f30f50581feed7f72899e9) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) )
+ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ /* Different layout with 8xC (16 mbit) also exists; naming sheme 241-Cx */
+ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) )
+ ROM_LOAD16_BYTE( "241-c2.c2", 0x0000001, 0x800000, CRC(e5806221) SHA1(1e5475cfab129c77acc610f09369ca42ba5aafa5) )
+ ROM_LOAD16_BYTE( "241-c3.c3", 0x1000000, 0x800000, CRC(9f6bfa6f) SHA1(a4319b48004e723f81a980887678e3e296049a53) )
+ ROM_LOAD16_BYTE( "241-c4.c4", 0x1000001, 0x800000, CRC(7d3e306f) SHA1(1499316fb381775218d897b81a6a0c3465d1a37c) )
+ROM_END
+
+/****************************************
+ ID-0242
+ . NGM-2420
+ NEO-MVS PROGSF1 (1998.6.17) (protected board) / NEO-MVS CHA512Y
+ NEO-MVS PROGSF1E (1998.6.18) (protected board) / NEO-MVS CHA512Y
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2420
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( kof98 ) /* encrypted code + protection */ /* MVS VERSION */
+ /* This set uses NEO-MVS PROGSF1 board */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98a ) /* encrypted code + protection */ /* MVS VERSION */
+ /* This set uses NEO-MVS PROGSF1E board; same rom data as in kof98 is used */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242-ep1.ep1", 0x200000, 0x200000, CRC(3f74a000) SHA1(e887e0ac232683bd28703e08c4055fd0ea36402c) )
+ ROM_LOAD16_WORD_SWAP( "242-ep2.ep2", 0x400000, 0x200000, CRC(6e474841) SHA1(0ce401277f9c53435ea00b930efe361c8d25a7d9) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98k ) /* encrypted code + protection, only z80 rom is different to kof98 */ /* KOREAN VERSION */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ /* Correct chip label */
+ NEO_BIOS_AUDIO_256K( "242-m1k.m1", CRC(ce12da0c) SHA1(e7c01dae2852d543d1a58d55735239f6a5aa05a5) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98ka ) /* encrypted code + protection, only z80 rom is different to kof98 */ /* KOREAN VERSION */
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-p1.p1", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ /* Correct chip label */
+ NEO_BIOS_AUDIO_256K( "242-mg1k.m1", CRC(ce9fb07c) SHA1(631d995f1291dd803fb069f3b25e7b9ed30d8649) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+ROM_START( kof98h ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "242-pn1.p1", 0x000000, 0x100000, CRC(61ac868a) SHA1(26577264aa72d6af272952a876fcd3775f53e3fa) )
+ ROM_LOAD16_WORD_SWAP( "242-p2.sp2", 0x100000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
+
+ NEO_SFIX_128K( "242-s1.s1", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
+
+ NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) )
+ ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) )
+ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) )
+ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) )
+ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) )
+ ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) )
+ ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) )
+ ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) )
+ ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) )
+ ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) )
+ ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) )
+ROM_END
+
+/****************************************
+ ID-0243
+ . NGM-2430
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2430
+ NEO-AEG PROGBK1Y / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( lastbld2 ) /* MVS AND AES VERSION */ /* later revision */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243-pg1.p1", 0x000000, 0x100000, CRC(af1e6554) SHA1(bd8526f60c2472937728a5d933fbd19d899f2cba) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+/****************************************
+ ID-0244
+ . ??M-2440
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . ??H-2440
+****************************************/
+
+ROM_START( neocup98 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "244-p1.p1", 0x100000, 0x100000, CRC(f8fdb7a5) SHA1(f34ee5d1c24e70427d05ef488f46906dbd9f9950) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "244-s1.s1", CRC(9bddb697) SHA1(2f479bcd5a433201168792a578de3057252d649f) )
+
+ NEO_BIOS_AUDIO_128K( "244-m1.m1", CRC(a701b276) SHA1(055550ebc650835bcf8ea4457b2c91bd73e21281) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "244-v1.v1", 0x000000, 0x400000, CRC(79def46d) SHA1(63414235de2e177654508f1c840040424f8993e6) )
+ ROM_LOAD( "244-v2.v2", 0x400000, 0x200000, CRC(b231902f) SHA1(9209772e947a2c7ac31b49dd613bf2eab0cb3358) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "244-c1.c1", 0x000000, 0x800000, CRC(c7a62b23) SHA1(4534ecc9ade69c543188c66229dcad89dbc48668) )
+ ROM_LOAD16_BYTE( "244-c2.c2", 0x000001, 0x800000, CRC(33aa0f35) SHA1(3443c7765c6aa177003d42bbfcac9f31d1e12575) )
+ROM_END
+
+/****************************************
+ ID-0245
+ . ??M-2450
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+****************************************/
+
+ROM_START( breakrev ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "245-p1.p1", 0x100000, 0x100000, CRC(c828876d) SHA1(1dcba850e5cf8219d0945612cfded6d20ca8682a) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "245-s1.s1", CRC(e7660a5d) SHA1(1cd54964ba60b245ea57d9daf0e27b572b815d21) )
+
+ NEO_BIOS_AUDIO_128K( "245-m1.m1", CRC(00f31c66) SHA1(8488598415c9b74bce00e05b31d96e3d1625c20d) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "245-v1.v1", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) )
+ ROM_LOAD( "245-v2.v2", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ /* The chip labels and sizes are correct */
+ ROM_LOAD16_BYTE( "245-c1.c1", 0x0000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) )
+ ROM_LOAD16_BYTE( "245-c2.c2", 0x0000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) )
+ ROM_LOAD16_BYTE( "245-c3.c3", 0x0800000, 0x400000, CRC(645077f3) SHA1(0ae74f3b4b3b88f128c6d8c0f35ffa53f5d67ef2) )
+ ROM_LOAD16_BYTE( "245-c4.c4", 0x0800001, 0x400000, CRC(63aeb74c) SHA1(9ff6930c0c3d79b46b86356e8565ce4fcd69ac38) )
+ ROM_LOAD16_BYTE( "245-c5.c5", 0x1000000, 0x400000, CRC(b5f40e7f) SHA1(b332bac64dbb9a9dd66c5315f47ea08634d36f45) )
+ ROM_LOAD16_BYTE( "245-c6.c6", 0x1000001, 0x400000, CRC(d0337328) SHA1(dff86b75dc283bd4512557a5c64f16e6be6c16e4) )
+ROM_END
+
+/****************************************
+ ID-0246
+ . NGM-2460
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+ . NGH-2460
+****************************************/
+
+ROM_START( shocktr2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "246-p1.p1", 0x000000, 0x100000, CRC(6d4b7781) SHA1(3c9d53d5da9842bfd45037c919064dda3fb2e089) )
+ ROM_LOAD16_WORD_SWAP( "246-p2.sp2", 0x100000, 0x400000, CRC(72ea04c3) SHA1(4fb1d22c30f5f3db4637dd92a4d2705c88de399d) )
+
+ NEO_SFIX_128K( "246-s1.s1", CRC(2a360637) SHA1(431b43da5377dd189e51bd93d88d8a24d1b5090a) )
+
+ NEO_BIOS_AUDIO_128K( "246-m1.m1", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "246-v1.v1", 0x000000, 0x400000, CRC(16986fc6) SHA1(cff3103dadf2f4390460456a5bd3fb5f28e21f6a) )
+ ROM_LOAD( "246-v2.v2", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) )
+ ROM_LOAD( "246-v3.v3", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "246-c1.c1", 0x0000000, 0x800000, CRC(47ac9ec5) SHA1(2d9eea11ba87baa23b18a1a3f607dc137846e807) )
+ ROM_LOAD16_BYTE( "246-c2.c2", 0x0000001, 0x800000, CRC(7bcab64f) SHA1(08d0edddd14b53d606e9a7a46aa4fb4e7398e0d0) )
+ ROM_LOAD16_BYTE( "246-c3.c3", 0x1000000, 0x800000, CRC(db2f73e8) SHA1(8d0c3473a8b2a4e28fed1b74beb2e025b7e61867) )
+ ROM_LOAD16_BYTE( "246-c4.c4", 0x1000001, 0x800000, CRC(5503854e) SHA1(a0f2e7c609cbb2aa43493a39d7dcaeca3d511d26) )
+ ROM_LOAD16_BYTE( "246-c5.c5", 0x2000000, 0x800000, CRC(055b3701) SHA1(97f5e92538d1f2e437dcb3f80e56e1230287e8d1) )
+ ROM_LOAD16_BYTE( "246-c6.c6", 0x2000001, 0x800000, CRC(7e2caae1) SHA1(d9de14e3e323664a8c5b7f1df1ba9ec7dd0e6a46) )
+ROM_END
+
+/****************************************
+ ID-0247
+ . ??M-2470
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( flipshot ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "247-p1.p1", 0x000000, 0x100000, CRC(95779094) SHA1(a985e033bc6f137fa65855d3eed245d66d5b244a) )
+
+ NEO_SFIX_128K( "247-s1.s1", CRC(6300185c) SHA1(cb2f1de085fde214f96a962b1c2fa285eb387d44) )
+
+ NEO_BIOS_AUDIO_128K( "247-m1.m1", CRC(a9fe0144) SHA1(4cc076ecce9216a373f3dcd7ba28a03d6050e522) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "247-v1.v1", 0x000000, 0x200000, CRC(42ec743d) SHA1(f45b5167ebcbd59300f4e5b05448cd421654102a) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "247-c1.c1", 0x000000, 0x200000, CRC(c9eedcb2) SHA1(7627f2810322c146511525eb70b573a6a5ede926) )
+ ROM_LOAD16_BYTE( "247-c2.c2", 0x000001, 0x200000, CRC(7d6d6e87) SHA1(6475b58b9f91c20d1f465f3e892de0c68e12a92b) )
+ROM_END
+
+/****************************************
+ ID-0248
+ . ??M-2480
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+****************************************/
+
+ROM_START( pbobbl2n ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "248-p1.p1", 0x000000, 0x100000, CRC(9d6c0754) SHA1(95c70c2d51fc4de01e768e03cc800a850aaad5dc) )
+
+ NEO_SFIX_128K( "248-s1.s1", CRC(0a3fee41) SHA1(0ab2120e462086be942efcf6ffb37f58ea966ca3) )
+
+ NEO_BIOS_AUDIO_128K( "248-m1.m1", CRC(883097a9) SHA1(677bf9684c0c7977a9a3f0c1288e430040a53b49) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "248-v1.v1", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) )
+ ROM_LOAD( "248-v2.v2", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "248-c1.c1", 0x000000, 0x400000, CRC(d9115327) SHA1(a49aa836a902326cfe785428e1699fefcf8566d4) )
+ ROM_LOAD16_BYTE( "248-c2.c2", 0x000001, 0x400000, CRC(77f9fdac) SHA1(4642d71d32b6a05dc8bfa0f95c936a77c7cef05e) )
+ ROM_LOAD16_BYTE( "248-c3.c3", 0x800000, 0x100000, CRC(8890bf7c) SHA1(a52f6bafd60e72003bfe38c80c1dde24b4983b2a) )
+ ROM_LOAD16_BYTE( "248-c4.c4", 0x800001, 0x100000, CRC(8efead3f) SHA1(f577d2f7c6f850b3d100c36947ad15e33dfa0bed) )
+ROM_END
+
+/****************************************
+ ID-0249
+ . ??M-2490
+ NEO-MVS PROGBK1 / NEO-MVS CHA256
+ NEO-MVS PROGBK1 / NEO-MVS CHA512Y
+****************************************/
+
+ROM_START( ctomaday ) /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "249-p1.p1", 0x100000, 0x100000, CRC(c9386118) SHA1(5554662c7bc8605889cac4a67fee05bbb4eb786f) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "249-s1.s1", CRC(dc9eb372) SHA1(b8aa142243ba303799554479bfc88eb49260f3b1) )
+
+ NEO_BIOS_AUDIO_128K( "249-m1.m1", CRC(80328a47) SHA1(34b6b1a81eab1cf38834b2eea55454ce1b6100e2) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "249-v1.v1", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) )
+ ROM_LOAD( "249-v2.v2", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "249-c1.c1", 0x000000, 0x400000, CRC(041fb8ee) SHA1(dacc84d713d76818d89a26358374afaa22fa82a2) )
+ ROM_LOAD16_BYTE( "249-c2.c2", 0x000001, 0x400000, CRC(74f3cdf4) SHA1(55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1) )
+ROM_END
+
+/****************************************
+ ID-0250
+ . NGM-2500
+ NEO-MVS PROGEOP (1999.2.2) / NEO-MVS CHA512Y
+ . NGH-2500
+ NEO-AEG PROGEOP (1999.4.2) / NEO-AEG CHA512Y
+****************************************/
+
+ROM_START( mslugx ) /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "250-p1.p1", 0x000000, 0x100000, CRC(81f1f60b) SHA1(4c19f2e9824e606178ac1c9d4b0516fbaa625035) )
+ ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) )
+
+ NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) )
+
+ NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) )
+ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) )
+ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) )
+ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) )
+ ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) )
+ ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) )
+ ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) )
+ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) )
+ROM_END
+
+/****************************************
+ ID-0251
+ . NGM-2510
+ SMA protected version found on:
+ NEO-MVS PROGLBA (NEO-SMA) (1999.4.12) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ Non SMA protected version found on:
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ . NGH-2510
+ NEO-AEG PROGLBA (NEO-SMA) (1999.7.6) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ka.neo-sma", 0x0c0000, 0x040000, CRC(7766d09e) SHA1(4e0a49d1ad669a62676cb30f527c6590cde80194) ) /* stored in the custom chip */
+ ROM_LOAD16_WORD_SWAP( "251-p1.p1", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) )
+ ROM_LOAD16_WORD_SWAP( "251-p2.p2", 0x500000, 0x400000, CRC(90175f15) SHA1(aa9e75810438a8b45808a8bf32cb04d91b5c0b3a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99h ) /* Original Version - Encrypted Code & GFX */ /* AES VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kc.neo-sma", 0x0c0000, 0x040000, CRC(6c9d0647) SHA1(2a0ce62ca6c18007e8fbe1b60475c7874ab79389) ) /* stored in the custom chip */
+ ROM_LOAD16_WORD_SWAP( "251-p1.p1", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) )
+ ROM_LOAD16_WORD_SWAP( "251-pg2.p2", 0x500000, 0x400000, CRC(d9057f51) SHA1(8d365b4dd40351495df99d6c765df1434b0b0548) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99e ) /* Original Version - Encrypted Code & GFX */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ka.neo-sma", 0x0c0000, 0x040000, CRC(7766d09e) SHA1(4e0a49d1ad669a62676cb30f527c6590cde80194) ) /* stored in the custom chip */
+ /* Is the SMA for this set correct? A set with this layout and a SMA.KB is known */
+ ROM_LOAD16_WORD_SWAP( "251-ep1.p1", 0x100000, 0x200000, CRC(1e8d692d) SHA1(eea1aa8c0a17f089ac14831889c36535e559072c) )
+ ROM_LOAD16_WORD_SWAP( "251-ep2.p2", 0x300000, 0x200000, CRC(d6206e5a) SHA1(0e1100d03c40c6d5cfa899d009e319ae73fce6b8) )
+ ROM_LOAD16_WORD_SWAP( "251-ep3.p3", 0x500000, 0x200000, CRC(d58c3ef8) SHA1(f927d90d55b49944f448d6286e0cb913cc70ade1) )
+ ROM_LOAD16_WORD_SWAP( "251-ep4.p4", 0x700000, 0x200000, CRC(52de02ae) SHA1(f16924ff8eef92da7716236a6a055e22e090a02b) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99k ) /* Original Version - Encrypted GFX */ /* KOREAN VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "152-p1.p1", 0x000000, 0x100000, CRC(f2c7ddfa) SHA1(d592eecc53d442c55c2f26a6a721fdf2924d2a5b) )
+ ROM_LOAD16_WORD_SWAP( "152-p2.sp2", 0x100000, 0x400000, CRC(274ef47a) SHA1(98654b68cc85c19d4a90b46f3110f551fa2e5357) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) )
+ ROM_LOAD16_BYTE( "251-c2.c2", 0x0000001, 0x800000, CRC(e71e2ea3) SHA1(39c7a326fddbcca3b29c68cdc96aad4d62295c0f) )
+ ROM_LOAD16_BYTE( "251-c3.c3", 0x1000000, 0x800000, CRC(238755d2) SHA1(01125b5c7a28e350f091280b041954fd1ac7c98f) )
+ ROM_LOAD16_BYTE( "251-c4.c4", 0x1000001, 0x800000, CRC(438c8b22) SHA1(ffbc643f5b27dd00f2f95d4ef4c5f29ee814722b) )
+ ROM_LOAD16_BYTE( "251-c5.c5", 0x2000000, 0x800000, CRC(0b0abd0a) SHA1(d5ad324fe523bdc6f09209d236cc4932524a48f1) )
+ ROM_LOAD16_BYTE( "251-c6.c6", 0x2000001, 0x800000, CRC(65bbf281) SHA1(79ae174667a23dabcfe865b6cd6133c86098452e) )
+ ROM_LOAD16_BYTE( "251-c7.c7", 0x3000000, 0x800000, CRC(ff65f62e) SHA1(7cd335fede05b56e15db90ce407c1183a78da4e9) )
+ ROM_LOAD16_BYTE( "251-c8.c8", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) )
+ROM_END
+
+ROM_START( kof99p ) /* Prototype Version - Possibly Hacked */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p1.p1", 0x000000, 0x100000, CRC(f37929c4) SHA1(226e7e3d629568399b88275e5bcd4e5b3839be95) )
+ ROM_LOAD16_WORD_SWAP( "proto_251-p2.p2", 0x100000, 0x400000, CRC(739742ad) SHA1(31acaf05a9bf186305888d3db7e4e8a83f7bb0a4) )
+
+ /* This is the S1 from the prototype, the final is different */
+ NEO_SFIX_128K( "proto_251-s1.s1", CRC(fb1498ed) SHA1(d40060b31b6f217a4abdf3b336439fcd7bd7aaef) )
+
+ /* Did the Prototype really use the same sound program / voice roms, sound isn't great .. */
+ NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) )
+ ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) )
+ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) )
+ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* these are probably decrypted versions of the roms found in the final */
+ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) )
+ ROM_LOAD16_BYTE( "proto_251-c2.c2", 0x0000001, 0x800000, CRC(d822778f) SHA1(b590055e9bf1549bd6e1ecdabd65702202615712) )
+ ROM_LOAD16_BYTE( "proto_251-c3.c3", 0x1000000, 0x800000, CRC(f20959e8) SHA1(38293043fa77ac51c5e3191118874c58f1ae4d30) )
+ ROM_LOAD16_BYTE( "proto_251-c4.c4", 0x1000001, 0x800000, CRC(54ffbe9f) SHA1(8e62442923551f07a552621951b1accab2830e3b) )
+ ROM_LOAD16_BYTE( "proto_251-c5.c5", 0x2000000, 0x800000, CRC(d87a3bbc) SHA1(430f6812088712e0eb5714dcc664d8bba75e921a) )
+ ROM_LOAD16_BYTE( "proto_251-c6.c6", 0x2000001, 0x800000, CRC(4d40a691) SHA1(2b580d0678a5e6033ef16130671e860364d35e56) )
+ ROM_LOAD16_BYTE( "proto_251-c7.c7", 0x3000000, 0x800000, CRC(a4479a58) SHA1(d50e6cc9ccfe1ddbc6d90d46b8ca2cb0304edd8c) )
+ ROM_LOAD16_BYTE( "proto_251-c8.c8", 0x3000001, 0x800000, CRC(ead513ce) SHA1(e9b07a0b01fdeb3004755a479df059c81b4d0ed6) )
+ROM_END
+
+/****************************************
+ ID-0252
+ . ??M-2520
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( ganryu ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "252-p1.p1", 0x100000, 0x100000, CRC(4b8ac4fb) SHA1(93d90271bff281862b03beba3809cf95a47a1e44) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "252-m1.m1", CRC(30cc4099) SHA1(46453b7aac41855a92724a785372f8daf931d8d4) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "252-v1.v1", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "252-c1.c1", 0x0000000, 0x800000, CRC(50ee7882) SHA1(ace0f95407c246d0456341cf2ad8a7668b81df8a) )
+ ROM_LOAD16_BYTE( "252-c2.c2", 0x0000001, 0x800000, CRC(62585474) SHA1(b35461598087aa82886af0030c61b26cc064af5f) )
+ROM_END
+
+/****************************************
+ ID-0253
+ . NGM-2530
+ NEO-MVS PROGLBA (1999.4.12) (NEO-SMA)(LBA-SUB) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ . NGH-2530
+ NEO-AEG PROGLBA (1999.7.6) (NEO-SMA) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( garou ) /* Original Version - Encrypted GFX */ /* MVS VERSION - later revision */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kf.neo-sma", 0x0c0000, 0x040000, CRC(98bc93dc) SHA1(01fe3d18b50f770e131e8d8eeff4c630ba8c9551) ) /* stored in the custom chip */
+ ROM_LOAD16_WORD_SWAP( "253-ep1.p1", 0x100000, 0x200000, CRC(ea3171a4) SHA1(bbda40f652baa0dc5fc6a006c001a1bdb0df43f6) )
+ ROM_LOAD16_WORD_SWAP( "253-ep2.p2", 0x300000, 0x200000, CRC(382f704b) SHA1(0ace9c84a8b8a0524fd9a503e7d872de1bf1bd52) )
+ ROM_LOAD16_WORD_SWAP( "253-ep3.p3", 0x500000, 0x200000, CRC(e395bfdd) SHA1(6b50f5ac15bf66b7e4e9bff57594fd3d7530c831) )
+ ROM_LOAD16_WORD_SWAP( "253-ep4.p4", 0x700000, 0x200000, CRC(da92c08e) SHA1(5556f983ebcebc33160e90a6a6cf589d54c8cedc) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "253-m1.m1", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "253-v1.v1", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
+ ROM_LOAD( "253-v2.v2", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
+ ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
+ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) )
+ ROM_LOAD16_BYTE( "253-c2.c2", 0x0000001, 0x800000, CRC(0917d2a4) SHA1(d4ed3a13ae22f880fb399671c1752f1a0283f316) )
+ ROM_LOAD16_BYTE( "253-c3.c3", 0x1000000, 0x800000, CRC(6737c92d) SHA1(678f0c9cc1267bd131546981b9989bfb7289d8ba) )
+ ROM_LOAD16_BYTE( "253-c4.c4", 0x1000001, 0x800000, CRC(5ba92ec6) SHA1(aae36b050a3a0321026a96eba06dd184c0e2acca) )
+ ROM_LOAD16_BYTE( "253-c5.c5", 0x2000000, 0x800000, CRC(3eab5557) SHA1(47c433015aa81a0b0a1d3ee51382c4948b80c023) )
+ ROM_LOAD16_BYTE( "253-c6.c6", 0x2000001, 0x800000, CRC(308d098b) SHA1(b052f1fa9fbc69606004c250e2505360eaa24949) )
+ ROM_LOAD16_BYTE( "253-c7.c7", 0x3000000, 0x800000, CRC(c0e995ae) SHA1(8675ca787d28246174c313167f82557f021366fc) )
+ ROM_LOAD16_BYTE( "253-c8.c8", 0x3000001, 0x800000, CRC(21a11303) SHA1(fd61221ad257c185ef5c1f9694bd6b840b591af3) )
+ROM_END
+
+ROM_START( garouh ) /* Original Version - Encrypted GFX */ /* MVS AND AES VERSION - earlier revision */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ke.neo-sma", 0x0c0000, 0x040000, CRC(96c72233) SHA1(29e19effd40fdf7e5144332396857f4ad0eff13e) ) /* stored in the custom chip */
+ ROM_LOAD16_WORD_SWAP( "253-p1.p1", 0x100000, 0x400000, CRC(18ae5d7e) SHA1(bdb58ec9137d8653979b47132f2d10e1cc6aaa24) )
+ ROM_LOAD16_WORD_SWAP( "253-p2.p2", 0x500000, 0x400000, CRC(afffa779) SHA1(ac017986f02277fbcd656b8c02492a3f4216a90e) )
+ /* also found AES JP set with ep1 / ep2 / ep3 and ep4 on eproms and KE NEO-SMA with a white marking; chip labels for eproms are 253-EP1, 253-EP2, 253-EP3 and 253-EP4 */
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "253-m1.m1", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "253-v1.v1", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
+ ROM_LOAD( "253-v2.v2", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
+ ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
+ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) )
+ ROM_LOAD16_BYTE( "253-c2.c2", 0x0000001, 0x800000, CRC(0917d2a4) SHA1(d4ed3a13ae22f880fb399671c1752f1a0283f316) )
+ ROM_LOAD16_BYTE( "253-c3.c3", 0x1000000, 0x800000, CRC(6737c92d) SHA1(678f0c9cc1267bd131546981b9989bfb7289d8ba) )
+ ROM_LOAD16_BYTE( "253-c4.c4", 0x1000001, 0x800000, CRC(5ba92ec6) SHA1(aae36b050a3a0321026a96eba06dd184c0e2acca) )
+ ROM_LOAD16_BYTE( "253-c5.c5", 0x2000000, 0x800000, CRC(3eab5557) SHA1(47c433015aa81a0b0a1d3ee51382c4948b80c023) )
+ ROM_LOAD16_BYTE( "253-c6.c6", 0x2000001, 0x800000, CRC(308d098b) SHA1(b052f1fa9fbc69606004c250e2505360eaa24949) )
+ ROM_LOAD16_BYTE( "253-c7.c7", 0x3000000, 0x800000, CRC(c0e995ae) SHA1(8675ca787d28246174c313167f82557f021366fc) )
+ ROM_LOAD16_BYTE( "253-c8.c8", 0x3000001, 0x800000, CRC(21a11303) SHA1(fd61221ad257c185ef5c1f9694bd6b840b591af3) )
+ROM_END
+
+ROM_START( garoup ) /* Prototype Version, seems genuine */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p1.p1", 0x000000, 0x100000, CRC(c72f0c16) SHA1(1ff6bb651682f93bef9ff02622c3cf63fe594986) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+/****************************************
+ ID-0254
+ . ??M-2540
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( s1945p ) /* Original Version, Encrypted GFX Roms */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "254-p1.p1", 0x000000, 0x100000, CRC(ff8efcff) SHA1(dcaeaca573385c172ecc43ee6bee355359091893) )
+ ROM_LOAD16_WORD_SWAP( "254-p2.sp2", 0x100000, 0x400000, CRC(efdfd4dd) SHA1(254f3e1b546eed788f7ae919be9d1bf9702148ce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "254-m1.m1", CRC(994b4487) SHA1(a4e645a3ababa48a8325980ff022e04a8b51b017) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "254-v1.v1", 0x000000, 0x400000, CRC(844f58fb) SHA1(e59544457be9f21481eac8b5a39b9cbb502f252d) )
+ ROM_LOAD( "254-v2.v2", 0x400000, 0x400000, CRC(d9a248f0) SHA1(dd3e0974b753e6f94d0943a002de45668a1b072b) )
+ ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) )
+ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) )
+ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) )
+ ROM_LOAD16_BYTE( "254-c3.c3", 0x1000000, 0x800000, CRC(e53ff2dc) SHA1(31f6aaffe28146d574aa72f14f90a9d968f36bc6) )
+ ROM_LOAD16_BYTE( "254-c4.c4", 0x1000001, 0x800000, CRC(818672f0) SHA1(460c6738d0ee5ae440a23fc1434fab53bbb242b5) )
+ ROM_LOAD16_BYTE( "254-c5.c5", 0x2000000, 0x800000, CRC(4580eacd) SHA1(feb96eb5e80c9125ddd7836e0939212cd3011c34) )
+ ROM_LOAD16_BYTE( "254-c6.c6", 0x2000001, 0x800000, CRC(e34970fc) SHA1(6e43e15e27bc914357f977116ab1e2d98711bb21) )
+ ROM_LOAD16_BYTE( "254-c7.c7", 0x3000000, 0x800000, CRC(f2323239) SHA1(5b3e8dd77474203be010ec7363858d806344a320) )
+ ROM_LOAD16_BYTE( "254-c8.c8", 0x3000001, 0x800000, CRC(66848c7d) SHA1(24d4ed627940a4cf8129761c1da15556e52e199c) )
+ROM_END
+
+/****************************************
+ ID-0255
+ . ??M-2550
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( preisle2 ) /* Original Version, Encrypted GFX */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "255-p1.p1", 0x000000, 0x100000, CRC(dfa3c0f3) SHA1(793c6a46f3a794536dc0327a3f3fad20e25ab661) )
+ ROM_LOAD16_WORD_SWAP( "255-p2.sp2", 0x100000, 0x400000, CRC(42050b80) SHA1(0981a8295d43b264c2b95e5d7568bdda4e64c976) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "255-m1.m1", CRC(8efd4014) SHA1(5b73809b6e4e49264d281ef3e5004ac8a9de296d) )
+
+ ROM_REGION( 0x0600000, "ymsnd", 0 )
+ ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) )
+ ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "255-c1.c1", 0x0000000, 0x800000, CRC(ea06000b) SHA1(1539b12e461fa48301190eb8171bbffff9d984b7) )
+ ROM_LOAD16_BYTE( "255-c2.c2", 0x0000001, 0x800000, CRC(04e67d79) SHA1(aadb6ee750da2c14c6eededa2218db95e051a32c) )
+ ROM_LOAD16_BYTE( "255-c3.c3", 0x1000000, 0x800000, CRC(60e31e08) SHA1(bd5b81ad9d04cdc4e0df31ac40eca305f98277eb) )
+ ROM_LOAD16_BYTE( "255-c4.c4", 0x1000001, 0x800000, CRC(40371d69) SHA1(90011ccc5672ff1b90737cf50c963e71b6217ce3) )
+ ROM_LOAD16_BYTE( "255-c5.c5", 0x2000000, 0x800000, CRC(0b2e6adf) SHA1(15c7d9aa8b1ad9a071e6fd0ef0de8a057c23b02e) )
+ ROM_LOAD16_BYTE( "255-c6.c6", 0x2000001, 0x800000, CRC(b001bdd3) SHA1(394ba8004644844ee97a120cfda48aeac685af8a) )
+ROM_END
+
+/****************************************
+ ID-0256
+ . NGM-2560
+ SMA protected version found on:
+ NEO-MVS PROGLBA (1999.4.12) (NEO-SMA)(LBA-SUB) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ Non SMA protected version found on:
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ . NGH-2560
+ NEO-AEG PROGLBA (1999.7.6) (NEO-SMA)(LBA-SUB) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 2000.4.1 */ /* MVS VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(9cd55736) SHA1(d6efb2b313127c2911d47d9324626b3f1e7c6ccb) ) /* stored in the custom chip */
+ /* The SMA for this release has a green colour marking; the older revision has a white colour marking */
+ ROM_LOAD16_WORD_SWAP( "256-pg1.p1", 0x100000, 0x400000, CRC(b07edfd5) SHA1(dcbd9e500bfae98d754e55cdbbbbf9401013f8ee) )
+ ROM_LOAD16_WORD_SWAP( "256-pg2.p2", 0x500000, 0x400000, CRC(6097c26b) SHA1(248ec29d21216f29dc6f5f3f0e1ad1601b3501b6) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+ROM_START( mslug3h ) /* Original Version - Encrypted GFX */ /* revision 2000.3.17 */ /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "256-ph1.p1", 0x000000, 0x100000, CRC(9c42ca85) SHA1(7a8f77a89867b889295ae9b9dfd4ba28f02d234d) )
+ ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
+ /* also found AES sets with p1 / p2 on maskrom on NEO-AEG PROGLBA (NEO-SMA); chip labels are 256-PG1 and 256-PG2 */
+ /* The SMA on those sets has a pink or green color marking */
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+/****************************************
+ ID-0257
+ . NGM-2570
+ SMA protected version found on:
+ NEO-MVS PROGLBA (1999.4.12) (NEO-SMA)(LBA-SUB) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ Non SMA protected version found on:
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ . NGH-2570
+ NEO-AEG PROGLBA (NEO-SMA) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( kof2000 ) /* Original Version, Encrypted Code + Sound + GFX Roms */ /* MVS AND AES VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(71c6e6bb) SHA1(1bd29ded4c6b29780db8e8b772c452189699ca89) ) /* stored in the custom chip */
+ ROM_LOAD16_WORD_SWAP( "257-p1.p1", 0x100000, 0x400000, CRC(60947b4c) SHA1(5faa0a7ac7734d6c8e276589bd12dd574264647d) )
+ ROM_LOAD16_WORD_SWAP( "257-p2.p2", 0x500000, 0x400000, CRC(1b7ec415) SHA1(f19fa44e9ee5b5a6eb4a051349d6bc4acc3bbbdb) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+ROM_START( kof2000n ) /* Original Version, Encrypted Sound + GFX Roms */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "257-pg1.p1", 0x000000, 0x100000, CRC(5f809dbe) SHA1(2bc233dcff5622de86d01e3b74b840c7caf12982) )
+ ROM_LOAD16_WORD_SWAP( "257-pg2.sp2", 0x100000, 0x400000, CRC(693c2c5e) SHA1(dc9121b7369ef46596343cac055a00aec81704d4) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "257-m1.m1", CRC(4b749113) SHA1(2af2361146edd0ce3966614d90165a5c1afb8de4) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "257-v1.v1", 0x000000, 0x400000, CRC(17cde847) SHA1(4bcc0205b70dc6d9216b29025450c9c5b08cb65d) )
+ ROM_LOAD( "257-v2.v2", 0x400000, 0x400000, CRC(1afb20ff) SHA1(57dfd2de058139345ff2b744a225790baaecd5a2) )
+ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) )
+ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) )
+ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) )
+ ROM_LOAD16_BYTE( "257-c3.c3", 0x1000000, 0x800000, CRC(101e6560) SHA1(8073ae1139e215d1167f8d32c14079a46ce3ee1c) )
+ ROM_LOAD16_BYTE( "257-c4.c4", 0x1000001, 0x800000, CRC(bd2fc1b1) SHA1(da0006761923ad49b404a08d7a151193ee307a69) )
+ ROM_LOAD16_BYTE( "257-c5.c5", 0x2000000, 0x800000, CRC(89775412) SHA1(b221b30224bc4239f1b3c2d2fd1cd4fa84e3523c) )
+ ROM_LOAD16_BYTE( "257-c6.c6", 0x2000001, 0x800000, CRC(fa7200d5) SHA1(6f2b0d38af34e280d56a58955400e5c679906871) )
+ ROM_LOAD16_BYTE( "257-c7.c7", 0x3000000, 0x800000, CRC(7da11fe4) SHA1(065336cf166807acb6c8569d59d3bf37a19b0a42) )
+ ROM_LOAD16_BYTE( "257-c8.c8", 0x3000001, 0x800000, CRC(b1afa60b) SHA1(b916184f5cfe4121752270f4f65abf35d8eb0519) )
+ROM_END
+
+/****************************************
+ ID-0258
+ SNK vs. Capcom?
+****************************************/
+
+/****************************************
+ ID-0259
+ . ??M-2590
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( bangbead ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "259-p1.p1", 0x100000, 0x100000, CRC(88a37f8b) SHA1(566db84850fad5e8fe822e8bba910a33e083b550) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "259-m1.m1", CRC(85668ee9) SHA1(7d3f51710cf90c097cd3faaeeef10ceb85cbb3e8) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "259-v1.v1", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) )
+ ROM_LOAD( "259-v2.v2", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "259-c1.c1", 0x0000000, 0x800000, CRC(1f537f74) SHA1(b8ef691e92191c20a5ed4f20a75cca3c7383bca6) )
+ ROM_LOAD16_BYTE( "259-c2.c2", 0x0000001, 0x800000, CRC(0efd98ff) SHA1(d350315d3c7f26d638458e5ccf2126069a4c7a5b) )
+ROM_END
+
+/****************************************
+ ID-0260
+ . ??M-2600
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( nitd ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "260-p1.p1", 0x000000, 0x080000, CRC(61361082) SHA1(441f3f41c1aa752c0e0a9a0b1d92711d9e636b85) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x0400000, "ymsnd", 0 )
+ ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) )
+ ROM_LOAD16_BYTE( "260-c2.c2", 0x0000001, 0x800000, CRC(d2b04b0d) SHA1(ce4322e6cfacb627fe997efe81018861e21d3c27) )
+ROM_END
+
+/****************************************
+ ID-0261
+ . NGM-2610
+ NEO-MVS PROGBK1 / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7042)
+ . NGH-2610
+ NEO-AEG PROGBK1F / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7042)
+****************************************/
+
+ROM_START( sengoku3 ) /* Original Version - Encrypted GFX */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261-ph1.p1", 0x100000, 0x100000, CRC(e0d4bc0a) SHA1(8df366097f224771ca6d1aa5c1691cd46776cd12) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+ /* also found MVS set with p1 label 261-PG1; older revision? */
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "261-m1.m1", CRC(7d501c39) SHA1(8e6bcc428f5ac7532d9c9be7e07ad0821461a080) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+/****************************************
+ ID-0262
+ . NGM-262?
+ MVS PROGBK2 REV1.0 (NEO-PCM2 SNK)/ MVS CHAFIO REV1.0 (NEO-CMC 7050)
+ . NGH-2621
+ NEO-AEG PROGBK1F / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+ - Distribution by BrezzaSoft
+****************************************/
+
+ROM_START( kof2001 ) /* MVS VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-p1-08-e0.p1", 0x000000, 0x100000, CRC(9381750d) SHA1(dcfecd69e563ff52fe07d23c5372d0f748b07819) )
+ ROM_LOAD16_WORD_SWAP( "262-p2-08-e0.sp2", 0x100000, 0x400000, CRC(8e0d8329) SHA1(10dcc1baf0aaf1fc84c4d856bca6bcff85aed2bc) )
+ /* The first/early production run sets have proms with above labels. Some later? sets found have eproms instead of proms */
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.m1", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+ROM_START( kof2001h ) /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "262-pg1.p1", 0x000000, 0x100000, CRC(2af7e741) SHA1(e41282d73ed6d521da056f1a16573bb61bfa3826) )
+ ROM_LOAD16_WORD_SWAP( "262-pg2.sp2", 0x100000, 0x400000, CRC(91eea062) SHA1(82bae42bbeedb9f3aa0c7c0b0a7a69be499cf98f) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_256K( "265-262-m1.m1", CRC(a7f8119f) SHA1(71805b39b8b09c32425cf39f9de59b2f755976c2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) )
+ ROM_LOAD16_BYTE( "262-c2-08-e0.c2", 0x0000001, 0x800000, CRC(50368cbf) SHA1(5d9e206e98e0b0c7735b72ea46b45058fdec2352) )
+ ROM_LOAD16_BYTE( "262-c3-08-e0.c3", 0x1000000, 0x800000, CRC(fb14ff87) SHA1(445a8db2fc69eff54a252700f2d3a89244c58e75) )
+ ROM_LOAD16_BYTE( "262-c4-08-e0.c4", 0x1000001, 0x800000, CRC(4397faf8) SHA1(6752b394f6647502a649a3e62bd3442f936b733e) )
+ ROM_LOAD16_BYTE( "262-c5-08-e0.c5", 0x2000000, 0x800000, CRC(91f24be4) SHA1(88190c41f7d4a0f4b1982149fc9acfc640af498d) )
+ ROM_LOAD16_BYTE( "262-c6-08-e0.c6", 0x2000001, 0x800000, CRC(a31e4403) SHA1(5cd1a14703aa58810e2377dfb7353c61e9dc9c1f) )
+ ROM_LOAD16_BYTE( "262-c7-08-e0.c7", 0x3000000, 0x800000, CRC(54d9d1ec) SHA1(80c3a8ec39130dd5d3da561f287709da6b8abcf4) )
+ ROM_LOAD16_BYTE( "262-c8-08-e0.c8", 0x3000001, 0x800000, CRC(59289a6b) SHA1(ddfce7c85b2a144975db5bb14b4b51aaf881880e) )
+ROM_END
+
+/****************************************
+ ID-0263
+ . NGM-2630
+ NEO-MVS PROGBK2 (NEO-PCM2 SNK)/ NEO-MVS CHAFIO (NEO-CMC 7050)
+ . NGH-2630
+ NEO-AEG PROGBK2 (2002.4.1) (NEO-PCM2 SNK) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( mslug4 ) /* Original Version - Encrypted GFX */ /* MVS VERSION */
+ /* There also exist carts where p1 label is pg1; the PG1 revision has a Japanese cart label, SN 02Jxxxxx
+ The P1 revision has a US/EUR cart label, SN 02Txxxxx ; Rom data on both is identical.
+ These carts were manufactured by Mega Enterprise, not SNK. */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263-p1.p1", 0x000000, 0x100000, CRC(27e4def3) SHA1(a08785e8145981bb6b5332a3b2df7eb321253cca) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.m1", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+ROM_START( mslug4h ) /* Original Version - Encrypted GFX */ /* AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "263-ph1.p1", 0x000000, 0x100000, CRC(c67f5c8d) SHA1(12af74964843f103520d9f0825069ea2f67eeb2f) )
+ ROM_LOAD16_WORD_SWAP( "263-ph2.sp2", 0x100000, 0x400000, CRC(bc3ec89e) SHA1(2cb0626bc4fa57e1d25f208e04532b570d87b3fb) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.m1", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+/****************************************
+ ID-0264
+ . NGM-264?
+ NEO-MVS PROGBK2 (2000.3.21) (NEO-PCM2 SNK) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ . NGH-2641
+ NEO-AEG PROGBK2 (2002.4.1) (NEO-PCM2 SNK) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+ - Distribution by BrezzaSoft
+****************************************/
+
+ROM_START( rotd ) /* Encrypted Set */ /* MVS VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264-p1.p1", 0x000000, 0x800000, CRC(b8cc969d) SHA1(4f2205b4bdd32dd1522106ef4df10ac0eb1b852d) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "264-m1.m1", CRC(4dbd7b43) SHA1(6b63756b0d2d30bbf13fbd219833c81fd060ef96) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+/****************************************
+ ID-0265
+ . NGM-2650
+ NEO-MVS PROGBK2 (2000.3.21) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ . NGH-2650
+ NEO-AEG PROGBK2 (NEO-PCM2 PLAYMORE) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( kof2002 ) /* Encrypted Set */ /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+/****************************************
+ ID-0266
+ . NGM-2660
+ NEO-MVS PROGBK2 (2000.3.21) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+ . NGH-2660
+ NEO-AEG PROGBK2 (2002.4.1) (NEO-PCM2 PLAYMORE) / NEO-AEG CHAFIO (1999.8.10) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( matrim ) /* Encrypted Set */ /* MVS AND AES VERSION */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266-p1.p1", 0x000000, 0x100000, CRC(5d4c2dc7) SHA1(8d723b0d28ec344eef26009b361a2b97d300dd51) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "266-m1.m1", CRC(456c3e6c) SHA1(5a07d0186198a18d2dda1331093cf29b0b9b2984) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) )
+ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "266-c1.c1", 0x0000000, 0x800000, CRC(505f4e30) SHA1(f22b6f76fc0cad963555dc89d072967c8dc8b79a) )
+ ROM_LOAD16_BYTE( "266-c2.c2", 0x0000001, 0x800000, CRC(3cb57482) SHA1(dab15bc24391f9a5173de76af48b612fb9636ccf) )
+ ROM_LOAD16_BYTE( "266-c3.c3", 0x1000000, 0x800000, CRC(f1cc6ad0) SHA1(66c1cccc0332ffd2d3064f06330c41f95ca09ced) )
+ ROM_LOAD16_BYTE( "266-c4.c4", 0x1000001, 0x800000, CRC(45b806b7) SHA1(c2bb866fded53d62fad0fc88d89d5e7d4cb1894f) )
+ ROM_LOAD16_BYTE( "266-c5.c5", 0x2000000, 0x800000, CRC(9a15dd6b) SHA1(194a6973a7a9e3847efe1bdbaeaeb16e74aff2dd) )
+ ROM_LOAD16_BYTE( "266-c6.c6", 0x2000001, 0x800000, CRC(281cb939) SHA1(bdb7766cfde581ccfaee2be7fe48445f360a2301) )
+ ROM_LOAD16_BYTE( "266-c7.c7", 0x3000000, 0x800000, CRC(4b71f780) SHA1(d5611a6f6b730db58613b48f2b0174661ccfb7bb) )
+ ROM_LOAD16_BYTE( "266-c8.c8", 0x3000001, 0x800000, CRC(29873d33) SHA1(dc77f129ed49b8d40d0d4241feef3f6c2f19a987) )
+ROM_END
+
+/****************************************
+ ID-0267
+ . ??M-2670
+ NEO-MVS PROGBK2 (2000.3.21) (NEO-PCM2 SNK) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( pnyaa ) /* Encrypted Set */ /* MVS ONLY RELEASE */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "267-p1.p1", 0x000000, 0x100000, CRC(112fe2c0) SHA1(01420e051f0bdbd4f68ce306a3738161b96f8ba8) )
+ /* also found set with p1 and m1 on eprom with sticker; chip labels is PN 2.02 and M1 */
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "267-m1.m1", CRC(c7853ccd) SHA1(1b7a4c5093cf0fe3861ce44fd1d3b30c71ad0abe) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "267-v1.v1", 0x000000, 0x400000, CRC(e2e8e917) SHA1(7f412d55aebff3d38a225a88c632916295ab0584) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "267-c1.c1", 0x0000000, 0x800000, CRC(5eebee65) SHA1(7eb3eefdeb24e19831d0f51d4ea07a0292c25ab6) )
+ ROM_LOAD16_BYTE( "267-c2.c2", 0x0000001, 0x800000, CRC(2b67187b) SHA1(149c3efd3c444fd0d35a97fa2268102bf76be3ed) )
+ROM_END
+
+/****************************************
+ ID-0268
+ . NGM-2680
+ NEO-MVS PROGBK3S (2003.10.1) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ . NGH-2680
+ NEO-AEG PROGBK3S (2003.10.6) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( mslug5 ) /* Encrypted Set */ /* MVS VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1cr.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
+ ROM_LOAD32_WORD_SWAP( "268-p2cr.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+
+ROM_START( mslug5h ) /* Encrypted Set */ /* AES release of the game but is also found in later MVS carts */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1c.p1", 0x000000, 0x400000, CRC(3636690a) SHA1(e0da714b4bdc6efffe1250ded02ebddb3ab6d7b3) )
+ ROM_LOAD32_WORD_SWAP( "268-p2c.p2", 0x000002, 0x400000, CRC(8dfc47a2) SHA1(27d618cfbd0107a4d2a836797e967b39d2eb4851) )
+ /* also found AES set with p1 / p2 on maskrom and m1 on M27C4001 eprom with sticker; chip labels are 268-P1CR2, 268-P2CR2 and 268-M1 */
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+
+/****************************************
+ ID-0269
+ . NGM-2690
+ NEO-MVS PROGBK3R (2003.9.2) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ . NGH-2690
+ NEO-AEG PROGBK3R (2003.8.29) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( svc ) /* Encrypted Set */ /* MVS AND AES VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269-p1.p1", 0x000000, 0x400000, CRC(38e2005e) SHA1(1b902905916a30969282f1399a756e32ff069097) )
+ ROM_LOAD32_WORD_SWAP( "269-p2.p2", 0x000002, 0x400000, CRC(6d13797c) SHA1(3cb71a95cea6b006b44cac0f547df88aec0007b7) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "269-c1r.c1", 0x0000000, 0x800000, CRC(887b4068) SHA1(227cdcf7a10a415f1e3afe7ae97acc9afc2cc8e1) )
+ ROM_LOAD16_BYTE( "269-c2r.c2", 0x0000001, 0x800000, CRC(4e8903e4) SHA1(31daaa4fd6c23e8f0a8428931c513d97d2eee1bd) )
+ ROM_LOAD16_BYTE( "269-c3r.c3", 0x1000000, 0x800000, CRC(7d9c55b0) SHA1(1f94a948b3e3c31b3ff05518ef525031a3cb2c62) )
+ ROM_LOAD16_BYTE( "269-c4r.c4", 0x1000001, 0x800000, CRC(8acb5bb6) SHA1(2c27d6e309646d7b84da85f78c06e4aaa74e844b) )
+ ROM_LOAD16_BYTE( "269-c5r.c5", 0x2000000, 0x800000, CRC(097a4157) SHA1(54d839f55d27f68c704a94ea3c63c644ffc22ca4) )
+ ROM_LOAD16_BYTE( "269-c6r.c6", 0x2000001, 0x800000, CRC(e19df344) SHA1(20448add53ab25dd3a8f0b681131ad3b9c68acc9) )
+ ROM_LOAD16_BYTE( "269-c7r.c7", 0x3000000, 0x800000, CRC(d8f0340b) SHA1(43114af7557361a8903bb8cf8553f602946a9220) )
+ ROM_LOAD16_BYTE( "269-c8r.c8", 0x3000001, 0x800000, CRC(2570b71b) SHA1(99266e1c2ffcf324793fb5c55325fbc7e6265ac0) )
+ROM_END
+
+/****************************************
+ ID-0270
+ . NGM-2700
+ NEO-MVS PROGBK2R (2003.8.26) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ . NGH-2700
+ NEO-AEG PROGBK2S (2003.10.16) (NEO-PCM2 PLAYMORE) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( samsho5 ) /* Encrypted Set */ /* MVS VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270-p1.p1", 0x000000, 0x400000, CRC(4a2a09e6) SHA1(2644de02cdab8ccc605488a7c76b8c9cd1d5bcb9) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(df24a4ee76438e40c2f04a714175a7f85cacdfe0) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+ROM_START( samsho5h ) /* Encrypted Set, Alternate Set */ /* AES VERSION */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270-p1c.p1", 0x000000, 0x400000, CRC(bf956089) SHA1(c538289069bf338b9fa7ecc5c9143763dbb776a8) )
+ ROM_LOAD16_WORD_SWAP( "270-p2c.sp2", 0x400000, 0x400000, CRC(943a6b1d) SHA1(12bd02fc197456da6ee86f066086094cef0f4bf9) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+/****************************************
+ ID-0271
+ . NGM-2710
+ NEO-MVS PROGBK3S (2003.10.1) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ . NGH-2710
+ NEO-AEG PROGBK3S (2003.10.6) (NEO-PCM2 PLAYMORE) (NEO-PVC) / NEO-AEG CHAFIO (2003.7.24) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( kof2003 ) /* Encrypted Code + Sound + GFX Roms */ /* MVS VERSION */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1c.p1", 0x000000, 0x400000, CRC(530ecc14) SHA1(812cf7e9902af3f5e9e330b7c05c2171b139ad2b) )
+ ROM_LOAD32_WORD_SWAP( "271-p2c.p2", 0x000002, 0x400000, CRC(fd568da9) SHA1(46364906a1e81dc251117e91a1a7b43af1373ada) )
+ ROM_LOAD16_WORD_SWAP( "271-p3c.p3", 0x800000, 0x100000, CRC(aec5b4a9) SHA1(74087f785590eda5898ce146029818f86ced42b6) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1c.m1", CRC(f5515629) SHA1(7516bf1b0207a3c8d41dc30c478f8d8b1f71304b) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kof2003h ) /* Encrypted Code + Sound + GFX Roms */ /* AES VERSION */
+ /* All chip labels for this set are correct */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1k.p1", 0x000000, 0x400000, CRC(d0d0ae3e) SHA1(538d054ac50c91694fbbfefcce548b063713e14e) )
+ ROM_LOAD32_WORD_SWAP( "271-p2k.p2", 0x000002, 0x400000, CRC(fb3f79d9) SHA1(f253d10e732d6e23ae82d74ac9269d21f69ddb4d) )
+ ROM_LOAD16_WORD_SWAP( "271-p3k.p3", 0x800000, 0x100000, CRC(232702ad) SHA1(6045046027dac1cbd4cbd14b5c1ece522bc6197f) )
+
+ NEO_SFIX_MT_512K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "271-m1k.m1", CRC(48d9affe) SHA1(68f01560b91bbada39001ce01bdeeed5c9bb29f2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1k.c1", 0x0000000, 0x800000, CRC(efb9dd24) SHA1(1c6fe10fdbfc3306c3b7321c731f28ffdbfb15b8) )
+ ROM_LOAD16_BYTE( "271-c2k.c2", 0x0000001, 0x800000, CRC(3fb90447) SHA1(04d196de7c54c77bc75eba56d3060d46efc2d406) )
+ ROM_LOAD16_BYTE( "271-c3k.c3", 0x1000000, 0x800000, CRC(27950f28) SHA1(924f4de61c86b9efde6f1104b986886f1117055d) )
+ ROM_LOAD16_BYTE( "271-c4k.c4", 0x1000001, 0x800000, CRC(735177f8) SHA1(c95da1bc256995a7f44c9cc3312879ab6cbc15d6) )
+ ROM_LOAD16_BYTE( "271-c5k.c5", 0x2000000, 0x800000, CRC(a51b7c0f) SHA1(53dcf692b35b8d32abe5962ac799b8d641f04710) )
+ ROM_LOAD16_BYTE( "271-c6k.c6", 0x2000001, 0x800000, CRC(d5cae4e0) SHA1(248cd9eaac7a04d6b5d80c7534de90b057d566d7) )
+ ROM_LOAD16_BYTE( "271-c7k.c7", 0x3000000, 0x800000, CRC(e65ae2d0) SHA1(39744e10697d7ac539ecfcfa597e75597f321955) )
+ ROM_LOAD16_BYTE( "271-c8k.c8", 0x3000001, 0x800000, CRC(312f528c) SHA1(b4ad75f54f730ada6cb00112b74022250f055725) )
+ROM_END
+
+/****************************************
+ ID-0272
+ . NGM-2720
+ NEO-MVS PROGBK2S (2003.10.18) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+ . NGH-2720
+ NEO-AEG PROGBK2S (2003.10.16) (NEO-PCM2 PLAYMORE) / NEO-MVS CHAFIO (2003.7.24) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( samsh5sp ) /* Encrypted Set */ /* MVS VERSION */
+ /* Uncensored */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272-p1.p1", 0x000000, 0x400000, CRC(fb7a6bba) SHA1(f68c527208d8a55ca44b0caaa8ab66b3a0ffdfe5) )
+ ROM_LOAD16_WORD_SWAP( "272-p2.sp2", 0x400000, 0x400000, CRC(63492ea6) SHA1(6ba946acb62c63ed61a42fe72b7fff3828883bcc) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) )
+ ROM_LOAD16_BYTE( "272-c2.c2", 0x0000001, 0x800000, CRC(a3afda4f) SHA1(86b475fce0bc0aa04d34e31324e8c7c7c847df19) )
+ ROM_LOAD16_BYTE( "272-c3.c3", 0x1000000, 0x800000, CRC(8c3c7502) SHA1(6639020a8860d2400308e110d7277cbaf6eccc2a) )
+ ROM_LOAD16_BYTE( "272-c4.c4", 0x1000001, 0x800000, CRC(32d5e2e2) SHA1(2b5612017152afd7433aaf99951a084ef5ad6bf0) )
+ ROM_LOAD16_BYTE( "272-c5.c5", 0x2000000, 0x800000, CRC(6ce085bc) SHA1(0432b04a2265c649bba1bbd934dfb425c5d80fb1) )
+ ROM_LOAD16_BYTE( "272-c6.c6", 0x2000001, 0x800000, CRC(05c8dc8e) SHA1(da45c222893f25495a66bdb302f9b0b1de3c8ae0) )
+ ROM_LOAD16_BYTE( "272-c7.c7", 0x3000000, 0x800000, CRC(1417b742) SHA1(dfe35eb4bcd022d2f2dc544ccbbb77078f08c0aa) )
+ ROM_LOAD16_BYTE( "272-c8.c8", 0x3000001, 0x800000, CRC(d49773cd) SHA1(cd8cf3b762d381c1f8f12919579c84a7ef7efb3f) )
+ROM_END
+
+
+/* Some info about the 2nd AES release of Samurai Shodown 5 Special (samsh5sph):
+
+ The fixed carts have a small round neogeo sticker applied to the front side of the cart (top right near cart sticker).
+ SNK Playmore had authorized a recall of all Samurai Shodown V Special (Samurai Spirits 0 Special) home cartridges. This recall involved bug fixes
+ and the addition of fatalities. (The fatalities were originally removed at the last minute due to the Nagasaki incident, a murder caused by a child killing her classmate by knife.)
+ Bug fixes: Improvements on Voice, Back Ground Music, and Practice mode.
+ Fatalities: SNK PLAYMORE modified the game program by including the removed "Zetumei Ougi" in a modified version.
+ This new version does not show the complete fatalities, they are instead replaced by what SNK PLAYMORE refers to as "lessened fatalities".
+*/
+
+ROM_START( samsh5sph ) /* Encrypted Set */ /* AES VERSION, 2nd bugfix release */
+ /* Less censored */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272-p1ca.p1", 0x000000, 0x400000, CRC(c30a08dd) SHA1(66864954017c841d7ca8490112c3aa7a71a4da70) )
+ ROM_LOAD16_WORD_SWAP( "272-p2ca.sp2", 0x400000, 0x400000, CRC(bd64a518) SHA1(aa259a168930f106377d680db444535411b3bce0) )
+ /* Correct chip labels unknown */
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) )
+ ROM_LOAD16_BYTE( "272-c2.c2", 0x0000001, 0x800000, CRC(a3afda4f) SHA1(86b475fce0bc0aa04d34e31324e8c7c7c847df19) )
+ ROM_LOAD16_BYTE( "272-c3.c3", 0x1000000, 0x800000, CRC(8c3c7502) SHA1(6639020a8860d2400308e110d7277cbaf6eccc2a) )
+ ROM_LOAD16_BYTE( "272-c4.c4", 0x1000001, 0x800000, CRC(32d5e2e2) SHA1(2b5612017152afd7433aaf99951a084ef5ad6bf0) )
+ ROM_LOAD16_BYTE( "272-c5.c5", 0x2000000, 0x800000, CRC(6ce085bc) SHA1(0432b04a2265c649bba1bbd934dfb425c5d80fb1) )
+ ROM_LOAD16_BYTE( "272-c6.c6", 0x2000001, 0x800000, CRC(05c8dc8e) SHA1(da45c222893f25495a66bdb302f9b0b1de3c8ae0) )
+ ROM_LOAD16_BYTE( "272-c7.c7", 0x3000000, 0x800000, CRC(1417b742) SHA1(dfe35eb4bcd022d2f2dc544ccbbb77078f08c0aa) )
+ ROM_LOAD16_BYTE( "272-c8.c8", 0x3000001, 0x800000, CRC(d49773cd) SHA1(cd8cf3b762d381c1f8f12919579c84a7ef7efb3f) )
+ROM_END
+
+ROM_START( samsh5spho ) /* Encrypted Set */ /* AES VERSION, 1st release */
+ /* Censored */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272-p1c.p1", 0x000000, 0x400000, CRC(9291794d) SHA1(66588ff9b00ffad6508b03423548984e28a3209d) )
+ ROM_LOAD16_WORD_SWAP( "272-p2c.sp2", 0x400000, 0x400000, CRC(fa1a7dd8) SHA1(62443dad76d6c1e18f515d7d4ef8e1295a4b7f1d) )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) )
+ ROM_LOAD16_BYTE( "272-c2.c2", 0x0000001, 0x800000, CRC(a3afda4f) SHA1(86b475fce0bc0aa04d34e31324e8c7c7c847df19) )
+ ROM_LOAD16_BYTE( "272-c3.c3", 0x1000000, 0x800000, CRC(8c3c7502) SHA1(6639020a8860d2400308e110d7277cbaf6eccc2a) )
+ ROM_LOAD16_BYTE( "272-c4.c4", 0x1000001, 0x800000, CRC(32d5e2e2) SHA1(2b5612017152afd7433aaf99951a084ef5ad6bf0) )
+ ROM_LOAD16_BYTE( "272-c5.c5", 0x2000000, 0x800000, CRC(6ce085bc) SHA1(0432b04a2265c649bba1bbd934dfb425c5d80fb1) )
+ ROM_LOAD16_BYTE( "272-c6.c6", 0x2000001, 0x800000, CRC(05c8dc8e) SHA1(da45c222893f25495a66bdb302f9b0b1de3c8ae0) )
+ ROM_LOAD16_BYTE( "272-c7.c7", 0x3000000, 0x800000, CRC(1417b742) SHA1(dfe35eb4bcd022d2f2dc544ccbbb77078f08c0aa) )
+ ROM_LOAD16_BYTE( "272-c8.c8", 0x3000001, 0x800000, CRC(d49773cd) SHA1(cd8cf3b762d381c1f8f12919579c84a7ef7efb3f) )
+ROM_END
+
+
+/*************************************
+ *
+ * BrezzaSoft games, licensed?
+ *
+ *************************************/
+
+/****************************************
+ B-J-02
+ . ???-????
+ MVS PROGV (2000.11.17) / NEO-MVS CHAFIO (1999.6.14) (NEO-CMC 7050)
+****************************************/
+
+ROM_START( jockeygp ) /* MVS ONLY RELEASE */
+ /* Officially licensed? Cart has a holographic 'SNK' sticker applied */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "008-epr.p1", 0x000000, 0x100000, CRC(2fb7f388) SHA1(e3c9b03944b4c10cf5081caaf9c8be1f08c06493) )
+ /* P on eprom, correct chip label unknown */
+ ROM_FILL( 0x100000, 0x100000, 0xff )
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
+
+ ROM_REGION( 0x0200000, "ymsnd", 0 )
+ ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) )
+ ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) )
+ROM_END
+
+ROM_START( jockeygpa ) /* MVS ONLY RELEASE */
+ /* Officially licensed? Cart has a holographic 'SNK' sticker applied */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "008-epr_a.p1", 0x000000, 0x100000, CRC(b8f35532) SHA1(b46c96677f1bfe324b678112e9c614a20c550d51) )
+ /* P on eprom, correct chip label unknown */
+
+ NEO_SFIX_MT_128K
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "008-mg1.m1", CRC(d163c690) SHA1(1dfd04d20c5985037f07cd01000d0b04f3a8f4f4) )
+
+ ROM_REGION( 0x0200000, "ymsnd", 0 )
+ ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) )
+ ROM_LOAD16_BYTE( "008-c2.c2", 0x0000001, 0x800000, CRC(6289eef9) SHA1(a2ede77bb2468a2e1486d74745a22a5451026039) )
+ROM_END
+
+/****************************************
+ B-V-01
+ . ???-????
+ MVS PROGV (2000.11.17) / MVS CHAV (2000.10.26)
+****************************************/
+
+ROM_START( vliner ) /* MVS ONLY RELEASE */
+ /* Officially licensed? Cart has a holographic 'SNK' sticker applied */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "epr.p1", 0x000000, 0x080000, CRC(72a2c043) SHA1(b34bcc10ff33e4465126a6865fe8bf6b6a3d6cee) )
+ /* P on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "s-1.s1", CRC(972d8c31) SHA1(41f09ef28a3791668ea304c74b8b06c117a50e9a) )
+
+ NEO_BIOS_AUDIO_64K( "m-1.m1", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) )
+
+ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "c-1.c1", 0x000000, 0x80000, CRC(5118f7c0) SHA1(b6fb6e9cbb660580d98e00780ebf248c0995145a) )
+ ROM_LOAD16_BYTE( "c-2.c2", 0x000001, 0x80000, CRC(efe9b33e) SHA1(910c651aadce9bf59e51c338ceef62287756d2e8) )
+ROM_END
+
+ROM_START( vlinero ) /* MVS ONLY RELEASE */
+ /* Officially licensed? Cart has a holographic 'SNK' sticker applied */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "epr_54.p1", 0x000000, 0x080000, CRC(172efc18) SHA1(8ca739f8780a9e6fa19ac2c3e931d75871603f58) )
+ /* P on eprom, correct chip label unknown */
+
+ NEO_SFIX_128K( "s-1.s1", CRC(972d8c31) SHA1(41f09ef28a3791668ea304c74b8b06c117a50e9a) )
+
+ NEO_BIOS_AUDIO_64K( "m-1.m1", CRC(9b92b7d1) SHA1(2c9b777feb9a8e43fa1bd942aba5afe3b5427d94) )
+
+ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "c-1.c1", 0x000000, 0x80000, CRC(5118f7c0) SHA1(b6fb6e9cbb660580d98e00780ebf248c0995145a) )
+ ROM_LOAD16_BYTE( "c-2.c2", 0x000001, 0x80000, CRC(efe9b33e) SHA1(910c651aadce9bf59e51c338ceef62287756d2e8) )
+ROM_END
+
+
+/*************************************
+ *
+ * Vektorlogic games, unlicensed
+ *
+ *************************************/
+
+/****************************************
+ NSBP V1.0U
+ PROGRAM CART REVISION 2.0 COPYRIGHT VEKTORLOGIC (C) 2004 / GRAPHICS CART REVISION 1.2 COPYRIGHT VEKTORLOGIC (C) 2004
+****************************************/
+
+// this doesn't boot, protection like kof98?
+// you can force it to boot with a simple debugger trick, but then it resets when starting a game
+ROM_START( sbp ) /* Unlicensed, no official game ID # */ /* MVS ONLY VERSION */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "001-003-02a.u2", 0x000000, 0x080000, CRC(d054d264) SHA1(d1b4bc626d000e0679def0545940fa75035921ab) )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "001-003-02b.u2", 0x000000, 0x20000, CRC(2fd04b2a) SHA1(1acb446704ab56d0a33df7c48855aa8d00fd5a3c) )
+ ROM_IGNORE(0x20000)
+ ROM_IGNORE(0x20000)
+ ROM_IGNORE(0x20000)
+
+ NEO_BIOS_AUDIO_512K( "001-003-01b.u1", CRC(7b1f86f7) SHA1(15b6af7f9fbd0f1f6a1ecd912200ca8d0af2da2a) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "001-003-12a.u12", 0x000000, 0x400000, CRC(c96723b9) SHA1(52eec88550781d45f84efbf9b905d7e7912e96fa) )
+ ROM_LOAD( "001-003-13a.u13", 0x400000, 0x400000, CRC(08c339a5) SHA1(badc9510ae243ef2a7877977eb36efa81b1489fe) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "001-003-03b.u3", 0x000000, 0x200000, CRC(44791317) SHA1(9e773eb9aae5ee767213bd17348ff8a312e9cb16) )
+ ROM_LOAD16_BYTE( "001-003-04b.u4", 0x000001, 0x200000, CRC(a3a1c0df) SHA1(3b1e5be673f7cbb04199a805b0e0de93dad8cb8c) )
+ROM_END
+
+
+/*************************************
+ *
+ * Jamma PCB sets
+ *
+ *************************************/
+
+/****************************************
+ ID-2680
+ . MV-0 ????
+ NEO-MVH MVOBR 2003.8.4
+****************************************/
+
+ROM_START( ms5pcb ) /* Encrypted Set, JAMMA PCB */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "268-p1r.p1", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
+ ROM_LOAD32_WORD_SWAP( "268-p2r.p2", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
+
+ NEO_SFIX_MT_128K
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* this contains both an ASIA and JAPAN bios, HARDDIP3 on the PCB selects which to use */
+ ROM_LOAD16_WORD_SWAP( "sp-4x.sp1", 0x00000, 0x80000, CRC(b4590283) SHA1(47047ed5b6062babc0a0bebcc30e4b3f021e115a) )
+
+ /* Encrypted */
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "268-m1.m1", 0x00000, 0x80000, CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "268-v1.v1", 0x000000, 0x1000000, CRC(8458afe5) SHA1(62b4c6e7db763e9ff2697bbcdb43dc5a56b48c68) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD32_WORD( "268-c1.c1", 0x0000000, 0x1000000, BAD_DUMP CRC(802042e8) SHA1(ff028b65f60f0b51b255a380cc47ec19fdc0c0cf) )
+ ROM_LOAD32_WORD( "268-c2.c2", 0x0000002, 0x1000000, BAD_DUMP CRC(3b89fb9f) SHA1(cbc0729aae961f683b105ec3e1cda58b3f985abc) )
+ ROM_LOAD32_WORD( "268-c3.c3", 0x2000000, 0x1000000, BAD_DUMP CRC(0f3f59e3) SHA1(8cc751dc7d4e94864a9ce3346f23b8f011082fcc) )
+ ROM_LOAD32_WORD( "268-c4.c4", 0x2000002, 0x1000000, BAD_DUMP CRC(3ad8435a) SHA1(b333c8993c9b4c4ea59450ad0a3560e0b28056bc) )
+ROM_END
+
+/****************************************
+ ID-2690
+ . MV-0 ????
+ NEO-MVH MVO 2003.6.5
+****************************************/
+
+ROM_START( svcpcb ) /* Encrypted Set, JAMMA PCB */
+ ROM_REGION( 0x2000000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269-p1.p1", 0x000000, 0x2000000, CRC(432cfdfc) SHA1(19b40d32188a8bace6d2d570c6cf3d2f1e31e379) )
+
+ NEO_SFIX_MT_512K
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* this contains both an ASIA and JAPAN bios, HARDDIP3 on the PCB selects which to use */
+ ROM_LOAD16_WORD_SWAP( "sp-4x.sp1", 0x00000, 0x80000, CRC(b4590283) SHA1(47047ed5b6062babc0a0bebcc30e4b3f021e115a) )
+
+ /* Encrypted */
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "269-m1.m1", 0x00000, 0x80000, CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD( "269-c1.c1", 0x0000000, 0x2000000, CRC(1b608f9c) SHA1(4e70ad182da2ca18815bd3936efb04a06ebce01e) )
+ ROM_LOAD( "269-c2.c1", 0x2000000, 0x2000000, CRC(5a95f294) SHA1(6123cc7b20b494076185d27c2ffea910e124b195) )
+ROM_END
+
+/****************************************
+ ID-2690
+ . MV-0 ????
+ NEO-MVH MVOB 2003.7.9
+****************************************/
+
+ROM_START( svcpcba ) /* Encrypted Set, JAMMA PCB */
+ /* alt PCB version, this one has the same program roms as the MVS set, and different GFX / Sound rom arrangements */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269-p1a.p1", 0x000000, 0x400000, CRC(38e2005e) SHA1(1b902905916a30969282f1399a756e32ff069097) )
+ ROM_LOAD32_WORD_SWAP( "269-p2a.p1", 0x000002, 0x400000, CRC(6d13797c) SHA1(3cb71a95cea6b006b44cac0f547df88aec0007b7) )
+
+ NEO_SFIX_MT_512K
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* this contains both an ASIA and JAPAN bios, HARDDIP3 on the PCB selects which to use */
+ ROM_LOAD16_WORD_SWAP( "sp-4x.sp1", 0x00000, 0x80000, CRC(b4590283) SHA1(47047ed5b6062babc0a0bebcc30e4b3f021e115a) )
+
+ /* Encrypted */
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "269-m1.m1", 0x00000, 0x80000, CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "269-v1a.v1", 0x000000, 0x1000000, CRC(a6af4753) SHA1(ec4f61a526b707a7faec4653b773beb3bf3a17ba) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD32_WORD( "269-c1a.c1", 0x0000000, 0x1000000, CRC(e64d2b0c) SHA1(0714198c400e5c273181e4c6f906b49e35fef75d) )
+ ROM_LOAD32_WORD( "269-c2a.c2", 0x0000002, 0x1000000, CRC(249089c2) SHA1(1c0ca19e330efe1a74b2d35a1a9a8d61481e16a9) )
+ ROM_LOAD32_WORD( "269-c3a.c3", 0x2000000, 0x1000000, CRC(d32f2fab) SHA1(273d58cb3c9075075b1ca39a3b247a2cd545fbe7) )
+ ROM_LOAD32_WORD( "269-c4a.c4", 0x2000002, 0x1000000, CRC(bf77e878) SHA1(e6e76f8eed0d04ee9ad39bf38ce305930b10e2c1) )
+ROM_END
+
+/****************************************
+ ID-2710
+ . MV-0 ????
+ NEO-MVH MVOC 2003.11.3
+****************************************/
+
+ROM_START( kf2k3pcb ) /* Encrypted Set, JAMMA PCB */
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "271-p1.p1", 0x000000, 0x400000, CRC(b9da070c) SHA1(1a26325af142a4dd221c336061761468598c4634) )
+ ROM_LOAD32_WORD_SWAP( "271-p2.p2", 0x000002, 0x400000, CRC(da3118c4) SHA1(582e4f44f03276adecb7b2848d3b96bf6da57f1e) )
+ ROM_LOAD16_WORD_SWAP( "271-p3.p3", 0x800000, 0x100000, CRC(5cefd0d2) SHA1(cddc3164629fed4b6f715e12b109ad35d1009355) )
+
+ NEO_SFIX_MT(0x100000)
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "spj.sp1", 0x00000, 0x080000, CRC(148dd727) SHA1(2cf592a16c7157de02a989675d47965f2b3a44dd) ) // encrypted
+
+ /* Encrypted */
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "271-m1.m1", 0x00000, 0x80000, CRC(d6bcf2bc) SHA1(df78bc95990eb8e8f3638dde6e1876354df7fe84) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1.v1", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
+
+ ROM_REGION( 0x6000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD32_WORD( "271-c1.c1", 0x0000000, 0x1000000, CRC(f5ebb327) SHA1(e4f799a54b09adcca13b1b0cf95971a1f4291b61) )
+ ROM_LOAD32_WORD( "271-c2.c2", 0x0000002, 0x1000000, CRC(2be21620) SHA1(872c658f53bbc558e90f18d5db9cbaa82e748a6a) )
+ ROM_LOAD32_WORD( "271-c3.c3", 0x2000000, 0x1000000, CRC(ddded4ff) SHA1(ff7b356125bc9e6637b164f5e81b13eabeb8d804) )
+ ROM_LOAD32_WORD( "271-c4.c4", 0x2000002, 0x1000000, CRC(d85521e6) SHA1(62278fa8690972ed32aca07a4f7f97e7203d9f3a) )
+ ROM_LOAD32_WORD( "271-c5.c5", 0x4000000, 0x1000000, CRC(18aa3540) SHA1(15e0a8c4e0927b1f7eb9bee8f532acea6818d5eb) )
+ ROM_LOAD32_WORD( "271-c6.c6", 0x4000002, 0x1000000, CRC(1c40de87) SHA1(8d6425aed43ff6a96c88194e203df6a783286373) )
+ROM_END
+
+
+
+/*************************************
+ *
+ * Bootleg sets
+ *
+ *************************************/
+
+/*
+ About supported sets:
+
+ For many bootleg sets, only P's (program rom), M1 (sound driver) and S1 (text layer) roms were dumped.
+ For these sets it is assumed that the original V's (sound data) and C's (gfx data) are used.
+ This requires verification.
+
+*/
+
+
+/* Zintrick bootleg */
+
+/* This Zintrick set appears to be a bootleg made from the CD version, not a genuine
+ prototype the code is based on that of the NeoCD version with some minor patches,
+ for example the ADK SAMPLE TEST text that appears on the screen is actually a hacked
+ PROG LOAD ERROR message. The set is supported in order to distinguish the hacks from
+ a real prototype should one turn up. */
+
+ROM_START( zintrckb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "zin-p1.bin", 0x000000, 0x100000, CRC(06c8fca7) SHA1(b7bf38965c3d0db4d7a9684d14cac94a45b4a45b))
+
+ NEO_SFIX_128K( "zin-s1.bin", CRC(a7ab0e81) SHA1(f0649819b96cea79b05411e0b15c8edc677d79ba) )
+
+ NEO_BIOS_AUDIO_128K( "zin-m1.bin", CRC(fd9627ca) SHA1(b640c1f1ff466f734bb1cb5d7b589cb7e8a55346) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "zin-v1.bin", 0x000000, 0x200000, CRC(c09f74f1) SHA1(d0b56a780a6eba85ff092240b1f1cc6718f17c21) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) )
+ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) )
+ROM_END
+
+/* The King of Fighters '97 bootlegs */
+
+ROM_START( kof97pls )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kf97-p1p.bin", 0x000000, 0x100000, CRC(c01fda46) SHA1(bc6402f5082efc80a8936364c657165f19b49415) )
+ ROM_LOAD16_WORD_SWAP( "kf97-p2p.bin", 0x100000, 0x400000, CRC(5502b020) SHA1(37c48198d8b3798910a44075782cd1a20b687b4a) )
+
+ NEO_SFIX_128K( "kf97-s1p.bin", CRC(73254270) SHA1(8d06305f9d8890da1327356272b88bdd0dc089f5) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) )
+ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) )
+ ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) )
+ROM_END
+
+ROM_START( kof97oro )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "orochi-p1.bin", 0x0000000, 0x100000, CRC(6dcb2946) SHA1(3ccb3fdf3d32a75c7fcfefff5db1f3c75054731f) )
+ ROM_LOAD16_WORD_SWAP( "orochi-p21.bin", 0x0200000, 0x100000, CRC(6e1c4d8c) SHA1(f514638a599a8a582c5f4df72f6a957bab776b7e) )
+ ROM_CONTINUE( 0x100000, 0x100000 )
+ ROM_LOAD16_WORD_SWAP( "orochi-p29.bin", 0x0400000, 0x100000, CRC(4c7c0221) SHA1(fdd05927743cb12210b74768155bb3f59bff01b5) )
+ ROM_CONTINUE( 0x300000, 0x100000 )
+
+ NEO_SFIX_128K( "orochi-s1.bin", CRC(4ee2149a) SHA1(180a1a90021031eac1a643b769d9cdeda56518f5) )
+
+ NEO_BIOS_AUDIO_128K( "orochi-m1.bin", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "orochi-v1.bin", 0x000000, 0x0400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "orochi-v2.bin", 0x400000, 0x0400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "orochi-v3.bin", 0x800000, 0x0400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ // The C1 and C2 here are reconstructed but very likely to be correct.
+ ROM_LOAD16_BYTE( "orochi-c1.bin", 0x0000000, 0x1000000, BAD_DUMP CRC(f13e841c) SHA1(e24b3fb5f7e1c1f4752cad382c264f5f93e737a0) )
+ ROM_LOAD16_BYTE( "orochi-c2.bin", 0x0000001, 0x1000000, BAD_DUMP CRC(2db1f6d3) SHA1(13d957c04bd69f0db140e4633c39db4a9e44eab8) )
+ ROM_LOAD16_BYTE( "orochi-c51.bin", 0x2000000, 0x0200000, CRC(a90340cb) SHA1(97eaa89f0e860e2c591ca3a995fd910d8116347d) )
+ ROM_LOAD16_BYTE( "orochi-c61.bin", 0x2000001, 0x0200000, CRC(188e351a) SHA1(ab724250bc07ace0873fc825b798ace934260988) )
+ ROM_LOAD16_BYTE( "orochi-c52.bin", 0x2400000, 0x0200000, CRC(d4eec50a) SHA1(0930cce5346fbbd5c1524f9148d0577cbe634420) )
+ ROM_LOAD16_BYTE( "orochi-c62.bin", 0x2400001, 0x0200000, CRC(031b1ad5) SHA1(d47b3452953b553348be0a55473b863ce2872f6e) )
+ROM_END
+
+ROM_START( kog )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5232-p1.bin", 0x000000, 0x200000, CRC(d2413ec6) SHA1(c0bf409d1e714cba5fdc6f79e4c2aec805316634) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x200000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "5232-s1.bin", CRC(0bef69da) SHA1(80918586e694dce35c4dba796eb18abf6a070ebb) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5232-c1a.bin", 0x0000000, 0x800000, CRC(4eab9b0a) SHA1(a6f6b755215a3f41474e0a76b5463303a522c2d3) )
+ ROM_LOAD16_BYTE( "5232-c2a.bin", 0x0000001, 0x800000, CRC(697f8fd0) SHA1(5784464c2357ccef8e6e79b6298843fc3d13b39c) )
+ ROM_LOAD16_BYTE( "5232-c1b.bin", 0x1000000, 0x800000, CRC(1143fdf3) SHA1(9dc5fe9a3b7599380db62095880e2d6f237a41bd) )
+ ROM_LOAD16_BYTE( "5232-c2b.bin", 0x1000001, 0x800000, CRC(ea82cf8f) SHA1(3d9ab64b69cecd6b3950839ac2c6d151ad66dcf8) )
+ ROM_LOAD16_BYTE( "5232-c3.bin", 0x2000000, 0x400000, CRC(abd1be07) SHA1(857eb68bbee4538770bbfa77aaa540d61ab0abcd) )
+ ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) )
+ROM_END
+
+/* Shock Troopers - 2nd Squad bootleg */
+
+ROM_START( lans2004 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "lnsq-p1.bin", 0x000000, 0x200000, CRC(b40a879a) SHA1(379f3d44b0bae430b32157fd5f4018d77b243c58) )
+ ROM_LOAD16_WORD_SWAP( "lnsq-p21.bin", 0x200000, 0x200000, CRC(ecdb2d42) SHA1(0d930cd369dfbcab7778b144355e5f70874aa324) )
+ ROM_LOAD16_WORD_SWAP( "lnsq-p22.bin", 0x400000, 0x200000, CRC(fac5e2e7) SHA1(5cce7226c137da80c969df00e1cda41ef9c5082c) )
+
+ NEO_SFIX_128K( "lnsq-s1.bin", CRC(39e82897) SHA1(24a8c94dd7e70ecde8f90ea17f75b6b5d065704f) )
+
+ NEO_BIOS_AUDIO_128K( "246-m1.bin", CRC(d0604ad1) SHA1(fae3cd52a177eadd5f5775ace957cc0f8301e65d) )
+
+ ROM_REGION( 0xA00000, "ymsnd", 0 )
+ ROM_LOAD( "lnsq-v1.bin", 0x000000, 0x400000, CRC(4408ebc3) SHA1(e3f4d8a7e243a8cf48e97d91bbfec7829c0d9404) )
+ ROM_LOAD( "lnsq-v2.bin", 0x400000, 0x400000, CRC(3d953975) SHA1(6a4ab02ab3d4416a65343cf16815007cb273f19b) )
+ ROM_LOAD( "lnsq-v3.bin", 0x800000, 0x200000, CRC(437d1d8e) SHA1(95e015c21707b53ed7223eaa19f6cdcfb4d94f0c) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "lnsq-c1.bin", 0x0000000, 0x800000, CRC(b83de59f) SHA1(8cc060f9a57ab7d4238543b0bce5f5cd1d271d4f) )
+ ROM_LOAD16_BYTE( "lnsq-c2.bin", 0x0000001, 0x800000, CRC(e08969fd) SHA1(c192639d023cdad64a8f53dbcda02aa8cfb4168e) )
+ ROM_LOAD16_BYTE( "lnsq-c3.bin", 0x1000000, 0x800000, CRC(013f2cda) SHA1(6261111ce69dc23fbf97241131e5a6a49355d18c) )
+ ROM_LOAD16_BYTE( "lnsq-c4.bin", 0x1000001, 0x800000, CRC(d8c3a758) SHA1(d19ca3be06f9fb0cb1933b1eb3da318524c3145d) )
+ ROM_LOAD16_BYTE( "lnsq-c5.bin", 0x2000000, 0x800000, CRC(75500b82) SHA1(06d2afe94ea3eb3c4e523f593b8e709dd7c284a3) )
+ ROM_LOAD16_BYTE( "lnsq-c6.bin", 0x2000001, 0x800000, CRC(670ac13b) SHA1(f448a144caae51b69ea19e1f43940db135d1164a) )
+ROM_END
+
+/* Garou - Mark of the Wolves bootleg */
+
+ROM_START( garoubl ) /* bootleg of garoup */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "garou-p1.bin", 0x000000, 0x100000, CRC(fd446d59) SHA1(e37484673a935b2af76c84cd26977c751c0f8cff) )
+ ROM_LOAD16_WORD_SWAP( "garou-p2.bin", 0x100000, 0x400000, CRC(3fb10a84) SHA1(4e4a4f4cd7f0ad2520c938c64c8910e6f8805eaf) )
+
+ NEO_SFIX_128K( "garou-s1.bin", CRC(df720e33) SHA1(58d05002d4851682bd626241fa7b70f78f6f3bc8) )
+
+ NEO_BIOS_AUDIO_512K( "garou-m1.bin", CRC(7c51d002) SHA1(01ffba6cbc8da07804f7b21d8c71c39d64a1a4e2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "garou-v1.bin", 0x000000, 0x400000, CRC(98d736e4) SHA1(3edda9a1d45b0e38a85156d24fc8ff2f0011239b) )
+ ROM_LOAD( "garou-v2.bin", 0x400000, 0x400000, CRC(eb43c03f) SHA1(83c9c168b154e60a64f1033004b2d33e218bbb8b) )
+ ROM_LOAD( "garou-v3.bin", 0x800000, 0x400000, CRC(10a0f814) SHA1(e86def80d6fb2a38ebc9f3338d22f28c15ce85da) )
+ ROM_LOAD( "garou-v4.bin", 0xc00000, 0x400000, CRC(8918fdd3) SHA1(60ea2104a0f993341124728d8fde0e8e937c55ef) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "garou-c1.bin", 0x0000000, 0x1000000, CRC(e2ac83fa) SHA1(186f88a85d80efbb0371bd42cca152b6b59817fb) )
+ ROM_LOAD16_BYTE( "garou-c2.bin", 0x0000001, 0x1000000, CRC(7c344b24) SHA1(f8af62a917e0ce2bf8ae4f17736fdd84d55d0788) )
+ ROM_LOAD16_BYTE( "garou-c3.bin", 0x2000000, 0x1000000, CRC(d3aec5a6) SHA1(c1a584909a8a1519f676aa49351742b87c18276d) )
+ ROM_LOAD16_BYTE( "garou-c4.bin", 0x2000001, 0x1000000, CRC(e02a242d) SHA1(8a73826d14880303a7bea2a903e842c733178aca) )
+ROM_END
+
+/* Metal Slug 3 bootleg */
+
+ROM_START( mslug3b6 ) /* This "Metal Slug 6" is a hack/bootleg of Metal Slug 3, the real Metal Slug 6 is on Atomiswave Hardware */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "299-p1.bin", 0x000000, 0x200000, CRC(5f2fe228) SHA1(747775a2dfc0da87ad2ddd4f57ce5b2522f23fa5) )
+ ROM_LOAD16_WORD_SWAP( "299-p2.bin", 0x100000, 0x400000, CRC(193fa835) SHA1(fb1f26db7998b0bb6b1c8b92500c1596ec5dfc71) )
+
+ NEO_SFIX_128K( "299-s1.bin", CRC(6f8b9635) SHA1(86b0c8c0ccac913c6192ed6a96c35d4e1a5e8061) )
+
+ NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) )
+ ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) )
+ ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) )
+ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) )
+ ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) )
+ ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) )
+ ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) )
+ ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) )
+ ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) )
+ ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) )
+ ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) )
+ROM_END
+
+/* Nightmare in the Dark bootleg */
+
+ROM_START( nitdbl )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "nitd-p1.bin", 0x000000, 0x080000, CRC(1a05bd1b) SHA1(7bbddef842d50b0778711063af695b168a76ff61) )
+
+ NEO_SFIX_128K( "nitd-s1.bin", CRC(dd3bf47c) SHA1(881271caee6508b8be51bf1b59c8f1e58e08e551) )
+
+ /* Bootleg m1 is 128k, data is identical */
+ NEO_BIOS_AUDIO_512K( "260-m1.m1", CRC(6407c5e5) SHA1(d273e154cc905b63205a17a1a6d419cac3485a92) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "nitd-v1.bin", 0x000000, 0x200000, CRC(79008868) SHA1(90bd6aaefd37341297ab1f4ae7246e52facd87d0) )
+ ROM_LOAD( "nitd-v2.bin", 0x200000, 0x200000, CRC(728558f9) SHA1(309aa7c933c199b2e540a601b363e7af8744fe00) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "nitd-c1.bin", 0x000000, 0x200000, CRC(b4353190) SHA1(90d5352e243a05f5c2be4fa7475667bb56e78016) )
+ ROM_LOAD16_BYTE( "nitd-c2.bin", 0x000001, 0x200000, CRC(6e27511f) SHA1(1fc5cf7786ad0f0bc7b1623acabe605ad04af3c1) )
+ ROM_LOAD16_BYTE( "nitd-c3.bin", 0x400000, 0x200000, CRC(472cf075) SHA1(7cdd25019e37a3d127e68a4179c051881df19afa) )
+ ROM_LOAD16_BYTE( "nitd-c4.bin", 0x400001, 0x200000, CRC(4c3926e6) SHA1(7fc54a9886dbef911f7b226e3cd20081c535e989) )
+ROM_END
+
+/* The King of Fighters 2001 bootlegs */
+
+ROM_START( cthd2003 ) /* Protected hack/bootleg of kof2001 Phenixsoft */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1.bin", 0x000000, 0x100000, CRC(bb7602c1) SHA1(abf329a40f34c88f7325b255e3bc090db1edaca4) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ /* sound roms are identical to kof2001 */
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3sp ) /* Protected hack/bootleg of kof2001 Phenixsoft */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1sp.bin", 0x000000, 0x100000, CRC(ab5c4de0) SHA1(ca9a6bfd4c32d791ecabb34ccbf2cbf0e84f97d5) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX( 0x40000, "5003-s1sp.bin", CRC(6c355ab4) SHA1(71ac2bcd3dbda8402baecc56dabc2297b148a900) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ /* sound roms are identical to kof2001 */
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3sa ) /* Protected hack/bootleg of kof2001 Phenixsoft, alternate version */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1sa.bin", 0x000000, 0x100000, CRC(013a509d) SHA1(c61c9b777e6e062b5f4ad87cdb78e9ca05e9bfb9) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1sa.bin", CRC(4e1f7eae) SHA1(3302ad290804272447ccd2e8edd3ce968f043db1) )
+ /* S1 needs redump, correct? */
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ /* Original set has 2x64 mbit sound roms */
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+/* Metal Slug 4 bootleg */
+
+ROM_START( ms4plus )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ms4-p1p.bin", 0x000000, 0x100000, CRC(806a6e04) SHA1(df503772d607271ea51285154c9fd68e18b143ce) )
+ ROM_LOAD16_WORD_SWAP( "263-p2.sp2", 0x100000, 0x400000, CRC(fdb7aed8) SHA1(dbeaec38f44e58ffedba99e70fa1439c2bf0dfa3) )
+
+ NEO_SFIX_128K( "ms4-s1p.bin", CRC(07ff87ce) SHA1(96ddb439de2a26bf9869015d7fb19129d40f3fd9) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "263-m1.m1", CRC(46ac8228) SHA1(5aeea221050c98e4bb0f16489ce772bf1c80f787) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) )
+ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) )
+ ROM_LOAD16_BYTE( "263-c2.c2", 0x0000001, 0x800000, CRC(81df97f2) SHA1(2b74493b8ec8fd49216a627aeb3db493f76124e3) )
+ ROM_LOAD16_BYTE( "263-c3.c3", 0x1000000, 0x800000, CRC(1a343323) SHA1(bbbb5232bba538c277ce2ee02e2956ca2243b787) )
+ ROM_LOAD16_BYTE( "263-c4.c4", 0x1000001, 0x800000, CRC(942cfb44) SHA1(d9b46c71726383c4581fb042e63897e5a3c92d1b) )
+ ROM_LOAD16_BYTE( "263-c5.c5", 0x2000000, 0x800000, CRC(a748854f) SHA1(2611bbedf9b5d8e82c6b2c99b88f842c46434d41) )
+ ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) )
+ROM_END
+
+/* The King of Fighters 2002 bootlegs */
+
+ROM_START( kof2002b )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "265-p1.p1", 0x000000, 0x100000, CRC(9ede7323) SHA1(ad9d45498777fda9fa58e75781f48e09aee705a6) )
+ ROM_LOAD16_WORD_SWAP( "2k2-p2.bin", 0x100000, 0x400000, CRC(6dbee4df) SHA1(9a9646c81b233b44213c624b898c19f83e9a07f8) )
+
+ NEO_SFIX_128K( "2k2-s1.bin", CRC(2255f5bf) SHA1(8a82b3e9717df30b580b9d0bac0b403f8102a002) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "2k2-c1.bin", 0x0000000, 0x800000, CRC(f25d3d66) SHA1(eb1da3e171c126d91e851ce141840709a2f62f8a) )
+ ROM_LOAD16_BYTE( "2k2-c2.bin", 0x0000001, 0x800000, CRC(e3e66f1d) SHA1(af93e9e134816353d6187a53959c6e418b83ad8d) )
+ ROM_LOAD16_BYTE( "2k2-c3.bin", 0x1000000, 0x800000, CRC(8732fa30) SHA1(81c482b375c04bcfbbc69e3e2a2e9ab567c9bb78) )
+ ROM_LOAD16_BYTE( "2k2-c4.bin", 0x1000001, 0x800000, CRC(0989fd40) SHA1(355d6b2c528319e41ce89952c5cf5bcc47cd6de0) )
+ ROM_LOAD16_BYTE( "2k2-c5.bin", 0x2000000, 0x800000, CRC(60635cd2) SHA1(0cf2c54e003edfcdbed64e0570e6b800e7ed3c1b) )
+ ROM_LOAD16_BYTE( "2k2-c6.bin", 0x2000001, 0x800000, CRC(bd736824) SHA1(d897fc8248ace145fef57d8aa393eaebc4a1ccc4) )
+ ROM_LOAD16_BYTE( "2k2-c7.bin", 0x3000000, 0x800000, CRC(2da8d8cf) SHA1(ab8aa88b8e1baba88e5fc01d0f3cb55503b6c81a) )
+ ROM_LOAD16_BYTE( "2k2-c8.bin", 0x3000001, 0x800000, CRC(2048404a) SHA1(d6d0f049ffc196334825328e0472b04e04bf6695) )
+ROM_END
+
+ROM_START( kf2k2pls )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k2-p1p.bin", 0x000000, 0x100000, CRC(3ab03781) SHA1(86946c19f1c4d9ab5cde86688d698bf63118a39d) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_128K( "2k2-s1p.bin", CRC(595e0006) SHA1(ff086bdaa6f40e9ad963e1100a27f44618d684ed) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kf2k2pla )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k2-p1pa.bin", 0x000000, 0x100000, CRC(6a3a02f3) SHA1(c9973b64e9a87fa38dde233ee3e9a73ba085b013) )
+ ROM_LOAD16_WORD_SWAP( "265-p2.sp2", 0x100000, 0x400000, CRC(327266b8) SHA1(98f445cc0a94f8744d74bca71cb420277622b034) )
+
+ NEO_SFIX_128K( "2k2-s1pa.bin", CRC(1a3ed064) SHA1(9749bb55c750e6b65d651998c2649c5fb68db68e))
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kf2k2mp )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kf02m-p1.bin", 0x000000, 0x400000, CRC(ff7c6ec0) SHA1(704c14d671dcb4cfed44d9f978a289cb7dd9d065) )
+ ROM_LOAD16_WORD_SWAP( "kf02m-p2.bin", 0x400000, 0x400000, CRC(91584716) SHA1(90da863037cf775957fa154cd42536e221df5740) )
+
+ NEO_SFIX_128K( "kf02m-s1.bin", CRC(348d6f2c) SHA1(586da8a936ebbb71af324339a4b60ec91dfa0990) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kf2k2mp2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "k2k2m2p1.bin", 0x000000, 0x200000, CRC(1016806c) SHA1(a583b45e9c0d6f67b95c52e44444aabe88f68d97) )
+ ROM_LOAD16_WORD_SWAP( "k2k2m2p2.bin", 0x200000, 0x400000, CRC(432fdf53) SHA1(d7e542cd84d948162c60768e40ee4ed33d8e7913) )
+
+ NEO_SFIX_128K( "k2k2m2s1.bin", CRC(446e74c5) SHA1(efc2afb26578bad9eb21659c70eb0f827d6d1ef6) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "265-m1.m1", CRC(85aaa632) SHA1(744fba4ca3bc3a5873838af886efb97a8a316104) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) )
+ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) )
+ ROM_LOAD16_BYTE( "265-c2.c2", 0x0000001, 0x800000, CRC(adf18983) SHA1(150cd4a5e51e9df88688469d2ea7675c2cf3658a) )
+ ROM_LOAD16_BYTE( "265-c3.c3", 0x1000000, 0x800000, CRC(875e9fd7) SHA1(28f52d56192d48bbc5dc3c97abf456bd34a58cbd) )
+ ROM_LOAD16_BYTE( "265-c4.c4", 0x1000001, 0x800000, CRC(2da13947) SHA1(f8d79ec2c236aa3d3648a4f715676899602122c1) )
+ ROM_LOAD16_BYTE( "265-c5.c5", 0x2000000, 0x800000, CRC(61bd165d) SHA1(b3424db84bc683d858fb635bc42728f9cdd89caf) )
+ ROM_LOAD16_BYTE( "265-c6.c6", 0x2000001, 0x800000, CRC(03fdd1eb) SHA1(6155c7e802062f4eafa27e414c4e73ee59b868bf) )
+ ROM_LOAD16_BYTE( "265-c7.c7", 0x3000000, 0x800000, CRC(1a2749d8) SHA1(af7d9ec1d576209826fa568f676bbff92f6d6ddd) )
+ ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) )
+ROM_END
+
+ROM_START( kof10th )
+ ROM_REGION( 0x900000, "maincpu", 0 ) // Modified
+ ROM_LOAD16_WORD_SWAP( "kf10-p1.bin", 0x000000, 0x800000, CRC(b1fd0c43) SHA1(5f842a8a27be2d957fd4140d6431ae47154997bb) )
+
+ NEO_SFIX_MT(0x40000)
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) )
+ ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) )
+ROM_END
+
+ROM_START( kf10thep ) /* this is a hack of kof2002 much like the various korean hacks / bootlegs of games */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5008-p1.bin", 0x000000, 0x200000, CRC(bf5469ba) SHA1(f05236d8fffab5836c0d27becdeeb80def32ee49) )
+ ROM_LOAD16_WORD_SWAP( "5008-p2.bin", 0x200000, 0x400000, CRC(a649ec38) SHA1(5c63ed5e5c848940f587c966da4908d04cf1293c) )
+ ROM_LOAD16_WORD_SWAP( "5008-p3.bin", 0x600000, 0x200000, CRC(e629e13c) SHA1(6ebe080ce01c51064cb2f4d89315ba98a45ae727) )
+
+ NEO_SFIX_128K( "5008-s1.bin", CRC(92410064) SHA1(1fb800b46341858207d3b6961a760289fbec7faa) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+ //NEO_BIOS_AUDIO_128K( "5004-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "5008-c7b.bin", 0x3800000, 0x400000, CRC(33604ef0) SHA1(57deec23c81d5d673ce5992cef1f2567f1a2148e) )
+ ROM_LOAD16_BYTE( "5008-c8b.bin", 0x3800001, 0x400000, CRC(51f6a8f8) SHA1(9ef1cdbdd125a2b430346c22b59f36902312905f) )
+ROM_END
+
+ROM_START( kf2k5uni )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5006-p2a.bin", 0x000000, 0x400000, CRC(ced883a2) SHA1(f93db4d74ce0a73a3e9631966fee37be22470c89) )
+ ROM_LOAD16_WORD_SWAP( "5006-p1.bin", 0x400000, 0x400000, CRC(72c39c46) SHA1(4ba0657de20319c0bc30c7c3bba7d7331d0ce9a7) )
+
+ NEO_SFIX_128K( "5006-s1.bin", CRC(91f8c544) SHA1(9d16cafb9ca4bc54f31f7fd82b1be06ec8b11c79) )
+
+ NEO_BIOS_AUDIO_128K( "5006-m1.bin", CRC(9050bfe7) SHA1(765bf3d954f775231b7ef2504bb844cd0b29e3f7) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) )
+ ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) )
+ROM_END
+
+ROM_START( kof2k4se )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p2.bin", 0x000000, 0x080000, CRC(21a84084) SHA1(973e8a0bffa0e1f055803f663f81a8e03701802d) )
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p3.bin", 0x080000, 0x080000, CRC(febb484e) SHA1(4b1838795b84f22d578ad043641df0a7bf7d9774) )
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p1.bin", 0x100000, 0x400000, CRC(e6c50566) SHA1(cc6a3489a3bfeb4dcc65b6ddae0030f7e66fbabe) )
+
+ NEO_SFIX_128K( "k2k4s-s1.bin", CRC(a3c9b2d8) SHA1(1472d2cbd7bb73e84824ecf773924007e6117e77) )
+
+ NEO_BIOS_AUDIO_128K( "k2k4s-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) )
+ ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "k2k4s-c3.bin", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63ab83ddc5f688dc8165a7ff8d262df3fcd942a2) )
+ ROM_LOAD16_BYTE( "k2k4s-c7.bin", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2a414285e48aa948b5b0d4a9333bab083b5fb853) )
+ ROM_LOAD16_BYTE( "k2k4s-c2.bin", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(e01adc7a4633bc0951b9b4f09abc07d728e9a2d9) )
+ ROM_LOAD16_BYTE( "k2k4s-c6.bin", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5d28eea7b581e780b78f391a8179f1678ee0d9a5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+/* Matrimelee bootleg */
+
+ROM_START( matrimbl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "266-p1.p1", 0x000000, 0x100000, CRC(5d4c2dc7) SHA1(8d723b0d28ec344eef26009b361a2b97d300dd51) )
+ ROM_LOAD16_WORD_SWAP( "266-p2.sp2", 0x100000, 0x400000, CRC(a14b1906) SHA1(1daa14d73512f760ef569b06f9facb279437d1db) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_128K( "mart-m1.bin", CRC(3ea96ab1) SHA1(e5053c4312f658faed2a34e38325a22ef792d384) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "mart-v1.bin", 0x000000, 0x400000, CRC(352b0a07) SHA1(19f7cc12f3f6d0fda9c7449816c4c32367447897) )
+ ROM_LOAD16_WORD_SWAP( "mart-v2.bin", 0x400000, 0x400000, CRC(1e9bd59e) SHA1(0f754e780d0ebb815a92a45ad55f85f6d0181b70) )
+ ROM_LOAD( "mart-v3.bin", 0x800000, 0x400000, CRC(e8362fcc) SHA1(42d558fd80cabe22a1c09a1fa75741afbcf46b7c) )
+ ROM_LOAD16_WORD_SWAP( "mart-v4.bin", 0xc00000, 0x400000, CRC(c8c79b19) SHA1(9c7a5e694d68f37a27209e1400b60b6241a04cc7) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "mart-c1.bin", 0x0000000, 0x800000, CRC(a5595656) SHA1(d86281607f22e4f2001047eaeeda99cd673c508c) )
+ ROM_LOAD16_BYTE( "mart-c2.bin", 0x0000001, 0x800000, CRC(c5f7c300) SHA1(9ff5ffb750bd2e925667d84389192f92183e8677) )
+ ROM_LOAD16_BYTE( "mart-c3.bin", 0x1000000, 0x800000, CRC(574efd7d) SHA1(6cac303db705fe2800701ee51de9e9fca04e6e66) )
+ ROM_LOAD16_BYTE( "mart-c4.bin", 0x1000001, 0x800000, CRC(109d54d9) SHA1(22cb748b3b14317b90d9d9951297ada2bfc3a3f1) )
+ ROM_LOAD16_BYTE( "mart-c5.bin", 0x2000000, 0x800000, CRC(15c9e882) SHA1(1c9f1ccaed4fdd9d8f5cc9b6fcaca3c4e328e59e) )
+ ROM_LOAD16_BYTE( "mart-c6.bin", 0x2000001, 0x800000, CRC(77497b97) SHA1(c6481bea5a36f8210971fdcb4bfbe7ed93c769de) )
+ ROM_LOAD16_BYTE( "mart-c7.bin", 0x3000000, 0x800000, CRC(ab481bb6) SHA1(6b2d97c5505eeb28e300b075f37f0d69ef44463a) )
+ ROM_LOAD16_BYTE( "mart-c8.bin", 0x3000001, 0x800000, CRC(906cf267) SHA1(b0f2cf8887794d715f208751ddd1ed26b2c3ffdf) )
+ROM_END
+
+/* Metal Slug 5 bootleg */
+
+ROM_START( ms5plus )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ms5-p1p.bin", 0x000000, 0x100000, CRC(106b276f) SHA1(0e840df95f3813145e5043573483c7610d2d3e68) )
+ ROM_LOAD16_WORD_SWAP( "ms5-p2p.bin", 0x100000, 0x200000, CRC(d6a458e8) SHA1(c0a8bdae06d62859fb6734766ccc190eb2a809a4) )
+ ROM_LOAD16_WORD_SWAP( "ms5-p3p.bin", 0x300000, 0x200000, CRC(439ec031) SHA1(f0ad8f9be7d26bc504593c1321bd23c286a221f0) )
+
+ NEO_SFIX_128K("ms5-s1p.bin", CRC(21e04432) SHA1(10057a2aa487087f7143d1d69fdad978a6bef0f7) )
+
+ /* Encrypted */
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "268-m1.m1", CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
+ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) )
+ ROM_LOAD16_BYTE( "268-c2c.c2", 0x0000001, 0x800000, CRC(3560881b) SHA1(493d218c92290b4770024d6ee2917c4022753b07) )
+ ROM_LOAD16_BYTE( "268-c3c.c3", 0x1000000, 0x800000, CRC(3af955ea) SHA1(cf36b6ae9b0d12744b17cb7a928399214de894be) )
+ ROM_LOAD16_BYTE( "268-c4c.c4", 0x1000001, 0x800000, CRC(c329c373) SHA1(5073d4079958a0ef5426885af2c9e3178f37d5e0) )
+ ROM_LOAD16_BYTE( "268-c5c.c5", 0x2000000, 0x800000, CRC(959c8177) SHA1(889bda7c65d71172e7d89194d1269561888fe789) )
+ ROM_LOAD16_BYTE( "268-c6c.c6", 0x2000001, 0x800000, CRC(010a831b) SHA1(aec140661e3ae35d264df416478ba15188544d91) )
+ ROM_LOAD16_BYTE( "268-c7c.c7", 0x3000000, 0x800000, CRC(6d72a969) SHA1(968dd9a4d1209b770b9b85ea6532fa24d262a262) )
+ ROM_LOAD16_BYTE( "268-c8c.c8", 0x3000001, 0x800000, CRC(551d720e) SHA1(ebf69e334fcaba0fda6fd432fd0970283a365d12) )
+ROM_END
+
+/* Puzzle Bobble / Bust-A-Move (Neo-Geo) bootleg */
+
+ROM_START( pbobblenb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "u7", 0x000000, 0x080000, CRC(ac1e9ef3) SHA1(a2b125ee70869667431ab125bc29e768500802ad) )
+
+ NEO_SFIX_128K( "us1", CRC(9caae538) SHA1 (cf2d90a7c1a42107c0bb8b9a61397634286dbe0a) )
+
+ NEO_BIOS_AUDIO_128K( "um1", CRC(f424368a) SHA1 (5e5bbcaeb82bed2ee17df08f005ca20ad1030723) )
+
+ ROM_REGION( 0x380000, "ymsnd", 0 )
+ /* 0x000000-0x1fffff empty */
+ ROM_LOAD( "u8", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
+ ROM_LOAD( "u9", 0x300000, 0x080000, CRC(0a548948) SHA1 (e1e4afd17811cb60401c14fbcf0465035165f4fb) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "uc5", 0x000000, 0x80000, CRC(e89ad494) SHA1 (69c9ea415773af94ac44c48af05d55ada222b138) )
+ ROM_LOAD16_BYTE( "uc6", 0x000001, 0x80000, CRC(4b42d7eb) SHA1 (042ae50a528cea21cf07771d3915c57aa16fd5af) )
+ROM_END
+
+/* SNK vs. CAPCOM SVC CHAOS bootlegs */
+
+ROM_START( svcboot )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-p1.bin", 0x000000, 0x800000, CRC(0348f162) SHA1(c313351d68effd92aeb80ed320e4f8c26a3bb53e) )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "svc-s1.bin", 0x10000, 0x10000, CRC(70b44df1) SHA1(52ae3f264d7b33e94e770e6b2d0cf35a64e7dda4) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+ROM_START( svcplus )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-p1p.bin", 0x000000, 0x200000, CRC(a194d842) SHA1(72b7bfa34a97632b1aa003488e074d766a6c2f08) )
+ ROM_LOAD16_WORD_SWAP( "svc-p2p.bin", 0x200000, 0x200000, CRC(50c0e2b7) SHA1(97b396415ab0e692e43ddf371091e5a456712f0a) )
+ ROM_LOAD16_WORD_SWAP( "svc-p3p.bin", 0x400000, 0x200000, CRC(58cdc293) SHA1(3c4f2418ec513bcc13ed33a727de11dfb98f7525) )
+
+ NEO_SFIX_128K( "svc-s1p.bin", CRC(73344711) SHA1(04d84c4fe241b9135cd210f8ed8c725f595d11d2) )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+ROM_START( svcplusa )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-p1pl.bin", 0x000000, 0x200000, CRC(16b44144) SHA1(5eab530274b1b6f480a39a86c199da524cddfccc) )
+ ROM_LOAD16_WORD_SWAP( "svc-p2pl.bin", 0x200000, 0x400000, CRC(7231ace2) SHA1(d2f13ddd5d3ee29b4b9824e8663f7ee0241f30cf) )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "svc-s1pl.bin", 0x10000, 0x10000, CRC(ca3c735e) SHA1(aebd15253c90432a2e0a4c40f37110c1e2176ee4) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+ROM_START( svcsplus )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-p1sp.bin", 0x000000, 0x400000, CRC(2601902f) SHA1(202348a13c6480f7de37a3ee983823838822fc98) )
+ ROM_LOAD16_WORD_SWAP( "svc-p2sp.bin", 0x400000, 0x400000, CRC(0ca13305) SHA1(ac8fbca71b754acbcdd11802161a62ae1cf32d88) )
+
+ NEO_SFIX_128K( "svc-s1sp.bin", CRC(233d6439) SHA1(369024c7a2405c3144c14ac016c07c3dc0f44187) )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+/* Samurai Shodown 5 bootleg */
+
+ROM_START( samsho5b )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ssv-p2.bin", 0x000000, 0x400000, CRC(5023067f) SHA1(b1d682fa7d158f19664356a919da6572e8cfeee0) )
+ ROM_LOAD16_WORD_SWAP( "ssv-p1.bin", 0x400000, 0x400000, CRC(b6cbe386) SHA1(99c2407361116c2b2c5fe72df53e05c5f99163c1) )
+
+ NEO_SFIX_128K( "ssv-s1.bin", CRC(70f667d0) SHA1(6d7ce62bb77eb215cc22d6c3c677accfd740aa83) )
+
+ NEO_BIOS_AUDIO_128K( "ssv-m1.bin", CRC(18114fb1) SHA1(016dc2f328340f3637a9bff373a20973df29f6b8) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "ssv-v1.bin", 0x000000, 0x400000, CRC(a3609761) SHA1(6dce1dbfd228c739b3716ae1cf08fd7f925d8650) )
+ ROM_LOAD( "ssv-v2.bin", 0x400000, 0x400000, CRC(cbd6ebd5) SHA1(00211be3fa32035b0947ac65920ea8acae7bfae2) )
+ ROM_LOAD( "ssv-v3.bin", 0x800000, 0x400000, CRC(6f1c2703) SHA1(8015df3d788cb7926ebbcda64a96964fe102ba27) )
+ ROM_LOAD( "ssv-v4.bin", 0xc00000, 0x400000, CRC(5020c055) SHA1(bd1e68d1b0a47b0e2b365159e210048f8b22823a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "ssv-c1.bin", 0x0000000, 0x1000000, CRC(9c564a01) SHA1(99dc8900fd8f56ae04fff72b34ddcaa8abe4c1be) )
+ ROM_LOAD16_BYTE( "ssv-c2.bin", 0x0000001, 0x1000000, CRC(4b73b8da) SHA1(a8b626de74cf57bbd8c222e8e24c953c9e8680f4) )
+ ROM_LOAD16_BYTE( "ssv-c3.bin", 0x2000000, 0x1000000, CRC(029f9bb5) SHA1(6296c879aa0bbd22383ceeeac0326805cbc8b4ec) )
+ ROM_LOAD16_BYTE( "ssv-c4.bin", 0x2000001, 0x1000000, CRC(75722430) SHA1(30594c30a167e75463670249df7744755e39e75b) )
+ROM_END
+
+/* The King of Fighters 2003 bootlegs */
+
+ROM_START( kf2k3bl )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k3-p1.bin", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
+ ROM_LOAD16_WORD_SWAP( "2k3-p2.bin", 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "2k3-s1.bin", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kf2k3bla )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k3-p1bl.bin", 0x000000, 0x100000, CRC(4ea414dd) SHA1(c242c9709c20a8cde3ad562adbe640a5dd5abcf1) )
+ ROM_LOAD16_WORD_SWAP( "2k3-p3bl.bin", 0x100000, 0x400000, CRC(370acbff) SHA1(e72544de1c5e2e4f7478fc003caba9e33a306c19) )
+ ROM_LOAD16_WORD_SWAP( "2k3-p2bl.bin", 0x500000, 0x200000, CRC(9c04fc52) SHA1(f41b53c79e4209373ec68276fa5941c91424bb15) )
+
+ NEO_SFIX_128K( "2k3-s1.bin", CRC(482c48a5) SHA1(27e2f5295a9a838e112be28dafc111893a388a16) )
+
+ NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kf2k3pl )
+ ROM_REGION( 0x700000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k3-p1pl.bin", 0x000000, 0x100000, CRC(07b84112) SHA1(0b085a928a39ff9c0745a58bfa4ce6106b5f474a) )
+ ROM_LOAD16_WORD_SWAP( "2k3-p3bl.bin", 0x100000, 0x400000, CRC(370acbff) SHA1(e72544de1c5e2e4f7478fc003caba9e33a306c19) )
+ ROM_LOAD16_WORD_SWAP( "2k3-p2bl.bin", 0x500000, 0x200000, CRC(9c04fc52) SHA1(f41b53c79e4209373ec68276fa5941c91424bb15) )
+
+ NEO_SFIX_128K( "2k3-s1pl.bin", CRC(ad548a36) SHA1(7483dbe2d74a1bd1b4dc501e99e48a683416d08e) )
+
+ NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+ROM_START( kf2k3upl )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "2k3-p1up.bin", 0x000000, 0x800000, CRC(87294c01) SHA1(21420415a6b2ba1b43ecc1934270dc085d6bd7d9) )
+
+ NEO_SFIX_128K( "2k3-s1up.bin", CRC(e5708c0c) SHA1(5649446d3b0b1bd138b5a8b40b96a6d0f892f4d8) )
+
+ NEO_BIOS_AUDIO_128K( "2k3-m1.bin", CRC(3a4969ff) SHA1(2fc107a023a82053a8df63025829bcf12cee9610) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ /* Encrypted */
+ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) )
+ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ /* Encrypted */
+ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) )
+ ROM_LOAD16_BYTE( "271-c2c.c2", 0x0000001, 0x800000, CRC(d5362437) SHA1(66db36522dc09106388c707252df9fe1c88b4856) )
+ ROM_LOAD16_BYTE( "271-c3c.c3", 0x1000000, 0x800000, CRC(0a1fbeab) SHA1(9fe30d36ba98d00fda010832ff2f27783dd577c1) )
+ ROM_LOAD16_BYTE( "271-c4c.c4", 0x1000001, 0x800000, CRC(87b19a0c) SHA1(b72a8e7d9124ce859b5149bb4381ba481c161ea5) )
+ ROM_LOAD16_BYTE( "271-c5c.c5", 0x2000000, 0x800000, CRC(704ea371) SHA1(e75b80422f0d72eac826f8ffadf79efeccaab124) )
+ ROM_LOAD16_BYTE( "271-c6c.c6", 0x2000001, 0x800000, CRC(20a1164c) SHA1(c9843b37612a16fc95f6851793b1cfb5d49d811d) )
+ ROM_LOAD16_BYTE( "271-c7c.c7", 0x3000000, 0x800000, CRC(189aba7f) SHA1(7152195a57ad36b28290810fe87ed8c206262ba9) )
+ ROM_LOAD16_BYTE( "271-c8c.c8", 0x3000001, 0x800000, CRC(20ec4fdc) SHA1(deb5f7ec5a090e419b9d1a6a74877bee081198e2) )
+ROM_END
+
+
+ /* Unlicensed Prototypes */
+
+ROM_START( diggerma ) /* Unlicensed Prototype, no official game ID # */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "dig-p1.bin", 0x000000, 0x080000, CRC(eda433d7) SHA1(abb14c66777ab0fe4ac76a402e253a49df7178d8) )
+
+ NEO_SFIX_128K( "dig-s1.bin", CRC(9b3168f0) SHA1(9be8c625686a1482f7399e5a856cfe2fef25ec52) )
+
+ NEO_BIOS_AUDIO_128K( "dig-m1.bin", CRC(e777a234) SHA1(9f3974ac07859337bc0203f903c40ae3f60dc1fb) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "dig-v1.bin", 0x000000, 0x080000, CRC(ee15bda4) SHA1(fe2206728e6efd02d6302869a98b196eb19a17df) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "dig-c1.bin", 0x000000, 0x080000, CRC(3db0a4ed) SHA1(6214faa883d97ea05809b6af7e0c85a236a18a28) )
+ ROM_LOAD16_BYTE( "dig-c2.bin", 0x000001, 0x080000, CRC(3e632161) SHA1(83711c4286fb1d9f3f91414ac6e5fed36618033e) )
+ROM_END
+
+// MVS cart
+ROM_START( lasthope )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "NGDT-300-P1.bin", 0x000000, 0x100000, CRC(3776a88f) SHA1(ea8b669da06d7c6b5ff7fa97a195f56a9253a7a1) )
+
+ NEO_SFIX_64K( "NGDT-300-S1.bin", CRC(0c0ff9e6) SHA1(c87d1ea8731ac1e63ab960b8182dd1043bcc10bb) )
+
+ NEO_BIOS_AUDIO_128K( "NGDT-300-M1.bin", CRC(113c870f) SHA1(854425eb4be0d7fa088a6c3bf6078fdd011707f5) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "NGDT-300-V1.bin", 0x000000, 0x200000, CRC(b765bafe) SHA1(b2048c44089bf250c8dcfabb27c7981e9ee5002a) )
+ ROM_LOAD( "NGDT-300-V2.bin", 0x200000, 0x200000, CRC(9fd0d559) SHA1(09e70d5e1c6e172a33f48feb3e442515c34a8f3d) )
+ ROM_LOAD( "NGDT-300-V3.bin", 0x400000, 0x200000, CRC(6d5107e2) SHA1(4ba74836e3d0421a28af47d3d8341ac16af1d7d7) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "NGDT-300-C1.bin", 0x000000, 0x400000, CRC(53ef41b5) SHA1(a8f1fe546403b609e12f0df211c05d7ac479d98d) )
+ ROM_LOAD16_BYTE( "NGDT-300-C2.bin", 0x000001, 0x400000, CRC(f9b15ab3) SHA1(d8ff2f43686bfc8c2f7ead3ef445e51c15dfbf16) )
+ ROM_LOAD16_BYTE( "NGDT-300-C3.bin", 0x800000, 0x400000, CRC(50cc21cf) SHA1(0350aaef480c5fa12e68e540a4c974dbf5870add) )
+ ROM_LOAD16_BYTE( "NGDT-300-C4.bin", 0x800001, 0x400000, CRC(8486ad9e) SHA1(19a2a73c825687e0cb9fd62bde00db91b5409529))
+ROM_END
+
+
+/*************************************
+ *
+ * Game-specific inits
+ *
+ *************************************/
+
+ // macros allow code below to be copy+pasted into slot devices more easily
+#define cpuregion memregion("maincpu")->base()
+#define cpuregion_size memregion("maincpu")->bytes()
+#define spr_region memregion("sprites")->base()
+#define spr_region_size memregion("sprites")->bytes()
+#define fix_region memregion("fixed")->base()
+#define fix_region_size memregion("fixed")->bytes()
+#define ym_region memregion("ymsnd")->base()
+#define ym_region_size memregion("ymsnd")->bytes()
+#define audiocpu_region memregion("audiocpu")->base()
+#define audio_region_size memregion("audiocpu")->bytes()
+#define audiocrypt_region memregion("audiocrypt")->base()
+#define audiocrypt_region_size memregion("audiocrypt")->bytes()
+
+
+/*********************************************** SMA + CMC42 */
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof99)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->kof99_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->kof99_install_protection(m_maincpu,m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,garou)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->garou_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, GAROU_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->garou_install_protection(m_maincpu,m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,garouh)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->garouh_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, GAROU_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->garouh_install_protection(m_maincpu,m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslug3)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->mslug3_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->mslug3_install_protection(m_maincpu,m_banked_cart);
+}
+
+/*********************************************** SMA + CMC50 */
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2000)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sma_prot->kof2000_decrypt_68k(cpuregion);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2000_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->kof2000_install_protection(m_maincpu, m_banked_cart);
+}
+
+/*********************************************** CMC42 */
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslug3h)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ganryu)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, GANRYU_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,s1945p)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, S1945P_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,preisle2)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, PREISLE2_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,bangbead)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, BANGBEAD_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,nitd)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, NITD_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,sengoku3)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, SENGOKU3_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,zupapa)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, ZUPAPA_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof99k)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF99_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+/*********************************************** CMC50 */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2000n)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2000_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2001)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2001_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+}
+
+/*********************************************** CMC50 + PCM2 */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslug4)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1; /* USA violent content screen is wrong -- not a bug, confirmed on real hardware! */
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,rotd)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 16);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, ROTD_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,pnyaa)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 4);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, PNYAA_GFX_KEY );
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+/*********************************************** CMC50 + PCM2 + prg scramble */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2002)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,matrim)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 1);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MATRIM_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,samsho5)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->samsho5_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 4);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SAMSHO5_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,samsh5sp)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->samsh5sp_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 6);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SAMSHO5SP_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+/*********************************************** CMC50 + PCM2 + PVC */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslug5)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG5_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svc)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->svc_px_decrypt(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 3);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SVC_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2003)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->kof2003_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2003h)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->kof2003h_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+/*********************************************** misc carts */
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslugx)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_mslugx_prot->mslugx_install_protection(m_maincpu);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,fatfury2)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_fatfury2_prot->fatfury2_install_protection(m_maincpu,m_banked_cart);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof98)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof98_prot->kof98_decrypt_68k(cpuregion, cpuregion_size);
+ m_kof98_prot->install_kof98_protection(m_maincpu);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,sbp)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sbp_prot->sbp_install_protection(m_maincpu, cpuregion, cpuregion_size);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,jockeygp)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, JOCKEYGP_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+
+ /* install some extra RAM */
+ m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x201fff);
+
+// m_maincpu->space(AS_PROGRAM).install_read_port(0x280000, 0x280001, "IN5");
+// m_maincpu->space(AS_PROGRAM).install_read_port(0x2c0000, 0x2c0001, "IN6");
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,vliner)
+{
+ m_banked_cart->install_banks(machine(), m_maincpu, m_region_maincpu->base(), m_region_maincpu->bytes());
+
+ m_sprgen->m_fixed_layer_bank_type = 0;
+
+ m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x201fff);
+
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x300000, 0x300001, 0x01ff7e, "DSW");
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x280000, 0x280001, "IN5");
+ m_maincpu->space(AS_PROGRAM).install_read_port(0x2c0000, 0x2c0001, "IN6");
+
+}
+
+
+/*********************************************** bootlegs */
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,garoubl)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2);
+ m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,cthd2003)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_cthd2003(spr_region, spr_region_size, audiocpu_region,audio_region_size, fix_region, fix_region_size);
+ m_bootleg_prot->patch_cthd2003(m_maincpu,m_banked_cart, cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ct2k3sp)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_ct2k3sp(spr_region, spr_region_size, audiocpu_region,audio_region_size, fix_region, fix_region_size);
+ m_bootleg_prot->patch_cthd2003(m_maincpu,m_banked_cart, cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ct2k3sa)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_ct2k3sa(spr_region, spr_region_size, audiocpu_region,audio_region_size);
+ m_bootleg_prot->patch_ct2k3sa(cpuregion, cpuregion_size);
+}
+
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf10thep)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->kf10thep_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k5uni)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_kf2k5uni(cpuregion, cpuregion_size, audiocpu_region,audio_region_size, fix_region, fix_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2k4se)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_kof2k4se_68k(cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svcplus)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->svcplus_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size, 1);
+ m_bootleg_prot->svcplus_px_hack(cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svcplusa)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->svcplusa_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
+ m_bootleg_prot->svcplus_px_hack(cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,samsho5b)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->samsho5b_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->samsho5b_vx_decrypt(ym_region, ym_region_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof97oro)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->kof97oro_px_decode(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,lans2004)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->lans2004_decrypt_68k(cpuregion, cpuregion_size);
+ m_bootleg_prot->lans2004_vx_decrypt(ym_region, ym_region_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof10th)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_kof10th(cpuregion, cpuregion_size);
+ m_bootleg_prot->install_kof10th_protection(m_maincpu,m_banked_cart, cpuregion, cpuregion_size, fix_region, fix_region_size);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_kog_state,kog)
+{
+ DRIVER_INIT_CALL(neogeo);
+
+ m_kog_prot->kog_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size);
+ m_kog_prot->kog_install_protection(m_maincpu);
+}
+
+
+
+/*********************************************** bootlegs - can use original prot */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ms4plus)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG4_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k2pls)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+}
+
+/*********************************************** bootleg hybrid */
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,mslug3b6)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2);
+ m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kof2002b)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_bootleg_prot->kof2002b_gfx_decrypt(spr_region,0x4000000);
+ m_bootleg_prot->kof2002b_gfx_decrypt(fix_region,0x20000);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k2mp)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->kf2k2mp_decrypt(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k2mp2)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->kf2k2mp2_px_decrypt(cpuregion, cpuregion_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2002_GFX_KEY);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,matrimbl)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_bootleg_prot->matrimbl_decrypt(spr_region, spr_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size); /* required for text layer */
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ms5plus)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG5_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_bootleg_prot->install_ms5plus_protection(m_maincpu,m_banked_cart);
+}
+
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svcboot)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->svcboot_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svcsplus)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->svcsplus_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2);
+ m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size);
+ m_bootleg_prot->svcsplus_px_hack(cpuregion, cpuregion_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+}
+
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k3bl)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->kf2k3bl_install_protection(m_maincpu,m_banked_cart, cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k3pl)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_bootleg_prot->kf2k3pl_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1);
+ m_bootleg_prot->kf2k3pl_install_protection(m_maincpu,m_banked_cart, cpuregion, cpuregion_size);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k3upl)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_bootleg_prot->kf2k3upl_px_decrypt(cpuregion, cpuregion_size);
+ m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2);
+ m_bootleg_prot->kf2k3bl_install_protection(m_maincpu,m_banked_cart, cpuregion, cpuregion_size);
+}
+
+
+
+
+
+
+/*********************************************** non-carts */
+
+void neogeo_noslot_state::install_banked_bios()
+{
+ m_maincpu->space(AS_PROGRAM).install_read_bank(0xc00000, 0xc1ffff, 0x0e0000, "bankedbios");
+ membank("bankedbios")->configure_entries(0, 2, memregion("mainbios")->base(), 0x20000);
+ membank("bankedbios")->set_entry(1);
+}
+
+INPUT_CHANGED_MEMBER(neogeo_state::select_bios)
+{
+ membank("bankedbios")->set_entry(newval ? 0 : 1);
+}
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,ms5pcb)
+{
+ DRIVER_INIT_CALL(neogeo);
+
+ m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size);
+ m_sma_prot->svcpcb_gfx_decrypt(spr_region, spr_region_size);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, MSLUG5_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_sma_prot->svcpcb_s1data_decrypt(fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2);
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+ install_banked_bios();
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,svcpcb)
+{
+ DRIVER_INIT_CALL(neogeo);
+
+ m_pvc_prot->svc_px_decrypt(cpuregion, cpuregion_size);
+ m_sma_prot->svcpcb_gfx_decrypt(spr_region, spr_region_size);
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SVC_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->svcpcb_s1data_decrypt(fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 3);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+ install_banked_bios();
+}
+
+
+DRIVER_INIT_MEMBER(neogeo_noslot_state,kf2k3pcb)
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_pvc_prot->kf2k3pcb_decrypt_68k(cpuregion, cpuregion_size);
+ m_sma_prot->kf2k3pcb_gfx_decrypt(spr_region, spr_region_size);
+ m_sma_prot->kf2k3pcb_sp1_decrypt((uint16_t*)memregion("mainbios")->base());
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size);
+
+ /* extra little swap on the m1 - this must be performed AFTER the m1 decrypt
+ or the m1 checksum (used to generate the key) for decrypting the m1 is
+ incorrect */
+ {
+ uint8_t* rom = memregion("audiocpu")->base();
+ for (int i = 0; i < 0x90000; i++)
+ rom[i] = BITSWAP8(rom[i], 5, 6, 1, 4, 3, 0, 7, 2);
+ }
+
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, KOF2003_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->kf2k3pcb_decrypt_s1data(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5);
+ m_sprgen->m_fixed_layer_bank_type = 2;
+ m_pvc_prot->install_pvc_protection(m_maincpu,m_banked_cart);
+ m_maincpu->space(AS_PROGRAM).install_rom(0xc00000, 0xc7ffff, 0x080000, memregion("mainbios")->base()); // 512k bios
+}
+
+
+
+/*************************************
+ *
+ * Title catalog
+ * (source: http://neogeomuseum.snkplaymore.co.jp/english/catalogue/index.php)
+ *
+ *************************************
+
+ In 2010, SNK Playmore, the successor of SNK, released a title catalogue which lists the released
+ games (MVS/AES/CD) including their release dates in Japan. It is not 100% complete.
+ The included title catalogue is the english one.
+
+ Game Title Genre Publisher Date Released (in Japan)
+ =================================================================================================================================
+ NAM-1975 3D Action SNK MVS Cartridge:1990/04/26
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ MAHJONG KYORETSUDEN Mahjong SNK MVS Cartridge:1990/04/26
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ MAGICIAN LORD Action ADK MVS Cartridge:1990/04/26
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/10/31
+ BASEBALL STARS PROFESSIONAL Sports SNK MVS Cartridge:1990/04/26
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1995/04/21
+ TOP PLAYER'S GOLF Sports SNK MVS Cartridge:1990/05/23
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ NINJA COMBAT Action ADK MVS Cartridge:1990/07/24
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/10/31
+ RIDING HERO 3D Racing SNK MVS Cartridge:1990/07/24
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1995/05/26
+ THE SUPER SPY 3D Action SNK MVS Cartridge:1990/10/08
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ CYBER-LIP Action SNK MVS Cartridge:1990/11/07
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1995/04/21
+ PUZZLED Puzzle SNK MVS Cartridge:1990/11/20
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ LEAGUE BOWLING Sports SNK MVS Cartridge:1990/12/10
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ GHOST PILOTS Shooter SNK MVS Cartridge:1991/01/25
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1995/03/17
+ SENGOKU Action SNK MVS Cartridge:1991/02/12
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1995/03/17
+ KING OF THE MONSTERS Fighting SNK MVS Cartridge:1991/02/25
+ NEOGEO ROM-cart:1991/07/01
+ BLUE'S JOURNEY Action ADK MVS Cartridge:1991/03/14
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/10/31
+ ALPHA MISSION II Shooter SNK MVS Cartridge:1991/03/25
+ NEOGEO ROM-cart:1991/07/01
+ NEOGEO CD:1994/09/09
+ BURNING FIGHT Action SNK MVS Cartridge:1991/05/20
+ NEOGEO ROM-cart:1991/08/09
+ NEOGEO CD:1994/09/09
+ MINNASAN NO OKAGESAMA DESU Table Monolith MVS Cartridge:1991/07/25
+ NEOGEO ROM-cart:1991/07/21
+ CROSSED SWORDS Action ADK MVS Cartridge:1991/07/25
+ NEOGEO ROM-cart:1991/10/01
+ NEOGEO CD:1994/10/31
+ LEGEND OF SUCCESS JOE Action Wave MVS Cartridge:1991/07
+ NEOGEO ROM-cart:1991/08/30
+ QUIZ DAISUSA SEN: THE LAST COUNT DOWN Quiz SNK MVS Cartridge:1991/07
+ NEOGEO ROM-cart:1991/08/30
+ SUPER BASEBALL 2020 Sports SNK MVS Cartridge:1991/09/20
+ NEOGEO ROM-cart:1991/10/25
+ NEOGEO CD:1995/02/25
+ ROBO ARMY Action SNK MVS Cartridge:1991/10/30
+ NEOGEO ROM-cart:1991/12/20
+ NEOGEO CD:1995/04/21
+ THRASH RALLY Racing ADK MVS Cartridge:1991/11/08
+ NEOGEO ROM-cart:1991/12/20
+ NEOGEO CD:1994/10/31
+ EIGHT MAN Action SNK NEOGEO ROM-cart:1991/11/20
+ FATAL FURY Fighting SNK MVS Cartridge:1991/11/25
+ NEOGEO ROM-cart:1991/12/20
+ NEOGEO CD:1994/09/09
+ BAKATONO-SAMA MAHJONG MAN'YUKI Mahjong Monolith MVS Cartridge:1991/11
+ NEOGEO ROM-cart:1991/12/13
+ THRASH RALLY Racing ADK NEOGEO ROM-cart:1991/12/20
+ FOOTBALL FRENZY Sports SNK MVS Cartridge:1992/01/31
+ NEOGEO ROM-cart:1992/02/21
+ NEOGEO CD:1994/09/09
+ SOCCER BRAWL Sports SNK MVS Cartridge:1992/02/14
+ NEOGEO ROM-cart:1992/03/13
+ NEOGEO CD:1995/03/31
+ MUTATION NATION Action SNK MVS Cartridge:1992/03/16
+ NEOGEO ROM-cart:1992/04/17
+ NEOGEO CD:1995/02/25
+ LAST RESORT Shooter SNK MVS Cartridge:1992/03/23
+ NEOGEO ROM-cart:1992/04/24
+ NEOGEO CD:1994/09/09
+ QUIZ MEITANTEI NEO & GEO: QUIZ DAISOUSASEN PART 2 Quiz SNK MVS Cartridge:1992/03
+ NEOGEO ROM-cart:1991/04/24
+ BASEBALL STARS 2 Sports SNK MVS Cartridge:1992/04/15
+ NEOGEO ROM-cart:1992/04/28
+ NEOGEO CD:1994/09/09
+ NINJA COMMANDO Shooter ADK MVS Cartridge:1992/04/30
+ NEOGEO ROM-cart:1992/05/29
+ NEOGEO CD:1994/10/31
+ KING OF THE MONSTERS 2 Fighting SNK MVS Cartridge:1992/05/25
+ NEOGEO ROM-cart:1992/06/19
+ NEOGEO CD:1994/09/09
+ ANDRO DUNOS Shooter Visco MVS Cartridge:1992/06/15
+ NEOGEO ROM-cart:1992/07/17
+ WORLD HEROES Fighting ADK MVS Cartridge:1992/07/28
+ NEOGEO ROM-cart:1992/09/11
+ NEOGEO CD:1995/03/17
+ ART OF FIGHTING Fighting SNK MVS Cartridge:1992/09/24
+ NEOGEO ROM-cart:1992/12/11
+ NEOGEO CD:1994/09/09
+ VIEWPOINT Shooter Sammy MVS Cartridge:1992/11/20
+ NEOGEO ROM-cart:1992/12/11
+ NEOGEO CD:1995/02/25
+ FATAL FURY 2 Fighting SNK MVS Cartridge:1992/12/10
+ NEOGEO ROM-cart:1993/03/05
+ NEOGEO CD:1994/09/09
+ SUPER SIDEKICKS Sports SNK MVS Cartridge:1992/12/14
+ NEOGEO ROM-cart:1993/02/19
+ NEOGEO CD:1995/03/31
+ SENGOKU 2 Action SNK MVS Cartridge:1993/02/18
+ NEOGEO ROM-cart:1993/04/09
+ NEOGEO CD:1995/03/17
+ 3 COUNT BOUT Fighting SNK MVS Cartridge:1993/03/25
+ NEOGEO ROM-cart:1993/04/23
+ NEOGEO CD:1995/04/21
+ WORLD HEROES 2 Fighting ADK MVS Cartridge:1993/04/26
+ NEOGEO ROM-cart:1993/06/04
+ NEOGEO CD:1995/04/14
+ SAMURAI SHODOWN Fighting SNK MVS Cartridge:1993/07/07
+ NEOGEO ROM-cart:1993/08/11
+ NEOGEO CD:1994/09/09
+ FATAL FURY SPECIAL Fighting SNK MVS Cartridge:1993/09/16
+ NEOGEO ROM-cart:1993/12/22
+ NEOGEO CD:1994/09/09
+ SPINMASTER Sideview Action Data East MVS Cartridge:1993/12/16
+ NEOGEO ROM-cart:1994/02/18
+ ART OF FIGHTING 2 Fighting SNK MVS Cartridge:1994/02/03
+ NEOGEO ROM-cart:1994/03/11
+ NEOGEO CD:1994/09/09
+ WINDJAMMERS Sports Data East MVS Cartridge:1994/02/17
+ NEOGEO ROM-cart:1994/04/08
+ NEOGEO CD:1995/01/20
+ KARNOV'S REVENGE Fighting Data East MVS Cartridge:1994/03/17
+ NEOGEO ROM-cart:1994/04/28
+ NEOGEO CD:1994/12/22
+ SUPER SIDEKICKS 2 Sports SNK MVS Cartridge:1994/04/19
+ NEOGEO ROM-cart:1994/05/27
+ NEOGEO CD:1994/09/09
+ WORLD HEROES 2 JET Fighting ADK MVS Cartridge:1994/04/26
+ NEOGEO ROM-cart:1994/06/10
+ NEOGEO CD:1994/11/11
+ TOP HUNTER Action SNK MVS Cartridge:1994/05/18
+ NEOGEO ROM-cart:1994/06/24
+ NEOGEO CD:1994/09/29
+ GURURIN Puzzle Face MVS Cartridge:1994/05/25
+ FIGHT FEVER Fighting VICCOM MVS Cartridge:1994/06/28
+ JANSHIN DENSETSU: QUEST OF JONGMASTER Mahjong Aicom MVS Cartridge:1994/06/29
+ NEOGEO CD:1995/03/31
+ AERO FIGHTERS 2 Topview Shooter Video System MVS Cartridge:1994/07/18
+ NEOGEO ROM-cart:1994/08/26
+ NEOGEO CD:1994/09/29
+ AGGRESSORS OF DARK KOMBAT Fighting ADK MVS Cartridge:1994/07/26
+ NEOGEO ROM-cart:1994/08/26
+ NEOGEO CD:1995/01/13
+ THE KING OF FIGHTERS '94 Fighting SNK MVS Cartridge:1994/08/25
+ NEOGEO ROM-cart:1994/10/01
+ NEOGEO CD:1994/11/02
+ ZED BLADE Shooter NMK MVS Cartridge:1994/09/13
+ POWER SPIKES II Sports Video System MVS Cartridge:1994/10/19
+ NEOGEO CD:1995/03/18
+ SAMURAI SHODOWN II Fighting SNK MVS Cartridge:1994/10/28
+ NEOGEO ROM-cart:1994/12/02
+ NEOGEO CD:1994/12/15
+ STREET HOOP Sports Data East MVS Cartridge:1994/12/08
+ NEOGEO ROM-cart:1994/12/09
+ NEOGEO CD:1995/01/20
+ PUZZLE BOBBLE Puzzle TAITO MVS Cartridge:1994/12/21
+ NEOGEO CD:1995/05/02
+ SUPER VOLLEY '94 Sports TAITO MVS Cartridge:1994
+ BOMBERMAN: PANIC BOMBER Puzzle Eighting MVS Cartridge:1995/01/18
+ GALAXY FIGHT: UNIVERSAL WARRIORS Fighting Sunsoft MVS Cartridge:1995/01/24
+ NEOGEO ROM-cart:1995/02/25
+ NEOGEO CD:1995/04/21
+ QUIZ KING OF FIGHTERS Quiz Saurus MVS Cartridge:1995/02/01
+ NEOGEO ROM-cart:1995/03/10
+ NEOGEO CD:1995/04/07
+ DOUBLE DRAGON Fighting Technos MVS Cartridge:1995/03/03
+ NEOGEO ROM-cart:1995/03/31
+ NEOGEO CD:1995/06/02
+ SUPER SIDEKICKS 3 Sports SNK MVS Cartridge:1995/03/07
+ NEOGEO ROM-cart:1995/04/07
+ NEOGEO CD:1995/06/23
+ FATAL FURY 3 Fighting SNK MVS Cartridge:1995/03/27
+ NEOGEO ROM-cart:1995/04/21
+ NEOGEO CD:1995/04/28
+ SAVAGE REIGN Fighting SNK MVS Cartridge:1995/04/25
+ NEOGEO ROM-cart:1995/03/10
+ NEOGEO CD:1995/06/16
+ CROSSED SWORDS II Action ADK NEOGEO CD:1995/05/02
+ WORLD HEROES PERFECT Fighting ADK MVS Cartridge:1995/05/25
+ NEOGEO ROM-cart:1995/06/30
+ NEOGEO CD:1995/07/21
+ FAR EAST OF EDEN: KABUKI KLASH Fighting Hudson Soft MVS Cartridge:1995/06/20
+ NEOGEO ROM-cart:1995/07/28
+ NEOGEO CD:1995/11/24
+ THE KING OF FIGHTERS '95 Fighting SNK MVS Cartridge:1995/07/25
+ NEOGEO ROM-cart:1995/09/01
+ NEOGEO CD:1995/09/29
+ IDOL MAHJONG FINAL ROMANCE 2 Mahjong Video System NEOGEO CD:1995/08/25
+ PULSTAR Sidevi. Shooter Aicom MVS Cartridge:1995/08/28
+ NEOGEO ROM-cart:1995/09/29
+ NEOGEO CD:1995/10/27
+ VOLTAGE FIGHTER GOWCAIZER Fighting Technos MVS Cartridge:1995/09/18
+ NEOGEO ROM-cart:1995/10/20
+ NEOGEO CD:1995/11/24
+ STAKES WINNER Action Saurus MVS Cartridge:1995/09/27
+ NEOGEO ROM-cart:1995/10/27
+ NEOGEO CD:1996/03/22
+ SHOGI NO TATSUJIN - MASTER OF SYOUGI Japanese chess ADK MVS Cartridge:1995/09/28
+ NEOGEO ROM-cart:1995/10/13
+ NEOGEO CD:1995/10/20
+ AERO FIGHTERS 3 Topview Action Video System MVS Cartridge:1995/10/12
+ NEOGEO ROM-cart:1995/11/17
+ NEOGEO CD:1995/12/08
+ ADK WORLD Variety ADK NEOGEO CD:1995/11/10
+ SAMURAI SHODOWN III Fighting SNK MVS Cartridge:1995/11/15
+ NEOGEO ROM-cart:1995/12/01
+ NEOGEO CD:1995/12/29
+ CHIBI MARUKO-CHAN DELUXE QUIZ Variety Takara MVS Cartridge:1995/11/27
+ NEOGEO ROM-cart:1996/01/26
+ PUZZLE DE PON! Puzzle Visco MVS Cartridge:1995/11/28
+ REAL BOUT FATAL FURY Fighting SNK MVS Cartridge:1995/12/21
+ NEOGEO ROM-cart:1996/01/26
+ NEOGEO CD:1996/02/23
+ NEO-GEO CD SPECIAL Variety SNK NEOGEO CD:1995/12/22
+ NEO TURF MASTERS Sports Nazca MVS Cartridge:1996/01/29
+ NEOGEO ROM-cart:1996/03/01
+ NEOGEO CD:1996/05/03
+ ART OF FIGHTING 3 Fighting SNK MVS Cartridge:1996/03/12
+ NEOGEO ROM-cart:1996/04/26
+ NEOGEO CD:1996/06/14
+ MAGICAL DROP II Puzzle Data East MVS Cartridge:1996/03/21
+ NEOGEO ROM-cart:1996/04/19
+ NEOGEO CD:1996/05/24
+ OSHIDASHI JIN TRICK Puzzle ADK NEOGEO CD:1996/03/22
+ NEO DRIFT OUT Racing Visco MVS Cartridge:1996/03/28
+ NEOGEO CD:1996/07/26
+ METAL SLUG Action Nazca MVS Cartridge:1996/04/19
+ NEOGEO ROM-cart:1996/05/24
+ NEOGEO CD:1996/07/05
+ OVER TOP Racing ADK MVS Cartridge:1996/04/26
+ NEOGEO ROM-cart:1996/06/07
+ NEOGEO CD:1996/07/26
+ NINJA MASTER'S Fighting ADK MVS Cartridge:1996/05/27
+ NEOGEO ROM-cart:1996/06/28
+ NEOGEO CD:1996/09/27
+ RAGNAGARD Fighting Saurus MVS Cartridge:1996/06/13
+ NEOGEO ROM-cart:1996/07/26
+ NEOGEO CD:1996/08/23
+ FUTSAL Sports Saurus NEOGEO CD:1996/07/19
+ THE KING OF FIGHTERS '96 Fighting SNK MVS Cartridge:1996/07/30
+ NEOGEO ROM-cart:1996/09/27
+ NEOGEO CD:1996/10/25
+ KIZUNA ENCOUNTER SUPER TAG BATTLE Fighting SNK MVS Cartridge:1996/09/20
+ NEOGEO ROM-cart:1996/11/08
+ CHOUTETSU BURIKINGA Shooter Saurus NEOGEO CD:1996/09/20
+ STAKES WINNER 2 Real Jockey Act Saurus MVS Cartridge:1996/09/24
+ NEOGEO ROM-cart:1996/12/13
+ THE ULTIMATE 11 Sports SNK MVS Cartridge:1996/10/16
+ NEOGEO ROM-cart:1996/12/20
+ SAMURAI SHODOWN IV Fighting SNK MVS Cartridge:1996/10/25
+ NEOGEO ROM-cart:1996/11/29
+ NEOGEO CD:1996/12/27
+ WAKU WAKU 7 Fighting Sunsoft MVS Cartridge:1996/11/21
+ NEOGEO ROM-cart:1996/12/27
+ TWINKLE STAR SPRITES Shooter ADK MVS Cartridge:1996/11/25
+ NEOGEO ROM-cart:1997/01/31
+ NEOGEO CD:1997/02/21
+ BREAKERS Fighting Visco MVS Cartridge:1996/12/17
+ NEOGEO ROM-cart:1997/03/21
+ NEOGEO CD:1997/04/25
+ MONEY IDOL EXCHANGER Puzzle Face MVS Cartridge:1997/01/15
+ Real Bout FATAL FURY SPECIAL Fighting SNK MVS Cartridge:1997/01/28
+ NEOGEO ROM-cart:1997/02/28
+ NEOGEO CD:1997/03/03
+ THE KING OF FIGHTERS '96 NEOGEO COLLECTION Variety SNK NEOGEO CD:1997/02/14
+ MAGICAL DROP III Puzzle Data East MVS Cartridge:1997/02/25
+ NEOGEO ROM-cart:1997/04/25
+ NEO BOMBERMAN Action Hudson Soft MVS Cartridge:1997/05/01
+ NEO MR.DO! Action Visco MVS Cartridge:1997/06/26
+ SHINSETSU SAMURAI SHODOWN BUSHIDO RETSUDEN Role-playing SNK NEOGEO CD:1997/06/27
+ THE KING OF FIGHTERS '97 Fighting SNK MVS Cartridge:1997/07/28
+ NEOGEO ROM-cart:1997/09/25
+ NEOGEO CD:1997/10/30
+ UCCHAN NANCHAN NO HONO NO CHALLENGER ULTRA DENRYU IRAIRABOU Action Saurus MVS Cartridge:1997/08/25
+ SHOCK TROOPERS Shooter Saurus MVS Cartridge:1997/11/11
+ THE LAST BLADE Fighting SNK MVS Cartridge:1997/12/05
+ NEOGEO ROM-cart:1998/01/29
+ NEOGEO CD:1998/03/26
+ BLAZING STAR Shooter Yumekobo MVS Cartridge:1998/01/19
+ NEOGEO ROM-cart:1998/02/26
+ METAL SLUG 2 Action SNK MVS Cartridge:1998/02/23
+ NEOGEO ROM-cart:1998/04/02
+ NEOGEO CD:1998/06/25
+ REAL BOUT FATAL FURY 2 Fighting SNK MVS Cartridge:1998/03/20
+ NEOGEO ROM-cart:1998/04/29
+ NEOGEO CD:1998/07/23
+ NEOGEO CUP '98 Sports SNK MVS Cartridge:1998/05/28
+ NEOGEO ROM-cart:1998/07/30
+ BREAKERS REVENGE Fighting Visco MVS Cartridge:1998/07/03
+ NEOGEO ROM-cart:
+ THE KING OF FIGHTERS '98 Fighting SNK MVS Cartridge:1998/07/23
+ NEOGEO ROM-cart:1998/09/23
+ NEOGEO CD:1998/12/23
+ SHOCK TROOPERS 2nd Squad Action Shooter Saurus MVS Cartridge:1998/11/06
+ NEOGEO ROM-cart:1999/06/24
+ THE LAST BLADE 2 Fighting SNK MVS Cartridge:1998/11/25
+ NEOGEO ROM-cart:1999/01/28
+ NEOGEO CD:1999/02/27
+ FLIP SHOT Action Visco MVS Cartridge:1998/12/08
+ METAL SLUG X Action SNK MVS Cartridge:1999/03/19
+ NEOGEO ROM-cart:1999/05/27
+ CAPTAIN TOMADAY Shooter Visco MVS Cartridge:1999/05/27
+ THE KING OF FIGHTERS '99 Fighting SNK MVS Cartridge:1999/07/22
+ NEOGEO ROM-cart:1999/09/23
+ NEOGEO CD:1999/12/02
+ PREHISTORIC ISLE 2 Shooter Yumekobo MVS Cartridge:1999/09/27
+ GAROU: MARK OF THE WOLVES Fighting SNK MVS Cartridge:1999/11/26
+ NEOGEO ROM-cart:2000/02/25
+ STRIKERS 1945 PLUS Shooter Psikyo MVS Cartridge:1999/12/24
+ METAL SLUG 3 Action Shooter SNK MVS Cartridge:2000/03/23
+ NEOGEO ROM-cart:2000/06/01
+ THE KING OF FIGHTERS 2000 Fighting SNK MVS Cartridge:2000/07/26
+ NEOGEO ROM-cart:2000/12/21
+ NIGHTMARE IN THE DARK Horror Action Gavaking MVS Cartridge:2001
+ ZUPAPA! Comical Action Video System MVS Cartridge:2001
+ SENGOKU 3 Action SNK PLAYMORE MVS Cartridge:2001/07/18
+ NEOGEO ROM-cart:2001/10/25
+ THE KING OF FIGHTERS 2001 Fighting SNK PLAYMORE MVS Cartridge:2001/11/15
+ NEOGEO ROM-cart:2002/03/14
+ METAL SLUG 4 Action Shooter SNK PLAYMORE MVS Cartridge:2002/03/27
+ NEOGEO ROM-cart:2002/06/13
+ RAGE OF THE DRAGONS Fighting Evoga MVS Cartridge:2002/06/06
+ NEOGEO ROM-cart:2002/09/26
+ THE KING OF FIGHTERS 2002 Fighting SNK PLAYMORE MVS Cartridge:2002/10/10
+ NEOGEO ROM-cart:2002/12/19
+ POWER INSTINCT MATRIMELEE Fighting ATLUS/NOISE FA. MVS Cartridge:2003/03/20
+ NEOGEO ROM-cart:2003/05/29
+ SNK VS. CAPCOM: SVC CHAOS Fighting SNK PLAYMORE MV-0:2003/07/24
+ NEOGEO ROM-cart:2003/11/13
+ SAMURAI SHODOWN V Fighting SNK P/Yuki Ent MVS Cartridge:2003/10/10
+ NEOGEO ROM-cart:2003/12/11
+ METAL SLUG 5 Action Shooter SNK PLAYMORE MV-0:2003/11/14
+ NEOGEO ROM-cart:2004/02/19
+ THE KING OF FIGHTERS 2003 Fighting SNK PLAYMORE MV-0:2003/12/12
+ NEOGEO ROM-cart:2004/03/18
+ POCHI & NYAA Puzzle Aiky MVS Cartridge:2003/12/24
+ SAMURAI SHODOWN V SPECIAL Fighting SNK P/Yuki Ent MVS Cartridge:2004/04/22
+ NEOGEO ROM-cart:2004/07/15
+****************************************************************************/
+
+/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR */
+/* SNK */
+GAME( 1990, nam1975, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "NAM-1975 (NGM-001)(NGH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bstars, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (NGM-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bstarsh, bstars, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (NGH-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, tpgolf, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Top Player's Golf (NGM-003)(NGH-003)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mahretsu, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Mahjong Kyo Retsuden (NGM-004)(NGH-004)", MACHINE_SUPPORTS_SAVE ) // does not support mahjong panel in MVS mode
+GAME( 1990, ridhero, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Riding Hero (NGM-006)(NGH-006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ridheroh, ridhero, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Riding Hero (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, alpham2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (NGM-007)(NGH-007)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, alpham2p, alpham2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cyberlip, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Cyber-Lip (NGM-010)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, superspy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Super Spy (NGM-011)(NGH-011)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutnat, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Mutation Nation (NGM-014)(NGH-014)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kotm, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "King of the Monsters (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kotmh, kotm, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "King of the Monsters (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sengoku, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGM-017)(NGH-017)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sengokuh, sengoku, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku / Sengoku Denshou (NGH-017)(US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningf, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Burning Fight (NGM-018)(NGH-018)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfh, burningf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Burning Fight (NGH-018)(US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, burningfp, burningf, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Burning Fight (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, lbowling, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "League Bowling (NGM-019)(NGH-019)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilots, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Ghost Pilots (NGM-020)(NGH-020)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gpilotsh, gpilots, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Ghost Pilots (NGH-020)(US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, joyjoy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Puzzled / Joy Joy Kid (NGM-021)(NGH-021)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, quizdais, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (NGM-023)(NGH-023)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, quizdaisk, quizdais, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Quiz Daisousa Sen - The Last Count Down (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresort, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Last Resort", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, lresortp, lresort, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Last Resort (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, eightman, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "Eight Man (NGM-025)(NGH-025)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, legendos, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Legend of Success Joe / Ashita no Joe Densetsu", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bba, 2020bb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 2020bbh, 2020bb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, socbrawl, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Soccer Brawl (NGM-031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, socbrawlh, socbrawl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Soccer Brawl (NGH-031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, fatfury1, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai (NGM-033)(NGH-033)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, roboarmy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Robo Army", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, fbfrenzy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Football Frenzy (NGM-034)(NGH-034)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, kotm2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (NGM-039)(NGH-039)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, kotm2p, kotm2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "King of the Monsters 2 - The Next Thing (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, sengoku2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku 2 / Sengoku Denshou 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, bstars2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, quizdai2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042)(NGH-042)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, 3countb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "3 Count Bout / Fire Suplex (NGM-043)(NGH-043)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, aof, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting / Ryuuko no Ken (NGM-044)(NGH-044)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samsho, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGM-045)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samshoh, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown / Samurai Spirits (NGH-045)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tophuntr, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGM-046)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tophuntrh, tophuntr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Top Hunter - Roddy & Cathy (NGH-046)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, fatfury2, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, fatfury2, ROT0, "SNK", "Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047)(NGH-047)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ssideki, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, fatfury2, ROT0, "SNK", "Super Sidekicks / Tokuten Ou", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kof94, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '94 (NGM-055)(NGH-055)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aof2a, aof2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfursp, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (set 1)(NGM-058)(NGH-058)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfurspa, fatfursp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fatal Fury Special / Garou Densetsu Special (set 2)(NGM-058)(NGH-058)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, savagere, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Savage Reign / Fu'un Mokushiroku - kakutou sousei", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssideki2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - real fight football (NGM-061)(NGH-061)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown II / Shin Samurai Spirits - Haohmaru jigokuhen (NGM-063)(NGH-063)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2k, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II)", MACHINE_SUPPORTS_SAVE ) // official or hack?
+GAME( 1995, fatfury3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069)(NGH-069)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, ssideki3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - eikou e no michi", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '95 (NGM-084)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95a, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '95 (NGM-084), alternate board", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kof95h, kof95, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '95 (NGH-084)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3h, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fswords, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Fighters Swords (Korean release of Samurai Shodown III)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rbff1, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095)(NGH-095)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rbff1a, rbff1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, aof3k, aof3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Art of Fighting 3 - The Path of the Warrior (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
+GAME( 1996, kof96, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '96 (NGM-214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kof96h, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '96 (NGH-214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ssideki4, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kizuna, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, kizuna4p, kizuna, neogeo_kiz4p, kizuna4p, neogeo_state, neogeo, ROT0, "SNK", "Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222)(NGH-222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4k, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspec, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspeck, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '97 (NGM-2320)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97h, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '97 (NGH-2320)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97k, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '97 (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97pls, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "The King of Fighters '97 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kof97oro, kof97, neogeo_noslot, neogeo, neogeo_noslot_state, kof97oro, ROT0, "bootleg", "The King of Fighters '97 Oroshi Plus 2003 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, kog, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "bootleg", "King of Gladiator (The King of Fighters '97 bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // protected bootleg
+GAME( 1997, lastblad, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lastbladh, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lastsold, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Last Soldier (Korean release of The Last Blade)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, irrmaze, neogeo, neogeo_imaze, irrmaze, neogeo_state, neogeo, ROT0, "SNK / Saurus", "The Irritating Maze / Ultra Denryu Iraira Bou", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGM-2400)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2h, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGH-2400)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2k, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Real Bout Fatal Fury 2 - The Newcomers (Korean release)", MACHINE_SUPPORTS_SAVE ) // no Japanese title / mode
+GAME( 1998, mslug2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Metal Slug 2 - Super Vehicle-001/II (NGM-2410)(NGH-2410)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98a, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420, alternate board)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98k, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98ka, kof98, neogeo_noslot, neogeo, neogeo_noslot_state, kof98, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, kof98h, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGH-2420)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lastbld2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430)(NGH-2430)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, neocup98, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Neo-Geo Cup '98 - The Road to the Victory", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mslugx, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "SNK", "Metal Slug X - Super Vehicle-001 (NGM-2500)(NGH-2500)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kof99, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof99, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGM-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, kof99h, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (NGH-2510)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX, crashes going into attract demo */
+GAME( 1999, kof99e, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (earlier)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, kof99k, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (Korean release)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 1999, kof99p, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "The King of Fighters '99 - Millennium Battle (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garou, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, garou, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, garouh, garou, neogeo_noslot, neogeo, neogeo_noslot_state, garouh, ROT0, "SNK", "Garou - Mark of the Wolves (NGM-2530)(NGH-2530)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 1999, garoup, garou, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Garou - Mark of the Wolves (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoubl, garou, neogeo_noslot, neogeo, neogeo_noslot_state, garoubl, ROT0, "bootleg", "Garou - Mark of the Wolves (bootleg)", MACHINE_SUPPORTS_SAVE ) /* Bootleg of garoup */
+GAME( 2000, mslug3, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, mslug3, ROT0, "SNK", "Metal Slug 3 (NGM-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 2000, mslug3h, mslug3, neogeo_noslot, neogeo, neogeo_noslot_state, mslug3h, ROT0, "SNK", "Metal Slug 3 (NGH-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2000, mslug3b6, mslug3, neogeo_noslot, neogeo, neogeo_noslot_state, mslug3b6, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.c ;-) */
+GAME( 2000, kof2000, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof2000, ROT0, "SNK", "The King of Fighters 2000 (NGM-2570) (NGH-2570)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
+GAME( 2000, kof2000n, kof2000, neogeo_noslot, neogeo, neogeo_noslot_state, kof2000n, ROT0, "SNK", "The King of Fighters 2000 (not encrypted)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, zupapa, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, zupapa, ROT0, "SNK", "Zupapa!" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, sengoku3, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Noise Factory / SNK", "Sengoku 3 / Sengoku Densho 2001" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, kof2001, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof2001, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGM-262?)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, kof2001h, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, kof2001, ROT0, "Eolith / SNK", "The King of Fighters 2001 (NGH-2621)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2003, cthd2003, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
+GAME( 2003, ct2k3sp, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, ct2k3sp, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Protected Hack / Bootleg of kof2001 */
+GAME( 2003, ct2k3sa, kof2001, neogeo_noslot, neogeo, neogeo_noslot_state, ct2k3sa, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 Super Plus alternate (The King of Fighters 2001 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2001 */
+GAME( 2002, kof2002, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof2002, ROT0, "Eolith / Playmore", "The King of Fighters 2002 (NGM-2650)(NGH-2650)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kof2002b, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2002b, ROT0, "bootleg", "The King of Fighters 2002 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, kf2k2pls, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k2pls, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 1)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2pla, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k2pls, ROT0, "bootleg", "The King of Fighters 2002 Plus (bootleg set 2)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2mp, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k2mp, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kf2k2mp2, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k2mp2, ROT0, "bootleg", "The King of Fighters 2002 Magic Plus II (bootleg)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2002, kof10th, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof10th, ROT0, "bootleg", "The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2005, kf10thep, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf10thep, ROT0, "bootleg", "The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2004, kf2k5uni, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k5uni, ROT0, "bootleg", "The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) // fake SNK copyright
+GAME( 2004, kof2k4se, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "bootleg", "The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg)", MACHINE_SUPPORTS_SAVE ) /* Hack / Bootleg of kof2002 */
+GAME( 2003, mslug5, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, mslug5, ROT0, "SNK Playmore", "Metal Slug 5 (NGM-2680)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, mslug5h, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, mslug5, ROT0, "SNK Playmore", "Metal Slug 5 (NGH-2680)", MACHINE_SUPPORTS_SAVE ) /* Also found in later MVS carts */
+GAME( 2003, ms5pcb, 0, neogeo_noslot, dualbios, neogeo_noslot_state, ms5pcb, ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ms5plus, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, ms5plus, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcpcb, 0, neogeo_noslot, dualbios, neogeo_noslot_state, svcpcb, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1)", MACHINE_SUPPORTS_SAVE ) // not a clone of neogeo because it's NOT a neogeo cart.
+GAME( 2003, svcpcba, svcpcb, neogeo_noslot, dualbios, neogeo_noslot_state, svcpcb, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code */
+GAME( 2003, svc, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "SNK Playmore", "SNK vs. Capcom - SVC Chaos (NGM-2690)(NGH-2690)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcboot, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcboot, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplus, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcplus, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusa, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcplusa, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcsplus, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcsplus, ROT0, "bootleg", "SNK vs. Capcom - SVC Chaos Super Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, samsho5, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5h, samsho5, neogeo_noslot, neogeo, neogeo_noslot_state, samsho5, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V / Samurai Spirits Zero (NGH-2700)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5b, samsho5, neogeo_noslot, neogeo, neogeo_noslot_state, samsho5b, ROT0, "bootleg", "Samurai Shodown V / Samurai Spirits Zero (bootleg)", MACHINE_SUPPORTS_SAVE ) // different program scrambling
+GAME( 2003, kf2k3pcb, 0, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3pcb, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", MACHINE_SUPPORTS_SAVE ) // not a clone of neogeo because it's NOT a neogeo cart.
+GAME( 2003, kof2003, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGM-2710)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kof2003h, kof2003, neogeo_noslot, neogeo, neogeo_noslot_state, kof2003h, ROT0, "SNK Playmore", "The King of Fighters 2003 (NGH-2710)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, kf2k3bl, kof2003, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3bl , ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart (unless it was a bootleg pcb with the new bios?)
+GAME( 2003, kf2k3bla, kof2003, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3pl, ROT0, "bootleg", "The King of Fighters 2003 (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2003, kf2k3pl, kof2003, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3pl, ROT0, "bootleg", "The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2003, kf2k3upl, kof2003, neogeo_noslot, neogeo, neogeo_noslot_state, kf2k3upl, ROT0, "bootleg", "The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg)", MACHINE_SUPPORTS_SAVE ) // zooming is wrong because its a bootleg of the pcb version on a cart
+GAME( 2004, samsh5sp, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, samsh5sp, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sph, samsh5sp, neogeo_noslot, neogeo, neogeo_noslot_state, samsh5sp, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spho, samsh5sp, neogeo_noslot, neogeo, neogeo_noslot_state, samsh5sp, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored)", MACHINE_SUPPORTS_SAVE )
+
+/* Alpha Denshi Co. / ADK (changed name in 1993) */
+GAME( 1990, maglord, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Magician Lord (NGM-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, maglordh, maglord, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Magician Lord (NGH-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ncombat, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGM-009)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ncombath, ncombat, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Combat (NGH-009)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bjourney, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Blue's Journey / Raguy (ALM-001)(ALH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, crsword, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Crossed Swords (ALM-002)(ALH-002)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, trally, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Thrash Rally (ALM-003)(ALH-003)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ncommand, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "Ninja Commando", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "World Heroes (ALM-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1h, wh1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "World Heroes (ALH-005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wh1ha, wh1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alpha Denshi Co.", "World Heroes (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wh2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK", "World Heroes 2 (ALM-006)(ALH-006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wh2j, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "World Heroes 2 Jet (ADM-007)(ADH-007)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, aodk, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008)(ADH-008)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whp, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "World Heroes Perfect", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mosyougi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "Syougi No Tatsujin - Master of Syougi", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, overtop, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK", "Over Top", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ninjamas, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "Ninja Master's - haoh-ninpo-cho", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, twinspri, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "Twinkle Star Sprites", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, zintrckb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Zintrick / Oshidashi Zentrix (hack)", MACHINE_SUPPORTS_SAVE )
+
+/* Aicom (was a part of Sammy) / Yumekobo (changed name in 1996) */
+GAME( 1992, viewpoin, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sammy / Aicom", "Viewpoint", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, janshin, neogeo, neogeo_mj, mjneogeo, neogeo_state, neogeo, ROT0, "Aicom", "Jyanshin Densetsu - Quest of Jongmaster", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pulstar, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Aicom", "Pulstar", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, blazstar, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumekobo", "Blazing Star", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, preisle2, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, preisle2, ROT0, "Yumekobo", "Prehistoric Isle 2" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+
+/* Data East Corporation */
+GAME( 1993, spinmast, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Spin Master / Miracle Adventure", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wjammers, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Windjammers / Flying Power Disc", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, karnovr, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Karnov's Revenge / Fighter's History Dynamite", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, strhoop, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Street Hoop / Street Slam / Dunk Dream (DEM-004)(DEH-004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ghostlop, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Ghostlop (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, magdrop2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Magical Drop II", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, magdrop3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Data East Corporation", "Magical Drop III", MACHINE_SUPPORTS_SAVE )
+
+/* Eleven */
+GAME( 2000, nitd, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, nitd, ROT0, "Eleven / Gavaking", "Nightmare in the Dark" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2001, nitdbl, nitd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Nightmare in the Dark (bootleg)" , MACHINE_SUPPORTS_SAVE )
+
+/* Face */
+GAME( 1994, gururin, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face", "Gururin", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, miexchng, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face", "Money Puzzle Exchanger / Money Idol Exchanger", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, dragonsh, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face", "Dragon's Heaven (development board)", MACHINE_IS_INCOMPLETE | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // same ID code as Voltage Fighter Gowkaizer, developed by ex-Technos staff
+
+/* Hudson Soft */
+GAME( 1994, panicbom, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eighting / Hudson", "Panic Bomber", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, kabukikl, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Hudson", "Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, neobombe, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Hudson", "Neo Bomberman", MACHINE_SUPPORTS_SAVE )
+
+/* Monolith Corp. */
+GAME( 1990, minasan, neogeo, neogeo_mj, mjneogeo, neogeo_state, neogeo, ROT0, "Monolith Corp.", "Minasanno Okagesamadesu! Daisugorokutaikai (MOM-001)(MOH-001)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, bakatono, neogeo, neogeo_mj, mjneogeo, neogeo_state, neogeo, ROT0, "Monolith Corp.", "Bakatonosama Mahjong Manyuuki (MOM-002)(MOH-002)", MACHINE_SUPPORTS_SAVE )
+
+/* Nazca (later acquired by SNK) */
+GAME( 1996, turfmast, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Nazca", "Neo Turf Masters / Big Tournament Golf", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, mslug, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Nazca", "Metal Slug - Super Vehicle-001", MACHINE_SUPPORTS_SAVE )
+
+/* NMK */
+GAME( 1994, zedblade, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NMK", "Zed Blade / Operation Ragnarok", MACHINE_SUPPORTS_SAVE )
+
+/* Psikyo */
+GAME( 1999, s1945p, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "Psikyo", "Strikers 1945 Plus" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+
+/* Saurus */
+GAME( 1995, quizkof, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Quiz King of Fighters (SAM-080)(SAH-080)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, quizkofk, quizkof, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Quiz King of Fighters (Korean release)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, stakwin, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI kinzen seiha e no michi", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ragnagrd, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Ragnagard / Shin-Oh-Ken", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, pgoal, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclad, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Choutetsu Brikin'ger - Iron clad (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ironclado, ironclad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Choutetsu Brikin'ger - Iron clad (prototype, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, stakwin2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Stakes Winner 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, shocktro, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Shock Troopers (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, shocktroa, shocktro, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Shock Troopers (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, shocktr2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Saurus", "Shock Troopers - 2nd Squad", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lans2004, shocktr2, neogeo_noslot, neogeo, neogeo_noslot_state, lans2004, ROT0, "bootleg", "Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg)", MACHINE_SUPPORTS_SAVE )
+
+/* Sunsoft */
+GAME( 1995, galaxyfg, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sunsoft", "Galaxy Fight - Universal Warriors", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, wakuwak7, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sunsoft", "Waku Waku 7", MACHINE_SUPPORTS_SAVE )
+
+/* Taito */
+GAME( 1994, pbobblen, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Taito", "Puzzle Bobble / Bust-A-Move (Neo-Geo) (NGM-083)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pbobblenb, pbobblen, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Puzzle Bobble / Bust-A-Move (Neo-Geo) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, pbobbl2n, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Taito (SNK license)", "Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, pnyaa, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, pnyaa, ROT0, "Aiky / Taito", "Pochi and Nyaa", MACHINE_SUPPORTS_SAVE )
+
+/* Takara */
+GAME( 1995, marukodq, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Takara", "Chibi Marukochan Deluxe Quiz", MACHINE_SUPPORTS_SAVE )
+
+/* Technos Japan */
+GAME( 1995, doubledr, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Technos Japan", "Double Dragon (Neo-Geo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gowcaizr, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Technos Japan", "Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sdodgeb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Technos Japan", "Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu", MACHINE_SUPPORTS_SAVE )
+
+/* Tecmo */
+GAME( 1996, tws96, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Tecmo", "Tecmo World Soccer '96", MACHINE_SUPPORTS_SAVE )
+
+/* Viccom */
+GAME( 1994, fightfev, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Viccom", "Fight Fever (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fightfeva, fightfev, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Viccom", "Fight Fever (set 2)", MACHINE_SUPPORTS_SAVE )
+
+/* Video System Co. */
+GAME( 1994, pspikes2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Video System Co.", "Power Spikes II (NGM-068)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, sonicwi2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Video System Co.", "Aero Fighters 2 / Sonic Wings 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sonicwi3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Video System Co.", "Aero Fighters 3 / Sonic Wings 3", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, popbounc, neogeo, neogeo_dial, neogeo, neogeo_state, neogeo, ROT0, "Video System Co.", "Pop 'n Bounce / Gapporin", MACHINE_SUPPORTS_SAVE )
+
+/* Visco */
+GAME( 1992, androdun, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Andro Dunos (NGM-049)(NGH-049)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, puzzledp, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Taito (Visco license)", "Puzzle De Pon!", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, neomrdo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Neo Mr. Do!", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, goalx3, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Goal! Goal! Goal!", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, neodrift, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Neo Drift Out - New Technology", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, breakers, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Breakers", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, puzzldpr, puzzledp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Taito (Visco license)", "Puzzle De Pon! R!", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, breakrev, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Breakers Revenge", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, flipshot, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Battle Flip Shot", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, ctomaday, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Captain Tomaday", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, ganryu, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, ganryu, ROT0, "Visco", "Ganryu / Musashi Ganryuki" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
+GAME( 2000, bangbead, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, bangbead, ROT0, "Visco", "Bang Bead", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, b2b, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Visco", "Bang Bang Busters (2010 NCI release)" , MACHINE_SUPPORTS_SAVE )
+
+/* Mega Enterprise */
+GAME( 2002, mslug4, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, mslug4, ROT0, "Mega / Playmore", "Metal Slug 4 (NGM-2630)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, mslug4h, mslug4, neogeo_noslot, neogeo, neogeo_noslot_state, mslug4, ROT0, "Mega / Playmore", "Metal Slug 4 (NGH-2630)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, ms4plus, mslug4, neogeo_noslot, neogeo, neogeo_noslot_state, ms4plus, ROT0, "bootleg", "Metal Slug 4 Plus (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+/* Evoga */
+GAME( 2002, rotd, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, rotd, ROT0, "Evoga / Playmore", "Rage of the Dragons (NGM-264?)", MACHINE_SUPPORTS_SAVE )
+
+/* Atlus */
+GAME( 2002, matrim, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, matrim, ROT0, "Noise Factory / Atlus", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660) (NGH-2660)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, matrimbl, matrim, neogeo_noslot, neogeo, neogeo_noslot_state, matrimbl, ROT0, "bootleg", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+/***** Unlicensed commercial releases *****/
+
+/* BrezzaSoft */
+GAME( 2001, jockeygp, neogeo, neogeo_noslot, jockeygp, neogeo_noslot_state, jockeygp, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, jockeygpa, jockeygp, neogeo_noslot, jockeygp, neogeo_noslot_state, jockeygp, ROT0, "Sun Amusement / BrezzaSoft", "Jockey Grand Prix (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, vliner, neogeo, neogeo_noctrl, vliner, neogeo_noslot_state, vliner, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, vlinero, vliner, neogeo_noctrl, vliner, neogeo_noslot_state, vliner, ROT0, "Dyna / BrezzaSoft", "V-Liner (set 2)", MACHINE_SUPPORTS_SAVE )
+
+/* Kyle Hodgetts */
+GAME( 2000, diggerma, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kyle Hodgetts", "Digger Man (prototype)", MACHINE_SUPPORTS_SAVE )
+
+/* Vektorlogic */
+GAME( 2004, sbp, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, sbp, ROT0, "Vektorlogic", "Super Bubble Pop", MACHINE_NOT_WORKING )
+
+/* NG:DEV.TEAM */
+GAME( 2005, lasthope, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NG:DEV.TEAM", "Last Hope (bootleg AES to MVS conversion, no coin support)", MACHINE_SUPPORTS_SAVE ) // wasn't actually released on MVS but bootleg carts have been sold, this doesn't accept coins, runs like a console game
+// Last Hope Pink Bullets (c)2008 - MVS/AES
+// Fast Striker (c)2010 - MVS/AES
+// Fast Striker 1.5 (c)2010 - MVS/AES
+// GunLord (c)2012 - MVS/AES
+// Neo XYX (c)2013 - MVS/AES
+// Razion (c)2014 - MVS/AES?
+// Kraut Buster (c)2016 - MVS/AES
+
+/* N.C.I - LE CORTEX */
+// Treasure of the Caribbean (c)2011 - AES only (no credits system if ran on an MVS, Freeplay)
+
+/* NEOBITZ */
+// Knight's Chance (c)2014 - MVS/AES
+
+
+
+#include "../hbmame/drivers/neogeo0.cpp"
+
diff --git a/docs/release/src/hbmame/drivers/neogeohb.cpp b/docs/release/src/hbmame/drivers/neogeohb.cpp
new file mode 100644
index 00000000000..72c64d9864b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/neogeohb.cpp
@@ -0,0 +1,1855 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*********************************************************************************************************
+
+neogeohb.cpp - started 2014-06-02
+
+HBMAME list of protos, unreleased, and homebrews. This number system is to make the categorisation
+of non-official NeoGeo sets easier. 300-399 is for unreleased commercial sets, while 400-999 is for
+homebrews. Protos will generally have an equivalent 'official' number that can be used.
+
+300-399 is mostly speculation, it is not really known what may or may not have actually existed.
+It is possible that a game is already known under another title, or perhaps it was a
+prototype of another title. Corrected info is welcome.
+
+400-499 are mostly confirmed as having existed at some time. A few of them seem unobtainable now.
+800-899 highly-priced limited edition homebrew carts, and are not to be emulated until after the maker
+ has discontinued the item.
+
+We want the MVS or AES roms for any game marked with * after the number.
+
+Please note: It is planned to move this list to the HBMAME website sometime this year.
+
+******* CD-only titles that may possibly exist as roms *************
+
+NUM YEAR COMPANY TITLE
+--- ---- ---------------- -------------------------------------------
+054 1995 ADK Crossed Swords 2
+085*1997 SNK Samurai Showdown R.P.G. (also known as 'Shinsetsu Samurai Spirits Bushidoretsuden')
+091*1995 ADK ADK World
+098 1995 Video System Co Final Romance 2
+205*1995 SNK NeoGeo CD Special
+211 1996 ADK Zintrick
+229*1996 SNK King of Fighters 96 CD Collection
+
+
+
+******* Normal games that have alternate titles (or other) *************
+
+NUM TITLES
+--- -------------------------------------------------------------------
+001 NAM-1975 (The MVS misses the demo sequence)
+004 Mahjong Kyo Retsuden / Real Mah-Jong Game
+007 Alpha Mission II / ASD Last Guardian II (MGD2 dump has extra sounds & roms)
+021 Puzzled / JoyJoyKid (The MVS misses the war & sun god sequence, AES misses demo)
+022 Blue's Journey / Raguy
+023 Quiz Daisousa Den / The Last Count Down
+033 Fatal Fury / Garou Densetsu
+038 Thrash Rally / Rally Chase
+043 3 Count Bout / Fire Suplex
+045 Samurai Shodown / Samurai Spirits
+047 Fatal Fury 2 / Garoudensetsu 2
+048 Mahjong Janshin / Quest of Jongmaster
+058 Fatal Fury Special / Garoudensetsu
+062 Spin Master / Miracle Adventure
+063 Samurai Shodown 2 / Samurai Spirits 2 / Saulabi Spirits 2
+065 Windjammers / Flying Power Disc
+066 Karnov's Revenge / Fighter's History Dynamite
+069 Fatal Fury 3 / Garoudensetsu 3; The Battle of Destiny; Road to the Final Victory
+076 Zed Blade / Operation Ragnarok
+079 Street Hoop / Dunk Dream
+087 Samurai Shodown III / Fighters Swords
+092 Kabuki Klash / Far East of Eden
+200 Neo Turf Masters / Big Tournament Golf
+215 Super Sidekicks 4 / SNK Football Championship
+216 Kizuna Encounter; Super Tag Battle
+219 Pleasure Goal / Futsal
+220 Ironclad / Brikin'ger
+222 Samurai Shodown 4 / Legend of a Warrior
+
+
+
+********************** 300 to 399 **********************************
+
+NUM YEAR COMPANY TITLE
+--- ---- ---------------- -------------------------------------------
+300* Baseball Stars 3
+301* Death Match
+302* Fire Suplex 2
+303* Heavy Glove Boxing
+304* Magician Lord 2
+305* Ninja Gaiden (This may be Ninja Gaiden II, 1994, Tecmo)
+306* Reactor
+307* World Heroes Link-up
+308*1990 Alpha Denshi Sun Shine / Block Paradise
+309*1991 Sammy Dunk Star
+310*1991 Alpha Denshi Mystic Wand
+311*1991 Alpha Denshi Fun Fun Brothers
+312*1994 Visco Crystal Legacy (this may be an early name for Breakers)
+313*1994 Video System Co Super Volley 94 (this may be an early name for Power Spikes 2)
+314*1994 Mahou All Stars Volley
+315*1994 Visco Puzzlekko Club
+316 1994 Face Treasure of the Caribbean (may also be known as 'Carib No Zaihou')
+317*1995 Face Ultimate 4 / King of Athlete
+318*1995 Monolith Last Odyssey Pinball Fantasia
+319*1995 MAX Maseki Taisen Stoon
+320*1995 Astec Warlocks of the Fates
+321*1995 Yumekobo The Karate Ninja Show
+322*1996 Sunsoft Hebereke's Pair Pair Wars
+323*1996 Viccom The Eye of Typhoon
+324*1996 Kigyo Action Pac
+325*1996 SNK Kizuna Encounter Special Edition (could be "Kizuna Encounter 4way Battle") (could be "Fu'un Super Tag Battle Link-up")
+326*1996 Saurus Mahou Juku Magic Master
+327*1997 Saurus Neo Pool Master
+328*1997 Success Q.P.
+329*1997 Gapporin Ookiku Fukuramasete Gapporn
+330*2000 SNK Garou 2 / Mark of the Wolves Special
+331 2001 Brezzasoft Jockey Grand Prix
+332 2001 Brezzasoft V-Liner
+333*2002 Sun Amusement Poker Kingdom / Bingo Island
+334*2002 ADK Dance RhythMIX
+335*2002 ADK World Heroes 3
+336 Face Dragon's Heaven
+337*2000 Vektorlogic Neo Sparks (cancelled)
+338 2004 Vektorlogic Super Bubble Pop
+339* Vektorlogic TommyK (cancelled)
+350* Neo Dev Cart
+351* MVS Test Cart
+360 2003 PhenixSoft Crouching Tiger Hidden Dragon (hack of kof2001) (original number 5003)
+361 2003 SNK? King of Gladiator (hack of kof97) (original number 5232)
+362 2004 Saurus/SNK Lansquenet 2004 (hack of Shock Troopers 2nd squad)
+363 2004 SNK? King of Fighters 10th Anniversary (hack of kof2002) (original number 5004,5008)
+364 2004 SNK? King of Fighters 2004 EX (hack of kof2003)
+365 2004 Dragon Co, Ltd King of Fighters Special Edition 2004 (hack of kof2002)
+366 2008 SNK? King of Fighters 10th Anniversary 2008 (hack of kof10th) (original number 5009)
+
+
+
+********************** 400 to 499 **********************************
+(n/r) = not released (yet)
+
+NUM YEAR COMPANY TITLE
+--- ---- ----------------------- -------------------------------------------
+400 1999 Kyle Hodgetts Digger Man
+401 2002 Jeff Kurtz Shadow of the Beast demo (original number 2002)
+402* Neobitz Neobitz demo (Jeff M. Kurtz is Neobitz)
+403 2003 Neobitz Poker Night (original number 2003)
+404 2004 Neobitz Columns (original number 2000)
+405*2005 Neobitz Neo-Pac (pacman game)
+406 2000 Blastar System Check
+407 2002 Blastar Neo no Panepon
+408 2004 Blastar Neo 2500 demo
+409 2005 Blastar Jonas Indiana and the Lost Temple of Ra
+410 2006 Blastar Codename: Blut Engel
+411 2006 Blastar NGEM2K
+412 2002 Neodev Neo Pong
+413 2001 Rastersoft WW2 demo
+414 2005 Rastersoft Frog Feast demo
+415 2006 Rastersoft Frog Feast
+416 2003 Charles Doty Neogeo Demo
+417 2011 Furrtek Nyan Cat demo
+418 2008 Crim Neogeo 2-player Tetris
+419 2011 Sebastian Mihai Neo Thunder
+420 2004 BarfHappy Neo Castlevania demo
+421 2012 Oxygene Neo 3D demo
+422 2012 NeoGeoFreak Time's Up! demo
+423*1996 Kigyo Corp Action-Pac (not known if it ever existed)
+424 2012 NeoGeoFreak Transparency demo
+425 2009 Raregame Chip n Dale intro
+426 2009 Raregame Darkwing Duck intro
+427 2009 Raregame Ghostbusters intro
+428 2009 Raregame Robocop intro
+429 2009 Raregame Spiderman intro
+430 2009 Raregame Teenage Mutant Ninja Turtles intro
+431 2009 Raregame Duck Tales Intro
+432
+433
+434*2010 CeL Hello World
+435 2010 CeL Neorom Jukebox
+436*2010 CeL Neo Pang
+437 2013 Le Cortex Crouching Pony Hidden Dragon demo
+438 2002 <unknown> Neo Bubble
+439 2013 Cristiano Bei Primo demo
+440 2013 Cristiano Bei Neo Geo Galaga demo
+441 2013 Cristiano Bei Neo Geo Sound Test
+442
+443
+444 2012 M.Priewe Santaball
+445*2014 M.Priewe Doom in the Deep (in development)
+446 2014 M.Priewe Monitor Test Tool
+447*2016 M.Priewe Hypernoid (in development)
+448
+449
+450*2012 RKGAMES Neo-sprite demo (CD only)
+451*2000 Martinez Fabrice VIP2 demo (CD only) [nebula]
+452*2011 Furrtek VUmeter (CD only) [nebula]
+453
+454*2013 Cristiano Bei NGPhoenix (CD only)
+455*2004 Blastar Neo Puzzle League (CD only) [nebula]
+456*2013 Jeff Ferrier Neo Geo Manic Panic
+457 Furrtek MVSTest01
+458 Furrtek KnackiBalls
+459*n/r Furrtek Unleashed (in development or cancelled)
+460*n/r Furrtek Astrosmash (in development or cancelled)
+461*n/r RiKo Cosmic Tower (in development or cancelled)
+462 2009 Elrayzeur Puzzle Bobble Crazy
+463* NGD NGD::ARK (Arkanoid port)
+464* NGD NGD::AIR (ngdevgroup.com [dead])
+465* NGD NGD::FIGHT
+466* 4-player input test
+467 2011 Furrtek Sprite Experimenter
+468*n/r Neobitz Submarine Shooter (in development)
+469
+470 2015 freem ADPCM-B Playback Demo
+471*n/r tcdev Donkey Kong (in development or cancelled)
+472 2015 freem ADPCM-A Playback Demo
+473 2015 blastar Twister in a mirror intro
+474 2015 freem Sound-Loop Demo
+475 2016 Kannagi Ennemi Sprite Demo
+476 2015 Kannagi Neo Fight
+477 2016 Mega Shocked DatImage demo
+478 2016 Mega Shocked Demo
+479*2016 Luis Miguel Mayor Tech Demo #1 (Street Fighter 2)
+480 2016 Luis Miguel Mayor Tech Demo #2
+
+
+********************** 800 to 899 **********************************
+
+NUM YEAR COMPANY TITLE
+--- ---- ----------------------- -------------------------------------------
+800*2012 NeoGeoFreak Time's Up!
+801*2013 Le Cortex Crouching Pony Hidden Dragon
+802 2006 NG:DEV.Team Last Hope
+803*2010 NG:DEV.Team Fast Striker
+804*2011 NG:DEV.Team Last Hope Pink Bullets
+805*2012 NG:DEV.Team Gunlord
+806*2013 NG:DEV.Team NEO XYX
+807*2013 Neobitz Knight's Chance
+808*2014 NG:DEV.Team Razion
+809*2015 NG:DEV.Team Kraut Buster
+
+
+*********************************************************************************************************/
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, fr2ch )
+{
+//// Fix rebooting at start
+
+ uint16_t *src = (uint16_t*)memregion("maincpu")->base();
+
+ // change jsr to C004DA
+ src[0x01AF8 /2] = 0x04DA; // C00552 (Not used?)
+ src[0x01BF6 /2] = 0x04DA; // C0056A (fixes crash)
+ src[0x01ED8 /2] = 0x04DA; // C00570 (Not used?)
+ src[0x1C384 /2] = 0x04DA; // C00552 (fixes crash)
+
+ // 0x001C06 - this routine can cause a loop/freeze
+ src[0x01C06 /2] = 0x4E75;
+
+//// Fix text on bottom line
+
+ uint8_t *dst = memregion( "fixed" )->base();
+
+ // Move text for credit + coin info (Thanks to Kanyero), overwrites "MA" in neogeo logo
+ memcpy(dst, dst + 0x600, 0x140);
+
+ // Patch out neogeo intro (because of above line)
+ src[0x114 /2]=0x200;
+
+
+//// Optional stuff
+
+
+ uint8_t i, *rom = memregion("maincpu")->base();
+
+ uint8_t data[16] = {
+ 0x49, 0x46, 0x41, 0x4E, 0x20, 0x4C, 0x4F, 0x52,
+ 0x41, 0x4D, 0x43, 0x4E, 0x20, 0x45, 0x20, 0x32 };
+
+ // Hack in the proper identification (see setup menu [F2])
+ for (i = 0; i < 16; i++)
+ rom[0x3A6 + i] = rom[0x61E + i] = rom[0x896 + i] = data[i];
+
+ // Album Fix
+ src[0x1C382 /2] = 0x0008; // C00552
+ src[0x1C384 /2] = 0x0000;
+ src[0x80000 /2] = 0x33FC;
+ src[0x80002 /2] = 0x0001;
+ src[0x80004 /2] = 0x0020;
+ src[0x80006 /2] = 0x0002;
+ src[0x80008 /2] = 0x4E75;
+
+ DRIVER_INIT_CALL(neogeo);
+
+ /* old fr2cd code:
+ uint16_t *mem16 = (uint16_t*)memory_region(machine, "maincpu");
+ mem16[0x1BF2/2] = 0x4E71;
+ mem16[0x1BF4/2] = 0x4E71;
+ mem16[0x1BF6/2] = 0x4E71;
+ DRIVER_INIT_CALL(neogeo); */
+}
+
+
+
+// 054 : Crossed Swords 2
+ROM_START( crswd2bl )
+ ROM_REGION( 0x200000, "maincpu", ROMREGION_BE|ROMREGION_16BIT )
+ ROM_LOAD16_WORD_SWAP( "054-p1.p1", 0x100000, 0x100000, CRC(64836147) SHA1(083cb1626885893e736fc9998036c952cd4d503b) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "054-s1.s1", CRC(22e02ddd) SHA1(ebd834affc763cc5854abf1c6c42f43f3f3755fd) )
+
+ NEO_BIOS_AUDIO_128K( "054-m1.m1", CRC(63e28343) SHA1(f46dbc2f1d6033b11047cca31a9a7d715dc69cb2) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "054-v1.v1", 0x000000, 0x200000, CRC(22d4b93b) SHA1(0515f2ee5d9a8ce424c80721e06f746ac6a543a8) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "054-c1.c1", 0x000000, 0x400000, CRC(8221b712) SHA1(7e68871f1bfc402ef27c8fa088c680cbd133f71a) )
+ ROM_LOAD16_BYTE( "054-c2.c2", 0x000001, 0x400000, CRC(d6c6183d) SHA1(cc546ff063fae2c01c109fabcd5b2d29ec3299db) )
+ROM_END
+
+// Roms missing; not working at all
+ROM_START( csw2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "054.p1", 0x000000, 0x100000, CRC(b6e8f765) SHA1(fac63109664b834b43240a6e93353173e129e6af) )
+
+ NEO_SFIX_128K( "054.s1", CRC(7ddb9c7e) SHA1(c7ca63f1ff9edb2f71d13cc14d6a426b85182228) )
+
+ NEO_BIOS_AUDIO_64K( "054.m1", CRC(c45e902b) SHA1(fa17a16077393f986b72f412ce91bded34558af0) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "054.v1", 0x000000, 0x80000, CRC(a12842f2) SHA1(6f6377ff54465c4c13e34f8cb4f333f4f15aed5c) )
+ ROM_LOAD( "054.v2", 0x000001, 0x80000, CRC(3b7feef0) SHA1(748db17fbd3bf8fc427ff57e0952f21dd2782e6b) )
+
+ ROM_REGION( 0x400000, "sprites", 0 ) // c-roms not found yet, using crswd2bl roms for now
+ ROM_LOAD16_BYTE( "054-c1.c1", 0x000000, 0x400000, CRC(8221b712) SHA1(7e68871f1bfc402ef27c8fa088c680cbd133f71a) )
+ ROM_LOAD16_BYTE( "054-c2.c2", 0x000001, 0x400000, CRC(d6c6183d) SHA1(cc546ff063fae2c01c109fabcd5b2d29ec3299db) )
+ROM_END
+
+
+// 098 : Idol Mahjong Final Romance 2
+ROM_START( fr2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "098.p1", 0x000000, 0x80000, CRC(09675541) SHA1(6afb89d43e67f93e40f3877cbedfec9566e3ff0f) )
+
+ NEO_SFIX_128K( "098.s1", CRC(0e6a7c73) SHA1(31b1194524dcc80ec4d63bac088b6fb4909f496c) )
+
+ NEO_BIOS_AUDIO_128K( "098.m1", CRC(da4878cf) SHA1(ce13d18a4c5d01974df8542c67c4df00dbc6e7c1) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "098.v1", 0x000000, 0x100000, CRC(6f8ccddc) SHA1(696df2d0f416c2374b0eb7c858486054688c5bca) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "098.c1", 0x0000000, 0x400000, CRC(29148bf7) SHA1(75097fbe8877720afbcbe4dbe30bc600466d759f) )
+ ROM_LOAD16_BYTE( "098.c2", 0x0000001, 0x400000, CRC(226b1263) SHA1(dee6a4a0a727c1d8a6d298cb38ed1b9901992d5b) )
+ROM_END
+
+ROM_START( fr2cd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "098cd.p1", 0x000000, 0x100000, CRC(a2527a5f) SHA1(1f6e3c7de9154c0026360ee6fa0bd211ed541af1) )
+
+ NEO_SFIX_128K( "098cd.s1", CRC(764ac7aa) SHA1(cc40ad276e63084ebf3c3ee224083762a47c3cf8) )
+
+ NEO_BIOS_AUDIO_64K( "098cd.m1", CRC(a455fa31) SHA1(82ccc5e2e5869a46da7533ed10ac5eab549a0063) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "098cd.v1", 0x000000, 0x100000, CRC(92e175f0) SHA1(788a9cce9028f16d6734bff163beb1a19305b8be) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "098cd.c1", 0x0000000, 0x300000, CRC(29bf9af0) SHA1(6c7e9c2b7062bf361a2290010c4e1828eb7019cc) )
+ ROM_LOAD16_BYTE( "098cd.c2", 0x0000001, 0x300000, CRC(3cf46f63) SHA1(c5316e83586e7b1c902746f8f2049baf026b52bf) )
+ROM_END
+
+ROM_START( fr2ch ) // CD to MVS Conversion
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "098ch.p1", 0x000000, 0x080000, CRC(9AA8CEE0) SHA1(b2201f16d8fde4eaae9dbc754d019e7b381ecc06) )
+
+ NEO_SFIX_128K( "098cd.s1", CRC(764ac7aa) SHA1(cc40ad276e63084ebf3c3ee224083762a47c3cf8) )
+
+ NEO_BIOS_AUDIO_64K( "098cd.m1", CRC(a455fa31) SHA1(82ccc5e2e5869a46da7533ed10ac5eab549a0063) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "098cd.v1", 0x000000, 0x100000, CRC(92e175f0) SHA1(788a9cce9028f16d6734bff163beb1a19305b8be) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "098ch.c1", 0x000000, 0x100000, CRC(6158CF4A) SHA1(8e34b65f2cdfccaa6eeb40fef1ab3453eab92f46) )
+ ROM_LOAD16_BYTE( "098ch.c2", 0x000001, 0x100000, CRC(93A809A3) SHA1(9b680b8b758cfc77f01d7211b67343a90462b3f3) )
+ ROM_LOAD16_BYTE( "098ch.c3", 0x200000, 0x100000, CRC(FAFA3381) SHA1(0c4f20c4d5f57c1dad50b914f9d1299a9d882b42) )
+ ROM_LOAD16_BYTE( "098ch.c4", 0x200001, 0x100000, CRC(9895E23F) SHA1(565b5fbe07f65fb48d0bde769d3245a6ac747774) )
+ ROM_LOAD16_BYTE( "098ch.c5", 0x400000, 0x100000, CRC(EEAAA818) SHA1(434c13852153d7bebe138611a836d9bf07d1d4cf) )
+ ROM_LOAD16_BYTE( "098ch.c6", 0x400001, 0x100000, CRC(F3D9A190) SHA1(44932122e044d23234235cb3899f6e1e63970983) )
+ROM_END
+
+
+// 211 : Zintrick
+ROM_START( zintrkcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "211cd.p1", 0x000000, 0x100000, CRC(9a0bfe0a) SHA1(94299c51572b66fa37e3e496436299573b1faaa8) )
+
+ NEO_SFIX_128K( "211cd.s1", CRC(56d16afa) SHA1(6e1f960a781f5ef1f858c51507fe573bead8ea66) )
+
+ NEO_BIOS_AUDIO_64K( "211cd.m1", CRC(fcae1407) SHA1(5b4bff97a8c5930852eff6aee553eadc18e8f3d9) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "211cd.v1", 0x000000, 0x100000, CRC(781439da) SHA1(a80cdf3be55b5fc2ba1d167f69e222463d06ad88) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) )
+ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) )
+ROM_END
+
+ROM_START( zintrkcd1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "211m1.p1", 0x000000, 0x100000, CRC(032df2ba) SHA1(dfd35d77da203ebad5319b355fd65e6ed6a553da) )
+
+ NEO_SFIX_128K( "211cd.s1", CRC(56d16afa) SHA1(6e1f960a781f5ef1f858c51507fe573bead8ea66) )
+
+ NEO_BIOS_AUDIO_64K( "211m1.m1", CRC(8e539e59) SHA1(fba718ca565a6d5f122baa6d695108632672d1b0) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "211m1.v1", 0x000000, 0x800000, CRC(00e392ed) SHA1(8a46673c02fc25e65821d45749aa6fe697fa81c1) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) )
+ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) )
+ROM_END
+
+ROM_START( zintrkm )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "211m.p1", 0x000000, 0x100000, CRC(b3fb325c) SHA1(27a34ff0dfea02b1aac3ddbc7c965684694390f1) )
+
+ NEO_SFIX_128K( "211m.s1", CRC(b67cb1fd) SHA1(3abf201bcc28ec5bd145f0848dc44c239a6ec651) )
+
+ NEO_BIOS_AUDIO_128K( "211m.m1", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "211m.v1", 0x000000, 0x200000, CRC(baa2b9a5) SHA1(914782b6c81d9a76ce02251575592b0648434ba3) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) )
+ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) )
+ROM_END
+
+ROM_START( zintrckbh )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "211h.p1", 0x000000, 0x100000, CRC(328af665) SHA1(ece74116955ecb9ec40ac90913d496836ecc82cf) )
+
+ NEO_SFIX_128K( "zin-s1.bin", CRC(a7ab0e81) SHA1(f0649819b96cea79b05411e0b15c8edc677d79ba) )
+
+ NEO_BIOS_AUDIO_128K( "zin-m1.bin", CRC(fd9627ca) SHA1(b640c1f1ff466f734bb1cb5d7b589cb7e8a55346) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "zin-v1.bin", 0x000000, 0x200000, CRC(c09f74f1) SHA1(d0b56a780a6eba85ff092240b1f1cc6718f17c21) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) )
+ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) )
+ROM_END
+
+
+// 316 : Treasure of the Caribbean
+ROM_START( totc )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "316.p1", 0x000000, 0x100000, CRC(99604539) SHA1(88d5f4fe56516aa36496cafd2508f6864118f1e2) )
+
+ NEO_SFIX_128K( "248-s1.s1", CRC(0a3fee41) SHA1(0ab2120e462086be942efcf6ffb37f58ea966ca3) )
+
+ NEO_BIOS_AUDIO_128K( "316.m1", CRC(18b23ace) SHA1(d55495f3d8bb5568c8f2322763278a86ba5297b3) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "316.v1", 0x000000, 0x200000, CRC(15c7f9e6) SHA1(c51328a92dc7c612fd6c2f3841caee4fbd120f36) )
+ ROM_LOAD( "316.v2", 0x200000, 0x200000, CRC(1b264559) SHA1(50c28858304e51cdc60f425483a1d1d2bbfb2f8d) )
+ ROM_LOAD( "316.v3", 0x400000, 0x100000, CRC(84b62c5d) SHA1(30d7f2e16c6d602cebce5e9b4b8a5b2bde20af58) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "316.c1", 0x000000, 0x200000, CRC(cdd6600f) SHA1(85649c199b32db7553012cb5a058a92bbbb7355a) )
+ ROM_LOAD16_BYTE( "316.c2", 0x000001, 0x200000, CRC(f362c271) SHA1(4a2efa043cd2553ff7039cb18a1dba8b41493be7) )
+ROM_END
+
+
+// 401 : Shadow of the Beast demo by Neobitz
+// No sound
+ROM_START( beast )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "401.p1", 0x000000, 0x080000, CRC(1f9e62a4) SHA1(f245ce9802c5deb257a11fa714b2d1d4d72fc786) )
+
+ NEO_SFIX_128K( "401.s1", CRC(05a417f5) SHA1(932eeab5ba06f654ed39112c71a4e5a1f78c70bd) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "401.c1", 0x000000, 0x80000, CRC(e1974741) SHA1(175b09778875a18f12e7b34c53862ac8c93141c1) )
+ ROM_LOAD16_BYTE( "401.c2", 0x000001, 0x80000, CRC(9f5b9cf6) SHA1(857595fc93bfec069c8b1cf647ab9feedce56f1f) )
+ROM_END
+
+
+// 403 : Poker Night by Neobitz
+// No sound
+ROM_START( poknight )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "403.p1", 0x000000, 0x080000, CRC(750421ee) SHA1(0a86823456a82506bc96989c361626be4b3ceeaf) )
+
+ NEO_SFIX_128K( "403.s1", CRC(a26d2f09) SHA1(e7da6005a66e52f5479f9fe9f0cc67527dcb5d04) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "403.c1", 0x000000, 0x80000, CRC(5fb2b761) SHA1(12ec2abcd199da866519aca767818a080d9b40bf) )
+ ROM_LOAD16_BYTE( "403.c2", 0x000001, 0x80000, CRC(f2b570e3) SHA1(1c8d8dc75651ec788729bfc7198c926285ad6080) )
+ROM_END
+ROM_START( poknightcd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "403.p1", 0x000000, 0x080000, CRC(750421ee) SHA1(0a86823456a82506bc96989c361626be4b3ceeaf) )
+
+ NEO_SFIX_64K( "403a.s1", CRC(d6919a39) SHA1(46c858249292c1077c1e4ba5a6be469eb39ed483) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "403a.c1", 0x000000, 0x80000, CRC(0ab5143b) SHA1(73d81c09deec02174aa5528aafad28c1294e8b8e) )
+ ROM_LOAD16_BYTE( "403a.c2", 0x000001, 0x80000, CRC(a7b2d3b9) SHA1(9723d53d10efdf9d1d402d4b9487ef5697262491) )
+ROM_END
+ROM_START( poknightfr )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "403b.p1", 0x000000, 0x020000, CRC(e0b3e776) SHA1(4b5aa783d59d37a04553671830e932a35561d447) )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "403b.s1", 0x00000, 0x08000, CRC(3824214d) SHA1(446bf7ec6afc80a758d7d5dc3156a12cdee3b38d) )
+ //ROM_RELOAD (0x10000, 0x08000)
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "403b.c1", 0x000000, 0x18000, CRC(0ee80e14) SHA1(4dbe8b0750ca8e479bc6936ecf15572ef5ff7462) )
+ ROM_LOAD16_BYTE( "403b.c2", 0x000001, 0x18000, CRC(84f17a6d) SHA1(3a2232469274c5418e58dd48b78106d540f2c6ad) )
+ROM_END
+
+
+// 404 : Columns by Neobitz
+// No sound
+ROM_START( columnsn )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "404.p1", 0x000000, 0x080000, CRC(c6c9888d) SHA1(5a2ec1071872c817bf82053ca7b7d5d63fab6755) )
+
+ NEO_SFIX_128K( "404.s1", CRC(089a28a8) SHA1(b38b5c42eb909c57c16b016addffcd4e930806ce) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "404.c1", 0x000000, 0x80000, CRC(9a579cab) SHA1(9efd285c1bdc49a0d1daf2a062d0f906a0f5b542) )
+ ROM_LOAD16_BYTE( "404.c2", 0x000001, 0x80000, CRC(91d14043) SHA1(de6a1178fbfa3d75285e4338967f0ce4ed1aff23) )
+ROM_END
+
+ROM_START( columnsncd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "404.p1", 0x000000, 0x080000, CRC(c6c9888d) SHA1(5a2ec1071872c817bf82053ca7b7d5d63fab6755) )
+
+ NEO_SFIX_64K( "404a.s1", CRC(16cdb953) SHA1(a699f05fe9fb02a9bb0f03778578a5adcae00b91) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "404a.c1", 0x000000, 0x80000, CRC(cf503ff1) SHA1(3fb3131fa55d6137381b817dbb07b740096749b7) )
+ ROM_LOAD16_BYTE( "404a.c2", 0x000001, 0x80000, CRC(c4d6e319) SHA1(19a5bb2622c01bea2c0eb2206724c7751caca318) )
+ROM_END
+
+
+// 406 : NeoSystemCheck v1.0b by Blastar
+// No sound
+ROM_START( syscheck )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "406.p1", 0x000000, 0x80000, CRC(a4adbe1e) SHA1(eee4a8ebe62a2c97282f0350b3c28c615ea44956) )
+
+ NEO_SFIX_64K( "406.s1", CRC(4774f28e) SHA1(f381dac250fca3dfe1eb8c8f1b9b3bf0d521000e) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "406.m1", 0x0000, 0x10000, CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+ ROM_RELOAD( 0x10000, 0x10000 )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "406.v1", 0x000000, 0x80000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x100000, "sprites", ROMREGION_ERASEFF )
+ // no sprites (these blank roms not used)
+ //ROM_LOAD16_BYTE( "406.c1", 0x000000, 0x80000, CRC(75660aac) SHA1(6a521e1d2a632c26e53b83d2cc4b0edecfc1e68c) )
+ //ROM_LOAD16_BYTE( "406.c2", 0x000001, 0x80000, CRC(75660aac) SHA1(6a521e1d2a632c26e53b83d2cc4b0edecfc1e68c) )
+ROM_END
+
+
+// 407 : Neo No Panepon by Blastar, 2002
+// No sound
+/* There are 4 versions.
+ Release dates: v1a and v1b = 2002-07-07, v1c = 2002-08-22, v2 = 2002-10-05
+
+ MAME has a bug where the first 2 high scores do not show.
+*/
+ROM_START( neonopon_d1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "407a.p1", 0x000000, 0x080000, CRC(43b7c759) SHA1(bbb4bf7957a336be6e5daa4030a5ebb1c72d92ee) )
+
+ NEO_SFIX_64K( "407a.s1", CRC(e28ea706) SHA1(bd113a91a1303e2ec670250225a1cd35d34c7f60) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "407a.c1", 0x000000, 0x100000, CRC(24dcba77) SHA1(da7ce6797bf4ac9903dbb00587815c51c835c879) )
+ ROM_LOAD16_BYTE( "407a.c2", 0x000001, 0x100000, CRC(57c41e26) SHA1(39d810547f3f8a44b45e7807f1e6b3a0672a1688) )
+ROM_END
+ROM_START( neonopon_d2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "407a.p1", 0x000000, 0x080000, CRC(43b7c759) SHA1(bbb4bf7957a336be6e5daa4030a5ebb1c72d92ee) )
+
+ NEO_SFIX_64K( "407a.s1", CRC(e28ea706) SHA1(bd113a91a1303e2ec670250225a1cd35d34c7f60) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "407b.c1", 0x000000, 0x100000, CRC(0833c9e7) SHA1(62f4e093bd5b521ee3f64aa1744e324a3a50eb12) )
+ ROM_LOAD16_BYTE( "407b.c2", 0x000001, 0x100000, CRC(fbf5f67f) SHA1(52a6a800d4afaa9675e1f6eab5ed4be772f17338) )
+ROM_END
+ROM_START( neonopon_d3 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "407a.p1", 0x000000, 0x080000, CRC(43b7c759) SHA1(bbb4bf7957a336be6e5daa4030a5ebb1c72d92ee) )
+
+ NEO_SFIX_64K( "407.s1", CRC(93e6fe7d) SHA1(791789c33eeeaa23fe6581db2f0ee3c35c73c052) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "407c.c1", 0x000000, 0x100000, CRC(e0573498) SHA1(80ec6ef8a6133f1f66704920332e92daa3daee14) )
+ ROM_LOAD16_BYTE( "407b.c2", 0x000001, 0x100000, CRC(fbf5f67f) SHA1(52a6a800d4afaa9675e1f6eab5ed4be772f17338) )
+ROM_END
+
+ROM_START( neonopon ) // v.0.2
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "407.p1", 0x000000, 0x080000, CRC(8a792271) SHA1(6f8db18f9ced0706cb2e4b5545da97be871352dd) )
+
+ NEO_SFIX_64K( "407.s1", CRC(93e6fe7d) SHA1(791789c33eeeaa23fe6581db2f0ee3c35c73c052) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "407.c1", 0x000000, 0x100000, CRC(4a718ae3) SHA1(e59515bacd9065c4b2712710a6a9a647e42c31e6) )
+ ROM_LOAD16_BYTE( "407.c2", 0x000001, 0x100000, CRC(0e2cbc25) SHA1(3c45eedb2efc6a3a7ec65487f980e117485abc9f) )
+ROM_END
+
+
+// 408 : Neo 2500 demo by Blaster (c) 2004
+// No sound
+ROM_START( neo2500 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "408.p1", 0x000000, 0x080000, CRC(2321c0d8) SHA1(e0d535af20f271794dc14c83ff3ffbc1f6bf98d9) )
+
+ NEO_SFIX_64K( "408.s1", CRC(1a37925c) SHA1(2060196c3a4d5dcc75aa62e5f02b0d397ec54b1b) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "408.c1", 0x000000, 0x80000, CRC(8c304b56) SHA1(f99298b7942c0bafb6b8038b2ac3b80b75034e34) )
+ ROM_LOAD16_BYTE( "408.c2", 0x000001, 0x80000, CRC(9a0758d6) SHA1(ac1c147fe55c80082c9a68a86c30b516ff086cc4) )
+ROM_END
+
+
+// 409 : Jonas Indiana and the Lost Temple of Ra by Blastar (c) 2005
+// Bugs: Insert Coin causes reboot; You can climb into the ceiling and get stuck there; can't jump from one rope to another
+ROM_START( ltorb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "409.p1", 0x000000, 0x040000, CRC(353f6b05) SHA1(ae2ebb9a08e936a86cd09aaafda9e90826461bbf) )
+
+ NEO_SFIX_64K( "409.s1", CRC(8224d8b7) SHA1(2e7b176e5dffd8a44fa813b928155801d80b1ee6) )
+
+ NEO_BIOS_AUDIO_64K( "409.m1", CRC(6847fd52) SHA1(6e6d9045299966d41e3f193b3aff032d5b5e135d) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "409.v1", 0x000000, 0x080000, CRC(0329c2e7) SHA1(44c7f04d4e37fb5a06b0366d291f80c3a67a46f5) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "409.c1", 0x000000, 0x080000, CRC(8b607198) SHA1(23dc0b285518f3e80a8feab4d674d625e76e8896) )
+ ROM_LOAD16_BYTE( "409.c2", 0x000001, 0x080000, CRC(6b96b59c) SHA1(a62600c337d7f6821ce56bdfd5c484f05c88187f) )
+ROM_END
+
+
+// 410 : Codename: Blut Engel by Blastar (c) 2005
+// Bugs: Insert Coin causes reboot
+ROM_START( cnbe )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "410.p1", 0x000000, 0x080000, CRC(7ece4186) SHA1(fc4ed3b5ed551744542c2ff1e45a6e97c68eff88) )
+
+ NEO_SFIX_64K( "410.s1", CRC(40a4698f) SHA1(be631408b261906f36c41c58c775c1a4c418a256) )
+
+ NEO_BIOS_AUDIO_128K( "410.m1", CRC(a5821c9c) SHA1(81779f12bbb012bf910c484725779e03b07e44ec) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "410.v1", 0x000000, 0x080000, CRC(70191764) SHA1(7dff2122c32886a3626c0d7befc7e7c3961c6cee) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "410.c1", 0x000000, 0x100000, CRC(0f4fea6f) SHA1(2eeaa661272817dc205072cd63d8bffbe7d6fbec) )
+ ROM_LOAD16_BYTE( "410.c2", 0x000001, 0x100000, CRC(3d5fc36f) SHA1(59c045bc5999ccd6c1413364a6cd337a858f599e) )
+ROM_END
+
+
+// 411 : NGEM2K by Blastar (c) 2006
+// No sound
+// Bugs: Insert Coin causes reboot
+ROM_START( ngem2k )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "411.p1", 0x000000, 0x080000, CRC(f2c42fe3) SHA1(fcd7453019ad21ecf77999a60b6792fc8d72d409) )
+
+ NEO_SFIX_64K( "411.s1", CRC(fb3c02d2) SHA1(961cf3cfd56e9ace059265f0ff4c283289972938) )
+
+ NEO_BIOS_AUDIO_128K( "411.m1", CRC(b1f44a15) SHA1(a1d7b498430b713b15ce886bac2ea473adadfb0c) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "411.v1", 0x000000, 0x080000, CRC(c32199f0) SHA1(2e17a6736c27d703c64d58fdc1b43edd8bb36d35) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "411.c1", 0x000000, 0x100000, CRC(a8e2ab47) SHA1(69a6ee8f659a63600a48e31b10782fba263e32e2) )
+ ROM_LOAD16_BYTE( "411.c2", 0x000001, 0x100000, CRC(a738ea1c) SHA1(3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3) )
+ROM_END
+
+
+// 412 : Neo Pong by Neodev (c) 2002
+// MAME bug : On the title screen, there's a vertical blank area that slowly moves from left to right
+ROM_START( neopong ) // v1.1
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "412.p1", 0x000000, 0x020000, CRC(9f35e29d) SHA1(261ce9305950debbc2fe088a45ab0fa83d6cf10d) )
+
+ NEO_SFIX_128K( "412.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "412.m1", CRC(78c851cb) SHA1(a9923c002e4e2171a564af45cff0958c5d57b275) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "412.v1", 0x000000, 0x200000, CRC(6c31223c) SHA1(ede3a2806d7d872a0f737626a23ecce200b534e6) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "412.c1", 0x000000, 0x100000, CRC(f5a57d1a) SHA1(781170ae439f48fcbcee6af4cb3a1367dbb70498) )
+ ROM_LOAD16_BYTE( "412.c2", 0x000001, 0x100000, CRC(affde64e) SHA1(25ba8b4f6f961027d97d35f13cebeaee2dbb6f5a) )
+ROM_END
+
+ROM_START( neoponga ) // v1.0, has no sound, does not satisfy the watchdog
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "412a.p1", 0x000000, 0x020000, CRC(31b724d7) SHA1(e374613609aeda64b547d8ce38d2078b6ed55ad5) )
+
+ NEO_SFIX_128K( "412.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "412a.c1", 0x000000, 0x100000, CRC(d7587282) SHA1(6fbc317dede78265dc4cfd2a6d79968320b8fd50) )
+ ROM_LOAD16_BYTE( "412a.c2", 0x000001, 0x100000, CRC(fefc9d06) SHA1(f191bcd3683a184b5a7d6046156e0b2bca231e95) )
+ROM_END
+
+
+// 413 : WW2 demo by Rastersoft
+// No sound
+// The supplied m1 gives a Z80 ERROR, so it has been replaced.
+// If the game doesn't work, read the FAQ.
+// Bugs: Insert Coin freezes HBMAME.
+ROM_START( ww2demo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "413.p1", 0x000000, 0x80000, CRC(d53762ff) SHA1(231174363266ec1d5a028295f36bddfbf0a54235) )
+
+ NEO_SFIX_64K( "413.s1", CRC(3fda5d1a) SHA1(ec0a9e008f56d694184e6b553c271763529eb711) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+ // Z80 error NEO_BIOS_AUDIO_128K( "413.m1", CRC(99c2354e) SHA1(fa2ea40ae3d01bda909c82b6c4baa01335c6fe8f) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "413.c1", 0x000000, 0x100000, CRC(955efd3e) SHA1(b1c3ebff7158f1653b3b9bc5a52b06d8c62da1bb) )
+ ROM_LOAD16_BYTE( "413.c2", 0x000001, 0x100000, CRC(c213940f) SHA1(430c017f93ee87127a146bcfba684c840bc69f5b) )
+ROM_END
+
+
+// 414 : Frog Feast demo by Rastersoft
+// No sound
+ROM_START( ffeastd )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "414.p1", 0x000000, 0x80000, CRC(db0417ec) SHA1(dff85b47749142b3e965b2a9b5b8857096e58464) )
+
+ NEO_SFIX_64K( "414.s1", CRC(29814a2c) SHA1(a7313fa1280a2a2340b1c8a0d522354d82496a68) )
+
+ NEO_BIOS_AUDIO_64K( "407.m1", CRC(7669de64) SHA1(caa170b561df4f68000beaad41d942c66a4a10ee) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "407.v1", 0x000000, 0x080000, CRC(504bf849) SHA1(13a184ec9e176371808938015111f8918cb4df7d) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "414.c1", 0x000000, 0x100000, CRC(22a65cea) SHA1(3fb8cb92cd8d40c2b24e2b54833fde4c7dc255a4) )
+ ROM_LOAD16_BYTE( "414.c2", 0x000001, 0x100000, CRC(63ddd657) SHA1(41fb6fdd66fcdf5fce42eb01c8a3e00e632f6347) )
+ROM_END
+
+
+// 415 : Frog Feast by Rastersoft
+ROM_START( ffeast ) /* Frog Feast - Full Version */
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "415.p1", 0x000000, 0x080000, CRC(c26848da) SHA1(33737f8d2366b3a554ceb9ea2fcd85aaed75f344) )
+
+ NEO_SFIX_128K( "415.s1", CRC(88f4cd13) SHA1(7f3b28c903ecf90478f2dcddf790714d7363aa2b) )
+
+ NEO_BIOS_AUDIO_128K( "415.m1", CRC(c825b484) SHA1(7dea872ae39ef83981436aaf3c9b602ac8bec676) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "415.v1", 0x000000, 0x100000, CRC(2639da11) SHA1(4309e46014d623066d427ce3473542c99f678f86) )
+ ROM_LOAD( "415.v2", 0x100000, 0x100000, CRC(e5eda58b) SHA1(ae203cfedf4b563da914939e0a4d7f4697070f82) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "415.c1", 0x000000, 0x100000, CRC(7b2f9fb3) SHA1(62deacf16c3b259422f962c9604b4efc2f32d91b) )
+ ROM_LOAD16_BYTE( "415.c2", 0x000001, 0x100000, CRC(a7f18a6f) SHA1(1a277c79eaacf09d12a4b7c88421e7a6d6153503) )
+ROM_END
+
+
+// 416 : Neogeo demo by Charles Doty
+// Left-right will move the turning logo
+// No sound
+ROM_START( neodemo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "416.p1", 0x000000, 0x080000, CRC(fbfce2a4) SHA1(53472533456e131bee9fa792996b4110999b5c21) )
+
+ NEO_SFIX_128K( "412.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x080000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "416.c1", 0x000000, 0x100000, CRC(870b28ea) SHA1(255f8e394534afc929bad31f253a2e8b03253e07) )
+ ROM_LOAD16_BYTE( "416.c2", 0x000001, 0x100000, CRC(1ecf8128) SHA1(66d200ceb023a1ff3cbe4ef7c5b1ef0068ab47f0) )
+ROM_END
+
+
+// 417 : Nyan Cat demo by Furrtek
+// Movement keys will move nyancat around
+// Bugs: Insert Coin freezes HBMAME.
+ROM_START( nyan )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "417.p1", 0x000000, 0x20000, CRC(1c9e076f) SHA1(95361da308bf8f946fa218424c991ace872fd374) )
+
+ NEO_SFIX_128K( "417.s1", CRC(2e7f15ec) SHA1(b41ac46ca2a81cf240dc6df4a80694ecebf65202) )
+
+ NEO_BIOS_AUDIO_128K( "417.m1", CRC(97b9a8e0) SHA1(161a06ac0a6d33a6b337a5c6ec65345cd10472e4) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "417.v1", 0x000000, 0x3d400, CRC(8870e0bb) SHA1(5f6f33c07f04bb00337cca6ee4db1cfa7beaa63e) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "417.c1", 0x000000, 0x400000, CRC(71128701) SHA1(76ae8ef8f032621706cb39161f01ef7e747ceb70) )
+ ROM_LOAD16_BYTE( "417.c2", 0x000001, 0x400000, CRC(85dcccef) SHA1(4270b11c9f9400b3b818124c96db352d94512807) )
+ROM_END
+
+
+// 418 : Tetris by Crim
+ROM_START( ngtetris )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "418.p1", 0x000000, 0x80000, CRC(3465569a) SHA1(51506d549fa048581321fc39403c0a3bf8f77467) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "418.m1", CRC(6b3703c6) SHA1(6fa41b713f03e0957f410a387aa896e7d924acb2) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "418.v1", 0x000000, 0x80000, CRC(2be8e290) SHA1(198cff1b1d70f7d05344d6ab38a4354f993dc4b8) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "418.c1", 0x000000, 0x80000, CRC(acc6d1d4) SHA1(1f6ad8578d8edaa22a35ad58dc76de8543a96db9) )
+ ROM_LOAD16_BYTE( "418.c2", 0x000001, 0x80000, CRC(7ec06ab5) SHA1(3a8503be7f14d451f5ae964888b385334c12e8c6) )
+ROM_END
+
+
+// 419 : Neo Thunder demo by Sebastian Mihai
+// No sound
+ROM_START( neothund )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "419.p1", 0x000000, 0x100000, CRC(f7050757) SHA1(b73009050905ad2b1f06690e0106e59fb5ede86b) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "419.c1", 0x000000, 0x100000, CRC(48b9126e) SHA1(38bf1296c3d8762372d4eab785f34507a4f8776c) )
+ ROM_LOAD16_BYTE( "419.c2", 0x000001, 0x100000, CRC(214df62e) SHA1(21e4ce2a0ac636081c9e07a294cb44987692039e) )
+ROM_END
+
+
+// 420 : Castlevania demo by BarfHappy
+// No sound.
+ROM_START( neocstlv )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "420.p1", 0x000000, 0x080000, CRC(8d6cd9f2) SHA1(23258690b0268367420cb25ef951cfb15f79b88e) )
+
+ NEO_SFIX( 0x40000, "420.s1", CRC(be950195) SHA1(883a99b79b495f66f81025bf4c1f5fb23cc0b4c7) )
+
+ NEO_BIOS_AUDIO_128K( "420.m1", CRC(89c71460) SHA1(3c675b9b0e46be2cafd2aa8858a40efd07034fcd) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "420.c1", 0x000000, 0x100000, CRC(960a7414) SHA1(753a8af8bfe9a6e9322744b9a31c8d8ef3615cae) )
+ ROM_LOAD16_BYTE( "420.c2", 0x000001, 0x100000, CRC(24a961d0) SHA1(c11dd77c9df0f829461bb3aebb3c6287b7e703f9) )
+ROM_END
+
+
+// 421 : 3D demo by Oxygene
+ROM_START( neo3d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "421.p1", 0x000000, 0x080000, CRC(791f6042) SHA1(d44848322d08daad91c67c7dc7e9ee985d582b2b) )
+
+ NEO_SFIX_128K( "412.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "421.m1", CRC(7e74cc1f) SHA1(2855577a9785baa4076567de0b37fc0d0117abe5) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "421.c1", 0x000000, 0x100000, CRC(a7eaca76) SHA1(7b046932466092e250dc879d76656227102037c5) )
+ ROM_LOAD16_BYTE( "421.c2", 0x000001, 0x100000, CRC(042f2cde) SHA1(225b03541ac3d5258de2c33d93e46e068798731f) )
+ROM_END
+
+
+// 422 : Time's UP! demo by NGF
+ROM_START( timesupd )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "422.p1", 0x000000, 0x200000, CRC(be86adb1) SHA1(4b363bab51dfc43b2302956f79a0b1d5202339ac) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "422.m1", CRC(fe795d11) SHA1(53ba44f2197aa700229f18dee6513bc0c2619904) )
+
+ ROM_REGION( 0x800000, "ymsnd", 0 )
+ ROM_LOAD( "422.v1", 0x000000, 0x400000, CRC(13b8f47b) SHA1(4f0384101f9f6fce8c86a27a11a2b9d43a84a154) )
+ ROM_LOAD( "422.v2", 0x400000, 0x400000, CRC(6fdd663d) SHA1(9667f11b4350285d0722c67052ff4e9a63a3409f) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "422.c1", 0x000000, 0x200000, CRC(c19a300a) SHA1(3ab4ec4b10583257b92f5a989434db89f8130626) )
+ ROM_LOAD16_BYTE( "422.c2", 0x000001, 0x200000, CRC(fdb3f7ed) SHA1(dd1d69515e58e9fba8cefb1c4cd808dfea0475d9) )
+ROM_END
+
+
+// 424 : Transparency demo by NGF
+ROM_START( ngftdemo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "424.p1", 0x000000, 0x080000, CRC(84d87190) SHA1(7b944603a47a062c050faf9d7e2f9ed754c325cf) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "424.m1", CRC(5ea216be) SHA1(5ae7e878a08dcd5a1a3b5d25abfe98eea0dfc7d3) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "424.v1", 0x000000, 0x200000, CRC(d03c87eb) SHA1(033815e3cf8fa3732c481ef308aacea595e3e008) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "424.c1", 0x000000, 0x200000, CRC(b2fba994) SHA1(278bc9b2f969cec8160dbea879426bbf2c7ea2d4) )
+ ROM_LOAD16_BYTE( "424.c2", 0x000001, 0x200000, CRC(37495ab2) SHA1(b6caba50aaf7cf73cfd5c23302fac4785baafe43) )
+ROM_END
+
+
+// 425 : Chip n Dale intro from Raregame
+ROM_START( cndi ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "425.p1", 0x000000, 0x800000, CRC(2df9a41d) SHA1(f08d81f529f17d22218b4bb52840f4a13f5821a2) )
+
+ NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "425.m1", 0x0000, 0x2000, CRC(ae120a59) SHA1(11a49a82007810890ac01757af217ce76c78335b) )
+ // alternate in MultiJet: ROM_LOAD( "425a.m1", 0x0000, 0x2000, CRC(591adc4f) SHA1(02886106b5bbcd1c63a7ccd5c91456a785b0621a)
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x092000, "ymsnd", 0 )
+ ROM_LOAD( "425.v1", 0x000000, 0x092000, CRC(91d45537) SHA1(2e3fe9733a49a7d5597fea40f59274133c331795) )
+ // alternate in MultiJet: ROM_LOAD( "425a.v1", 0x000000, 0x091000, CRC(15d318a6) SHA1(10f99dbded4093bac104ce954e93dba7ce8c4ade) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "425.c1", 0x0000000, 0x400000, CRC(55bd32fc) SHA1(9ca14628b50182257e812a64ae7779b677f49b3a) )
+ ROM_LOAD16_BYTE( "425.c2", 0x0000001, 0x400000, CRC(bbb43733) SHA1(cbb698354f34045a08f3f30ccd54796374c47ab9) )
+ ROM_LOAD16_BYTE( "425.c3", 0x0800000, 0x400000, CRC(715e0318) SHA1(ceab1079b9e8d53f32f0aafce5d7cda037a91e02) )
+ ROM_LOAD16_BYTE( "425.c4", 0x0800001, 0x400000, CRC(016f3c7e) SHA1(05fc02c571008dfa83eea11dc596248cee53153a) )
+ ROM_LOAD16_BYTE( "425.c5", 0x1000000, 0x400000, CRC(28c6cb8c) SHA1(05acb12720a12918debed333243b4bc42555a0b3) )
+ ROM_LOAD16_BYTE( "425.c6", 0x1000001, 0x400000, CRC(9c89503f) SHA1(8c3fc78f7bb903684367d663ede13b87c72c8cca) )
+ ROM_LOAD16_BYTE( "425.c7", 0x1800000, 0x400000, CRC(074dd407) SHA1(83f4c80ab88d506152b375480b2fabb0e4ed2eaa) )
+ ROM_LOAD16_BYTE( "425.c8", 0x1800001, 0x400000, CRC(5ddb7db5) SHA1(29cf08e39d7454fdeb7ab4a13afff1d422c7c859) )
+ROM_END
+
+
+// 426 : Darkwing Duck intro from Raregame
+ROM_START( dwi ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "426.p1", 0x000000, 0x800000, CRC(8e3f2ea8) SHA1(80efd45770938b2dc3ac8c67d823bae4369a68aa) )
+
+ NEO_SFIX_64K( "426.s1", CRC(3dc5c1ef) SHA1(fa194481524cd95ec7188fef0857ef4d2435d7eb) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "426.m1", 0x0000, 0x2000, CRC(2249e065) SHA1(3dc737888846acfbe693452b03ee2b5c09ff9408) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x09b000, "ymsnd", 0 )
+ ROM_LOAD( "426.v1", 0x000000, 0x09b000, CRC(13bb4ce4) SHA1(0762db7991a5958ae7d8fd5cad2a850f1803a372) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "426.c1", 0x0000000, 0x400000, CRC(2b8bda94) SHA1(68a8239a620dba52762fec548b44c7d0e703fca3) )
+ ROM_LOAD16_BYTE( "426.c2", 0x0000001, 0x400000, CRC(5345e4de) SHA1(eee16fc63c901184b1b59dc3edcea260e82b5bf5) )
+ ROM_LOAD16_BYTE( "426.c3", 0x0800000, 0x400000, CRC(c6185f14) SHA1(46539c90a2c3e59b7736925cdd59700ca99ac1e1) )
+ ROM_LOAD16_BYTE( "426.c4", 0x0800001, 0x400000, CRC(c9e59701) SHA1(67b5c396591e00ca6d58d35b7d95465d6a65d3eb) )
+ ROM_LOAD16_BYTE( "426.c5", 0x1000000, 0x400000, CRC(42dd1c90) SHA1(1ca19d11a7d0f9f8dbedf5c8fe2eadfc28337ad9) )
+ ROM_LOAD16_BYTE( "426.c6", 0x1000001, 0x400000, CRC(9fa6d651) SHA1(653592013a44b804b713302f17b4109b316662ce) )
+ ROM_LOAD16_BYTE( "426.c7", 0x1800000, 0x400000, CRC(5cfa6886) SHA1(e550e898f64a2ad9992aaa4ff7a64d6881294ce8) )
+ ROM_LOAD16_BYTE( "426.c8", 0x1800001, 0x400000, CRC(59c37871) SHA1(7413282800d4461ea151d10b91fa24fef1df94a0) )
+ROM_END
+
+
+// 427 : Ghostbusters intro from Raregame
+ROM_START( gbi ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "427.p1", 0x000000, 0x100000, CRC(af69ef5f) SHA1(e218d1c99e491afcf1887ef9f5bed3e7a5e53fe4) )
+ ROM_LOAD16_WORD_SWAP( "427.p2", 0x100000, 0x400000, CRC(f57e393f) SHA1(4e4ac08db6cc28bcc47808854b1ceb407a486fe5) )
+
+ NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "427.m1", 0x0000, 0x2000, CRC(6624e642) SHA1(03a723c477905425ced965a63fb6d006abd045e9) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x094a00, "ymsnd", 0 )
+ ROM_LOAD( "427.v1", 0x000000, 0x094a00, CRC(44864761) SHA1(35334b93c65b3e27338290c2ba1f73aa902aa893) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "427.c1", 0x0000000, 0x400000, CRC(4281fecd) SHA1(a4f4c278b28740cde042f81769c8c10e5d274fcf) )
+ ROM_LOAD16_BYTE( "427.c2", 0x0000001, 0x400000, CRC(0f07018c) SHA1(eccd998c8fe4c4e3039f104dbdc89713cd9e10cb) )
+ ROM_LOAD16_BYTE( "427.c3", 0x0800000, 0x400000, CRC(a4589b2a) SHA1(ff3784921b093f61c3f620c26f296b8f4f798028) )
+ ROM_LOAD16_BYTE( "427.c4", 0x0800001, 0x400000, CRC(2a72bd04) SHA1(8d30b1851ca706b669d8d02b1d17a2b40a424b8d) )
+ ROM_LOAD16_BYTE( "427.c5", 0x1000000, 0x400000, CRC(ad3b72f9) SHA1(0274f7b85cb1a53a5f98399ac1952418803ab765) )
+ ROM_LOAD16_BYTE( "427.c6", 0x1000001, 0x400000, CRC(963e0941) SHA1(04ae20247e74f27721a2a87f0acd41a733c6f753) )
+ROM_END
+
+
+// 428 : Robocop intro from Raregame
+ROM_START( rci ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "428.p1", 0x000000, 0x800000, CRC(adcb4fe0) SHA1(596242e344d1e171eed7ef242c10aec1a0090acf) )
+
+ NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "428.m1", 0x0000, 0x2000, CRC(c4d35e83) SHA1(0f2bb58e6e545090a11f7fbf471dcd46768a313b) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x096000, "ymsnd", 0 )
+ ROM_LOAD( "428.v1", 0x000000, 0x096000, CRC(ecb284a9) SHA1(1ff34e6f3091ddf0da7b8afb06b903ab39d0b629) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "428.c1", 0x0000000, 0x400000, CRC(8cf565a0) SHA1(c8d383d96b03be9e96fcea94b355c5c33717b4e1) )
+ ROM_LOAD16_BYTE( "428.c2", 0x0000001, 0x400000, CRC(76ef561d) SHA1(3dfd4d923b7381e8f1ec4512915a05efa299e255) )
+ ROM_LOAD16_BYTE( "428.c3", 0x0800000, 0x400000, CRC(7166790c) SHA1(778db868373c4fa00899f224339c0d171519002a) )
+ ROM_LOAD16_BYTE( "428.c4", 0x0800001, 0x400000, CRC(c0cdcbfc) SHA1(d2bf8c0560e593820f2a556779602cabb3272b8d) )
+ ROM_LOAD16_BYTE( "428.c5", 0x1000000, 0x400000, CRC(a5ddc363) SHA1(d2bee74072c2e1b5cac0fc422472aa5d53bc7358) )
+ ROM_LOAD16_BYTE( "428.c6", 0x1000001, 0x400000, CRC(1fcc8fce) SHA1(3a7ecfc3a37b315a0a5c7a0127c9412f8214fd81) )
+ ROM_LOAD16_BYTE( "428.c7", 0x1800000, 0x400000, CRC(be9f9da2) SHA1(9d619074b368db463182be999c2350b815ee2779) )
+ ROM_LOAD16_BYTE( "428.c8", 0x1800001, 0x400000, CRC(7cff633a) SHA1(4d02abcb21dd20ffe7dfc94579fc6cbfaf1bf14e) )
+ROM_END
+
+
+// 429 : Spiderman intro from Raregame
+ROM_START( smi ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "429.p1", 0x000000, 0x100000, CRC(66b5cfe8) SHA1(65754292a085fce07a04fbe8b91a62c42a9695b1) )
+ ROM_LOAD16_WORD_SWAP( "429.p2", 0x100000, 0x400000, CRC(72082aea) SHA1(a56a8d9196c7d6cc5d66204623cce964e1feda05) )
+
+ NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "429.m1", 0x0000, 0x2000, CRC(6a02cb1d) SHA1(fffd39708bfb121496c78d01e53f07aa9a539c47) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x096100, "ymsnd", 0 )
+ ROM_LOAD( "429.v1", 0x000000, 0x096100, CRC(95c138da) SHA1(7bfcd525ecf01737ec85db88355323d676f1f03b) )
+
+ ROM_REGION( 0x1800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "429.c1", 0x0000000, 0x400000, CRC(8e5ccfdd) SHA1(a26a3cadf67f864ded64daca3af13a8db8a73b62) )
+ ROM_LOAD16_BYTE( "429.c2", 0x0000001, 0x400000, CRC(a6406f5b) SHA1(fe63d5aba68bc51861d44ad3ec385e05fd3198c5) )
+ ROM_LOAD16_BYTE( "429.c3", 0x0800000, 0x400000, CRC(adfff926) SHA1(39a1c634168803181b43843dbd562405ed7a8fe6) )
+ ROM_LOAD16_BYTE( "429.c4", 0x0800001, 0x400000, CRC(068c307f) SHA1(47d52fa960a2451f20d6b45c87aef7f5b78e00a5) )
+ ROM_LOAD16_BYTE( "429.c5", 0x1000000, 0x400000, CRC(9a5cf7a6) SHA1(2c6a0fd9139152a85f936323f9e8a26b13819fc2) )
+ ROM_LOAD16_BYTE( "429.c6", 0x1000001, 0x400000, CRC(934f03c0) SHA1(2a54f8fb1be63dcfef2756b9fa5904af3a2ca874) )
+ROM_END
+
+
+// 430 : Teenage Mutant Ninja Turtles intro from Raregame
+ROM_START( tmnti ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "430.p1", 0x000000, 0x800000, CRC(2d5066ff) SHA1(e1109c1e7532fa167ba5c9c90648d019740efd8e) )
+
+ NEO_SFIX_64K( "426.s1", CRC(3dc5c1ef) SHA1(fa194481524cd95ec7188fef0857ef4d2435d7eb) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "430.m1", 0x0000, 0x2000, CRC(953542ef) SHA1(95e93833b938b8d374d29f925777cf296468ae9e) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x094900, "ymsnd", 0 )
+ ROM_LOAD( "430.v1", 0x000000, 0x094900, CRC(273640c3) SHA1(6d445e728fa9c4af00de4f454a73651de7a69ec9) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "430.c1", 0x0000000, 0x400000, CRC(ae1735c1) SHA1(a7a943fb088bccbd5e2c0fa34766bab8169000fa) )
+ ROM_LOAD16_BYTE( "430.c2", 0x0000001, 0x400000, CRC(344281b5) SHA1(a7de77ce07bcd87ba6348278e9c2a61e0f96a499) )
+ ROM_LOAD16_BYTE( "430.c3", 0x0800000, 0x400000, CRC(1058a648) SHA1(878384e1bb8e7666723935a6270d61d3015fe475) )
+ ROM_LOAD16_BYTE( "430.c4", 0x0800001, 0x400000, CRC(1c6ba1b0) SHA1(065f059ef412c69c1a6e7d96e0d41d4151802c95) )
+ ROM_LOAD16_BYTE( "430.c5", 0x1000000, 0x400000, CRC(73a89fb0) SHA1(6b17c878cf6e33f98f3d0779e908264a95a186ba) )
+ ROM_LOAD16_BYTE( "430.c6", 0x1000001, 0x400000, CRC(a139246a) SHA1(facc1caa4f5e4f8476df75c3f68802184072a8ee) )
+ ROM_LOAD16_BYTE( "430.c7", 0x1800000, 0x400000, CRC(ed957842) SHA1(0066baf544b87f7d99334401a93c239ce151df50) )
+ ROM_LOAD16_BYTE( "430.c8", 0x1800001, 0x400000, CRC(8c15d91b) SHA1(4b4d4fd2302c43a5c82bb849803d13d43947a695) )
+ROM_END
+
+
+// 431 : Duck Tales intro from Raregame
+ROM_START( dti ) /* you must use unibios to select Japan Console */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "431.p1", 0x000000, 0x800000, CRC(f975711c) SHA1(0bce8bf92536dd18920cdc1ab66a9c42b0a96df3) )
+
+ NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) )
+
+ ROM_REGION16_BE( 0x20000, "mainbios", 0 )
+ ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) )
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "431.m1", 0x0000, 0x2000, CRC(7761d993) SHA1(b269e9878ca28faa1d36c7fa3dd8e9939714a5f4) )
+ ROM_RELOAD( 0x10000, 0x2000 )
+
+ ROM_REGION( 0x090200, "ymsnd", 0 )
+ ROM_LOAD( "431.v1", 0x000000, 0x090200, CRC(b40c3a5a) SHA1(fda5e4bf3af75aa70df32b21f132c41670212c52) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "431.c1", 0x0000000, 0x400000, CRC(02adabba) SHA1(7b1eafebed09dbfc1b8d9612f0ed477e25ab152d) )
+ ROM_LOAD16_BYTE( "431.c2", 0x0000001, 0x400000, CRC(00bd87ac) SHA1(cb3c02c799109fa7083110825dacf19c89372c55) )
+ ROM_LOAD16_BYTE( "431.c3", 0x0800000, 0x400000, CRC(263307c8) SHA1(5dabc76b18c02c6955abfbc5010b8fbac7d15753) )
+ ROM_LOAD16_BYTE( "431.c4", 0x0800001, 0x400000, CRC(b8330c1e) SHA1(e3ab645eb1101e561bc581e6b2cf696a0ca1e673) )
+ ROM_LOAD16_BYTE( "431.c5", 0x1000000, 0x400000, CRC(ce99fcb8) SHA1(f6222f1b0dc31e5ae5e6c7e3223aa7129b38b772) )
+ ROM_LOAD16_BYTE( "431.c6", 0x1000001, 0x400000, CRC(a6d30781) SHA1(a29e6b39169f9354a64cf64b302b9e91e0671c82) )
+ ROM_LOAD16_BYTE( "431.c7", 0x1800000, 0x400000, CRC(eda15323) SHA1(ef7291870fd30e7b04cb63e59ff45a3c0acab714) )
+ ROM_LOAD16_BYTE( "431.c8", 0x1800001, 0x400000, CRC(400fd4cd) SHA1(20cc401de5d429deb7d076535a0b42fc62c48c52) )
+ROM_END
+
+
+// 435 : Neo Rom Jukebox by CeL
+ROM_START( neoromjb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "435.p1", 0x000000, 0x080000, CRC(fc301f3d) SHA1(e7e02963167a612e29e14cfaa53a8eb441961885) )
+
+ NEO_SFIX_64K( "435.s1", CRC(d78bd9a0) SHA1(17a237166aede98bee27d5b52654414c8a1b071a) )
+
+ NEO_BIOS_AUDIO_128K( "435.m1", CRC(60bf52f5) SHA1(86fcb7693ce0c3ee97f3fd2715d3bcb575511cd7) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "435.v1", 0x000000, 0x080000, CRC(68a2a556) SHA1(8343465cca82db43c0decea74c314f641e4bbb7a) )
+
+ ROM_REGION( 0x200000, "sprites", ROMREGION_ERASEFF )
+ // no sprites - these blank roms not used
+ //ROM_LOAD16_BYTE( "435.c1", 0x000000, 0x100000, CRC(40098266) SHA1(d5bacfff0fc3470b8af4b7675daa816b1e2eb775) )
+ //ROM_LOAD16_BYTE( "435.c2", 0x000001, 0x100000, CRC(40098266) SHA1(d5bacfff0fc3470b8af4b7675daa816b1e2eb775) )
+ROM_END
+
+
+// 437 : Crouching Pony Hidden Dragon demo by Le Cortex
+// If the game doesn't work, read the FAQ.
+ROM_START( cphd )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "437.p1", 0x000000, 0x100000, CRC(de032a95) SHA1(5566ddbb17c8cc4016e25de1afb0ea5c281844ae) )
+ ROM_LOAD16_WORD_SWAP( "437.p2", 0x100000, 0x800000, CRC(7a3a2e41) SHA1(a1bd9e20f29f283f892ed3d937b3a79a63d9a04b) )
+
+ NEO_SFIX_128K( "437.s1", CRC(1736099a) SHA1(486bb9b5abd43d1739c717f0dd3aff0d6ed37ec0) )
+
+ NEO_BIOS_AUDIO_64K( "437.m1", CRC(535a7397) SHA1(3752017175030b05a91078bdf0709af91dee5fc3) )
+
+ ROM_REGION( 0x4000000, "ymsnd", 0 )
+ ROM_LOAD( "437.v1", 0x0000000, 0x2000000, CRC(04eb9c07) SHA1(226f6d6e0365613fb66671775a1f8e5ca62d0549) )
+ ROM_LOAD( "437.v2", 0x2000000, 0x2000000, CRC(9c9aec7f) SHA1(dc54b4ea34724da5dc9e5b498a2b16d7f1ffc1b4) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "437.c1", 0x0000000, 0x2000000, CRC(f3a4b475) SHA1(07a5e8c3a0a8e29f952e448d8eac772ccef6586e) )
+ ROM_LOAD16_BYTE( "437.c2", 0x0000001, 0x2000000, CRC(05ce93a9) SHA1(a29f7ca6d0b3c53a0b2889e716b34fe921da432c) )
+ // not used (blank)
+ //ROM_LOAD16_BYTE( "437.c3", 0x4000000, 0x2000000, CRC(59450445) SHA1(57b587e1bf2d09335bdac6db18902d43dfe76449) )
+ //ROM_LOAD16_BYTE( "437.c4", 0x4000001, 0x2000000, CRC(59450445) SHA1(57b587e1bf2d09335bdac6db18902d43dfe76449) )
+ROM_END
+
+
+// 438: Neo Bubble (author unknown)
+// Incomplete. Patched so that it can show an inbuilt message.
+ROM_START( neobubble )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "438.p1", 0x000000, 0x080000, CRC(a38b6d52) SHA1(be7918c98c65dbf533556886dea935347db6ca14) )
+ ROM_COPY("maincpu",0x398, 0x1398, 0x116)
+ ROM_FILL(0x38C,1,0x3A)
+ ROM_FILL(0x38D,1,0x3C)
+ ROM_FILL(0x38E,1,0x01)
+ ROM_FILL(0x38F,1,0x38)
+ ROM_FILL(0x390,1,0x4E)
+ ROM_FILL(0x391,1,0xB9)
+ ROM_FILL(0x392,1,0x00)
+ ROM_FILL(0x393,1,0x00)
+ ROM_FILL(0x394,1,0x13)
+ ROM_FILL(0x395,1,0x98)
+ ROM_FILL(0x396,1,0x50)
+ ROM_FILL(0x397,1,0x8F)
+ ROM_FILL(0x398,1,0x51)
+ ROM_FILL(0x399,1,0xCD)
+ ROM_FILL(0x39A,1,0xFF)
+ ROM_FILL(0x39B,1,0xF6)
+ ROM_FILL(0x39C,1,0x60)
+ ROM_FILL(0x39D,1,0xFE)
+ // This rom does nothing, just a black screen
+ //ROM_LOAD16_WORD_SWAP( "438a.p1", 0x000000, 0x080000, CRC(cbd8204d) SHA1(d0cbf0b3c4a160fdf0d598fe77b52024d438d595) )
+
+ NEO_SFIX_128K( "412.s1", CRC(cd19264f) SHA1(531be2305cd56d332fb7a53ab924214ade34a9e8) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+ ROM_LOAD( "076-v2.v2", 0x200000, 0x200000, CRC(b61686c3) SHA1(5a3405e833ce36abb7421190438b5cccc8537919) )
+ ROM_LOAD( "076-v3.v3", 0x400000, 0x100000, CRC(b90658fa) SHA1(b9a4b34565ce3688495c47e35c9b888ef686ae9f) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "438.c1", 0x000000, 0x100000, CRC(82ce3020) SHA1(65b572b5304bb259d0a5924d74ec3e1c5b3ac699) )
+ ROM_LOAD16_BYTE( "438.c2", 0x000001, 0x100000, CRC(d209f6f7) SHA1(9d60ac994a1d4004f317aa12a521a8aa6dda5746) )
+ ROM_LOAD16_BYTE( "076-c3.c3", 0x400000, 0x200000, CRC(d06431e3) SHA1(643bd1ad74af272795b02143ba80a76e375036ab) )
+ ROM_LOAD16_BYTE( "076-c4.c4", 0x400001, 0x200000, CRC(4b1c089b) SHA1(cd63961d88c5be84673cce83c683a86b222a064d) )
+ROM_END
+
+
+// 439 : Primo demo by BEY
+// No sound.
+ROM_START( iocero )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "439.p1", 0x000000, 0x100000, CRC(a315fb81) SHA1(c958d78de5d83ff31c9545d54c6429c85cdbdb64) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "439.c1", 0x000000, 0x100000, CRC(d68941e1) SHA1(20b70416b9b284bae576b385ddc63fe9a47cf976) )
+ ROM_LOAD16_BYTE( "439.c2", 0x000001, 0x100000, CRC(df7e359f) SHA1(08d45350047ad9bcad17739d8b00b911b47417ee) )
+ROM_END
+
+
+// 440 : Galaga demo by BEY
+// No sound.
+ROM_START( neogal1 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "440_1.p1", 0x000000, 0x100000, CRC(7226db5c) SHA1(d598096265286b5d32a3c6abbea8c281ee94458c) )
+
+ NEO_SFIX( 0x2000, "440_1.s1", CRC(90557449) SHA1(a6aac83715a5d2c7d0436c3d0b80d61459316ee7) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "440_1.c1", 0x000000, 0x100000, CRC(6de8c6f6) SHA1(51d29bab7b482a5a850af08f9939a42e7127df3b) )
+ ROM_LOAD16_BYTE( "440_1.c2", 0x000001, 0x100000, CRC(fa5f0c1d) SHA1(8e8fb1f0314450ab9cdbd9619a9cdccdd78fea99) )
+ROM_END
+
+// No sound.
+ROM_START( neogal1t )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "440_1t.p1", 0x000000, 0x100000, CRC(01dc85fd) SHA1(7fed5c859901066e27bac777d3846e69185648e6) )
+
+ NEO_SFIX( 0x2000, "440_1.s1", CRC(90557449) SHA1(a6aac83715a5d2c7d0436c3d0b80d61459316ee7) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "440_1t.c1", 0x000000, 0x100000, CRC(f8221e34) SHA1(c8bb90c03213dc493bdaa36d94c713508303a275) )
+ ROM_LOAD16_BYTE( "440_1t.c2", 0x000001, 0x100000, CRC(c30cf1fc) SHA1(774a1896fc15cdf9fddf1e1a874ea43fe4136bd6) )
+ROM_END
+
+// No sound.
+ROM_START( neogal1d )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "440_1d.p1", 0x000000, 0x100000, CRC(2c49e6ec) SHA1(69602bce2a119f644385b1cfda5ee38dbc081679) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "440_1.c1", 0x000000, 0x100000, CRC(6de8c6f6) SHA1(51d29bab7b482a5a850af08f9939a42e7127df3b) )
+ ROM_LOAD16_BYTE( "440_1.c2", 0x000001, 0x100000, CRC(fa5f0c1d) SHA1(8e8fb1f0314450ab9cdbd9619a9cdccdd78fea99) )
+ROM_END
+
+ROM_START( neogal2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "440_2.p1", 0x000000, 0x100000, CRC(a6321942) SHA1(e2085c677e124708770846c2b9f1d3ba9e6a4323) )
+
+ NEO_SFIX_128K( "419.s1", CRC(a545b593) SHA1(09077b63595eebb7dddd55e041e7786164df0ead) )
+
+ NEO_BIOS_AUDIO_128K( "202-m1.m1", CRC(9c0291ea) SHA1(3fa67c62acba79be6b3a98cc1601e45569fa11ae) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "202-v1.v1", 0x000000, 0x80000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "440_1.c1", 0x000000, 0x100000, CRC(6de8c6f6) SHA1(51d29bab7b482a5a850af08f9939a42e7127df3b) )
+ ROM_LOAD16_BYTE( "440_1.c2", 0x000001, 0x100000, CRC(fa5f0c1d) SHA1(8e8fb1f0314450ab9cdbd9619a9cdccdd78fea99) )
+ROM_END
+
+
+// 441 : Neo Geo Sound Test by BEY
+// Bugs: Insert Coin causes reboot
+ROM_START( neotest )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "441.p1", 0x000000, 0x80000, CRC(2ee900b2) SHA1(4b083f4e1e502ac17e3e396d8655870dbac7fba7) )
+
+ NEO_SFIX( 0x2000, "440_1.s1", CRC(90557449) SHA1(a6aac83715a5d2c7d0436c3d0b80d61459316ee7) )
+
+ NEO_BIOS_AUDIO_128K( "441.m1", CRC(ad14cc39) SHA1(852f71ebb54c2c26795e8a2771d1638e42e0c634) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "441.v1", 0x000000, 0x100000, CRC(c1c07bd5) SHA1(79a25211590dc1192913a7655d7f2d1682acdc97) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "440_1.c1", 0x000000, 0x100000, CRC(6de8c6f6) SHA1(51d29bab7b482a5a850af08f9939a42e7127df3b) )
+ ROM_LOAD16_BYTE( "440_1.c2", 0x000001, 0x100000, CRC(fa5f0c1d) SHA1(8e8fb1f0314450ab9cdbd9619a9cdccdd78fea99) )
+ROM_END
+
+
+// 444 : Santaball by M.Priewe.
+// Press 1 to play a game of Pong.
+// If the game misbehaves, read the FAQ.
+ROM_START( santabll )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "444.p1", 0x000000, 0x100000, CRC(2af7a77c) SHA1(ff79d4695e8060f5a7b981524303336a0ad99c0c) )
+
+ NEO_SFIX_128K( "444.s1", CRC(ac031928) SHA1(7516593efc70e6effed8f5423e9736d6555b3baf) )
+
+ NEO_BIOS_AUDIO_64K( "444.m1", CRC(37a8d679) SHA1(957de2aa1775502a51b4e2d5cb6268cee00f6c2a) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "444.v1", 0x000000, 0x100000, CRC(d0150804) SHA1(b3d4cdb6d0f426de3801eb04d56f867bec8fe611) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "444.c1", 0x000000, 0x100000, CRC(1e271a9b) SHA1(5cae43aa094d5ee34983bc70aeab06652a6b0e7f) )
+ ROM_LOAD16_BYTE( "444.c2", 0x000001, 0x100000, CRC(1c7fd396) SHA1(aa2e2fff1ad1804631f3058b9666b970a368a847) )
+ROM_END
+
+
+// 446 : Monitor Test by M.Priewe.
+// No sound.
+ROM_START( ngmontst )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "446.p1", 0x000000, 0x100000, CRC(17a4ad61) SHA1(38c0f2022947043f30a27ccda06cc709fe980fed) )
+
+ NEO_SFIX_128K( "sfix.sfix", CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "446.c1", 0x000000, 0x100000, CRC(715df715) SHA1(74534eb9bb48a04f25d0044b1f2b57e59f49b06f) )
+ ROM_LOAD16_BYTE( "446.c2", 0x000001, 0x100000, CRC(d8ee3c9b) SHA1(c731eaffae34b4394e290e68ca8c3700e1c6dc2b) )
+ROM_END
+
+
+// 457 : MVS Test 01 by Furrtek.
+ROM_START( test01 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "457.p1", 0x000000, 0x080000, CRC(dd059433) SHA1(17cc7c48464d2d2a3d104f47e70a5f7cf3e19a5e) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "052-c1.c1", 0x000000, 0x100000, CRC(53e1c002) SHA1(2125b1be379ea7933893ffb1cd65d6c4bf8b03bd) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "052-c2.c2", 0x000001, 0x100000, CRC(776a2d1f) SHA1(bca0bac87443e9e78c623d284f6cc96cc9c9098f) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+
+// 458 : KnackiBalls by Furrtek. Patched by Robbbert.
+// Bad address alignment causes it to continually reboot, so I have patched it.
+// Instruction 5019 inserted to align A1 to the next word. So, some instructions are pushed upward.
+// Not sure if the result is totally correct, but at least it runs now.
+// No sound.
+ROM_START( knacki )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "458.p1", 0x000000, 0x080000, CRC(56c0d270) SHA1(aebb3223e519f76e2abfa59f48626aa5e970ce4c) )
+ ROM_COPY("maincpu",0x3e2, 0x3e4, 16) // move code so we can insert 5019
+ ROM_FILL(0x12d, 1, 0xf4) // jump to another rts as we are overwriting this one's destination
+ ROM_FILL(0x3e2, 1, 0x50) // insert 50
+ ROM_FILL(0x3e3, 1, 0x19) // insert 19
+ ROM_FILL(0x3e7, 1, 0xc4) // fix jump
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "458.m1", CRC(183c234a) SHA1(366c875703ced09c460d1810aadb3cd2f2fcd067) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "458.v1", 0x000000, 0x200000, CRC(ad1d1925) SHA1(4fa973bd8d2793ef553ea4e536193d3b89027828) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "458.c1", 0x000000, 0x100000, CRC(71dd4d25) SHA1(682671b55375dea8f86b25031320611a8c60326e) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "458.c2", 0x000001, 0x100000, CRC(0deccb3d) SHA1(ee9d1e5d3efcea0545a6dae8cd28b913e6f106b6) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ROM_END
+
+
+// 467 : Sprite Experimenter by Furrtek.
+// Bugs: Insert Coin freezes HBMAME
+ROM_START( spriteex )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "467.p1", 0x000000, 0x080000, CRC(9bce0611) SHA1(5fcb0fa6a434baf20972819484430faf44ffa21d) )
+
+ NEO_SFIX_128K( "sfix.sfix", CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
+
+ NEO_BIOS_AUDIO_128K( "467.m1", CRC(78bd1a39) SHA1(11963ee5d01a54e5f7e1b8973adb10960308a091) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "467.v1", 0x000000, 0x10000, CRC(48077f32) SHA1(97784ee122aec09f72b62387796726c3f3e9be5e) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "467.c1", 0x000000, 0x200000, CRC(dcda2ca8) SHA1(b37714532d36608eb7b819396a6796d0d49dbf92) )
+ ROM_CONTINUE( 0x400000, 0x200000 )
+ ROM_LOAD16_BYTE( "467.c2", 0x000001, 0x200000, CRC(c8a4d037) SHA1(6541074be8493bf2c7b869e8dbdb39f3309dcaf7) )
+ ROM_CONTINUE( 0x400001, 0x200000 )
+ROM_END
+
+
+// 470 : ADPCM-B Playback Demo by freem.
+// Note that these 2 old roms are buggy and should be discarded: (use only the 'v3' set)
+// CRC(6d719183) SHA1(e1e064bb785823a1f20f4a931bd7961515de2a98) )
+// CRC(7b8abba4) SHA1(c492c468b34f0a7d57e2abd54d6057f3e470ee27) )
+ROM_START( pcmbdemo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "470.p1", 0x000000, 0x080000, CRC(904e90ad) SHA1(1e13a81a2e0b1926d1745288e81dc51cd1ade5ac) )
+
+ NEO_SFIX_128K( "470.s1", CRC(9647ff8a) SHA1(ecfaa4649d490fae1697e34cc5bbbc386ffa5ef6) )
+
+ NEO_BIOS_AUDIO_128K( "470.m1", CRC(df4acc0c) SHA1(9c2999312ede7a1a415fa151a9acc6c98e510bf0) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "470.v1", 0x000000, 0x80000, CRC(baffec3e) SHA1(58ec4b684220ea558ed7dea99dfed1d24c57e662) )
+
+ ROM_REGION( 0x200000, "sprites", ROMREGION_ERASEFF )
+ // no sprites
+ROM_END
+
+
+// 472 : ADPCM-A Playback Demo by freem.
+ROM_START( pcmademo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "472.p1", 0x000000, 0x080000, CRC(a198ce30) SHA1(17b9ad5fe5136c0425823f49a65d428c544170c5) )
+
+ NEO_SFIX_128K( "472.s1", CRC(c3dddf6e) SHA1(cce290e869ecbd52b7a7ed1e35c2c825450cc24c) )
+
+ NEO_BIOS_AUDIO_128K( "472.m1", CRC(1c667c87) SHA1(3bc2cb708aa9c4618d901da1f627ae719dee445d) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "472.v1", 0x000000, 0x80000, CRC(e7ef9bd8) SHA1(d5de1f63189b3a18382da81f02b20af68996ad7e) )
+
+ ROM_REGION( 0x200000, "sprites", ROMREGION_ERASEFF )
+ // no sprites
+ROM_END
+
+
+// 473 : Twister in a mirror intro by Blastar.
+ROM_START( twister )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "473.p1", 0x000000, 0x080000, CRC(514bf0fd) SHA1(d7d084b83ae5ae776d6cc7b7d183bd79b2ab114a) )
+
+ NEO_SFIX_128K( "473.s1", CRC(111ea86c) SHA1(1251d7ef30493b76b15ddc8975a0278ad4a48434) )
+
+ NEO_BIOS_AUDIO_128K( "473.m1", CRC(c1c27b33) SHA1(655c1b01deacacbdbfe3a89196d4b0d9d3aae1eb) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "473.v1", 0x000000, 0x80000, CRC(0c5e044c) SHA1(e5717ea0e6daaf7c529f1e8cf5e4e73ee4a3f26f) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "473.c1", 0x000000, 0x100000, CRC(72ceed51) SHA1(aa5ead993db739cf34917287988aeb43afa7f7d5) )
+ ROM_LOAD16_BYTE( "473.c2", 0x000001, 0x100000, CRC(27da57ee) SHA1(323fcd0893aec82cc3c78687834920e2eeedb67b) )
+ROM_END
+
+
+// 474 : Sound-Loop Demo by freem.
+// Bugs: The first time 5 is pressed, the game resets. After that it has no effect.
+ROM_START( snddemo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "474.p1", 0x000000, 0x080000, CRC(fbb26284) SHA1(80837fb870e36360f2c8c4576d1b43f3feef3ff5) )
+
+ NEO_SFIX_128K( "474.s1", CRC(a7a76e2a) SHA1(894194f43b0bb884cb6f392bb0c9d1284639e577) )
+
+ NEO_BIOS_AUDIO_64K( "474.m1", CRC(ba37ca7d) SHA1(4bb0897b74eadd7eb2782fcf2ae0a9897b9e8c8f) )
+
+ ROM_REGION( 0x10000, "ymsnd", 0 )
+ ROM_LOAD( "474.v1", 0x000000, 0x10000, CRC(95101457) SHA1(81ca771f441edc01019b8c629709eccc746059ba) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "474.c1", 0x000000, 0x080000, CRC(cad47785) SHA1(538c072417d849f33d1da3f61f98be4674c10762) )
+ ROM_LOAD16_BYTE( "474.c2", 0x000001, 0x080000, CRC(c43d0953) SHA1(1ceb394b495f8a082452d50f78d2d7d8d1ec9a56) )
+ROM_END
+
+
+// 475 : Sprite demo by Kannagi (26-3-2016)
+// Arrows to move fighter around. A = kick; B = punch; C & D slide background left & right. No sound.
+ROM_START( neofightb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "475.p1", 0x000000, 0x080000, CRC(caaf0da5) SHA1(089a89c787d4955fcb11141b50d587caa785c30a) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "475.m1", CRC(ffcbeb27) SHA1(101fee624083f33aac88e73afc69907df0b41de3) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "475.v1", 0x000000, 0x1e3300, CRC(da4f84c0) SHA1(7e9c039a47445ef805adf68c65e20063d93ba601) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "475.c1", 0x000000, 0x200000, CRC(4c2ec7e3) SHA1(572f087d2adb4900dbab39fa9bc517237ddba54e) )
+ ROM_LOAD16_BYTE( "475.c2", 0x000001, 0x200000, CRC(319b0d51) SHA1(f57b4b3c96d94a6887f9e02e53af8eaef59d617a) )
+ROM_END
+
+// 476 : Neo Fight by Kannagi (14-12-2015)
+// Arrows to move fighter around. A = kick; B = punch; C & D slide background left & right. No sound.
+ROM_START( neofighto )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "476o.p1", 0x000000, 0x080000, CRC(b0eb16a0) SHA1(136b1cb9b9daf1b8563c66002d07bb5128d41061) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "476.c1", 0x000000, 0x200000, CRC(99fda4d5) SHA1(c5ff1b724a8cbc209c47eb4fb1eca4f0b76aad5c) )
+ ROM_LOAD16_BYTE( "476.c2", 0x000001, 0x200000, CRC(2e48378a) SHA1(80389cfc420b2e7c5f50c809995a3298a57c697f) )
+ROM_END
+ROM_START( neofight )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "476.p1", 0x000000, 0x080000, CRC(c44e5685) SHA1(59bc5814454e74f069dcdc8d3fb32da5b5b65bec) )
+
+ NEO_SFIX_128K( "052-s1.s1", CRC(97689804) SHA1(fa8dab3b3353d7115a0368f3fc749950c0186fbc) )
+
+ NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "476.c1", 0x000000, 0x200000, CRC(99fda4d5) SHA1(c5ff1b724a8cbc209c47eb4fb1eca4f0b76aad5c) )
+ ROM_LOAD16_BYTE( "476.c2", 0x000001, 0x200000, CRC(2e48378a) SHA1(80389cfc420b2e7c5f50c809995a3298a57c697f) )
+ROM_END
+
+// 477 : Demo that comes with DatImage, by Mega Shocked (26-07-2016)
+// No sound.
+ROM_START( didemo )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "477.p1", 0x000000, 0x200000, CRC(732691f4) SHA1(40bddb4e636799f77b85a5b46fd9c90f9e125dce) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "477.c1", 0x000000, 0x200000, CRC(af99af71) SHA1(81b723a159dc80f2b784eb6027ccece94dc8324b) )
+ ROM_LOAD16_BYTE( "477.c2", 0x000001, 0x200000, CRC(7b17b0f2) SHA1(b11071fd4782592a375f260352a0ca0d0df2c6e5) )
+ROM_END
+
+// 478 : Demo by Mega Shocked (17-08-2016)
+ROM_START(akiradmo)
+ ROM_REGION( 0x400000, "maincpu", 0 )
+ ROM_LOAD( "478.p1", 0x000000, 0x003188, CRC(a87fa008) SHA1(89f41671f185fd5e92237fcf82e9ed60387fafad) )
+ ROM_LOAD( "478.p2", 0x100000, 0x09edf8, CRC(16d8b6b4) SHA1(b246b380b3cca17e11ab223bf4d1aeb605663a03) )
+ ROM_LOAD( "478.p3", 0x200000, 0x074da4, CRC(94a22666) SHA1(e9cb0f159404ddcce10554753e56084fb79f2e60) )
+ ROM_LOAD( "478.p4", 0x300000, 0x076b0c, CRC(d170285c) SHA1(b19bd0de148a68de9dbd18d89417c3dd32518780) )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "478.m1", CRC(37d8cb43) SHA1(b89baa6f41aefad57fb546fd1135506538ab9099) )
+
+ ROM_REGION( 0x100000, "ymsnd", ROMREGION_ERASEFF )
+ ROM_LOAD( "478.v1", 0x000000, 0x100000, CRC(148c5203) SHA1(8ddbfeeac4493f6e6ed7df834fcf1f0cede42ac3) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD( "478.c1", 0x000000, 0x34c700, CRC(84eba506) SHA1(a771cbc5efe7b61114db6b7f776b5ab93f09b2bc) )
+ ROM_LOAD( "478.c2", 0x400000, 0x2e0400, CRC(a731451c) SHA1(aae521c38430a2797c7a60d970a0179673f05215) )
+ ROM_LOAD( "478.c3", 0x800000, 0x249a80, CRC(87b2a616) SHA1(915d5c7bf832b725a3678b3735790f503dd34f48) )
+ROM_END
+
+// 480 : Tech Demo 2 by Luis Miguel Mayor
+// No sound.
+ROM_START( ngtd2 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "480.p1", 0x000000, 0x100000, CRC(35131b60) SHA1(74877b4f1bdbba712b04afdf65bede1d30f846b0) )
+
+ NEO_SFIX_64K( "480.s1", CRC(9a246f50) SHA1(1f1358dd9c2f88d2197d6c8272ec899b7c9a524b) )
+
+ NEO_BIOS_AUDIO_128K( "480.m1", CRC(5ef0d5eb) SHA1(a327d6a88f3c7ccd242fceaffb3ef33a0171c215) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "480.v1", 0x000000, 0x100000, CRC(5ea51b63) SHA1(62126f407175cd7bf44fb5acc1df12fbc0e23df6) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "480.c1", 0x000000, 0x100000, CRC(0ecfa2ba) SHA1(a5a7cbd3b79260f8cc99992067df315b20ae6741) )
+ ROM_LOAD16_BYTE( "480.c2", 0x000001, 0x100000, CRC(f16b9ae8) SHA1(cb43089370a77bdd177db7eb6819ed21c994a914) )
+ROM_END
+
+
+// 802 : Last Hope CD Beta by NG:DEV.Team
+// Bugs: Insert Coin causes reboot; purple boxes instead of graphics; some corrupt graphics
+ROM_START( lhcdb )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "802cd.p1", 0x000000, 0x100000, CRC(83e7b181) SHA1(eb13909c0b062d56d20cbdfe75abf6139eae9ee0) )
+
+ NEO_SFIX_128K( "802cd.s1", CRC(298495d6) SHA1(c217aba6c1916d2e5337bb5c17d979b11a53582e) )
+
+ NEO_BIOS_AUDIO_128K( "802cd.m1", CRC(d9f6c153) SHA1(c08f7ca288be1c34f4b33ed13abd805b5cd66d4e) )
+
+ ROM_REGION( 0xbc3500, "ymsnd", 0 )
+ ROM_LOAD( "802cd.v1", 0x000000, 0x400000, CRC(de563ec3) SHA1(cd0f1a436cdac679792fc78906e718c78369b15a) )
+ ROM_LOAD( "802cd.v2", 0x400000, 0x400000, CRC(93478033) SHA1(a03e0fcb7f51c66ec0bc5d164744db00b96973c2) )
+ ROM_LOAD( "802cd.v3", 0x800000, 0x3c3500, CRC(f0ad87b8) SHA1(f992e84c6cbbc3cab79747a2ca4d646d18bebcbd) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "802cd.c1", 0x000000, 0x400000, CRC(554e6b73) SHA1(3637a8a4474e33eb75ac4a4ce0815f6a514fe337) )
+ ROM_LOAD16_BYTE( "802cd.c2", 0x000001, 0x400000, CRC(7c84b0fc) SHA1(cbd7a7865113e4f21f2b1f990a077fa5c2eae894) )
+ ROM_LOAD16_BYTE( "802cd.c3", 0x800000, 0x400000, CRC(28ec7555) SHA1(f094739272e6017a7193fa96cde3c1ed573a66b6) )
+ ROM_LOAD16_BYTE( "802cd.c4", 0x800001, 0x400000, CRC(8b7c236b) SHA1(1cb3fe81f433a2180c85be935e340da3c55aafdb) )
+ROM_END
+ROM_START( lhcdba ) // v3 rom is different
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "802cd.p1", 0x000000, 0x100000, CRC(83e7b181) SHA1(eb13909c0b062d56d20cbdfe75abf6139eae9ee0) )
+
+ NEO_SFIX_128K( "802cd.s1", CRC(298495d6) SHA1(c217aba6c1916d2e5337bb5c17d979b11a53582e) )
+
+ NEO_BIOS_AUDIO_128K( "802cd.m1", CRC(d9f6c153) SHA1(c08f7ca288be1c34f4b33ed13abd805b5cd66d4e) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "802cd.v1", 0x000000, 0x400000, CRC(de563ec3) SHA1(cd0f1a436cdac679792fc78906e718c78369b15a) )
+ ROM_LOAD( "802cd.v2", 0x400000, 0x400000, CRC(93478033) SHA1(a03e0fcb7f51c66ec0bc5d164744db00b96973c2) )
+ ROM_LOAD( "802cda.v3", 0x800000, 0x400000, CRC(e0fc99ca) SHA1(6de935b54bf5adc4394fe824b001b38eca0291ad) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "802cd.c1", 0x000000, 0x400000, CRC(554e6b73) SHA1(3637a8a4474e33eb75ac4a4ce0815f6a514fe337) )
+ ROM_LOAD16_BYTE( "802cd.c2", 0x000001, 0x400000, CRC(7c84b0fc) SHA1(cbd7a7865113e4f21f2b1f990a077fa5c2eae894) )
+ ROM_LOAD16_BYTE( "802cd.c3", 0x800000, 0x400000, CRC(28ec7555) SHA1(f094739272e6017a7193fa96cde3c1ed573a66b6) )
+ ROM_LOAD16_BYTE( "802cd.c4", 0x800001, 0x400000, CRC(8b7c236b) SHA1(1cb3fe81f433a2180c85be935e340da3c55aafdb) )
+ROM_END
+ROM_START( lhopecd ) // These roms were extracted from the Japanese ISO, not working at all.
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "802cdb.p1", 0x000000, 0x100000, CRC(cd108282) SHA1(bb9b3c8bb94c05b46ea24173e62245611dbc29ce) )
+
+ NEO_SFIX_128K( "802cd.s1", CRC(298495d6) SHA1(c217aba6c1916d2e5337bb5c17d979b11a53582e) )
+
+ NEO_BIOS_AUDIO_128K( "802cd.m1", CRC(d9f6c153) SHA1(c08f7ca288be1c34f4b33ed13abd805b5cd66d4e) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "802cdb.v1", 0x000000, 0x80000, CRC(bc65aee1) SHA1(2090133dcbb4f5b73696aab71ed5ea5b25b09b55) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "802cdb.c1", 0x000000, 0x200000, CRC(c5741cc8) SHA1(8593b320c140456ede6a7e355fcde978e74a0ffd) )
+ ROM_LOAD16_BYTE( "802cdb.c2", 0x000001, 0x200000, CRC(a93eba1f) SHA1(da313b0ac97480cc451ba4678a819a4fab0bd5b3) )
+ROM_END
+ROM_START( lhopecdh ) // hack of the above, does not work
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "802cdc.p1", 0x000000, 0x100000, CRC(a957c41c) SHA1(63fef6c72619f0e8ec7d711f18043a5f1d8f17c2) )
+
+ NEO_SFIX_128K( "802cd.s1", CRC(298495d6) SHA1(c217aba6c1916d2e5337bb5c17d979b11a53582e) )
+
+ NEO_BIOS_AUDIO_64K( "802cdc.m1", CRC(698372df) SHA1(1eae816223c3d0c5b501e6fdc5a62388450991a5) )
+
+ ROM_REGION( 0x80000, "ymsnd", 0 )
+ ROM_LOAD( "802cdb.v1", 0x000000, 0x80000, CRC(bc65aee1) SHA1(2090133dcbb4f5b73696aab71ed5ea5b25b09b55) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "802cdb.c1", 0x000000, 0x200000, CRC(c5741cc8) SHA1(8593b320c140456ede6a7e355fcde978e74a0ffd) )
+ ROM_LOAD16_BYTE( "802cdb.c2", 0x000001, 0x200000, CRC(a93eba1f) SHA1(da313b0ac97480cc451ba4678a819a4fab0bd5b3) )
+ROM_END
+
+
+
+GAME( 1996, crswd2bl, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "Crossed Swords 2 (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, csw2, crswd2bl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Crossed Swords 2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fr2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fr2cd, fr2, neogeo_noslot, neogeo, neogeo_hbmame,fr2ch, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2 (CD Bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fr2ch, fr2, neogeo_noslot, neogeo, neogeo_hbmame,fr2ch, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2 (CD to MVS conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, zintrckbh, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "ZinTricK (ExChar hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, zintrkcd, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "ZinTricK (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, zintrkm, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Elrayseur", "ZinTricK (Music test)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, zintrkcd1, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "ZinTricK (CD test)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, totc, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face / NCI", "Treasure of the Caribbean", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2016, akiradmo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "HP Man", "Akira Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, beast, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Shadow of the Beast (Neo Demo)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2006, cnbe, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Codename: Blut Engel", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, cndi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Chip n Dale Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, cphd, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Le Cortex", "Crouching Pony Hidden Dragon Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, columnsn, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, columnsncd, columnsn, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, didemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Mega Shocked", "DatImage demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, dti, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Duck Tales Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, dwi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "DarkWing Duck Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, ffeast, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Rastersoft", "Frog Feast (NeoGeo)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, ffeastd, ffeast, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Rastersoft", "Frog Feast Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, gbi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "GhostBusters Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, iocero, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Primo Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, lhcdb, lasthope, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NG:Dev.Team", "Last Hope CD Beta", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2007, lhcdba, lasthope, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NG:Dev.Team", "Last Hope (NGCD Conversion)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2007, lhopecd, lasthope, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NG:DEV.TEAM", "Last Hope JAP NGCD (Beta 1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2007, lhopecdh, lasthope, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NG:DEV.TEAM", "Last Hope JAP NGCD (Beta 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005, ltorb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Jonas Indiana and The Lost Temple of RA (beta - 20050717)", MACHINE_SUPPORTS_SAVE )
+GAME( 20??, knacki, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "KnackiBalls", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, neo2500, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo 2500 Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, neo3d, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Oxygene", "Neo 3D Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neobubble, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Neo Bubble", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
+GAME( 2004, neocstlv, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BarfHappy", "Neo Castlevania Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, neodemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Charles Doty", "Demo - NeoGeo", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, neofightb, neofight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kannagi", "Neogeo Sprite Demo (Neo Fight beta)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, neofighto, neofight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kannagi", "Neo Fight (old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, neofight, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kannagi", "Neo Fight", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, neogal1, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Neo Geo Galaga Demo R001", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, neogal1d, neogal1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Neo Geo Galaga Demo R001 (debug)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, neogal1t, neogal1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Neo Geo Galaga Demo R001 (text)", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, neogal2, neogal1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Neo Geo Galaga Demo R002", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neonopon, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo No Panepon V.0.2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neonopon_d1, neonopon, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo No Panepon (demo 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neonopon_d2, neonopon, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo No Panepon (demo 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neonopon_d3, neonopon, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo No Panepon (demo 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neopong, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neodev", "Neo Pong (v1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, neoponga, neopong, no_watchdog, neogeo, neogeo_state, neogeo, ROT0, "Neodev", "Neo Pong (v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, neoromjb, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CeL", "Neo Rom Jukebox", MACHINE_SUPPORTS_SAVE )
+GAME( 2013, neotest, neogal1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BEY", "Neo Geo Sound Test", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, neothund, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sebastian Mihai", "Neo Thunder", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, ngem2k, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "NGEM2K", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, ngftdemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NGF", "NGF Transparency Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, ngmontst, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "M.Priewe", "NeoGeo Monitor Test", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, ngtd2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Luis Miguel Mayor", "NeoGeo Tech Demo 2", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, ngtetris, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Crim", "NeoGeo 2-Player Tetris", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, nyan, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "Nyan Cat demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, pcmademo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Freem", "ADPCM-A Playback Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, pcmbdemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Freem", "ADPCM-B Playback Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, poknight, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Poker Night", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, poknightcd, poknight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Poker Night (CD)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, poknightfr, poknight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Poker Night (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, rci, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Robocop Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, santabll, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "M.Priewe", "Santaball", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, smi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Spiderman Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, snddemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Freem", "Sound-Loop Demo", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, spriteex, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "Sprite Experimenter", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, syscheck, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Neo System Check (ver 1.0b)", MACHINE_SUPPORTS_SAVE )
+GAME( 20??, test01, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "MVS Test 01", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, timesupd, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NGF", "Time's Up! (Demo)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, tmnti, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Teenage Mutant Ninja Turtles Intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2015, twister, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Twister in a mirror intro", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, ww2demo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Rastersoft", "WW2demo", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngdoubledr.cpp b/docs/release/src/hbmame/drivers/ngdoubledr.cpp
new file mode 100644
index 00000000000..df5497c8b5b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngdoubledr.cpp
@@ -0,0 +1,285 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Double Dragon
+
+
+
+ROM_START( dbdeh ) /* Double Dragon (Neo-Geo) - Enhance by Creamymami and Ydmis - (Based on dbdehy - can select Shuko and Duke - after hitting ultra kill is max 20030420) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082eh.p1", 0x100000, 0x100000, CRC(046e279e) SHA1(B7CDAAD32094EB3D12EE25621E7B9A9EB97AA13D) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdehy ) /* Double Dragon (Neo-Geo) - Enhance by Ydmis - (Can select Shuko and Duke) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082ehy.p1", 0x100000, 0x100000, CRC(37223431) SHA1(B9369B8140213AFD8EFCCB849EE7B4DF81B01D20) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdq ) /* Double Dragon (Neo-Geo) - Hack by Creamymami - (The character is the Q - version) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082q.p1", 0x100000, 0x100000, CRC(869862ec) SHA1(92D1B712A25070035DD45B4F4BB4719B75768F92) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdqb ) /* Double Dragon (Neo-Geo) - Hack by Creamymami and Ydmis - (The character is the Q - version - can select Shuko and Duke) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082qb.p1", 0x100000, 0x100000, CRC(8511d5f7) SHA1(29F161F990947C0D83262134B8ADC4B1CCC69924) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdqeh ) /* Double Dragon (Neo-Geo) - Enhance by Creamymami and Ydmis - (The character is the Q - version - after hitting ultra kill is max - can select Shuko and Duke) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082qeh.p1", 0x100000, 0x100000, CRC(b65dc658) SHA1(38D81BEFBCA4A95B157289966E866BDC3BF21DE3) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdqp ) /* Double Dragon (Neo-Geo) - Hack by Creamymami - (The character is the Q - version - after hitting ultra kill is max) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082qp.p1", 0x100000, 0x100000, CRC(b5d47143) SHA1(B9C211E0883C59C039954CC98E693D1245137C2F) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( dbdy ) /* Double Dragon (Neo-Geo) - Hack by Ydmis - (Can select Shuko and Duke - game is always in AES mode) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082y.p1", 0x100000, 0x100000, CRC(2ab6a95a) SHA1(F2FEC024DAB20A3B5A444BC431377531598D27FA) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( doubledre2 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082e2.p1", 0x100000, 0x100000, CRC(dd7f0c5f) SHA1(2f38ec25031407ba81a37ca6360c83a9c57e9cc0) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( doubledres )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082es.p1", 0x100000, 0x100000, CRC(6f4ced99) SHA1(fc272ceeda3d2e43f58fff302ea8df62533e3bd0) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( doubledrhp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082hp.p1", 0x100000, 0x100000, CRC(1ca0941f) SHA1(40de27c5019059ed97b3bd7d8178e64709513114) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082-c5.c5", 0x800000, 0x200000, CRC(ec87bff6) SHA1(3fa86da93881158c2c23443855922a7b32e55135) )
+ ROM_LOAD16_BYTE( "082-c6.c6", 0x800001, 0x200000, CRC(844a8a11) SHA1(b2acbd4cacce66fb32c052b2fba9984904679bda) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+ROM_START( doubledrsp )
+ ROM_REGION( 0x220000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "082sp.p1", 0x000000, 0x100000, CRC(8ea8ee3d) SHA1(4cc513f9021a5a6bfe29ebf2773847c674f7921b) )
+ ROM_LOAD16_WORD_SWAP( "082sp.p2", 0x100000, 0x100000, CRC(0e2616ab) SHA1(cfe5ed1ec76e21dd833e8297a6dbb30ce407ab2d) )
+ ROM_LOAD16_WORD_SWAP( "082sp.p3", 0x200000, 0x020000, CRC(8b4839c4) SHA1(6c0357f8455bc4a100e1063a5be88c8be388672c) )
+ ROM_FILL(0x844e,1,0x60)
+
+ NEO_SFIX_128K( "082-s1.s1", CRC(bef995c5) SHA1(9c89adbdaa5c1f827632c701688563dac2e482a4) )
+
+ NEO_BIOS_AUDIO_128K( "082-m1.m1", CRC(10b144de) SHA1(cf1ed0a447da68240c62bcfd76b1569803f6bf76) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) )
+ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) )
+
+ ROM_REGION( 0xe00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) )
+ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) )
+ ROM_LOAD16_BYTE( "082-c3.c3", 0x400000, 0x200000, CRC(8b0d378e) SHA1(3a347215e414b738164f1fe4144102f07d4ffb80) )
+ ROM_LOAD16_BYTE( "082-c4.c4", 0x400001, 0x200000, CRC(c7d2f596) SHA1(e2d09d4d1b1fef9c0c53ecf3629e974b75e559f5) )
+ ROM_LOAD16_BYTE( "082sp.c5", 0x800000, 0x200000, CRC(b9c799fe) SHA1(04d44f6fbee4bf6978031d1e148a536b012ecc8d) )
+ ROM_LOAD16_BYTE( "082sp.c6", 0x800001, 0x200000, CRC(11569bc9) SHA1(ef937371e0f62ef8cc3d315aa944cacab798a173) )
+ ROM_LOAD16_BYTE( "082-c7.c7", 0xc00000, 0x100000, CRC(727c4d02) SHA1(8204c7f037d46e0c58f269f9c7a535bc2589f526) )
+ ROM_LOAD16_BYTE( "082-c8.c8", 0xc00001, 0x100000, CRC(69a5fa37) SHA1(020e70e0e8b3c5d00a40fe97e418115a3187e50a) )
+ROM_END
+
+
+
+GAME( 2003, dbdeh, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Double Dragon (Add Char - Max ultra kill after hit 2003-04-20)", MACHINE_SUPPORTS_SAVE ) //Based on dbdehy
+GAME( 1995, dbdehy, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Double Dragon (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbdq, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Double Dragon (Q-ver Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbdqb, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Double Dragon (Q-ver Char - Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbdqeh, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Double Dragon (Q-ver Char - Max ultra kill after hit - Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbdqp, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Double Dragon (Q-ver Char - Max ultra kill after hit)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbdy, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Double Dragon (Add Char - Always in AES mode)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, doubledre2, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Double Dragon Q (Boss hack Easy Special Attacks)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, doubledres, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Double Dragon (Boss hack Easy Special Attacks)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, doubledrhp, doubledr, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Double Dragon (Boss Hack Perfect Edition hack by Blackheart 2009-09-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, doubledrsp, doubledr, samsho2sp, neogeo, neogeo_state, neogeo, ROT0, "hack", "Double Dragon (Special 2017 v1.0.0311)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/nggaroup.cpp b/docs/release/src/hbmame/drivers/nggaroup.cpp
new file mode 100644
index 00000000000..d0fc2ba1117
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/nggaroup.cpp
@@ -0,0 +1,322 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Garou Mark of the Wolves: mostly hacks of the prototype
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, garoud )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_sma_prot->garou_decrypt_68k(cpuregion);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_sma_prot->garou_install_protection(m_maincpu, m_banked_cart);
+}
+
+
+
+ROM_START( garoub ) // hack of garou
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kf.neo-sma", 0x0c0000, 0x040000, CRC(98bc93dc) SHA1(01fe3d18b50f770e131e8d8eeff4c630ba8c9551) )
+ ROM_LOAD16_WORD_SWAP( "253-ep1.p1", 0x100000, 0x200000, CRC(ea3171a4) SHA1(bbda40f652baa0dc5fc6a006c001a1bdb0df43f6) )
+ ROM_LOAD16_WORD_SWAP( "253-ep2.p2", 0x300000, 0x200000, CRC(382f704b) SHA1(0ace9c84a8b8a0524fd9a503e7d872de1bf1bd52) )
+ ROM_LOAD16_WORD_SWAP( "253-ep3.p3", 0x500000, 0x200000, CRC(e395bfdd) SHA1(6b50f5ac15bf66b7e4e9bff57594fd3d7530c831) )
+ ROM_LOAD16_WORD_SWAP( "253b.p4", 0x700000, 0x200000, CRC(c1fb6ff4) SHA1(5a907c2c0e8d1fe40f3eecd3b79d97ac8e393940) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "253-m1.m1", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "253-v1.v1", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
+ ROM_LOAD( "253-v2.v2", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
+ ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
+ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) )
+ ROM_LOAD16_BYTE( "253-c2.c2", 0x0000001, 0x800000, CRC(0917d2a4) SHA1(d4ed3a13ae22f880fb399671c1752f1a0283f316) )
+ ROM_LOAD16_BYTE( "253-c3.c3", 0x1000000, 0x800000, CRC(6737c92d) SHA1(678f0c9cc1267bd131546981b9989bfb7289d8ba) )
+ ROM_LOAD16_BYTE( "253-c4.c4", 0x1000001, 0x800000, CRC(5ba92ec6) SHA1(aae36b050a3a0321026a96eba06dd184c0e2acca) )
+ ROM_LOAD16_BYTE( "253-c5.c5", 0x2000000, 0x800000, CRC(3eab5557) SHA1(47c433015aa81a0b0a1d3ee51382c4948b80c023) )
+ ROM_LOAD16_BYTE( "253-c6.c6", 0x2000001, 0x800000, CRC(308d098b) SHA1(b052f1fa9fbc69606004c250e2505360eaa24949) )
+ ROM_LOAD16_BYTE( "253-c7.c7", 0x3000000, 0x800000, CRC(c0e995ae) SHA1(8675ca787d28246174c313167f82557f021366fc) )
+ ROM_LOAD16_BYTE( "253-c8.c8", 0x3000001, 0x800000, CRC(21a11303) SHA1(fd61221ad257c185ef5c1f9694bd6b840b591af3) )
+ROM_END
+
+ROM_START( garoud )
+ ROM_REGION( 0x900000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "kf.neo-sma", 0x0c0000, 0x040000, CRC(98bc93dc) SHA1(01fe3d18b50f770e131e8d8eeff4c630ba8c9551) )
+ ROM_LOAD16_WORD_SWAP( "253-ep1.p1", 0x100000, 0x200000, CRC(ea3171a4) SHA1(bbda40f652baa0dc5fc6a006c001a1bdb0df43f6) )
+ ROM_LOAD16_WORD_SWAP( "253-ep2.p2", 0x300000, 0x200000, CRC(382f704b) SHA1(0ace9c84a8b8a0524fd9a503e7d872de1bf1bd52) )
+ ROM_LOAD16_WORD_SWAP( "253-ep3.p3", 0x500000, 0x200000, CRC(e395bfdd) SHA1(6b50f5ac15bf66b7e4e9bff57594fd3d7530c831) )
+ ROM_LOAD16_WORD_SWAP( "253-ep4.p4", 0x700000, 0x200000, CRC(da92c08e) SHA1(5556f983ebcebc33160e90a6a6cf589d54c8cedc) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_256K( "253-m1.m1", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "253-v1.v1", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) )
+ ROM_LOAD( "253-v2.v2", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) )
+ ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) )
+ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "253d.c1", 0x0000000, 0x800000, CRC(497be3f2) SHA1(3b4e524ff185db326cdefe115851ce282272fb58) )
+ ROM_LOAD16_BYTE( "253d.c2", 0x0000001, 0x800000, CRC(6a9e95ca) SHA1(d9730d2db58edfa660edab5bf0f7fc3ed058bccf) )
+ ROM_LOAD16_BYTE( "253d.c3", 0x1000000, 0x800000, CRC(39373d2f) SHA1(8c0307150bc31001605efbe0e38ae74e1e466d5d) )
+ ROM_LOAD16_BYTE( "253d.c4", 0x1000001, 0x800000, CRC(4de23f6c) SHA1(b40bce471fb1815037e4c3705f8238e659a13a82) )
+ ROM_LOAD16_BYTE( "253d.c5", 0x2000000, 0x800000, CRC(16634ba5) SHA1(e51649efd039270139aa7292a28925e547b2be59) )
+ ROM_LOAD16_BYTE( "253d.c6", 0x2000001, 0x800000, CRC(95671ffd) SHA1(803ebeb74fefe88b9aba53cbca103c0e9145abcb) )
+ ROM_LOAD16_BYTE( "253d.c7", 0x3000000, 0x800000, CRC(e36ce77f) SHA1(71931559293182749ded13c52d8bac988a3a062f) )
+ ROM_LOAD16_BYTE( "253d.c8", 0x3000001, 0x800000, CRC(ddbd1096) SHA1(634cfb61398b3f1b983f7f3966b53f4cc3a78671) )
+ROM_END
+
+ROM_START( garoupamu ) /* Garou: Mark of the Wolves PROTOTYPE - Fix by MU - (Approach to Arcade by MU Version 5.0a) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253pamu.p1", 0x000000, 0x100000, CRC(d5c54453) SHA1(A7FE7AB68161583E10397B1B1B30299BE93AE90C) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupeh ) /* Garou: Mark of the Wolves PROTOTYPE - Enhance by Ydmis - (In MVS mode can choose Kain and Grant) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253peh.p1", 0x000000, 0x100000, CRC(61c65b05) SHA1(0159D181EEC3346C53C411BCFB9A3F17781FD7BC) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupehc ) /* Garou: Mark of the Wolves PROTOTYPE - Enhance by Creamymami and Ydmis - (In MVS mode can choose Kain and Grant - power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253pehc.p1", 0x000000, 0x100000, CRC(46b087b7) SHA1(236C8EC295A7380101BE27C5ED472617380A87A6) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupf ) /* Garou: Mark of the Wolves PROTOTYPE - Fix by UNKNOWN - (Fixed winning message, sprites and some bugs for prototype - from Mame32+ IPS collection) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253pf.p1", 0x000000, 0x100000, CRC(124bdbf7) SHA1(81F4BC87AA6B7D34ECF4BEDF0BAA8AEB5B2E179A) )
+ ROM_LOAD16_WORD_SWAP( "253pf.p2", 0x100000, 0x400000, CRC(19eb641b) SHA1(114BE5C20142223CF6BB0938AA3B07B61E3243E1) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupfp ) /* Garou: Mark of the Wolves PROTOTYPE - (garoupfp) - Fix by UNKNOWN (Rom fix - FIXPLUS) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253pfp.p1", 0x000000, 0x100000, CRC(0b23e2cb) SHA1(B61730457EFEBFFC4A1F5A31FEFBAF2E4CC8F49E) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupfu ) /* Garou: Mark of the Wolves PROTOTYPE - Fix by UNKNOWN - (Unknown Prototype Hack/Fix) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253pfu.p1", 0x000000, 0x100000, CRC(3f41581e) SHA1(F62C64529A79C8867B789BC655182D702824464C) )
+ ROM_LOAD16_WORD_SWAP( "253pfu.p2", 0x100000, 0x400000, CRC(cf4b3903) SHA1(CFC00DC3EB0F6D566C3F5DD8EC0D6B4440E17AAE) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupx11 ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253px11.p1", 0x000000, 0x100000, CRC(7a5e411e) SHA1(e56c518e1496948d882721d393e6e95b74cf95f4) )
+ ROM_LOAD16_WORD_SWAP( "253px11.p2", 0x100000, 0x400000, CRC(1eeecc14) SHA1(f42cfcaf10a2c8454bf90e53fa51c1c5c23b26de) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "253px11.c8", 0x3000001, 0x800000, CRC(7f004da7) SHA1(724d2b6439822ca30dad6d1ab59739b59e52c3a1) )
+ROM_END
+
+ROM_START( garoupy ) /* Garou: Mark of the Wolves PROTOTYPE - Hack by Ydmis - (In MVS mode P1 can choose Kain and Grant) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253py.p1", 0x000000, 0x100000, CRC(5b010d7a) SHA1(5DC416E634456B2403ADF0668D18FC5FF60FAFDC) )
+ ROM_LOAD16_WORD_SWAP( "proto_253-p2.p2", 0x100000, 0x400000, CRC(bf8de565) SHA1(0e24574168cd38138bed0aa4dca49849f6901ca2) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+ROM_START( garoupy1 ) /* Prototype Version, seems genuine */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "253py1.p1", 0x000000, 0x100000, CRC(b4a28ce4) SHA1(bab447230b6bc91a327a2622a55e125ce3aef781) )
+ ROM_LOAD16_WORD_SWAP( "253pf.p2", 0x100000, 0x400000, CRC(19eb641b) SHA1(114BE5C20142223CF6BB0938AA3B07B61E3243E1) )
+
+ NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) )
+
+ NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) )
+ ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) )
+ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) )
+ ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) )
+ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) )
+ ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) )
+ ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) )
+ ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) )
+ ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) )
+ ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) )
+ ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) )
+ROM_END
+
+
+
+GAME( 1999, garoub, garou, neogeo_noslot, neogeo, neogeo_noslot_state, garou, ROT0, "Ydmis", "Garou - Mark of the Wolves (Boss hack by Ydmis)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoud, garou, neogeo_noslot, neogeo, neogeo_hbmame, garoud, ROT0, "hack","Garou - Mark of the Wolves (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupamu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MU", "Garou - Mark of the Wolves (proto) (Approach to Arcade by MU v5.0a)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupeh, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupehc, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Garou - Mark of the Wolves (proto) (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupf, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Fixed winning message, sprites and some bugs)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupfu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Unk Hack/Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupfp, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Rom Fix - FixPlus)", MACHINE_SUPPORTS_SAVE )
+GAME( 2011, garoupx11, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Garou - Mark of the Wolves XTREME PLUS", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (P1 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, garoupy1, garou, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Garou: Mark of the Wolves (Prototype) [Boss Hack by Ydmis]", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngkofmisc.cpp b/docs/release/src/hbmame/drivers/ngkofmisc.cpp
new file mode 100644
index 00000000000..9bb892e83ae
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngkofmisc.cpp
@@ -0,0 +1,947 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Miscellaneous King of Fighters games
+// kog, cthd, kof2k4, kof10th etc
+// Nudity warning in Kof Special Edition 2004, stage with boats in the background:
+// There's a nude woman at the right side.
+// Sometimes the 6 women in the centre can also be nude.
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, cthd2k3a )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_bootleg_prot->decrypt_cthd2003(spr_region, spr_region_size, audiocpu_region,audio_region_size, fix_region, fix_region_size);
+}
+
+// This fixes the Cart Jumper in KOGD
+static MACHINE_CONFIG_DERIVED_CLASS( hbmame_kog, neogeo_arcade, neogeo_hbmame )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(main_map_noslot)
+ MCFG_KOG_PROT_ADD("kog_prot")
+
+ //joystick controller
+ MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge_fixed, "joy", true)
+
+ //no mahjong controller
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", true)
+ MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", true)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kogd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_kog_prot->kog_install_protection(m_maincpu);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, kof10thu )
+{
+ uint32_t tsize = m_region_maincpu->bytes();
+ uint8_t *rom = m_region_maincpu->base();
+ uint32_t i, ofst;
+ std::vector<uint8_t> trom( tsize );
+ memcpy( &trom[ 0 ], &rom[ 0 ], tsize );
+ // We unscramble the lower 6 address lines of the program rom.
+ for( i = 0; i < tsize / 2; i++ )
+ {
+ ofst = BITSWAP8( (i & 0x0000ff), 7, 6, 2, 3, 4, 5, 0, 1 ) | (i & 0xffff00);
+ memcpy( &rom[ ofst * 2 ], &trom[ i * 2 ], 2 );
+ }
+
+ DRIVER_INIT_CALL(neogeo);
+}
+
+
+
+ROM_START( cthd2k3a )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360a.p1", 0x0c0000, 0x020000, CRC(1185fe39) SHA1(f7ce0878180858c359f125990fd750ec846f42dd) )
+ ROM_CONTINUE( 0x040000, 0x020000 )
+ ROM_CONTINUE( 0x020000, 0x020000 )
+ ROM_CONTINUE( 0x0a0000, 0x020000 )
+ ROM_CONTINUE( 0x080000, 0x020000 )
+ ROM_CONTINUE( 0x060000, 0x020000 )
+ ROM_CONTINUE( 0x000000, 0x020000 )
+ ROM_CONTINUE( 0x0e0000, 0x020000 )
+ ROM_FILL( 0xed00e, 1, 0x4e)
+ ROM_FILL( 0xed00f, 1, 0x71)
+ ROM_FILL( 0xed394, 1, 0x4e)
+ ROM_FILL( 0xed395, 1, 0x71)
+ ROM_FILL( 0xa2b7e, 1, 0x4e)
+ ROM_FILL( 0xa2b7f, 1, 0x71)
+ ROM_LOAD16_WORD_SWAP( "360a.p2", 0x4E0000, 0x020000, CRC(ea71faf7) SHA1(5d1bb12d04a5e2db6f48b59cae5f9b02acaeb976) )
+ ROM_CONTINUE( 0x1c0000, 0x020000 )
+ ROM_CONTINUE( 0x380000, 0x020000 )
+ ROM_CONTINUE( 0x2a0000, 0x020000 )
+ ROM_CONTINUE( 0x360000, 0x020000 )
+ ROM_CONTINUE( 0x2e0000, 0x020000 )
+ ROM_CONTINUE( 0x140000, 0x020000 )
+ ROM_CONTINUE( 0x1e0000, 0x020000 )
+ ROM_CONTINUE( 0x2c0000, 0x020000 )
+ ROM_CONTINUE( 0x280000, 0x020000 )
+ ROM_CONTINUE( 0x460000, 0x020000 )
+ ROM_CONTINUE( 0x160000, 0x020000 )
+ ROM_CONTINUE( 0x440000, 0x020000 )
+ ROM_CONTINUE( 0x4c0000, 0x020000 )
+ ROM_CONTINUE( 0x100000, 0x020000 )
+ ROM_CONTINUE( 0x480000, 0x020000 )
+ ROM_CONTINUE( 0x420000, 0x020000 )
+ ROM_CONTINUE( 0x260000, 0x020000 )
+ ROM_CONTINUE( 0x340000, 0x020000 )
+ ROM_CONTINUE( 0x180000, 0x020000 )
+ ROM_CONTINUE( 0x320000, 0x020000 )
+ ROM_CONTINUE( 0x3a0000, 0x020000 )
+ ROM_CONTINUE( 0x4a0000, 0x020000 )
+ ROM_CONTINUE( 0x200000, 0x020000 )
+ ROM_CONTINUE( 0x120000, 0x020000 )
+ ROM_CONTINUE( 0x400000, 0x020000 )
+ ROM_CONTINUE( 0x300000, 0x020000 )
+ ROM_CONTINUE( 0x3e0000, 0x020000 )
+ ROM_CONTINUE( 0x3c0000, 0x020000 )
+ ROM_CONTINUE( 0x240000, 0x020000 )
+ ROM_CONTINUE( 0x1a0000, 0x020000 )
+ ROM_CONTINUE( 0x220000, 0x020000 )
+
+ NEO_SFIX_128K( "360a.s1", CRC(174ccffd) SHA1(8067e4d79ac91f5c18855793840f41c30825cbb4) )
+
+ NEO_BIOS_AUDIO_128K( "360a.m1", CRC(a37cc447) SHA1(969375ca70cf9140afaf833378716cc43e25c5c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "360a.v2", 0x400000, 0x400000, CRC(2b498449) SHA1(8e2b01dd17dbf4498a197bda8ce3e08cdf785f12) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "360a.c1", 0x0000000, 0x800000, CRC(dc90c563) SHA1(a79f54f754a1bd0d603f70af6b335e839b5e20d1) )
+ ROM_LOAD16_BYTE( "360a.c2", 0x0000001, 0x800000, CRC(7b08d331) SHA1(40e259cbc888184aa0f8102d00098f37f3005ce3) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "360a.c7", 0x3000000, 0x800000, CRC(ad2d72b3) SHA1(6396ba51f863019059ce3e37dab20a60d3a8c549) )
+ ROM_LOAD16_BYTE( "360a.c8", 0x3000001, 0x800000, CRC(8c3fc1b5) SHA1(81b6df7c937915c5b971bde20786aece02404a05) )
+ROM_END
+
+ROM_START( cthd2k3b ) /* Crouching Tiger Hidden Dragon 2003 - Hack by HunterX Hacker - (Can choose Zero and Igniz) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360b.p1", 0x000000, 0x100000, CRC(f403c9b3) SHA1(35D52B9388D4715BACBE958ACCD133C19E769E30) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3eh ) /* Crouching Tiger Hidden Dragon 2003 - Enhance by Fighters Kim and HunterX Hacker - (Can choose Zero and Igniz - power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360eh.p1", 0x000000, 0x100000, CRC(eac4773b) SHA1(7E8AF18D5A18B3FE0B9130C66D8F4EF6297B8C7F) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3ifz )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1.bin", 0x000000, 0x100000, CRC(bb7602c1) SHA1(abf329a40f34c88f7325b255e3bc090db1edaca4) )
+ ROM_LOAD16_WORD_SWAP( "360ifz.p2", 0x100000, 0x400000, CRC(f3e7ca3a) SHA1(80b22608a90bc2b643751621200ef42a0e41557d) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3k3 ) /* Crouching Tiger Hidden Dragon 2003 - Remix by Jason/K3 - (Character move change - V1.2 20030823) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360k3.p1", 0x000000, 0x100000, CRC(f5f1cfb2) SHA1(F0E19AE063E771567B30B52710C143B5E72CBF5A) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3k3o ) /* [OLD] Crouching Tiger Hidden Dragon 2003 - Remix by Jason/K3 - (Character move change 20030818) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360k3o.p1", 0x000000, 0x100000, CRC(93b2cb2b) SHA1(dc6bacae8851ab74eaf45c4392fdab0d679a266f) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3spi ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "360spi.p1", 0x000000, 0x454f4e, CRC(f3010a50) SHA1(b95f322c0682999f2c378fdf2db14fc804f71153) )
+ ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) )
+
+ //NEO_SFIX_256K( "360spi.s1", CRC(6c355ab4) SHA1(71ac2bcd3dbda8402baecc56dabc2297b148a900) ) // not working
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3xx )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1.bin", 0x000000, 0x100000, CRC(bb7602c1) SHA1(abf329a40f34c88f7325b255e3bc090db1edaca4) )
+ ROM_LOAD16_WORD_SWAP( "360xx.p2", 0x100000, 0x400000, CRC(7931c60b) SHA1(d9a6f90b0c40cbc0d9ba82412a418abf714b36dd) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+ROM_START( ct2k3ys )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5003-p1.bin", 0x000000, 0x100000, CRC(bb7602c1) SHA1(abf329a40f34c88f7325b255e3bc090db1edaca4) )
+ ROM_LOAD16_WORD_SWAP( "360ys.p2", 0x100000, 0x400000, CRC(d6872ee8) SHA1(23e0c9461c9fea2f5cbb1c05f45b10b5612e2ffd) )
+
+ NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) )
+
+ NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) )
+ ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) )
+ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) )
+ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) )
+ ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) )
+ ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) )
+ ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) )
+ ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) )
+ ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) )
+ ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) )
+ ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) )
+ROM_END
+
+
+ROM_START( kof2k4mp )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365mp.p1", 0x000000, 0x100000, CRC(499d739d) SHA1(b6344f49acc68405261592115a3c6c6e298309f5))
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p1.bin", 0x100000, 0x400000, CRC(e6c50566) SHA1(cc6a3489a3bfeb4dcc65b6ddae0030f7e66fbabe))
+
+ NEO_SFIX_128K( "365mp.s1", CRC(f5f10e6f) SHA1(ab9d390785e03561f6b32f6c66fad2b2e9a5d996))
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+ROM_START( kof2k4omg )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365omg.p1", 0x000000, 0x3bd4c1, CRC(65687232) SHA1(3943351eb8bbb3e1af5e3c60b0304ff34ece809a) )
+ ROM_LOAD16_WORD_SWAP( "365omg.p2", 0x100000, 0x400000, CRC(edaa18d8) SHA1(dc9f0424db2d55b756d1e7b1389f6f1f9390bf95) )
+
+ NEO_SFIX_128K( "365omg.s1", CRC(a41ebb8b) SHA1(e7fde454fe3adfdfa1f43f5a0042979e0f43c89f) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) )
+ ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63ab83ddc5f688dc8165a7ff8d262df3fcd942a2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2a414285e48aa948b5b0d4a9333bab083b5fb853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(e01adc7a4633bc0951b9b4f09abc07d728e9a2d9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5d28eea7b581e780b78f391a8179f1678ee0d9a5) )
+ ROM_LOAD16_BYTE( "365omg.c7", 0x3000000, 0x800000, CRC(7eb467ec) SHA1(9d8a7eb529e68d59ef6e9561426b80a239258b02) )
+ ROM_LOAD16_BYTE( "365omg.c8", 0x3000001, 0x800000, CRC(0b0631c4) SHA1(4d16697048cd79b654616e5976f2d19e763ec49a) )
+ROM_END
+
+ROM_START( kof2k4ru )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365ru.p1", 0x000000, 0x100000, CRC(69100ad2) SHA1(36a818fb6fbe8433df89187dcf171058128f4f22) )
+ ROM_LOAD16_WORD_SWAP( "365ru.p2", 0x100000, 0x400000, CRC(c6b895e0) SHA1(e0080f4bb268253f0605a48c361b6c8088e173b7) )
+
+ NEO_SFIX_128K( "365ru.s1", CRC(fbfa1079) SHA1(af6d779cf0b74c765812d0ca1aab31412adb0136) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "365ru.c1", 0x0000000, 0x800000, CRC(c55d7733) SHA1(3837f178788c78dcf7b0a4fbab3d62bfe0b41f9a) )
+ ROM_LOAD16_BYTE( "365ru.c2", 0x0000001, 0x800000, CRC(d89b45c9) SHA1(31d7ad16534839821f68db07b28dd564fe5c13c3) )
+ ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(e5074eea) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) )
+ ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(f6eb1ff2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) )
+ ROM_LOAD16_BYTE( "365ru.c5", 0x2000000, 0x800000, CRC(11126545) SHA1(4ae58848c8a6701c9cfcd60e6674e8fb7491c0c0) )
+ ROM_LOAD16_BYTE( "365ru.c6", 0x2000001, 0x800000, CRC(d225bb9b) SHA1(ee627dab6aeebfb1af9dbdc315a927245243817c) )
+ ROM_LOAD16_BYTE( "365ru.c7", 0x3000000, 0x800000, CRC(750a7a2b) SHA1(3ef7688eedc3fcb9cef55306055b838f60a96285) )
+ ROM_LOAD16_BYTE( "365ru.c8", 0x3000001, 0x800000, CRC(aa21b917) SHA1(12f256f2a54246b1ed604ae4dcaa1af6e48a7b1f) )
+ROM_END
+
+ROM_START( kof2k4se1 ) // also known as kofse2k4
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365se1.p2", 0x000000, 0x100000, CRC(5f482757) SHA1(0c2cba7fc6256e62eb7464306036784703c35a70) )
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p1.bin", 0x100000, 0x400000, CRC(e6c50566) SHA1(cc6a3489a3bfeb4dcc65b6ddae0030f7e66fbabe) )
+
+ NEO_SFIX_128K( "k2k4s-s1.bin", CRC(a3c9b2d8) SHA1(1472d2cbd7bb73e84824ecf773924007e6117e77) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63ab83ddc5f688dc8165a7ff8d262df3fcd942a2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2a414285e48aa948b5b0d4a9333bab083b5fb853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(e01adc7a4633bc0951b9b4f09abc07d728e9a2d9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5d28eea7b581e780b78f391a8179f1678ee0d9a5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+ROM_START( kof2k4se2 ) // also known as kof2004, same as kof2k4se1 except for 2nd program rom
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365se1.p2", 0x000000, 0x100000, CRC(5f482757) SHA1(0c2cba7fc6256e62eb7464306036784703c35a70) )
+ ROM_LOAD16_WORD_SWAP( "365se2.p1", 0x100000, 0x400000, CRC(698679a7) SHA1(2bf3a7a7423141685ecd36c266139a97bac0a69c) )
+
+ NEO_SFIX_128K( "k2k4s-s1.bin", CRC(a3c9b2d8) SHA1(1472d2cbd7bb73e84824ecf773924007e6117e77) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63ab83ddc5f688dc8165a7ff8d262df3fcd942a2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2a414285e48aa948b5b0d4a9333bab083b5fb853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(e01adc7a4633bc0951b9b4f09abc07d728e9a2d9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5d28eea7b581e780b78f391a8179f1678ee0d9a5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+ROM_START( kof2k4seb ) /* Portuguese edition */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365seb.p1", 0x000000, 0x100000, CRC(3dda9add) SHA1(de75ab82ecdd9612b47051a502bfbe4b80c20688) )
+ ROM_LOAD16_WORD_SWAP( "365seb.p2", 0x100000, 0x400000, CRC(ed63d10b) SHA1(0991adc15d9335ce429ab0f4e1c20f198c6c0a94) )
+
+ NEO_SFIX_128K( "365seb.s1", CRC(f1b5d31a) SHA1(d111dd7b68fc4a921c0ab19bec40338dd3a88092) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) )
+ ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+ROM_START( kof2k4spl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "365spl.p1", 0x000000, 0x100000, CRC(388c5cba) SHA1(a9dbb3cbe622f8d7c28079883d54665da522dea9))
+ ROM_LOAD16_WORD_SWAP( "k2k4s-p1.bin", 0x100000, 0x400000, CRC(e6c50566) SHA1(cc6a3489a3bfeb4dcc65b6ddae0030f7e66fbabe))
+
+ NEO_SFIX_128K( "365spl.s1", CRC(348686dd) SHA1(676d83b98cc0b923ef4997c04cecaf74b4ef1687))
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "265sm.v1", 0x000000, 0x400000, CRC(8991f6e9) SHA1(ce5afc0169c142d7f98111afbc60b3a9a2e17256) )
+ ROM_LOAD( "265sm.v2", 0x400000, 0x400000, CRC(511e4d2f) SHA1(28190ec86ac2169ab6fad80635ed13cfcf430c65) )
+ ROM_LOAD( "265sm.v3", 0x800000, 0x400000, CRC(1dd8b53a) SHA1(9aa84f145ba07f5f3c3b3fb682eb8a8ab1500b4c) )
+ ROM_LOAD( "265sm.v4", 0xc00000, 0x400000, CRC(63bb5462) SHA1(afc6a085e25bd006f26e16beda4244bc8bc19bb8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) )
+ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "k2k4s-c1.bin", 0x3000000, 0x800000, CRC(fa705b2b) SHA1(f314c66876589601806352484dd8e45bc41be692) )
+ ROM_LOAD16_BYTE( "k2k4s-c5.bin", 0x3000001, 0x800000, CRC(2c912ff9) SHA1(b624a625ea3e221808b7ea43fb0b1a51d8c1853e) )
+ROM_END
+
+
+ROM_START( kof2k8uni ) // hack of kof10th
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "366.p1", 0x000000, 0x400000, CRC(966210bf) SHA1(9f86f29dbfe7ac951485908a20a6ce120ebdeb5f) )
+ ROM_LOAD16_WORD_SWAP( "366.p2", 0x400000, 0x400000, CRC(ae5f00f7) SHA1(807cbd02cdba320c7cf32c915a663338d7a89252) )
+
+ NEO_SFIX_128K( "366.s1", CRC(e57b5757) SHA1(d3dbb83c3d8b9860361b36496bfdc95220b8b75f) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "366.c1", 0x0000000, 0x400000, CRC(ea774fb8) SHA1(01ce6330716046b591c606b5d016dd5e57fa007b) )
+ ROM_LOAD16_BYTE( "366.c2", 0x0000001, 0x400000, CRC(6f497789) SHA1(8c8573ea191d29f0d250901ebf0116a41e184c78) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "366.c7", 0x3800000, 0x400000, CRC(1b6f3bde) SHA1(5e1222197f5a09837930cc34713667dc1644c02a) )
+ ROM_LOAD16_BYTE( "366.c8", 0x3800001, 0x400000, CRC(113555e3) SHA1(52b48e182d23422492d95c95de4c86b1d30864e0) )
+ROM_END
+
+
+ROM_START( kof10thbr )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363br.p1", 0x000000, 0x800000, CRC(c320bbaa) SHA1(f5570d78670881cf3ce787698e07d727fb0aeec2) )
+
+ NEO_SFIX_128K( "363br.s1", CRC(3c757cb1) SHA1(fea798902c59c125c8d31f42d52aa22caa31fc7b) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) )
+ ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) )
+ROM_END
+
+ROM_START( kof10thd16 ) // after loading, p1 needs unscrambling: 2&3<->4&5 etc
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363d16.p1", 0x000000, 0x00000, CRC(ea4274f6) SHA1(b9ea7f92f531916bed6363c8214ed5ae117d5148) )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "363d16.s1", 0x000000, 0x020000, CRC(6fae9f8f) SHA1(0194a0f8946c2d8e89e4b784586f77b874c03302) )
+ ROM_IGNORE( 0x435044 )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) )
+ ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) )
+ROM_END
+
+ROM_START( kof10thep15 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363ep15.p1", 0x000000, 0x200000, CRC(8981b627) SHA1(b25754a6339f6533af791cd7dea95988b5f9072a) )
+ ROM_IGNORE(0x254f9f)
+ ROM_LOAD16_WORD_SWAP( "363ep15.p2", 0x200000, 0x400000, CRC(8eca396b) SHA1(58918c9dff5dc6e8975e16943ef8aefcd4caf34d) )
+ ROM_IGNORE(0x054f59)
+ ROM_LOAD16_WORD_SWAP( "5008-p3.bin", 0x600000, 0x200000, CRC(e629e13c) SHA1(6ebe080ce01c51064cb2f4d89315ba98a45ae727) )
+
+ NEO_SFIX_128K( "5008-s1.bin", CRC(92410064) SHA1(1fb800b46341858207d3b6961a760289fbec7faa) )
+
+ NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "5008-c7b.bin", 0x3800000, 0x400000, CRC(33604ef0) SHA1(57deec23c81d5d673ce5992cef1f2567f1a2148e) )
+ ROM_LOAD16_BYTE( "5008-c8b.bin", 0x3800001, 0x400000, CRC(51f6a8f8) SHA1(9ef1cdbdd125a2b430346c22b59f36902312905f) )
+ROM_END
+
+ROM_START( kof10thu )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363u.p1", 0x600000, 0x100000, CRC(dd135fb6) SHA1(4e85814a44ee9fee9760048dd6d6fd2b66521bb1) )
+ ROM_CONTINUE( 0x100000, 0x500000 )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+ ROM_CONTINUE( 0x700000, 0x100000 )
+
+ NEO_SFIX_128K( "363u.s1", CRC(b22ba74f) SHA1(3ba9e9d4b95fef9bf35f76e9d4fb6e1a36aeee5a) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) )
+ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) )
+ ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) )
+ ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) )
+ ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) )
+ ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) )
+ ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) )
+ ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) )
+ ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) )
+ ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) )
+ ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) )
+ ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) )
+ ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) )
+ ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) )
+ ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) )
+ ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) )
+ROM_END
+
+ROM_START( kof10thub )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363ub.p1", 0x000000, 0x800000, CRC(814eb1b2) SHA1(529825948f17fffa6d3a55a0d9e7ba6c06b79649) )
+
+ NEO_SFIX_128K( "363ub.s1", CRC(f5f91fc8) SHA1(f64516d7b500bdeddbe64962330cb612c11b8b84) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "363ud.c1", 0x0000000, 0x800000, CRC(2491af91) SHA1(e3e237e50395dc985c564867046ad202bc744d37) )
+ ROM_LOAD16_BYTE( "363ud.c2", 0x0000001, 0x800000, CRC(47ff1d91) SHA1(7d6ade9409af2c64114ed5836ccf9f50c7ebac69) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+ROM_START( kof10thud )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "363ud.p1", 0x000000, 0x800000, CRC(acbe077a) SHA1(7d3b1ce4e06021f26dd1a7d97b03975f4ed17c24) )
+
+ NEO_SFIX_128K( "363u.s1", CRC(b22ba74f) SHA1(3ba9e9d4b95fef9bf35f76e9d4fb6e1a36aeee5a) )
+
+ NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) )
+ ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "363ud.c1", 0x0000000, 0x800000, CRC(2491af91) SHA1(e3e237e50395dc985c564867046ad202bc744d37) )
+ ROM_LOAD16_BYTE( "363ud.c2", 0x0000001, 0x800000, CRC(47ff1d91) SHA1(7d6ade9409af2c64114ed5836ccf9f50c7ebac69) )
+ ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) )
+ ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) )
+ ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) )
+ ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) )
+ ROM_LOAD16_BYTE( "265d.c7", 0x3000000, 0x800000, CRC(8a5b561c) SHA1(A19697D4C2CC8EDEBC669C95AE1DB4C8C2A70B2C) )
+ ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) )
+ROM_END
+
+
+ROM_START( kogd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361d.p1", 0x000000, 0x100000, CRC(58F20940) SHA1(693819ff606b7c7b27400586f34073625445c412) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x100000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "361d.s1", CRC(EC690592) SHA1(a5af2880778a1904dd6c6006be769ea36b15dae3) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "361d.c1", 0x0000000, 0x800000, CRC(8E964A75) SHA1(e7611d7908ca056f4b3c0ae2c4da8f6809db4556) )
+ ROM_LOAD16_BYTE( "361d.c2", 0x0000001, 0x800000, CRC(D102DE17) SHA1(e98f33a4d16ebda6cf369b92480d4306c780cf8b) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "361d.c5", 0x2000000, 0x400000, CRC(C2698BE3) SHA1(0b1d414549947f6c29ebc71057aef96634656f32) )
+ ROM_LOAD16_BYTE( "361d.c6", 0x2000001, 0x400000, CRC(B057DB30) SHA1(2f342f03848f3f553bc70b2dbee2cc388a344a06) )
+ROM_END
+
+ROM_START( kogf )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361f.p1", 0x000000, 0x200000, CRC(65dc181d) SHA1(663e1296fd808b3fc14fc94c3b82f9097db455e3) )
+ ROM_LOAD16_WORD_SWAP( "232-p2.sp2", 0x200000, 0x400000, CRC(158b23f6) SHA1(9744620a70513490aaf9c5eda33e5ec31222be19) )
+
+ NEO_SFIX_128K( "361f.s1", CRC(a5a76377) SHA1(e35f195dcd0a4ab156d6d52e8cc8fddddc602fc1) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5232-c1a.bin", 0x0000000, 0x800000, CRC(4eab9b0a) SHA1(a6f6b755215a3f41474e0a76b5463303a522c2d3) )
+ ROM_LOAD16_BYTE( "5232-c2a.bin", 0x0000001, 0x800000, CRC(697f8fd0) SHA1(5784464c2357ccef8e6e79b6298843fc3d13b39c) )
+ ROM_LOAD16_BYTE( "5232-c1b.bin", 0x1000000, 0x800000, CRC(1143fdf3) SHA1(9dc5fe9a3b7599380db62095880e2d6f237a41bd) )
+ ROM_LOAD16_BYTE( "5232-c2b.bin", 0x1000001, 0x800000, CRC(ea82cf8f) SHA1(3d9ab64b69cecd6b3950839ac2c6d151ad66dcf8) )
+ ROM_LOAD16_BYTE( "5232-c3.bin", 0x2000000, 0x400000, CRC(abd1be07) SHA1(857eb68bbee4538770bbfa77aaa540d61ab0abcd) )
+ ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) )
+ROM_END
+
+ROM_START( koggv ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "5232-p1.bin", 0x000000, 0x200000, CRC(d2413ec6) SHA1(c0bf409d1e714cba5fdc6f79e4c2aec805316634) )
+ ROM_LOAD16_WORD_SWAP( "361gv.p2", 0x200000, 0x400000, CRC(7e15cd55) SHA1(608d3d1af20b63f67eb29420f725a30305b9b33a) )
+
+ NEO_SFIX_128K( "5232-s1.bin", CRC(0bef69da) SHA1(80918586e694dce35c4dba796eb18abf6a070ebb) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5232-c1a.bin", 0x0000000, 0x800000, CRC(4eab9b0a) SHA1(a6f6b755215a3f41474e0a76b5463303a522c2d3) )
+ ROM_LOAD16_BYTE( "5232-c2a.bin", 0x0000001, 0x800000, CRC(697f8fd0) SHA1(5784464c2357ccef8e6e79b6298843fc3d13b39c) )
+ ROM_LOAD16_BYTE( "5232-c1b.bin", 0x1000000, 0x800000, CRC(1143fdf3) SHA1(9dc5fe9a3b7599380db62095880e2d6f237a41bd) )
+ ROM_LOAD16_BYTE( "5232-c2b.bin", 0x1000001, 0x800000, CRC(ea82cf8f) SHA1(3d9ab64b69cecd6b3950839ac2c6d151ad66dcf8) )
+ ROM_LOAD16_BYTE( "5232-c3.bin", 0x2000000, 0x400000, CRC(abd1be07) SHA1(857eb68bbee4538770bbfa77aaa540d61ab0abcd) )
+ ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) )
+ROM_END
+
+ROM_START( kogmxpls ) // all confirmed
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361mxpls.p1", 0x000000, 0x100000, CRC(cb135241) SHA1(7a84ee0965a2dcd9f7a884e7fe862ce98b2a7921) )
+ ROM_LOAD16_WORD_SWAP( "361mxpls.p2", 0x100000, 0x400000, CRC(fef47a50) SHA1(cbe7361c06a14a2cdec6276745d3c93ba8fff211) )
+
+ NEO_SFIX_128K( "361mxpls.s1", CRC(4a46bdd3) SHA1(f0cd23f1b7f916c5cec36a8c379071e142849d61) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "361d.c1", 0x0000000, 0x800000, CRC(8E964A75) SHA1(e7611d7908ca056f4b3c0ae2c4da8f6809db4556) )
+ ROM_LOAD16_BYTE( "361d.c2", 0x0000001, 0x800000, CRC(D102DE17) SHA1(e98f33a4d16ebda6cf369b92480d4306c780cf8b) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "361mxpls.c5", 0x2000000, 0x400000, CRC(aec1c48b) SHA1(d6f4a8033f9b5c1942b2061f92b1bf7a13adaaae) )
+ ROM_LOAD16_BYTE( "361mxpls.c6", 0x2000001, 0x400000, CRC(eed0c40a) SHA1(efa91e7a9f4a30f4a86d0c4dd1d76754331de99f) )
+ROM_END
+
+ROM_START( kogplus )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361plus.p1", 0x000000, 0x200000, CRC(0338f453) SHA1(01ea5ca6cc632d732a539542dc163bbafb071b88) )
+ ROM_LOAD16_WORD_SWAP( "kf97-p2p.bin", 0x200000, 0x400000, CRC(5502b020) SHA1(37c48198d8b3798910a44075782cd1a20b687b4a) )
+
+ NEO_SFIX_128K( "361plus.s1", CRC(6271e9ba) SHA1(5bc94426e916d0ad16b6660bfc2b9e21f717fa32) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5232-c1a.bin", 0x0000000, 0x800000, CRC(4eab9b0a) SHA1(a6f6b755215a3f41474e0a76b5463303a522c2d3) )
+ ROM_LOAD16_BYTE( "5232-c2a.bin", 0x0000001, 0x800000, CRC(697f8fd0) SHA1(5784464c2357ccef8e6e79b6298843fc3d13b39c) )
+ ROM_LOAD16_BYTE( "5232-c1b.bin", 0x1000000, 0x800000, CRC(1143fdf3) SHA1(9dc5fe9a3b7599380db62095880e2d6f237a41bd) )
+ ROM_LOAD16_BYTE( "5232-c2b.bin", 0x1000001, 0x800000, CRC(ea82cf8f) SHA1(3d9ab64b69cecd6b3950839ac2c6d151ad66dcf8) )
+ ROM_LOAD16_BYTE( "5232-c3.bin", 0x2000000, 0x400000, CRC(abd1be07) SHA1(857eb68bbee4538770bbfa77aaa540d61ab0abcd) )
+ ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) )
+ROM_END
+
+ROM_START( kogplus1 ) // multijet kogplus
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361plus1.p1", 0x000000, 0x100000, CRC(98241142) SHA1(9bb2c382063f84920841463f9b4ca87862e336de) )
+ ROM_LOAD16_WORD_SWAP( "kf97-p2p.bin", 0x100000, 0x400000, CRC(5502b020) SHA1(37c48198d8b3798910a44075782cd1a20b687b4a) )
+
+ NEO_SFIX_128K( "361plus1.s1", CRC(1a58ab17) SHA1(964ef974570923743124f4879baa8582ed4fc9f9) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "361d.c1", 0x0000000, 0x800000, CRC(8E964A75) SHA1(e7611d7908ca056f4b3c0ae2c4da8f6809db4556) )
+ ROM_LOAD16_BYTE( "361d.c2", 0x0000001, 0x800000, CRC(D102DE17) SHA1(e98f33a4d16ebda6cf369b92480d4306c780cf8b) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "361d.c5", 0x2000000, 0x400000, CRC(C2698BE3) SHA1(0b1d414549947f6c29ebc71057aef96634656f32) )
+ ROM_LOAD16_BYTE( "361d.c6", 0x2000001, 0x400000, CRC(B057DB30) SHA1(2f342f03848f3f553bc70b2dbee2cc388a344a06) )
+ROM_END
+
+ROM_START( kogplusf )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361plusf.p1", 0x000000, 0x100000, CRC(24d0684b) SHA1(e2bf117e8dcad6e058cc0d2702f9e373e9aebb29) )
+ ROM_LOAD16_WORD_SWAP( "kf97-p2p.bin", 0x100000, 0x400000, CRC(5502b020) SHA1(37c48198d8b3798910a44075782cd1a20b687b4a) )
+
+ NEO_SFIX_128K( "361plusf.s1", CRC(3e6d76ec) SHA1(f16912d6d199f1c917efa3caece52e5730dfeb5f) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "361d.c1", 0x0000000, 0x800000, CRC(8E964A75) SHA1(e7611d7908ca056f4b3c0ae2c4da8f6809db4556) )
+ ROM_LOAD16_BYTE( "361d.c2", 0x0000001, 0x800000, CRC(D102DE17) SHA1(e98f33a4d16ebda6cf369b92480d4306c780cf8b) )
+ ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) )
+ ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) )
+ ROM_LOAD16_BYTE( "361d.c5", 0x2000000, 0x400000, CRC(C2698BE3) SHA1(0b1d414549947f6c29ebc71057aef96634656f32) )
+ ROM_LOAD16_BYTE( "361d.c6", 0x2000001, 0x400000, CRC(B057DB30) SHA1(2f342f03848f3f553bc70b2dbee2cc388a344a06) )
+ROM_END
+
+ROM_START( kogsm ) // multijet
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "361sm.p1", 0x000000, 0x200000, CRC(ae5162bd) SHA1(657379fe98783d24657a70afae8aa77cc1bbb650) )
+ ROM_LOAD16_WORD_SWAP( "361sm.p2", 0x200000, 0x400000, CRC(8e9d7a72) SHA1(7410b21dea0aabde492f1a788a76322a8ded867d) )
+
+ NEO_SFIX_128K( "361sm.s1", CRC(e7519d5a) SHA1(b637db97c596b412b959e08ed60ea44517a44534) )
+
+ NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) )
+ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) )
+ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "5232-c1a.bin", 0x0000000, 0x800000, CRC(4eab9b0a) SHA1(a6f6b755215a3f41474e0a76b5463303a522c2d3) )
+ ROM_LOAD16_BYTE( "5232-c2a.bin", 0x0000001, 0x800000, CRC(697f8fd0) SHA1(5784464c2357ccef8e6e79b6298843fc3d13b39c) )
+ ROM_LOAD16_BYTE( "5232-c1b.bin", 0x1000000, 0x800000, CRC(1143fdf3) SHA1(9dc5fe9a3b7599380db62095880e2d6f237a41bd) )
+ ROM_LOAD16_BYTE( "5232-c2b.bin", 0x1000001, 0x800000, CRC(ea82cf8f) SHA1(3d9ab64b69cecd6b3950839ac2c6d151ad66dcf8) )
+ ROM_LOAD16_BYTE( "5232-c3.bin", 0x2000000, 0x400000, CRC(abd1be07) SHA1(857eb68bbee4538770bbfa77aaa540d61ab0abcd) )
+ ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) )
+ROM_END
+
+
+
+GAME( 2003, cthd2k3b, neogeo, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "HunterX Hacker", "Crouching Tiger Hidden Dragon 2003 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, cthd2k3a, cthd2k3b, neogeo_noslot, neogeo, neogeo_hbmame, cthd2k3a, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3eh, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "Fighters Kim and HunterX Hacker", "Crouching Tiger Hidden Dragon 2003 (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3ifz, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Ice FZ Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3k3, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "Jason/K3", "Crouching Tiger Hidden Dragon 2003 Remix v1.2 (Diff Move - 030823)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3k3o, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "Jason/K3", "Crouching Tiger Hidden Dragon 2003 Remix (Diff Move - 030818)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3spi, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (hack spi)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3xx, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Blood Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, ct2k3ys, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Red Fire Remix)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4mp, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 Magic PLUS", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4omg, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KofOnTeam", "Kof Special Edition 2004 (Omega v0.5 (KOFONTEAM))", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, kof2k4ru, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MVS Hacks PSP", "Kof Special Edition 2004 REMIX ULTRA V2.6F", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4se1, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 (hack 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4se2, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 (hack 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4seb, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dragon Co.", "Kof Special Edition 2004 (portuguese)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, kof2k4spl, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, kof2k8uni, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary 2008 Unique", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof10thbr, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neogeo BR Team", "Kof 10th Anniversary (Brazil by NeogeoBRteam)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof10thd16, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof10thu, ROT0, "hack", "Kof 10th Anniversary UNIQUE (hack d16)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2015, kof10thep15,kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf10thep, ROT0, "hack", "Kof 10th Anniversary Extra Plus (hack 15)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof10thu, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof10thu, ROT0, "hack", "Kof 10th Anniversary UNIQUE (hack u)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof10thub, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary UNIQUE (portuguese edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kof10thud, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary UNIQUE (decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogd, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "hack", "King of Gladiator (fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogf, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "Zxbdragon / Ryu", "King of Gladiator (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, koggv, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "hack", "King of Gladiator (Green Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogmxpls, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "hack", "King of Gladiator MIX PLUS-EX", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogplus, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "hack", "King of Gladiator PLUS (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogplus1, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "hack", "King of Gladiator PLUS (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogplusf, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "Zxbdragon / Ryu", "King of Gladiator PLUS (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, kogsm, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "KalceTin", "King of Gladiator (Smoke Version v1.5 Fix by KalceTin (KOFONTEAM))", MACHINE_SUPPORTS_SAVE )
+///GAME( 2004, kf2k4pls, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k4pls, ROT0, "hack", "Kof2004 Special Edition Plus", MACHINE_SUPPORTS_SAVE )
+///GAME( 2004, kof10thd, kof2002, neogeo_noslot, neogeo, neogeo_state, kof10thd, ROT0, "hack", "Kof 10th Anniversary (Fully Decrypted)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/nglastblade.cpp b/docs/release/src/hbmame/drivers/nglastblade.cpp
new file mode 100644
index 00000000000..7b0428184c6
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/nglastblade.cpp
@@ -0,0 +1,713 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// The Last Blade
+
+
+
+ROM_START( lba )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234a.p1", 0x000000, 0x080000, CRC(3893d38b) SHA1(204d3f61dbeb82b1c942cda7089f24f997925adb) )
+ ROM_LOAD16_WORD_SWAP( "234a.p2", 0x080000, 0x080000, CRC(9470c788) SHA1(41671491cef3020b895e42935208e92abec09ed9) )
+ ROM_LOAD16_WORD_SWAP( "234a.p3", 0x100000, 0x200000, CRC(b45e631c) SHA1(5c88e6f6c1e343df24f2acf8bb4aed77954f7b36) )
+ ROM_LOAD16_WORD_SWAP( "234a.p4", 0x300000, 0x200000, CRC(aa34e149) SHA1(113930343f8efa603823a619964e90f1b06df2ab) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbb ) /* The Last Blade - Hack by Kurouri and Wesker - (Can choose 'fair' Kaede, Musashi and Kagami - Wesker mod.) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234b.p1", 0x000000, 0x100000, CRC(bdbc598e) SHA1(2fc8937cf07c0a402a36859a6a5231e37d092e91) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbboss ) /* The Last Blade - Hack by Kurouri - (Can choose 'fair' Kaede, Musashi and Kagami) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234j.p1", 0x000000, 0x100000, CRC(84fb4bc9) SHA1(bf5dec15a6c2e1557b7436c48ea58193c6ad83bb) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbd ) // lastbdb in multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234d.p1", 0x000000, 0x100000, CRC(9b6d9e2a) SHA1(c65c6fc01536e5aa2fa3bcbc89a9f4db3607de2e) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbe ) /* The Last Blade - Super Enhance Hack by Creamymami, Kurouri, wesker and Ydmis - (Can choose 'fair' Kaede, Musashi and Kagami - ultra kill start is max - ultra power hack - Wesker mod.) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234e.p1", 0x000000, 0x100000, CRC(0b06430e) SHA1(813cb410b993b032d96e7f34db0a1ee1a57c52f2) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbeh ) /* The Last Blade - Enhance by Kurouri and Ydmis - (Can choose 'fair' Kaede, Musashi and Kagami - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234eh.p1", 0x000000, 0x100000, CRC(d3a5d3dc) SHA1(004fe19505d08a314e208508078001425da6560d) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbeh2 ) /* The Last Blade - Hack by Ydmis - (Can choose Musashi and Kagami) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234eh2.p1", 0x000000, 0x100000, CRC(12d80904) SHA1(cf7be0aab4f26b38cf2ea09dca8db1e0a4b90629) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbeho ) /* The Last Blade - Enhance by Ydmis - (Can choose Musashi and Kagami - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234eho.p1", 0x000000, 0x100000, CRC(c09d3ff3) SHA1(311a5f98d78c8fe7d551a92ac08c47b52271fb7b) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lbha )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234ha.p1", 0x000000, 0x100000, CRC(b8d24c55) SHA1(d954f5b6a35877369ebc9cbcfcb2f26bc72a653a) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+// this is lastblsp in multijet - description is "The Last Blade (Super Plus remixed by NEHT)"
+ROM_START( lbseh ) /* The Last Blade - Super Enhance Hack by Creamymami, Kurouri and Ydmis - (Can choose 'fair' Kaede, Musashi and Kagami - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234seh.p1", 0x000000, 0x100000, CRC(32415149) SHA1(944a77e4e0e06763332549cf8255632921348933) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234seh.c5", 0x2000000, 0x200000, CRC(17bbd7ca) SHA1(7abb4ae5d3f5bb488c20ffe59496316bce999c23) )
+ ROM_LOAD16_BYTE( "234seh.c6", 0x2000001, 0x200000, CRC(5c35d541) SHA1(6bdd3e8abc0e577420762aea5ab20b1360868905) )
+ROM_END
+
+ROM_START( lbsk ) // lastbdsk in multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234sk.p1", 0x000000, 0x100000, CRC(87f40369) SHA1(73c258380bd668b5fb1b27ed772d70bba777390f) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+ROM_START( lby ) /* The Last Blade - Hack by Ydmis - (Can choose Musashi) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "234y.p1", 0x000000, 0x100000, CRC(481a6e8f) SHA1(cad1207b8ed93ba118e822767f0c32cd4030823a) )
+ ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) )
+
+ NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) )
+
+ NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "234-v1.v1", 0x000000, 0x400000, CRC(ed66b76f) SHA1(8a05ff06d9b6f01c6c16b3026282eaabb0e25b44) )
+ ROM_LOAD( "234-v2.v2", 0x400000, 0x400000, CRC(a0e7f6e2) SHA1(753ff74fa9294f695aae511ae01ead119b114a57) )
+ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) )
+ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20A1F4833E5E29BA0073C1712D7A17AB7A2A035C) )
+
+ ROM_REGION( 0x2800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) )
+ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) )
+ ROM_LOAD16_BYTE( "234-c3.c3", 0x1000000, 0x800000, CRC(91ab1a30) SHA1(e3cf9133784bef2c8f1bfe45f277ccf82cc6f6a1) )
+ ROM_LOAD16_BYTE( "234-c4.c4", 0x1000001, 0x800000, CRC(3d60b037) SHA1(78a50233bcd19e92c7b6f7ee1a53417d9db21f6a) )
+ ROM_LOAD16_BYTE( "234-c5.c5", 0x2000000, 0x400000, CRC(1ba80cee) SHA1(0c59057183b5279b747e73213b4cd3c6d7ad9eb1) )
+ ROM_LOAD16_BYTE( "234-c6.c6", 0x2000001, 0x400000, CRC(beafd091) SHA1(55df9cc128eb0f00856de3996c946e3efe8f09a5) )
+ROM_END
+
+
+ROM_START( lb2a ) /* The Last Blade 2 - Hack by Alphax2 - (Can choose Kouryu) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243a.p1", 0x000000, 0x100000, CRC(9b53279c) SHA1(d2424f057ad834e76603cbbe4febf97d93fcd2a9) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2b )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243b.p1", 0x000000, 0x100000, CRC(6e512568) SHA1(9bdd136d3a8b2a361b2659066f10fe6e7d3b6c52) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243b.s1", CRC(357e4638) SHA1(92bfc78749c00662225ada98eecc562fd2984e3e) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2bh ) // labld2bh in multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243bh.p1", 0x000000, 0x100000, CRC(3acbcfca) SHA1(825609e14daacbfce15462236193f7b2cff88169) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2bhd ) /* The Last Blade 2 - Super Enhance Hack by Dodowang - (Can choose bosses -> icons in menu - after character selection choose "SPEED" -> press c -> EX - mode enabled) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243bhd.p1", 0x000000, 0x100000, CRC(f4e141cf) SHA1(515a101c1fc7b038603afc56121d240738e68090) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243b.s1", CRC(357e4638) SHA1(92bfc78749c00662225ada98eecc562fd2984e3e) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2easy ) /* The Last Blade 2 - Hack by Raymonose - (character move optimization in view of keyboard) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243ea.p1", 0x000000, 0x100000, CRC(220F7860) SHA1(DA292FD2AE80A11676AA2B7F884C733535B5CE9E) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2ebd ) /* The Last Blade 2 - Enhance by Dodowang - (Can choose bosses - after character selection choose "SPEED" -> press c -> EX - mode enabled) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243ebd.p1", 0x000000, 0x100000, CRC(9fa23fd3) SHA1(76f858e3c293f53770be6a0037d39797b4624002) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2ed ) /* The Last Blade 2 - Enhance by Dodowang - (After character selection choose "SPEED" -> press c -> EX - mode enabled) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243ed.p1", 0x000000, 0x100000, CRC(35ae01f3) SHA1(dbf24eb2732c72e8d8f06bdebcd30d93f9c3ae1a) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2eh ) /* The Last Blade 2 - Enhance by Ydmis and Zhangshee - (Can choose Kaede black haired, Kouryu, Hagure and Kotetsu - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243eh.p1", 0x000000, 0x100000, CRC(57064bc6) SHA1(e7c1669356606bf134a02217fabc00ffd74d91f2) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2eh2 ) /* The Last Blade 2 - Hack by Ydmis - (Can choose Kaede black haired, Kouryu, Hagure and Kotetsu - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243eh2.p1", 0x000000, 0x100000, CRC(10e0ffa5) SHA1(d26f3807426a18914801b18dc01fd01e96c9fd78) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2eho ) /* The Last Blade 2 - Enhance by Ydmis - (Can choose Kaede black haired, Kouryu, Hagure and Kotetsu) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243eho.p1", 0x000000, 0x100000, CRC(f31ab9fe) SHA1(92614220d2e7ea2100a7258e3479db1d42431dfd) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2ehu ) /* The Last Blade 2 - Enhance by UNKNOWN - (Can choose Kaede black haired, Kouryu, Hagure and Kotetsu - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243ehu.p1", 0x000000, 0x100000, CRC(494aef40) SHA1(7c6af3a463c1a6acae10ee3fd9fb5e07e553fa18) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2pl )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243pl.p1", 0x000000, 0x100000, CRC(8AF4B6E2) SHA1(2ea9a364bd7614eb93c5cbb3f571765c7af3af71) )
+ ROM_LOAD16_WORD_SWAP( "243pl.p2", 0x100000, 0x400000, CRC(EEF07572) SHA1(ba20c498dbdc2a1d664e5a3aeb3ffcd128c2a248) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2te ) // unknown hack
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243te.p1", 0x000000, 0x100000, CRC(8f9a24bf) SHA1(f7005ed9ab77d9991babfa72a68a2f535ac01064) )
+ ROM_LOAD16_WORD_SWAP( "243te.p2", 0x100000, 0x400000, CRC(37aaffa0) SHA1(4f16686956d2435d6c4339a5c49b352d0a98ecb7) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2uh ) // lastb2uh in multijet
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243uh.p1", 0x000000, 0x100000, CRC(158d66bd) SHA1(21a518465a21760e8df5bfe39c87abed07f8d654) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243b.s1", CRC(357e4638) SHA1(92bfc78749c00662225ada98eecc562fd2984e3e) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2wh ) /* The Last Blade 2 - Hack by Wesker - (Can choose Kaede black haired, Kouryu, Hagure and Kotetsu 20031017) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243wh.p1", 0x000000, 0x100000, CRC(6ddcebf5) SHA1(4a93c0cb594e12cafea3b1137889187a524c5d79) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+ROM_START( lb2yd ) /* The Last Blade 2 - Hack by Ydmis - (Ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "243yd.p1", 0x000000, 0x100000, CRC(095f3790) SHA1(d1de61b9019afd52042d5bc06aaca97db805dd45) )
+ ROM_LOAD16_WORD_SWAP( "243-pg2.sp2", 0x100000, 0x400000, CRC(add4a30b) SHA1(7db62564db49fe0218cbb35b119d62582a24d658) )
+
+ NEO_SFIX_128K( "243-s1.s1", CRC(c9cd2298) SHA1(a9a18b5347f9dbe29a2ccb63fd4c8fd19537bf8b) )
+
+ NEO_BIOS_AUDIO_128K( "243-m1.m1", CRC(acf12d10) SHA1(6e6b98cc1fa44f24a5168877559b0055e6957b60) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "243-v1.v1", 0x000000, 0x400000, CRC(f7ee6fbb) SHA1(55137bcabeeb590e40a9b8a7c07dd106e4d12a90) )
+ ROM_LOAD( "243-v2.v2", 0x400000, 0x400000, CRC(aa9e4df6) SHA1(a0b91f63e2552a8ad9e0d1af00e2c38288637161) )
+ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) )
+ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) )
+ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) )
+ ROM_LOAD16_BYTE( "243-c3.c3", 0x1000000, 0x800000, CRC(6054cbe0) SHA1(ec2f65e9c930250ee25fd064ee5ae76a7a9c61d9) )
+ ROM_LOAD16_BYTE( "243-c4.c4", 0x1000001, 0x800000, CRC(8bd2a9d2) SHA1(0935df65cd2b0891a708bcc0f1c188148058d4b5) )
+ ROM_LOAD16_BYTE( "243-c5.c5", 0x2000000, 0x800000, CRC(6a503dcf) SHA1(23241b16d7e20f923d41186b29487ab922c7f530) )
+ ROM_LOAD16_BYTE( "243-c6.c6", 0x2000001, 0x800000, CRC(ec9c36d0) SHA1(e145e9e359000dda6e1dfe95a996bc6d29cfca21) )
+ROM_END
+
+
+
+GAME( 1997, lba, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Last Blade (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbb, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kurouri, Wesker", "Last Blade (3 Add Char - Wesker mod)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbboss, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kurouri", "Last Blade (3 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbd, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Last Blade (Boss hack by Creamymami/Kurouri/Wesker/Ydmis)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbe, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Kurouri, Wesker and Ydmis", "Last Blade (3 Add Char - Ultra kill start max - Ultra pow hack - Wesker mod.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbeh, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kurouri, Ydmis", "Last Blade (3 Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbeh2, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade (2 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbeho, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade (2 Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbha, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Robert", "Last Blade (Boss hack, Alternate Set)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbseh, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Kurouri, Ydmis", "Last Blade (3 Add Char - Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lbsk, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGCG", "Last Blade Special Moves Revision Final (EGCG)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, lby, lastblad, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade (Add Musashi)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1998, lb2a, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Alphax2", "Last Blade 2 (Add Kouryu)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2b, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Last Blade 2 (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, lb2bh, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "007325", "Last Blade 2 (Boss Easy Moves hack by 007325 2009-03-06)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2bhd, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Last Blade 2 (Add Char with icons - EX mode choosing Speed + pressing C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2easy, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FGCH, Raymonose", "Last Blade 2 (Moves optimized for keyboard)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2ed, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Last Blade 2 (EX mode choosing Speed + pressing C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2ebd, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Last Blade 2 (Add Char - EX mode choosing Speed + pressing C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2eh, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis, Zhangshee", "Last Blade 2 (4 Add Char - Ultra kill start max set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2eh2, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade 2 (4 Add Char - Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2eho, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade 2 (4 Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2ehu, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Last Blade 2 (4 Add Char - Ultra kill start max set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2pl, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Last Blade 2 (Plus)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2te, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Last Blade 2 (hack te)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2uh, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yano", "Last Blade 2 (Yano's Ultimate hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2wh, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Last Blade 2 (4 Add Char - 031017)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, lb2yd, lastbld2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Last Blade 2 (Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngrbff.cpp b/docs/release/src/hbmame/drivers/ngrbff.cpp
new file mode 100644
index 00000000000..9b5147128dd
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngrbff.cpp
@@ -0,0 +1,667 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Fatal Fury 1,2,3,special ; Real Bout Fatal Fury 1,2,special
+
+
+
+ROM_START( fatfurspb )
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058b.p1", 0x000000, 0x100000, CRC(1222cf0a) SHA1(dab98ef9464e8759433958663f2625912295822b) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+ROM_START( fatfurspbs )
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058bs.p1", 0x000000, 0x100000, CRC(8cd18f7f) SHA1(1f7a550bb5c71495bd52c66ff289f64dfa778ee4) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+ROM_START( fatfurspbt )
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058bt.p1", 0x000000, 0x100000, CRC(67354471) SHA1(e189eeef14be9ec02668f51151434f0ec481ea65) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+ROM_START( fatfurspeh ) /* Fatal Fury Special - (fatfspeh) - Enhance by Dodowang - (Can choose Ryo Sakazaki - works in AES/MVS mode) */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "058eh.p1", 0x000000, 0x100000, CRC(5da7db92) SHA1(755C90B1A722A844C0E518CA188D915317C5ABB0) )
+ ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) )
+
+ NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) )
+
+ NEO_BIOS_AUDIO_128K( "058-m1.m1", CRC(ccc5186e) SHA1(cf9091c523c182aebfb928c91640b2d72fd70123) )
+
+ ROM_REGION( 0x500000, "ymsnd", 0 )
+ ROM_LOAD( "058-v1.v1", 0x000000, 0x200000, CRC(55d7ce84) SHA1(05ac6a395d9bf9166925acca176a8d6129f533c8) )
+ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) )
+ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) )
+ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) )
+ ROM_LOAD16_BYTE( "058-c3.c3", 0x400000, 0x200000, CRC(6f7938d5) SHA1(be057b0a3faeb76d5fff161d3e6fea8a26e11d2c) )
+ ROM_LOAD16_BYTE( "058-c4.c4", 0x400001, 0x200000, CRC(4ad066ff) SHA1(4e304646d954d5f7bbabc5d068e85de31d38830f) )
+ ROM_LOAD16_BYTE( "058-c5.c5", 0x800000, 0x200000, CRC(49c5e0bf) SHA1(f3784178f90751990ea47a082a6aa869ee3566c9) )
+ ROM_LOAD16_BYTE( "058-c6.c6", 0x800001, 0x200000, CRC(8ff1f43d) SHA1(6180ceb5412a3e2e34e9513a3283b9f63087f747) )
+ROM_END
+
+
+ROM_START( fatfury2b )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "047b.p1", 0x000000, 0x080000, CRC(a94a8fa5) SHA1(313e40c50d761f509c9826f064a588738a1b64ec) )
+ ROM_LOAD16_WORD_SWAP( "047b.p2", 0x080000, 0x080000, CRC(2a9beac5) SHA1(61378f89d64fef4c172825694f83229c2ab1a7af) )
+
+ NEO_SFIX_128K( "047-s1.s1", CRC(d7dbbf39) SHA1(29253e596f475ebd41a6e3bb53952e3a0ccd2eed) )
+
+ NEO_BIOS_AUDIO_128K( "047-m1.m1", CRC(820b0ba7) SHA1(5708248d89446e49184eaadb52f7c61b2b6c13c5) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "047-v1.v1", 0x000000, 0x200000, CRC(d9d00784) SHA1(f6a91eada8c23aa4518c4b82eeebca69f79d845c) )
+ ROM_LOAD( "047-v2.v2", 0x200000, 0x200000, CRC(2c9a4b33) SHA1(d4a1c0951c02c8919b3ec32ed96933634ff9e54c) )
+
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "047-c1.c1", 0x000000, 0x100000, CRC(f72a939e) SHA1(67fc398ec28061adca0d3be82bbe7297015800da) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c2.c2", 0x000001, 0x100000, CRC(05119a0d) SHA1(c2f100b73eb04f65b6ba6089d49aceb51b470ec6) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c3.c3", 0x200000, 0x100000, CRC(01e00738) SHA1(79654f24d777dd5eb68bafc3b8cb9db71d5822e2) )
+ ROM_CONTINUE( 0x600000, 0x100000 )
+ ROM_LOAD16_BYTE( "047-c4.c4", 0x200001, 0x100000, CRC(9fe27432) SHA1(89d22d77ba8bc6d1f6c974195c34ad61b9010de7) )
+ ROM_CONTINUE( 0x600001, 0x100000 )
+ROM_END
+
+
+ROM_START( fatfury3b ) /* Fatal Fury 3 - Hack by Creamymami - (Can choose Ryuji Yamazaki, Jin Chonshu and Jin Chonrei) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "069b.p1", 0x000000, 0x100000, CRC(743ad8a1) SHA1(962D11224B14BA9D5BE554E45B4ACA9E3A818610) )
+ ROM_LOAD16_WORD_SWAP( "069-sp2.sp2", 0x100000, 0x200000, CRC(dbe963ed) SHA1(8ece7f663cfe8e563576a397e41161d392cee67e) )
+
+ NEO_SFIX_128K( "069-s1.s1", CRC(0b33a800) SHA1(b7d2cc97da4f30ddebc7b801f5e1d17d2306b2db) )
+
+ NEO_BIOS_AUDIO_128K( "069-m1.m1", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "069-c5.c5", 0x1000000, 0x200000, CRC(b3ec6fa6) SHA1(7e4c8ee9dd8d9a25ff183d9d8b05f38769348bc7) )
+ ROM_LOAD16_BYTE( "069-c6.c6", 0x1000001, 0x200000, CRC(69210441) SHA1(6d496c549dba65caabeaffe5b762e86f9d648a26) )
+ROM_END
+
+ROM_START( fatfury3bd ) /* Fatal Fury 3 - Hack by Creamymami and Dodowang - (Can choose Ryuji Yamazaki, Jin Chonshu and Jin Chonrei) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "069bd.p1", 0x000000, 0x100000, CRC(532c2930) SHA1(A65A39A79820138F275F75563F548240DD53F371) )
+ ROM_LOAD16_WORD_SWAP( "069-sp2.sp2", 0x100000, 0x200000, CRC(dbe963ed) SHA1(8ece7f663cfe8e563576a397e41161d392cee67e) )
+
+ NEO_SFIX_128K( "069-s1.s1", CRC(0b33a800) SHA1(b7d2cc97da4f30ddebc7b801f5e1d17d2306b2db) )
+
+ NEO_BIOS_AUDIO_128K( "069-m1.m1", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "069-c5.c5", 0x1000000, 0x200000, CRC(b3ec6fa6) SHA1(7e4c8ee9dd8d9a25ff183d9d8b05f38769348bc7) )
+ ROM_LOAD16_BYTE( "069-c6.c6", 0x1000001, 0x200000, CRC(69210441) SHA1(6d496c549dba65caabeaffe5b762e86f9d648a26) )
+ROM_END
+
+ROM_START( fatfury3bh )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "069bh.p1", 0x000000, 0x100000, CRC(b8362f59) SHA1(9ae1cd259d9667fefcba0452ea658cf72aba189e) )
+ ROM_LOAD16_WORD_SWAP( "069-sp2.sp2", 0x100000, 0x200000, CRC(dbe963ed) SHA1(8ece7f663cfe8e563576a397e41161d392cee67e) )
+
+ NEO_SFIX_128K( "069-s1.s1", CRC(0b33a800) SHA1(b7d2cc97da4f30ddebc7b801f5e1d17d2306b2db) )
+
+ NEO_BIOS_AUDIO_128K( "069-m1.m1", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "069-c5.c5", 0x1000000, 0x200000, CRC(b3ec6fa6) SHA1(7e4c8ee9dd8d9a25ff183d9d8b05f38769348bc7) )
+ ROM_LOAD16_BYTE( "069-c6.c6", 0x1000001, 0x200000, CRC(69210441) SHA1(6d496c549dba65caabeaffe5b762e86f9d648a26) )
+ROM_END
+
+ROM_START( fatfury3eh ) /* Fatal Fury 3 - Enhance by Creamymami and Dodowang - (Can choose Ryuji Yamazaki, Jin Chonshu and Jin Chonrei - all characters ultra kill style change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "069eh.p1", 0x000000, 0x100000, CRC(e07140da) SHA1(205D7E2C7BE66959430A8ECFA20A368C8BF90F62) )
+ ROM_LOAD16_WORD_SWAP( "069-sp2.sp2", 0x100000, 0x200000, CRC(dbe963ed) SHA1(8ece7f663cfe8e563576a397e41161d392cee67e) )
+
+ NEO_SFIX_128K( "069-s1.s1", CRC(0b33a800) SHA1(b7d2cc97da4f30ddebc7b801f5e1d17d2306b2db) )
+
+ NEO_BIOS_AUDIO_128K( "069-m1.m1", CRC(fce72926) SHA1(a40c74f793900b8542f0b8383ce4bf46fca112d4) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) )
+
+ ROM_REGION( 0x1400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "069-c5.c5", 0x1000000, 0x200000, CRC(b3ec6fa6) SHA1(7e4c8ee9dd8d9a25ff183d9d8b05f38769348bc7) )
+ ROM_LOAD16_BYTE( "069-c6.c6", 0x1000001, 0x200000, CRC(69210441) SHA1(6d496c549dba65caabeaffe5b762e86f9d648a26) )
+ROM_END
+
+
+ROM_START( rbff1ud ) /* Real Bout Fatal Fury - Enhance by Dodowang - (All characters ultra kill style change) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "095ud.p1", 0x000000, 0x100000, CRC(fa5e3c0f) SHA1(6391ad22eabf0246aa3b9f6d9f821cd58d2e5c71) )
+ ROM_LOAD16_WORD_SWAP( "095-p2.sp2", 0x100000, 0x200000, CRC(cc15826e) SHA1(44d6ac6c0ca697a6f367dcfd809b1e1771cb0635) )
+
+ NEO_SFIX_128K( "095-s1.s1", CRC(b6bf5e08) SHA1(b527355c35ea097f3448676f2ffa65b8e56ae30c) )
+
+ NEO_BIOS_AUDIO_128K( "095-m1.m1", CRC(653492a7) SHA1(39e511fb9ed5d2135dc8428a31d0baafb2ab36e0) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "069-v1.v1", 0x000000, 0x400000, CRC(2bdbd4db) SHA1(5f4fecf69c2329d699cbd45829c19303b1e2a80e) )
+ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) )
+ ROM_LOAD( "095-v3.v3", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) )
+ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) )
+ ROM_LOAD16_BYTE( "069-c3.c3", 0x0800000, 0x400000, CRC(1c0fde2f) SHA1(cf6c2ef56c03a861de3b0b6dc0d7c9204d947f9d) )
+ ROM_LOAD16_BYTE( "069-c4.c4", 0x0800001, 0x400000, CRC(a25fc3d0) SHA1(83cb349e2f1032652060b233e741fb893be5af16) )
+ ROM_LOAD16_BYTE( "095-c5.c5", 0x1000000, 0x400000, CRC(8b9b65df) SHA1(e2a7e20855501f240bcd22f5cc92fcb4a9806abe) )
+ ROM_LOAD16_BYTE( "095-c6.c6", 0x1000001, 0x400000, CRC(3e164718) SHA1(53217f938c8964c1ca68a6fd5249c4169a5ac8e6) )
+ ROM_LOAD16_BYTE( "095-c7.c7", 0x1800000, 0x200000, CRC(ca605e12) SHA1(5150b835247fd705bc1dece97d423d9c20a51416) )
+ ROM_LOAD16_BYTE( "095-c8.c8", 0x1800001, 0x200000, CRC(4e6beb6c) SHA1(c0ac7cfc832ace6ad52c58f5da3a8101baead749) )
+ROM_END
+
+ROM_START( rbffsb ) /* Real Bout Fatal Fury Special - Hack by Creamymami - (Can choose Geese Howard) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223b.p1", 0x000000, 0x100000, CRC(bb52545f) SHA1(1d082b3f2d71f8510d63a779cbcf5861a066ca26) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffseh ) /* Real Bout Fatal Fury Special - Enhance by Creamymami - (Can choose Geese Howard - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223eh.p1", 0x000000, 0x100000, CRC(6fe86622) SHA1(7cb68f4928c3fa9a07f7f806795628d70a24e693) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffsehd ) /* Real Bout Fatal Fury Special - Enhance by Dodowang - (All charcaters ultra kill style change - can choose Geese Howard - can choose 4 EX characters) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223ehd.p1", 0x000000, 0x100000, CRC(db89d64b) SHA1(6018ab688865c2c51e73daf0a33ec8ef5c65de77) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffspbd )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223bd.p1", 0x000000, 0x100000, CRC(04cb6d40) SHA1(97427ce56aeb3eaa851297a7beae125a34ca82c4) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffspecbs )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223bs.p1", 0x000000, 0x100000, CRC(abf2a6e7) SHA1(59c5d253c66aad2b352ccf752d2a90f3ea229897) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffspy ) /* Real Bout Fatal Fury Special - Enhance by Ydmis - (Ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223py.p1", 0x000000, 0x100000, CRC(2cf01f60) SHA1(fcaf1f9b91af5a035b8ee28cff6e3a72e73766fd) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+ROM_START( rbffsud ) /* Real Bout Fatal Fury Special - Enhance by Dodowang - (All charcaters ultra kill style change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "223ud.p1", 0x000000, 0x100000, CRC(b173df6b) SHA1(2c03eeee842b6a583a352c5414633ffc9a430fbf) )
+ ROM_LOAD16_WORD_SWAP( "223-p2.sp2", 0x100000, 0x400000, CRC(addd8f08) SHA1(abaf5b86c8ec915c07ef2d83fce9ad03acaa4817) )
+
+ NEO_SFIX_128K( "223-s1.s1", CRC(7ecd6e8c) SHA1(465455afc4d83cbb118142be4671b2539ffafd79) )
+
+ NEO_BIOS_AUDIO_128K( "223-m1.m1", CRC(3fee46bf) SHA1(e750f85233953853618fcdff980a4721af1710a3) )
+
+ ROM_REGION( 0xc00000, "ymsnd", 0 )
+ ROM_LOAD( "223-v1.v1", 0x000000, 0x400000, CRC(76673869) SHA1(78a26afa29f73de552ffabdbf3fc4bf26be8ae9e) )
+ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) )
+ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) )
+ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) )
+ ROM_LOAD16_BYTE( "223-c3.c3", 0x0800000, 0x400000, CRC(ca00191f) SHA1(96977febfcc513e1848d7029ff169cdf51104038) )
+ ROM_LOAD16_BYTE( "223-c4.c4", 0x0800001, 0x400000, CRC(1f23d860) SHA1(e18df52f898a51074e07a0b8c6e75873e7cde35e) )
+ ROM_LOAD16_BYTE( "223-c5.c5", 0x1000000, 0x400000, CRC(321e362c) SHA1(39bd189334278f266124c97c6f70995f6f171cea) )
+ ROM_LOAD16_BYTE( "223-c6.c6", 0x1000001, 0x400000, CRC(d8fcef90) SHA1(bbccacb27f1e587bc144fe7ce68bd7b327ceaaee) )
+ ROM_LOAD16_BYTE( "223-c7.c7", 0x1800000, 0x400000, CRC(bc80dd2d) SHA1(086f372015eede88c6c578595fe915e28a589d2f) )
+ ROM_LOAD16_BYTE( "223-c8.c8", 0x1800001, 0x400000, CRC(5ad62102) SHA1(e28cc9840caed2a1a8bd65a03bef05231071040c) )
+ROM_END
+
+
+ROM_START( rbff2b ) /* Real Bout Fatal Fury 2 - Hack by Ydmis - (Can choose Alfred) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240b.p1", 0x000000, 0x100000, CRC(94429c9f) SHA1(3c7df75eb6dec674a309f7e1e19557f78d8157a2) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2bh ) /* Real Bout Fatal Fury 2 - Hack by Dodowang - (Can choose Alfred - icon in character select menue added) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240bh.p1", 0x000000, 0x100000, CRC(a5652c51) SHA1(0a736bb5c817752aef5b559c0355329667203073) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240bh.s1", CRC(141a8492) SHA1(e3b27771c78ac1df96f9daf951511897652b1a0f) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2eh ) /* Real Bout Fatal Fury 2 - Enhance by Ydmis - (Can choose Alfred - ultra kill start is max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240eh.p1", 0x000000, 0x100000, CRC(270943a8) SHA1(959d0c30d3bae5011109247d50350970cb0a3e5d) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2eh2 ) /* Real Bout Fatal Fury 2 - Enhance by Creamymami and Ydmis - (Can choose Alfred - ultra kill start is max - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240eh2.p1", 0x000000, 0x100000, CRC(e25bd43c) SHA1(08071840f296204e8178e53ffc0e571ee88c3724) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2ehc ) /* Real Bout Fatal Fury 2 - Enhance by Creamymami - (Ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240ehc.p1", 0x000000, 0x100000, CRC(73c40014) SHA1(5ed2ee938cf8213a0d6ea85b40e07370e472d59c) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2eho ) /* Real Bout Fatal Fury 2 - Hack by Ydmis - (Can choose Alfred) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240eho.p1", 0x000000, 0x100000, CRC(6bf11562) SHA1(4d92a96e89b4726733fd7aeeaa5eaad6e80ce7a3) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2fc )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240fc.p1", 0x000000, 0x100000, CRC(D01854FA) SHA1(1a4230404df76c111c76348a04d86976cd68df93) )
+ ROM_LOAD16_WORD_SWAP( "240fc.p2", 0x100000, 0x400000, CRC(C063193D) SHA1(3321d90f93b1f7bf423a20b780b453a756e041be) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240fc.c5", 0x2000000, 0x800000, CRC(21831787) SHA1(928620e9efb849c591d75a645969c24b15e5c337) )
+ ROM_LOAD16_BYTE( "240fc.c6", 0x2000001, 0x800000, CRC(06B2D1DA) SHA1(d39da350a9017a68704ea99bff7f48163b0866fb) )
+ROM_END
+
+ROM_START( rbff2ud ) /* Real Bout Fatal Fury 2 - Enhance by Dodowang - (P1 and P2 go to Terry, hold down B+C and press A - can choose then Alfread - all characters ultra kill style change) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240ud.p1", 0x000000, 0x100000, CRC(d3cc7f24) SHA1(f6c831ce358afbad457c75fcdf89f9abf9a21ec8) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+ROM_START( rbff2y ) /* Real Bout Fatal Fury 2 - Hack by Ydmis - (Player 2 goes to Terry, holds down B+C and presses A - can choose then Alfred) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "240y.p1", 0x000000, 0x100000, CRC(621387e2) SHA1(3492845dcb34d2be4268f270025045c4c6cba0ad) )
+ ROM_LOAD16_WORD_SWAP( "240-p2.sp2", 0x100000, 0x400000, CRC(960aa88d) SHA1(3d9e785891871af90313f178dca2724633406674) )
+
+ NEO_SFIX_128K( "240-s1.s1", CRC(da3b40de) SHA1(e6bf74e057ac6fe1f249a7547f13ba7fbc694561) )
+
+ NEO_BIOS_AUDIO_256K( "240-m1.m1", CRC(ed482791) SHA1(1f54a45967cb7842c33aa24be322c9f33ff75ac3) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "240-v1.v1", 0x000000, 0x400000, CRC(f796265a) SHA1(736dff37eb91fc856b4d189249fb0de9b6c0813a) )
+ ROM_LOAD( "240-v2.v2", 0x400000, 0x400000, CRC(2cb3f3bb) SHA1(697e677890892f4b028c9a27c66809ca0a8a9b18) )
+ ROM_LOAD( "240b.v3", 0x800000, 0x400000, CRC(df77b7fa) SHA1(4df971ce20bdb8c1ce8cc1692a32ac69505ffa9a) )
+ ROM_LOAD( "240b.v4", 0xc00000, 0x400000, CRC(33a356ee) SHA1(b2a08052be670f301f8d4903b36c70088d1a11da) )
+
+ ROM_REGION( 0x3000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) )
+ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) )
+ ROM_LOAD16_BYTE( "240-c3.c3", 0x1000000, 0x800000, CRC(22e0330a) SHA1(0fe7f6a8aeba7f17dbb278e85003969ff10d3cd2) )
+ ROM_LOAD16_BYTE( "240-c4.c4", 0x1000001, 0x800000, CRC(c19a07eb) SHA1(139eac8b51cadf328dd42d8109f4e2463f57230c) )
+ ROM_LOAD16_BYTE( "240-c5.c5", 0x2000000, 0x800000, CRC(244dff5a) SHA1(156548156d3ceaa808d0053d0749af2526a3943e) )
+ ROM_LOAD16_BYTE( "240-c6.c6", 0x2000001, 0x800000, CRC(4609e507) SHA1(bb17f50a377dddb77c1eeda5944a7bcbf0cca5f7) )
+ROM_END
+
+
+
+GAME( 1993, fatfurspb, fatfursp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Fatal Fury Special / Garou Densetsu Special (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfurspbs, fatfursp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Fatal Fury Special (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfurspbt, fatfursp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "PPX team", "Fatal Fury Special (BT Version PPX Team hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fatfurspeh, fatfursp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Fatal Fury Special (Add Ryo)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, fatfury2b, fatfury2, neogeo_noslot, neogeo, neogeo_noslot_state, fatfury2, ROT0, "Yumeji", "Fatal Fury 2 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, fatfury3b, fatfury3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Fatal Fury 3 (Add Char set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fatfury3bd, fatfury3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Dodowang", "Fatal Fury 3 (Add Char set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fatfury3bh, fatfury3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Fatal Fury 3 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fatfury3eh, fatfury3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Dodowang", "Fatal Fury 3 (Add Char - Ultra kill style changed)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, rbff1ud, rbff1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Real Bout Fatal Fury (Ultra kill style changed)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1996, rbffsb, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Real Bout Fatal Fury Special (Add Geese Howard)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffseh, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Real Bout Fatal Fury Special (Add Geese Howard - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffsehd, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Real Bout Fatal Fury Special (Ultra kill style changed - 5 Add Char)", MACHINE_SUPPORTS_SAVE ) // Geese Howard, Andy B. EX, Blue Mary EX, Billy K. EX and Tung Fu Rue EX
+GAME( 1996, rbffspbd, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspecbs, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Real Bout Fatal Fury Special (Boss hack Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffspy, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Real Bout Fatal Fury Special (Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rbffsud, rbffspec, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Real Bout Fatal Fury Special (Ultra kill style changed)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1998, rbff2b, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Real Bout Fatal Fury 2 (Add Alfred)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2bh, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Real Bout Fatal Fury 2 (Add Alfred with Icon)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2eh, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Real Bout Fatal Fury 2 (Add Alfred - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2ehc, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami", "Real Bout Fatal Fury 2 (Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2eh2, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Real Bout Fatal Fury 2 (Add Alfred - Ultra kill start max - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2eho, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Real Bout Fatal Fury 2 (Add Alfred) (Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2fc, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids - FCHT", "Real Bout Fatal Fury 2 (Enable Alfred v3 & Color Fix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2ud, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Real Bout Fatal Fury 2 (P1 and P2 Add Alfred [Terry, hold B+C and press A] - Ultra kill style change)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, rbff2y, rbff2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Real Bout Fatal Fury 2 (P1 only Add Alfred [Terry, hold B+C and press A])", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngrotd.cpp b/docs/release/src/hbmame/drivers/ngrotd.cpp
new file mode 100644
index 00000000000..9132c4bdf97
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngrotd.cpp
@@ -0,0 +1,591 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, rotdb )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, ROTD_GFX_KEY);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 16);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, rotdd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 16);
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, rotdnd )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_sprgen->m_fixed_layer_bank_type = 1;
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+
+ROM_START( rotdb ) /* Rage of the Dragons - Hack by Ydmis - (Console mode enabled - can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264b.p1", 0x000000, 0x800000, CRC(66d05f5b) SHA1(8114262695229ec8af22001569481007a30dc977) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdb1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264b1.p1", 0x000000, 0x800000, CRC(8bf2d91e) SHA1(5b0e92934bb672761320eb7377962b977b39c0e5) )
+
+ NEO_SFIX_128K( "264b1.s1", CRC(b530292a) SHA1(8479cbdb377e7ed324aa777e3f6d094f4d1b80b5) )
+
+ NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264nd.v1", 0x000000, 0x400000, CRC(5C77A3FE) SHA1(3de61ff174d8b5b1a735666d3ed30554637e4b2d) )
+ ROM_LOAD( "264nd.v2", 0x400000, 0x400000, CRC(A9B7AF14) SHA1(5e3c693634139fa8bbc0966af2873d1413cc13d9) )
+ ROM_LOAD( "264nd.v3", 0x800000, 0x400000, CRC(17AFF92A) SHA1(cafbef0b1b20b53c9d18c6b727e1912f0c958382) )
+ ROM_LOAD( "264nd.v4", 0xC00000, 0x400000, CRC(BC6A091E) SHA1(434b0e7aeac14677c7ce95d119dc1dd7a41a85cb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264d.c7", 0x3000000, 0x800000, CRC(edda4baf) SHA1(3F53EB50FD9EC9E9EE05EEE050885C07023B6D53) )
+ ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) )
+ROM_END
+
+ROM_START( rotdbh )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264bh.p1", 0x000000, 0x800000, CRC(6c7f4efd) SHA1(d7d951d0520f30baa4a7c5875cfb0b7f8243ec8a) )
+
+ NEO_SFIX_128K( "264b1.s1", CRC(b530292a) SHA1(8479cbdb377e7ed324aa777e3f6d094f4d1b80b5) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_128K( "264-m1.m1", CRC(4dbd7b43) SHA1(6b63756b0d2d30bbf13fbd219833c81fd060ef96) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdbr ) /* Rage of the Dragons - Translation Hack by UNKNOWN - (Portuguese translation) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264br.p1", 0x000000, 0x800000, CRC(8f5d7188) SHA1(a29209a05a22e18d6baa78830d6bbc763d23dcac) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdbr1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264br1.p1", 0x000000, 0x800000, CRC(59395cb3) SHA1(3f723a4b9bbc8c587eab449ecdb2be666ca59992) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdbr2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264br2.p1", 0x000000, 0x800000, CRC(8a973ecf) SHA1(5c472fca9091fb88f49ea72ce49b17fae3bbdaa9) )
+
+ NEO_SFIX_128K( "264br2.s1", CRC(28b387d6) SHA1(eb50e74b66ce9e14765fa0841e928b8be3035c73) )
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdbr2d )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264br2.p1", 0x000000, 0x800000, CRC(8a973ecf) SHA1(5c472fca9091fb88f49ea72ce49b17fae3bbdaa9) )
+
+ NEO_SFIX_128K( "264br2.s1", CRC(28b387d6) SHA1(eb50e74b66ce9e14765fa0841e928b8be3035c73) )
+
+ NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264nd.v1", 0x000000, 0x400000, CRC(5C77A3FE) SHA1(3de61ff174d8b5b1a735666d3ed30554637e4b2d) )
+ ROM_LOAD( "264nd.v2", 0x400000, 0x400000, CRC(A9B7AF14) SHA1(5e3c693634139fa8bbc0966af2873d1413cc13d9) )
+ ROM_LOAD( "264nd.v3", 0x800000, 0x400000, CRC(17AFF92A) SHA1(cafbef0b1b20b53c9d18c6b727e1912f0c958382) )
+ ROM_LOAD( "264nd.v4", 0xC00000, 0x400000, CRC(BC6A091E) SHA1(434b0e7aeac14677c7ce95d119dc1dd7a41a85cb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264d.c7", 0x3000000, 0x800000, CRC(edda4baf) SHA1(3F53EB50FD9EC9E9EE05EEE050885C07023B6D53) )
+ ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) )
+ROM_END
+
+ROM_START( rotdcre ) /* Rage of the Dragons - Hack by Creamymami and UNKNOWN - (Console mode enabled - always power max - no change wait) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264cre.p1", 0x000000, 0x800000, CRC(c3f5a8ea) SHA1(4a7beeb4269846f743bafb118256c1106fd7d529) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdcreb ) /* Rage of the Dragons - Hack by Creamymami, UNKNOWN and Ydmis - (Console mode enabled - can choose Abubo and Johann - always power max - no change wait) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264creb.p1", 0x000000, 0x800000, CRC(c058f365) SHA1(84731cf354693141cc06f90a73bbd597eb6a594f) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264-p1.p1", 0x000000, 0x800000, CRC(b8cc969d) SHA1(4f2205b4bdd32dd1522106ef4df10ac0eb1b852d) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264d.c7", 0x3000000, 0x800000, CRC(edda4baf) SHA1(3F53EB50FD9EC9E9EE05EEE050885C07023B6D53) )
+ ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) )
+ROM_END
+
+ROM_START( rotddh )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264dh.p1", 0x000000, 0x800000, CRC(7c095666) SHA1(2b9412105cd60fa6d7eea9d13a552fd976f56eb6) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264dh.c7", 0x3000000, 0x800000, CRC(2b5c1044) SHA1(1dc3b2bd5fed3e5b39d87c4728e8b0d8225ee7dc) )
+ ROM_LOAD16_BYTE( "264dh.c8", 0x3000001, 0x800000, CRC(f697f287) SHA1(2b257f2ebef69f19aaca54f37472f1c3dfc6bee6) )
+ROM_END
+
+ROM_START( rotdeh ) /* Rage of the Dragons - Hack by Ydmis - (Can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264eh.p1", 0x000000, 0x800000, CRC(b8db28bc) SHA1(9fd6cd7a13bde0854243dca4b0d7d9601cde4996) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdehc ) /* Rage of the Dragons - Enhance by Creamymami, FWNL and Ydmis - (Console mode enabled - can choose Abubo and Johann - always power max - no change wait) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264ehc.p1", 0x000000, 0x800000, CRC(2135864c) SHA1(5abd3ffbaf60ebbf7bd15afa0666b959d820c4aa) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdfw ) /* Rage of the Dragons - Hack by FWNL and Ydmis - (Console mode enabled - can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264fw.p1", 0x000000, 0x800000, CRC(7b89da35) SHA1(0edc3421f764deac1fefc499ffe469ad30956ebc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdfy ) /* Rage of the Dragons - Hack by FWNL and Ydmis - (Console mode enabled - can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264fy.p1", 0x000000, 0x800000, CRC(4ab52bcd) SHA1(7fcc074fb7c048f824fd5ef9a370c9a908299727) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdh2b ) /* Rage of the Dragons - Hack by UNKNOWN and Ydmis - (Console mode enabled - can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264h2b.p1", 0x000000, 0x800000, CRC(87bd2a72) SHA1(5f7ae41b7813fa7058c00cfa1c0d1a8c06395f8a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdhab ) /* Rage of the Dragons - Hack by HappyAsr - (Console mode enabled - character menue changed - can choose Abubo and Johann - characters choose twice) */
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) // needed
+ ROM_LOAD16_WORD_SWAP( "264hab.p1", 0x000000, 0x300000, CRC(44f5312a) SHA1(9a5356dbde209c9e5ebd04ff025c7c129a0ea4da) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdhab1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264hab.p1", 0x000000, 0x300000, CRC(44f5312a) SHA1(9a5356dbde209c9e5ebd04ff025c7c129a0ea4da) )
+
+ NEO_SFIX_128K( "264-s1.bin", CRC(c155d4ff) SHA1(cc20d4e30004ca82da2ba075c084d294c94651d0) )
+
+ NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264nd.v1", 0x000000, 0x400000, CRC(5C77A3FE) SHA1(3de61ff174d8b5b1a735666d3ed30554637e4b2d) )
+ ROM_LOAD( "264nd.v2", 0x400000, 0x400000, CRC(A9B7AF14) SHA1(5e3c693634139fa8bbc0966af2873d1413cc13d9) )
+ ROM_LOAD( "264nd.v3", 0x800000, 0x400000, CRC(17AFF92A) SHA1(cafbef0b1b20b53c9d18c6b727e1912f0c958382) )
+ ROM_LOAD( "264nd.v4", 0xC00000, 0x400000, CRC(BC6A091E) SHA1(434b0e7aeac14677c7ce95d119dc1dd7a41a85cb) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264d.c7", 0x3000000, 0x800000, CRC(edda4baf) SHA1(3F53EB50FD9EC9E9EE05EEE050885C07023B6D53) )
+ ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) )
+ROM_END
+
+ROM_START( rotdhar ) /* Rage of the Dragons - Hack by HappyAsr - (Console mode enabled) */
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD16_WORD_SWAP( "264har.p1", 0x000000, 0x300000, CRC(ca979b31) SHA1(03ff383db6b33ffbd7736bc87888f7c645dda62d) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdhfw ) /* Rage of the Dragons - Hack by FWNL - (Console mode enabled) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264hfw.p1", 0x000000, 0x800000, CRC(49187042) SHA1(f7609bc4fa236304bbf7383ea49e2a4a5cf44682) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdhfwb ) /* Rage of the Dragons - Hack by FWNL and Ydmis - (Console mode enabled - can choose Abubo and Johann) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264hfwb.p1", 0x000000, 0x800000, CRC(ed25cd79) SHA1(db73cf2e907fefc7d52cbbda2f36bc5edfa86ccb) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+ROM_START( rotdnd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264nd1.p1", 0x000000, 0x800000, CRC(23809749) SHA1(c0b63032e08337b9a9ab0e3ca1f91a8be2641e74) )
+
+ NEO_SFIX_128K( "264-s1.bin", CRC(c155d4ff) SHA1(cc20d4e30004ca82da2ba075c084d294c94651d0) )
+
+ NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264nd1.v1", 0x000000, 0x800000, CRC(2c49f3fa) SHA1(501e8b792bc96a262058326541333738418fbbdd) )
+ ROM_LOAD( "264nd1.v2", 0x800000, 0x800000, CRC(967279da) SHA1(21e90e14f6a6d73dd049541120c36d4421e237e6) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) )
+ ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) )
+ ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) )
+ ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) )
+ ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) )
+ ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) )
+ ROM_LOAD16_BYTE( "264d.c7", 0x3000000, 0x800000, CRC(edda4baf) SHA1(3F53EB50FD9EC9E9EE05EEE050885C07023B6D53) )
+ ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) )
+ROM_END
+
+ROM_START( rotdyc ) /* Rage of the Dragons - Hack by Creamymami and Ydmis - (Console mode enabled - can choose Abubo and Johann - power hack) */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "264yc.p1", 0x000000, 0x800000, CRC(ff3ef1ab) SHA1(bad86a1c5cdedc2589b7f668e64e10e630574fef) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_64K( "264d.m1", CRC(7e06206d) SHA1(ba32dd6ffbfbf532bba9bed4c2d70cfbe959ac23) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) )
+ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) )
+ ROM_LOAD16_BYTE( "264-c2.c2", 0x0000001, 0x800000, CRC(7cf5ff72) SHA1(ccb2f94bce943576d224cb326806942426d25584) )
+ ROM_LOAD16_BYTE( "264-c3.c3", 0x1000000, 0x800000, CRC(64d84c98) SHA1(8faf153f465ce6fb7770b27a7ce63caf11dd4086) )
+ ROM_LOAD16_BYTE( "264-c4.c4", 0x1000001, 0x800000, CRC(2f394a95) SHA1(82347e8f2b48b0522d7d91fd3f372d5768934ab2) )
+ ROM_LOAD16_BYTE( "264-c5.c5", 0x2000000, 0x800000, CRC(6b99b978) SHA1(8fd0a60029b41668f9e1e3056edd3c90f62efa83) )
+ ROM_LOAD16_BYTE( "264-c6.c6", 0x2000001, 0x800000, CRC(847d5c7d) SHA1(a2ce03f6302edf81f2645de9ec61df1a281ddd78) )
+ ROM_LOAD16_BYTE( "264-c7.c7", 0x3000000, 0x800000, CRC(231d681e) SHA1(87836e64dc816f8bf1c834641535ea96baacc024) )
+ ROM_LOAD16_BYTE( "264-c8.c8", 0x3000001, 0x800000, CRC(c5edb5c4) SHA1(253378c8739daa5da4edb15eff7050820b2b3755) )
+ROM_END
+
+
+
+GAME( 2002, rotdb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdb1, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdnd, ROT0, "hack", "Rage of the Dragons (Boss Hack)2", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdbh, rotd, neogeo_noslot, neogeo, neogeo_noslot_state, rotd, ROT0, "Dodowang", "Rage of the Dragons (Boss hack by Dodowang)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdbr, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdbr1, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese) (Alt Set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdbr2, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese) (Alt Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdbr2d, rotd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Rage of the Dragons - Portuguese/Brazilian Hack ver 2.0", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdcre, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami and Unk", "Rage of the Dragons (Console mode enabled - Always pow max - No change wait)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdcreb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, Unk and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdd, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdd, ROT0, "Evoga / Playmore", "Rage of the Dragons (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotddh, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdd, ROT0, "hack", "Rage of the Dragons (hack dh)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdeh, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdehc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdfw, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdfy, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdh2b, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Unk and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdhab, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "HappyAsr", "Rage of the Dragons (Add Char - Console mode enabled - Char menu changed - Char choose twice)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdhab1, rotd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Rage of the Dragons (Hack, Hero AES) [EGCG]", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdhar, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "HappyAsr", "Rage of the Dragons (Console mode enabled set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdhfw, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL", "Rage of the Dragons (Console mode enabled set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdhfwb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdnd, rotd, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Evoga / Playmore Corporation", "Rage of the Dragons (Fully Decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, rotdyc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled - Pow hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngsamsho.cpp b/docs/release/src/hbmame/drivers/ngsamsho.cpp
new file mode 100644
index 00000000000..4ede3a1051c
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngsamsho.cpp
@@ -0,0 +1,1850 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// Samurai Shodown / Samurai Spirits
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, sam5hb )
+{
+ DRIVER_INIT_CALL(neogeo);
+ // This is needed if s1 size > 0x20000, ignored otherwise
+ m_sprgen->m_fixed_layer_bank_type = 1;
+
+ // decrypt p roms if needed
+ u8 *ram = memregion("maincpu")->base();
+ if (ram[0x100007] != 0xC2)
+ {
+ //printf("Maincpu=%X\n",ram[0x100007]);fflush(stdout);
+ m_kof2002_prot->samsho5_decrypt_68k(cpuregion, cpuregion_size);
+ }
+
+ // decrypt m1 if needed
+ if (memregion("audiocrypt"))
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // decrypt v roms if needed
+ ram = memregion("ymsnd")->base();
+ if (ram[0] != 8)
+ {
+ //printf("ym=%X\n",ram[0]);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 4);
+ }
+
+ // decrypt c roms if needed
+ ram = memregion("sprites")->base();
+ if (ram[0] != 0)
+ {
+ //printf("Sprites=%X\n",ram[0]);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SAMSHO5_GFX_KEY);
+ }
+
+ // if no s rom, copy info from end of c roms
+ ram = memregion("fixed")->base();
+ if (ram[0x100] == 0)
+ {
+ //printf("Fixed1=%X\n",ram[0x100]);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ }
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, sam5sphb )
+{
+ DRIVER_INIT_CALL(neogeo);
+ // This is needed if s1 size > 0x20000, ignored otherwise
+ m_sprgen->m_fixed_layer_bank_type = 1;
+
+ // decrypt p roms if needed
+ u8 *ram = memregion("maincpu")->base();
+ if (ram[0x100007] == 0)
+ {
+ //printf("Maincpu=%X\n",ram[0x100007]);fflush(stdout);
+ m_kof2002_prot->samsh5sp_decrypt_68k(cpuregion, cpuregion_size);
+ }
+
+ // decrypt m1 if needed
+ if (memregion("audiocrypt"))
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // decrypt v roms if needed
+ ram = memregion("ymsnd")->base();
+ if (ram[0] != 8)
+ {
+ //printf("ym=%X\n",ram[0]);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 6);
+ }
+
+ // if no s rom, copy info from end of c roms
+ ram = memregion("fixed")->base();
+ if (ram[0x100] == 0)
+ {
+ //printf("Fixed1=%X\n",ram[0x100]);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ }
+}
+
+
+
+ROM_START( fswordsb1 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "187b1.p1", 0x000000, 0x100000, CRC(382f6a55) SHA1(892ef8ade8d65a57fff71966e389c20ecba225da) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( fswordsb2 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "187b2.p1", 0x000000, 0x100000, CRC(061fca36) SHA1(f8e69f48c6f4e8645b96a0261d849a93d5f48dd7) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( fswordsbf )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "187bf.p1", 0x000000, 0x100000, CRC(ba48c4c1) SHA1(c2aba24cda885fc8f8072023e496e599c2e610a2) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+
+ROM_START( samshob ) /* Samurai Shodown - Hack by Ydmis - (Can choose Amakusa) */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045b.p1", 0x000000, 0x080000, CRC(bc16e98b) SHA1(097611c6b0f1f0f09460d49b67c09f1611ce68bc) )
+ ROM_LOAD16_WORD_SWAP( "045b.p3", 0x080000, 0x080000, CRC(71768728) SHA1(9ff0e01d3fb73ad04279d4fdf4c53c3160888179) )
+ ROM_LOAD16_WORD_SWAP( "045-p2.sp2", 0x100000, 0x080000, CRC(38ee9ba9) SHA1(48190699a6be83cb6257365ae81f93fdd23abe09) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0x900000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c5.c5", 0x800000, 0x080000, CRC(a2bb8284) SHA1(aa118e3b8c062daa219b36758b9a3814c08c69dc) )
+ ROM_LOAD16_BYTE( "045-c6.c6", 0x800001, 0x080000, CRC(4fa71252) SHA1(afe374a9d1f2d955a59efe7b6196b89e021b164c) )
+ROM_END
+
+ROM_START( samshoeh ) /* Samurai Shodown - Enhance by Ydmis - (Can choose Amakusa - ultra kill start is max) */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045eh.p1", 0x000000, 0x080000, CRC(ba5277df) SHA1(255f467e0b9b2ee2210028829d68efd060a1480d) )
+ ROM_LOAD16_WORD_SWAP( "045b.p3", 0x080000, 0x080000, CRC(71768728) SHA1(9ff0e01d3fb73ad04279d4fdf4c53c3160888179) )
+ ROM_LOAD16_WORD_SWAP( "045-p2.sp2", 0x100000, 0x080000, CRC(38ee9ba9) SHA1(48190699a6be83cb6257365ae81f93fdd23abe09) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0x900000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c5.c5", 0x800000, 0x080000, CRC(a2bb8284) SHA1(aa118e3b8c062daa219b36758b9a3814c08c69dc) )
+ ROM_LOAD16_BYTE( "045-c6.c6", 0x800001, 0x080000, CRC(4fa71252) SHA1(afe374a9d1f2d955a59efe7b6196b89e021b164c) )
+ROM_END
+
+ROM_START( samshoeh2 ) /* Enhance by Creamymami and Ydmis - (Can choose Amakusa - ultra kill start is max - ultra kill is always max) */
+ ROM_REGION( 0x180000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045eh2.p1", 0x000000, 0x080000, CRC(54e85e0d) SHA1(701807af8e1181992cca5a31a8727e24cf4a0d9c) )
+ ROM_LOAD16_WORD_SWAP( "045b.p3", 0x080000, 0x080000, CRC(71768728) SHA1(9ff0e01d3fb73ad04279d4fdf4c53c3160888179) )
+ ROM_LOAD16_WORD_SWAP( "045-p2.sp2", 0x100000, 0x080000, CRC(38ee9ba9) SHA1(48190699a6be83cb6257365ae81f93fdd23abe09) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0x900000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c5.c5", 0x800000, 0x080000, CRC(a2bb8284) SHA1(aa118e3b8c062daa219b36758b9a3814c08c69dc) )
+ ROM_LOAD16_BYTE( "045-c6.c6", 0x800001, 0x080000, CRC(4fa71252) SHA1(afe374a9d1f2d955a59efe7b6196b89e021b164c) )
+ROM_END
+
+ROM_START( samshos1 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045s1.p1", 0x000000, 0x100000, CRC(61ce3e49) SHA1(4c6246a02a378ba7c581b3a023159a73604a2d1c) )
+ ROM_LOAD16_WORD_SWAP( "045-pg2.sp2", 0x100000, 0x100000, CRC(46745b94) SHA1(d9e959fd1f88c9402915c1d0dcdb4a9e3d49cdcb) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c51.c5", 0x800000, 0x100000, CRC(81932894) SHA1(550f15dc5892c4602422c51869f0d59f70f01e9e) )
+ ROM_LOAD16_BYTE( "045-c61.c6", 0x800001, 0x100000, CRC(be30612e) SHA1(5e8b785f917c176d6796eba0caed37b13ddb3e63) )
+ROM_END
+
+ROM_START( samshozk )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "045zk.p1", 0x000000, 0x100000, CRC(1538b682) SHA1(6024b12084828bcc54f0da2ee51f0a01316eaba6) )
+ ROM_LOAD16_WORD_SWAP( "045-pg2.sp2", 0x100000, 0x100000, CRC(46745b94) SHA1(d9e959fd1f88c9402915c1d0dcdb4a9e3d49cdcb) )
+
+ NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) )
+
+ NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) )
+ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) )
+
+ ROM_REGION( 0xa00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) )
+ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) )
+ ROM_LOAD16_BYTE( "045-c3.c3", 0x400000, 0x200000, CRC(f3dabd1e) SHA1(c80e52df42be9f8b2e89b467b11ab140a480cee8) )
+ ROM_LOAD16_BYTE( "045-c4.c4", 0x400001, 0x200000, CRC(935c62f0) SHA1(0053d40085fac14096b683f4341f65e543b71dc1) )
+ ROM_LOAD16_BYTE( "045-c51.c5", 0x800000, 0x100000, CRC(81932894) SHA1(550f15dc5892c4602422c51869f0d59f70f01e9e) )
+ ROM_LOAD16_BYTE( "045-c61.c6", 0x800001, 0x100000, CRC(be30612e) SHA1(5e8b785f917c176d6796eba0caed37b13ddb3e63) )
+ROM_END
+
+
+ROM_START( samsho2eh ) /* Samurai Shodown II - Enhance by Ydmis - (Can choose Mizuki and Kuroko) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063eh.p1", 0x100000, 0x100000, CRC(2682710f) SHA1(56b521673651c1b218d7a4382e6766a239f39826) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2emb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063emb.p1", 0x100000, 0x100000, CRC(33284e4f) SHA1(dcd57ac1c514c9b8d7d019a7c5c61468b890445e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2hy )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063hy.p1", 0x000000, 0x100000, CRC(87032884) SHA1(bdd07f9b2e57f1d429a4d5b6af4335cc5440ac75) )
+ ROM_LOAD16_WORD_SWAP( "063hy.p2", 0x100000, 0x100000, CRC(a03ead44) SHA1(8bfbc2b6220719a742e1684601f36305d0e63308) )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2mb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063mb.p1", 0x100000, 0x100000, CRC(33f68ceb) SHA1(d889a40a5cacbc04ec67a81a93fb1e95f0cc5484) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2q )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063q.p1", 0x100000, 0x100000, CRC(6fa3bd7a) SHA1(c0a718d2e989e334948d0fbd21af58795f126a34) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2s2 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063s2.p1", 0x100000, 0x100000, CRC(38f5f416) SHA1(ce2f3e7fd534b1b3e02c9316210af1ca375ac2ea) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2sp )
+ ROM_REGION( 0x220000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063sp.p1", 0x000000, 0x100000, CRC(07d5c8f5) SHA1(0ed9bc1b188e5d445cf80ea5af67938fd96d50c2) )
+ ROM_LOAD16_WORD_SWAP( "063sp.p2", 0x100000, 0x100000, CRC(6e1aef70) SHA1(7a035e80b6f6af1d105ecccf3f5a2c44470366f3) )
+ ROM_LOAD16_WORD_SWAP( "063sp.p3", 0x200000, 0x020000, CRC(e56076ae) SHA1(9c2e6858fceb03702245658bbb6ba4e14431dda1) )
+
+ NEO_SFIX_128K( "063sp.s1", CRC(1951a907) SHA1(ee0e4743d7c2ba6306f08f16de2e3fea6697a89e) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063sp.c7", 0xc00000, 0x200000, CRC(dbebced2) SHA1(c1db8a0a6814b8078934b68f1f579060e36f67b2) )
+ ROM_LOAD16_BYTE( "063sp.c8", 0xc00001, 0x200000, CRC(bf70b93c) SHA1(1bffeb6c7e158b9aee33802fe86f75cee04c6ecc) )
+ROM_END
+
+ROM_START( samsho2sp2 )
+ ROM_REGION( 0x220000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063sp2.p1", 0x000000, 0x100000, CRC(08de44f4) SHA1(b409b0a301f61b0d0d952383aae71af51527d08e) )
+ ROM_LOAD16_WORD_SWAP( "063sp.p2", 0x100000, 0x100000, CRC(6e1aef70) SHA1(7a035e80b6f6af1d105ecccf3f5a2c44470366f3) )
+ ROM_LOAD16_WORD_SWAP( "063sp2.p3", 0x200000, 0x020000, CRC(cf9f3a5d) SHA1(8643ac9173be35f6aa5ad1e733c74d1355ac6f84) )
+
+ NEO_SFIX_128K( "063sp.s1", CRC(1951a907) SHA1(ee0e4743d7c2ba6306f08f16de2e3fea6697a89e) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063sp.c7", 0xc00000, 0x200000, CRC(dbebced2) SHA1(c1db8a0a6814b8078934b68f1f579060e36f67b2) )
+ ROM_LOAD16_BYTE( "063sp.c8", 0xc00001, 0x200000, CRC(bf70b93c) SHA1(1bffeb6c7e158b9aee33802fe86f75cee04c6ecc) )
+ROM_END
+
+ROM_START( samsho2sp3 )
+ ROM_REGION( 0x220000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063sp3.p1", 0x000000, 0x100000, CRC(19260a9a) SHA1(cd40ac51079641e778edac4910e96e51479cdcbb) )
+ ROM_LOAD16_WORD_SWAP( "063sp.p2", 0x100000, 0x100000, CRC(6e1aef70) SHA1(7a035e80b6f6af1d105ecccf3f5a2c44470366f3) )
+ ROM_LOAD16_WORD_SWAP( "063sp3.p3", 0x200000, 0x020000, CRC(8fabd043) SHA1(b8a311d0f57981ef045d80858036136c7840c405) )
+
+ NEO_SFIX_128K( "063sp.s1", CRC(1951a907) SHA1(ee0e4743d7c2ba6306f08f16de2e3fea6697a89e) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063sp.c7", 0xc00000, 0x200000, CRC(dbebced2) SHA1(c1db8a0a6814b8078934b68f1f579060e36f67b2) )
+ ROM_LOAD16_BYTE( "063sp.c8", 0xc00001, 0x200000, CRC(bf70b93c) SHA1(1bffeb6c7e158b9aee33802fe86f75cee04c6ecc) )
+ROM_END
+
+ROM_START( samsho2sp4 )
+ ROM_REGION( 0x220000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063sp4.p1", 0x000000, 0x100000, CRC(2bd5a4ab) SHA1(5d5b1cd7efc5a71b1cb97b81b920a0924b7cd760) )
+ ROM_LOAD16_WORD_SWAP( "063sp.p2", 0x100000, 0x100000, CRC(6e1aef70) SHA1(7a035e80b6f6af1d105ecccf3f5a2c44470366f3) )
+ ROM_LOAD16_WORD_SWAP( "063sp4.p3", 0x200000, 0x020000, CRC(72eec1f4) SHA1(122548fdfd6ca4b80e6a232f5928ce6bac6c862b) )
+
+ NEO_SFIX_128K( "063sp.s1", CRC(1951a907) SHA1(ee0e4743d7c2ba6306f08f16de2e3fea6697a89e) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063sp.c7", 0xc00000, 0x200000, CRC(dbebced2) SHA1(c1db8a0a6814b8078934b68f1f579060e36f67b2) )
+ ROM_LOAD16_BYTE( "063sp.c8", 0xc00001, 0x200000, CRC(bf70b93c) SHA1(1bffeb6c7e158b9aee33802fe86f75cee04c6ecc) )
+ROM_END
+
+ROM_START( samsho2sq )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063sq.p1", 0x100000, 0x100000, CRC(beeeeed1) SHA1(2d0639eee365308647f04db9423e93b9044d307a) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2ss )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063ss.p1", 0x100000, 0x100000, CRC(e300e5fa) SHA1(5e6793a69cc6996f5be4dba8f1bb2e95b2e36db6) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2yc ) /* Samurai Shodown II - Enhance by Creamymami and Ydmis - (Can choose Mizuki and Kuroko - power hack) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063yc.p1", 0x100000, 0x100000, CRC(ff64d433) SHA1(6d3140413614fe4f5dda17f623c734c6e2ab0940) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+ROM_START( samsho2zk )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "063zk.p1", 0x100000, 0x100000, CRC(a7564f22) SHA1(20cf4eb464e79acc6258872a858b5e19023b461f) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) )
+
+ NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) )
+
+ ROM_REGION( 0x700000, "ymsnd", 0 )
+ ROM_LOAD( "063-v1.v1", 0x000000, 0x200000, CRC(37703f91) SHA1(a373ebef4c33ba1d8340e826981a58769aada238) )
+ ROM_LOAD( "063-v2.v2", 0x200000, 0x200000, CRC(0142bde8) SHA1(0be6c53acac44802bf70b6925452f70289a139d9) )
+ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) )
+ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) )
+ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) )
+ ROM_LOAD16_BYTE( "063-c3.c3", 0x400000, 0x200000, CRC(7a63ccc7) SHA1(49d97c543bc2860d493a353ab0d059088c6fbd21) )
+ ROM_LOAD16_BYTE( "063-c4.c4", 0x400001, 0x200000, CRC(751025ce) SHA1(e1bbaa7cd67fd04e4aab7f7ea77f63ae1cbc90d0) )
+ ROM_LOAD16_BYTE( "063-c5.c5", 0x800000, 0x200000, CRC(20d3a475) SHA1(28da44a136bd14c73c62c147c3f6e6bcfa1066de) )
+ ROM_LOAD16_BYTE( "063-c6.c6", 0x800001, 0x200000, CRC(ae4c0a88) SHA1(cc8a7d11daa3821f83a6fd0942534706f939e576) )
+ ROM_LOAD16_BYTE( "063-c7.c7", 0xc00000, 0x200000, CRC(2df3cbcf) SHA1(e54f9022359963711451c2025825b862d36c6975) )
+ ROM_LOAD16_BYTE( "063-c8.c8", 0xc00001, 0x200000, CRC(1ffc6dfa) SHA1(acea18aca76c072e0bac2a364fc96d49cfc86e77) )
+ROM_END
+
+
+ROM_START( samsho3eh ) /* Samurai Shodown III - Hack by Ydmis - (Can choose Zankuro and Kuroko) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087eh.p1", 0x000000, 0x100000, CRC(251d9b3f) SHA1(6ea015bbc528ac9a5d0eeb746ed8fcca689c2be6) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3hb )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087hb.p1", 0x000000, 0x100000, CRC(15e021ca) SHA1(78aba32741d2e4b5bc4c641a4166f4405ab240e2) )
+ ROM_LOAD16_WORD_SWAP( "087hb.p2", 0x100000, 0x200000, CRC(1cc2c370) SHA1(01fba8d315d684652fb506aa833fa0e8e3e350df) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3s2 )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087s2.p1", 0x000000, 0x100000, CRC(453daf21) SHA1(9c29d2efc98746396cd2a0dcde04fee9f70e317d) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3se ) /* Samurai Shodown III - (samsho3ehc) - Super Enhance Hack by Creamymami and Ydmis - (Can choose Zankuro and Kuroko - power hack ABC - ultra power hack) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087se.p1", 0x000000, 0x100000, CRC(8deb9f12) SHA1(5fc437f41020f8619b23e37a864e2ba19fec2727) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3ss )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087ss.p1", 0x000000, 0x100000, CRC(a2fcad93) SHA1(aba1e7f70ee3349fc686968fc69507bdf77289dd) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3yc ) /* Samurai Shodown III - Enhance by Creamymami and Ydmis - (Can choose Zankuro and Kuroko - power hack ABC) */
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087yc.p1", 0x000000, 0x100000, CRC(f111c831) SHA1(eff62f96172af895605201860a8d18ed847d08a0) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+ROM_START( samsho3zk )
+ ROM_REGION( 0x300000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "087zk.p1", 0x000000, 0x100000, CRC(96c92f16) SHA1(0a4d976ffa6bb0723f3832cf78b73c7f69fb5ff7) )
+ ROM_LOAD16_WORD_SWAP( "087-p2.sp2", 0x100000, 0x200000, CRC(9bbe27e0) SHA1(b18117102159903c8e8f4e4226e1cc91a400e816) )
+
+ NEO_SFIX_128K( "087-s1.s1", CRC(74ec7d9f) SHA1(d79c479838a7ca51735a44f91f1968ec5b3c6b91) )
+
+ NEO_BIOS_AUDIO_128K( "087-m1.m1", CRC(8e6440eb) SHA1(e3f72150af4e326543b29df71cda27d73ec087c1) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) )
+ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) )
+
+ ROM_REGION( 0x1a00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) )
+ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) )
+ ROM_LOAD16_BYTE( "087-c3.c3", 0x0800000, 0x400000, CRC(8b793796) SHA1(053acc129ea56691607a5d255845703e61fd3ada) )
+ ROM_LOAD16_BYTE( "087-c4.c4", 0x0800001, 0x400000, CRC(728fbf11) SHA1(daa319d455f759bfc08a37b43218bdb48dc1c9e5) )
+ ROM_LOAD16_BYTE( "087-c5.c5", 0x1000000, 0x400000, CRC(172ab180) SHA1(a6122f683bdb78d0079e1e360c1b96ba28def7b7) )
+ ROM_LOAD16_BYTE( "087-c6.c6", 0x1000001, 0x400000, CRC(002ff8f3) SHA1(3a378708697d727796c4f702dd5bbf1c9eb4daec) )
+ ROM_LOAD16_BYTE( "087-c7.c7", 0x1800000, 0x100000, CRC(ae450e3d) SHA1(ec482632cc347ec3f9e68df0ebcaa16ebe41b9f9) )
+ ROM_LOAD16_BYTE( "087-c8.c8", 0x1800001, 0x100000, CRC(a9e82717) SHA1(e39ee15d5140dbe7f06eea945cce9984a5e8b06a) )
+ROM_END
+
+
+ROM_START( samsho4bh ) /* Samurai Shodown IV - Hack by Dodowang - (Can choose Zankuro Minazuki - has icon in character select menue) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222bh.p1", 0x000000, 0x100000, CRC(59dd746f) SHA1(2afecebd57f978fe0764c23a0bbf1d73421c60ca) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222bh.s1", CRC(d0906101) SHA1(16873a82c408a5585d4e424e953b451981a8d6b2) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4cz ) /* Samurai Shodown IV - Enhance by Creamymami and Zhangshee - (Can choose Zankuro Minazuki - ultra kill start is max - ultra kill is always max) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222cz.p1", 0x000000, 0x100000, CRC(fdfb86a3) SHA1(ed91d0273dec277ce9ee4b4bdf7e88b524b3ed3b) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4eh ) /* Samurai Shodown IV - Enhance by Zhangshee - (Can choose Zankuro Minazuki) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222eh.p1", 0x000000, 0x100000, CRC(10390464) SHA1(029a2d22819b8440b1ce3bafb6005841665b0b27) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4es ) /* Samurai Shodown IV - Enhance by SNK2003/PPX Hack Team - (Move revision - v3.8) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222es.p1", 0x000000, 0x100000, CRC(36D58438) SHA1(0E957E6815121C8005A560E1F17BD1D4675C2BDB) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4ev )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222ev.p1", 0x000000, 0x100000, CRC(84539b07) SHA1(710827bcf969e913b0b1702295f4808fa68e59ca) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4ew ) /* Samurai Shodown IV - Colour fix / Hack by Eddids and Wesker - (Can choose Zankuro Minazuki - colour correction P2/P3/P4 for Zankuro Minazuki) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222ew.p1", 0x000000, 0x100000, CRC(E76CDD8F) SHA1(025E574C0160EAF9A2754B8DA549DDE6A03EF98D) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4fc ) /* Samurai Shodown IV - Boss hack by FCHT */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222fc.p1", 0x000000, 0x100000, CRC(7d7c973c) SHA1(bef2d2795ae536d3d16ebcd3cc6a33a7b737b74b) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222bh.s1", CRC(d0906101) SHA1(16873a82c408a5585d4e424e953b451981a8d6b2) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4kw ) /* Samurai Shodown IV - Enhance by Fighters Kim and Wesker - (Can choose Zankuro Minazuki - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222kw.p1", 0x000000, 0x100000, CRC(dae6844a) SHA1(4e4641e13d836919013f9a156553f8a2c6af05e6) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4kz ) /* Samurai Shodown IV - Enhance by Fighters Kim and Zhangshee - (Can choose Zankuro Minazuki - ultra power hack) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222kz.p1", 0x000000, 0x100000, CRC(41503ba4) SHA1(c741e6f341baee8bbf1fdf64b7b144f9e4f120cc) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4mb )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222mb.p1", 0x000000, 0x100000, CRC(b10572b2) SHA1(3ed79a23ec86a7a2c96ad6422c2b99d5e81b2117) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4pm )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222pm.p1", 0x000000, 0x100000, CRC(b76aab1e) SHA1(cfba2faa8f81ce4e05813fae290e2d6bd9abeb7c) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4ps )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222ps.p1", 0x000000, 0x100000, CRC(70dd94fe) SHA1(611b84be241eb81a39a29d41779b7dfec6262c8c) )
+ ROM_LOAD16_WORD_SWAP( "222ps.p2", 0x100000, 0x400000, CRC(2c9c64db) SHA1(2a9825bc7577cb1f3128b6a9f41b72bb1228e037) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222ps.c7", 0x1800000, 0x400000, CRC(ecb13c24) SHA1(5f7a62e04a7c2bed52cc4d6377f41d1dbe55f6ee) )
+ ROM_LOAD16_BYTE( "222ps.c8", 0x1800001, 0x400000, CRC(0f9a0bda) SHA1(6093f607dbcc9e1475bb1bb8e713b23fcd99c486) )
+ROM_END
+
+ROM_START( samsho4s2 )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222s2.p1", 0x000000, 0x100000, CRC(baf26b5e) SHA1(028821e26a2b9ea038c727e9a9e057f176c2e634) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4wh ) /* Samurai Shodown IV - Hack by Wesker - (Can choose Zankuro Minazuki - final edition) */
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222wh.p1", 0x000000, 0x100000, CRC(8b8fbb8a) SHA1(75dff66982c4b4e2137fb3058516be516d2c6a73) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+ROM_START( samsho4zk )
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "222zk.p1", 0x000000, 0x100000, CRC(6ae69ad2) SHA1(d2ae4c05a1b0247fcbd8153d9e2ea05edf456d19) )
+ ROM_LOAD16_WORD_SWAP( "222-p2.sp2", 0x100000, 0x400000, CRC(b023cd8b) SHA1(35b4cec9858225f90acdfa16ed8a3017d0d08327) )
+
+ NEO_SFIX_128K( "222-s1.s1", CRC(8d3d3bf9) SHA1(9975ed9b458bdd14e23451d2534153f68a5e4e6c) )
+
+ NEO_BIOS_AUDIO_128K( "222-m1.m1", CRC(7615bc1b) SHA1(b936f7b341f6fe0921b4c41049734684583e3596) )
+
+ ROM_REGION( 0xa00000, "ymsnd", 0 )
+ ROM_LOAD( "222-v1.v1", 0x000000, 0x400000, CRC(7d6ba95f) SHA1(03cb4e0d770e0b332b07b64cacef624460b84c78) )
+ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) )
+ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) )
+ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) )
+ ROM_LOAD16_BYTE( "222-c3.c3", 0x0800000, 0x400000, CRC(c91b40f4) SHA1(dcda45e0336204e3e024de08edfd0a3217bc1fdd) )
+ ROM_LOAD16_BYTE( "222-c4.c4", 0x0800001, 0x400000, CRC(359510a4) SHA1(b6642677ebdff7788263266402080272b8a66b15) )
+ ROM_LOAD16_BYTE( "222-c5.c5", 0x1000000, 0x400000, CRC(9cfbb22d) SHA1(789c32f917d0c6e38601cd390a7bf9d803131a4a) )
+ ROM_LOAD16_BYTE( "222-c6.c6", 0x1000001, 0x400000, CRC(685efc32) SHA1(db21ba1c7e3631ce0f1cb6f503ae7e0e043ff71b) )
+ ROM_LOAD16_BYTE( "222-c7.c7", 0x1800000, 0x400000, CRC(d0f86f0d) SHA1(32502d71c2ab1469c492b6b382bf2bb3f85981d9) )
+ ROM_LOAD16_BYTE( "222-c8.c8", 0x1800001, 0x400000, CRC(adfc50e3) SHA1(7d7ee874355b5aa75ad9c9a5c9c3df98d098d85e) )
+ROM_END
+
+
+ROM_START( samsho5ba )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270ba.p1", 0x000000, 0x400000, CRC(28d9f763) SHA1(21e5cc1cd20a3a9eef7c4d4da87480654cdeceb4) )
+ ROM_LOAD16_WORD_SWAP( "270bs.p2", 0x400000, 0x400000, CRC(91979dee) SHA1(0e03a2a2e3aa493bd839f3754260ddd3935ba25b) )
+
+ NEO_SFIX_128K( "270ch.s1", CRC(cd025baa) SHA1(2ebdff1f40ec31b1842ec5399145869b00c8c4b2) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0X1000000, "ymsnd", 0 )
+ ROM_LOAD( "270bs.v1", 0x000000, 0x800000, CRC(809c7617) SHA1(b6b542eb4c1078016fcd78d050433dc8e3029329) )
+ ROM_LOAD( "270bs.v2", 0x800000, 0x800000, CRC(42671607) SHA1(4fa64b5a9349e9c3d5d60806c9da4a2b6beff18a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270ba.c1", 0x0000000, 0x800000, CRC(102ef439) SHA1(512c4b1c2c3d6fa532a4ebc0cec2127c5f3f6aea) )
+ ROM_LOAD16_BYTE( "270ba.c2", 0x0000001, 0x800000, CRC(4986bdd7) SHA1(644666d2ddb99ba67a77d6fccea4fb229a4ccc21) )
+ ROM_LOAD16_BYTE( "270ba.c3", 0x1000000, 0x800000, CRC(149ed711) SHA1(365d742ad191d6a912885e04304959d16c701eca) )
+ ROM_LOAD16_BYTE( "270ba.c4", 0x1000001, 0x800000, CRC(2e2e0e1d) SHA1(7891dd1f269c757dfe3c668c0156b1caa6ede90a) )
+ ROM_LOAD16_BYTE( "270ba.c5", 0x2000000, 0x800000, CRC(7eb555c1) SHA1(d137c290b5fab64152e8124068654174482e2db9) )
+ ROM_LOAD16_BYTE( "270ba.c6", 0x2000001, 0x800000, CRC(6471b021) SHA1(1d7cc33f07688b215706ce73ca03abdf7d654ba1) )
+ ROM_LOAD16_BYTE( "270ba.c7", 0x3000000, 0x800000, CRC(37de7738) SHA1(9bb85e77469681952d0064f1bb57534469fbaf8e) )
+ ROM_LOAD16_BYTE( "270ba.c8", 0x3000001, 0x800000, CRC(74dca282) SHA1(819488133ee2bb27cbdb2d9d53226d61c53f51d4) )
+ROM_END
+
+ROM_START( samsho5bd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270bd.p1", 0x000000, 0x800000, CRC(611a6687) SHA1(55ff9122d64efd276e22a66fa443e0bebd079928) )
+
+ NEO_SFIX_128K( "270bd.s1", CRC(33227d62) SHA1(5f4b7ab642175657af212304783a1df98415ed44) )
+
+ NEO_BIOS_AUDIO_128K( "270bd.m1", CRC(18114fb1) SHA1(016dc2f328340f3637a9bff373a20973df29f6b8) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270bd.v1", 0x000000, 0x400000, CRC(6849136c) SHA1(5f8e7cc33b8d994165dd577a0d7e0eb2df16f07e) )
+ ROM_LOAD( "270bd.v2", 0x400000, 0x400000, CRC(222e1774) SHA1(3c1b2f37d4f2fa2cd7d6a6f04b3aedf6b2f4b089) )
+ ROM_LOAD( "270bd.v3", 0x800000, 0x400000, CRC(cd9e7adc) SHA1(941ae992c004594885f635fdea3ac1c51bb5d469) )
+ ROM_LOAD( "270bd.v4", 0xc00000, 0x400000, CRC(8b305cac) SHA1(938e2600c0c2b3d4a0a362ef6e91850c32217f18) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270bd.c1", 0x0000000, 0x800000, CRC(4e7bdea1) SHA1(2376386e0e82820c0853cf39e27167f8c181980c) )
+ ROM_LOAD16_BYTE( "270bd.c2", 0x0000001, 0x800000, CRC(7b444985) SHA1(1f2941f6a1bee6391002b88277edcfa7554f10f3) )
+ ROM_LOAD16_BYTE( "270bd.c3", 0x1000000, 0x800000, CRC(8c709a9b) SHA1(92a03ccf08d301955b06f3323417b4f20d773428) )
+ ROM_LOAD16_BYTE( "270bd.c4", 0x1000001, 0x800000, CRC(cfd53f5c) SHA1(773b03fb6faa958eddee6b001ebb619f8a8d5b30) )
+ ROM_LOAD16_BYTE( "270bd.c5", 0x2000000, 0x800000, CRC(c026d318) SHA1(fec9a9309afe94f21e0f35ec992a39ce51deefc2) )
+ ROM_LOAD16_BYTE( "270bd.c6", 0x2000001, 0x800000, CRC(b3d9d204) SHA1(9dbcf6c179ea3a04c8ed26416e4e91324fd1cf11) )
+ ROM_LOAD16_BYTE( "270bd.c7", 0x3000000, 0x800000, CRC(fe03a025) SHA1(3a052869f6b46cffc5d1ea497b0d5f1f4d1874c2) )
+ ROM_LOAD16_BYTE( "270bd.c8", 0x3000001, 0x800000, CRC(89db2d34) SHA1(cd3f1e4ef631704c1078c915135a4510891bd429) )
+ROM_END
+
+ROM_START( samsho5bh )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270bh.p1", 0x000000, 0x400000, CRC(0afe5db8) SHA1(ad7572d58fdda785b12941215b5e613a332e87c7) )
+ ROM_LOAD16_WORD_SWAP( "270bs.p2", 0x400000, 0x400000, CRC(91979dee) SHA1(0e03a2a2e3aa493bd839f3754260ddd3935ba25b) )
+
+ NEO_SFIX_128K( "270ch.s1", CRC(cd025baa) SHA1(2ebdff1f40ec31b1842ec5399145869b00c8c4b2) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+ROM_START( samsho5bs )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270bs.p1", 0x000000, 0x400000, CRC(a00cceba) SHA1(de91db34e0068dd40e9b151f0d0a7f609e880d77) )
+ ROM_LOAD16_WORD_SWAP( "270bs.p2", 0x400000, 0x400000, CRC(91979dee) SHA1(0e03a2a2e3aa493bd839f3754260ddd3935ba25b) )
+
+ NEO_SFIX_128K( "270bs.s1", CRC(2ad6048b) SHA1(173c8561f0633e0d6e4a9750e632f2e46766e674) )
+
+ NEO_BIOS_AUDIO_256K( "270d.m1", CRC(e94a5e2b) SHA1(53ef2ad6583060af69fdde73576e09ba88affa55) ) /* not a 100% match for encrypted version */
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270bs.v1", 0x000000, 0x800000, CRC(809c7617) SHA1(b6b542eb4c1078016fcd78d050433dc8e3029329) )
+ ROM_LOAD( "270bs.v2", 0x800000, 0x800000, CRC(42671607) SHA1(4fa64b5a9349e9c3d5d60806c9da4a2b6beff18a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270hd.c1", 0x0000000, 0x800000, CRC(9adec562) SHA1(069d73384dc320c38db420c8b04db86ac0b76101) )
+ ROM_LOAD16_BYTE( "270hd.c2", 0x0000001, 0x800000, CRC(ac0309e5) SHA1(9795fb2fa9eea617ec25656cfa9cd507899ec4fe) )
+ ROM_LOAD16_BYTE( "270hd.c3", 0x1000000, 0x800000, CRC(82db9dae) SHA1(0206e1cc2c5f0fbbc074a93add5a44f645951d0c) )
+ ROM_LOAD16_BYTE( "270hd.c4", 0x1000001, 0x800000, CRC(f8041153) SHA1(55705c725aff949e668c24b23e2e4cdb4ecf78ae) )
+ ROM_LOAD16_BYTE( "270hd.c5", 0x2000000, 0x800000, CRC(e689d62d) SHA1(001a59bb1bb14f263d16f8b7e977cd49e44e265a) )
+ ROM_LOAD16_BYTE( "270hd.c6", 0x2000001, 0x800000, CRC(a993bdcf) SHA1(d15980afe6d4b33506918186a2efc3f51b2347ca) )
+ ROM_LOAD16_BYTE( "270bs.c7", 0x3000000, 0x800000, CRC(02914b0b) SHA1(eef388cf6ceaca07f807943a0d63ea29727dd086) )
+ ROM_LOAD16_BYTE( "270bs.c8", 0x3000001, 0x800000, CRC(e874ac8b) SHA1(45c65154df10c26aa138c7973075c3327e5f908e) )
+ROM_END
+
+ROM_START( samsho5ch )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270ch.p1", 0x000000, 0x800000, CRC(22b374ea) SHA1(dab8e0589210488feb374e80712ab511f5117066) )
+
+ NEO_SFIX_128K( "270ch.s1", CRC(cd025baa) SHA1(2ebdff1f40ec31b1842ec5399145869b00c8c4b2) )
+
+ NEO_BIOS_AUDIO_512K( "270ch.m1", CRC(0ca49586) SHA1(8610918af611d8514678fee1617aa47974b604e6) )
+
+ ROM_REGION( 0X1000000, "ymsnd", 0 )
+ ROM_LOAD( "270bs.v1", 0x000000, 0x800000, CRC(809c7617) SHA1(b6b542eb4c1078016fcd78d050433dc8e3029329) )
+ ROM_LOAD( "270bs.v2", 0x800000, 0x800000, CRC(42671607) SHA1(4fa64b5a9349e9c3d5d60806c9da4a2b6beff18a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270ch.c1", 0x0000000, 0x800000, CRC(a2fe269f) SHA1(95ea363061bf5f4537ba885c0fbd894985f0a93a) )
+ ROM_LOAD16_BYTE( "270hd.c2", 0x0000001, 0x800000, CRC(ac0309e5) SHA1(9795fb2fa9eea617ec25656cfa9cd507899ec4fe) )
+ ROM_LOAD16_BYTE( "270ch.c3", 0x1000000, 0x800000, CRC(8275bb23) SHA1(101e784f273cce19158f81d23a8f581750ff7512) )
+ ROM_LOAD16_BYTE( "270ch.c4", 0x1000001, 0x800000, CRC(7a69cc1f) SHA1(2b63b5093c07aa7585093617c179af65b5015305) )
+ ROM_LOAD16_BYTE( "270ch.c5", 0x2000000, 0x800000, CRC(5298d011) SHA1(2090deb8341efc682b1dc55fb55e85a091d9ce2c) )
+ ROM_LOAD16_BYTE( "270ch.c6", 0x2000001, 0x800000, CRC(a33c04df) SHA1(31b14f8be2ff108337c8d672996aa650edd2307f) )
+ ROM_LOAD16_BYTE( "270ch.c7", 0x3000000, 0x800000, CRC(61025f97) SHA1(5ba6432aa35b1c27bc34ebd349ff47154dceb9a8) )
+ ROM_LOAD16_BYTE( "270ch.c8", 0x3000001, 0x800000, CRC(df3993ce) SHA1(580327300ff84ce805694b06f8036eeffef4c046) )
+ROM_END
+
+ROM_START( samsho5d )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270-p1.p1", 0x000000, 0x400000, CRC(4a2a09e6) SHA1(2644DE02CDAB8CCC605488A7C76B8C9CD1D5BCB9) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(DF24A4EE76438E40C2F04A714175A7F85CACDFE0) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_256K( "270d.m1", CRC(e94a5e2b) SHA1(53ef2ad6583060af69fdde73576e09ba88affa55) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270d.c1", 0x0000000, 0x800000, CRC(726abb40) SHA1(86A08C1266FB057D9A30A3AC259D526EC10D2FFA) )
+ ROM_LOAD16_BYTE( "270d.c2", 0x0000001, 0x800000, CRC(76806188) SHA1(B448C06D7311791BAD09F0828FD3E56326DD7737) )
+ ROM_LOAD16_BYTE( "270hd.c3", 0x1000000, 0x800000, CRC(82db9dae) SHA1(0206E1CC2C5F0FBBC074A93ADD5A44F645951D0C) )
+ ROM_LOAD16_BYTE( "270hd.c4", 0x1000001, 0x800000, CRC(f8041153) SHA1(55705C725AFF949E668C24B23E2E4CDB4ECF78AE) )
+ ROM_LOAD16_BYTE( "270d.c5", 0x2000000, 0x800000, CRC(2219186a) SHA1(ACE6D04DA578F2A5E7B7A405E0CBB31073070185) )
+ ROM_LOAD16_BYTE( "270d.c6", 0x2000001, 0x800000, CRC(d225120d) SHA1(AE28664486135949DD16BB91E8F35936BDA725A0) )
+ ROM_LOAD16_BYTE( "270d.c7", 0x3000000, 0x800000, CRC(d245d493) SHA1(C0E89F863B9B592FF5F0F813D9B127CEE31132D1) )
+ ROM_LOAD16_BYTE( "270d.c8", 0x3000001, 0x800000, CRC(eb06c9cc) SHA1(1DFD45407586DC7F574189BBC0D8AE1967D0A089) )
+ROM_END
+
+ROM_START( samsho5d1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270-p1.p1", 0x000000, 0x400000, CRC(4a2a09e6) SHA1(2644de02cdab8ccc605488a7c76b8c9cd1d5bcb9) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(df24a4ee76438e40c2f04a714175a7f85cacdfe0) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270hd.c1", 0x0000000, 0x800000, CRC(9adec562) SHA1(069d73384dc320c38db420c8b04db86ac0b76101) )
+ ROM_LOAD16_BYTE( "270hd.c2", 0x0000001, 0x800000, CRC(ac0309e5) SHA1(9795fb2fa9eea617ec25656cfa9cd507899ec4fe) )
+ ROM_LOAD16_BYTE( "270hd.c3", 0x1000000, 0x800000, CRC(82db9dae) SHA1(0206e1cc2c5f0fbbc074a93add5a44f645951d0c) )
+ ROM_LOAD16_BYTE( "270hd.c4", 0x1000001, 0x800000, CRC(f8041153) SHA1(55705c725aff949e668c24b23e2e4cdb4ecf78ae) )
+ ROM_LOAD16_BYTE( "270hd.c5", 0x2000000, 0x800000, CRC(e689d62d) SHA1(001a59bb1bb14f263d16f8b7e977cd49e44e265a) )
+ ROM_LOAD16_BYTE( "270hd.c6", 0x2000001, 0x800000, CRC(a993bdcf) SHA1(d15980afe6d4b33506918186a2efc3f51b2347ca) )
+ ROM_LOAD16_BYTE( "270hd.c7", 0x3000000, 0x800000, CRC(707d56a0) SHA1(303ecc621305c8fbeece8d599f9382fe82d191ee) )
+ ROM_LOAD16_BYTE( "270hd.c8", 0x3000001, 0x800000, CRC(f5903adc) SHA1(64f867a4e9d23302aa1e884f8fad7872ee347a86) )
+ROM_END
+
+ROM_START( samsho5ge )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270ge.p1", 0x000000, 0x400000, CRC(f4900b62) SHA1(e7f3508d5409e22aac04dacea229405d9afbdfa8) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(DF24A4EE76438E40C2F04A714175A7F85CACDFE0) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+ROM_START( samsho5hd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270hd.p1", 0x000000, 0x400000, CRC(bf956089) SHA1(c538289069bf338b9fa7ecc5c9143763dbb776a8) )
+ ROM_LOAD16_WORD_SWAP( "270hd.p2", 0x400000, 0x400000, CRC(943a6b1d) SHA1(12bd02fc197456da6ee86f066086094cef0f4bf9) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270hd.c1", 0x0000000, 0x800000, CRC(9adec562) SHA1(069d73384dc320c38db420c8b04db86ac0b76101) )
+ ROM_LOAD16_BYTE( "270hd.c2", 0x0000001, 0x800000, CRC(ac0309e5) SHA1(9795fb2fa9eea617ec25656cfa9cd507899ec4fe) )
+ ROM_LOAD16_BYTE( "270hd.c3", 0x1000000, 0x800000, CRC(82db9dae) SHA1(0206e1cc2c5f0fbbc074a93add5a44f645951d0c) )
+ ROM_LOAD16_BYTE( "270hd.c4", 0x1000001, 0x800000, CRC(f8041153) SHA1(55705c725aff949e668c24b23e2e4cdb4ecf78ae) )
+ ROM_LOAD16_BYTE( "270hd.c5", 0x2000000, 0x800000, CRC(e689d62d) SHA1(001a59bb1bb14f263d16f8b7e977cd49e44e265a) )
+ ROM_LOAD16_BYTE( "270hd.c6", 0x2000001, 0x800000, CRC(a993bdcf) SHA1(d15980afe6d4b33506918186a2efc3f51b2347ca) )
+ ROM_LOAD16_BYTE( "270hd.c7", 0x3000000, 0x800000, CRC(707d56a0) SHA1(303ecc621305c8fbeece8d599f9382fe82d191ee) )
+ ROM_LOAD16_BYTE( "270hd.c8", 0x3000001, 0x800000, CRC(f5903adc) SHA1(64f867a4e9d23302aa1e884f8fad7872ee347a86) )
+ROM_END
+
+ROM_START( samsho5s2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270s2.p1", 0x000000, 0x400000, CRC(e66b65f8) SHA1(be56cc4eb21e4bd2e27bd25350deee2258f5d1da) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(DF24A4EE76438E40C2F04A714175A7F85CACDFE0) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+ROM_START( samsho5x )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270x.p1", 0x000000, 0x800000, CRC(16983af9) SHA1(8b1ab272200bede14ad66d7e98474ac3fb7564d3) )
+
+ NEO_SFIX_128K( "270bs.s1", CRC(2ad6048b) SHA1(173c8561f0633e0d6e4a9750e632f2e46766e674) )
+
+ NEO_BIOS_AUDIO_512K( "270x.m1", CRC(5218a10a) SHA1(da4968e55d4a56249d85d6742a6acffcff4ad65d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270bs.v1", 0x000000, 0x800000, CRC(809c7617) SHA1(b6b542eb4c1078016fcd78d050433dc8e3029329) )
+ ROM_LOAD( "270bs.v2", 0x800000, 0x800000, CRC(42671607) SHA1(4fa64b5a9349e9c3d5d60806c9da4a2b6beff18a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270x.c1", 0x0000000, 0x800000, CRC(25272e50) SHA1(cc2aa5e5de2483539398f27f317ab2dda7b5c49e) )
+ ROM_LOAD16_BYTE( "270x.c2", 0x0000001, 0x800000, CRC(ba68f2e7) SHA1(77b9b5ddc3b313df0dd328c75eac0e8bdfcebad8) )
+ ROM_LOAD16_BYTE( "270x.c3", 0x1000000, 0x800000, CRC(75883cde) SHA1(2f9d72a07f8f14b52150cfb70bbc33d171a3d515) )
+ ROM_LOAD16_BYTE( "270x.c4", 0x1000001, 0x800000, CRC(348540e6) SHA1(4c6eec8948fbb67ae57eaa4a98525deed6cd2859) )
+ ROM_LOAD16_BYTE( "270x.c5", 0x2000000, 0x800000, CRC(1fee8dc8) SHA1(c7f1016ad711ec248218627c92dd5af68cba0206) )
+ ROM_LOAD16_BYTE( "270x.c6", 0x2000001, 0x800000, CRC(c300b50d) SHA1(8c8fbb81dbc6c283b55380d577944c6b9cdd6cf4) )
+ ROM_LOAD16_BYTE( "270x.c7", 0x3000000, 0x800000, CRC(5e722b0b) SHA1(7015dac7cc234473949912216a1b82ca640b52b6) )
+ ROM_LOAD16_BYTE( "270x.c8", 0x3000001, 0x800000, CRC(e2a2c546) SHA1(c870acb090606ae185fa9d7b4932949abacb0705) )
+ROM_END
+
+ROM_START( samsho5zk )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "270zk.p1", 0x000000, 0x400000, CRC(a1c49fdd) SHA1(2f2e9de6ae7bb5c1f0b026083c2d47c17ea2d204) )
+ ROM_LOAD16_WORD_SWAP( "270-p2.sp2", 0x400000, 0x400000, CRC(e0c74c85) SHA1(DF24A4EE76438E40C2F04A714175A7F85CACDFE0) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "270-m1.m1", CRC(49c9901a) SHA1(2623e9765a0eba58fee2de72851e9dc502344a3d) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) )
+ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) )
+ ROM_LOAD16_BYTE( "270-c2.c2", 0x0000001, 0x800000, CRC(401f7299) SHA1(94e48cdf1682b1250f53c59f3f71d995e928d17b) )
+ ROM_LOAD16_BYTE( "270-c3.c3", 0x1000000, 0x800000, CRC(838f0260) SHA1(d5c8d3c6e7221d04e0b20882a847752e5ba95635) )
+ ROM_LOAD16_BYTE( "270-c4.c4", 0x1000001, 0x800000, CRC(041560a5) SHA1(d165e533699f15b1e079c82f97db3542b3a7dd66) )
+ ROM_LOAD16_BYTE( "270-c5.c5", 0x2000000, 0x800000, CRC(bd30b52d) SHA1(9f8282e684415b4045218cf764ef7d75a70e3240) )
+ ROM_LOAD16_BYTE( "270-c6.c6", 0x2000001, 0x800000, CRC(86a69c70) SHA1(526732cdb408cf680af9da39057bce6a4dfb5e13) )
+ ROM_LOAD16_BYTE( "270-c7.c7", 0x3000000, 0x800000, CRC(d28fbc3c) SHA1(a82a6ba6760fad14d9309f9147cb7d80bd6f70fc) )
+ ROM_LOAD16_BYTE( "270-c8.c8", 0x3000001, 0x800000, CRC(02c530a6) SHA1(7a3fafa6075506c6ef78cc4ec2cb72118ec83cb9) )
+ROM_END
+
+
+ROM_START( samsh5spd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272-p1.p1", 0x000000, 0x400000, CRC(fb7a6bba) SHA1(f68c527208d8a55ca44b0caaa8ab66b3a0ffdfe5) )
+ ROM_LOAD16_WORD_SWAP( "272-p2.sp2", 0x400000, 0x400000, CRC(63492ea6) SHA1(6ba946acb62c63ed61a42fe72b7fff3828883bcc) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "272d.m1", CRC(203d744e) SHA1(24fc73943009effa14eed0f7a29955f349ca8e8f) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spd1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272-p1.p1", 0x000000, 0x400000, CRC(fb7a6bba) SHA1(f68c527208d8a55ca44b0caaa8ab66b3a0ffdfe5) )
+ ROM_LOAD16_WORD_SWAP( "272-p2.sp2", 0x400000, 0x400000, CRC(63492ea6) SHA1(6ba946acb62c63ed61a42fe72b7fff3828883bcc) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spd2 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272d2.p1", 0x000000, 0x400000, CRC(D190102F) SHA1(A853395575E135C2113FCCA942651A2A6193B504) )
+ ROM_LOAD16_WORD_SWAP( "272d2.p2", 0x400000, 0x400000, CRC(DA770F06) SHA1(F23DE7385AE5C6A27D70B1140654192F0ED2DF84) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(C297F973) SHA1(B31AF6B51E7536B538CD7EB3542C631C6327E826) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5sph1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272h.p1", 0x000000, 0x800000, CRC(15f53d87) SHA1(9e53deceef727757eb0ec3889f628b838cf1316a) )
+ //ROM_LOAD16_WORD_SWAP( "272nh3.p2", 0x100000, 0x700000, CRC(7114a210) SHA1(ae1f64a711648141e52ad28c6995e6d42836367c) ) // not needed
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spha )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272ha.p1", 0x000000, 0x100000, CRC(24f2a6ab) SHA1(cd7cea2ed5fafb6328dc8c35224071d96e83da9b) )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p2", 0x100000, 0x700000, CRC(7114a210) SHA1(ae1f64a711648141e52ad28c6995e6d42836367c) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5sphb )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272hb.p1", 0x000000, 0x100000, CRC(b07fa849) SHA1(26a8e795ee4bbd25c88104a1ee9459991b65c774) )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p2", 0x100000, 0x700000, CRC(7114a210) SHA1(ae1f64a711648141e52ad28c6995e6d42836367c) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5sphc )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p1", 0x000000, 0x400000, CRC(01e4b860) SHA1(de25b51a944a9e9757d8baa27d65601e96b4b718) )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p2", 0x100000, 0x700000, CRC(7114a210) SHA1(ae1f64a711648141e52ad28c6995e6d42836367c) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5sphd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272hd.p1", 0x000000, 0x400000, CRC(9291794d) SHA1(66588ff9b00ffad6508b03423548984e28a3209d) )
+ ROM_LOAD16_WORD_SWAP( "272hd.p2", 0x400000, 0x400000, CRC(fa1a7dd8) SHA1(62443dad76d6c1e18f515d7d4ef8e1295a4b7f1d) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spn ) // fully decrypted
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272n.p1", 0x000000, 0x800000, CRC(339f5081) SHA1(3e120481a5aee6a978d87a0f600a7323657d1c51) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spnd ) /* 2nd bugfix release */
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272nd.p1", 0x000000, 0x400000, CRC(c30a08dd) SHA1(66864954017c841d7ca8490112c3aa7a71a4da70) )
+ ROM_LOAD16_WORD_SWAP( "272nd.sp2", 0x400000, 0x400000, CRC(bd64a518) SHA1(aa259a168930f106377d680db444535411b3bce0) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "272-m1.m1", CRC(adeebf40) SHA1(8cbd63dda3fff4de38060405bf70cd9308c9e66e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) )
+ ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spnh3 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p1", 0x000000, 0x100000, CRC(4cc4bcae) SHA1(487a6dd8d42e6f80cf43898fc2debeb1007e8be7) )
+ ROM_LOAD16_WORD_SWAP( "272nh3.p2", 0x100000, 0x700000, CRC(7114a210) SHA1(ae1f64a711648141e52ad28c6995e6d42836367c) )
+
+ NEO_SFIX_128K( "272nh3.s1", CRC(36f02588) SHA1(114ed5d6bd396b5c88b463a816035ea4b9e0efc7) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+ROM_START( samsh5spnzk )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "272nzk.p1", 0x000000, 0x800000, CRC(17be33bf) SHA1(2350b306d6f2a57f0792b9a518c6ed9d55613b83) )
+
+ NEO_SFIX_128K( "272n.s1", CRC(c297f973) SHA1(b31af6b51e7536b538cd7eb3542c631c6327e826) )
+
+ NEO_BIOS_AUDIO_128K( "272n.m1", CRC(0b5d4d6a) SHA1(2467e06be986cba8c879412cba0388019892dbb2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "272n.v1", 0x000000, 0x400000, CRC(4d1b252b) SHA1(e5efe408c337a2ca556e790f0fd917ba44f975e3) )
+ ROM_LOAD( "272n.v2", 0x400000, 0x400000, CRC(0e46d2f8) SHA1(b8b0838124ea29f73f31e08d5cced8797cea75b1) )
+ ROM_LOAD( "272n.v3", 0x800000, 0x400000, CRC(3f0f7554) SHA1(2581e297725f3b950b59e9086ac5569171da6140) )
+ ROM_LOAD( "272n.v4", 0xc00000, 0x400000, CRC(ad8fabb4) SHA1(cebe3b7306e1431ebb99df13bfc2270b1d3ba1ff) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "272d.c1", 0x0000000, 0x800000, CRC(8548097e) SHA1(99177F64039D2914FA4EBD4AFC7EB0FBF4FFE0AF) )
+ ROM_LOAD16_BYTE( "272d.c2", 0x0000001, 0x800000, CRC(8c1b48d0) SHA1(3F20288ED369E6276CFAEDFF7E9703D4EA1CF6F6) )
+ ROM_LOAD16_BYTE( "272d.c3", 0x1000000, 0x800000, CRC(96ddb28c) SHA1(7EBE5166D279C0D3EFEF65618D015B4EA13F2C49) )
+ ROM_LOAD16_BYTE( "272d.c4", 0x1000001, 0x800000, CRC(99ef7a0a) SHA1(9AC3EF339BC1D6E3482E0B32D40B259EC2B44FC1) )
+ ROM_LOAD16_BYTE( "272d.c5", 0x2000000, 0x800000, CRC(772e8b1e) SHA1(8DE4898BBD8EDE593763BFA93BBF26492492D23A) )
+ ROM_LOAD16_BYTE( "272d.c6", 0x2000001, 0x800000, CRC(5fff21fc) SHA1(5D0A23A41F5277AB09FD11F227BE35F1713A4B4F) )
+ ROM_LOAD16_BYTE( "272d.c7", 0x3000000, 0x800000, CRC(9ac56a0e) SHA1(EA4FFEC3FE2E58DF16B40FDF33E1708680010414) )
+ ROM_LOAD16_BYTE( "272d.c8", 0x3000001, 0x800000, CRC(cfde7aff) SHA1(25185F471DD35E5D388B75B83D8652085CD5E17D) )
+ROM_END
+
+
+
+GAME( 1995, fswordsb1, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Fighters Swords (Boss Hack v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fswordsb2, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Fighters Swords (Boss Hack v2.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fswordsbf, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Fighters Swords (Boss Hack v1.0f)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1993, samshob, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Samurai Shodown (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samshoeh, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Samurai Shodown (Add Char - Ultra kill start max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, samshoeh2, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Samurai Shodown (Add Char - Ultra kill start max - Ultra kill always max)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, samshos1, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown (Special v0.1 2005-09-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samshozk, samsho, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie, Kof1996", "Samurai Shodown (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1994, samsho2eh, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Samurai Shodown II (Boss hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, samsho2emb, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Samurai Shodown II (Easy Move hack by Blackheart 2009-08-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2hy, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Samurai Shodown II (Boss hack by Yashional)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, samsho2mb, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Samurai Shodown II (Moves hack by Blackheart 2009-08-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2q, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown II (Soul Q Version v1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho2s2, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown II (Special v0.12 2008-08-26)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, samsho2sp, samsho2, samsho2sp, neogeo, neogeo_state, neogeo, ROT0, "GSC2007", "Samurai Shodown II (Special v1.0.0122)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, samsho2sp2, samsho2, samsho2sp, neogeo, neogeo_state, neogeo, ROT0, "GSC2007", "Samurai Shodown II (Special v1.0.0221)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, samsho2sp3, samsho2, samsho2sp, neogeo, neogeo_state, neogeo, ROT0, "GSC2007", "Samurai Shodown II (Special v1.0.0320)", MACHINE_SUPPORTS_SAVE )
+GAME( 2017, samsho2sp4, samsho2, samsho2sp, neogeo, neogeo_state, neogeo, ROT0, "GSC2007", "Samurai Shodown II (Special v1.0.0311 2017-03-11)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2sq, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown II (Soul Q version v2.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2ss, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Samurai Shodown II Special (Hack by Yashional)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2yc, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Samurai Shodown II (Char - Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, samsho2zk, samsho2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie, Kof1996", "Samurai Shodown II (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1995, samsho3eh, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Samurai Shodown III (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2010, samsho3hb, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown III (hack HB)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho3s2, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown III (Special v0.12 2008-09-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3se, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Samurai Shodown III (Add Char - Pow hack ABC - Ultra pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, samsho3ss, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown III (Special v0.1 2005-09-19)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, samsho3yc, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Samurai Shodown III (Add Char - Pow hack ABC)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho3zk, samsho3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie, Kof1996", "Samurai Shodown III (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1996, samsho4bh, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Samurai Shodown IV (Add Char with Icon)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4cz, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Zhangshee", "Samurai Shodown IV (Add Char - Ultra kill start max - Ultra kill always max)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4eh, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zhangshee", "Samurai Shodown IV (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4es, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003/PPX Hack Team", "Samurai Shodown IV (Moves rev - v3.8)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4ev, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "Samurai Shodown IV Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (Evil Amakusa - Hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4ew, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids and Wesker", "Samurai Shodown IV (Add Char with Color corrections P2/P3/P4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, samsho4fc, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Samurai Shodown IV (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4kw, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Fighters Kim and Wesker", "Samurai Shodown IV (Add Char - Ultra pow hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4kz, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Fighters Kim and Zhangshee", "Samurai Shodown IV (Add Char - Ultra pow hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, samsho4mb, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blackheart", "Samurai Shodown IV (Moves hack by Blackheart 2009-08-05)", MACHINE_SUPPORTS_SAVE )
+GAME( 2009, samsho4pm, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Pipi899", "Samurai Shodown IV (Power Max hack by Pipi899 2009-06-16)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4ps, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Samurai Shodown IV Amakusa's Revenge (Boss Fix Ver 1.00 [EGHT])", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho4s2, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown IV (Special v0.12 2008-09-01)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, samsho4wh, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Samurai Shodown IV (Add Char - final edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho4zk, samsho4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie, Kof1996", "Samurai Shodown IV (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2003, samsho5ba, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "hack", "Samurai Shodown V (Boss hack alternate set)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5bd, samsho5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "bootleg", "Samurai Shodown V (bootleg, fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5bh, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Dodowang", "Samurai Shodown V (Boss hack by Dodowang)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5bs, samsho5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Showdown V (Enable Hidden Characters v3.5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5ch, samsho5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang and Wesker", "Samurai Showdown V (Chinese Language and Boss Hack by Dodowang & Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5d, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V (decrypted C)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5d1, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V (NGM-2700)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5ge, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Shiro", "Samurai Shodown V (Genjuro Evil Edition hack by Shiro)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5hd, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V (NGH-2700)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho5s2, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "hack", "Samurai Shodown V (Special v0.12 2008-08-26)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, samsho5x, samsho5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown V (XBOX version, hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsho5zk, samsho5, neogeo_noslot, neogeo, neogeo_hbmame, sam5hb, ROT0, "Zuojie, Kof1996", "Samurai Shodown V (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 2004, samsh5spd, samsh5sp, neogeo_noslot, neogeo, neogeo_hbmame, sam5sphb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spd1, samsh5sp, neogeo_noslot, neogeo, neogeo_hbmame, sam5sphb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spd2, samsh5sp, neogeo_noslot, neogeo, neogeo_hbmame, sam5sphb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Spirits Zero Special / Samurai Showdown V Special (no encrypted P, decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sph1, samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown V Special / Samurai Spirits Zero Special (Bloodlust hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spha, samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Samurai Shodown V Special / Samurai Spirits Zero Special (Final set 1 hack by Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sphb, samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Samurai Shodown V Special / Samurai Spirits Zero Special (Final set 2 hack by Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sphc, samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Samurai Shodown V Special / Samurai Spirits Zero Special (Final set 3 hack by Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5sphd, samsh5sp, neogeo_noslot, neogeo, neogeo_hbmame, sam5sphb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720)(1st release, censored)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spn, samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Samurai Shodown V Special / Samurai Spirits Zero Special (fully decrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spnd, samsh5sp, neogeo_noslot, neogeo, neogeo_hbmame, sam5sphb, ROT0, "Yuki Enterprise / SNK Playmore", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720)(2nd release, less censored)(decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, samsh5spnh3,samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids / Snk2003", "Samurai Shodown V Special / Samurai Spirits Zero Special (Enhanced Blood v3.0 hack by Eddids, Snk2003)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, samsh5spnzk,samsh5sp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zuojie / Kof1996", "Samurai Shodown V Special / Samurai Spirits Zero Special (Hack by Zuojie, Kof1996 2008-10-23)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngsengoku.cpp b/docs/release/src/hbmame/drivers/ngsengoku.cpp
new file mode 100644
index 00000000000..013a124fa49
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngsengoku.cpp
@@ -0,0 +1,333 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, sengo3d )
+{
+ DRIVER_INIT_CALL(neogeo);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+}
+
+
+
+ROM_START( sengokucd )
+ ROM_REGION( 0x120000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "017cd.p1", 0x000000, 0x100000, CRC(89290fa2) SHA1(c546aaf74e823d76e5a9ac592edd098a7cf531ed) )
+ ROM_LOAD16_WORD_SWAP( "017-p2.p2", 0x100000, 0x020000, CRC(3024bbb3) SHA1(88892e1292dd60f35a76f9a22e623d4f0f9693cc) )
+
+ NEO_SFIX_128K( "017-s1.s1", CRC(b246204d) SHA1(73dce64c61fb5bb7e836a8e60f081bb77d80d281) )
+
+ NEO_BIOS_AUDIO_128K( "017-m1.m1", CRC(9b4f34c6) SHA1(7f3a51f47fcbaa598f5c76bc66e2c53c8dfd852d) )
+
+ ROM_REGION( 0x200000, "ymsnd", 0 )
+ ROM_LOAD( "017-v1.v1", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) )
+ ROM_LOAD( "017-v2.v2", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "017-c1.c1", 0x000000, 0x100000, CRC(b4eb82a1) SHA1(79879e2ea78c07d04c88dc9a1ad59604b7a078be) )
+ ROM_LOAD16_BYTE( "017-c2.c2", 0x000001, 0x100000, CRC(d55c550d) SHA1(6110f693aa23710939c04153cf5af26493e4a03f) )
+ ROM_LOAD16_BYTE( "017-c3.c3", 0x200000, 0x100000, CRC(ed51ef65) SHA1(e8a8d86e24454948e51a75c883bc6e4091cbf820) )
+ ROM_LOAD16_BYTE( "017-c4.c4", 0x200001, 0x100000, CRC(f4f3c9cb) SHA1(8faafa89dbd0345218f71f891419d2e4e7578200) )
+ROM_END
+
+
+ROM_START( sengoku3b ) /* Sengoku 3 - Hack by Ydmis - (Can choose Byakki and Okuni) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261b.p1", 0x100000, 0x100000, CRC(66553650) SHA1(f235681d394c6526e9c61f5321a80287240ef61f) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3c ) /* Sengoku 3 - Colour fix by UNKNOWN - (Character colour change - can choose Byakki and Okuni) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261c.p1", 0x000000, 0x200000, CRC(62abbf93) SHA1(f990263265f6dd742d3bd20587affbb056e222a9) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3d )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261-ph1.p1", 0x100000, 0x100000, CRC(e0d4bc0a) SHA1(8df366097f224771ca6d1aa5c1691cd46776cd12) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0xE00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261d.c1", 0x0000000, 0x800000, CRC(9af7cbca) SHA1(cf2fe3e5265861369f2878140ef33a6715b031aa) )
+ ROM_LOAD16_BYTE( "261d.c2", 0x0000001, 0x800000, CRC(2a1f874d) SHA1(26923ec0bedba56f25e6222aa107b45ccb3def7b) )
+ ROM_LOAD16_BYTE( "261d.c3", 0x1000000, 0x800000, CRC(5403adb5) SHA1(5614ee892e810dc49758f5985b3dc4f227e01b56) )
+ ROM_LOAD16_BYTE( "261d.c4", 0x1000001, 0x800000, CRC(18926df6) SHA1(a4859c9166ef7abec1f3e6af3292051a63a81f93) )
+ROM_END
+
+ROM_START( sengoku3eb ) // sgk3eb
+ ROM_REGION( 0x500000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261eb.p1", 0x100000, 0x100000, CRC(a77a0dc7) SHA1(a78885d1d121583c7733a868f6140babc4ba5544) )
+ ROM_IGNORE(0x100000)
+ ROM_CONTINUE(0x000000, 0x100000)
+ ROM_IGNORE(0x154f48)
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_512K( "261-m1.m1", CRC(7d501c39) SHA1(8e6bcc428f5ac7532d9c9be7e07ad0821461a080) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3eh )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261eh.p1", 0x000000, 0x200000, CRC(b0ce4444) SHA1(c1b46daf677bfbf61b2fe8e5449f9ccba231b59a) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3ha ) /* Sengoku 3 - Hack by HappyAse - (Can choose Byakki and Okuni - can directly choose USA and Brazil stage) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261ha.p1", 0x000000, 0x200000, CRC(ff392440) SHA1(01184f9edc786d0b83a3afe83e53b9834d54a98d) )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3k ) /* Sengoku 3 - Enhance by KrysoFun - (Can choose Byakki and Okuni - power hack) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261k.p1", 0x100000, 0x100000, CRC(ff0ab4f5) SHA1(581184174074333d7e94cbda1f5d6b3f4aec452c) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3kc ) /* Sengoku 3 - Colour fix by Fighters Kim - (Character colour change - 80%) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261kc.p1", 0x100000, 0x100000, CRC(78a02b04) SHA1(d3634471cc12dd77a53d97405bb972ebc46ef513) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3p )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261p.p1", 0x000000, 0x200000, CRC(2997b5ef) SHA1(86b9509eba939528aa0744ad8742cedfaf66b02e) )
+
+ NEO_SFIX_128K( "261s.s1", CRC(c1e27cc7) SHA1(7d38319f517059f60287a8ce393a4901719db8a9) )
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261d.c1", 0x0000000, 0x800000, CRC(9af7cbca) SHA1(cf2fe3e5265861369f2878140ef33a6715b031aa) )
+ ROM_LOAD16_BYTE( "261d.c2", 0x0000001, 0x800000, CRC(2a1f874d) SHA1(26923ec0bedba56f25e6222aa107b45ccb3def7b) )
+ ROM_LOAD16_BYTE( "261d.c3", 0x1000000, 0x800000, CRC(5403adb5) SHA1(5614ee892e810dc49758f5985b3dc4f227e01b56) )
+ ROM_LOAD16_BYTE( "261d.c4", 0x1000001, 0x800000, CRC(18926df6) SHA1(a4859c9166ef7abec1f3e6af3292051a63a81f93) )
+ROM_END
+
+ROM_START( sengoku3pl )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261pl.p1", 0x100000, 0x100000, CRC(87a65e84) SHA1(0475d81c1fb4e4df7a3773522aa2958fd550e8ad) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261d.c1", 0x0000000, 0x800000, CRC(9af7cbca) SHA1(cf2fe3e5265861369f2878140ef33a6715b031aa) )
+ ROM_LOAD16_BYTE( "261d.c2", 0x0000001, 0x800000, CRC(2a1f874d) SHA1(26923ec0bedba56f25e6222aa107b45ccb3def7b) )
+ ROM_LOAD16_BYTE( "261d.c3", 0x1000000, 0x800000, CRC(5403adb5) SHA1(5614ee892e810dc49758f5985b3dc4f227e01b56) )
+ ROM_LOAD16_BYTE( "261d.c4", 0x1000001, 0x800000, CRC(18926df6) SHA1(a4859c9166ef7abec1f3e6af3292051a63a81f93) )
+ROM_END
+
+ROM_START( sengoku3s )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261s.p1", 0x000000, 0x200000, CRC(5a1b5e85) SHA1(239617385b40ae6a86f737195ec6017171157bef) )
+
+ NEO_SFIX_128K( "261s.s1", CRC(c1e27cc7) SHA1(7d38319f517059f60287a8ce393a4901719db8a9) )
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261d.c1", 0x0000000, 0x800000, CRC(9af7cbca) SHA1(cf2fe3e5265861369f2878140ef33a6715b031aa) )
+ ROM_LOAD16_BYTE( "261d.c2", 0x0000001, 0x800000, CRC(2a1f874d) SHA1(26923ec0bedba56f25e6222aa107b45ccb3def7b) )
+ ROM_LOAD16_BYTE( "261d.c3", 0x1000000, 0x800000, CRC(5403adb5) SHA1(5614ee892e810dc49758f5985b3dc4f227e01b56) )
+ ROM_LOAD16_BYTE( "261d.c4", 0x1000001, 0x800000, CRC(18926df6) SHA1(a4859c9166ef7abec1f3e6af3292051a63a81f93) )
+ROM_END
+
+ROM_START( sengoku3ya ) /* Sengoku 3 - Enhance by KrysFun and Ydmis - (Can choose Byakki and Okuni - power hack)? */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261yka.p1", 0x100000, 0x100000, CRC(dea384f6) SHA1(2adf0f2aa1605710e37f13eb8e4588645ae7f8c2) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+ROM_START( sengoku3yk ) /* Sengoku 3 - Enhance by KrysFun and Ydmis - (Can choose Byakki and Okuni - power hack) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "261yk.p1", 0x100000, 0x100000, CRC(51bf63b9) SHA1(36aa9f86e7cd08286983f3a1139c642714fd049e) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_MT_128K
+
+ NEO_BIOS_AUDIO_128K( "261d.m1", CRC(36ed9cdd) SHA1(78a7d755e9e9f52255ac6228d9d402fd6a02c126) )
+
+ ROM_REGION( 0x0e00000, "ymsnd", 0 )
+ ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) )
+ ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) )
+ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) )
+ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) )
+
+ ROM_REGION( 0x2000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) )
+ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) )
+ ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) )
+ ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) )
+ROM_END
+
+
+
+GAME( 2007, sengokucd, sengoku, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku (CD conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3b, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Ydmis", "Sengoku 3 (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3c, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Unk", "Sengoku 3 (Add Char - Char color changed)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3d, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "SNK", "Sengoku 3 (decrypted C)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3eb, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "hack", "Sengoku 3 (hack eb)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3eh, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "hack", "Sengoku 3 (Evolution Special hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3ha, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "HappyAsr","Sengoku 3 (Add Char - Select USA and Brazil)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3k, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun", "Sengoku 3 (Add Char - Pow hack set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3kc, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Fighters Kim", "Sengoku 3 (Char color changed - 80%)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3p, sengoku3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Krysofun", "Sengoku 3/Sengoku legends 2001 EX Super Version", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3pl, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, sengo3d, ROT0, "Player-X", "Sengoku 3 / Sengoku Densho 2001 Plus (Hack by Player-X)" , MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3s, sengoku3, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sjx", "Sengoku 3 (Evolution v1.0 hack by Sjx (FCHT))", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3ya, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, sengoku3yk, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngsvc.cpp b/docs/release/src/hbmame/drivers/ngsvc.cpp
new file mode 100644
index 00000000000..236cc89e450
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngsvc.cpp
@@ -0,0 +1,795 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// SVCCHAOS SNK vs Capcom
+
+
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, svchb )
+{
+ DRIVER_INIT_CALL(neogeo);
+ // This is needed if s1 size > 0x20000, ignored otherwise
+ m_sprgen->m_fixed_layer_bank_type = 2;
+
+ // decrypt p roms if needed
+ u8 *ram = memregion("maincpu")->base();
+ if (ram[0x100] != 0x45)
+ {
+ //printf("Maincpu=%X\n",ram[0x100]);fflush(stdout);
+ m_pvc_prot->svc_px_decrypt(cpuregion, cpuregion_size);
+ m_pvc_prot->install_pvc_protection(m_maincpu, m_banked_cart);
+ }
+
+ // decrypt m1 if needed
+ if (memregion("audiocrypt"))
+ m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size);
+
+ // decrypt v roms if needed
+ ram = memregion("ymsnd")->base();
+ if (ram[0x91] != 0x33)
+ {
+ //printf("ym=%X\n",ram[0x91]);
+ m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 3);
+ }
+
+ // decrypt c roms if needed
+ ram = memregion("sprites")->base();
+ if (ram[0] != 0)
+ {
+ //printf("Sprites=%X\n",ram[0]);
+ m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, SVC_GFX_KEY);
+ }
+
+ // if no s rom, copy info from end of c roms
+ ram = memregion("fixed")->base();
+ if (ram[0x100] == 0)
+ {
+ //printf("Fixed1=%X\n",ram[0x100]);
+ m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
+ }
+
+ // decrypt s1 if needed
+ if (ram[0x100] != 0xBB)
+ {
+ //printf("Fixed2=%X\n",ram[0]);
+ m_sma_prot->svcpcb_s1data_decrypt(fix_region, fix_region_size);
+ }
+}
+
+DRIVER_INIT_MEMBER( neogeo_hbmame, svcpcd )
+{
+ DRIVER_INIT_CALL(svchb);
+ install_banked_bios();
+}
+
+
+
+ROM_START( svccprw )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269cprw.p1", 0x000000, 0x600000, CRC(55aab0ae) SHA1(2d5a7fbe0239ab79d437158987d8fb3123469d53) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269-c1r.c1", 0x0000000, 0x800000, CRC(887b4068) SHA1(227cdcf7a10a415f1e3afe7ae97acc9afc2cc8e1) )
+ ROM_LOAD16_BYTE( "269-c2r.c2", 0x0000001, 0x800000, CRC(4e8903e4) SHA1(31daaa4fd6c23e8f0a8428931c513d97d2eee1bd) )
+ ROM_LOAD16_BYTE( "269-c3r.c3", 0x1000000, 0x800000, CRC(7d9c55b0) SHA1(1f94a948b3e3c31b3ff05518ef525031a3cb2c62) )
+ ROM_LOAD16_BYTE( "269-c4r.c4", 0x1000001, 0x800000, CRC(8acb5bb6) SHA1(2c27d6e309646d7b84da85f78c06e4aaa74e844b) )
+ ROM_LOAD16_BYTE( "269-c5r.c5", 0x2000000, 0x800000, CRC(097a4157) SHA1(54d839f55d27f68c704a94ea3c63c644ffc22ca4) )
+ ROM_LOAD16_BYTE( "269-c6r.c6", 0x2000001, 0x800000, CRC(e19df344) SHA1(20448add53ab25dd3a8f0b681131ad3b9c68acc9) )
+ ROM_LOAD16_BYTE( "269-c7r.c7", 0x3000000, 0x800000, CRC(d8f0340b) SHA1(43114af7557361a8903bb8cf8553f602946a9220) )
+ ROM_LOAD16_BYTE( "269-c8r.c8", 0x3000001, 0x800000, CRC(2570b71b) SHA1(99266e1c2ffcf324793fb5c55325fbc7e6265ac0) )
+ROM_END
+
+ROM_START( svcd )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269-p1.p1", 0x000000, 0x400000, CRC(38e2005e) SHA1(1b902905916a30969282f1399a756e32ff069097) )
+ ROM_LOAD32_WORD_SWAP( "269-p2.p2", 0x000002, 0x400000, CRC(6d13797c) SHA1(3cb71a95cea6b006b44cac0f547df88aec0007b7) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_128K( "269d.m1", CRC(447b3123) SHA1(a09adc2c0ee2ee0f01287ceb97474a1a58093bd2) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcd1 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269-p1.p1", 0x000000, 0x400000, CRC(38e2005e) SHA1(1b902905916a30969282f1399a756e32ff069097) )
+ ROM_LOAD32_WORD_SWAP( "269-p2.p2", 0x000002, 0x400000, CRC(6d13797c) SHA1(3cb71a95cea6b006b44cac0f547df88aec0007b7) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d1.c7", 0x3000000, 0x800000, CRC(5595b6cc) SHA1(9d6cc70f435401355b885475ccc3864825887656) )
+ ROM_LOAD16_BYTE( "269d1.c8", 0x3000001, 0x800000, CRC(b17dfcf9) SHA1(46af296b12831ee40355f52d2c316f609557d6df) )
+ROM_END
+
+ROM_START( svcee )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269ee.p1", 0x000000, 0x400000, CRC(e622f65c) SHA1(83119c9d8059cf42e5d04dd6f65b6664e356374e) )
+ ROM_LOAD32_WORD_SWAP( "269-p2.p2", 0x000002, 0x400000, CRC(6d13797c) SHA1(3cb71a95cea6b006b44cac0f547df88aec0007b7) )
+
+ NEO_SFIX_128K( "269spjoy.s1", CRC(aaef740c) SHA1(d7ae898ac93f78b19b125e98659dcfd9ee3179b2) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269-c1r.c1", 0x0000000, 0x800000, CRC(887b4068) SHA1(227cdcf7a10a415f1e3afe7ae97acc9afc2cc8e1) )
+ ROM_LOAD16_BYTE( "269-c2r.c2", 0x0000001, 0x800000, CRC(4e8903e4) SHA1(31daaa4fd6c23e8f0a8428931c513d97d2eee1bd) )
+ ROM_LOAD16_BYTE( "269-c3r.c3", 0x1000000, 0x800000, CRC(7d9c55b0) SHA1(1f94a948b3e3c31b3ff05518ef525031a3cb2c62) )
+ ROM_LOAD16_BYTE( "269-c4r.c4", 0x1000001, 0x800000, CRC(8acb5bb6) SHA1(2c27d6e309646d7b84da85f78c06e4aaa74e844b) )
+ ROM_LOAD16_BYTE( "269-c5r.c5", 0x2000000, 0x800000, CRC(097a4157) SHA1(54d839f55d27f68c704a94ea3c63c644ffc22ca4) )
+ ROM_LOAD16_BYTE( "269-c6r.c6", 0x2000001, 0x800000, CRC(e19df344) SHA1(20448add53ab25dd3a8f0b681131ad3b9c68acc9) )
+ ROM_LOAD16_BYTE( "269-c7r.c7", 0x3000000, 0x800000, CRC(d8f0340b) SHA1(43114af7557361a8903bb8cf8553f602946a9220) )
+ ROM_LOAD16_BYTE( "269-c8r.c8", 0x3000001, 0x800000, CRC(2570b71b) SHA1(99266e1c2ffcf324793fb5c55325fbc7e6265ac0) )
+ROM_END
+
+ROM_START( svcesv ) // all confirmed
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269esv.p1", 0x000000, 0x400000, CRC(c6fd0131) SHA1(25439e469d0403439fde5d6532081a9b405bf642) )
+ ROM_LOAD32_WORD_SWAP( "269esv.p2", 0x000002, 0x400000, CRC(2adede28) SHA1(555d3a9a53f0c7e8b450f7885b0ea86abece0843) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269stdse.c1", 0x0000000, 0x800000, CRC(03cda72a) SHA1(5557d44f191ed329256fd5dc383a7242ca30aee5) )
+ ROM_LOAD16_BYTE( "269stdse.c2", 0x0000001, 0x800000, CRC(442a7724) SHA1(8b7155978638a6656b0df9ccf7bd85be8172b167) )
+ ROM_LOAD16_BYTE( "269stdse.c3", 0x1000000, 0x800000, CRC(b311b183) SHA1(52b4c8c5530b856bbb497e5b33587cee0abfc892) )
+ ROM_LOAD16_BYTE( "269stdse.c4", 0x1000001, 0x800000, CRC(4aa13c41) SHA1(733c1434b65d2b595ba40d51045cfa523c14eefa) )
+ ROM_LOAD16_BYTE( "269stdse.c5", 0x2000000, 0x800000, CRC(1a81e716) SHA1(12d5f4128be45294aaf14461203ad99d768ad9bd) )
+ ROM_LOAD16_BYTE( "269stdse.c6", 0x2000001, 0x800000, CRC(6f346ae8) SHA1(a5561786bcdb51ffd72332c8da4a4448490a7068) )
+ ROM_LOAD16_BYTE( "269stdse.c7", 0x3000000, 0x800000, CRC(8dd412d3) SHA1(3d2afd7fc09c59537209071d049ec294f76770e5) )
+ ROM_LOAD16_BYTE( "269stdse.c8", 0x3000001, 0x800000, CRC(305ef23f) SHA1(3bdd24b075757062803ac2a6f9582bcfe0bcbb4c) )
+ROM_END
+
+ROM_START( svcg )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269g.p1", 0x000000, 0x600000, CRC(2e203ac3) SHA1(dd25d735edb7c1a30f4c6bf146ebb0f56146fad4) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269rm.m1", CRC(fd602218) SHA1(d7af0af3e116a7c2f594d1ca77a1289b4e31cd7e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svch )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269h.p1", 0x000000, 0x600000, CRC(06435efb) SHA1(115d8dbad06565cfdd6b607cc2359ec3ae5db6e0) )
+
+ //NEO_SFIX_128K( "269-s1h.bin", CRC(61ef88e5) ) rom not exist
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svch2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269h2.p1", 0x000000, 0x600000, CRC(df517c7e) SHA1(dc188dbd12fc2675772817f43b004c82bafe0551) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcice )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269ice.p1", 0x000000, 0x600000, CRC(09bdaec5) SHA1(8d305bbaabf71129269a45f49d22132ecc170149) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svclspc )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269lspc.p1", 0x000000, 0x600000, CRC(347d4f95) SHA1(ae7b5061ca225f5b58ca62ba056ef57a3a993a7a) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcnd ) // only p1,vx,s1 confirmed
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269nd.p1", 0x000000, 0x600000, CRC(93855c0b) SHA1(03dd06ff5a11a37990bd0a9531beb44c63de2d91) )
+
+ NEO_SFIX_MT_512K
+ ROM_LOAD( "269nd.s1", 0x60000, 0x20000, CRC(ad184232) SHA1(6645d323d641004fa7a17e3b1e65613f398c95dd) )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0x20000, 0x20000 )
+ ROM_CONTINUE( 0x00000, 0x20000 )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269pcbd.v1", 0x000000, 0x800000, CRC(ff64cd56) SHA1(e2754c554ed5ca14c2020c5d931021d5ac82660c) )
+ ROM_LOAD( "269pcbd.v2", 0x800000, 0x800000, CRC(a8dd6446) SHA1(8972aab271c33f8af344bffe6359d9ddc4b8af2e) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269pcbd.c1", 0x0000000, 0x2000000, CRC(382ce01f) SHA1(8eec32f70169de83fc15df470aba9c51c312b577) )
+ ROM_LOAD16_BYTE( "269pcbd.c2", 0x0000001, 0x2000000, CRC(88ad01ec) SHA1(da223bc09aa465ea6c15954c45fefbf3ee79a4d7) )
+ROM_END
+
+ROM_START( svcnh )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269nh.p1", 0x000000, 0x600000, CRC(9c3f7cc1) SHA1(26143425f2ca931708cafb4cf52ce880ac163d50) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269nh.c7", 0x3000000, 0x800000, CRC(05fecd16) SHA1(5619c759bb52a5f35ebb57916a085555f5da18aa) )
+ ROM_LOAD16_BYTE( "269nh.c8", 0x3000001, 0x800000, CRC(a911afa9) SHA1(804fc1ea22f937edbd0418eebf5547d6fc9c57d1) )
+ROM_END
+
+ROM_START( svcpcbd ) // JAMMA
+ ROM_REGION( 0x2000000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269-p1.p1", 0x000000, 0x2000000, CRC(432cfdfc) SHA1(19b40d32188a8bace6d2d570c6cf3d2f1e31e379) )
+
+ NEO_SFIX_MT_512K
+
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 )
+ /* this contains both an ASIA and JAPAN bios, HARDDIP3 on the PCB selects which to use */
+ ROM_LOAD16_WORD_SWAP( "sp-4x.sp1", 0x00000, 0x80000, CRC(b4590283) SHA1(47047ed5b6062babc0a0bebcc30e4b3f021e115a) )
+
+ ROM_REGION( 0x80000, "audiocrypt", 0 )
+ ROM_LOAD( "269-m1.m1", 0x00000, 0x80000, CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269pcbd.v1", 0x000000, 0x800000, CRC(ff64cd56) SHA1(e2754c554ed5ca14c2020c5d931021d5ac82660c) )
+ ROM_LOAD( "269pcbd.v2", 0x800000, 0x800000, CRC(a8dd6446) SHA1(8972aab271c33f8af344bffe6359d9ddc4b8af2e) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269pcbd.c1", 0x0000000, 0x2000000, CRC(382ce01f) SHA1(8eec32f70169de83fc15df470aba9c51c312b577) )
+ ROM_LOAD16_BYTE( "269pcbd.c2", 0x0000001, 0x2000000, CRC(88ad01ec) SHA1(da223bc09aa465ea6c15954c45fefbf3ee79a4d7) )
+ROM_END
+
+ROM_START( svcplusa2016 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269pa2016.p1", 0x000000, 0x454f9c, CRC(65471e6c) SHA1(32e07ec3d415940b3e1204e9e2ef00da60b4a685) )
+ ROM_LOAD16_WORD_SWAP( "269pa2016.p2", 0x200000, 0x400000, CRC(f78b0e9e) SHA1(839091db9ecfc6720fa28790fca7c6c057ff42a7) )
+ ROM_IGNORE( 0x054f62 )
+
+ NEO_SFIX_MT_128K
+ ROM_LOAD( "svc-s1pl.bin", 0x10000, 0x10000, CRC(ca3c735e) SHA1(aebd15253c90432a2e0a4c40f37110c1e2176ee4) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+ROM_START( svcplusb )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269plusb.p1", 0x000000, 0x600000, CRC(5D738F9A) SHA1(10AD161D6DE285659DCAEBBEA4AA2B384341E14D) )
+
+ NEO_SFIX_MT_512K
+ ROM_LOAD( "269plusb.s1", 0x60000, 0x20000, CRC(06125f98) SHA1(69ba2625c90bb09abf64f6d49d88d2ac2f1ee9ca) )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0x20000, 0x20000 )
+ ROM_CONTINUE( 0x00000, 0x20000 )
+
+ NEO_BIOS_AUDIO_128K( "269rm.m1", CRC(fd602218) SHA1(d7af0af3e116a7c2f594d1ca77a1289b4e31cd7e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcplusd ) // only p1,vx,cx confirmed
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269plusd.p1", 0x000000, 0x600000, CRC(2a57e4d4) SHA1(09fec6b376adfb2b051cd281f66b483e2deffa60) )
+
+ NEO_SFIX_MT_512K // This one contains PLUS logo
+ ROM_LOAD( "269plusb.s1", 0x60000, 0x20000, CRC(06125f98) SHA1(69ba2625c90bb09abf64f6d49d88d2ac2f1ee9ca) )
+ ROM_CONTINUE( 0x40000, 0x20000 )
+ ROM_CONTINUE( 0x20000, 0x20000 )
+ ROM_CONTINUE( 0x00000, 0x20000 )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269pcbd.v1", 0x000000, 0x800000, CRC(ff64cd56) SHA1(e2754c554ed5ca14c2020c5d931021d5ac82660c) )
+ ROM_LOAD( "269pcbd.v2", 0x800000, 0x800000, CRC(a8dd6446) SHA1(8972aab271c33f8af344bffe6359d9ddc4b8af2e) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269pcbd.c1", 0x0000000, 0x2000000, CRC(382ce01f) SHA1(8eec32f70169de83fc15df470aba9c51c312b577) )
+ ROM_LOAD16_BYTE( "269pcbd.c2", 0x0000001, 0x2000000, CRC(88ad01ec) SHA1(da223bc09aa465ea6c15954c45fefbf3ee79a4d7) )
+ROM_END
+
+ROM_START( svcplusg )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269plusg.p1", 0x000000, 0x600000, CRC(eb4d57e1) SHA1(f3d300667df9308fad04f158af77784894c87f13) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269rm.m1", CRC(fd602218) SHA1(d7af0af3e116a7c2f594d1ca77a1289b4e31cd7e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcplusp )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269plusp.p1", 0x000000, 0x600000, CRC(91ee8143) SHA1(68742527ae31d8a0c2b6fa3dc91cdf7b018f2a56) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d1.c7", 0x3000000, 0x800000, CRC(5595b6cc) SHA1(9d6cc70f435401355b885475ccc3864825887656) )
+ ROM_LOAD16_BYTE( "269d1.c8", 0x3000001, 0x800000, CRC(b17dfcf9) SHA1(46af296b12831ee40355f52d2c316f609557d6df) )
+ROM_END
+
+ROM_START( svcplusp2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269plusp2.p1", 0x000000, 0x600000, CRC(9c8877e6) SHA1(3e8a104ac80daaf3cea641580e249b45402f2822) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d1.c7", 0x3000000, 0x800000, CRC(5595b6cc) SHA1(9d6cc70f435401355b885475ccc3864825887656) )
+ ROM_LOAD16_BYTE( "269d1.c8", 0x3000001, 0x800000, CRC(b17dfcf9) SHA1(46af296b12831ee40355f52d2c316f609557d6df) )
+ROM_END
+
+ROM_START( svcpryu )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269pryu.p1", 0x000000, 0x600000, CRC(2088fa5c) SHA1(a60c01aef8532825dfde4a6ccc7c97692dd70e64) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269pryu.m1", CRC(dcc67f10) SHA1(acdd75144f90d2b135181a4fd2c6c72c240c66b0) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcps2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269ps2.p1", 0x000000, 0x600000, CRC(aa15036f) SHA1(e57df12f02d2a7fa2b5eda99c90ae49c3ced44b0) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269h.m1", CRC(1bfa0f6f) SHA1(b59b02d73d5f9a32935db656f888caac6e622a20) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "svcps2_c7.rom", 0x3000000, 0x800000, CRC(361c97ab) SHA1(3b3672630c54ddbee38932f7d27d27d71e9fe19c) )
+ ROM_LOAD16_BYTE( "svcps2_c8.rom", 0x3000001, 0x800000, CRC(1a16e266) SHA1(3d6a07716b79b62c8f2240c8be83d662b35f615a) )
+ROM_END
+
+ROM_START( svcrm ) // same as svccpru
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269rm.p1", 0x000000, 0x600000, CRC(9d39234f) SHA1(a28ba0b53a9f7dc2d0b3dfd22025ebddbd8c99af) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269rm.m1", CRC(fd602218) SHA1(d7af0af3e116a7c2f594d1ca77a1289b4e31cd7e) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcryu )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269ryu.p1", 0x000000, 0x600000, CRC(259b3b42) SHA1(ed74b38046babbf09ca671d3405feed20d2e8a30) )
+
+ NEO_SFIX_128K( "269spjoy.s1", CRC(aaef740c) SHA1(d7ae898ac93f78b19b125e98659dcfd9ee3179b2) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269-c1r.c1", 0x0000000, 0x800000, CRC(887b4068) SHA1(227cdcf7a10a415f1e3afe7ae97acc9afc2cc8e1) )
+ ROM_LOAD16_BYTE( "269-c2r.c2", 0x0000001, 0x800000, CRC(4e8903e4) SHA1(31daaa4fd6c23e8f0a8428931c513d97d2eee1bd) )
+ ROM_LOAD16_BYTE( "269-c3r.c3", 0x1000000, 0x800000, CRC(7d9c55b0) SHA1(1f94a948b3e3c31b3ff05518ef525031a3cb2c62) )
+ ROM_LOAD16_BYTE( "269-c4r.c4", 0x1000001, 0x800000, CRC(8acb5bb6) SHA1(2c27d6e309646d7b84da85f78c06e4aaa74e844b) )
+ ROM_LOAD16_BYTE( "269-c5r.c5", 0x2000000, 0x800000, CRC(097a4157) SHA1(54d839f55d27f68c704a94ea3c63c644ffc22ca4) )
+ ROM_LOAD16_BYTE( "269-c6r.c6", 0x2000001, 0x800000, CRC(e19df344) SHA1(20448add53ab25dd3a8f0b681131ad3b9c68acc9) )
+ ROM_LOAD16_BYTE( "269-c7r.c7", 0x3000000, 0x800000, CRC(d8f0340b) SHA1(43114af7557361a8903bb8cf8553f602946a9220) )
+ ROM_LOAD16_BYTE( "269-c8r.c8", 0x3000001, 0x800000, CRC(2570b71b) SHA1(99266e1c2ffcf324793fb5c55325fbc7e6265ac0) )
+ROM_END
+
+ROM_START( svcspjoy ) // There is no INSERT COIN message
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269spjoy.p1", 0x000000, 0x600000, CRC(d41e031a) SHA1(96c9bd0caf8d1d9db5d75012db180be225801765) )
+
+ NEO_SFIX_128K( "269spjoy.s1", CRC(aaef740c) SHA1(d7ae898ac93f78b19b125e98659dcfd9ee3179b2) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269-c1r.c1", 0x0000000, 0x800000, CRC(887b4068) SHA1(227cdcf7a10a415f1e3afe7ae97acc9afc2cc8e1) )
+ ROM_LOAD16_BYTE( "269-c2r.c2", 0x0000001, 0x800000, CRC(4e8903e4) SHA1(31daaa4fd6c23e8f0a8428931c513d97d2eee1bd) )
+ ROM_LOAD16_BYTE( "269-c3r.c3", 0x1000000, 0x800000, CRC(7d9c55b0) SHA1(1f94a948b3e3c31b3ff05518ef525031a3cb2c62) )
+ ROM_LOAD16_BYTE( "269-c4r.c4", 0x1000001, 0x800000, CRC(8acb5bb6) SHA1(2c27d6e309646d7b84da85f78c06e4aaa74e844b) )
+ ROM_LOAD16_BYTE( "269-c5r.c5", 0x2000000, 0x800000, CRC(097a4157) SHA1(54d839f55d27f68c704a94ea3c63c644ffc22ca4) )
+ ROM_LOAD16_BYTE( "269-c6r.c6", 0x2000001, 0x800000, CRC(e19df344) SHA1(20448add53ab25dd3a8f0b681131ad3b9c68acc9) )
+ ROM_LOAD16_BYTE( "269-c7r.c7", 0x3000000, 0x800000, CRC(d8f0340b) SHA1(43114af7557361a8903bb8cf8553f602946a9220) )
+ ROM_LOAD16_BYTE( "269-c8r.c8", 0x3000001, 0x800000, CRC(2570b71b) SHA1(99266e1c2ffcf324793fb5c55325fbc7e6265ac0) )
+ROM_END
+
+ROM_START( svcsplus2016 )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-p1sp.bin", 0x000000, 0x400000, CRC(2601902f) SHA1(202348a13c6480f7de37a3ee983823838822fc98) )
+ ROM_LOAD16_WORD_SWAP( "269sp2016.p2", 0x400000, 0x400000, CRC(c30b4d6c) SHA1(5bd2cc39e988e2c8c92e0df3f75b8343cec5b09c) )
+ ROM_IGNORE( 0x054f4c )
+
+ NEO_SFIX_128K( "svc-s1sp.bin", CRC(233d6439) SHA1(369024c7a2405c3144c14ac016c07c3dc0f44187) )
+
+ NEOGEO_BIOS
+
+ ROM_REGION( 0x20000, "audiobios", 0 )
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) )
+
+ ROM_REGION( 0x50000, "audiocpu", 0 )
+ ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) )
+ ROM_CONTINUE( 0x00000, 0x10000 )
+ ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) )
+ ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) )
+ ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) )
+ ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) )
+ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) )
+ ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) )
+ ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) )
+ ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) )
+ ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) )
+ ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) )
+ ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) )
+ROM_END
+
+ROM_START( svcspryu )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269spryu.p1", 0x000000, 0x600000, CRC(4f15b6b3) SHA1(651e5340b5442ff6cd9b6a325ea6ad8abc116cfb) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_128K( "269pryu.m1", CRC(dcc67f10) SHA1(acdd75144f90d2b135181a4fd2c6c72c240c66b0) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269h.v1", 0x000000, 0x400000, CRC(e7203930) SHA1(c6753df1db87d223ee39ffac920da449127dbcdf) )
+ ROM_LOAD( "269h.v2", 0x400000, 0x400000, CRC(675159c3) SHA1(c3a4f6db61dfab5bc31bfe94e1c3915676347031) )
+ ROM_LOAD( "269h.v3", 0x800000, 0x400000, CRC(f8810665) SHA1(fc1e94629a5124076959938257a80d04b2e871eb) )
+ ROM_LOAD( "269h.v4", 0xc00000, 0x400000, CRC(b57b4ea3) SHA1(873dc7f5eae687bc70af01ea310e935287de0ebf) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d.c7", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74CB0D57060D25E35F76A9820F607633BD1B9C2C) )
+ ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) )
+ROM_END
+
+ROM_START( svcstdse )
+ ROM_REGION( 0x800000, "maincpu", 0 )
+ ROM_LOAD32_WORD_SWAP( "269stdse.p1", 0x000000, 0x400000, CRC(5855b459) SHA1(11c63394a7662af04126897490e617f44d08f8b2) )
+ ROM_LOAD32_WORD_SWAP( "269stdse.p2", 0x000002, 0x400000, CRC(19c8575e) SHA1(8deb062ac95e2e117dd1048472130c540276d82b) )
+
+ NEO_SFIX_MT_512K
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269stdse.c1", 0x0000000, 0x800000, CRC(03cda72a) SHA1(5557d44f191ed329256fd5dc383a7242ca30aee5) )
+ ROM_LOAD16_BYTE( "269stdse.c2", 0x0000001, 0x800000, CRC(442a7724) SHA1(8b7155978638a6656b0df9ccf7bd85be8172b167) )
+ ROM_LOAD16_BYTE( "269stdse.c3", 0x1000000, 0x800000, CRC(b311b183) SHA1(52b4c8c5530b856bbb497e5b33587cee0abfc892) )
+ ROM_LOAD16_BYTE( "269stdse.c4", 0x1000001, 0x800000, CRC(4aa13c41) SHA1(733c1434b65d2b595ba40d51045cfa523c14eefa) )
+ ROM_LOAD16_BYTE( "269stdse.c5", 0x2000000, 0x800000, CRC(1a81e716) SHA1(12d5f4128be45294aaf14461203ad99d768ad9bd) )
+ ROM_LOAD16_BYTE( "269stdse.c6", 0x2000001, 0x800000, CRC(6f346ae8) SHA1(a5561786bcdb51ffd72332c8da4a4448490a7068) )
+ ROM_LOAD16_BYTE( "269stdse.c7", 0x3000000, 0x800000, CRC(8dd412d3) SHA1(3d2afd7fc09c59537209071d049ec294f76770e5) )
+ ROM_LOAD16_BYTE( "269stdse.c8", 0x3000001, 0x800000, CRC(305ef23f) SHA1(3bdd24b075757062803ac2a6f9582bcfe0bcbb4c) )
+ROM_END
+
+ROM_START( svcxlb )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "269xlb.p1", 0x000000, 0x600000, CRC(10bf1b9d) SHA1(461f94eed59b9642aee92f8d8d65aeb8b355ab54) )
+
+ NEO_SFIX_128K( "269rm.s1", CRC(bc670454) SHA1(468641985fd3136235510bc48781039ef7b05c64) )
+
+ NEO_BIOS_AUDIO_ENCRYPTED_512K( "269-m1.m1", CRC(f6819d00) SHA1(d3bbe09df502464f104e53501708ac6e2c1832c6) )
+
+ ROM_REGION( 0x1000000, "ymsnd", 0 )
+ ROM_LOAD( "269-v1.v1", 0x000000, 0x800000, CRC(c659b34c) SHA1(1931e8111ef43946f68699f8707334c96f753a1e) )
+ ROM_LOAD( "269-v2.v2", 0x800000, 0x800000, CRC(dd903835) SHA1(e58d38950a7a8697bb22a1cc7a371ae6664ae8f9) )
+
+ ROM_REGION( 0x4000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "269d.c1", 0x0000000, 0x800000, CRC(465d473b) SHA1(0B2BE2B2657C2AE021EC91515D1D6306179751D5) )
+ ROM_LOAD16_BYTE( "269d.c2", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(DF1B096FE95796DB1515B69F74266ED13DD9EE56) )
+ ROM_LOAD16_BYTE( "269d.c3", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(A19788435173540469FE5D07429A83DDE6D701A0) )
+ ROM_LOAD16_BYTE( "269d.c4", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98D8DAC2E40F71B5B8426D3C77476A0A20783181) )
+ ROM_LOAD16_BYTE( "269d.c5", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(EED45E1330DCC9F610598DC53977BF3A81DD161A) )
+ ROM_LOAD16_BYTE( "269d.c6", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8AAA1B9EA34470085D9944C9AD64CFB0FFE09859) )
+ ROM_LOAD16_BYTE( "269d1.c7", 0x3000000, 0x800000, CRC(5595b6cc) SHA1(9d6cc70f435401355b885475ccc3864825887656) )
+ ROM_LOAD16_BYTE( "269d1.c8", 0x3000001, 0x800000, CRC(b17dfcf9) SHA1(46af296b12831ee40355f52d2c316f609557d6df) )
+ROM_END
+
+
+
+GAME( 2003, svccprw, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "Wesker", "SvC Chaos (Plus Remix v2.0 hack by Wesker)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos (decrypted C set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcd1, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos (decrypted C set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, svcee, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "Ethan H", "SvC Chaos (Hack by Ethen.H(EGHT) 2008-01-21)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcesv, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "hack", "SvC Chaos (unknown esv)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcg, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Chaos (Boss Special Kyo Green Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svch, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "chbandy", "SvC Chaos (Remix V1.0 by chbandy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svch2, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "chbandy", "SvC Chaos (Remix v1.1 by chbandy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcice, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Chaos (Ice Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svclspc, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Chaos (Pink Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcnd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos (unknown nd)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcnh, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Chaos (Like PS2 Version old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcpcbd, svcpcb, neogeo_noslot, dualbios, neogeo_hbmame, svcpcd, ROT0, "hack", "SvC Chaos (JAMMA PCB, decrypted C & V)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, svcplusa2016, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcplusa, ROT0, "hack", "SvC Chaos PLUS (2016)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusb, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos PLUS (Bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos PLUS (unknown plusd)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusg, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Chaos (Plus Special)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusp, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "Kawada7278", "SvC Chaos (Plus Purple Fire hack by Kawada7278 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcplusp2, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "Kawada7278", "SvC Chaos (Plus Purple Fire hack by Kawada7278 set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcpryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Koryu)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcps2, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "SvC Playstation2 Hack Final 1.02 (EGHT)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcrm, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "SvC REMIX ULTRA (Ver 1.2 by Jason)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcryu, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "Gordon", "SvC Chaos (Ryu BT Revision hack by Gordon)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcspjoy, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "hack", "SvC Chaos (Super Plus Joy Modified hack by Wesker/Jason/K3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2016, svcsplus2016, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcsplus, ROT0, "hack", "SvC Chaos Super Plus (2016)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcspryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Super Koryu)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcstdse, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "hack", "SvC Chaos (Subdue the Dragon Super Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, svcxlb, svc, neogeo_noslot, neogeo, neogeo_hbmame, svchb, ROT0, "LB70", "SvC Chaos (Knife Millennium Turbidity v1.0 hack by Lb70)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/ngwh.cpp b/docs/release/src/hbmame/drivers/ngwh.cpp
new file mode 100644
index 00000000000..923402d55eb
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/ngwh.cpp
@@ -0,0 +1,387 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+// World Heroes hacks
+
+
+
+ROM_START( whpb ) /* World Heroes Perfect - Hack by Creamymami and Dodowang - (Can choose Gokuu, Neo-Dio and Zeus) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090b.p1", 0x100000, 0x100000, CRC(c31f9562) SHA1(81a7dade46c0fc7241964d957322f768a256e8da) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpb2 ) /* World Heroes Perfect - Hack by Creamymami and Dodowang - (Can choose Gokuu, Neo-Dio and Zeus - Gokuu and Neo-Dio have icons) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090b2.p1", 0x100000, 0x100000, CRC(fe3836e4) SHA1(0bca5e144b7de919f693fb32e977e81d5497f752) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpbh ) /* World Heroes Perfect - Hack by Dodowang - (Can choose Gokuu, Neo-Dio and Zeus - all boss characters have icons) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090bh.p1", 0x100000, 0x100000, CRC(9bd000f2) SHA1(3f3b2cc47a0ef33f2b8e7ba6e6e81ebdff39a54b) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090bh.s1", CRC(f2de6500) SHA1(5acc7746394724903b0fd3d4b5acf5bab355c9f4) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpbho ) /* [OLD] World Heroes Perfect - (whpbo) - Hack by Dodowang - (Can choose Gokuu, Neo-Dio and Zeus - has bug) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090bho.p1", 0x100000, 0x100000, CRC(341f360f) SHA1(8a52866a5751021d20b8400dfa840e589024a7e9) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpbho2 ) /* [OLD] World Heroes Perfect - (whpbo2) - Hack by Creamymami and Dodowang - (Can choose Gokuu, Neo-Dio and Zeus - bug fix) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090bho2.p1", 0x100000, 0x100000, CRC(cbfa58ef) SHA1(87941fbb79c82a4639103cbaec6fd013d180b3e9) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpeh ) /* World Heroes Perfect - Enhance by Creamymami, Dodowang and Fighters Kim - (Can choose Gokuu, Neo-Dio and Zeus - power hack) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090eh.p1", 0x100000, 0x100000, CRC(8bde8cb8) SHA1(35941fe642ed0e57812788f1f46790a67b4c676c) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpeho ) /* [OLD] World Heroes Perfect - (whpeho) - Hack by Creamymami, Dodowang and Fighters Kim - (Can choose Gokuu, Neo-Dio and Zeus - power hack) */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090eho.p1", 0x100000, 0x100000, CRC(92134471) SHA1(52dc270118e9b3d5ec42b320c8bb778743cf88f5) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whphez )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090hez.p1", 0x100000, 0x100000, CRC(d1b90868) SHA1(344fdcac65adafbf086f6ecef0fcda5a8dc03169) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090bh.s1", CRC(f2de6500) SHA1(5acc7746394724903b0fd3d4b5acf5bab355c9f4) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpsp )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090sp.p1", 0x100000, 0x100000, CRC(e7ea5216) SHA1(7383ecb99249ad3e56faecd033cfeeee498c2f9b) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090bh.s1", CRC(f2de6500) SHA1(5acc7746394724903b0fd3d4b5acf5bab355c9f4) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) )
+ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+ROM_START( whpss )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "090ss.p1", 0x100000, 0x100000, CRC(9c1a79d5) SHA1(13f924cf08d17205e10c282a9555d03a9e355112) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "090-s1.s1", CRC(174a880f) SHA1(c35d315d728d119a6e9aa42e0593937c90897449) )
+
+ NEO_BIOS_AUDIO_128K( "090-m1.m1", CRC(28065668) SHA1(0c60d4afa1dccad0135e733104f056be73b54e4e) )
+
+ ROM_REGION( 0x600000, "ymsnd", 0 )
+ ROM_LOAD( "090-v1.v1", 0x000000, 0x200000, CRC(30cf2709) SHA1(d1845033f16de2470afd3858ee0efb45176d9ed7) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) )
+
+ ROM_REGION( 0x1c00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "090ss.c1", 0x0000000, 0x400000, CRC(a56ebf84) SHA1(664bda43b529934a4594a205e578044acface2be) )
+ ROM_LOAD16_BYTE( "090ss.c2", 0x0000001, 0x400000, CRC(6d589146) SHA1(d24687310611ce4d61dd2e2743258d9ca8855c03) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x0800000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x0800001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x1000000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x1000001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0x1800000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0x1800001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+
+ROM_START( wh1bs )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "053bs.p1", 0x000000, 0x080000, CRC(222ef9ea) SHA1(81bdded4fc61b321afc8ec050d192e4384d129cf) )
+ ROM_LOAD16_WORD_SWAP( "053-p2.p2", 0x080000, 0x080000, CRC(f198ed45) SHA1(24ccc091e97f63796562bb5b30df51f39bd504ef) )
+
+ NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) )
+
+ NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) )
+
+ ROM_REGION( 0x300000, "ymsnd", 0 )
+ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) )
+ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) )
+
+ ROM_REGION( 0x600000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) )
+ ROM_CONTINUE( 0x400000, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c2.c2", 0x000001, 0x100000, CRC(ec93b048) SHA1(d4159210df94e259f874a4671d271ec27be13451) )
+ ROM_CONTINUE( 0x400001, 0x100000 )
+ ROM_LOAD16_BYTE( "053-c3.c3", 0x200000, 0x100000, CRC(0dd64965) SHA1(e97b3b8a461da5e8861b3dfdacb25e007ced37a1) )
+ ROM_LOAD16_BYTE( "053-c4.c4", 0x200001, 0x100000, CRC(9270d954) SHA1(a2ef909868f6b06cdcc22a63ddf6c96be12b999c) )
+ROM_END
+
+
+ROM_START( wh2bs )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "057bs.p1", 0x100000, 0x100000, CRC(6e6a0077) SHA1(a0a0eca1aff5dec55f863b1cb1f67bbe4ac3530a) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "057-s1.s1", CRC(fcaeb3a4) SHA1(1f3f85e38b8552333261c04ae5af0d6e3b310622) )
+
+ NEO_BIOS_AUDIO_128K( "057-m1.m1", CRC(8fa3bc77) SHA1(982f92978671e4ee66630948e6bb7565b37b5dc0) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "057-v1.v1", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) )
+ ROM_LOAD( "057-v2.v2", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "057-c1.c1", 0x000000, 0x200000, CRC(21c6bb91) SHA1(a2c17d0c91dd59528d8fa7fe110af8b20b25ff99) )
+ ROM_LOAD16_BYTE( "057-c2.c2", 0x000001, 0x200000, CRC(a3999925) SHA1(0ee861a77850d378d03c1bf00b9692abd860c759) )
+ ROM_LOAD16_BYTE( "057-c3.c3", 0x400000, 0x200000, CRC(b725a219) SHA1(4857687d156a9150a69b97d2729245a51c144a0c) )
+ ROM_LOAD16_BYTE( "057-c4.c4", 0x400001, 0x200000, CRC(8d96425e) SHA1(0f79c868a6a33ad25e38d842f30ec4440d809033) )
+ ROM_LOAD16_BYTE( "057-c5.c5", 0x800000, 0x200000, CRC(b20354af) SHA1(da7609fd467f2f4d71d92970f438a04d11ab1cc1) )
+ ROM_LOAD16_BYTE( "057-c6.c6", 0x800001, 0x200000, CRC(b13d1de3) SHA1(7d749c23a33d90fe50279e884540d71cf1aaaa6b) )
+ROM_END
+
+ROM_START( wh2ey )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "057ey.p1", 0x100000, 0x100000, CRC(07389ed9) SHA1(8c51b9f069a8de49bf313ec9222dddd09c520bfe) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "057-s1.s1", CRC(fcaeb3a4) SHA1(1f3f85e38b8552333261c04ae5af0d6e3b310622) )
+
+ NEO_BIOS_AUDIO_128K( "057-m1.m1", CRC(8fa3bc77) SHA1(982f92978671e4ee66630948e6bb7565b37b5dc0) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "057-v1.v1", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) )
+ ROM_LOAD( "057-v2.v2", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) )
+
+ ROM_REGION( 0xc00000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "057-c1.c1", 0x000000, 0x200000, CRC(21c6bb91) SHA1(a2c17d0c91dd59528d8fa7fe110af8b20b25ff99) )
+ ROM_LOAD16_BYTE( "057-c2.c2", 0x000001, 0x200000, CRC(a3999925) SHA1(0ee861a77850d378d03c1bf00b9692abd860c759) )
+ ROM_LOAD16_BYTE( "057-c3.c3", 0x400000, 0x200000, CRC(b725a219) SHA1(4857687d156a9150a69b97d2729245a51c144a0c) )
+ ROM_LOAD16_BYTE( "057-c4.c4", 0x400001, 0x200000, CRC(8d96425e) SHA1(0f79c868a6a33ad25e38d842f30ec4440d809033) )
+ ROM_LOAD16_BYTE( "057-c5.c5", 0x800000, 0x200000, CRC(b20354af) SHA1(da7609fd467f2f4d71d92970f438a04d11ab1cc1) )
+ ROM_LOAD16_BYTE( "057-c6.c6", 0x800001, 0x200000, CRC(b13d1de3) SHA1(7d749c23a33d90fe50279e884540d71cf1aaaa6b) )
+ROM_END
+
+ROM_START( wh2ja ) // World Heroes 2 Jet old set that was in MAME
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "064-p1.p1", 0x100000, 0x100000, CRC(385a2e86) SHA1(cfde4a1aeae038a3d6ca9946065624f097682d3d) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "064-s1.s1", CRC(2a03998a) SHA1(5e33f469982f12d4622a06d323a345f192bf88e6) )
+
+ NEO_BIOS_AUDIO_128K( "064-m1.m1", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "064-v1.v1", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "064a-c13.c1", 0x000000, 0x400000, CRC(771a6365) SHA1(646bdf3a79819fbca98f513c172b9e9500c073be) )
+ ROM_LOAD16_BYTE( "064a-c24.c2", 0x000001, 0x400000, CRC(e7863a05) SHA1(39d34119137216f914b8b8b7b3e622a6c210f130) )
+ ROM_LOAD16_BYTE( "064a-c57.c3", 0x800000, 0x400000, CRC(64594ed4) SHA1(982dbb932c0cb2eb9292bf19c463fd618c8180f3) )
+ ROM_LOAD16_BYTE( "064a-c68.c4", 0x800001, 0x400000, CRC(6e385398) SHA1(e74a0e72876bff8766152b76e5d94f2958b03cf2) )
+ROM_END
+
+ROM_START( wh2jb )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "064b.p1", 0x100000, 0x100000, CRC(80ce9674) SHA1(ca081af472a114a3ac0c54b1fd21fe565a45ff22) )
+ ROM_CONTINUE( 0x000000, 0x100000 )
+
+ NEO_SFIX_128K( "064-s1.s1", CRC(2a03998a) SHA1(5e33f469982f12d4622a06d323a345f192bf88e6) )
+
+ NEO_BIOS_AUDIO_128K( "064-m1.m1", CRC(d2eec9d3) SHA1(09478787045f1448d19d064dd3d540d1741fd619) )
+
+ ROM_REGION( 0x400000, "ymsnd", 0 )
+ ROM_LOAD( "064-v1.v1", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) )
+ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) )
+
+ ROM_REGION( 0x1000000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "064-c1.c1", 0x000000, 0x200000, CRC(2ec87cea) SHA1(e713ec7839a7665edee6ee3f82a6e530b3b4bd7c) )
+ ROM_LOAD16_BYTE( "064-c2.c2", 0x000001, 0x200000, CRC(526b81ab) SHA1(b5f0a2f04489539ed6b9d0810b12787356c64b23) )
+ ROM_LOAD16_BYTE( "064-c3.c3", 0x400000, 0x200000, CRC(436d1b31) SHA1(059776d77b91377ed0bcfc278802d659c917fc0f) )
+ ROM_LOAD16_BYTE( "064-c4.c4", 0x400001, 0x200000, CRC(f9c8dd26) SHA1(25a9eea1d49b21b4a988beb32c25bf2f7796f227) )
+ ROM_LOAD16_BYTE( "064-c5.c5", 0x800000, 0x200000, CRC(8e34a9f4) SHA1(67b839b426ef3fad0a85d951fdd44c0a45c55226) )
+ ROM_LOAD16_BYTE( "064-c6.c6", 0x800001, 0x200000, CRC(a43e4766) SHA1(54f282f2b1ff2934cca7acbb4386a2b99a29df3a) )
+ ROM_LOAD16_BYTE( "064-c7.c7", 0xc00000, 0x200000, CRC(59d97215) SHA1(85a960dc7f364df13ee0c2f99a4c53aefb081486) )
+ ROM_LOAD16_BYTE( "064-c8.c8", 0xc00001, 0x200000, CRC(fc092367) SHA1(69ff4ae909dd857de3ca8645d63f8b4bde117448) )
+ROM_END
+
+
+
+GAME( 1995, whpb, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Dodowang", "World Heroes Perfect (Add Char)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpb2, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Dodowang", "World Heroes Perfect (Add Char - 2 with Icons)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpbh, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "World Heroes Perfect (Boss Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpbho, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "World Heroes Perfect (Boss Hack - Older - Has bug)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpbho2, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Dodowang", "World Heroes Perfect (Add Char - Old - BugFix)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpeh, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Dodowang, Fighters Kim", "World Heroes Perfect (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpeho, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Dodowang, Fighters Kim", "World Heroes Perfect (Add Char - Pow hack - Old)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whphez, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Zeng_K", "World Heroes Perfect (Boss hack by Zeng_K)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, whpsp, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "World Heroes Perfect (Special Boss hack by Yashional)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, whpss, whp, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids", "World Heroes Perfect (SS v1.0 hack by Eddids (EGHT) 2007-12-25)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, wh1bs, wh1, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "World Heroes (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1993, wh2bs, wh2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "World Heroes 2 (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wh2ey, wh2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ZKW", "World Heroes 2 (Boss, PPX hack, remixed by ZKW)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wh2ja, wh2j, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK / SNK", "World Heroes 2 Jet (ADM-007)(ADH-007)(old set)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, wh2jb, wh2j, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "0days", "World Heroes 2 Jet (Boss hack by 0days (EGCG))", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/nmk16.cpp b/docs/release/src/hbmame/drivers/nmk16.cpp
new file mode 100644
index 00000000000..8054bde2364
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/nmk16.cpp
@@ -0,0 +1,65 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/nmk16.cpp"
+
+ROM_START( tdragonp ) // not working at all
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code -bitswapped- */
+ ROM_LOAD16_BYTE( "91070_68k.8p", 0x00000, 0x20000, CRC(6930fffc) SHA1(571cc735dca654b77cd759b6cc52a74c24d88865) )
+ ROM_LOAD16_BYTE( "91070_68k.7p", 0x00001, 0x20000, CRC(c2d90c90) SHA1(d6c3dd955e516e9dc5efbb7aebc6dee9c49a8c98) )
+ ROM_FILL(0, 1, 0) // fix stack
+ ROM_FILL(2, 2, 0)
+
+ ROM_REGION( 0x020000, "fgtile", 0 )
+ ROM_LOAD( "91070.6", 0x000000, 0x20000, CRC(fe365920) SHA1(7581931cb95cd5a8ed40e4f5385b533e3d19af22) ) /* 8x8 tiles */
+
+ ROM_REGION( 0x100000, "bgtile", 0 )
+ ROM_LOAD( "91070.5", 0x000000, 0x100000, CRC(d0bde826) SHA1(3b74d5fc88a4a9329e101ee72f393608d327d816) ) /* 16x16 tiles */
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_WORD_SWAP( "91070.4", 0x000000, 0x100000, CRC(3eedc2fe) SHA1(9f48986c231a8fbc07f2b39b2017d1e967b2ed3c) ) /* Sprites */
+
+ ROM_REGION( 0x010000, "audiocpu", 0 ) /* Code for (unknown?) CPU */
+ ROM_LOAD( "91070.1", 0x00000, 0x10000, CRC(bf493d74) SHA1(6f8f5eff4b71fb6cabda10075cfa88a3f607859e) )
+
+ ROM_REGION( 0x080000, "oki1", 0 ) /* OKIM6295 samples */
+ ROM_LOAD( "91070.3", 0x00000, 0x80000, CRC(ae6875a8) SHA1(bfdb350b3d3fce2bead1ac60875beafe427765ed) ) /* 0x20000 - 0x80000 banked */
+
+ ROM_REGION( 0x080000, "oki2", 0 ) /* OKIM6295 samples */
+ ROM_LOAD( "91070.2", 0x00000, 0x80000, CRC(ecfea43e) SHA1(d664dfa6698fec8e602523bdae16068f1ff6547b) ) /* 0x20000 - 0x80000 banked */
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "91070.9", 0x0000, 0x0100, CRC(cfdbb86c) SHA1(588822f6308a860937349c9106c2b4b1a75823ec) ) /* unknown */
+ ROM_LOAD( "91070.10", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) /* unknown */
+ROM_END
+
+
+ROM_START( tdragon2p )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "6p.rom", 0x00000, 0x80000, CRC(f99f4bf8) SHA1(34dfc188d94b89efdaa61cfc40af88868d7f22db) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */
+ ROM_LOAD( "5.bin", 0x00000, 0x20000, CRC(b870be61) SHA1(ea5d45c3a3ab805e55806967f00167cf6366212e) )
+
+ ROM_REGION( 0x020000, "fgtile", 0 )
+ ROM_LOAD( "1.bin", 0x000000, 0x020000, CRC(d488aafa) SHA1(4d05e7ca075b638dd90ae4c9f224817a8a3ae9f3) ) /* 8x8 tiles */
+
+ ROM_REGION( 0x200000, "bgtile", 0 )
+ ROM_LOAD( "ww930914.2", 0x000000, 0x200000, CRC(f968c65d) SHA1(fd6d21bba53f945b1597d7d0735bc62dd44d5498) ) /* 16x16 tiles */
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD16_WORD_SWAP( "ww930917.7", 0x000000, 0x200000, CRC(b98873cb) SHA1(cc19200865176e940ff68e12de81f029b51c2084) ) /* Sprites */
+ ROM_LOAD16_WORD_SWAP( "ww930918.8", 0x200000, 0x200000, CRC(baee84b2) SHA1(b325b00e6147266dbdc840e03556004531dc2038) )
+
+ ROM_REGION( 0x240000, "oki1", 0 ) /* OKIM6295 samples */
+ ROM_LOAD( "ww930916.4", 0x040000, 0x200000, CRC(07c35fe6) SHA1(33547bd88764704310f2ef8cf3bfe21ceb56d5b7) ) /* all banked */
+
+ ROM_REGION( 0x240000, "oki2", 0 ) /* OKIM6295 samples */
+ ROM_LOAD( "ww930915.3", 0x040000, 0x200000, CRC(82025bab) SHA1(ac6053700326ea730d00ec08193e2c8a2a019f0b) ) /* all banked */
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "9.bpr", 0x0000, 0x0100, CRC(435653a2) SHA1(575b4a46ea65179de3042614da438d2f6d8b572e) ) /* unknown */
+ ROM_LOAD( "10.bpr", 0x0100, 0x0100, CRC(e6ead349) SHA1(6d81b1c0233580aa48f9718bade42d640e5ef3dd) ) /* unknown */
+ROM_END
+
+GAME( 1991, tdragonp, tdragon, tdragon, tdragon, driver_device, 0, ROT270, "Trap15", "Thunder Dragon Practice Mode (9th Jan. 1992 - v1.01)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, tdragon2p,tdragon2, tdragon2, tdragon2, nmk16_state, banked_audiocpu, ROT270, "Trap15", "Thunder Dragon 2 Practice Mode (9th Nov. 1993 - v1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/docs/release/src/hbmame/drivers/pacland.cpp b/docs/release/src/hbmame/drivers/pacland.cpp
new file mode 100644
index 00000000000..d84c33a08b7
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/pacland.cpp
@@ -0,0 +1,106 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/pacland.cpp"
+
+ROM_START( mariopac )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "pl5_01b.8b", 0x08000, 0x4000, CRC(b0ea7631) SHA1(424afa6f397310c7af39c9e8b580aa9ccd42c39c) )
+ ROM_LOAD( "pl5_02.8d", 0x0C000, 0x4000, CRC(d903e84e) SHA1(25338726227bfbec65847879aac5228a6a307db4) )
+ ROM_LOAD( "pl1_3.8e", 0x10000, 0x4000, CRC(aa9fa739) SHA1(7b1f7857eb5f68e166b1f8988c82051aaf05df48) )
+ ROM_LOAD( "pl1_4.8f", 0x14000, 0x4000, CRC(2b895a90) SHA1(820f8873c6a5a736089406d0f03d491dfb82d00d) )
+ ROM_LOAD( "pl1_5.8h", 0x18000, 0x4000, CRC(7af66200) SHA1(f44161ded1633e9801b7a9cd84d481e53823f5d9) )
+ ROM_LOAD( "pl3_6.8j", 0x1c000, 0x4000, CRC(2ffe3319) SHA1(c2540321cd5a1fe29ecb077abdf8f997893192e9) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "pl1_7.3e", 0x8000, 0x2000, CRC(8c5becae) SHA1(14d67136395c4c64472980a69648ce2d479ae67f) )
+ ROM_LOAD( "cus60", 0xf000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "mariopac_12.6n", 0x00000, 0x2000, CRC(abba0923) SHA1(2286b0d162e5502160895940d0c9637abe5d6d2f) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 )
+ ROM_LOAD( "pl4_13.6t", 0x00000, 0x2000, CRC(3ae582fd) SHA1(696b2cfadb6b071de8e43d20cd65b37713ca3b30) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "mariopac.6f", 0x00000, 0x4000, CRC(98439154) SHA1(7bad68705ae3d9fa6e03ad7dc9421cf6063e1669) )
+ ROM_LOAD( "mariopac.6e", 0x04000, 0x4000, CRC(d0c1f225) SHA1(bcaa68922e49b7257959471641d3c91e505a8d53) )
+ ROM_LOAD( "mariopac.7e", 0x08000, 0x4000, CRC(6005b277) SHA1(acacffe38edfc2d325dc286d182253ee5bb62489) )
+ ROM_LOAD( "mariopac.7f", 0x0c000, 0x4000, CRC(eeed9880) SHA1(e037dd299895db22a88c1d32dda157833b1e8a09) )
+
+ ROM_REGION( 0x1400, "proms", 0 )
+ ROM_LOAD( "pl1-2.1t", 0x0000, 0x0400, CRC(472885de) SHA1(8d552c90b8d5bc6ad6c60934c00f4303cd180ce7) )
+ ROM_LOAD( "pl1-1.1r", 0x0400, 0x0400, CRC(a78ebdaf) SHA1(8ea215701eb5e1a2a329ef92c19fc69b18fc28c7) )
+ ROM_LOAD( "pl1-5.5t", 0x0800, 0x0400, CRC(4b7ee712) SHA1(dd0ec4c632d8b160f7b54d8f18fcf4ef1508d832) )
+ ROM_LOAD( "pl1-4.4n", 0x0c00, 0x0400, CRC(3a7be418) SHA1(475cdc68205e3acce83fe79b00b74c6a7e28dde4) )
+ ROM_LOAD( "pl1-3.6l", 0x1000, 0x0400, CRC(80558da8) SHA1(7e1483467817295f36d1e2bdb32934c4f2617d52) )
+ROM_END
+
+ROM_START( paclandb ) // cus60 is the only different rom
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "pl5_01b.8b", 0x08000, 0x4000, CRC(b0ea7631) SHA1(424afa6f397310c7af39c9e8b580aa9ccd42c39c) )
+ ROM_LOAD( "pl5_02.8d", 0x0C000, 0x4000, CRC(d903e84e) SHA1(25338726227bfbec65847879aac5228a6a307db4) )
+ ROM_LOAD( "pl1_3.8e", 0x10000, 0x4000, CRC(aa9fa739) SHA1(7b1f7857eb5f68e166b1f8988c82051aaf05df48) )
+ ROM_LOAD( "pl1_4.8f", 0x14000, 0x4000, CRC(2b895a90) SHA1(820f8873c6a5a736089406d0f03d491dfb82d00d) )
+ ROM_LOAD( "pl1_5.8h", 0x18000, 0x4000, CRC(7af66200) SHA1(f44161ded1633e9801b7a9cd84d481e53823f5d9) )
+ ROM_LOAD( "pl3_6.8j", 0x1c000, 0x4000, CRC(2ffe3319) SHA1(c2540321cd5a1fe29ecb077abdf8f997893192e9) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "pl1_7.3e", 0x8000, 0x2000, CRC(8c5becae) SHA1(14d67136395c4c64472980a69648ce2d479ae67f) )
+ ROM_LOAD( "cus60", 0xf000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "pl2_12.6n", 0x00000, 0x2000, CRC(a63c8726) SHA1(b15903fa2267375280af03af0a7157e1b0bcb86d) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 )
+ ROM_LOAD( "pl4_13.6t", 0x00000, 0x2000, CRC(3ae582fd) SHA1(696b2cfadb6b071de8e43d20cd65b37713ca3b30) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "pl1-9.6f", 0x00000, 0x4000, CRC(f5d5962b) SHA1(8d008a9bc06dc562c241955d9c551647b5c1f4e9) )
+ ROM_LOAD( "pl1-8.6e", 0x04000, 0x4000, CRC(a2ebfa4a) SHA1(4a2a2b43a23a7a46266751415d1bde118143429c) )
+ ROM_LOAD( "pl1-10.7e", 0x08000, 0x4000, CRC(c7cf1904) SHA1(7ca8ed20ee32eb8609ac96b4e4fcb3b6027b598a) )
+ ROM_LOAD( "pl1-11.7f", 0x0c000, 0x4000, CRC(6621361a) SHA1(4efa40adba803006e86d5e12514983d4132b5efb) )
+
+ ROM_REGION( 0x1400, "proms", 0 )
+ ROM_LOAD( "pl1-2.1t", 0x0000, 0x0400, CRC(472885de) SHA1(8d552c90b8d5bc6ad6c60934c00f4303cd180ce7) )
+ ROM_LOAD( "pl1-1.1r", 0x0400, 0x0400, CRC(a78ebdaf) SHA1(8ea215701eb5e1a2a329ef92c19fc69b18fc28c7) )
+ ROM_LOAD( "pl1-5.5t", 0x0800, 0x0400, CRC(4b7ee712) SHA1(dd0ec4c632d8b160f7b54d8f18fcf4ef1508d832) )
+ ROM_LOAD( "pl1-4.4n", 0x0c00, 0x0400, CRC(3a7be418) SHA1(475cdc68205e3acce83fe79b00b74c6a7e28dde4) )
+ ROM_LOAD( "pl1-3.6l", 0x1000, 0x0400, CRC(80558da8) SHA1(7e1483467817295f36d1e2bdb32934c4f2617d52) )
+ROM_END
+
+ROM_START( paclandd )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "pl5_01b.8b", 0x08000, 0x4000, CRC(b0ea7631) SHA1(424afa6f397310c7af39c9e8b580aa9ccd42c39c) )
+ ROM_LOAD( "pl5_02.8d", 0x0C000, 0x4000, CRC(d903e84e) SHA1(25338726227bfbec65847879aac5228a6a307db4) )
+ ROM_LOAD( "pl1_3.8e", 0x10000, 0x4000, CRC(aa9fa739) SHA1(7b1f7857eb5f68e166b1f8988c82051aaf05df48) )
+ ROM_LOAD( "pl1_4.8f", 0x14000, 0x4000, CRC(2b895a90) SHA1(820f8873c6a5a736089406d0f03d491dfb82d00d) )
+ ROM_LOAD( "pl1_5.8h", 0x18000, 0x4000, CRC(7af66200) SHA1(f44161ded1633e9801b7a9cd84d481e53823f5d9) )
+ ROM_LOAD( "pl3_6.8j", 0x1c000, 0x4000, CRC(2ffe3319) SHA1(c2540321cd5a1fe29ecb077abdf8f997893192e9) )
+
+ ROM_REGION( 0x10000, "mcu", 0 )
+ ROM_LOAD( "pl1_7.3e", 0x8000, 0x2000, CRC(8c5becae) SHA1(14d67136395c4c64472980a69648ce2d479ae67f) )
+ ROM_LOAD( "cus60", 0xf000, 0x1000, CRC(6ef08fb3) SHA1(4842590d60035a0059b0899eb2d5f58ae72c2529) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "pl2_12.6n", 0x00000, 0x2000, CRC(a63c8726) SHA1(b15903fa2267375280af03af0a7157e1b0bcb86d) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 )
+ ROM_LOAD( "pl4_13.6t", 0x00000, 0x2000, CRC(3ae582fd) SHA1(696b2cfadb6b071de8e43d20cd65b37713ca3b30) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "paclandd.6f", 0x00000, 0x4000, CRC(3dba9085) SHA1(3ade36e6c04ef40d4dcdf53cc374c600de9dbb75) )
+ ROM_LOAD( "paclandd.6e", 0x04000, 0x4000, CRC(7f089223) SHA1(129344647ae4898c6d70f15e96c13eca12a5f6ca) )
+ ROM_LOAD( "paclandd.7e", 0x08000, 0x4000, CRC(3f4b4d81) SHA1(e6acf8164a9d9fc31a12722e466c4dfded3022fe) )
+ ROM_LOAD( "paclandd.7f", 0x0c000, 0x4000, CRC(52c2cb37) SHA1(47833d98ccbee1098910778ea1a26f58b485a76a) )
+
+ ROM_REGION( 0x1400, "proms", 0 )
+ ROM_LOAD( "pl1-2.1t", 0x0000, 0x0400, CRC(472885de) SHA1(8d552c90b8d5bc6ad6c60934c00f4303cd180ce7) )
+ ROM_LOAD( "pl1-1.1r", 0x0400, 0x0400, CRC(a78ebdaf) SHA1(8ea215701eb5e1a2a329ef92c19fc69b18fc28c7) )
+ ROM_LOAD( "pl1-5.5t", 0x0800, 0x0400, CRC(4b7ee712) SHA1(dd0ec4c632d8b160f7b54d8f18fcf4ef1508d832) )
+ ROM_LOAD( "pl1-4.4n", 0x0c00, 0x0400, CRC(3a7be418) SHA1(475cdc68205e3acce83fe79b00b74c6a7e28dde4) )
+ ROM_LOAD( "pl1-3.6l", 0x1000, 0x0400, CRC(80558da8) SHA1(7e1483467817295f36d1e2bdb32934c4f2617d52) )
+ROM_END
+
+GAME( 2001, mariopac, pacland, pacland, pacland, driver_device, 0, ROT0, "Marks Hacks", "Mario in Pac-Land", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paclandb, pacland, pacland, pacland, driver_device, 0, ROT0, "Namco", "Pac-Land (Benelux Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, paclandd, pacland, pacland, pacland, driver_device, 0, ROT0, "Blue Justice", "Pac-Land", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/pacman.cpp b/docs/release/src/hbmame/drivers/pacman.cpp
new file mode 100644
index 00000000000..35b41f73e98
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/pacman.cpp
@@ -0,0 +1,3676 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*******************************************************
+ Puckman and Pacman
+
+ Puckman is made by Namco and has these ghost names:
+ * Normal:
+ ** Oikake - Akabei
+ ** Machibuse - Pinky
+ ** Kimagure - Aosuke
+ ** Otoboke - Guzuta
+ * Alternate:
+ ** Urchin - Macky
+ ** Romp - Micky
+ ** Stylist - Mucky
+ ** Crybaby - Mocky
+
+ Clones include Hangly Man, and Newpuck-X
+
+ Pac-Man is made by Midway and has these ghost names:
+ * Normal:
+ ** Shadow - Blinky
+ ** Speedy - Pinky
+ ** Bashful - Inky
+ ** Pokey - Clyde
+ * Alternate:
+ ** AAAAAAAA - BBBBBBB
+ ** CCCCCCCC - DDDDDDD
+ ** EEEEEEEE - FFFFFFF
+ ** GGGGGGGG - HHHHHHH
+
+ Clones include most hacks
+
+ See the MAME source code for hardware information.
+********************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "pacman.h"
+#include "sound/namco.h"
+#include "machine/nvram.h"
+
+
+
+/*************************************
+ *
+ * Constants
+ *
+ *************************************/
+
+#define MASTER_CLOCK (XTAL_18_432MHz)
+
+#define PIXEL_CLOCK (MASTER_CLOCK/3)
+
+/* H counts from 128->511, HBLANK starts at 144 and ends at 240 */
+#define HTOTAL (384)
+#define HBEND (0) /*(96+16)*/
+#define HBSTART (288) /*(16)*/
+
+#define VTOTAL (264)
+#define VBEND (0) /*(16)*/
+#define VBSTART (224) /*(224+16)*/
+
+
+
+/*************************************
+ *
+ * Machine init
+ *
+ *************************************/
+
+
+/*************************************
+ *
+ * Interrupts
+ *
+ *************************************/
+
+WRITE8_MEMBER(pacman_state::irq_mask_w)
+{
+ m_irq_mask = data & 1;
+}
+
+WRITE8_MEMBER(pacman_state::pacman_interrupt_vector_w)
+{
+ m_maincpu->set_input_line_vector(0, data);
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+/* bit0 flags if memory poke already done */
+
+INTERRUPT_GEN_MEMBER( pacman_state::vblank_irq )
+{
+ uint8_t cheat_exist = m_io_fake.read_safe(120);
+
+ /* always signal a normal VBLANK */
+ if(m_irq_mask)
+ device.execute().set_input_line(0, HOLD_LINE);
+
+ if (cheat_exist != 120)
+ {
+ uint8_t cheating = ((cheat_exist & 7) > 2); /* are we cheating? */
+
+ if (cheating != (m_speedcheat & 1)) /* if status just changed, alter program bytes */
+ {
+ uint8_t *RAM = machine().root_device().memregion("maincpu")->base();
+ m_speedcheat = (m_speedcheat & 2) | cheating;
+
+ if (cheating) /* activate the cheat */
+ {
+ if (RAM[0x180b] == 0xbe) RAM[0x180b] = 1; /* pacman */
+ else
+ if (RAM[0x182d] == 0xbe) RAM[0x182d] = 1; /* pacplus */
+ }
+ else /* remove the cheat */
+ {
+ if (RAM[0x180b] == 1) RAM[0x180b] = 0xbe; /* pacman */
+ else
+ if (RAM[0x182d] == 1) RAM[0x182d] = 0xbe; /* pacplus */
+ }
+ }
+ }
+}
+
+
+/*************************************
+ *
+ * LEDs/coin counters
+ *
+ *************************************/
+
+WRITE8_MEMBER(pacman_state::pacman_leds_w)
+{
+ output().set_led_value(offset, BIT(data, 0));
+}
+
+
+WRITE8_MEMBER(pacman_state::pacman_coin_counter_w)
+{
+ machine().bookkeeping().coin_counter_w(offset, BIT(data, 0));
+}
+
+
+WRITE8_MEMBER(pacman_state::pacman_coin_lockout_global_w)
+{
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
+}
+
+
+READ8_MEMBER( pacman_state::pacman_read_nop )
+{
+ return 0xbf;
+}
+
+/*************************************
+ *
+ * Main CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( pacman_map, AS_PROGRAM, 8, pacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected at the CPU */
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x2000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0x2000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x2000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0x2000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0x2000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5080) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( woodpek_map, AS_PROGRAM, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram")
+ AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop)
+ AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5002, 0x5002) AM_MIRROR(0x8000) AM_WRITENOP
+ AM_RANGE(0x5003, 0x5003) AM_MIRROR(0x8000) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5004, 0x5005) AM_MIRROR(0x8000) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_MIRROR(0x8000) AM_WRITENOP // AM_WRITE(pacman_coin_lockout_global_w)
+ AM_RANGE(0x5007, 0x5007) AM_MIRROR(0x8000) AM_WRITE(pacman_coin_counter_w)
+ AM_RANGE(0x5040, 0x505f) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_MIRROR(0x8000) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5080) AM_MIRROR(0x8000) AM_WRITENOP
+ AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0")
+ AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1")
+ AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x8000) AM_READ_PORT("DSW1")
+ AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_READ_PORT("DSW2")
+ AM_RANGE(0x8000, 0xbfff) AM_ROM
+ AM_RANGE(0xff00, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( patched_opcodes_map, AS_DECRYPTED_OPCODES, 8, pacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM AM_SHARE("patched_opcodes")
+ADDRESS_MAP_END
+/*************************************
+ *
+ * Main CPU port handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( writeport, AS_IO, 8, pacman_state )
+ AM_RANGE(0x0000, 0xffff) AM_WRITE(pacman_interrupt_vector_w)
+ADDRESS_MAP_END
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+/* No alternate ghost names, no fake input port - for mspacman and mspacatk */
+INPUT_PORTS_START( mspacpls )
+ PORT_START ("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ /* Press this while playing pacman to instantly finish the level - HBMAME */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Finish Level (Cheat)") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START ("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) /* Also invincibility when playing */
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) /* Also speed-up when playing */
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START ("DSW1")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3")
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:6,7")
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x10, "15000" )
+ PORT_DIPSETTING( 0x20, "20000" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START ("DSW2")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+/* No alternate ghost names */
+INPUT_PORTS_START( mspacman )
+ PORT_INCLUDE( mspacpls )
+
+ PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat if it is. */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+ PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+ PORT_DIPSETTING( 0x00, "Disabled" )
+ PORT_DIPSETTING( 0x02, "Enabled with Button" )
+ PORT_DIPSETTING( 0x04, "Enabled Always" )
+INPUT_PORTS_END
+
+
+/* No fake dip */
+INPUT_PORTS_START( pacman0 )
+ PORT_INCLUDE( mspacpls )
+
+ PORT_MODIFY("DSW1")
+ PORT_DIPNAME( 0x80, 0x80, "Ghost Names" ) PORT_DIPLOCATION("SW1:9")
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) )
+INPUT_PORTS_END
+
+
+/* for newpuc2, pheartsb - no alternate ghost names, and the bonuses are 10k higher */
+INPUT_PORTS_START( newpuc2 )
+ PORT_INCLUDE( mspacman )
+
+ PORT_MODIFY("DSW1")
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:6,7")
+ PORT_DIPSETTING( 0x00, "20000" )
+ PORT_DIPSETTING( 0x10, "25000" )
+ PORT_DIPSETTING( 0x20, "30000" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+INPUT_PORTS_END
+
+
+/* for newpuc2b, nwpuc2b - no alternate ghost names, and the bonuses are a lot higher */
+INPUT_PORTS_START( newpuc2b )
+ PORT_INCLUDE( mspacman )
+
+ PORT_MODIFY("DSW1")
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:6,7")
+ PORT_DIPSETTING( 0x00, "30000" )
+ PORT_DIPSETTING( 0x10, "60000" )
+ PORT_DIPSETTING( 0x20, "90000" )
+ PORT_DIPSETTING( 0x30, DEF_STR( None ) )
+INPUT_PORTS_END
+
+/* for spuckman - alternate ghost names, and the bonuses are 10k higher */
+INPUT_PORTS_START( spuckman )
+ PORT_INCLUDE( newpuc2 )
+
+ PORT_MODIFY("DSW1")
+ PORT_DIPNAME( 0x80, 0x80, "Ghost Names" ) PORT_DIPLOCATION("SW1:9")
+ PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) )
+INPUT_PORTS_END
+
+/* All options available */
+INPUT_PORTS_START( pacman )
+ PORT_INCLUDE( pacman0 )
+
+ PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat if it is. */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+ PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+ PORT_DIPSETTING( 0x00, "Disabled" )
+ PORT_DIPSETTING( 0x02, "Enabled with Button" )
+ PORT_DIPSETTING( 0x04, "Enabled Always" )
+INPUT_PORTS_END
+
+
+/*************************************
+ *
+ * Graphics layouts
+ *
+ *************************************/
+
+static const gfx_layout tilelayout =
+{
+ 8,8, /* 8*8 characters */
+ RGN_FRAC(1,2), /* 256 characters */
+ 2, /* 2 bits per pixel */
+ { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */
+ { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 }, /* bits are packed in groups of four */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 16*8 /* every char takes 16 bytes */
+};
+
+
+static const gfx_layout spritelayout =
+{
+ 16,16, /* 16*16 sprites */
+ RGN_FRAC(1,2), /* 64 sprites */
+ 2, /* 2 bits per pixel */
+ { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */
+ { 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
+ 64*8 /* every sprite takes 64 bytes */
+};
+
+
+static gfx_layout xtilelayout =
+{
+ 16,16, /* 16*16 characters */
+ RGN_FRAC(1,2), /* 256 characters */
+ 2, /* 2 bits per pixel */
+ { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */
+ { 0, 1, 2, 3, 128, 129, 130, 131, 256, 257, 258, 259, 384, 385, 386, 387 },
+ { 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 },
+ 64*8 /* every char takes 64 bytes */
+};
+
+
+static gfx_layout xspritelayout =
+{
+ 32,32, /* 32*32 sprites */
+ RGN_FRAC(1,2), /* 64 sprites */
+ 2, /* 2 bits per pixel */
+ { 0, 4 }, /* the two bitplanes for 4 pixels are packed into one byte */
+ { 0, 1, 2, 3, 256, 257, 258, 259, 512, 513, 514, 515, 768, 769, 770, 771,
+ 1024+0, 1024+1, 1024+2, 1024+3, 1024+256, 1024+257, 1024+258, 1024+259,
+ 1024+512, 1024+513, 1024+514, 1024+515, 1024+768, 1024+769, 1024+770, 1024+771 },
+ { 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,
+ 16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8, 24*8, 25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8 },
+ 256*8 /* every sprite takes 256 bytes */
+};
+
+
+static GFXDECODE_START( pacman )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, tilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0x1000, spritelayout, 0, 32 )
+GFXDECODE_END
+
+static GFXDECODE_START( pacmanx )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, xtilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0x4000, xspritelayout, 0, 32 )
+GFXDECODE_END
+
+
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+static MACHINE_CONFIG_START( pacman, pacman_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6)
+ MCFG_CPU_PROGRAM_MAP(pacman_map)
+ MCFG_CPU_IO_MAP(writeport)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", pacman_state, vblank_irq)
+ MCFG_WATCHDOG_ADD("watchdog")
+ MCFG_WATCHDOG_VBLANK_INIT("screen", 16)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_pacman)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state,pacman)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*4)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32)
+ MCFG_PALETTE_INIT_OWNER(pacman_state,pacman)
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", pacman)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
+ MCFG_NAMCO_AUDIO_VOICES(3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pacmanx, pacman )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK<<2, HTOTAL<<1, HBEND<<1, HBSTART<<1, VTOTAL<<1, VBEND<<1, VBSTART<<1)
+ MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_pacmanx)
+ MCFG_VIDEO_START_OVERRIDE(pacman_state,pacmanx)
+ MCFG_GFXDECODE_MODIFY("gfxdecode", pacmanx)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( woodpek, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(woodpek_map)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( pacmanp, pacman )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(patched_opcodes_map)
+MACHINE_CONFIG_END
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+static uint8_t hbmame_pacplus_decode(offs_t addr, uint8_t e)
+{
+ static const unsigned char swap_xor_table[6][9] =
+ {
+ { 7,6,5,4,3,2,1,0, 0x00 },
+ { 7,6,5,4,3,2,1,0, 0x28 },
+ { 6,1,3,2,5,7,0,4, 0x96 },
+ { 6,1,5,2,3,7,0,4, 0xbe },
+ { 0,3,7,6,4,2,1,5, 0xd5 },
+ { 0,3,4,6,7,2,1,5, 0xdd }
+ };
+
+ static const int picktable[32] =
+ {
+ 0,2,4,2,4,0,4,2,2,0,2,2,4,0,4,2,
+ 2,2,4,0,4,2,4,0,0,4,0,4,4,2,4,2
+ };
+
+ unsigned int method = 0;
+ const unsigned char *tbl;
+
+
+ /* pick method from bits 0 2 5 7 9 of the address */
+ method = picktable[
+ (addr & 0x001) |
+ ((addr & 0x004) >> 1) |
+ ((addr & 0x020) >> 3) |
+ ((addr & 0x080) >> 4) |
+ ((addr & 0x200) >> 5)];
+
+ /* switch method if bit 11 of the address is set */
+ if ((addr & 0x800) == 0x800)
+ method ^= 1;
+
+ tbl = swap_xor_table[method];
+ return BITSWAP8(e,tbl[0],tbl[1],tbl[2],tbl[3],tbl[4],tbl[5],tbl[6],tbl[7]) ^ tbl[8];
+}
+
+DRIVER_INIT_MEMBER(pacman_state,pacplus)
+{
+ offs_t i;
+
+ /* CPU ROMs */
+ uint8_t *RAM = machine().root_device().memregion("maincpu")->base();
+
+ for (i = 0; i < 0x4000; i++)
+ RAM[i] = hbmame_pacplus_decode(i,RAM[i]);
+}
+
+void pacman_state::eyes_decode(uint8_t *data)
+{
+ int j;
+ uint8_t swapbuffer[8];
+
+ for (j = 0; j < 8; j++)
+ swapbuffer[j] = data[BITSWAP16(j,15,14,13,12,11,10,9,8,7,6,5,4,3,0,1,2)];
+
+ for (j = 0; j < 8; j++)
+ data[j] = BITSWAP8(swapbuffer[j],7,4,5,6,3,2,1,0);
+}
+
+DRIVER_INIT_MEMBER(pacman_state,eyes)
+{
+ int i;
+
+ /* CPU ROMs */
+
+ /* Data lines D3 and D5 swapped */
+ uint8_t *RAM = machine().root_device().memregion("maincpu")->base();
+ for (i = 0; i < 0x4000; i++)
+ RAM[i] = BITSWAP8(RAM[i],7,6,3,4,5,2,1,0);
+
+
+ /* Graphics ROMs */
+
+ /* Data lines D4 and D6 and address lines A0 and A2 are swapped */
+ RAM = machine().root_device().memregion("gfx1")->base();
+ for (i = 0;i < machine().root_device().memregion("gfx1")->bytes();i += 8)
+ eyes_decode(&RAM[i]);
+}
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+#define PACMAN_SOUND_PROMS \
+ ROM_REGION( 0x0200, "namco", 0 ) \
+ ROM_LOAD( "82s126.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) \
+ ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) \
+
+#define PACMAN_PROMS \
+ ROM_REGION( 0x0120, "proms", 0 ) \
+ ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) ) \
+ ROM_LOAD( "82s126.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) ) \
+ PACMAN_SOUND_PROMS \
+
+#define PACPLUS_PROMS \
+ ROM_REGION( 0x0120, "proms", 0 ) \
+ ROM_LOAD( "pacplus.7f", 0x0000, 0x0020, CRC(063dd53a) SHA1(2e43b46ec3b101d1babab87cdaddfa944116ec06) ) \
+ ROM_LOAD( "pacplus.4a", 0x0020, 0x0100, CRC(e271a166) SHA1(cf006536215a7a1d488eebc1d8a2e2a8134ce1a6) ) \
+ PACMAN_SOUND_PROMS \
+
+ROM_START( abortman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "abortman.5e", 0x0000, 0x1000, CRC(1c4ef687) SHA1(0adea2380f8fd43ea90a4460eea9be2a17e7a825) )
+ ROM_LOAD( "abortman.5f", 0x1000, 0x1000, CRC(38a22ac4) SHA1(5503132e4d1ece4a3d71ad3635a60ec151bc0417) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( baby2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "baby2.6j", 0x3000, 0x1000, CRC(260b87b8) SHA1(cf4ace417b7b640678f809c92f690cebc977dd68) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "baby2.5e", 0x0000, 0x1000, CRC(6f7d8d57) SHA1(2e786c5a61168455d31b7c45c97891f65243a40b) )
+ ROM_LOAD( "baby2.5f", 0x1000, 0x1000, CRC(b6d77a1e) SHA1(63ada2a7f154ce7bd756c5002a34e5f4002c2473) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( baby3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "baby3.6j", 0x3000, 0x1000, CRC(6c0e22c8) SHA1(bcc684d7f5fb7fe73d3dcfdd80999242789dc9c9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "baby3.5e", 0x0000, 0x1000, CRC(22174b65) SHA1(ed90d2c515e2446b369861e20ed34987f10a3dc8) )
+ ROM_LOAD( "baby2.5f", 0x1000, 0x1000, CRC(b6d77a1e) SHA1(63ada2a7f154ce7bd756c5002a34e5f4002c2473) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( baby4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "baby4.6j", 0x3000, 0x1000, CRC(f8cd7ebb) SHA1(c7b8e690e96f9b863d31caddc81076d556058671) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "baby3.5e", 0x0000, 0x1000, CRC(22174b65) SHA1(ed90d2c515e2446b369861e20ed34987f10a3dc8) )
+ ROM_LOAD( "baby2.5f", 0x1000, 0x1000, CRC(b6d77a1e) SHA1(63ada2a7f154ce7bd756c5002a34e5f4002c2473) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( brakman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "brakman.6j", 0x3000, 0x1000, CRC(2d2af2e5) SHA1(8355f30b106e53499d3c1e1174aee6572869b428) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "brakman.5e", 0x0000, 0x1000, CRC(a004abe7) SHA1(c2c8d871b17c9a1f8902f8ec3e46e0991e747f45) )
+ ROM_LOAD( "brakman.5f", 0x1000, 0x1000, CRC(30ed6264) SHA1(5bc2753aa6f2e49f6c1ce5810cf561d27ecb38e6) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( bucaneer )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "bucaneer.6k", 0x3000, 0x1000, CRC(c4d9169a) SHA1(f34a51d9fa90739214ab9e837b2602c992a73576) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "bucaneer.5e", 0x0000, 0x0800, CRC(4060c077) SHA1(78d4aa5243246f73533fc0886438dc1fa6f7ebe5) )
+ ROM_LOAD( "bucaneer.5h", 0x0800, 0x0800, CRC(e3861283) SHA1(61cf8ed24902910e98438d9e2e2745f226ad2a13) )
+ ROM_LOAD( "bucaneer.5f", 0x1000, 0x0800, CRC(09f66dec) SHA1(2d3649341fed19bac15ec274f7d747de46a3edb2) )
+ ROM_LOAD( "bucaneer.5j", 0x1800, 0x0800, CRC(653314e7) SHA1(c466a421917b3502e9115ebda1b2d11f7f586de8) )
+ /* cannot do the "mario" trick here because bucco does odd things when going up */
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( caterpil )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "caterpil.6e", 0x0000, 0x1000, CRC(b53c5650) SHA1(54f1fee2494cfc0452051a6f134c5c3b691b4ffb) )
+ ROM_LOAD( "caterpil.6f", 0x1000, 0x1000, CRC(53845efb) SHA1(e6db734a7a806aead30422de4073511da55a17f1) )
+ ROM_LOAD( "caterpil.6h", 0x2000, 0x1000, CRC(a474357e) SHA1(0fb93ca3364b5955428bc59e2f6d9f186182a280) )
+ ROM_LOAD( "caterpil.6j", 0x3000, 0x1000, CRC(5df0ea3b) SHA1(dce379bb4cf5fa7c253cc16702360cbc3b637f37) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "caterpil.5e", 0x0000, 0x1000, CRC(0387907d) SHA1(014745c480ee4b81c161cfa7a011df673059a1a8) )
+ ROM_LOAD( "caterpil.5f", 0x1000, 0x1000, CRC(aa450714) SHA1(8a888ce6573623d15913ff297a027d4056eb2875) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chthang )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "chtpac.6f", 0x1000, 0x1000, CRC(72cea888) SHA1(87d0c2f8e7be0b9f28fc46b5711ddb8a85023942) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtpac3d )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "chtpac3d.6f", 0x1000, 0x1000, CRC(fe975805) SHA1(a213628c19d8998960c45f756d865dfce404ab57) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman3d.6j", 0x3000, 0x1000, CRC(959e930e) SHA1(0ef24017be05ddf85248c4d00f0e21cbf658f78c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman3d.5e", 0x0000, 0x1000, CRC(aa203d45) SHA1(7d2fb9bc8718601efc33d2469452a08018167e60) )
+ ROM_LOAD( "pacman3d.5f", 0x1000, 0x1000, CRC(d1830540) SHA1(5d276774997e3be8fc9c21d55562288acd1cffcc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtpman2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "chtpac.6f", 0x1000, 0x1000, CRC(72cea888) SHA1(87d0c2f8e7be0b9f28fc46b5711ddb8a85023942) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "newpuck2.6j", 0x3000, 0x1000, CRC(0e3bdbde) SHA1(11679a3e60cb98ef56e9f0c349d421a72b7097f6) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtpop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "chtpac.6f", 0x1000, 0x1000, CRC(72cea888) SHA1(87d0c2f8e7be0b9f28fc46b5711ddb8a85023942) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacpopey.5f", 0x1000, 0x1000, CRC(af2b610b) SHA1(c787b1db588125f0770dc2bf4626ad22f0faee72) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( chtpuck )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "chtpac.6f", 0x1000, 0x1000, CRC(72cea888) SHA1(87d0c2f8e7be0b9f28fc46b5711ddb8a85023942) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "fastpuck.6j", 0x3000, 0x1000, CRC(2e64a3ba) SHA1(f86a921173f32211b18d023c2701664d13ae23be) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( crazypac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "crazypac.6j", 0x3000, 0x1000, CRC(9f754a51) SHA1(447d95f90c6481911189173f95dbd5ea23467f67) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ctrpllrp )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "ctrpllrp.6k", 0x0800, 0x0800, CRC(f39846d3) SHA1(bc1137a45898210523cf8da1e6a2425e7c322884) )
+ ROM_LOAD( "ctrpllrp.6f", 0x1000, 0x0800, CRC(afa149a8) SHA1(207b842854ac9e015e12a2dae41105438cda1df9) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "ctrpllrp.6h", 0x2000, 0x0800, CRC(6bb282a1) SHA1(a96f25dc0f49ebe7e528e3297a112d778c6c3030) )
+ ROM_LOAD( "ctrpllrp.6n", 0x2800, 0x0800, CRC(fa2140f5) SHA1(123d31e653e8af78c6153702eca2e136c427ed64) )
+ ROM_LOAD( "ctrpllrp.6j", 0x3000, 0x0800, CRC(86c91e0e) SHA1(52af6a3af5b1363859f790470ca5860ef2a08566) )
+ ROM_LOAD( "ctrpllrp.6p", 0x3800, 0x0800, CRC(3d28134e) SHA1(45a257a0aca74e2ab36dd70097220d8be29cc87b) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0)
+ ROM_LOAD( "ctrpllrp.5e", 0x0000, 0x0800, CRC(1c4617be) SHA1(2b2b10f1256b4612e3e01ed1c8e2d7ccb6989f5d) )
+ ROM_LOAD( "ctrpllrp.5h", 0x0800, 0x0800, CRC(46f72fef) SHA1(daf334c78fdb73d43d524b733b763b290c602ae2) )
+ ROM_LOAD( "ctrpllrp.5f", 0x1000, 0x0800, CRC(ba9ec199) SHA1(626ab2eedf4c8d307dfad3b8863a67f8c34dda97) )
+ ROM_LOAD( "ctrpllrp.5j", 0x1800, 0x0800, CRC(41c09655) SHA1(cc639e660443b9dcb33f9aefe9af5d332591c466) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( dizzy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "dizzy.6j", 0x3000, 0x1000, CRC(bf05bf15) SHA1(9a440a7a67731553269ad72dc2340de1fb9a89a8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "dizzy.5e", 0x0000, 0x1000, CRC(f999a8d9) SHA1(4feecc8f06ea9149751f0f97828babca1bdf3fd4) )
+ ROM_LOAD( "dizzy.5f", 0x1000, 0x1000, CRC(7cb7b9b1) SHA1(3bd09964a2d49c65a3619ddfc3635066a7097328) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( eltonpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "eltonpac.5e", 0x0000, 0x1000, CRC(9c093e5b) SHA1(bfdd082a6f1e0819aeda2601f06dff90cb8e8f3f) )
+ ROM_LOAD( "eltonpac.5f", 0x1000, 0x1000, CRC(c2825641) SHA1(4ea373b18ec1fc7325f33dbe9f44ee93ad6f6cb4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( europac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "europac.6j", 0x3000, 0x1000, CRC(a4e82007) SHA1(577b44661de47dcffac7c06e7f9fa1e5d4e085ed) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "europac.5e", 0x0000, 0x1000, CRC(00208da4) SHA1(a7ef38f2c133681344d67634f8a7362f6f0712b3) )
+ ROM_LOAD( "europac.5f", 0x1000, 0x1000, CRC(0d36dabf) SHA1(50572528e230a37a413cdc9e2bd7f2ea76fffa09) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fasthang )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "fasthang.6f", 0x1000, 0x1000, CRC(1b1014bc) SHA1(c7ff86832ccd207ce8505291ae309ee0240d0586) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fastpop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacpopey.5f", 0x1000, 0x1000, CRC(af2b610b) SHA1(c787b1db588125f0770dc2bf4626ad22f0faee72) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fastpuck )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "fastpuck.6j", 0x3000, 0x1000, CRC(2e64a3ba) SHA1(f86a921173f32211b18d023c2701664d13ae23be) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( fpnleash )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "punleash.1", 0x0000, 0x1000, CRC(eddb20e7) SHA1(07f6cabac3c59c2e3f522da877e845b3ceb2cffb) )
+ ROM_LOAD( "punleash.2", 0x1000, 0x1000, CRC(57fe8b4d) SHA1(629800fe793b53c27ee8c84a2e49caf7fe056f28) )
+ ROM_LOAD( "punleash.3", 0x2000, 0x1000, CRC(94c63bb1) SHA1(872dbca70b45285dccfd0e24cb50225a5c3ac005) )
+ ROM_LOAD( "punleash.4", 0x3000, 0x1000, CRC(fe7734d5) SHA1(f246baab82ea8e9b3cfd3dc5911445ab08223c1f) )
+ ROM_LOAD( "punleash.5", 0x8000, 0x1000, CRC(ef155ffb) SHA1(c5bcd57c2a336fa8a018b192b8542954271f1bac) )
+ ROM_LOAD( "punleash.6", 0x9000, 0x1000, CRC(70d15899) SHA1(9a7cff5811b591211eb23cee125fd77263f8d4fe) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "fpnleash.5e", 0x0000, 0x1000, CRC(1f69d1d0) SHA1(8f3834358a074d0cb6c1d56e3b0e623193f8b9ec) )
+ ROM_LOAD( "punleash.5f", 0x1000, 0x1000, CRC(98d3d364) SHA1(f8023d1772d377d090a9bfebf194bbbce8643f1d) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "punleash.7f", 0x0000, 0x0020, CRC(357c2523) SHA1(f0c4cea06b17932cc15f6db2971406eaba3558b2) )
+ ROM_LOAD( "punleash.4a", 0x0020, 0x0100, CRC(5ff3b85a) SHA1(6b01b9c9302ab41fe83c140c3ff217d1d66773dd) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( fstpman2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "newpuck2.6j", 0x3000, 0x1000, CRC(0e3bdbde) SHA1(11679a3e60cb98ef56e9f0c349d421a72b7097f6) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hangly )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hangly2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly2.6j", 0x3000, 0x0800, CRC(51305374) SHA1(6197b606a0eedb11135d9f4f7a89aecc23fb2d33) )
+ ROM_LOAD( "hangly2.6p", 0x3800, 0x0800, CRC(427c9d4d) SHA1(917bc3d571cbdd24d88327ecabfb5b3f6d39af0a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmanh.5e", 0x0000, 0x1000, CRC(299fb17a) SHA1(ad97adc2122482a9018bacd137df9d8f409ddf85) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hangly3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "hangly3.6k", 0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "hangly3.6h", 0x2000, 0x0800, CRC(08419c4a) SHA1(7e5001adad401080c788737c1d2349f218750442) )
+ ROM_LOAD( "hangly3.6n", 0x2800, 0x0800, CRC(ab74b51f) SHA1(1bce8933ed7807eb7aca9670df8994f8d1a8b5b7) )
+ ROM_LOAD( "hangly3.6j", 0x3000, 0x0800, CRC(5039b082) SHA1(086a6ac4742734167d283b1121fce29d8ac4a6cd) )
+ ROM_LOAD( "hangly3.6p", 0x3800, 0x0800, CRC(931770d7) SHA1(78fcf88e07ec5126c12c3297b62ca388809e947c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "hangly3.5e", 0x0000, 0x0800, CRC(5f4be3cc) SHA1(eeb0e1e44549b99eab481d9ac016b4359e19fe30) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hanglyad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "hanglyad.5e", 0x0000, 0x1000, CRC(93fd3682) SHA1(792ddb541aeab304b5facfcf929c3bba18150346) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hanglyx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hangly2x )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly2.6j", 0x3000, 0x0800, CRC(51305374) SHA1(6197b606a0eedb11135d9f4f7a89aecc23fb2d33) )
+ ROM_LOAD( "hangly2.6p", 0x3800, 0x0800, CRC(427c9d4d) SHA1(917bc3d571cbdd24d88327ecabfb5b3f6d39af0a) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmodx.5e", 0x0000, 0x4000, CRC(a05bc552) SHA1(5c2350aeac14cafebfcb7ff012427b1d3c6adf62) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hangly3x )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "hangly3.6k", 0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "hangly3.6h", 0x2000, 0x0800, CRC(08419c4a) SHA1(7e5001adad401080c788737c1d2349f218750442) )
+ ROM_LOAD( "hangly3.6n", 0x2800, 0x0800, CRC(ab74b51f) SHA1(1bce8933ed7807eb7aca9670df8994f8d1a8b5b7) )
+ ROM_LOAD( "hangly3.6j", 0x3000, 0x0800, CRC(5039b082) SHA1(086a6ac4742734167d283b1121fce29d8ac4a6cd) )
+ ROM_LOAD( "hangly3.6p", 0x3800, 0x0800, CRC(931770d7) SHA1(78fcf88e07ec5126c12c3297b62ca388809e947c) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "hangly3x.5e", 0x0000, 0x4000, CRC(54abb087) SHA1(a57b59325172902c3fae57c5a23e588d5ac7b8ca) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hearts )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "hearts.5e", 0x0000, 0x1000, CRC(5be0a4e4) SHA1(7314e670c81debe4ae19bb5ff4da5718a63ef084) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hellowp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hellowp.6e", 0x0000, 0x00f3, CRC(699152c6) SHA1(cf8ec6a969177146ccc6155d896b693afbb70dd8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hm1000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm1000.5e", 0x0000, 0x1000, CRC(16d9f7ce) SHA1(a9ac72aa5e3dcaaa2e4d03b6ae372e81d77817f8) )
+ ROM_LOAD( "pm1000.5f", 0x1000, 0x1000, CRC(fd06d923) SHA1(a9d61bdcb6841bf07ce8ad08e1be2cf5ef349129) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hm2000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm2000.5e", 0x0000, 0x1000, CRC(cba39624) SHA1(d815cb5be44b3d29cd1bdd4b8c68484e5330e4a4) )
+ ROM_LOAD( "pm2000.5f", 0x1000, 0x1000, CRC(a2b31528) SHA1(69f1c4b34e581c0e6d75b9726cbefa08f8a97fdb) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmba5000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba3000.5e", 0x0000, 0x1000, CRC(5ebb61c5) SHA1(cfd491170d1d3d0c0632d5d81629e98cfd100fb6) )
+ ROM_LOAD( "pmba3000.5f", 0x1000, 0x1000, CRC(d9a055aa) SHA1(00c6867b70062672da3b8c254feff4354e35aa7a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmba7000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba6000.5e", 0x0000, 0x1000, CRC(7961ed4e) SHA1(595311b7a77d1379c9564d42a34581cc35a53875) )
+ ROM_LOAD( "pmba6000.5f", 0x1000, 0x1000, CRC(417080fd) SHA1(13e8e812bca25b64e7ce072d86189fd15b1882b0) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( hmbabymz )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmbamaz.5e", 0x0000, 0x1000, CRC(9a8cd8a1) SHA1(653d3c900b0be5e7ffe424207419bf86229b8c48) )
+ ROM_LOAD( "hmbabymz.5f", 0x1000, 0x1000, CRC(f0bd55bd) SHA1(310a375e3b3ec2766399418ce30233cc2263961e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmbluep )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm1000.5e", 0x0000, 0x1000, CRC(16d9f7ce) SHA1(a9ac72aa5e3dcaaa2e4d03b6ae372e81d77817f8) )
+ ROM_LOAD( "hmbluep.5f", 0x1000, 0x1000, CRC(ceb721be) SHA1(7eb60764bb7f9aa63a9f2a9a3052c2b988f5a530) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmgrenp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmgrenp.5e", 0x0000, 0x1000, CRC(5807a438) SHA1(8f4160627948747e92c3c5dc386068e4561fd9aa) )
+ ROM_LOAD( "hmgrenp.5f", 0x1000, 0x1000, CRC(1fcc0cf2) SHA1(8920525a7fccdc3fea2ee52687b4881ca84ebaad) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( hmhearts )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "hangly3.6k", 0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "hangly3.6h", 0x2000, 0x0800, CRC(08419c4a) SHA1(7e5001adad401080c788737c1d2349f218750442) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "hmhearts.6j", 0x3000, 0x0800, CRC(603b70b7) SHA1(a8e408e33fb16f0879793d416c3074dc48c875db) )
+ ROM_LOAD( "hmhearts.6p", 0x3800, 0x0800, CRC(71293b1f) SHA1(b507a74866d34ecf0e6d32c91f9b5655817f6c3f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacheart.5e", 0x0000, 0x0800, CRC(c62bbabf) SHA1(f6f28ae33c2ab274105283b22b49ad243780a95e) )
+ ROM_LOAD( "newpuc2.5h", 0x0800, 0x0800, CRC(777c70d3) SHA1(ed5ccbeb1102ec9f837577de3aa51317c32520d6) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "newpuc2.5j", 0x1800, 0x0800, CRC(7dc75a81) SHA1(d3fe1cad3b594052d8367685febb2335b0ad62f4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmpopey )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacpopey.5f", 0x1000, 0x1000, CRC(af2b610b) SHA1(c787b1db588125f0770dc2bf4626ad22f0faee72) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( hmplus )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacplus.5e", 0x0000, 0x1000, CRC(022c35da) SHA1(57d7d723c7b029e3415801f4ce83469ec97bb8a1) )
+ ROM_LOAD( "hmplus.5f", 0x1000, 0x1000, CRC(7a444bda) SHA1(71f93790843482d9389c6d66a7ee5196119185fb) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( homercid )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "homercid.6e", 0x0000, 0x1041, CRC(2768e80e) SHA1(aaf78f4a1bea4aba3e44275ccfbc2ee641a3b8ff) )
+ ROM_LOAD( "homercid.6f", 0x1000, 0x1000, CRC(3858d8b7) SHA1(44560196ca888a82669d94687c964373fd0ffc4d) )
+ ROM_LOAD( "homercid.6h", 0x2000, 0x1003, CRC(d61413d0) SHA1(a5ea1fdc50e2d185440e38a01837a6c5a5b89484) )
+ ROM_LOAD( "homercid.6j", 0x3000, 0x1003, CRC(e8b53076) SHA1(c8fe2c2c637a87356a95176bc333ca28f63ae00a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "homercid.5e", 0x0000, 0x1000, CRC(4879edc5) SHA1(abde239a818a7025e629e59490479da700d70538) )
+ ROM_LOAD( "homercid.5f", 0x1000, 0x1000, CRC(475e51c9) SHA1(478d1907f448f40f50b1b2ca1ddabc5b818e7003) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "homercid.7f", 0x0000, 0x0020, CRC(2b7e868a) SHA1(28976b3b7a2ea112da1d7af0366090f8a172dbb6) )
+ ROM_LOAD( "homercid.4a", 0x0020, 0x0100, CRC(9717a6be) SHA1(00497d00c45d48570de0ab6ca8fea42cdb38eb85) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( jacman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "jacman.6j", 0x3000, 0x1000, CRC(1f52ef8b) SHA1(0a803352a964de9567bc314f8ace1c612082e3d0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "jacman.5e", 0x0000, 0x1000, CRC(809bd73e) SHA1(81989a21d089eb76297926905729efcd69abeb87) )
+ ROM_LOAD( "jacman.5f", 0x1000, 0x1000, CRC(0509d3e6) SHA1(e589543b9a2f1c81115c03b4b88096ac84826e62) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( joyman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacheart.6e", 0x0000, 0x0800, CRC(d844b679) SHA1(c4486198b3126bb8e05a308c53787e51065f77ae) )
+ ROM_LOAD( "joyman.6k", 0x0800, 0x0800, CRC(ab9c8f29) SHA1(3753b8609c30d85d89acf745cf9303b77be440fd) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "joyman.6m", 0x1800, 0x0800, CRC(b3c8d32e) SHA1(8b336fca1300820308cd5c4efc60bf2ba4199302) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pacheart.6n", 0x2800, 0x0800, CRC(888f3c3e) SHA1(c2b5917bf13071131dd53ea76f0da86706db2d80) )
+ ROM_LOAD( "joyman.6j", 0x3000, 0x0800, CRC(00b553f8) SHA1(57f2e4a6da9f00935fead447b2123a8b95e5d672) )
+ ROM_LOAD( "joyman.6p", 0x3800, 0x0800, CRC(5d5ce992) SHA1(ced7ed39cfc7ec7b2c0459e275577976109ee82f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "joyman.5e", 0x0000, 0x0800, CRC(39b557bc) SHA1(0f602ec84cb25fced89699e430b95b5ae93c83bd) )
+ ROM_LOAD( "joyman.5h", 0x0800, 0x0800, CRC(33e0289e) SHA1(c1b910bdc61e560a8c34298deb11401f718e7330) )
+ ROM_LOAD( "joyman.5f", 0x1000, 0x0800, CRC(338771a6) SHA1(7cd68cc428986255d0de29aae894900519e7fda5) )
+ ROM_LOAD( "joyman.5j", 0x1800, 0x0800, CRC(f4f0add5) SHA1(d71c54ef55a755ec1316623d183b4f615ef7c055) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* No gfx roms and no proms included. Using puckman ones. Dumped by Andy Welburn. */
+ROM_START( jpmmunch )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck1.6e", 0x0000, 0x0800, CRC(2c0fa0ab) SHA1(37680e4502771ae69d51d07ce43f65b9b2dd2a49) )
+ ROM_LOAD( "pmheart.6k", 0x0800, 0x0800, CRC(afeca2f1) SHA1(1e6d6c75eeb3a354ce2dc88da62caf9e7d53d0cb) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "puckman.6m", 0x1800, 0x0800, CRC(d3e8914c) SHA1(c2f00e1773c6864435f29c8b7f44f2ef85d227d3) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pmheart.6n", 0x2800, 0x0800, CRC(93f344c5) SHA1(987c7fa18a774a47c045fa1dc7dff37457cb8983) )
+ ROM_LOAD( "jpmmunch.6j", 0x3000, 0x0800, CRC(258580a2) SHA1(c594329963215971dba7cd857dfde5323f610dba) )
+ ROM_LOAD( "jpmmunch.6p", 0x3800, 0x0800, CRC(b4d7ee8c) SHA1(38dfea4443f13c15ed17e0eb8f7ca24ce14d6ca8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( mazeman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "mazeman.6f", 0x1000, 0x1000, CRC(77e44852) SHA1(01c2e54cf9adc3bd92ab02eaa471638d8f17754d) )
+ ROM_LOAD( "mazeman.6h", 0x2000, 0x1000, CRC(6d16a528) SHA1(3ef42b46564bf3b8347f6bddb1940368a23fa515) )
+ ROM_LOAD( "mazeman.6j", 0x3000, 0x1000, CRC(3c3ff208) SHA1(2c6a8f9e3f130c3c0a9fa535b1ff76ac26a07f9f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "mazeman.5e", 0x0000, 0x1000, CRC(38870a32) SHA1(2b65a6309b204b89dcb6329e43f55301ecf69227) )
+ ROM_LOAD( "mazeman.5f", 0x1000, 0x1000, CRC(1fd18b80) SHA1(2b10b572840e5977adda490d5fbddef98b65575e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( namcosil )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "namcosil.6f", 0x1000, 0x1000, CRC(c5ec2352) SHA1(86178b16dabb90005b132febc1a261651a73018d) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "namcosil.6j", 0x3000, 0x1000, CRC(57a07f6e) SHA1(8a7a1d4662e4fc5c5374ad1cad09fd4da1f8398a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuc2 )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "newpuc2.6e", 0x0000, 0x0800, CRC(69496a98) SHA1(2934051d6305cc3654951bc1aacf2b8902f463fe) )
+ ROM_LOAD( "newpuc2.6k", 0x0800, 0x0800, CRC(158fc01c) SHA1(2f7a1e24d259fdc716ef8e7354a87780595f3c4e) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "newpuc2.6h", 0x2000, 0x0800, CRC(81719de8) SHA1(e886d04ac0e20562a4bd2df7676bdf9aa98665d7) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "newpuc2.6j", 0x3000, 0x0800, CRC(e6675736) SHA1(85d0bb79bc96acbc67fcb70ff4d453c870a6c8ea) )
+ ROM_LOAD( "newpuc2.6p", 0x3800, 0x0800, CRC(1f81e765) SHA1(442d8a82e79ae842f1ffb46369c632c1d0b83161) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0)
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "newpuc2.5h", 0x0800, 0x0800, CRC(777c70d3) SHA1(ed5ccbeb1102ec9f837577de3aa51317c32520d6) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "newpuc2.5j", 0x1800, 0x0800, CRC(7dc75a81) SHA1(d3fe1cad3b594052d8367685febb2335b0ad62f4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuc2b )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "newpuc2.6k", 0x0800, 0x0800, CRC(158fc01c) SHA1(2f7a1e24d259fdc716ef8e7354a87780595f3c4e) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "newpuc2b.6h", 0x2000, 0x0800, CRC(f5e4b2b1) SHA1(68464f61cc50931f6cd4bb493dd703c139500825) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "newpuc2b.6j", 0x3000, 0x0800, CRC(f068e009) SHA1(a30763935e116559d535654827230bb21a5734bb) )
+ ROM_LOAD( "newpuc2b.6p", 0x3800, 0x0800, CRC(1fadcc2f) SHA1(2d636cfc2b52b671ac5a26a03b1195e2cf8d4718) )
+
+ ROM_REGION( 0x2000, "gfx1" , 0)
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "newpuc2.5h", 0x0800, 0x0800, CRC(777c70d3) SHA1(ed5ccbeb1102ec9f837577de3aa51317c32520d6) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "newpuc2.5j", 0x1800, 0x0800, CRC(7dc75a81) SHA1(d3fe1cad3b594052d8367685febb2335b0ad62f4) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This was from the Italian dumping team, called "puckmanbootleg.zip". They did not dump the 2nd, 4th, 6th, 8th
+ program roms, so I have used the ones from pacheart for now. Also, it has the standard maze instead of the
+ newpuck one - but this could be correct? */
+ROM_START( newpuc1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck1.6e", 0x0000, 0x0800, CRC(2c0fa0ab) SHA1(37680e4502771ae69d51d07ce43f65b9b2dd2a49) )
+ ROM_LOAD( "pacheart.6k", 0x0800, 0x0800, CRC(b9152a38) SHA1(b6be2cb6bc7dd123503eb6bf1165dd1c99456813) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "pacheart.6m", 0x1800, 0x0800, CRC(842d6574) SHA1(40e32d09cc8d701eb318716493a68cf3f95d3d6d) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pacheart.6n", 0x2800, 0x0800, CRC(888f3c3e) SHA1(c2b5917bf13071131dd53ea76f0da86706db2d80) )
+ ROM_LOAD( "newpuck1.6j", 0x3000, 0x0800, CRC(565687c6) SHA1(9ee8e8197e87e468669279e738fe518e5480363c) )
+ ROM_LOAD( "pacheart.6p", 0x3800, 0x0800, CRC(1a21a381) SHA1(d5367a327d19fb57ba5e484bd4fda1b10953c040) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "newpuck1.5e", 0x0000, 0x0800, CRC(3ed40275) SHA1(bf56f9a21bc1dacee438d88eb5bc59f20906b00c) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuck2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "newpuck2.6j", 0x3000, 0x1000, CRC(0e3bdbde) SHA1(11679a3e60cb98ef56e9f0c349d421a72b7097f6) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuc2x )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "newpuc2.6e", 0x0000, 0x0800, CRC(69496a98) SHA1(2934051d6305cc3654951bc1aacf2b8902f463fe) )
+ ROM_LOAD( "newpuc2.6k", 0x0800, 0x0800, CRC(158fc01c) SHA1(2f7a1e24d259fdc716ef8e7354a87780595f3c4e) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "newpuc2.6h", 0x2000, 0x0800, CRC(81719de8) SHA1(e886d04ac0e20562a4bd2df7676bdf9aa98665d7) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "newpuc2.6j", 0x3000, 0x0800, CRC(e6675736) SHA1(85d0bb79bc96acbc67fcb70ff4d453c870a6c8ea) )
+ ROM_LOAD( "newpuc2.6p", 0x3800, 0x0800, CRC(1f81e765) SHA1(442d8a82e79ae842f1ffb46369c632c1d0b83161) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "newpuc2x.5e", 0x0000, 0x4000, CRC(0a64f4c8) SHA1(1f3456b14b2b847869db6eeb3c115e3042b24672) )
+ ROM_LOAD( "newpuc2x.5f", 0x4000, 0x4000, CRC(4ba7164c) SHA1(902e6f0bfeed8f40b83cf0eb7de6440d91ee811d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuck3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "newpuck3.6h", 0x2000, 0x1000, CRC(ee3c8685) SHA1(17d80ea2766370dcec04070de67cde69d2c3b04b) )
+ ROM_LOAD( "newpuck3.6j", 0x3000, 0x1000, CRC(6ee64463) SHA1(5b692313dbe448b6b016f9dd2403757e16578049) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "newpuck3.5e", 0x0000, 0x1000, CRC(6209b614) SHA1(23434b89f25d6164dca619192a282c60a63418e1) )
+ ROM_LOAD( "newpuck3.5f", 0x1000, 0x1000, CRC(923515bc) SHA1(a3605a632f4b47616e0c6e4e1cdf1ef9c71bb0e0) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( newpuckx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "fastpuck.6j", 0x3000, 0x1000, CRC(2e64a3ba) SHA1(f86a921173f32211b18d023c2701664d13ae23be) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( nwpuc2b )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "nwpuc2b.6e", 0x0000, 0x1000, CRC(532bd09f) SHA1(ed362ae0b38a00747128046a14d68d2a676953ae) )
+ ROM_LOAD( "nwpuc2b.6f", 0x1000, 0x1000, CRC(b9062f57) SHA1(cdfb2264fc5874cd18848fde936ea1314ce74cba) )
+ ROM_LOAD( "nwpuc2b.6h", 0x2000, 0x1000, CRC(519b3c57) SHA1(cc03d67035f9d590fadef899d9a2d978a4978b39) )
+ ROM_LOAD( "nwpuc2b.6j", 0x3000, 0x1000, CRC(154cc118) SHA1(e5bd6033653edcfadac467573613e1b7dbf9eb44) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "nwpuc2b.5e", 0x0000, 0x1000, CRC(58357313) SHA1(a1778318e07510eeb5b23a5d650f5a5f9fc0fb5a) )
+ ROM_LOAD( "nwpuc2b.5f", 0x1000, 0x1000, CRC(4b044c87) SHA1(3e1a497563918d1ddd730efb9622abe650a258a1) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( nwpuc2bx )
+ ROM_REGION( 0x10000, "maincpu",0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "newpuc2.6k", 0x0800, 0x0800, CRC(158fc01c) SHA1(2f7a1e24d259fdc716ef8e7354a87780595f3c4e) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "nwepuc2b.6h", 0x2000, 0x0800, CRC(f5e4b2b1) SHA1(68464f61cc50931f6cd4bb493dd703c139500825) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "newpuc2b.6j", 0x3000, 0x0800, CRC(f068e009) SHA1(a30763935e116559d535654827230bb21a5734bb) )
+ ROM_LOAD( "newpuc2b.6p", 0x3800, 0x0800, CRC(1fadcc2f) SHA1(2d636cfc2b52b671ac5a26a03b1195e2cf8d4718) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "newpuc2x.5e", 0x0000, 0x4000, CRC(0a64f4c8) SHA1(1f3456b14b2b847869db6eeb3c115e3042b24672) )
+ ROM_LOAD( "newpuc2x.5f", 0x4000, 0x4000, CRC(4ba7164c) SHA1(902e6f0bfeed8f40b83cf0eb7de6440d91ee811d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( nwpuckxx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck2.6e", 0x0000, 0x1000, CRC(a8ae23c5) SHA1(1481a4f083b563350744f9d25b1bcd28073875d6) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "newpuck2.6h", 0x2000, 0x1000, CRC(197443f8) SHA1(119aab12a9e1052c7b9a1f81e563740b41429a8c) )
+ ROM_LOAD( "fastpuck.6j", 0x3000, 0x1000, CRC(2e64a3ba) SHA1(f86a921173f32211b18d023c2701664d13ae23be) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pac2600 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pac2600.6f", 0x1000, 0x1000, CRC(0a27d11d) SHA1(b7b8da84b3a472974ed2f53a82d56bc8e81cef5c) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pac2600.6j", 0x3000, 0x1000, CRC(ab23fe0c) SHA1(1ae9882ee1c33ea18cf40c2ef5563cc3b546dcd5) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pac2600.5e", 0x0000, 0x1000, CRC(87d8f5ce) SHA1(fe421ee0f5ef70b56f0760473b003a886bed3d72) )
+ ROM_LOAD( "pac2600.5f", 0x1000, 0x1000, CRC(91bd671f) SHA1(ae1745a03090a747baf78f8554ea8620fa2b9d81) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pac2600a )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pac2600a.6j", 0x3000, 0x1000, CRC(d168bdfa) SHA1(0edc9c435385f9bce1939ad5ea41225ddf1db16f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pac2600a.5e", 0x0000, 0x1000, CRC(20e327e3) SHA1(857e4d67ae9f2f9b9b60fd4f9c1327b5056e3705) )
+ ROM_LOAD( "pac2600a.5f", 0x1000, 0x1000, CRC(feb98199) SHA1(66a84d5813de4441e6dd70e91fbdb482f999da8f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacbaby )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby.6j", 0x3000, 0x1000, CRC(4e4ac798) SHA1(deab2d93a678abee576c891bdfb7ab93d5718792) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacbaby2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby2.6j", 0x3000, 0x1000, CRC(742453ba) SHA1(21707992ea3489c8bc95b14db33f62b6aaa24eb4) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacbaby3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby3.6j", 0x3000, 0x1000, CRC(b82f2b73) SHA1(63619220b9ed4dfeb4f462b41d9685870716590a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacbell )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacbell.6j", 0x3000, 0x1000, CRC(4b428215) SHA1(acdcc4d7ccfc58c6c0473e8ee548b5e02dcafcfd) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacelec )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacelec.6j", 0x3000, 0x1000, CRC(9e5c763d) SHA1(df56eb705c7dfaf00b084aa6744d7fd5fa4f47d3) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacfnt )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacfnt.5e", 0x0000, 0x1000, CRC(f2561d07) SHA1(1b971c2a907673dac0bf676f599a8a20fcb4a01b) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacheart )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacheart.6e", 0x0000, 0x0800, CRC(d844b679) SHA1(c4486198b3126bb8e05a308c53787e51065f77ae) )
+ ROM_LOAD( "pacheart.6k", 0x0800, 0x0800, CRC(b9152a38) SHA1(b6be2cb6bc7dd123503eb6bf1165dd1c99456813) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "pacheart.6m", 0x1800, 0x0800, CRC(842d6574) SHA1(40e32d09cc8d701eb318716493a68cf3f95d3d6d) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pacheart.6n", 0x2800, 0x0800, CRC(888f3c3e) SHA1(c2b5917bf13071131dd53ea76f0da86706db2d80) )
+ ROM_LOAD( "pacheart.6j", 0x3000, 0x0800, CRC(f5265c10) SHA1(9a320790d7a03fd6192a92d30b3e9c754bbc6a9d) )
+ ROM_LOAD( "pacheart.6p", 0x3800, 0x0800, CRC(1a21a381) SHA1(d5367a327d19fb57ba5e484bd4fda1b10953c040) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacheart.5e", 0x0000, 0x0800, CRC(c62bbabf) SHA1(f6f28ae33c2ab274105283b22b49ad243780a95e) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacinvis )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacinvis.6j", 0x3000, 0x1000, CRC(1b4e96dc) SHA1(f26207c9b8277078a7c428f35938164ea6326f21) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacjail )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjail.6j", 0x3000, 0x1000, CRC(cc31f185) SHA1(cd184a55f775bc9a70d0bfa932d2993b8987135b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacjr1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjr1.6j", 0x3000, 0x1000, CRC(fcfb21a3) SHA1(74c103f78cb75cb01ec4b611e341ed3d37fb0b94) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacjr1.5e", 0x0000, 0x1000, CRC(9f3c32d4) SHA1(e7e40207f2a70768ce38cbb1e62c02ca4bed3a14) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacjr2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjr2.6j", 0x3000, 0x1000, CRC(cc26c905) SHA1(213adaaa54cd084dbf73bd6d6ed9f9f4e4a03a5f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacjr1.5e", 0x0000, 0x1000, CRC(9f3c32d4) SHA1(e7e40207f2a70768ce38cbb1e62c02ca4bed3a14) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacjr3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjr3.6j", 0x3000, 0x1000, CRC(d4d8cb9b) SHA1(06bcf32e5fe9af7161178bd6295a6ea48f791f37) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacjr1.5e", 0x0000, 0x1000, CRC(9f3c32d4) SHA1(e7e40207f2a70768ce38cbb1e62c02ca4bed3a14) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacjr4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjr4.6j", 0x3000, 0x1000, CRC(42ca024b) SHA1(567331f4050fc0de5d1fda304fa27556c86968db) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacjr1.5e", 0x0000, 0x1000, CRC(9f3c32d4) SHA1(e7e40207f2a70768ce38cbb1e62c02ca4bed3a14) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacm255 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacman25 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "namcosil.6f", 0x1000, 0x1000, CRC(c5ec2352) SHA1(86178b16dabb90005b132febc1a261651a73018d) )
+ ROM_LOAD( "pacman25.3", 0x2000, 0x1000, CRC(92cd89b9) SHA1(c3a0141480341c550a889b58692c8c90b322ee67) )
+ ROM_LOAD( "pacman25.4", 0x3000, 0x1000, CRC(f7193845) SHA1(6d190cf6e76520b8b8c97e6e3a817c4a142003ba) )
+ ROM_LOAD( "pacman25.5", 0x8000, 0x1000, CRC(19a22304) SHA1(6cc0e4921148b7a7eedf5d807bd63062b745e1c6) )
+ ROM_LOAD( "pacman25.6", 0x9000, 0x1000, CRC(7cdbd912) SHA1(b19868bd5da3163e03320e6de0428b22b8e02d80) )
+ ROM_LOAD( "pacman25.7", 0xa000, 0x1000, CRC(c626ea9c) SHA1(3cd3f20e002845937a43f323b685425c95881d9e) )
+ ROM_LOAD( "pacman25.8", 0xb000, 0x1000, CRC(f5ba954d) SHA1(eba18f9a7f6d50f167ed37bff0adec43f52b49a0) )
+ /* This colour table is configurable to whatever you want */
+ ROM_FILL(0x8fc0, 1, 0x01) // level 1
+ ROM_FILL(0x8fc1, 1, 0x11) // level 2
+ ROM_FILL(0x8fc2, 1, 0x03)
+ ROM_FILL(0x8fc3, 1, 0x12)
+ ROM_FILL(0x8fc4, 1, 0x09)
+ ROM_FILL(0x8fc5, 1, 0x1f)
+ ROM_FILL(0x8fc6, 1, 0x0e)
+ ROM_FILL(0x8fc7, 1, 0x14)
+ ROM_FILL(0x8fc8, 1, 0x15)
+ ROM_FILL(0x8fc9, 1, 0x16)
+ ROM_FILL(0x8fca, 1, 0x17)
+ ROM_FILL(0x8fcb, 1, 0x18)
+ ROM_FILL(0x8fcc, 1, 0x10)
+ ROM_FILL(0x8fcd, 1, 0x1d)
+ ROM_FILL(0x8fce, 1, 0x1f)
+ ROM_FILL(0x8fcf, 1, 0x07) // level 16
+ ROM_COPY( "maincpu", 0x8fc0, 0x8fd0, 0x10 ) /* copy the above to levels 17-32 */
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman25.5e", 0x0000, 0x1000, CRC(11d47ae1) SHA1(fbd47432f258e56f1323766d5b2844f4a2e6e7ac) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacman3d )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman3d.6f", 0x1000, 0x1000, CRC(96364259) SHA1(ec2f36a44fd0c13dfd7dc571b9499bc9dbaa247d) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman3d.6j", 0x3000, 0x1000, CRC(959e930e) SHA1(0ef24017be05ddf85248c4d00f0e21cbf658f78c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman3d.5e", 0x0000, 0x1000, CRC(aa203d45) SHA1(7d2fb9bc8718601efc33d2469452a08018167e60) )
+ ROM_LOAD( "pacman3d.5f", 0x1000, 0x1000, CRC(d1830540) SHA1(5d276774997e3be8fc9c21d55562288acd1cffcc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacman6 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "pacman6.map", 0x8000, 0x1000, CRC(de753fd9) SHA1(467cd6dd572a3e6f0b2e0120d520df919433655a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmulti.5e", 0x0000, 0x1000, CRC(46cdda4a) SHA1(2c38050a4f5d0c9e1b4f3e054dcac25cde63ae2a) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmanf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmanfx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacmanf.6f", 0x1000, 0x1000, CRC(720dc3ee) SHA1(7224d7acfa0144b681c71d7734a7337189835361) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This set has the fixes proposed by Don Hodges at the pages:
+ http://donhodges.com/how_high_can_you_get2.htm
+ http://donhodges.com/pacman_pinky_explanation.htm
+ These are: AI fixes for Pinky and Inky; fix for the kill screen on level 256.
+ Patches invented by Don Hodges; coded into a ROM by Krick. */
+ROM_START( pacmanp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacmanp.6h", 0x2000, 0x1000, CRC(65625778) SHA1(8d29d46cff897a4d89367a3cc02627bcee1ef38e) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmanx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmar )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmar.6j", 0x3000, 0x1000, CRC(b208c7dc) SHA1(d2e199936ab0fc3de80f7c86def50c03da8c1684) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmar.5e", 0x0000, 0x1000, CRC(7ccdfa59) SHA1(ed8e7f2e7b496a6f3246e1cc3966382e748ab1c3) )
+ ROM_LOAD( "pacmar.5f", 0x1000, 0x1000, CRC(51af9fc5) SHA1(0fe657bee3a811043663595f7f9e7e05cc71da84) )
+ ROM_COPY( "gfx1", 0x1b00, 0x1c00, 0x40 ) /* show mario at start of level */
+
+ PACMAN_PROMS
+ROM_END
+
+// extra keys: G = jump ; F = sound fx on/off ; R = music on/off
+ROM_START( pacminer )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacminer.6e", 0x0000, 0x1000, CRC(11dee14e) SHA1(1aeb94299a33daa9b51fdab3c0abea98858cc7dd) )
+ ROM_LOAD( "pacminer.6f", 0x1000, 0x1000, CRC(8c449bd7) SHA1(84233296683321f71fdef604ca19bfffd97e993c) )
+ ROM_LOAD( "pacminer.6h", 0x2000, 0x1000, CRC(a0e62570) SHA1(654a71144eae3c78d7baaeb9119aad0ece500e60) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacminer.5e", 0x0000, 0x1000, CRC(9b3cc7cd) SHA1(9bfb71e71f7f61e26d23e6370d684cdc6c910899) )
+ ROM_LOAD( "pacminer.5f", 0x1000, 0x1000, CRC(c1b2dc90) SHA1(3a089696bab9f3ff39e09c84117d22b861ddec40) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmini )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmini.6j", 0x3000, 0x1000, CRC(5e04f9c5) SHA1(1423a3698812fcfdb8537a528236278578864afb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmini.5e", 0x0000, 0x1000, CRC(5520b393) SHA1(5775a771b29efa5a8852310c36f1c8f68eec65a8) )
+ ROM_LOAD( "pacmini.5f", 0x1000, 0x1000, CRC(30e6024c) SHA1(51c1f9074091c053437a25ef1c6e9ee63e9b5154) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmini2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmini2.6j", 0x3000, 0x1000, CRC(092dd5fa) SHA1(c016da8a22901fc4d441c94a3fecdd60d11f5c97) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmini2.5e", 0x0000, 0x1000, CRC(130eff7b) SHA1(ab29362b827591acb4204639c0e323dabf2bc767) )
+ ROM_LOAD( "pacmini.5f", 0x1000, 0x1000, CRC(30e6024c) SHA1(51c1f9074091c053437a25ef1c6e9ee63e9b5154) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmn6m2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "pacmn6m2.map", 0x8000, 0x1000, CRC(aadee235) SHA1(0f8e4c26c2804033409dcdb5032d10fa650edc75) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmn6m2.5e", 0x0000, 0x1000, CRC(60ada878) SHA1(5340d1cb8cf5f7f5fc2bc5e2df4ca0fe209b77e9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmod )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacmanh.6e", 0x0000, 0x1000, CRC(3b2ec270) SHA1(48fc607ad8d86249948aa377c677ae44bb8ad3da) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacmanh.6h", 0x2000, 0x1000, CRC(18811780) SHA1(ab34acaa3dbcafe8b20c2197f36641e471984487) )
+ ROM_LOAD( "pacmanh.6j", 0x3000, 0x1000, CRC(5c96a733) SHA1(22ae15a6f088e7296f77c7487a350c4bd102f00e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmanh.5e", 0x0000, 0x1000, CRC(299fb17a) SHA1(ad97adc2122482a9018bacd137df9d8f409ddf85) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmodx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacmanh.6e", 0x0000, 0x1000, CRC(3b2ec270) SHA1(48fc607ad8d86249948aa377c677ae44bb8ad3da) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacmanh.6h", 0x2000, 0x1000, CRC(18811780) SHA1(ab34acaa3dbcafe8b20c2197f36641e471984487) )
+ ROM_LOAD( "pacmanh.6j", 0x3000, 0x1000, CRC(5c96a733) SHA1(22ae15a6f088e7296f77c7487a350c4bd102f00e) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmodx.5e", 0x0000, 0x4000, CRC(a05bc552) SHA1(5c2350aeac14cafebfcb7ff012427b1d3c6adf62) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacms1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms1.6j", 0x3000, 0x1000, CRC(c5da3887) SHA1(2a65b31891bc19fc0fbdace39e853fff6c4227eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacms2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms2.6j", 0x3000, 0x1000, CRC(b0a107ea) SHA1(86b8b7cb7e90b0de95bc9b8e3b98bcc46992578e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacms3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms3.6j", 0x3000, 0x1000, CRC(c7d8325a) SHA1(bf72a2d7b20d76e521cf45fbe1b0ab762daa8106) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacms4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms4.6j", 0x3000, 0x1000, CRC(7b63ff9b) SHA1(84c167878ca4a1a1d79c397438defc8dcc6326f7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmsa1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa1.6j", 0x3000, 0x1000, CRC(07163b97) SHA1(fdfbca327a2c3f69b4478b1e3ca9c8ed71605582) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmsa2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa2.6j", 0x3000, 0x1000, CRC(15e83c24) SHA1(ebe4d476104bbd037a1b5fe5783c0b77229ca707) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmsa3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa3.6j", 0x3000, 0x1000, CRC(5762f9cf) SHA1(b570468372a9520929513425523fdae734d4acfc) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmsa4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa4.6j", 0x3000, 0x1000, CRC(d9c2a669) SHA1(2f82405d297f35cc13199e1671cfa835dd598e9c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacms1.5e", 0x0000, 0x1000, CRC(7394868b) SHA1(832c44cf91251ebc1f7f6706ca71aa41cedc81e7) )
+ ROM_LOAD( "pacms1.5f", 0x1000, 0x1000, CRC(ce1a3264) SHA1(04fb1954ad6d60ddcd515f9c30ece1abfe2455cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacmulti )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacmulti.6e", 0x0000, 0x1000, CRC(cfb721a8) SHA1(028e508a9c11eab508452ffc644730894adf388c) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacmulti.6h", 0x2000, 0x1000, CRC(e55d5230) SHA1(b764e85871cf8bb96a4ee7d0f3df204adfd4da5e) )
+ ROM_LOAD( "pacmulti.6j", 0x3000, 0x1000, CRC(29ba4b53) SHA1(f907641bb583342fa19f02de23639ba730123792) )
+ ROM_LOAD( "pacmulti.8", 0x8000, 0x1000, CRC(5a4b59dc) SHA1(09b21036cf40decf4ee00898eb44673599c65b05) )
+ ROM_LOAD( "pacmulti.9", 0x9000, 0x1000, CRC(3b939b12) SHA1(40333555af024f505064018a9b76dd284ecbf9a6) )
+ ROM_FILL(0x3f83, 3, 0) /* remove unneeeded subroutine call - this fixes a major bug */
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmulti.5e", 0x0000, 0x1000, CRC(46cdda4a) SHA1(2c38050a4f5d0c9e1b4f3e054dcac25cde63ae2a) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacplus )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacplus.5e", 0x0000, 0x1000, CRC(022c35da) SHA1(57d7d723c7b029e3415801f4ce83469ec97bb8a1) )
+ ROM_LOAD( "pacplus.5f", 0x1000, 0x1000, CRC(4de65cdd) SHA1(9c0699204484be819b77f0b212c792fe9e9fae5d) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pacplusc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplusc.cpu", 0x0000, 0x4000, CRC(a0d25591) SHA1(0c7e1eb93762f9bb487df95c14ea986855529ce3) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacplus.5e", 0x0000, 0x1000, CRC(022c35da) SHA1(57d7d723c7b029e3415801f4ce83469ec97bb8a1) )
+ ROM_LOAD( "pacplus.5f", 0x1000, 0x1000, CRC(4de65cdd) SHA1(9c0699204484be819b77f0b212c792fe9e9fae5d) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pacplusx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacplusx.5e", 0x0000, 0x4000, CRC(06b08556) SHA1(982329d9568ee1a6edb8a1ed39686a33f65a1411) )
+ ROM_LOAD( "pacplusx.5f", 0x4000, 0x4000, CRC(57e9f865) SHA1(e40f5a34b597e32bbc230ae3ad5f32cdbadf2438) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pacpopey )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacpopey.5f", 0x1000, 0x1000, CRC(af2b610b) SHA1(c787b1db588125f0770dc2bf4626ad22f0faee72) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacrab )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacrab.1", 0x0000, 0x1000, CRC(bb14430f) SHA1(80c632cc611e6cf774cc594a833916296bbbfccc) )
+ ROM_LOAD( "pacrab.2", 0x1000, 0x1000, CRC(f3f5a91b) SHA1(38d912661cf95c6234b0d3650c2b6be8df3003f0) )
+ ROM_LOAD( "pacrab.3", 0x2000, 0x1000, CRC(44caab2a) SHA1(10aaa38a720266739add8d2c54a4785ed133af0d) )
+ ROM_LOAD( "pacrab.4", 0x3000, 0x1000, CRC(25523534) SHA1(e0272e5a8717ef95fd2d593597af4e5011081eca) )
+ ROM_LOAD( "pacrab.5", 0x8000, 0x1000, CRC(af3985c4) SHA1(fb2e472b23cea56bf49ba2691a6cdeee4629a1b7) )
+ ROM_LOAD( "pacrab.6", 0x9000, 0x1000, CRC(3389fe5a) SHA1(394df6145614083c16cfe606adb0faca8c6a7a09) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacrab.5e", 0x0000, 0x1000, CRC(f33761a4) SHA1(401d752eacb60f2c26aae5cf6079e2bf54a8260a) )
+ ROM_LOAD( "pacrab.5f", 0x1000, 0x1000, CRC(60e1a3b7) SHA1(962b307f9fa3f3abde68507914fda78d5560f15b) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacshuf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacshuf.6j", 0x3000, 0x1000, CRC(55cc4d87) SHA1(1a05670c4fd09b4155941aa1ea90a5719a3e7ebb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacsnoop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacsnoop.6e", 0x0000, 0x1000, CRC(FA536307) SHA1(55742123DE6EF87E1DEEF31DC75744B98129AA9E) )
+ ROM_LOAD( "pacsnoop.6f", 0x1000, 0x1000, CRC(30EA615C) SHA1(AFB953167AA8060DC60173F3DE065C07FD933CC1) )
+ ROM_LOAD( "pacsnoop.6h", 0x2000, 0x1000, CRC(25DA6440) SHA1(93414E82442044324AC5475A45FB124DA70E5D6F) )
+ ROM_LOAD( "pacsnoop.6j", 0x3000, 0x1000, CRC(A9594951) SHA1(5C4FA744FDCC3B0EAD7900B079A13297D16A996F) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0C944964) SHA1(06EF227747A440831C9A3A613B76693D52A2F0A9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958FEDF9) SHA1(4A937AC02216EA8C96477D4A15522070507FB599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacspeed )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacspeed.6j", 0x3000, 0x1000, CRC(0e7946d1) SHA1(cea3440a305ec05dab197dba7ac8428db0d5e2f7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacweird )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "pacweird.map", 0x8000, 0x1000, CRC(92fac825) SHA1(05865bc5b84e0c100e358433c7d151c3918c5f19) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacweird.5e", 0x0000, 0x1000, CRC(11077f3e) SHA1(1f7a52a33abfc8650d5d6c685fd51039a467bf72) )
+ ROM_LOAD( "pacweird.5f", 0x1000, 0x1000, CRC(7c213ab4) SHA1(fd76db379a32d5102cd2a6afff0bfe9a4afbc3b5) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pacwf ) // Weird Fruit
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacwf.6j", 0x3000, 0x1000, CRC(a13ce3ea) SHA1(6562ca3e337bd95edb2ebeb6b7fb7e219799e429) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacwf.5e", 0x0000, 0x1000, CRC(f524b277) SHA1(91242ead3d1852241d030975228533086bc3539e) )
+ ROM_LOAD( "pacwf.5f", 0x1000, 0x1000, CRC(66ec2c6c) SHA1(b22e2f3ba5a603cea938533dd05fced84d42f8d9) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pcrunchy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pcrunchy.6j", 0x3000, 0x1000, CRC(c21c6c52) SHA1(c63212f51c6bf49e76b3ca7553a29e3371c4fa83) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pengman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pengman.6j", 0x3000, 0x1000, CRC(37e7f3ba) SHA1(f9b476d9389fdd8171b443e177e05fae2052024b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pengman.5e", 0x0000, 0x1000, CRC(02f5f5e6) SHA1(029328f78f34330e90ad4407172b318a45017cac) )
+ ROM_LOAD( "pengman.5f", 0x1000, 0x1000, CRC(5cd3db2e) SHA1(808655f543fa83762a68e13adcf4a7091d07173f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pheartb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuc2.6e", 0x0000, 0x0800, CRC(69496a98) SHA1(2934051d6305cc3654951bc1aacf2b8902f463fe) )
+ ROM_LOAD( "newpuc2.6k", 0x0800, 0x0800, CRC(158fc01c) SHA1(2f7a1e24d259fdc716ef8e7354a87780595f3c4e) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "newpuc2.6m", 0x1800, 0x0800, CRC(70810ccf) SHA1(3941678606aab1e53356a6781e24d84e83cc88ce) )
+ ROM_LOAD( "pheartb.6h", 0x2000, 0x0800, CRC(b42416d1) SHA1(3714efae24f35fe63dd89f0d7b82e4564c5405d3) )
+ ROM_LOAD( "newpuc2.6n", 0x2800, 0x0800, CRC(3f250c58) SHA1(53bf2270c26f10f7e97960cd4c96e09e16b9bdf3) )
+ ROM_LOAD( "pheartb.6j", 0x3000, 0x0800, CRC(01d13602) SHA1(dfec0784d005f82a6b2ee55923b510d2daeb9965) )
+ ROM_LOAD( "newpuc2.6p", 0x3800, 0x0800, CRC(1f81e765) SHA1(442d8a82e79ae842f1ffb46369c632c1d0b83161) )
+ ROM_FILL( 0x3fd5, 1, 0xc9 ) /* allow protection check to work - 0x36 or 0xc9 is ok */
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacheart.5e", 0x0000, 0x0800, CRC(c62bbabf) SHA1(f6f28ae33c2ab274105283b22b49ad243780a95e) )
+ ROM_LOAD( "newpuc2.5h", 0x0800, 0x0800, CRC(777c70d3) SHA1(ed5ccbeb1102ec9f837577de3aa51317c32520d6) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "newpuc2.5j", 0x1800, 0x0800, CRC(7dc75a81) SHA1(d3fe1cad3b594052d8367685febb2335b0ad62f4) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pheartx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacheart.6e", 0x0000, 0x0800, CRC(d844b679) SHA1(c4486198b3126bb8e05a308c53787e51065f77ae) )
+ ROM_LOAD( "pacheart.6k", 0x0800, 0x0800, CRC(b9152a38) SHA1(b6be2cb6bc7dd123503eb6bf1165dd1c99456813) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "pacheart.6m", 0x1800, 0x0800, CRC(842d6574) SHA1(40e32d09cc8d701eb318716493a68cf3f95d3d6d) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pacheart.6n", 0x2800, 0x0800, CRC(888f3c3e) SHA1(c2b5917bf13071131dd53ea76f0da86706db2d80) )
+ ROM_LOAD( "pacheart.6j", 0x3000, 0x0800, CRC(f5265c10) SHA1(9a320790d7a03fd6192a92d30b3e9c754bbc6a9d) )
+ ROM_LOAD( "pacheart.6p", 0x3800, 0x0800, CRC(1a21a381) SHA1(d5367a327d19fb57ba5e484bd4fda1b10953c040) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pheartx.5e", 0x0000, 0x4000, CRC(868825e6) SHA1(0cbe23ad47ef77f4ddfc0d476704a79701c621f1) )
+ ROM_LOAD( "pheartx.5f", 0x4000, 0x4000, CRC(b7d222ba) SHA1(83a6bceff705bc2f7d7766f417ba5a9aa2a9a28e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm1000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm1000.5e", 0x0000, 0x1000, CRC(16d9f7ce) SHA1(a9ac72aa5e3dcaaa2e4d03b6ae372e81d77817f8) )
+ ROM_LOAD( "pm1000.5f", 0x1000, 0x1000, CRC(fd06d923) SHA1(a9d61bdcb6841bf07ce8ad08e1be2cf5ef349129) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm2000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm2000.5e", 0x0000, 0x1000, CRC(cba39624) SHA1(d815cb5be44b3d29cd1bdd4b8c68484e5330e4a4) )
+ ROM_LOAD( "pm2000.5f", 0x1000, 0x1000, CRC(a2b31528) SHA1(69f1c4b34e581c0e6d75b9726cbefa08f8a97fdb) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm3000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm3000.5e", 0x0000, 0x1000, CRC(adb41be2) SHA1(7f2f4f3fc2d5f8d7bed9baddb1bb5787e4c5cd9e) )
+ ROM_LOAD( "pm3000.5f", 0x1000, 0x1000, CRC(1fac6af1) SHA1(d9e62fb387ec1d02a78cc3b4ba2626f9044a1021) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm4000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm3000.5e", 0x0000, 0x1000, CRC(adb41be2) SHA1(7f2f4f3fc2d5f8d7bed9baddb1bb5787e4c5cd9e) )
+ ROM_LOAD( "pm4000p.5f", 0x1000, 0x1000, CRC(74f6f4d3) SHA1(c65b295881bc531e165996aa365ff23126eab9d1) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm5000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm5000p.5e", 0x0000, 0x1000, CRC(5865ce98) SHA1(2ddaf119b1674a7c6af3e475ba2e43dcea09f1cd) )
+ ROM_LOAD( "pm5000p.5f", 0x1000, 0x1000, CRC(81cf02e1) SHA1(cd1b3f1ac0265ed25e00eb1a2bfb831d5c7d7e8b) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pm6000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm6000.5e", 0x0000, 0x1000, CRC(89945690) SHA1(2cee6236da8d20555e02cdebb2fb81c9e7d806ca) )
+ ROM_LOAD( "pm6000.5f", 0x1000, 0x1000, CRC(9268eb5a) SHA1(8db0365beeb89f5cb73de212b810938d5cad7971) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm7000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm7000.5e", 0x0000, 0x1000, CRC(c181ad5d) SHA1(74874eac512e445206303036e52d5e30e9ac57d0) )
+ ROM_LOAD( "pm7000.5f", 0x1000, 0x1000, CRC(bd31be36) SHA1(fa879e1b0bc28d21478337fc799360d15541d763) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pm7000p )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm7000.5e", 0x0000, 0x1000, CRC(c181ad5d) SHA1(74874eac512e445206303036e52d5e30e9ac57d0) )
+ ROM_LOAD( "pm7000p.5f", 0x1000, 0x1000, CRC(3d5861a5) SHA1(43f86248b2980d62bcd3f3ee71625c2c73e21a5a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pmad.6h", 0x2000, 0x1000, CRC(dd2eb43d) SHA1(e80ca01ce0e2f5204dcfc95abc0abd180dd7eb58) )
+ ROM_LOAD( "pmad.6j", 0x3000, 0x1000, CRC(ff3f4866) SHA1(1f55f6742ee08889ddc135cfdd3366c32c32510d) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmad.5e", 0x0000, 0x1000, CRC(5b794d59) SHA1(413488774cda263a477fe808bcacf76e9f60b542) )
+ ROM_LOAD( "pmad.5f", 0x1000, 0x1000, CRC(59a9362c) SHA1(aa7dfa45cb529e7ca4493262090b149e8c523006) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmad00 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pmad.6h", 0x2000, 0x1000, CRC(dd2eb43d) SHA1(e80ca01ce0e2f5204dcfc95abc0abd180dd7eb58) )
+ ROM_LOAD( "pmad00.6j", 0x3000, 0x1000, CRC(5f1aea94) SHA1(3122bd7e9e1c9123f6b1915b074491e9865d39a0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmad00.5e", 0x0000, 0x1000, CRC(315f7131) SHA1(8182e3e177111aabad0058897b80cee8a3fd93c7) )
+ ROM_LOAD( "pmad00.5f", 0x1000, 0x1000, CRC(157a6c0f) SHA1(93f66ad4595eb9fcc306398cb83abcacc60b1521) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmad6m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "pmad6m.map", 0x8000, 0x1000, CRC(d6a0d7f2) SHA1(7f3de6e13dd834a1495fb7faf2743fcc71b84747) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "hanglyad.5e", 0x0000, 0x1000, CRC(93fd3682) SHA1(792ddb541aeab304b5facfcf929c3bba18150346) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmada )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pmad.6h", 0x2000, 0x1000, CRC(dd2eb43d) SHA1(e80ca01ce0e2f5204dcfc95abc0abd180dd7eb58) )
+ ROM_LOAD( "pmada.6j", 0x3000, 0x1000, CRC(24e43519) SHA1(83fe90767bd73b1f72a5a86da79122fd2d8bc282) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacjr1.5e", 0x0000, 0x1000, CRC(9f3c32d4) SHA1(e7e40207f2a70768ce38cbb1e62c02ca4bed3a14) )
+ ROM_LOAD( "pacjr1.5f", 0x1000, 0x1000, CRC(c2310808) SHA1(84c28a4fc327afcb441daee35acdab6f7613395e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmba2000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pmba2000.6j", 0x3000, 0x1000, CRC(f7d647d8) SHA1(4edf34fc4a0da7367557392d55beac4a5eb5038a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba2000.5e", 0x0000, 0x1000, CRC(ff6308bb) SHA1(93bc32cfb43d521e77179597141587a9866c5319) )
+ ROM_LOAD( "pmba2000.5f", 0x1000, 0x1000, CRC(c8b456b5) SHA1(a9e435300171779a6c0e145a50284045b3996d91) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pmba3000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pmba3000.6j", 0x3000, 0x1000, CRC(08f7a148) SHA1(288e04fb264e985fbb7ea2f57ab14edd72b97140) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba3000.5e", 0x0000, 0x1000, CRC(5ebb61c5) SHA1(cfd491170d1d3d0c0632d5d81629e98cfd100fb6) )
+ ROM_LOAD( "pmba3000.5f", 0x1000, 0x1000, CRC(d9a055aa) SHA1(00c6867b70062672da3b8c254feff4354e35aa7a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmba4000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba3000.5e", 0x0000, 0x1000, CRC(5ebb61c5) SHA1(cfd491170d1d3d0c0632d5d81629e98cfd100fb6) )
+ ROM_LOAD( "pmba3000.5f", 0x1000, 0x1000, CRC(d9a055aa) SHA1(00c6867b70062672da3b8c254feff4354e35aa7a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmba6000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pmba6000.6j", 0x3000, 0x1000, CRC(bdb3d11a) SHA1(d9920ad3b6c76ab9095956b960165477ed1e11f8) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba6000.5e", 0x0000, 0x1000, CRC(7961ed4e) SHA1(595311b7a77d1379c9564d42a34581cc35a53875) )
+ ROM_LOAD( "pmba6000.5f", 0x1000, 0x1000, CRC(417080fd) SHA1(13e8e812bca25b64e7ce072d86189fd15b1882b0) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pmba8000 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmba6000.5e", 0x0000, 0x1000, CRC(7961ed4e) SHA1(595311b7a77d1379c9564d42a34581cc35a53875) )
+ ROM_LOAD( "pmba6000.5f", 0x1000, 0x1000, CRC(417080fd) SHA1(13e8e812bca25b64e7ce072d86189fd15b1882b0) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( pmbamaz )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pmbamaz.6j", 0x3000, 0x1000, CRC(bf5e4b89) SHA1(ad16845b92e56a6fe33c7561a231dd54ad558481) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmbamaz.5e", 0x0000, 0x1000, CRC(9a8cd8a1) SHA1(653d3c900b0be5e7ffe424207419bf86229b8c48) )
+ ROM_LOAD( "pmbamaz.5f", 0x1000, 0x1000, CRC(13aeaac4) SHA1(2abcc95559bc57a209d7216ddb6488032c4e34d6) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmbaplus )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmbaplus.5e", 0x0000, 0x1000, CRC(3e5a31c2) SHA1(82716be9be3a7012a4283c6e9e6be01b655a6526) )
+ ROM_LOAD( "pmbaplus.5f", 0x1000, 0x1000, CRC(3c099bbd) SHA1(f589e34330d78de173dc42929b17e4763ed4f1a3) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmbluep )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm1000.5e", 0x0000, 0x1000, CRC(16d9f7ce) SHA1(a9ac72aa5e3dcaaa2e4d03b6ae372e81d77817f8) )
+ ROM_LOAD( "pmbluep.5f", 0x1000, 0x1000, CRC(2da4dec7) SHA1(1a5c441dad8b3365ef728fe318c63d4e10de4731) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmdeluxe )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pm2000.5e", 0x0000, 0x1000, CRC(cba39624) SHA1(d815cb5be44b3d29cd1bdd4b8c68484e5330e4a4) )
+ ROM_LOAD( "pmdeluxe.5f", 0x1000, 0x1000, CRC(ab172fc9) SHA1(8845c73b37bb117d222eeb01788ba5738aba755a) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmextra )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmextra.5e", 0x0000, 0x1000, CRC(3ee34b66) SHA1(2d7a7e9a59dd87be7bda4964471b0fa27e82a219) )
+ ROM_LOAD( "pmextra.5f", 0x1000, 0x1000, CRC(edf92a4c) SHA1(63140c7100315edc8fd8a234822f0831e6d1799d) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmextrap )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmextra.5e", 0x0000, 0x1000, CRC(3ee34b66) SHA1(2d7a7e9a59dd87be7bda4964471b0fa27e82a219) )
+ ROM_LOAD( "pmextrap.5f", 0x1000, 0x1000, CRC(34ff1749) SHA1(55eb0199fdc04a3331bcf1e31baf686310af2cc7) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmfever )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmfever.5e", 0x0000, 0x1000, CRC(f9b955e1) SHA1(d8565b6e0ccd37309fc7e1507603efb75eedb211) )
+ ROM_LOAD( "pmfever.5f", 0x1000, 0x1000, CRC(8ddf8eb6) SHA1(72842687a8d957de22832b56cf1939864748cd6f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pmgrenp )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmgrenp.5e", 0x0000, 0x1000, CRC(5807a438) SHA1(8f4160627948747e92c3c5dc386068e4561fd9aa) )
+ ROM_LOAD( "pmgrenp.5f", 0x1000, 0x1000, CRC(1545b3c8) SHA1(a60fe521380af755b2f47bd526d523c7f9b9a923) )
+
+ PACPLUS_PROMS
+ROM_END
+
+/* Only the program roms were supplied with this dump. As it was listed as a bootleg of pacheart, I've added
+ the gfx roms and the proms from that game. */
+ROM_START( pmheart )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "newpuck1.6e", 0x0000, 0x0800, CRC(2c0fa0ab) SHA1(37680e4502771ae69d51d07ce43f65b9b2dd2a49) )
+ ROM_LOAD( "pmheart.6k", 0x0800, 0x0800, CRC(afeca2f1) SHA1(1e6d6c75eeb3a354ce2dc88da62caf9e7d53d0cb) )
+ ROM_LOAD( "pmheart.6f", 0x1000, 0x0800, CRC(6b53ada9) SHA1(a905688b389bfbc6792965d8f3d5bb1b9f0f4ec6) )
+ ROM_LOAD( "pmheart.6m", 0x1800, 0x0800, CRC(35f3ca84) SHA1(3da7336caa0742ea79f1e0e8f6b80f8560507a33) )
+ ROM_LOAD( "pacheart.6h", 0x2000, 0x0800, CRC(9045a44c) SHA1(a97d7016effbd2ace9a7d92ceb04a6ce18fb42f9) )
+ ROM_LOAD( "pmheart.6n", 0x2800, 0x0800, CRC(93f344c5) SHA1(987c7fa18a774a47c045fa1dc7dff37457cb8983) )
+ ROM_LOAD( "pmheart.6j", 0x3000, 0x0800, CRC(bed4a077) SHA1(39ac1d4d2acf4752ff7f9839f8f0d1974e023fab) )
+ ROM_LOAD( "pmheart.6p", 0x3800, 0x0800, CRC(800be41e) SHA1(6f40e741d95c2cfe1b217f1061da3497b4c2a153) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacheart.5e", 0x0000, 0x0800, CRC(c62bbabf) SHA1(f6f28ae33c2ab274105283b22b49ad243780a95e) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "newpuc2.5f", 0x1000, 0x0800, CRC(ca8c184c) SHA1(833aa845824ed80777b62f03df36a920ad7c3656) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( pplusad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pplusad.5e", 0x0000, 0x1000, CRC(ce684d85) SHA1(d7e40494631b3b1d73f9c07f15b6fa102286aa0d) )
+ ROM_LOAD( "pplusad.5f", 0x1000, 0x1000, CRC(0b86d002) SHA1(77c74d8ff6e4bf3de8e87ee872b1a9b6cf10fece) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( puck255 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "pacn255.6h", 0x2000, 0x1000, CRC(6dac9e8f) SHA1(bbebc8d059755f329ce6c0e4d39c1cd999c60dfe) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckman.6e", 0x0000, 0x0800, CRC(f36e88ab) SHA1(813cecf44bf5464b1aed64b36f5047e4c79ba176) )
+ ROM_LOAD( "puckman.6k", 0x0800, 0x0800, CRC(618bd9b3) SHA1(b9ca52b63a49ddece768378d331deebbe34fe177) )
+ ROM_LOAD( "puckman.6f", 0x1000, 0x0800, CRC(7d177853) SHA1(9b5ddaaa8b564654f97af193dbcc29f81f230a25) )
+ ROM_LOAD( "puckman.6m", 0x1800, 0x0800, CRC(d3e8914c) SHA1(c2f00e1773c6864435f29c8b7f44f2ef85d227d3) )
+ ROM_LOAD( "puckman.6h", 0x2000, 0x0800, CRC(6bf4f625) SHA1(afe72fdfec66c145b53ed865f98734686b26e921) )
+ ROM_LOAD( "puckman.6n", 0x2800, 0x0800, CRC(a948ce83) SHA1(08759833f7e0690b2ccae573c929e2a48e5bde7f) )
+ ROM_LOAD( "puckman.6j", 0x3000, 0x0800, CRC(b6289b26) SHA1(d249fa9cdde774d5fee7258147cd25fa3f4dc2b3) )
+ ROM_LOAD( "puckman.6p", 0x3800, 0x0800, CRC(17a88c13) SHA1(eb462de79f49b7aa8adb0cc6d31535b10550c0ce) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmana )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "puckman.6j", 0x3000, 0x0800, CRC(b6289b26) SHA1(d249fa9cdde774d5fee7258147cd25fa3f4dc2b3) )
+ ROM_LOAD( "puckman.6p", 0x3800, 0x0800, CRC(17a88c13) SHA1(eb462de79f49b7aa8adb0cc6d31535b10550c0ce) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckman.5e", 0x0000, 0x0800, CRC(2066a0b7) SHA1(6d4ccc27d6be185589e08aa9f18702b679e49a4a) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmanb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmanf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanf.6f", 0x1000, 0x1000, CRC(51b38db9) SHA1(0a796f93462aec4758c2aa1c1f34cd05bb10a178) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmano )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckmano.5e", 0x0000, 0x1000, CRC(1f44f160) SHA1(d5ec84bf164eb549b80f8a6c25ec9246fc89d525) )
+ ROM_LOAD( "puckmano.5f", 0x1000, 0x1000, CRC(c78395ca) SHA1(100507f230c348489b30386f8ff8130b956d2646) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmanx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmnax )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "puckman.6j", 0x3000, 0x0800, CRC(b6289b26) SHA1(d249fa9cdde774d5fee7258147cd25fa3f4dc2b3) )
+ ROM_LOAD( "puckman.6p", 0x3800, 0x0800, CRC(17a88c13) SHA1(eb462de79f49b7aa8adb0cc6d31535b10550c0ce) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "puckmnax.5e", 0x0000, 0x4000, CRC(c8d9349e) SHA1(8ca4045fe888b78306017a5e17b180d13b37e436) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmnfx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanf.6f", 0x1000, 0x1000, CRC(51b38db9) SHA1(0a796f93462aec4758c2aa1c1f34cd05bb10a178) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmnhx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "puckmanh.6f", 0x1000, 0x1000, CRC(61d38c6c) SHA1(1406aacdc9c8a3776e5853d214380ad3124408f4) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "puckmanh.6j", 0x3000, 0x1000, CRC(8939ddd2) SHA1(cf769bb34f711cfd0ee75328cd5dc07442f88607) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmodx.5e", 0x0000, 0x4000, CRC(a05bc552) SHA1(5c2350aeac14cafebfcb7ff012427b1d3c6adf62) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmod )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmod.6j", 0x3000, 0x1000, CRC(7d98d5f5) SHA1(39939bcd6fb785d0d06fd29f0287158ab1267dfc) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmodx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmod.6j", 0x3000, 0x1000, CRC(7d98d5f5) SHA1(39939bcd6fb785d0d06fd29f0287158ab1267dfc) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "pacmanx.5e", 0x0000, 0x4000, CRC(a45138ce) SHA1(f18344980b4a58d0abf0cc2b7853184af3d5bfa0) )
+ ROM_LOAD( "pacmanx.5f", 0x4000, 0x4000, CRC(92e1b10e) SHA1(bb04988502fa181365c08096b5fd47fa9541c291) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmot1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckmot1.5e", 0x0000, 0x1000, CRC(79ad3ca1) SHA1(a84330e1a7ef1b8c201e35fe66f4480065e0804a) )
+ ROM_LOAD( "puckmot1.5f", 0x1000, 0x1000, CRC(bd898502) SHA1(3bf87f82cc2fcaab17dec15f4ad7e780df66b48f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckmoti )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckmanb.6e", 0x0000, 0x1000, CRC(fee263b3) SHA1(87117ba5082cd7a615b4ec7c02dd819003fbd669) )
+ ROM_LOAD( "puckmanb.6f", 0x1000, 0x1000, CRC(39d1fc83) SHA1(326dbbf94c6fa2e96613dedb53702f8832b47d59) )
+ ROM_LOAD( "puckmanb.6h", 0x2000, 0x1000, CRC(02083b03) SHA1(7e1945f6eb51f2e51806d0439f975f7a2889b9b8) )
+ ROM_LOAD( "puckmanb.6j", 0x3000, 0x1000, CRC(7a36fe55) SHA1(01b4c38108d9dc4e48da4f8d685248e1e6821377) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckmoti.5e", 0x0000, 0x1000, CRC(e2a1f6b6) SHA1(798daee244fc4275f7ed0bd3a99b527531960807) )
+ ROM_LOAD( "puckmoti.5f", 0x1000, 0x1000, CRC(31d24bb5) SHA1(ff26f2199e28f9bbbeca09acf3850b9e76c597da) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( puckren )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckren.6e", 0x0000, 0x1000, CRC(0f5ecf67) SHA1(1250eb19c721b007705c75cce9140365aeed3fad) )
+ ROM_LOAD( "puckren.6f", 0x1000, 0x1000, CRC(70ea1149) SHA1(4c1f25e7e6fb7645b7a23419cd1c5b3e2cf90823) )
+ ROM_LOAD( "puckren.6h", 0x2000, 0x1000, CRC(c6bb6ea6) SHA1(a33e23193c14d2418614ad7609fb3bc0856a4a1f) )
+ ROM_LOAD( "puckren.6j", 0x3000, 0x1000, CRC(dc90f1dc) SHA1(af677ed5989abaebcbde5da9168e849135d5e96f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckren.5e", 0x0000, 0x1000, CRC(a502e25f) SHA1(9f02d3f1ec095910642fe0bb616d510be52b53d8) )
+ ROM_LOAD( "puckren.5f", 0x1000, 0x1000, CRC(18d44098) SHA1(d07120b9ede3cfcbc69006381f4287bede04c6e3) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "puckren.7f", 0x0000, 0x0020, CRC(7b6aa3c9) SHA1(849911abdc26ccf2ad44e2c432e6219447b8bef3) )
+ ROM_LOAD( "puckren.4a", 0x0020, 0x0100, CRC(64fe1dbf) SHA1(7f7541eb12148add79ad186a1da375c865d251e0) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( puckrenc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "puckren.6e", 0x0000, 0x1000, CRC(0f5ecf67) SHA1(1250eb19c721b007705c75cce9140365aeed3fad) )
+ ROM_LOAD( "puckrenc.6f", 0x1000, 0x1000, CRC(8a75a7e2) SHA1(79f787c8c55ce04c97baf465b64d89d2bdbf07c5) )
+ ROM_LOAD( "puckren.6h", 0x2000, 0x1000, CRC(c6bb6ea6) SHA1(a33e23193c14d2418614ad7609fb3bc0856a4a1f) )
+ ROM_LOAD( "puckren.6j", 0x3000, 0x1000, CRC(dc90f1dc) SHA1(af677ed5989abaebcbde5da9168e849135d5e96f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "puckren.5e", 0x0000, 0x1000, CRC(a502e25f) SHA1(9f02d3f1ec095910642fe0bb616d510be52b53d8) )
+ ROM_LOAD( "puckren.5f", 0x1000, 0x1000, CRC(18d44098) SHA1(d07120b9ede3cfcbc69006381f4287bede04c6e3) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "puckren.7f", 0x0000, 0x0020, CRC(7b6aa3c9) SHA1(849911abdc26ccf2ad44e2c432e6219447b8bef3) )
+ ROM_LOAD( "puckren.4a", 0x0020, 0x0100, CRC(64fe1dbf) SHA1(7f7541eb12148add79ad186a1da375c865d251e0) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( punleash )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "punleash.1", 0x0000, 0x1000, CRC(eddb20e7) SHA1(07f6cabac3c59c2e3f522da877e845b3ceb2cffb) )
+ ROM_LOAD( "punleash.2", 0x1000, 0x1000, CRC(57fe8b4d) SHA1(629800fe793b53c27ee8c84a2e49caf7fe056f28) )
+ ROM_LOAD( "punleash.3", 0x2000, 0x1000, CRC(94c63bb1) SHA1(872dbca70b45285dccfd0e24cb50225a5c3ac005) )
+ ROM_LOAD( "punleash.4", 0x3000, 0x1000, CRC(fe7734d5) SHA1(f246baab82ea8e9b3cfd3dc5911445ab08223c1f) )
+ ROM_LOAD( "punleash.5", 0x8000, 0x1000, CRC(ef155ffb) SHA1(c5bcd57c2a336fa8a018b192b8542954271f1bac) )
+ ROM_LOAD( "punleash.6", 0x9000, 0x1000, CRC(70d15899) SHA1(9a7cff5811b591211eb23cee125fd77263f8d4fe) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "punleash.5e", 0x0000, 0x1000, CRC(713a4ba4) SHA1(f6eaadf92dae3a687fb317f2806b4d7a88f7c385) )
+ ROM_LOAD( "punleash.5f", 0x1000, 0x1000, CRC(98d3d364) SHA1(f8023d1772d377d090a9bfebf194bbbce8643f1d) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "punleash.7f", 0x0000, 0x0020, CRC(357c2523) SHA1(f0c4cea06b17932cc15f6db2971406eaba3558b2) )
+ ROM_LOAD( "punleash.4a", 0x0020, 0x0100, CRC(5ff3b85a) SHA1(6b01b9c9302ab41fe83c140c3ff217d1d66773dd) )
+
+ PACMAN_SOUND_PROMS
+ROM_END
+
+ROM_START( roboman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "roboman.6j", 0x3000, 0x1000, CRC(a909673e) SHA1(991d0c50087f5d47f85f6c16c667dea3b3973f4f) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "roboman.5e", 0x0000, 0x1000, CRC(e386213e) SHA1(fbbc1d85cc61dc3a13cc5e26182d51b2bbdfcb63) )
+ ROM_LOAD( "roboman.5f", 0x1000, 0x1000, CRC(d8db5788) SHA1(11698932aca1150ef00801fdcb35a5ee2cb3d3b8) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( snakeyes )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "snakeyes.map", 0x8000, 0x1000, CRC(7e506e78) SHA1(a198158a69d79d1c46149c9f8878ba220a6bf82e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacmulti.5e", 0x0000, 0x1000, CRC(46cdda4a) SHA1(2c38050a4f5d0c9e1b4f3e054dcac25cde63ae2a) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( snowpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "snowpac.6j", 0x3000, 0x1000, CRC(4f9e1d02) SHA1(90f7ed914e1291248f6b3ba0630a7d67d4f07374) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "snowpac.5e", 0x0000, 0x1000, CRC(2cc60a94) SHA1(05b8725cc71273e2ee61303bc00057dc60f88bb6) )
+ ROM_LOAD( "snowpac.5f", 0x1000, 0x1000, CRC(41ba87bd) SHA1(3a1473bd3753fc3a3ab6ee5285e4832b0f92d173) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This is a bootleg of Hangly set 3. The proms were missing and the gfx didn't match up (has hearts and said
+ 8000 points for eating the last monster when you only get 1600). Therefore, using the hangly3 gfx roms.
+ Despite the name "Super Pacman", it is just another puckman clone. The first monster is named "Mario". */
+ROM_START( spuckman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "hangly3.6k", 0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "pheartb.6h", 0x2000, 0x0800, CRC(b42416d1) SHA1(3714efae24f35fe63dd89f0d7b82e4564c5405d3) )
+ ROM_LOAD( "hangly3.6n", 0x2800, 0x0800, CRC(ab74b51f) SHA1(1bce8933ed7807eb7aca9670df8994f8d1a8b5b7) )
+ ROM_LOAD( "spuckman.6j", 0x3000, 0x0800, CRC(bc33aa79) SHA1(b974755edebb19455efccd56412995e3fa9fbd8e) )
+ ROM_LOAD( "spuckman.6p", 0x3800, 0x0800, CRC(e95eafca) SHA1(0a0080340a2beb6408fe79a19e7fa97f35de9619) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ /* gfx from hangly3 */
+ ROM_LOAD( "hangly3.5e", 0x0000, 0x0800, CRC(5f4be3cc) SHA1(eeb0e1e44549b99eab481d9ac016b4359e19fe30) )
+ ROM_LOAD( "puckman.5h", 0x0800, 0x0800, CRC(3591b89d) SHA1(79bb456be6c39c1ccd7d077fbe181523131fb300) )
+ ROM_LOAD( "puckman.5f", 0x1000, 0x0800, CRC(9e39323a) SHA1(be933e691df4dbe7d12123913c3b7b7b585b7a35) )
+ ROM_LOAD( "puckman.5j", 0x1800, 0x0800, CRC(1b1d9096) SHA1(53771c573051db43e7185b1d188533056290a620) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( sumeltob )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "sumeltob.6j", 0x3000, 0x1000, CRC(03d59d0e) SHA1(354cfe283b34f40b913589df9bc415fff08bb796) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sumelton.5e", 0x0000, 0x1000, CRC(10894f38) SHA1(83fac1d9e6d54697a93a0eadb4a66a813e4bd32a) )
+ ROM_LOAD( "sumelton.5f", 0x1000, 0x1000, CRC(debef8a9) SHA1(503005bd563099094ad8815f8651cbdcd616571f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( sumelton )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "sumelton.6j", 0x3000, 0x1000, CRC(c1fe2c7d) SHA1(8eabe4c30dfd1db9b38f8557f136894ee3865f15) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "sumelton.5e", 0x0000, 0x1000, CRC(10894f38) SHA1(83fac1d9e6d54697a93a0eadb4a66a813e4bd32a) )
+ ROM_LOAD( "sumelton.5f", 0x1000, 0x1000, CRC(debef8a9) SHA1(503005bd563099094ad8815f8651cbdcd616571f) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( tbone )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "tbone.map", 0x8000, 0x1000, CRC(e7377f2d) SHA1(3cffb221655b1c7240a97ec82132a4a1a76d383e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "tbone.5e", 0x0000, 0x1000, CRC(afd44c48) SHA1(36750fbaeb8db4143fdd90aec83189fc552b110e) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ultra2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "ultra2.6j", 0x3000, 0x1000, CRC(83da903e) SHA1(541cda1dad90cfbf5c9aa5dd3091337527236bc0) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pacman.5e", 0x0000, 0x1000, CRC(0c944964) SHA1(06ef227747a440831c9a3a613b76693d52a2f0a9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( ultrapac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "ultrapac.6j", 0x3000, 0x1000, CRC(84c6c23b) SHA1(f207ce54d7ee31d61397f1587292ea6add56cb04) )
+ ROM_LOAD( "ultrapac.map", 0x8000, 0x1000, CRC(be212894) SHA1(eaf4d33d1e2ebd14d2c9dd3445666c1319ba7807) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "ultrapac.5e", 0x0000, 0x1000, CRC(d46efbcf) SHA1(1d90cca40f5b0518cf39408e87d9faf42071e6f9) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vcrunchy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pcrunchy.6j", 0x3000, 0x1000, CRC(c21c6c52) SHA1(c63212f51c6bf49e76b3ca7553a29e3371c4fa83) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vecbaby )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby.6j", 0x3000, 0x1000, CRC(4e4ac798) SHA1(deab2d93a678abee576c891bdfb7ab93d5718792) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vecbaby2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby2.6j", 0x3000, 0x1000, CRC(742453ba) SHA1(21707992ea3489c8bc95b14db33f62b6aaa24eb4) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vecbaby3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacbaby3.6j", 0x3000, 0x1000, CRC(b82f2b73) SHA1(63619220b9ed4dfeb4f462b41d9685870716590a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vecpac )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacman.6j", 0x3000, 0x1000, CRC(817d94e3) SHA1(d4a70d56bb01d27d094d73db8667ffb00ca69cb9) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vectplus )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacplus.6e", 0x0000, 0x1000, CRC(d611ef68) SHA1(8531c54ca6b0de0ea4ccc34e0e801ba9847e75bc) )
+ ROM_LOAD( "pacplus.6f", 0x1000, 0x1000, CRC(c7207556) SHA1(8ba97215bdb75f0e70eb8d3223847efe4dc4fb48) )
+ ROM_LOAD( "pacplus.6h", 0x2000, 0x1000, CRC(ae379430) SHA1(4e8613d51a80cf106f883db79685e1e22541da45) )
+ ROM_LOAD( "pacplus.6j", 0x3000, 0x1000, CRC(5a6dff7b) SHA1(b956ae5d66683aab74b90469ad36b5bb361d677e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vectplus.5e", 0x0000, 0x1000, CRC(330abcc6) SHA1(421eb2efe402572189621e2fac49df80bd891f2c) )
+ ROM_LOAD( "vectplus.5f", 0x1000, 0x1000, CRC(61da12cf) SHA1(03bc75e3344b863e460fe74aa3b9be36e17d1149) )
+
+ PACPLUS_PROMS
+ROM_END
+
+ROM_START( vectr6m )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "pacman6.map", 0x8000, 0x1000, CRC(de753fd9) SHA1(467cd6dd572a3e6f0b2e0120d520df919433655a) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vectr6m.5e", 0x0000, 0x1000, CRC(f7be09ba) SHA1(1ac6f67637831a39979866b684898228fb7a9761) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vectr6tb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman6.6h", 0x2000, 0x1000, CRC(aee79ea1) SHA1(4f3214b56056c3ac00c0535ce5d6a367ccda6e31) )
+ ROM_LOAD( "pacman6.6j", 0x3000, 0x1000, CRC(581ae70b) SHA1(a184c9d9b6ffbaba936867aef14e783234bf7af2) )
+ ROM_LOAD( "vectr6tb.map", 0x8000, 0x1000, CRC(bdbbb207) SHA1(2beceac64d53f197b533375da255a4158e76d970) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vectr6m.5e", 0x0000, 0x1000, CRC(f7be09ba) SHA1(1ac6f67637831a39979866b684898228fb7a9761) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vectxens )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "xensrev.6j", 0x3000, 0x1000, CRC(64a10b6c) SHA1(689be23289fb32f2bfa1392edaba9c6bfa5a82e7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vhangly )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly.6e", 0x0000, 0x1000, CRC(5fe8610a) SHA1(d63eaebd85e10aa6c27bb7f47642dd403eeb6934) )
+ ROM_LOAD( "hangly.6f", 0x1000, 0x1000, CRC(73726586) SHA1(cedddc5194589039dd8b64f07ab6320d7d4f55f9) )
+ ROM_LOAD( "hangly.6h", 0x2000, 0x1000, CRC(4e7ef99f) SHA1(bd42e68b29b4d654dc817782ba00db69b7d2dfe2) )
+ ROM_LOAD( "hangly.6j", 0x3000, 0x1000, CRC(7f4147e6) SHA1(0a7ac0e59d4d26fe52a2f4196c9f19e5ab677c87) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+/* This set came from Gatinho in October 2008. */
+ROM_START( vhangly3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "hangly3.6e", 0x0000, 0x0800, CRC(9d027c4a) SHA1(88e094880057451a75cdc2ce9477403021813982) )
+ ROM_LOAD( "hangly3.6k", 0x0800, 0x0800, CRC(194c7189) SHA1(fd423bac2810015313841c7b935054565390fbd0) )
+ ROM_LOAD( "hangly2.6f", 0x1000, 0x0800, CRC(5ba228bb) SHA1(b0e902cdf98bee72d6ec8069eec96adce3245074) )
+ ROM_LOAD( "hangly2.6m", 0x1800, 0x0800, CRC(baf5461e) SHA1(754586a6449fd54a342f260e572c1cd60ab70815) )
+ ROM_LOAD( "hangly3.6h", 0x2000, 0x0800, CRC(08419c4a) SHA1(7e5001adad401080c788737c1d2349f218750442) )
+ ROM_LOAD( "hangly3.6n", 0x2800, 0x0800, CRC(ab74b51f) SHA1(1bce8933ed7807eb7aca9670df8994f8d1a8b5b7) )
+ ROM_LOAD( "hangly3.6j", 0x3000, 0x0800, CRC(5039b082) SHA1(086a6ac4742734167d283b1121fce29d8ac4a6cd) )
+ ROM_LOAD( "hangly3.6p", 0x3800, 0x0800, CRC(931770d7) SHA1(78fcf88e07ec5126c12c3297b62ca388809e947c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vhangly3.5e", 0x0000, 0x0800, CRC(6e0f31d5) SHA1(edf4674f511a61827d928cff3ea996f67814b281) )
+ ROM_LOAD( "vhangly3.5h", 0x0800, 0x0800, CRC(d602128c) SHA1(cff082f5911688767d3d7cc828bb13714daeb19a) )
+ ROM_LOAD( "vhangly3.5f", 0x1000, 0x0800, CRC(bff9b303) SHA1(863d155a54fb67864be3f2a0fe339815036bccf3) )
+ ROM_LOAD( "vhangly3.5j", 0x1800, 0x0800, CRC(b9724ce8) SHA1(ef4320a572d69f09821d180a249bdd06af38ca63) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacbell )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacbell.6j", 0x3000, 0x1000, CRC(4b428215) SHA1(acdcc4d7ccfc58c6c0473e8ee548b5e02dcafcfd) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacelec )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacelec.6j", 0x3000, 0x1000, CRC(9e5c763d) SHA1(df56eb705c7dfaf00b084aa6744d7fd5fa4f47d3) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacjail )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacjail.6j", 0x3000, 0x1000, CRC(cc31f185) SHA1(cd184a55f775bc9a70d0bfa932d2993b8987135b) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacms1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms1.6j", 0x3000, 0x1000, CRC(c5da3887) SHA1(2a65b31891bc19fc0fbdace39e853fff6c4227eb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacms2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms2.6j", 0x3000, 0x1000, CRC(b0a107ea) SHA1(86b8b7cb7e90b0de95bc9b8e3b98bcc46992578e) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacms3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms3.6j", 0x3000, 0x1000, CRC(c7d8325a) SHA1(bf72a2d7b20d76e521cf45fbe1b0ab762daa8106) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacms4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacms4.6j", 0x3000, 0x1000, CRC(7b63ff9b) SHA1(84c167878ca4a1a1d79c397438defc8dcc6326f7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacmsa1 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa1.6j", 0x3000, 0x1000, CRC(07163b97) SHA1(fdfbca327a2c3f69b4478b1e3ca9c8ed71605582) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacmsa2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa2.6j", 0x3000, 0x1000, CRC(15e83c24) SHA1(ebe4d476104bbd037a1b5fe5783c0b77229ca707) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacmsa3 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa3.6j", 0x3000, 0x1000, CRC(5762f9cf) SHA1(b570468372a9520929513425523fdae734d4acfc) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacmsa4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "pacmsa4.6j", 0x3000, 0x1000, CRC(d9c2a669) SHA1(2f82405d297f35cc13199e1671cfa835dd598e9c) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vpacms1.5e", 0x0000, 0x1000, CRC(035f0597) SHA1(50db2cd5dc99abdb90dd2ce8dc4691e7443ac2a5) )
+ ROM_LOAD( "vpacms1.5f", 0x1000, 0x1000, CRC(306b24f0) SHA1(9fd92b05c8bf6749d78f68deaf370582dafcc92e) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpacshuf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacshuf.6j", 0x3000, 0x1000, CRC(55cc4d87) SHA1(1a05670c4fd09b4155941aa1ea90a5719a3e7ebb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( vpspeed )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacm255.6h", 0x2000, 0x1000, CRC(d3640977) SHA1(2cc05c16c0cf6f516c69ab0b6e1a83bdd3010798) )
+ ROM_LOAD( "pacspeed.6j", 0x3000, 0x1000, CRC(0e7946d1) SHA1(cea3440a305ec05dab197dba7ac8428db0d5e2f7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "vecpac.5e", 0x0000, 0x1000, CRC(936d0475) SHA1(8db1fc56ed236deda01cb6a5169fb7d4cda53e7a) )
+ ROM_LOAD( "vecpac.5f", 0x1000, 0x1000, CRC(022d0686) SHA1(ea64d134ececc6eb3fc373821318188489b0e7cc) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( xensad )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "xensrev.6j", 0x3000, 0x1000, CRC(64a10b6c) SHA1(689be23289fb32f2bfa1392edaba9c6bfa5a82e7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "pmad00.5e", 0x0000, 0x1000, CRC(315f7131) SHA1(8182e3e177111aabad0058897b80cee8a3fd93c7) )
+ ROM_LOAD( "pmad00.5f", 0x1000, 0x1000, CRC(157a6c0f) SHA1(93f66ad4595eb9fcc306398cb83abcacc60b1521) )
+
+ PACMAN_PROMS
+ROM_END
+
+ROM_START( xensrev )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacman.6e", 0x0000, 0x1000, CRC(c1e6ab10) SHA1(e87e059c5be45753f7e9f33dff851f16d6751181) )
+ ROM_LOAD( "pacman.6f", 0x1000, 0x1000, CRC(1a6fb2d4) SHA1(674d3a7f00d8be5e38b1fdc208ebef5a92d38329) )
+ ROM_LOAD( "pacman.6h", 0x2000, 0x1000, CRC(bcdd1beb) SHA1(8e47e8c2c4d6117d174cdac150392042d3e0a881) )
+ ROM_LOAD( "xensrev.6j", 0x3000, 0x1000, CRC(64a10b6c) SHA1(689be23289fb32f2bfa1392edaba9c6bfa5a82e7) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "xensrev.5e", 0x0000, 0x1000, CRC(40e3522d) SHA1(461d1895f82502538bf120a61a3950970f9f1b09) )
+ ROM_LOAD( "pacman.5f", 0x1000, 0x1000, CRC(958fedf9) SHA1(4a937ac02216ea8c96477d4a15522070507fb599) )
+
+ PACMAN_PROMS
+ROM_END
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+/* in my opinion, the true original game */
+GAME( 1980, puckman, 0, pacman, pacman, driver_device, 0, ROT90, "Namco", "Puckman (original)", MACHINE_SUPPORTS_SAVE )
+
+/* Official MAME */
+
+/* rom parent machine inp init */
+GAME( 1982, ctrpllrp, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Caterpillar Pacman Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hangly, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hangly2, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hangly3, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, joyman, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Joyman", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, newpuc2, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Newpuc2", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, newpuc2b, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Newpuc2 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, newpuckx, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "New Puck-X", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacheart, puckman, pacman, pacman, driver_device, 0, ROT90, "hack", "Pacman (Hearts)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pacman, puckman, pacman, pacman, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pacman (Midway)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pacmanf, puckman, pacman, pacman, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pacman (Midway, with speedup hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacmod, puckman, pacman, pacman, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pacman (Midway, harder)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, pacplus, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "[Namco] (Midway license)", "Pacman Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, puckmod, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmanb, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 1, Probably Bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmana, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmanf, puckman, pacman, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 1 with speedup hack)", MACHINE_SUPPORTS_SAVE )
+
+/* Blue Justice's Hacks */
+
+GAME( 2001, hm1000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man 1000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hm2000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmba5000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man Babies 5000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmba7000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man Babies 7000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmbabymz, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man BabiesMaze", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmbluep, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man Blue Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmgrenp, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man Green Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, hmplus, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Hangly Man Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm1000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man 1000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm2000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm3000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man 3000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm4000p, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man 4000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm5000p, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man 5000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm6000, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man 6000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm7000, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man 7000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pm7000p, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man 7000 Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmba2000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man Babies 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmba3000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man Babies 3000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmba4000, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Babies 4000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmba6000, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man Babies 6000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmba8000, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Babies 8000", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmbamaz, puckman, pacman, pacman, driver_device, 0, ROT90, "Blue Justice", "Pac Man Babies Maze", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmbaplus, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Babies Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmbluep, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Blue Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmdeluxe, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Deluxe", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmextra, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Extra", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmextrap, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Extra Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmfever, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Fever", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pmgrenp, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "Blue Justice", "Pac Man Green Plus", MACHINE_SUPPORTS_SAVE )
+
+/* T-Bone Hacks */
+
+GAME( 2000, baby2, puckman, pacman, pacman, driver_device, 0, ROT90, "T-Bone", "Baby Pacman 2 (Alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, baby3, puckman, pacman, pacman, driver_device, 0, ROT90, "T-Bone", "Baby Pacman 3 (Alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, baby4, puckman, pacman, pacman, driver_device, 0, ROT90, "T-Bone", "Pacman (Baby Maze 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pmad6m, puckman, woodpek, pacman, driver_device, 0, ROT90, "T-Bone", "Pacman 2000 After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, snakeyes, puckman, woodpek, pacman, driver_device, 0, ROT90, "T-Bone", "Pacman 2000 (Snake Eyes Mazes)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, snowpac, puckman, pacman, pacman, driver_device, 0, ROT90, "T-Bone", "Snowy Day Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tbone, puckman, woodpek, pacman, driver_device, 0, ROT90, "T-Bone", "Pacman 2000 (T-Bone Mazes)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectr6m, puckman, woodpek, pacman, driver_device, 0, ROT90, "T-Bone", "Vector Pacman 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectr6tb, puckman, woodpek, pacman, driver_device, 0, ROT90, "T-Bone", "Vector Pacman 2000 (T-Bone Mazes)", MACHINE_SUPPORTS_SAVE )
+
+/* Jerronimo's Progs - www.umlautllama.com */
+
+GAME( 2000, brakman, puckman, pacman, pacman, driver_device, 0, ROT90, "Scott Lawrence", "Brakman", MACHINE_SUPPORTS_SAVE ) // http://www.csh.rit.edu/~jerry/arcade/age/
+GAME( 2004, pacman25, puckman, woodpek, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "25 MAP PAC [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, pacsnoop, puckman, pacman, pacman0, driver_device, 0, ROT90, "Scott Lawrence", "Pac Snoop v1.3 [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pengman, puckman, pacman, pacman, driver_device, 0, ROT90, "Scott Lawrence", "Pengo Man", MACHINE_SUPPORTS_SAVE ) // http://www.csh.rit.edu/~jerry/arcade/age/
+
+/* Medragon's Hacks */
+
+GAME( 2000, crazypac, puckman, pacman, pacman, driver_device, 0, ROT90, "Tim Appleton", "Crazy Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, dizzy, puckman, pacman, pacman, driver_device, 0, ROT90, "Tim Appleton", "Dizzy Ghost - A Reversal of Roles", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacfnt, puckman, pacman, pacman, driver_device, 0, ROT90, "Tim Appleton", "Pacman with Pacman font", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacwf, puckman, pacman, pacman, driver_device, 0, ROT90, "Tim Appleton", "Pacman (Weird Fruit)", MACHINE_SUPPORTS_SAVE )
+
+/* Sil's Hacks */
+
+GAME( 1998, chtpac3d, puckman, pacman, pacman0, driver_device, 0, ROT90, "Marcel Silvius", "Pacman 3D [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, eltonpac, puckman, pacman, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Elton Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mazeman, puckman, pacman, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Maze Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, namcosil, puckman, pacman, pacman0, driver_device, 0, ROT90, "Marcel Silvius", "Pacman (Namco) (Sil hack) [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, newpuck3, puckman, pacman, pacman, driver_device, 0, ROT90, "Marcel Silvius", "New Puck-3", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, pacman3d, puckman, pacman, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Pacman 3D", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacman6, puckman, woodpek, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Pacman 6", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmn6m2, puckman, woodpek, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Pacman 2000 (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmulti, puckman, woodpek, pacman, driver_device, 0, ROT90, "Marcel Silvius", "PacMulti (Pacman)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacweird, puckman, woodpek, pacman, driver_device, 0, ROT90, "Marcel Silvius", "Pacman (Six Map Weird)", MACHINE_SUPPORTS_SAVE )
+
+/* Bobby Tribble's Hacks */
+
+GAME( 2000, pac2600, puckman, pacman, pacman, driver_device, 0, ROT90, "Bobby Tribble", "Pac 2600", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, pac2600a, puckman, pacman, pacman, driver_device, 0, ROT90, "Bobby Tribble?","Pac 2600 (Older?)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmini, puckman, pacman, pacman, driver_device, 0, ROT90, "Bobby Tribble", "Mini Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmini2, puckman, pacman, pacman, driver_device, 0, ROT90, "Bobby Tribble", "Mini Pacman 2", MACHINE_SUPPORTS_SAVE )
+
+/* Hires hacks */
+
+GAME( 1981, hanglyx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 1) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hangly2x, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 2) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hangly3x, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Hangly-Man (set 3) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, newpuc2x, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Newpuc2 (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, nwpuc2bx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Newpuc2 (set 2) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, nwpuckxx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "New Puck-X (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pacmanx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pac-Man (Midway) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pacmanfx, puckmanx, pacmanx, pacman0, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pac-Man (Midway) (hires hack) [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacmodx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "[Namco] (Midway license)", "Pac-Man (Midway, harder) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, pacplusx, puckmanx, pacmanx, pacman, pacman_state, pacplus, ROT90, "[Namco] (Midway license)", "Pac-Man Plus (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pheartx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Pac-Man (Hearts) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmanx, 0, pacmanx, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 1, Probably Bootleg) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmnax, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 2) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmnfx, puckmanx, pacmanx, pacman0, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 1) (hires hack) [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, puckmnhx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "hack", "Puckman (Falcom?) (hires hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, puckmodx, puckmanx, pacmanx, pacman, driver_device, 0, ROT90, "Namco", "PuckMan (Japan set 3) (hires hack)", MACHINE_SUPPORTS_SAVE )
+
+/* Misc Pacman Hacks */
+
+GAME( 2001, abortman, puckman, pacman, pacman, driver_device, 0, ROT90, "Paul Copeland", "Abortman", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, bucaneer, puckman, pacman, pacman, driver_device, 0, ROT90, "Bucco", "Buccaneer", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, caterpil, puckman, pacman, mspacman, driver_device, 0, ROT90, "Phi", "Caterpillar", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, chtpac, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Midway]", "Pacman [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, chtpman2, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Namco]", "New Puck2 [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, chtpop, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Midway]", "Pac-man (Popeye) [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, chtpuck, puckman, pacman, pacman0, driver_device, 0, ROT90, "Deluxe", "New Puck-X [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, europac, puckman, pacman, pacman, driver_device, 0, ROT90, "Stefano Priore", "Euro Pac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fasthang, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Nittoh]", "Hangly Man [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fastpop, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Midway]", "Pacman (Popeye) [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fastpuck, puckman, pacman, pacman0, driver_device, 0, ROT90, "Deluxe", "New Puck-X [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fpnleash, puckman, woodpek, pacman, driver_device, 0, ROT90, "Peter Storey", "Pacman Unleashed (Flat)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, fstpman2, puckman, pacman, pacman0, driver_device, 0, ROT90, "[Namco]", "New Puck2 [f]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, hanglyad, puckman, pacman, pacman, driver_device, 0, ROT90, "[Nittoh]", "Hangly-Man (set 1) After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, hearts, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Hearts)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, hellowp, puckman, pacman, pacman, driver_device, 0, ROT90, "cmonkey", "Hello World (Pacman HW)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hmhearts, puckman, pacman, pacman, driver_device, 0, ROT90, "[Nittoh]", "Hangly-Man (Hearts)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, hmpopey, puckman, pacman, pacman, driver_device, 0, ROT90, "[Nittoh]", "Hangly-Man (Popeye)", MACHINE_SUPPORTS_SAVE )
+GAME( 2005, homercid, puckman, pacman, mspacpls, driver_device, 0, ROT90, "David Widel", "Homercide", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, jacman, puckman, pacman, pacman, driver_device, 0, ROT90, "Brent Cobb", "Jacman", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, jpmmunch, puckman, pacman, pacman, driver_device, 0, ROT90, "JPM", "Muncher", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, newpuc1, puckman, pacman, pacman, driver_device, 0, ROT90, "E.P.", "Newpuc1 (Italian dump)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, newpuck2, puckman, pacman, pacman, driver_device, 0, ROT90, "Sir Scotty", "New Puck-2", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, nwpuc2b, puckman, pacman, newpuc2b, driver_device, 0, ROT90, "Linear Elect", "New Puc2 (Set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacbaby, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Baby Maze 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacbaby2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Baby Maze 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacbaby3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Baby Maze 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacbell, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Bell)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacelec, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Electric Cowboy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacinvis, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Original Inviso)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacjail, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Jail)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacjr1, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman Jr. (Maze 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacjr2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman Jr. (Maze 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacjr3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman Jr. (Maze 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacjr4, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman Jr. (Maze 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacm255, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Fixes 255th Maze)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, pacmanp, puckman, pacman, pacman, driver_device, 0, ROT90, "Don Hodges", "Pacman (Patched)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pacmar, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Mario Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, pacminer, puckman, pacman, pacman, driver_device, 0, ROT90, "Jim Bagley", "Pac Manic Miner Man", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacms1, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Maze 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacms2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Maze 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacms3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Maze 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacms4, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Maze 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmsa1, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Attack 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmsa2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Attack 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmsa3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Attack 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacmsa4, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Ms. Pacman Attack 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, pacplusc, puckman, pacman, pacman0, driver_device, 0, ROT90, "Bally Midway", "Pacman Plus (Unencrypted) [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, pacpopey, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman (Popeye)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, pacrab, puckman, woodpek, pacman, driver_device, 0, ROT90, "[Midway]", "Pac Rabbit", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacshuf, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Shuffle)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pacspeed, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Speedy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pcrunchy, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Pacman (Crunchy)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pheartb, puckman, pacman, newpuc2, driver_device, 0, ROT90, "Kamiya", "Pacman Hearts 2", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pmad, puckman, pacman, pacman, driver_device, 0, ROT90, "Sir Scotty", "Pacman After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pmad00, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman After Dark 2000", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pmada, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Pacman After Dark (Alternate)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pmheart, puckman, pacman, pacman, driver_device, 0, ROT90, "bootleg", "Puckman Hearts", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, pplusad, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "[Bally Midway]", "Pacman Plus After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, puck255, puckman, pacman, pacman, driver_device, 0, ROT90, "[Namco]", "Puckman (Fixes 255th Maze)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, puckmano, puckman, pacman, pacman, driver_device, 0, ROT90, "Hebus", "Puckman Opposite", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, puckmot1, puckman, pacman, pacman, driver_device, 0, ROT90, "Hebus", "Puckmotik (alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, puckmoti, puckman, pacman, pacman, driver_device, 0, ROT90, "Hebus", "Puckmotik", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, puckren, puckman, pacman, pacman, driver_device, 0, ROT90, "PacHack", "Puckman Renaissance", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, puckrenc, puckman, pacman, pacman0, driver_device, 0, ROT90, "PacHack", "Puckman Renaissance [c]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, punleash, puckman, woodpek, pacman, driver_device, 0, ROT90, "Peter Storey", "Pacman Unleashed", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, roboman, puckman, pacman, pacman, driver_device, 0, ROT90, "Runge Editing", "Robo Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, spuckman, puckman, pacman, spuckman, driver_device, 0, ROT90, "TV Tune / Miet!o!mat", "Super Puckman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, sumelton, puckman, pacman, pacman, driver_device, 0, ROT90, "Staizitto", "Summertime Elton", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, sumeltob, puckman, pacman, pacman, driver_device, 0, ROT90, "Staizitto", "Summertime Elton (old)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, ultra2, puckman, pacman, pacman, driver_device, 0, ROT90, "TwoBit Score", "Ultra Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, ultrapac, puckman, woodpek, pacman, driver_device, 0, ROT90, "PacFan", "UltraPac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vcrunchy, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Crunchy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecbaby, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Baby Maze 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecbaby2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Baby Maze 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecbaby3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Baby Maze 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecpac, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectplus, puckman, pacman, pacman, pacman_state, pacplus, ROT90, "[Bally Midway]", "Vector Pacman Plus", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vectxens, puckman, pacman, pacman, driver_device, 0, ROT90, "Jeff Morris", "Vector Xens Revenge", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vhangly, puckman, pacman, pacman, driver_device, 0, ROT90, "[Nittoh]", "Vector Hangly-Man", MACHINE_SUPPORTS_SAVE )
+GAME( 2008, vhangly3, puckman, pacman, pacman, driver_device, 0, ROT90, "Gatinho [Nittoh]", "Vector Hangly-Man3", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacbell, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Bell)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacelec, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Electric Cowboy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacjail, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Jail)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacms1, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Maze 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacms2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Maze 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacms3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Maze 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacms4, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Maze 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacmsa1, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Attack 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacmsa2, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Attack 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacmsa3, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Attack 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacmsa4, puckman, pacman, pacman, driver_device, 0, ROT90, "[Midway]", "Vector Pacman (Ms. Pacman Attack 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpacshuf, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Shuffle)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vpspeed, puckman, pacman, pacman, driver_device, 0, ROT90, "Snake Eyes", "Vector Pacman (Speedy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, xensad, puckman, pacman, pacman, driver_device, 0, ROT90, "Jeff Morris", "Xens Revenge After Dark", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, xensrev, puckman, pacman, pacman, driver_device, 0, ROT90, "Jeff Morris", "Xens Revenge", MACHINE_SUPPORTS_SAVE )
+
+
+#include "mspacman.cpp"
+#include "multipac.cpp"
+#include "maketrax.cpp"
+
diff --git a/docs/release/src/hbmame/drivers/pcktgal.cpp b/docs/release/src/hbmame/drivers/pcktgal.cpp
new file mode 100644
index 00000000000..d394770ac6e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/pcktgal.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/pcktgal.cpp"
+
+ROM_START( pckgalgr )
+ ROM_REGION( 0x14000, "maincpu", 0 ) /* 64k for code + 16k for banks */
+ ROM_LOAD( "eb04gr.rom", 0x10000, 0x4000, CRC(9a7a826c) SHA1(f0c62a760cc05e31568723eaf354a735c28d20ab) )
+ ROM_CONTINUE( 0x04000, 0xc000)
+ /* 4000-7fff is banked but code falls through from 7fff to 8000, so */
+ /* I have to load the bank directly at 4000. */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 96k for code + 96k for decrypted opcodes */
+ ROM_LOAD( "eb03.f2", 0x10000, 0x8000, CRC(cb029b02) SHA1(fbb3da08ed05ae73fbeeb13e0e2ff735aaf83db8) )
+ ROM_CONTINUE( 0x08000, 0x8000 )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "eb01gr.rom", 0x00000, 0x10000, CRC(9e5e5743) SHA1(3379bcd36148c37bfc8d2eb2909104b367797856) )
+ ROM_LOAD( "eb02gr.rom", 0x10000, 0x10000, CRC(be11227c) SHA1(c41b10f23ce60829a40851ad024e189bc7e5b07c) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "eb00gr.rom", 0x00000, 0x10000, CRC(5eeb40e8) SHA1(703b2b87954032a383c6f34316df2b5ec6a59488) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "eb05.k14", 0x0000, 0x0200, CRC(3b6198cb) SHA1(d32b364cfce99637998ca83ad21783f80364dd65) ) /* 82s147.084 */
+ ROM_LOAD( "eb06.k15", 0x0200, 0x0200, CRC(1fbd4b59) SHA1(84e20329003cf09b849b49e1d83edc330d49f404) ) /* 82s131.101 */
+ROM_END
+
+ROM_START( pcktgalk )
+ ROM_REGION( 0x14000, "maincpu", 0 ) /* 64k for code + 16k for banks */
+ ROM_LOAD( "eb04.j7", 0x10000, 0x4000, CRC(8215d60d) SHA1(ac26dfce7e215be21f2a17f864c5e966b8b8322e) )
+ ROM_CONTINUE( 0x04000, 0xc000)
+ /* 4000-7fff is banked but code falls through from 7fff to 8000, so */
+ /* I have to load the bank directly at 4000. */
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 96k for code + 96k for decrypted opcodes */
+ ROM_LOAD( "eb03.f2", 0x10000, 0x8000, CRC(cb029b02) SHA1(fbb3da08ed05ae73fbeeb13e0e2ff735aaf83db8) )
+ ROM_CONTINUE( 0x08000, 0x8000 )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "eb01k.rom", 0x00000, 0x10000, CRC(3b9f8e29) SHA1(b7ae6d72b9fc1f4964b673346d76a9d24cd5606c) )
+ ROM_LOAD( "eb02.d12", 0x10000, 0x10000, CRC(a9dcd339) SHA1(245824ab86cdfe4b842ce1be0af60f2ff4c6ae07) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "eb00.a1", 0x00000, 0x10000, CRC(6c1a14a8) SHA1(03201197304c5f1d854b8c4f4a5c78336b51f872) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "eb05.k14", 0x0000, 0x0200, CRC(3b6198cb) SHA1(d32b364cfce99637998ca83ad21783f80364dd65) ) /* 82s147.084 */
+ ROM_LOAD( "eb06.k15", 0x0200, 0x0200, CRC(1fbd4b59) SHA1(84e20329003cf09b849b49e1d83edc330d49f404) ) /* 82s131.101 */
+ROM_END
+
+
+GAME( 1987, pckgalgr, pcktgal, pcktgal, pcktgal, pcktgal_state, pcktgal, ROT0, "GreekRoms", "Pocket Gal (Greek)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, pcktgalk, pcktgal, pcktgal, pcktgal, pcktgal_state, pcktgal, ROT0, "Hack", "Pocket Gal (Korean)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/pengo.cpp b/docs/release/src/hbmame/drivers/pengo.cpp
new file mode 100644
index 00000000000..29b1193b267
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/pengo.cpp
@@ -0,0 +1,148 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/pengo.cpp"
+
+
+
+// DSW1 needs to be here, coins/credits combinations to be found out
+static INPUT_PORTS_START( pacpen )
+ PORT_INCLUDE( pengo )
+ PORT_MODIFY("DSW0")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x01, "15000" )
+ PORT_DIPSETTING( 0x02, "20000" )
+ PORT_DIPSETTING( 0x03, DEF_STR( None ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
+ PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5")
+ PORT_DIPSETTING( 0x18, "5" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_BIT(0xe0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_DIPLOCATION("SW1:6,7,8")
+INPUT_PORTS_END
+
+
+
+/* The colours for alpacap7 and alpacap8 are completely wrong, but we are using the roms specified by
+ the original programmer. See http://umlautllama.com/projects/alpaca */
+ROM_START( alpacap7 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "alp7.u8", 0x0000, 0x1000, CRC(E70923E4) SHA1(86A96DC0DEE5F5B532121892528ED2B456D51174) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "alp7_ic92", 0x0000, 0x1000, CRC(693B1A96) SHA1(DED8AC0A4186458FDA6A241C027718742BA87973) )
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_LOAD( "alp_ic105", 0x1000, 0x1000, CRC(BDA193F4) SHA1(A61B5E86809FEFF025C73DE78FC751EAD646125B) )
+ ROM_CONTINUE( 0x3000, 0x1000 )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) )
+ ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) )
+ ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( alpacap8 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "alp8.u8", 0x0000, 0x1000, CRC(ABD45FD7) SHA1(120276D1E9A3DA707DB4263A93418CA37F4F4C9F) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "alp8_ic92", 0x0000, 0x1000, CRC(4A45717F) SHA1(159A74C31FC5D4E5405BCD8D8843A1B381EA01A4) )
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_LOAD( "alp_ic105", 0x1000, 0x1000, CRC(BDA193F4) SHA1(A61B5E86809FEFF025C73DE78FC751EAD646125B) )
+ ROM_CONTINUE( 0x3000, 0x1000 )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) )
+ ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) )
+ ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( pacpen )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pacpen.u8", 0x0000, 0x1000, CRC(59959af1) SHA1(c528a7895338806977f2d9c76da91f67b0f78aed) )
+ ROM_LOAD( "pacpen.u7", 0x1000, 0x1000, CRC(3ed59df1) SHA1(561725f5970954cccf938330fd9f48ad0cb1829b) )
+ ROM_LOAD( "pacpen.u15", 0x2000, 0x1000, CRC(d0c8dcc8) SHA1(3a6829d12d7ef6f09d5e1afa5e0e4ef9d0605aa1) )
+ ROM_LOAD( "pacpen.u14", 0x3000, 0x1000, CRC(39066ad9) SHA1(9789a111b94a3c5aabf910c72c146f71df59f316) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "pacpen.u92", 0x0000, 0x1000, CRC(2f0b5176) SHA1(a6a51d4545329999a5f42ae790bfb3a894429fee) )
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_LOAD( "pacpen.105", 0x1000, 0x1000, CRC(6ba0078e) SHA1(a6e14aa373ef22fe732c335fb1ad6c48fec92530) )
+ ROM_CONTINUE( 0x3000, 0x1000 )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) )
+ ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) )
+ ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( pengopop )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pengo.u8", 0x0000, 0x1000, CRC(3dfeb20e) SHA1(a387b72501da77bf38b58619d2099083a0463e1f) )
+ ROM_LOAD( "pengo.u7", 0x1000, 0x1000, CRC(1db341bd) SHA1(d1c66bb9cf479e6960dbcd35c820097a81eaa555) )
+ ROM_LOAD( "pengo.u15", 0x2000, 0x1000, CRC(7c2842d5) SHA1(a8a568da68babd0ccb9f2cee4182fc01c3138494) )
+ ROM_LOAD( "pengo.u14", 0x3000, 0x1000, CRC(6e3c1f2f) SHA1(2ee821b0f6e0f3cfeae7f5ff25a6e9bd977efce0) )
+ ROM_LOAD( "ep5124.21", 0x4000, 0x1000, CRC(95f354ff) SHA1(fdebc68a6d87f8ecdf52a57a34ae5ae844a13510) )
+ ROM_LOAD( "pengo.u20", 0x5000, 0x1000, CRC(0fdb04b8) SHA1(ed814d58318c1055e475ff678609d189727bf9b4) )
+ ROM_LOAD( "ep5126.32", 0x6000, 0x1000, CRC(e5920728) SHA1(0ac5ffdad7bdcb32e630b9582e1b1aaece5198c9) )
+ ROM_LOAD( "pengopc.u31", 0x7000, 0x1000, CRC(1ede8569) SHA1(0d10a0896847a06185a91eb83c0ccb88c4307b33) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ep1640.92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) )
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_LOAD( "ep1695.105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) )
+ ROM_CONTINUE( 0x3000, 0x1000 )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) )
+ ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) )
+ ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( vecpengo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ep1689c.8", 0x0000, 0x1000, CRC(f37066a8) SHA1(0930de17a763a527057f60783a92662b09554426) )
+ ROM_LOAD( "ep1690b.7", 0x1000, 0x1000, CRC(baf48143) SHA1(4c97529e61eeca5d94938b1dfbeac41bf8cbaf7d) )
+ ROM_LOAD( "ep1691b.15", 0x2000, 0x1000, CRC(adf0eba0) SHA1(c8949fbdbfe5023ee17a789ef60205e834a76c81) )
+ ROM_LOAD( "ep1692b.14", 0x3000, 0x1000, CRC(a086d60f) SHA1(7079769d14dfe3873ffe29623ba0a93413706c6d) )
+ ROM_LOAD( "ep1693b.21", 0x4000, 0x1000, CRC(b72084ec) SHA1(c0508951c2ad8dc31481be8b3bfee2063e3fb0d7) )
+ ROM_LOAD( "ep1694b.20", 0x5000, 0x1000, CRC(94194a89) SHA1(7b47aec61593efd758e2a031f72a854bb0ba8af1) )
+ ROM_LOAD( "ep5118b.32", 0x6000, 0x1000, CRC(af7b12c4) SHA1(207ed466546f40ca60a38031b83aef61446902e2) )
+ ROM_LOAD( "ep5119c.31", 0x7000, 0x1000, CRC(933950fe) SHA1(fec7236b3dee2ea6e39c68440a6d2d9e3f72675a) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "vecp_ic92", 0x0000, 0x1000, CRC(57c5e53c) SHA1(4d1d4cdc352cb2fd14ebbd6678211093be73fb69) )
+ ROM_CONTINUE( 0x2000, 0x1000 )
+ ROM_LOAD( "vecp_ic105", 0x1000, 0x1000, CRC(b93588b0) SHA1(bbb779e538bdf7ebfcb0e12e11b57cabd5ddd29d) )
+ ROM_CONTINUE( 0x3000, 0x1000 )
+
+ ROM_REGION( 0x0420, "proms", 0 )
+ ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) )
+ ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) )
+ ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+
+GAME( 2003, alpacap7, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.7 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS )
+GAME( 2003, alpacap8, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.8 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS )
+GAME( 2016, pacpen, pengo, pengou, pacpen, driver_device, 0, ROT90, "Andrew Hannay", "Pacman on Pengo Hardware", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, pengopop, pengo, pengou, pengo, driver_device, 0, ROT90, "Sega", "Pengo (Popcorn Music)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, vecpengo, pengo, pengoe, pengo, driver_device, 0, ROT90, "T-Bone", "Pengo (Vector sim)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/pgm.cpp b/docs/release/src/hbmame/drivers/pgm.cpp
new file mode 100644
index 00000000000..b1f04e740be
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/pgm.cpp
@@ -0,0 +1,2194 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/pgm.cpp"
+/**************************************************************************************
+Problem sets not included:
+
+KOV Zero 2000: only change is 2 gfx roms, and the result has bad gfx
+
+**************************************************************************************/
+
+ROM_START( pgemeni )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "pgemeni.p103", 0x100000, 0x200000, CRC(6cafa56b) SHA1(0b3447357cf9dc10e9473102a109a2c9f63be66b) )
+
+ ROM_REGION( 0x800000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "pgemeni.t100", 0x180000, 0x400000, CRC(42b979dd) SHA1(38ae8a7e07f1169b876bd41e0a9bfe19ecb0256f) )
+
+ ROM_REGION( 0x1800000, "sprcol", 0 )
+ ROM_LOAD( "pgemeni.a100", 0x0000000, 0x400000, CRC(105d7cee) SHA1(43b19032e9e3a1aeabd7ce11438c6658ac4b5dd0) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "pgemeni.b100", 0x0000000, 0x400000, CRC(b4127373) SHA1(fa731bedec8ff4c19ec68bd44e8ce0b80ec0c716) )
+
+ ROM_REGION( 0x600000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "pgmdemo.m100", 0x400000, 0x200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) )
+ROM_END
+
+ROM_START( pgmdemo )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "pgmdemo.p103", 0x100000, 0x200000, CRC(d3f6ec45) SHA1(4c171ffff6a04b362f71c42de7bc1d7b57da2c0e) )
+
+ ROM_REGION( 0x800000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "pgmdemo.t100", 0x180000, 0x400000, CRC(0596a59a) SHA1(e48cb703e886a5b71ecc839136c642117aa529ef) )
+
+ ROM_REGION( 0x1800000, "sprcol", 0 )
+ ROM_LOAD( "pgmdemo.a100", 0x0000000, 0x400000, CRC(5d0e8fa1) SHA1(95380456c8a6c9c48d4987951f689d5b9a7a397c) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "pgmdemo.b100", 0x0000000, 0x400000, CRC(15dd191f) SHA1(a90f63138c9a9bf9215b17a14635518aed7da8a9) )
+
+ ROM_REGION( 0x600000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "pgmdemo.m100", 0x400000, 0x200000, CRC(8d89877e) SHA1(7d76d48d64d7ac5411d714a4bb83f37e3e5b8df6) )
+ROM_END
+
+ROM_START( pgmfrog )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "pgmfrog.p103", 0x100000, 0x200000, CRC(cdec9e8d) SHA1(183753b3f19e9b06c6059206aac85d865bf1dd66) )
+
+ ROM_REGION( 0x800000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "pgmfrog.t100", 0x180000, 0x400000, CRC(8f58b6d8) SHA1(79b3b503f29593170a7faa93d75707682d800c66) )
+
+ ROM_REGION( 0x1800000, "sprcol", 0 )
+ ROM_LOAD( "pgmfrog.a100", 0x0000000, 0x400000, CRC(dc1eafe6) SHA1(11eb0d02c38df828ae0361bc7624c4658047df67) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "pgmfrog.b100", 0x0000000, 0x400000, CRC(3d44b66f) SHA1(04347002bd942d320c6b8240e4485aec626f2aaa) )
+
+ ROM_REGION( 0x600000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "pgmfrog.m100", 0x400000, 0x200000, CRC(05e2f761) SHA1(c93d94a8f11c41b019fcf9b6a90645416fd2c75b) )
+ROM_END
+
+ROM_START( ketarrb )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ketarrb_v100.u38", 0x000000, 0x200000, CRC(ec7a4f92) SHA1(6351fb386586956fbdb5f0730c481fb539cc267a) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) )
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) )
+
+ ROM_REGION( 0x1000000, "sprcol", 0 )
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) )
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) )
+
+ ROM_REGION( 0x0800000, "sprmask", 0 )
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) )
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 )
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) )
+
+ ROM_REGION( 0x20000, "sram", 0 )
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+// This crashes in attract mode, but if you start a game before that happens, then it plays ok
+ROM_START( orlegendcs )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0101h.s160", 0x100000, 0x200000, CRC(d608ece9) SHA1(0a34bdcfcbb4fad4c499ee559791e29a432bff85) )
+
+ ROM_REGION( 0x800000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0100.u8", 0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
+
+ ROM_REGION( 0x1800000, "sprcol", 0 )
+ ROM_LOAD( "a0100.u5", 0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
+ ROM_LOAD( "a0101.u6", 0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
+ ROM_LOAD( "a0102.u7", 0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
+ ROM_LOAD( "a0103.u8", 0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
+ ROM_LOAD( "a0104.u11", 0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
+ ROM_LOAD( "a0105.u12", 0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0100.u9", 0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
+ ROM_LOAD( "b0101.u10", 0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
+ ROM_LOAD( "b0102.u15", 0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
+
+ ROM_REGION( 0x600000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0100.u1", 0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
+ROM_END
+
+// This crashes in attract mode, but if you start a game before that happens, then it plays ok
+ROM_START( orlegendh )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0101h.s160", 0x100000, 0x200000, CRC(d608ece9) SHA1(0a34bdcfcbb4fad4c499ee559791e29a432bff85) )
+
+ ROM_REGION( 0x800000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0100.u8", 0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
+
+ ROM_REGION( 0x1800000, "sprcol", 0 )
+ ROM_LOAD( "a0100.u5", 0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
+ ROM_LOAD( "a0101.u6", 0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
+ ROM_LOAD( "a0102.u7", 0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
+ ROM_LOAD( "a0103.u8", 0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
+ ROM_LOAD( "a0104.u11", 0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
+ ROM_LOAD( "a0105.u12", 0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0100.u9", 0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
+ ROM_LOAD( "b0101.u10", 0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
+ ROM_LOAD( "b0102.u15", 0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
+
+ ROM_REGION( 0x600000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0100.u1", 0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
+ROM_END
+#if 0
+ROM_START( kovassg ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.assg", 0x100000, 0x400000, CRC(b9885d5c) SHA1(be55e6b3639fbf30e4cbc1bb24e388fd2ad74382) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+#endif
+ROM_START( kovassg )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "assg_v315cn.rom", 0x100000, 0x400000, CRC(b9885d5c) SHA1(be55e6b3639fbf30e4cbc1bb24e388fd2ad74382) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) // this is the kovsh ARM rom, we intercept and modify protection calls
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "lsqh2_t01.rom",0x180000, 0x800000, CRC(d498d97f) SHA1(97a7b6d2ed1170449e7c2899448af7cbbca4c94f) )
+ ROM_IGNORE( 0x800000 ) // second half identical
+
+ ROM_REGION( 0x3000000, "sprcol", 0 )
+ ROM_LOAD( "lsqh2_a01.rom", 0x0000000, 0x1000000, CRC(25ae3efd) SHA1(083d977602ddb5ad54fbdcba000cd4287de8d463) )
+ ROM_LOAD( "lsqh2_a23.rom", 0x1000000, 0x1000000, CRC(7a779112) SHA1(0a7d36b3715063d8eac629b95a9bb3ecd8e54fca) )
+ ROM_LOAD( "lsqh2_a45.rom", 0x2000000, 0x1000000, CRC(5d7de052) SHA1(7663b6cf09f65c4644661005a38f9aba84a32913) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "lsqh2_b01.rom", 0x0000000, 0x1000000, CRC(df7ca696) SHA1(7af3d27957a39de7e4873867c9972c05af7e7964) )
+
+ ROM_REGION( 0xc00000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "lsqh2_m01.rom",0x400000, 0x400000, CRC(01af1b65) SHA1(6cf523fa8f1e03f974771611bb9a4e08a4d4443f) )
+ ROM_IGNORE( 0x400000 ) // 400000-7fffff empty
+ ROM_CONTINUE( 0x800000, 0x400000 )
+ ROM_IGNORE( 0x400000 ) // c00000-ffffff empty
+ROM_END
+
+ROM_START( kovdf ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.df", 0x100000, 0x400000, CRC(a4c3cfed) SHA1(09c7b51652a90cce21ec3977e522e4894b6f0e14) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kov2h1 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "v204-32m.2h1", 0x100000, 0x400000, CRC(1f8cda84) SHA1(9220ef478edc2267c5d96083c2c4ecf465ab9685) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ // supplied rom freezes mame when attract mode starts, this one works
+ ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
+
+ ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
+ ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) )
+
+ ROM_REGION( 0x2800000, "sprcol", 0 )
+ ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) )
+ ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(21063ca7) SHA1(cf561b44902425a920d5cbea5bf65dd9530b2289) )
+ ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) )
+ ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) )
+ ROM_LOAD( "a1204.rom", 0x2000000, 0x0200000, CRC(14b4b5bb) SHA1(d7db5740eec971f2782fb2885ee3af8f2a796550) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) )
+ ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) )
+
+ ROM_REGION( 0x1000000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) )
+ROM_END
+
+ROM_START( kov2h2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "v204-32m.2h2", 0x100000, 0x400000, CRC(7fcc1ab6) SHA1(47f9ab9f7f1b3d7941a70b383072d2d58e07637b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
+
+ ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
+ ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) )
+
+ ROM_REGION( 0x2800000, "sprcol", 0 )
+ ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) )
+ ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(21063ca7) SHA1(cf561b44902425a920d5cbea5bf65dd9530b2289) )
+ ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) )
+ ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) )
+ ROM_LOAD( "a1204.rom", 0x2000000, 0x0200000, CRC(14b4b5bb) SHA1(d7db5740eec971f2782fb2885ee3af8f2a796550) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) )
+ ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) )
+
+ ROM_REGION( 0x1000000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) )
+ROM_END
+
+ROM_START( kov2h3 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "v204-32m.2h3", 0x100000, 0x400000, CRC(baa217ad) SHA1(f781d96870b7ac7043049ab08174bf2cc48979f5) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
+
+ ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
+ ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) )
+
+ ROM_REGION( 0x2800000, "sprcol", 0 )
+ ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) )
+ ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(21063ca7) SHA1(cf561b44902425a920d5cbea5bf65dd9530b2289) )
+ ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) )
+ ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) )
+ ROM_LOAD( "a1204.rom", 0x2000000, 0x0200000, CRC(14b4b5bb) SHA1(d7db5740eec971f2782fb2885ee3af8f2a796550) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) )
+ ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) )
+
+ ROM_REGION( 0x1000000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) )
+ROM_END
+
+ROM_START( kov2h4 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "v204-32m.2h4", 0x100000, 0x400000, CRC(ee8fb036) SHA1(bf1f3006a5e5026ff9bec8d8cb2e147ec2ee6716) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
+
+ ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
+ ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) )
+
+ ROM_REGION( 0x2800000, "sprcol", 0 )
+ ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) )
+ ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(21063ca7) SHA1(cf561b44902425a920d5cbea5bf65dd9530b2289) )
+ ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) )
+ ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) )
+ ROM_LOAD( "a1204.rom", 0x2000000, 0x0200000, CRC(14b4b5bb) SHA1(d7db5740eec971f2782fb2885ee3af8f2a796550) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) )
+ ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) )
+
+ ROM_REGION( 0x1000000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) )
+ROM_END
+
+ROM_START( kov2h5 ) // was kov2psv
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "v204-32mv.rom", 0x100000, 0x400000, CRC(fa8d8e5b) SHA1(b7dc3853145bbc063a2953f5840eced1bbd9186e) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov2p_igs027a_china.bin", 0x000000, 0x04000, CRC(19a0bd95) SHA1(83e9f22512832a51d41c588debe8be7adb3b1df7) )
+
+ ROM_REGION32_LE( 0x400000, "user1", 0 ) /* Protection Data (encrypted external ARM data) */
+ ROM_LOAD( "v200-16.rom", 0x000000, 0x200000, CRC(16a0c11f) SHA1(ce449cef76ebd5657d49b57951e2eb0f132e203e) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t1200.rom", 0x180000, 0x800000, CRC(d7e26609) SHA1(bdad810f82fcf1d50a8791bdc495374ec5a309c6) )
+
+ ROM_REGION( 0x2800000, "sprcol", 0 )
+ ROM_LOAD( "a1200.rom", 0x0000000, 0x0800000, CRC(ceeb81d8) SHA1(5476729443fc1bc9593ae10fbf7cbc5d7290b017) )
+ ROM_LOAD( "a1201.rom", 0x0800000, 0x0800000, CRC(21063ca7) SHA1(cf561b44902425a920d5cbea5bf65dd9530b2289) ) // either this or a1201.rom in kov2 is probably bad
+ ROM_LOAD( "a1202.rom", 0x1000000, 0x0800000, CRC(4bb92fae) SHA1(f0b6d72ed425de1c69dc8f8d5795ea760a4a59b0) )
+ ROM_LOAD( "a1203.rom", 0x1800000, 0x0800000, CRC(e73cb627) SHA1(4c6e48b845a5d1e8f9899010fbf273d54c2b8899) )
+ ROM_LOAD( "a1204.rom", 0x2000000, 0x0200000, CRC(14b4b5bb) SHA1(d7db5740eec971f2782fb2885ee3af8f2a796550) ) // either this or a1204.rom in kov2 is probably bad
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b1200.rom", 0x0000000, 0x0800000, CRC(bed7d994) SHA1(019dfba8154256d64cd249eb0fa4c451edce34b8) )
+ ROM_LOAD( "b1201.rom", 0x0800000, 0x0800000, CRC(f251eb57) SHA1(56a5fc14ab7822f83379cecb26638e5bb266349a) )
+
+ ROM_REGION( 0x1000000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m1200.rom", 0x800000, 0x800000, CRC(b0d88720) SHA1(44ab137e3f8e15b7cb5697ffbd9b1143d8210c4f) )
+ROM_END
+
+ROM_START( kovph1 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph1", 0x100000, 0x400000, CRC(390ebbfc) SHA1(e051a7659a14316c35075cfd2a2f2baba7f18f1a) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600116.119", 0x100000, 0x400000, CRC(30157417) SHA1(6152b82aea174c4201f07e8ebc09f1750140f1ff) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph3 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600948.119", 0x100000, 0x400000, CRC(78aae711) SHA1(af4649201ca775db7c86e8027d9c2511f656fcb1) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph4 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p060006.119", 0x100000, 0x258000, CRC(b071cf49) SHA1(203b946d30640247b8ea5e8a56eeb2a5cb465b62) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph5 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600v93.119", 0x100000, 0x400000, CRC(1fa0e862) SHA1(beb83e1feb7c7bd133e6ad83eba50f381a25ab85) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph6 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600v97.119", 0x100000, 0x400000, CRC(00905e8d) SHA1(3695326f46d03bc2dc46588ee563df9d1ca14b97) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph7 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600lb.119", 0x100000, 0x400000, CRC(8da107cb) SHA1(f6bd684a0edd1f52110e6640bb4d824b789fbb4b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600lb.rom", 0x180000, 0x800000, CRC(9920e650) SHA1(1d46233869d4e65fd8b84ec520fc7e7e3840c7aa) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600lb.rom", 0x0000000, 0x0800000, CRC(21e272ae) SHA1(71bee0d53a80c406c813e1c6ea99774df2e40f9c) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600lb.rom", 0x0000000, 0x0800000, CRC(b79355de) SHA1(4773a83fe646e27f6223897fea56eb438edc9809) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph8 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0602lw.119", 0x100000, 0x400000, CRC(77cfdb2e) SHA1(bf39922b38e8a7db898bb6cdc15f6ca9c2dc14b7) )
+ ROM_LOAD16_WORD_SWAP( "p0601lw.119", 0x100000, 0x271000, CRC(04f76a4b) SHA1(7303956b589e175baa924077953f146b32868182) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600lb.rom", 0x180000, 0x800000, CRC(9920e650) SHA1(1d46233869d4e65fd8b84ec520fc7e7e3840c7aa) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600lw.rom", 0x0000000, 0x0800000, CRC(cca70135) SHA1(2d288df75907e50c7fc2beca5fb9fd895faece55) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602lw.rom", 0x1000000, 0x0800000, CRC(71c8a46c) SHA1(6391eb95e1f2933b0e02518232a4bbcf7c91b73f) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600lw.rom", 0x0000000, 0x0800000, CRC(a4155c55) SHA1(3146774f00dd4156b7423d9983dc6e678aca648d) )
+ ROM_LOAD( "b0601lw.rom", 0x0800000, 0x0400000, CRC(a261d5bd) SHA1(19204c5ab9861f8ccfb0b168e2bb4137f9d14dfe) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph9 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600pj.119", 0x100000, 0x400000, CRC(2ca30916) SHA1(506a8b27cd9911348aa481d7276b2bda1b5758ef) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph10 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600qy.120", 0x100000, 0x400000, CRC(399c8cbc) SHA1(c9702db79ea56e6727577a5a9b8f42b700c67a4f) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600lb.rom", 0x180000, 0x800000, CRC(9920e650) SHA1(1d46233869d4e65fd8b84ec520fc7e7e3840c7aa) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph11 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.119", 0x100000, 0x400000, CRC(e4b0875d) SHA1(e8382e131b0e431406dc2a05cc1ef128302d987c) )
+ // not working ROM_LOAD16_WORD_SWAP( "p0600s8.119", 0x100000, 0x2bc000, CRC(dc214ff5) SHA1(0a7448dbb18259e8e36e26b38b791bcd39e1d05e) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600s8.rom", 0x180000, 0x800000, CRC(e2528ac5) SHA1(f719c2fb80a9d645432bdba90ea15a2d59427cd2) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph12 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600x.119", 0x100000, 0x400000, CRC(3d5ad108) SHA1(f7129f69f16d1589c2b03c246f16518836f09ad7) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph13 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "kovph13.p0600.119", 0x100000, 0x400000, CRC(910edfdf) SHA1(bb222e503fed23bbc9b4d244ba02b1dd756006f9) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph14 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "kovph14.p0600.119", 0x100000, 0x400000, CRC(b5d87e6e) SHA1(98d3bc1327f209b19c159eb54652cabf2b61b434) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph15 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "kovph15.p0600.119", 0x100000, 0x400000, CRC(c9326627) SHA1(a81a46325473be6b138cf76ee2fa9db655a11313) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph16 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600up.119", 0x100000, 0x400000, CRC(dfd96c08) SHA1(544463a734c50d45ce5549dba22aa7a3a3f75dc6) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600up.rom", 0x180000, 0x800000, CRC(9920e650) SHA1(1d46233869d4e65fd8b84ec520fc7e7e3840c7aa) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph17 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph17", 0x100000, 0x400000, CRC(19032b59) SHA1(6462cfa55c6cd6d3668010e11463f1fb6a9641c8) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.ph17", 0x180000, 0x800000, CRC(84567fa4) SHA1(932fdd8095b499acbac69035c12929a2dc9a5564) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.ph17", 0x400000, 0x400000, CRC(75eaf52b) SHA1(4981992441b35343c8bf23e730bba070ddef3350) )
+ROM_END
+
+ROM_START( kovph18 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph18", 0x100000, 0x454f4e, CRC(5b2981c3) SHA1(8b64d86f76991960240126da13729b6cbc8f5513) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.ph18", 0x180000, 0x800000, CRC(d5b8327e) SHA1(5e00c0ff31e7258cc37e389c8bce0a1b8d39d49f) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x854f62, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.ph18", 0x400000, 0x454f62, CRC(24b06143) SHA1(3b712320ee9b4c8df2e0b2a3f05e3ccf11087c0a) )
+ROM_END
+
+ROM_START( kovph19 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph19", 0x100000, 0x400000, CRC(e4ec6880) SHA1(025d1dbc0f067d10d7e10567b9f1bc1bdfac481a) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph20 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph20", 0x100000, 0x400000, CRC(5c9acb7a) SHA1(a25c1813efa7151536971fce39cfb2e1e71c7f91) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph21 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph21", 0x100000, 0x400000, CRC(5e3bdea4) SHA1(5b20a0b9aa02f285425ac65c8df3c1a47e4e61f5) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph22 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph22", 0x100000, 0x400000, CRC(06d1f4d5) SHA1(69e2a580c66c45b0221335cc5eeb7ac0bb6e18b7) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph23 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.ph23", 0x100000, 0x2bc000, CRC(dc214ff5) SHA1(0a7448dbb18259e8e36e26b38b791bcd39e1d05e) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.ph23", 0x180000, 0x800000, CRC(e2528ac5) SHA1(f719c2fb80a9d645432bdba90ea15a2d59427cd2) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph24 ) // was kvplusjq
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600jq.119", 0x100000, 0x400000, CRC(a04866b9) SHA1(bae132ae93244e328a887728d4803c4593e8b01e) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovph25 ) // was kovplusq - crashes after 2nd attract cycle
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.120", 0x100000, 0x400000, CRC(6392a1c3) SHA1(ccbe2e736897a1c969e80fbee93ffcc6defb025a) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1c00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh1 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600hack.322", 0x100000, 0x400000, CRC(c48df7de) SHA1(d97e3603dcc09c5018f333f21d5069eef89289dd) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsharm.bin", 0x000000, 0x04000, CRC(9d8ecc0c) SHA1(51f288e8aa3dd1d4b7f24155fea9c6a7f4cd1144) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x400000, CRC(164b3c94) SHA1(f00ea66886ca6bff74bbeaa49e7f5c75c275d5d7) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh2 )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600re.322", 0x100000, 0x2a3000, CRC(4c38c199) SHA1(48876b6a9cd85d39c4b49b7a47e66d66f2bfd375) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600re.rom", 0x0000000, 0x0800000, CRC(2f5e017e) SHA1(83655f4c4d5f4155f0f8908870c0a97de9d52907) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600re.rom", 0x0000000, 0x0800000, CRC(c16d355b) SHA1(2f711376d489ba19cf466e3ee1d498c93313fcb5) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh3 ) // same as kovsh103 except for b0602 rom
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.103", 0x100000, 0x400000, CRC(f0b3da82) SHA1(4067beb69c049b51bce6154f4cf880600ca4de11) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.sh3", 0x0c00000, 0x0400000, CRC(c3e0b454) SHA1(7aaa9b1abf9f1e7fe9acbba757ff7fbfa46557d3) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh4 ) // p rom encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh4", 0x100000, 0x400000, CRC(739a92ca) SHA1(69387dfbc5015c3cb43283a189b49ae05f93f3fd) )//CRC(7c78e5f3) SHA1(9b1e4bd63fb1294ebeb539966842273c8dc7683b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh5 ) // p rom encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh5", 0x100000, 0x400000, CRC(6c61f80f) SHA1(2797971c5a53c983284525603e2d41b2efd8f26d) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x2000000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.sh5", 0x1800000, 0x0800000, CRC(eadc7955) SHA1(7ae5acded2a5c47ccbeb1726f93f14afdd1ede86) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.sh5", 0x0800000, 0x0800000, CRC(bf30ea67) SHA1(9d8049307c4084765eb1a1adb0530811347f2695) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.sh5", 0x400000, 0x400000, CRC(eae5bf80) SHA1(5052849cb1ea573ee98188c594b4a449c195e441) )
+ROM_END
+
+ROM_START( kovsh6 ) // p rom encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh6", 0x100000, 0x400000, CRC(8d02a952) SHA1(9af1d7193bba64631b8bd89f6de3a04c0bf7891f) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x2000000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.sh6", 0x1800000, 0x0800000, CRC(cbc57bc1) SHA1(ae1ef43a5caaa1e1a0be6ba7a6598eeaeb284a1e) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.sh6", 0x0800000, 0x0800000, CRC(1885039b) SHA1(23f832ee7493d11f78ea06954da748ff1fa3c595) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.sh5", 0x400000, 0x400000, CRC(eae5bf80) SHA1(5052849cb1ea573ee98188c594b4a449c195e441) )
+ROM_END
+
+ROM_START( kovsh7 ) // set has 3 p roms (all encrypted, and 2 b601 roms, and 1 a603 rom, not coded atm
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600h.sh7", 0x100000, 0x400000, CRC(7c05aa5c) SHA1(85aa625187f79a4a7401386ffb6ea3c2492e1be3) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, BAD_DUMP CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) ) // this is the kovsh ARM rom, we intercept and modify protection calls
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x2000000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0540.rom", 0x1800000, 0x0800000, CRC(4fd3413e) SHA1(5e8f3e421342bf558c77e59635f9b5d713e825c2) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0540.rom", 0x0800000, 0x0800000, CRC(60999757) SHA1(118cf058e67858958bcb931e14f5d160c7de87cc) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh8 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh8", 0x100000, 0x400000, CRC(617e53fb) SHA1(5f8b05c11e08d1bef60cda563d15dc7537b5c8f0) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh9 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh9", 0x100000, 0x400000, CRC(12463832) SHA1(7ace58653ab4e9b49556e0969596aeceb2c6dfae) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh10 ) // not set up yet, most likely to be encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.322", 0x100000, 0x400000, CRC(7c78e5f3) SHA1(9b1e4bd63fb1294ebeb539966842273c8dc7683b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh11 ) // p rom same as kovsh8
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.322", 0x100000, 0x400000, CRC(7c78e5f3) SHA1(9b1e4bd63fb1294ebeb539966842273c8dc7683b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh12 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh12", 0x100000, 0x400000, CRC(97330917) SHA1(99bff51d6d007d8f3f45dd36f43e4690ed5f4946) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(7ece721c) SHA1(3aa11f11803643f9aa4bdafa35421626d066c4e9) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh13 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh13", 0x100000, 0x400000, CRC(d80651ec) SHA1(90ccb02b9e7c549ad0bd36379c72127cce4159cb) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh14 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh14", 0x100000, 0x400000, CRC(bba16fe0) SHA1(ce9c42cde5d66913f73a34b66b9615a497103d3b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh15 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh15", 0x100000, 0x400000, CRC(54f6c5d9) SHA1(9abf1fed12261fdddd2e40d30d6ce536e91c1c55) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh16 ) // encrypted
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh15", 0x100000, 0x400000, CRC(54f6c5d9) SHA1(9abf1fed12261fdddd2e40d30d6ce536e91c1c55) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh17 ) // encrypted - was kovshq
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600q.322", 0x100000, 0x400000, CRC(f9e0bdc3) SHA1(fc7080d1255cae6b3a241fbbea24355530de0a8f) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh18 ) // Gem Fighter hack
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh18", 0x100000, 0x400000, CRC(24f9d4dc) SHA1(5e32c9faab39a735fa9c26aac09a7e87d84c252b) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.sh18", 0x0000000, 0x0800000, CRC(7bd1a62d) SHA1(8dee71a336a21b8ba967066477f0285e310686e4) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.sh18", 0x0000000, 0x0800000, CRC(52f5ba74) SHA1(05abef7cdfc9632601628bc2e8df142fc348b914) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+ROM_START( kovsh19 ) // Rugal 98 hack
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "p0600.sh19", 0x100000, 0x400000, CRC(ed4a87a8) SHA1(70845ccd41eee2b31ffb93cd76fc53e2f6e4d5a8) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsh_v100_china.asic", 0x000000, 0x04000, CRC(0f09a5c1) SHA1(621b38c05f33277608d58b49822aebc930ae4870) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x1e00000, "sprcol", 0 )
+ ROM_LOAD( "a0600.sh19", 0x0000000, 0x0800000, CRC(ba94a9ac) SHA1(6bd779196cbcc89864b7f5aae6d363eacd93ed68) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) )
+ ROM_LOAD( "a0604.rom", 0x1a00000, 0x0400000, CRC(26b59fd3) SHA1(53219376056f4766dc5236735599d982ceb56b84) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.sh19", 0x0000000, 0x0800000, CRC(3d90f533) SHA1(7026a2193ed16ec3097f024326fdae08bc639f50) )
+ ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) )
+ ROM_LOAD( "b0602.rom", 0x0c00000, 0x0100000, CRC(9df77934) SHA1(99a3fe337c13702c9aa2373bcd1bb1befd0e2a13) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.sh19", 0x400000, 0x400000, CRC(4a6053b0) SHA1(64b37dc52f7924a727f549a4c2c2682851f9405e) )
+ROM_END
+
+// same problem as MAME kovsgqyza: it crashes after the 2nd attract cycle
+ROM_START( kovsgqyzc )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "pgm_sgqyzc.rom", 0x100000, 0x400000, CRC(09774a3e) SHA1(f5131d07abb048cd3e3549bf0223c9cb485ce7f6) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "kovsgqyzc_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) // bootleg is probably a different device
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "t0600.rom", 0x180000, 0x800000, CRC(4acc1ad6) SHA1(0668dbd5e856c2406910c6b7382548b37c631780) )
+
+ ROM_REGION( 0x2000000, "sprcol", 0 )
+ ROM_LOAD( "a0600.rom", 0x0000000, 0x0800000, CRC(d8167834) SHA1(fa55a99629d03b2ea253392352f70d2c8639a991) )
+ ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) )
+ ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) )
+ ROM_LOAD( "qyza0603.rom", 0x1800000, 0x0800000, CRC(c8b92220) SHA1(4f9c43970d92ac8a8f1563021022797ae8e32012) )
+
+ ROM_REGION( 0x1000000, "sprmask", 0 )
+ ROM_LOAD( "b0600.rom", 0x0000000, 0x0800000, CRC(7d3cd059) SHA1(00cf994b63337e0e4ebe96453daf45f24192af1c) )
+ ROM_LOAD( "qyzb0601.rom", 0x0800000, 0x0800000, CRC(64f55882) SHA1(ab9ac1396587c3d78d06f6ec83cab61d6a9faacd) )
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ PGM_AUDIO_BIOS
+ ROM_LOAD( "m0600.rom", 0x400000, 0x400000, CRC(3ada4fd6) SHA1(4c87adb25d31cbd41f04fbffe31f7bc37173da76) )
+ROM_END
+
+
+
+
+GAME( 2002, ketarrb, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "trap15", "Ketsui: Kizuna Jigoku Tachi (2012/04/17 BACK. VER)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, orlegendh, orlegend, pgm_asic3, orlegend, pgm_asic3_state, orlegend, ROT0, "Hack", "Oriental Legend Plus / Xi You Shi E Zhuan Plus (ver. 2.0 by Enbrow)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1997, orlegendcs, orlegend, pgm_asic3, orlegend, pgm_asic3_state, orlegend, ROT0, "Kryso", "Oriental Legend / Xi Yo Gi Shi Re Zuang (Hack)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2006, pgemeni, pgm, pgm_asic3, pgm, pgm_asic3_state, orlegend, ROT0, "Blastar", "P-Gemeni", MACHINE_SUPPORTS_SAVE ) // has no sound
+GAME( 1997, pgmdemo, pgm, pgm_asic3, pgm, pgm_asic3_state, orlegend, ROT0, "Charles Doty", "Demo - PGM", MACHINE_SUPPORTS_SAVE ) // has no sound
+GAME( 2006, pgmfrog, pgm, pgm_asic3, pgm, pgm_asic3_state, orlegend, ROT0, "Rastersoft", "Frog Feast (PGM)", MACHINE_SUPPORTS_SAVE )
+//GAME( 1999, kovassg, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour (hack set assg)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+//GAME( 2008, kovassg, kovshp, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovassg, ROT0, "bootleg", "Knights of Valour: Aoshi Sanguo / Sangoku Senki: Aoshi Sanguo (ver. 315CN)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
+GAME( 1999, kovdf, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour (hack set df)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsgqyzc, kovplus, pgm_arm_type1_sim, sango_ch, pgm_arm_type1_state, kovboot, ROT0, "bootleg", "Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (bootleg, set 4)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kov2h1, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "Hack", "Knights of Valour 2 Plus (hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kov2h2, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "Hack", "Knights of Valour 2 Plus (hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kov2h3, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "Hack", "Knights of Valour 2 Plus (hack set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kov2h4, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "Hack", "Knights of Valour 2 Plus (hack set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, kov2h5, kov2p, pgm_arm_type2, kov2, pgm_arm_type2_state, kov2p, ROT0, "IGS", "Knights of Valour 2 Plus (ver M204XX)(hack set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 2007, kovph1, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus 2007 (hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph2, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph3, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus A948 (hack set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, kovph4, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "XM", "Knights of Valour Plus 2006 (hack set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph5, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph6, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph7, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 7)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph8, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Fangzhoo", "Knights of Valour Plus HACK (hack set 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph9, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 9)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph10, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph11, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 11)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph12, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 12)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph13, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 13)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph14, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 14)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // crashes in attract mode, but plays ok
+GAME( 1999, kovph15, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 15)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph16, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 16)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kovph17, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hui Yi", "Knights of Valour Plus 2012 (hack set 17)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kovph18, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hui Yi", "Knights of Valour Plus 2012 (hack set 18)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kovph19, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 19)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kovph20, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 20)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 2012, kovph21, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 21)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph22, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 22)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph23, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Hack", "Knights of Valour Plus (hack set 23)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph24, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Huangxu", "Knights of Valour Plus / Sangoku Senki Plus (hack set 24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovph25, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 120)(hack set 25)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh1, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh2, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh3, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 3)", MACHINE_SUPPORTS_SAVE )
+// Note: kovsh4-17 all have encrypted p-rom, and most of the other altered roms haven't been coded in yet
+GAME( 1999, kovsh4, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 4)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh5, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 5)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh6, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 6)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh7, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 7)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh8, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 8)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh9, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 9)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh10, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh11, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 11)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh12, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 12)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh13, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 13)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh14, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 14)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh15, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 15)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh16, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (hack set 16)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh17, kovsh, pgm_arm_type1_sim, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Sertsuna", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 320)(hack set 17)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh18, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (v104, Gem Fighters, hack set 18)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kovsh19, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "Hack", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (v104, Rugal 98, hack set 19)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+
+
+#if 0
+// unused code from mame plus
+
+void pgm_arm_type1_state::kovplus_fix_patch()
+{
+ UINT8 *mem8 = (UINT8 *)(memregion("maincpu")->base());
+
+ mem8[0x1085D4] = 0x1B;
+ mem8[0x1085D5] = 0x3;
+ mem8[0x1085D6] = 0x1B;
+ mem8[0x1085D7] = 0xA4;
+ mem8[0x10EBEE] = 0x10;
+ mem8[0x10EBEF] = 0x15;
+ mem8[0x10EBF0] = 0x1A;
+ mem8[0x10EBF1] = 0x11;
+ mem8[0x11D3E4] = 0xC9;
+ mem8[0x11D3E5] = 0xF8;
+ mem8[0x11D3E6] = 0xB4;
+ mem8[0x11D3E7] = 0x9A;
+ mem8[0x11D492] = 0xA;
+ mem8[0x11D493] = 0x5A;
+ mem8[0x11D494] = 0xA;
+ mem8[0x11D495] = 0x6D;
+ mem8[0x11DAC6] = 0x18;
+ mem8[0x11DAC7] = 0x3B;
+ mem8[0x11DAC8] = 0xD1;
+ mem8[0x11DAC9] = 0xFE;
+ mem8[0x11DACA] = 0xE9;
+ mem8[0x11DACB] = 0xE;
+ mem8[0x11DACC] = 0x90;
+ mem8[0x11DACD] = 0x6B;
+ mem8[0x11DACE] = 0x90;
+ mem8[0x11DACF] = 0xF;
+ mem8[0x11DAD1] = 0x41;
+ mem8[0x11DE56] = 0x12;
+ mem8[0x11DE57] = 0x7F;
+ mem8[0x11DE58] = 0xD3;
+ mem8[0x11DE59] = 0x1C;
+ mem8[0x11DE5A] = 0xEB;
+ mem8[0x11DE5B] = 0xEA;
+ mem8[0x11DE5D] = 0x86;
+ mem8[0x11DE60] = 0x10;
+ mem8[0x11DE61] = 0x7F;
+ mem8[0x11DE62] = 0xD1;
+ mem8[0x11DE63] = 0x82;
+ mem8[0x11DE64] = 0xE9;
+ mem8[0x11DE65] = 0xB6;
+ mem8[0x11DF72] = 0x12;
+ mem8[0x11DF73] = 0x53;
+ mem8[0x11DF74] = 0xD3;
+ mem8[0x11DF75] = 0x84;
+ mem8[0x11DF76] = 0xEB;
+ mem8[0x11DF77] = 0xB8;
+ mem8[0x11DF79] = 0x2A;
+ mem8[0x11DF7C] = 0x12;
+ mem8[0x11DF7D] = 0x23;
+ mem8[0x11DF7E] = 0xD3;
+ mem8[0x11DF7F] = 0xDC;
+ mem8[0x11DF80] = 0x69;
+ mem8[0x11DF81] = 0x7C;
+ mem8[0x12E7A4] = 0x95;
+ mem8[0x12E7A5] = 0xCA;
+ mem8[0x12E7A6] = 0x54;
+ mem8[0x12E7A8] = 0x6C;
+ mem8[0x12E7A9] = 0x5;
+ mem8[0x13B25E] = 0xBA;
+ mem8[0x13B25F] = 0xBF;
+ mem8[0x1463A0] = 0x95;
+ mem8[0x1463A1] = 0x87;
+ mem8[0x1463A2] = 0x7F;
+ mem8[0x1463A3] = 0x95;
+ mem8[0x1463A4] = 0xB4;
+ mem8[0x1463A5] = 0x31;
+ mem8[0x1463A6] = 0x15;
+ mem8[0x1463A8] = 0x1D;
+ mem8[0x162408] = 0xB9;
+ mem8[0x162409] = 0x63;
+ mem8[0x1655E0] = 0x54;
+ mem8[0x1655E2] = 0x68;
+ mem8[0x1655E4] = 0x4D;
+ mem8[0x1655E5] = 0xBA;
+ mem8[0x1655E6] = 0xD1;
+ mem8[0x1655E7] = 0x23;
+ mem8[0x1655E8] = 0xE9;
+ mem8[0x1655EA] = 0x28;
+ mem8[0x1655EB] = 0x6A;
+ mem8[0x183476] = 0xDC;
+ mem8[0x183477] = 0xE7;
+ mem8[0x183DB6] = 0x3D;
+ mem8[0x32A00A] = 0x21;
+ mem8[0x32A00C] = 0x46;
+ mem8[0x32A00D] = 0x93;
+ mem8[0x32A01E] = 0x8B;
+ mem8[0x32A020] = 0x7E;
+ mem8[0x32A021] = 0xD0;
+ mem8[0x381000] = 0x50;
+ mem8[0x381001] = 0x45;
+ mem8[0x381002] = 0xE9;
+ mem8[0x381003] = 0x1C;
+ mem8[0x381004] = 0x87;
+ mem8[0x381005] = 0x3F;
+ mem8[0x381006] = 0x50;
+ mem8[0x381007] = 0xE;
+ mem8[0x381008] = 0x43;
+ mem8[0x381009] = 0x62;
+ mem8[0x38100A] = 0xC9;
+ mem8[0x38100B] = 0x59;
+ mem8[0x38100C] = 0xA7;
+ mem8[0x38100D] = 0x4B;
+ mem8[0x38100E] = 0xB0;
+ mem8[0x38100F] = 0x4;
+ mem8[0x381010] = 0x78;
+ mem8[0x381011] = 0x67;
+ mem8[0x381012] = 0xB9;
+ mem8[0x381013] = 0x97;
+ mem8[0x382000] = 0x50;
+ mem8[0x382001] = 0x1B;
+ mem8[0x382002] = 0x63;
+ mem8[0x382003] = 0x1C;
+ mem8[0x382004] = 0xE9;
+ mem8[0x382005] = 0xE3;
+ mem8[0x382006] = 0x87;
+ mem8[0x382007] = 0xDE;
+ mem8[0x382008] = 0xB0;
+ mem8[0x382009] = 0x2C;
+ mem8[0x38200A] = 0x58;
+ mem8[0x38200B] = 0x59;
+ mem8[0x38200C] = 0x15;
+ mem8[0x38200D] = 0x49;
+ mem8[0x383000] = 0x50;
+ mem8[0x383001] = 0x1B;
+ mem8[0x383002] = 0x60;
+ mem8[0x383003] = 0x1C;
+ mem8[0x383004] = 0xE9;
+ mem8[0x383005] = 0xE3;
+ mem8[0x383006] = 0x87;
+ mem8[0x383007] = 0xDE;
+ mem8[0x383008] = 0xB0;
+ mem8[0x383009] = 0x2C;
+ mem8[0x38300A] = 0x58;
+ mem8[0x38300B] = 0x59;
+ mem8[0x38300C] = 0x2F;
+ mem8[0x38300D] = 0x49;
+ mem8[0x384000] = 0x50;
+ mem8[0x384001] = 0x1B;
+ mem8[0x384002] = 0x63;
+ mem8[0x384003] = 0x1C;
+ mem8[0x384004] = 0xE9;
+ mem8[0x384005] = 0xE3;
+ mem8[0x384006] = 0x87;
+ mem8[0x384007] = 0xDE;
+ mem8[0x384008] = 0x90;
+ mem8[0x384009] = 0x2C;
+ mem8[0x38400A] = 0x78;
+ mem8[0x38400B] = 0x59;
+ mem8[0x38400C] = 0x11;
+ mem8[0x38400D] = 0x48;
+ mem8[0x385000] = 0x50;
+ mem8[0x385001] = 0x1B;
+ mem8[0x385002] = 0x60;
+ mem8[0x385003] = 0x1C;
+ mem8[0x385004] = 0xE9;
+ mem8[0x385005] = 0xE3;
+ mem8[0x385006] = 0x87;
+ mem8[0x385007] = 0xDE;
+ mem8[0x385008] = 0x90;
+ mem8[0x385009] = 0x2C;
+ mem8[0x38500A] = 0x78;
+ mem8[0x38500B] = 0x59;
+ mem8[0x38500C] = 0xEB;
+ mem8[0x38500D] = 0x48;
+ mem8[0x386000] = 0x5;
+ mem8[0x386001] = 0x5D;
+ mem8[0x386002] = 0x71;
+ mem8[0x386003] = 0x1C;
+ mem8[0x386004] = 0x6D;
+ mem8[0x386005] = 0x84;
+ mem8[0x386006] = 0x5;
+ mem8[0x386007] = 0x40;
+ mem8[0x386008] = 0x71;
+ mem8[0x386009] = 0x62;
+ mem8[0x38600A] = 0xC5;
+ mem8[0x38600B] = 0x51;
+ mem8[0x38600C] = 0x6C;
+ mem8[0x38600D] = 0x97;
+ mem8[0x38600E] = 0x79;
+ mem8[0x38600F] = 0x4B;
+ mem8[0x386010] = 0x90;
+ mem8[0x386011] = 0x29;
+ mem8[0x386012] = 0x7B;
+ mem8[0x386013] = 0x4D;
+ mem8[0x386014] = 0xC3;
+ mem8[0x386015] = 0xF8;
+}
+
+void pgm_arm_type1_state::kovboot_fix_patch()
+{
+ UINT8 *mem8 = (UINT8 *)(memregion("maincpu")->base());
+
+ mem8[0x1085D4] = 0x71;
+ mem8[0x1085D5] = 0x4E;
+ mem8[0x1085D6] = 0x71;
+ mem8[0x1085D7] = 0x4E;
+ mem8[0x11D3E4] = 0x29;
+ mem8[0x11D3E5] = 0x42;
+ mem8[0x11D3E6] = 0x54;
+ mem8[0x11D3E7] = 0x29;
+ mem8[0x11D492] = 0x71;
+ mem8[0x11D493] = 0x4E;
+ mem8[0x11D494] = 0x71;
+ mem8[0x11D495] = 0x4E;
+ mem8[0x11DAC6] = 0xF9;
+ mem8[0x11DAC7] = 0x4E;
+ mem8[0x11DAC8] = 0x38;
+ mem8[0x11DAC9] = 0x0;
+ mem8[0x11DACA] = 0x0;
+ mem8[0x11DACB] = 0xF;
+ mem8[0x11DACC] = 0x71;
+ mem8[0x11DACD] = 0x4E;
+ mem8[0x11DACE] = 0x71;
+ mem8[0x11DACF] = 0x4E;
+ mem8[0x11DAD1] = 0x65;
+ mem8[0x11DE56] = 0xF9;
+ mem8[0x11DE57] = 0x4E;
+ mem8[0x11DE58] = 0x38;
+ mem8[0x11DE59] = 0x0;
+ mem8[0x11DE5A] = 0x20;
+ mem8[0x11DE5B] = 0xF;
+ mem8[0x11DE5D] = 0x64;
+ mem8[0x11DE60] = 0xF9;
+ mem8[0x11DE61] = 0x4E;
+ mem8[0x11DE62] = 0x38;
+ mem8[0x11DE63] = 0x0;
+ mem8[0x11DE64] = 0x30;
+ mem8[0x11DE65] = 0x0F;
+ mem8[0x11DF72] = 0xF9;
+ mem8[0x11DF73] = 0x4E;
+ mem8[0x11DF74] = 0x38;
+ mem8[0x11DF75] = 0x0;
+ mem8[0x11DF76] = 0x40;
+ mem8[0x11DF77] = 0x0F;
+ mem8[0x11DF79] = 0x64;
+ mem8[0x11DF7C] = 0xF9;
+ mem8[0x11DF7D] = 0x4E;
+ mem8[0x11DF7E] = 0x38;
+ mem8[0x11DF7F] = 0x0;
+ mem8[0x11DF80] = 0x50;
+ mem8[0x11DF81] = 0x0F;
+ mem8[0x12E7A4] = 0xF9;
+ mem8[0x12E7A5] = 0x4E;
+ mem8[0x12E7A6] = 0x38;
+ mem8[0x12E7A8] = 0x60;
+ mem8[0x12E7A9] = 0x0F;
+ mem8[0x13B25E] = 0x71;
+ mem8[0x13B25F] = 0x4E;
+ mem8[0x1463A0] = 0xF9;
+ mem8[0x1463A1] = 0x4E;
+ mem8[0x1463A2] = 0x13;
+ mem8[0x1463A3] = 0x0;
+ mem8[0x1463A4] = 0xD0;
+ mem8[0x1463A5] = 0xB5;
+ mem8[0x1463A6] = 0x71;
+ mem8[0x1463A8] = 0x71;
+ mem8[0x162408] = 0xD0;
+ mem8[0x162409] = 0x1;
+ mem8[0x1655E0] = 0x3C;
+ mem8[0x1655E2] = 0x0;
+ mem8[0x1655E4] = 0x25;
+ mem8[0x1655E5] = 0x0;
+ mem8[0x1655E6] = 0xB9;
+ mem8[0x1655E7] = 0x90;
+ mem8[0x1655E8] = 0x81;
+ mem8[0x1655EA] = 0x40;
+ mem8[0x1655EB] = 0xB2;
+ mem8[0x183476] = 0xB5;
+ mem8[0x183477] = 0x1;
+ mem8[0x183DB6] = 0x50;
+ mem8[0x32A00A] = 0x68;
+ mem8[0x32A00C] = 0xF;
+ mem8[0x32A00D] = 0x4;
+ mem8[0x32A01E] = 0xC0;
+ mem8[0x32A020] = 0x13;
+ mem8[0x32A021] = 0x2;
+ mem8[0x380F00] = 0x39;
+ mem8[0x380F01] = 0x52;
+ mem8[0x380F02] = 0x80;
+ mem8[0x380F03] = 0x0;
+ mem8[0x380F04] = 0xEE;
+ mem8[0x380F05] = 0xDC;
+ mem8[0x380F06] = 0x39;
+ mem8[0x380F07] = 0xC;
+ mem8[0x380F08] = 0xA;
+ mem8[0x380F09] = 0x0;
+ mem8[0x380F0A] = 0x80;
+ mem8[0x380F0B] = 0x0;
+ mem8[0x380F0C] = 0xEE;
+ mem8[0x380F0D] = 0xDC;
+ mem8[0x380F0E] = 0xF9;
+ mem8[0x380F0F] = 0x4E;
+ mem8[0x380F10] = 0x11;
+ mem8[0x380F11] = 0x0;
+ mem8[0x380F12] = 0xD0;
+ mem8[0x380F13] = 0xDA;
+ mem8[0x380F20] = 0x39;
+ mem8[0x380F21] = 0xC;
+ mem8[0x380F22] = 0xA;
+ mem8[0x380F23] = 0x0;
+ mem8[0x380F24] = 0x80;
+ mem8[0x380F25] = 0x0;
+ mem8[0x380F26] = 0xEE;
+ mem8[0x380F27] = 0xDC;
+ mem8[0x380F28] = 0xF9;
+ mem8[0x380F29] = 0x4E;
+ mem8[0x380F2A] = 0x11;
+ mem8[0x380F2B] = 0x0;
+ mem8[0x380F2C] = 0x5C;
+ mem8[0x380F2D] = 0xDE;
+ mem8[0x380F30] = 0x39;
+ mem8[0x380F31] = 0xC;
+ mem8[0x380F32] = 0x9;
+ mem8[0x380F33] = 0x0;
+ mem8[0x380F34] = 0x80;
+ mem8[0x380F35] = 0x0;
+ mem8[0x380F36] = 0xEE;
+ mem8[0x380F37] = 0xDC;
+ mem8[0x380F38] = 0xF9;
+ mem8[0x380F39] = 0x4E;
+ mem8[0x380F3A] = 0x11;
+ mem8[0x380F3B] = 0x0;
+ mem8[0x380F3C] = 0x66;
+ mem8[0x380F3D] = 0xDE;
+ mem8[0x380F40] = 0x39;
+ mem8[0x380F41] = 0xC;
+ mem8[0x380F42] = 0xA;
+ mem8[0x380F43] = 0x0;
+ mem8[0x380F44] = 0x80;
+ mem8[0x380F45] = 0x0;
+ mem8[0x380F46] = 0xEE;
+ mem8[0x380F47] = 0xDC;
+ mem8[0x380F48] = 0xF9;
+ mem8[0x380F49] = 0x4E;
+ mem8[0x380F4A] = 0x11;
+ mem8[0x380F4B] = 0x0;
+ mem8[0x380F4C] = 0x78;
+ mem8[0x380F4D] = 0xDF;
+ mem8[0x380F50] = 0x39;
+ mem8[0x380F51] = 0xC;
+ mem8[0x380F52] = 0x9;
+ mem8[0x380F53] = 0x0;
+ mem8[0x380F54] = 0x80;
+ mem8[0x380F55] = 0x0;
+ mem8[0x380F56] = 0xEE;
+ mem8[0x380F57] = 0xDC;
+ mem8[0x380F58] = 0xF9;
+ mem8[0x380F59] = 0x4E;
+ mem8[0x380F5A] = 0x11;
+ mem8[0x380F5B] = 0x0;
+ mem8[0x380F5C] = 0x82;
+ mem8[0x380F5D] = 0xDF;
+ mem8[0x380F60] = 0x6C;
+ mem8[0x380F61] = 0x4A;
+ mem8[0x380F62] = 0x18;
+ mem8[0x380F63] = 0x0;
+ mem8[0x380F64] = 0x4;
+ mem8[0x380F65] = 0x67;
+ mem8[0x380F66] = 0x6C;
+ mem8[0x380F67] = 0x42;
+ mem8[0x380F68] = 0x18;
+ mem8[0x380F69] = 0x0;
+ mem8[0x380F6A] = 0xAC;
+ mem8[0x380F6B] = 0x8;
+ mem8[0x380F6C] = 0x5;
+ mem8[0x380F6D] = 0x0;
+ mem8[0x380F6E] = 0x10;
+ mem8[0x380F6F] = 0x1;
+ mem8[0x380F70] = 0xF9;
+ mem8[0x380F71] = 0x4E;
+ mem8[0x380F72] = 0x12;
+ mem8[0x380F73] = 0x0;
+ mem8[0x380F74] = 0xAA;
+ mem8[0x380F75] = 0xE7;
+}
+
+void pgm_arm_type1_state::kovshp_fix_patch()
+{
+ UINT8 *mem8 = (UINT8 *)(memregion("prot")->base());
+
+ mem8[0x2892] = 0x1;
+ mem8[0x2893] = 0x1;
+ mem8[0x289F] = 0x1;
+ mem8[0x28A5] = 0x1;
+ mem8[0x28A8] = 0x1;
+ mem8[0x28A9] = 0x1;
+ mem8[0x2BF3] = 0x48;
+ mem8[0x2BF5] = 0x80;
+ mem8[0x2C92] = 0xF;
+ mem8[0x2C93] = 0x40;
+ mem8[0x2CE1] = 0x6C;
+ mem8[0x2CE2] = 0x48;
+}
+
+DRIVER_INIT_MEMBER(pgm_arm_type1_state,kovshp)
+{
+ pgm_basic_init();
+ kovshp_fix_patch(); // extra line here
+ pgm_kovshp_decrypt(machine());
+ pgm_arm7_type1_latch_init();
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16_delegate(FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word),this));
+}
+
+DRIVER_INIT_MEMBER(pgm_arm_type1_state,kovassga)
+{
+ pgm_basic_init();
+ kovshp_fix_patch(); // extra line here
+// pgm_kovshp_decrypt(machine());
+ pgm_arm7_type1_latch_init();
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16_delegate(FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word),this));
+}
+
+void pgm_arm_type1_state::pgm_decode_kovassg_program()
+{
+ int i;
+ UINT16 *src = (UINT16 *)(memregion("maincpu")->base() + 0x100000);
+ std::vector<UINT16> dst(0x400000);
+
+ for (i = 0; i < 0x400000 / 2; i++)
+ {
+ int j = (i & ~0xffff) | (BITSWAP16(i, 15, 14, 13, 12, 11, 10, 7, 3, 1, 9, 4, 8, 6, 0, 2, 5) ^ 0x019c);
+
+ dst[j] = BITSWAP16(src[j], 13, 9, 10, 11, 2, 0, 12 ,5, 4, 1, 14, 8, 15, 6, 3, 7) ^ 0x9d05;
+ }
+
+ memcpy( src, &dst[0], 0x400000 );
+}
+
+DRIVER_INIT_MEMBER(pgm_arm_type1_state,kovassg)
+{
+ pgm_decode_kovassg_program();
+ pgm_decode_kovlsqh2_tiles();
+
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x0000000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x0800000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x1000000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x1800000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x2000000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprcol")->base() + 0x2800000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprmask")->base() + 0x0000000);
+ pgm_decode_kovlsqh2_sprites(memregion("sprmask")->base() + 0x0800000);
+
+ pgm_decode_kovlsqh2_samples();
+ pgm_basic_init();
+ pgm_arm7_type1_latch_init();
+ /* we only have a china internal ROM dumped for now.. allow region to be changed for debugging (to ensure all alt titles / regions can be seen) */
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this));
+}
+
+DRIVER_INIT_MEMBER(pgm_arm_type1_state,kovplus)
+{
+ pgm_basic_init();
+ kovplus_fix_patch(); // extra line here
+ pgm_kov_decrypt(machine());
+ pgm_arm7_type1_latch_init();
+ m_curslots = 0;
+ m_kov_c0_value = 0;
+ m_kov_cb_value = 0;
+ m_kov_fe_value = 0;
+ arm_sim_handler = &pgm_arm_type1_state::command_handler_kov;
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_w),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_protram_r),this));
+}
+
+DRIVER_INIT_MEMBER(pgm_arm_type1_state,kovboot)
+{
+ pgm_basic_init();
+// pgm_kov_decrypt(machine());
+ kovboot_fix_patch(); // extra line here
+ pgm_arm7_type1_latch_init();
+ m_curslots = 0;
+ m_kov_c0_value = 0;
+ m_kov_cb_value = 0;
+ m_kov_fe_value = 0;
+ arm_sim_handler = &pgm_arm_type1_state::command_handler_kov;
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_w),this));
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16_delegate(FUNC(pgm_arm_type1_state::pgm_arm7_type1_sim_protram_r),this));
+
+}
+#endif
diff --git a/docs/release/src/hbmame/drivers/phoenix.cpp b/docs/release/src/hbmame/drivers/phoenix.cpp
new file mode 100644
index 00000000000..8330a4e0763
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/phoenix.cpp
@@ -0,0 +1,56 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/phoenix.cpp"
+
+ROM_START( phoenixr )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "phoenix.45", 0x0000, 0x0800, CRC(5b8c55a8) SHA1(839c1ca9766f730ec3accd48db70f6429a9c3362) )
+ ROM_LOAD( "phoenix3.46", 0x0800, 0x0800, CRC(5748f486) SHA1(49e6fd836d26ec24105e95227b24cf668e8a470a) )
+ ROM_LOAD( "phoenix.47", 0x1000, 0x0800, CRC(cbbb8839) SHA1(b7f449374cac111081559e39646f973e7e99fd64) )
+ ROM_LOAD( "phoenixr.48", 0x1800, 0x0800, CRC(9253e642) SHA1(9f72d7beb22ffc8dffc43765356e34def36efc12) )
+ ROM_LOAD( "h5-ic49.5a", 0x2000, 0x0800, CRC(a105e4e7) SHA1(b35142a91b6b7fdf7535202671793393c9f4685f) )
+ ROM_LOAD( "h6-ic50.6a", 0x2800, 0x0800, CRC(ac5e9ec1) SHA1(0402e5241d99759d804291998efd43f37ce99917) )
+ ROM_LOAD( "h7-ic51.7a", 0x3000, 0x0800, CRC(2eab35b4) SHA1(849bf8273317cc869bdd67e50c68399ee8ece81d) )
+ ROM_LOAD( "phoenix3.52", 0x3800, 0x0800, CRC(d2c5c984) SHA1(a9432f9aff8a2f5ca1d347443efc008a177d8ae0) )
+
+ ROM_REGION( 0x1000, "bgtiles", 0 )
+ ROM_LOAD( "r_ic23", 0x0000, 0x0800, CRC(02bc87ea) SHA1(bd672a5c62339e18d627d5bb195a9da2a76fd239) )
+ ROM_LOAD( "r_ic24", 0x0800, 0x0800, CRC(675388ee) SHA1(4bef2b7cd28b2311a5775f89ee8756caf405c182) )
+
+ ROM_REGION( 0x1000, "fgtiles", 0 )
+ ROM_LOAD( "r_ic39", 0x0000, 0x0800, CRC(8b1653ba) SHA1(5677fd96d49165b4d71047771e4a0bd8d6fb2400) )
+ ROM_LOAD( "r_ic40", 0x0800, 0x0800, CRC(3b811dfb) SHA1(e2a9fada30bdb096ddfd35abc4717e1cac38c943) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "mmi6301.ic40", 0x0000, 0x0100, CRC(79350b25) SHA1(57411be4c1d89677f7919ae295446da90612c8a8) )
+ ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) )
+ROM_END
+
+ROM_START( phoenixg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "phoenix.45", 0x0000, 0x0800, CRC(5b8c55a8) SHA1(839c1ca9766f730ec3accd48db70f6429a9c3362) )
+ ROM_LOAD( "phoenix.46", 0x0800, 0x0800, CRC(dbc942fa) SHA1(9fe224e6ced407289dfa571468259a021d942b7d) )
+ ROM_LOAD( "phoenix.47", 0x1000, 0x0800, CRC(cbbb8839) SHA1(b7f449374cac111081559e39646f973e7e99fd64) )
+ ROM_LOAD( "phoenixg.48", 0x1800, 0x0800, CRC(63d4c322) SHA1(96bac0950940f6a3a7972ed403431c6fb1941667) )
+ ROM_LOAD( "phoenix.49", 0x2000, 0x0800, CRC(c8a5d6d6) SHA1(ef6ade323544e3edd4101609138ecf35e8cb9577) )
+ ROM_LOAD( "h6-ic50.6a", 0x2800, 0x0800, CRC(ac5e9ec1) SHA1(0402e5241d99759d804291998efd43f37ce99917) )
+ ROM_LOAD( "h7-ic51.7a", 0x3000, 0x0800, CRC(2eab35b4) SHA1(849bf8273317cc869bdd67e50c68399ee8ece81d) )
+ ROM_LOAD( "phoenix.52", 0x3800, 0x0800, CRC(b9915263) SHA1(f61396077b23364b5b26f62c6923394d23a37eb3) )
+
+ ROM_REGION( 0x1000, "bgtiles", 0 )
+ ROM_LOAD( "ic23.3d", 0x0000, 0x0800, CRC(3c7e623f) SHA1(e7ff5fc371664af44785c079e92eeb2d8530187b) )
+ ROM_LOAD( "ic24.4d", 0x0800, 0x0800, CRC(59916d3b) SHA1(71aec70a8e096ed1f0c2297b3ae7dca1b8ecc38d) )
+
+ ROM_REGION( 0x1000, "fgtiles", 0 )
+ ROM_LOAD( "ic39g", 0x0000, 0x0800, CRC(0ed46d30) SHA1(dd21172c11ef60351921ed7067736682237a8db9) )
+ ROM_LOAD( "b2-ic40.4b", 0x0800, 0x0800, CRC(0be2ba91) SHA1(af9243ee23377b632b9b7d0b84d341d06bf22480) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "mmi6301.ic40", 0x0000, 0x0100, CRC(79350b25) SHA1(57411be4c1d89677f7919ae295446da90612c8a8) )
+ ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) )
+ROM_END
+
+
+
+GAME( 2000, phoenixr, phoenix, phoenix, phoenix , driver_device, 0, ROT90, "CYBERYOGI =CO= Windler", "PhoenixR (GDR hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, phoenixg, phoenix, phoenix, phoenixt, driver_device, 0, ROT90, "GreekRoms", "Phoenix (Greek)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/playch10.cpp b/docs/release/src/hbmame/drivers/playch10.cpp
new file mode 100644
index 00000000000..c8a712e1307
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/playch10.cpp
@@ -0,0 +1,237 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/playch10.cpp"
+
+ROM_START( pc_ark ) /* Arkanoid (1942) */
+ BIOS_CPU
+ ROM_LOAD( "u3", 0x0c000, 0x2000, CRC(415b8807) SHA1(9d6161bbc6dec5873cc6d8a570141d4af42fa232) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "arkanoid-u1", 0x08000, 0x8000, CRC(95dbb274) SHA1(792420b622b59d40ec0a264bf0bcd5faf9b652dc) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "arkanoid-u2", 0x00000, 0x2000, CRC(bb8dae70) SHA1(91bdab01839e2ad3d9aaa9041e0855ba26583a9f) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "29893c7f.prm", 0x00000, 0x10, CRC(29893c7f) SHA1(58478b7de2177c8dc1d6885bd34eeeeb5e46d7a3) )
+ROM_END
+
+ROM_START( pc_bb2 ) /* Bubble Bobble Part 2 (Power Blade) */
+ BIOS_CPU
+ ROM_LOAD( "bb2-u3", 0x0c000, 0x2000, CRC(edcc21c6) SHA1(5d73c6a747cfe951dc7c6ddfbb29859e9548aded) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x50000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "bb2-u5", 0x10000, 0x20000, CRC(5f7c1d17) SHA1(48608c9ebd8c0feb9e1126eb4070f185c41d9a19) ) /* banked */
+ ROM_RELOAD( 0x30000, 0x20000 )
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "bb2-u1", 0x00000, 0x20000, CRC(5e59afae) SHA1(5ed7d7c1ed50dbdc01e0a80e6ed5a246349726aa) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "31a05a48.prm", 0x00000, 0x10, CRC(31a05a48) SHA1(8b340600feae03bb5cdab852a9879ecffcc8a2b9) )
+ROM_END
+
+ROM_START( pc_cch ) /* Circus Charlie (Golf) */
+ BIOS_CPU
+ ROM_LOAD( "gf-u3", 0x0c000, 0x2000, CRC(882dea87) SHA1(e3bbca36efa66231b933713dec032bbb926b36e5) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "circusch.u1", 0x0c000, 0x4000, CRC(2cb269d5) SHA1(28a700b4fa5c580adf3ef9891506585ef6a40725) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "circusch.u2", 0x00000, 0x2000, CRC(f76c592a) SHA1(c8bc574c43d26d5072869922573edaaab7a37050) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "2cd98ef6.prm", 0x00000, 0x10, CRC(2cd98ef6) SHA1(bd5142c6a29df674ab835c8beafff7e93712d88f) )
+ROM_END
+
+ROM_START( pc_ctfrc ) /* Contra Force (Power Blade) */
+ BIOS_CPU
+ ROM_LOAD( "ctfrc-u3", 0x0c000, 0x2000, CRC(edcc21c6) SHA1(5d73c6a747cfe951dc7c6ddfbb29859e9548aded) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x50000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "ctfrc-u5", 0x10000, 0x20000, CRC(1ff7fc0d) SHA1(bbf1fb616c13795c9c8e447a72f009ee3746bd90) ) /* banked */
+ ROM_RELOAD( 0x30000, 0x20000 )
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "ctfrc-u1", 0x00000, 0x20000, CRC(7ff2a7f8) SHA1(234041d4c880ccd4acd295c9b2a3d6e37089beda) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "31a05a48.prm", 0x00000, 0x10, CRC(31a05a48) SHA1(8b340600feae03bb5cdab852a9879ecffcc8a2b9) )
+ROM_END
+
+ROM_START( pc_digdg ) /* Dig Dug (1942) */
+ BIOS_CPU
+ ROM_LOAD( "u3", 0x0c000, 0x2000, CRC(415b8807) SHA1(9d6161bbc6dec5873cc6d8a570141d4af42fa232) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "digdug.u1", 0x08000, 0x8000, CRC(a26ae22e) SHA1(0f95aa5f74ef2b192e355381987cf4624fce5653) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "digdug.u2", 0x00000, 0x2000, CRC(2dabc198) SHA1(79f1e65eea2a2841dc47916cb86fbf992b936bd5) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "29893c7f.prm", 0x00000, 0x10, CRC(29893c7f) SHA1(58478b7de2177c8dc1d6885bd34eeeeb5e46d7a3) )
+ROM_END
+
+ROM_START( pc_dk ) /* Donkey Kong (Golf) */
+ BIOS_CPU
+ ROM_LOAD( "gf-u3", 0x0c000, 0x2000, CRC(882dea87) SHA1(e3bbca36efa66231b933713dec032bbb926b36e5) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "dk.u1", 0x0c000, 0x4000, CRC(f56a5b10) SHA1(2c4b1d653194df0996d54d9de9188b270d0337d9) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "dk.u2", 0x00000, 0x2000, CRC(e472a17c) SHA1(3e3d5a2213c132fcb86a97089f03a7ebf8384d36) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "2cd98ef6.prm", 0x00000, 0x10, CRC(2cd98ef6) SHA1(bd5142c6a29df674ab835c8beafff7e93712d88f) )
+ROM_END
+
+ROM_START( pc_dk3 ) /* Donkey Kong 3 (1942) */
+ BIOS_CPU
+ ROM_LOAD( "u3", 0x0c000, 0x2000, CRC(415b8807) SHA1(9d6161bbc6dec5873cc6d8a570141d4af42fa232) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "dk3.u1", 0x08000, 0x8000, CRC(01eb0432) SHA1(94546c80c0bd41acc85f6e73a1425125c967d5db) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "dk3.u2", 0x00000, 0x2000, CRC(85d06c57) SHA1(803adef82721452704607fbf70027ff792636325) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "29893c7f.prm", 0x00000, 0x10, CRC(29893c7f) SHA1(58478b7de2177c8dc1d6885bd34eeeeb5e46d7a3) )
+ROM_END
+
+ROM_START( pc_galag ) /* Galaga (1942) */
+ BIOS_CPU
+ ROM_LOAD( "u3", 0x0c000, 0x2000, CRC(415b8807) SHA1(9d6161bbc6dec5873cc6d8a570141d4af42fa232) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "galaga.u1", 0x08000, 0x8000, CRC(b4c4c5fe) SHA1(16e53935fc998de1eb8a88f73217ef1e2005d026) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "galaga.u2", 0x00000, 0x2000, CRC(e2d5964e) SHA1(62b2cd49a6a4c6f1e2b0742db3b7493e167e9a23) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "29893c7f.prm", 0x00000, 0x10, CRC(29893c7f) SHA1(58478b7de2177c8dc1d6885bd34eeeeb5e46d7a3) )
+ROM_END
+
+ROM_START( pc_gyrus ) /* Gyruss (Dr Mario) */
+ BIOS_CPU
+ ROM_LOAD( "vu-u2", 0x0c000, 0x2000, CRC(4b7869ac) SHA1(37afb84d963233ad92cc424fcf992aa76ea0599f) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x30000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "gyruss-u4", 0x10000, 0x08000, CRC(48ecc48a) SHA1(0afdb50a07ae9610f5c62dc8cca661ca359352be) ) /* banked */
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_RELOAD( 0x20000, 0x08000 )
+ ROM_RELOAD( 0x28000, 0x08000 )
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "gyruss-u1", 0x00000, 0x08000, CRC(3eb77902) SHA1(2419437ad701f5e165778af02b888da268c9a74d) )
+ ROM_RELOAD( 0x08000, 0x08000 )
+ ROM_RELOAD( 0x10000, 0x08000 )
+ ROM_RELOAD( 0x18000, 0x08000 )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "1b26e58c.prm", 0x00000, 0x10, CRC(1b26e58c) SHA1(bd2d81d3cc54966ef154b3487d43ecbc316d6d22) )
+ROM_END
+
+ROM_START( pc_krsty ) /* Krusty's Funhouse (Power Blade) */
+ BIOS_CPU
+ ROM_LOAD( "xu-u3", 0x0c000, 0x2000, CRC(c3984e09) SHA1(70d7e5d9cf9b1f358e1be84a0e8c5997b1aae2d9) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x50000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "xu-u4", 0x10000, 0x20000, CRC(1f4103e5) SHA1(0a45c9b140df98aac7936c84e732410d796a35d7) ) /* banked */
+ ROM_LOAD( "xu-u5", 0x30000, 0x20000, CRC(778c4115) SHA1(beab60c8237ffba27f6730fe7f4c45173cf892e0) ) /* banked */
+
+ ROM_REGION( 0x020000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "xu-u1", 0x00000, 0x20000, CRC(fce8e0ea) SHA1(808f74e9124f273aab7adf5f31c2d5893b06323e) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "0fe6e900.prm", 0x00000, 0x10, CRC(0fe6e900) SHA1(544d8af1aa9186bf76d0a35e78b20e94d3afbcb5) )
+ROM_END
+
+ROM_START( pc_mman5 ) /* Megaman 5 (TMNT2) */
+ BIOS_CPU
+ ROM_LOAD( "2n-u3", 0x0c000, 0x2000, CRC(65298370) SHA1(fd120f43e465a2622f2e2679ace2fb0fe7e709b1) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x50000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "2n-u5", 0x10000, 0x40000, CRC(f3c743aa) SHA1(ee907c7279dba52320e35906ab5b0a1bdbbf0bfb) ) /* banked */
+
+ ROM_REGION( 0x40000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "2n-u1", 0x00000, 0x40000, CRC(25e0ae72) SHA1(45d3ffbb5e399c891df6fcbd78b94b866be9b663) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "237e8519.prm", 0x00000, 0x10, CRC(237e8519) SHA1(81b368d0784e4172c5cf9f4f4b92e29e05d34ae7) )
+ROM_END
+
+ROM_START( pc_pacm ) /* Pacman (Golf) */
+ BIOS_CPU
+ ROM_LOAD( "gf-u3", 0x0c000, 0x2000, CRC(882dea87) SHA1(e3bbca36efa66231b933713dec032bbb926b36e5) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x10000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "pacman.u1", 0x0c000, 0x4000, CRC(de2070ab) SHA1(a9324a94fa3d5ae6396a90c3d6d8399de8f93bd1) )
+
+ ROM_REGION( 0x02000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "pacman.u2", 0x00000, 0x2000, CRC(db6c9324) SHA1(f0d0fa49fbccc3b005742fc72a8dd3dce63909d1) )
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "2cd98ef6.prm", 0x00000, 0x10, CRC(2cd98ef6) SHA1(bd5142c6a29df674ab835c8beafff7e93712d88f) )
+ROM_END
+
+ROM_START( pc_parsl ) /* Parasol Stars - The Story of Bubble Bobble 3 (Ninja Gaiden) */
+ BIOS_CPU
+ ROM_LOAD( "parsl-u2", 0x0c000, 0x2000, CRC(7505de96) SHA1(a9cbe6d4d2d33aeecb3e041315fbb266c886ebf1) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x30000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "parsl-u4", 0x10000, 0x20000, CRC(15382139) SHA1(50991602680588a9e7b03e06d45ee607fc00db13) ) /* banked */
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "parsl-u1", 0x00000, 0x20000, CRC(af5400dc) SHA1(68258fedf7e2ba3afcf20e8261ad93d282c10bd9) ) /* banked */
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "ec5641d6.prm", 0x00000, 0x10, CRC(ec5641d6) SHA1(05f546aec5a9db167688a9abbac922f5ced7f7c5) )
+ROM_END
+
+ROM_START( pc_skykd ) /* Sky Kid (Ninja Gaiden) */
+ BIOS_CPU
+ ROM_LOAD( "u2ng", 0x0c000, 0x2000, CRC(7505de96) SHA1(a9cbe6d4d2d33aeecb3e041315fbb266c886ebf1) ) /* extra bios code for this game */
+ BIOS_GFX
+
+ ROM_REGION( 0x30000, "cart", 0 ) /* 64k for code */
+ ROM_LOAD( "skykid.u4", 0x10000, 0x20000, CRC(c1918ec3) SHA1(e34bd36d9a7df7197b06a0a537b9d786f2303a98) ) /* banked */
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) /* cart gfx */
+ ROM_LOAD( "skykid.u1", 0x00000, 0x20000, CRC(0f58923f) SHA1(805cc304ab0e20337c0b0dcd5ca7f2b7bf8e4656) ) /* banked */
+
+ ROM_REGION( 0x10, "rp5h01", 0 ) /* rp5h01 data */
+ ROM_LOAD( "ec5641d6.prm", 0x00000, 0x10, CRC(ec5641d6) SHA1(05f546aec5a9db167688a9abbac922f5ced7f7c5) )
+ROM_END
+
+GAME( 2002, pc_ark, playch10, playch10, playch10, playch10_state, pc_hrz, ROT0, "NES->PC-10", "Arkanoid (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_bb2, playch10, playch10, playch10, playch10_state, pcgboard, ROT0, "NES->PC-10", "Bubble Bobble 2 (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_cch, playch10, playch10, playch10, playch10_state, playch10, ROT0, "NES->PC-10", "Circus Charlie (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_ctfrc, playch10, playch10, playch10, playch10_state, pcgboard, ROT0, "NES->PC-10", "Contra Force (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_digdg, playch10, playch10, playch10, playch10_state, pc_hrz, ROT0, "NES->PC-10", "Dig Dug (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_dk, playch10, playch10, playch10, playch10_state, playch10, ROT0, "NES->PC-10", "Donkey Kong (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_dk3, playch10, playch10, playch10, playch10_state, pc_hrz, ROT0, "NES->PC-10", "Donkey Kong 3 (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_galag, playch10, playch10, playch10, playch10_state, pc_hrz, ROT0, "NES->PC-10", "Galaga (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_gyrus, playch10, playch10, playch10, playch10_state, pcfboard, ROT0, "NES->PC-10", "Gyruss (PlayChoice-10)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2002, pc_krsty, playch10, playch10, playch10, playch10_state, pcgboard, ROT0, "NES->PC-10", "Krusty's Funhouse (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_mman5, playch10, playch10, playch10, playch10_state, pcgboard, ROT0, "NES->PC-10", "Megaman 5 (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_pacm, playch10, playch10, playch10, playch10_state, playch10, ROT0, "NES->PC-10", "Pacman (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_parsl, playch10, playch10, playch10, playch10_state, pcfboard, ROT0, "NES->PC-10", "Parasol Stars-The Story of Bubble Bobble 3 (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, pc_skykd, playch10, playch10, playch10, playch10_state, pcfboard, ROT0, "NES->PC-10", "Sky Kid (PlayChoice-10)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/powerins.cpp b/docs/release/src/hbmame/drivers/powerins.cpp
new file mode 100644
index 00000000000..ed94f6213dc
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/powerins.cpp
@@ -0,0 +1,45 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/powerins.cpp"
+
+ROM_START( powernbr )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_WORD_SWAP( "93095-3br.u108", 0x00000, 0x80000, CRC(522e776a) SHA1(4b3965a3388fdbb438d5cdbff7194cc3344a51e7) )
+ ROM_LOAD16_WORD_SWAP( "93095-4.u109", 0x80000, 0x80000, CRC(d3d7a782) SHA1(7846de0ebb09bd9b2534cd451ff9aa5175e60647) )
+
+ ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
+ ROM_LOAD( "93095-2.u90", 0x00000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) )
+
+ ROM_REGION( 0x280000, "gfx1", 0 ) /* Layer 0 */
+ ROM_LOAD( "93095-5.u16", 0x000000, 0x100000, CRC(b1371808) SHA1(15fca313314ff2e0caff35841a2fdda97f6235a8) )
+ ROM_LOAD( "93095-6br.u17", 0x100000, 0x100000, CRC(4a7a6bd8) SHA1(953bba9606795ec32c9c0e4e0fd4e88da9708cf8) )
+ ROM_LOAD( "93095-7.u18", 0x200000, 0x080000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) )
+
+ ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 1 */
+ ROM_LOAD( "93095-1br.u15", 0x000000, 0x020000, CRC(7e73e1d8) SHA1(ff8d8ecbb01122291404f93a60d6e0c3fc56c3c7) )
+
+ ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
+ ROM_LOAD( "93095-12.u116", 0x000000, 0x100000, CRC(35f3c2a3) SHA1(70efebfe248401ba3d766dc0e4bcc2846cd0d9a0) )
+ ROM_LOAD( "93095-13.u117", 0x100000, 0x100000, CRC(1ebd45da) SHA1(99b0ac734890673064b2a4b4b57ff2694e338dea) )
+ ROM_LOAD( "93095-14.u118", 0x200000, 0x100000, CRC(760d871b) SHA1(4887122ad0518c90f08c11a7a6b694f3fd218498) )
+ ROM_LOAD( "93095-15.u119", 0x300000, 0x100000, CRC(d011be88) SHA1(837409a2584abdf22e022b0f06181a600a974cbe) )
+ ROM_LOAD( "93095-16.u120", 0x400000, 0x100000, CRC(a9c16c9c) SHA1(a34e81324c875c2a57f778d1dbdda8da81850a29) )
+ ROM_LOAD( "93095-17.u121", 0x500000, 0x100000, CRC(51b57288) SHA1(821473d51565bc0a8b9a979723ce1307b97e517e) )
+ ROM_LOAD( "93095-18.u122", 0x600000, 0x100000, CRC(b135e3f2) SHA1(339fb4007ca0f379b7554a1c4f711f494a371fb2) )
+ ROM_LOAD( "93095-19.u123", 0x700000, 0x100000, CRC(67695537) SHA1(4c78ce3e36f27d2a6a9e50e8bf896335d4d0958a) )
+
+ ROM_REGION( 0x240000, "oki1", 0 ) /* 8 bit adpcm (banked) */
+ ROM_LOAD( "93095-10.u48", 0x040000, 0x100000, CRC(329ac6c5) SHA1(e809b94e2623141f5a48995cfa97fe1ead7ab40b) )
+ ROM_LOAD( "93095-11.u49", 0x140000, 0x100000, CRC(75d6097c) SHA1(3c89a7c9b12087e2d969b822419d3e5f98f5cb1d) )
+
+ ROM_REGION( 0x240000, "oki2", 0 ) /* 8 bit adpcm (banked) */
+ ROM_LOAD( "93095-8.u46", 0x040000, 0x100000, CRC(f019bedb) SHA1(4b6e10f85671c75b666e547887d403d6e607cec8) )
+ ROM_LOAD( "93095-9.u47", 0x140000, 0x100000, CRC(adc83765) SHA1(9e760443f9de21c1bb7e33eaa1541023fcdc60ab) )
+
+ ROM_REGION( 0x0220, "proms", 0 ) /* unknown */
+ ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) )
+ ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) )
+ ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) )
+ROM_END
+
+GAME( 2006, powernbr, powerins, powerins, powerins, driver_device, 0, ROT0, "Neogeo BR team", "Power Instinct (Brasil)", MACHINE_SUPPORTS_SAVE ) // 06.04.25 date
diff --git a/docs/release/src/hbmame/drivers/psikyosh.cpp b/docs/release/src/hbmame/drivers/psikyosh.cpp
new file mode 100644
index 00000000000..f4f1857fdc1
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/psikyosh.cpp
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/psikyosh.cpp"
+
+ROM_START( s1945iiex )
+ ROM_REGION( 0x200000, "maincpu", 0) /* Code */
+ ROM_LOAD32_WORD_SWAP( "2_prog_l.u18-ex", 0x000002, 0x080000, CRC(56276eb7) SHA1(28530132058621382697c678426967d720741853) )
+ ROM_LOAD32_WORD_SWAP( "1_prog_h.u17-ex", 0x000000, 0x080000, CRC(99658d0d) SHA1(f8b7a697819dc1e4993557d9e854aa53964eb4a3) )
+
+ ROM_REGION( 0x2000000, "gfx1", 0 ) /* Tiles */
+ ROM_LOAD32_WORD( "0l.u4", 0x0000000, 0x400000, CRC(bfacf98d) SHA1(19954f12881e6e95e808bd1f2c2f5a425786727f) )
+ ROM_LOAD32_WORD( "0h.u13", 0x0000002, 0x400000, CRC(1266f67c) SHA1(cf93423a827aa92aa54afbbecf8509d2590edc9b) )
+ ROM_LOAD32_WORD( "1l.u3", 0x0800000, 0x400000, CRC(2d3332c9) SHA1(f2e54100a48061bfd589e8765f59ca051176a38b) )
+ ROM_LOAD32_WORD( "1h.u12", 0x0800002, 0x400000, CRC(27b32c3e) SHA1(17a80b3c919d8a282169c019ede8a22d2079c018) )
+ ROM_LOAD32_WORD( "2l.u2", 0x1000000, 0x400000, CRC(91ba6d23) SHA1(fd016a90204b2de43bb709971f7cd891f839de1a) )
+ ROM_LOAD32_WORD( "2h.u20", 0x1000002, 0x400000, CRC(fabf4334) SHA1(f8ec43e083b674700f532575f0d067bd49c5aaf7) )
+ ROM_LOAD32_WORD( "3l.u1", 0x1800000, 0x400000, CRC(a6c3704e) SHA1(cb9881e4235cc8e4bcca4c6ccbd8d8d8634e3624) )
+ ROM_LOAD32_WORD( "3h.u19", 0x1800002, 0x400000, CRC(4cd3ca70) SHA1(5b0a6ea4fe0e821cebe6e840596f648e24dded51) )
+
+ ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */
+ ROM_LOAD( "sound.u32", 0x000000, 0x400000, CRC(ba680ca7) SHA1(b645896e297aad426784aa656bff738e1b33c2a2) )
+
+ ROM_REGION( 0x100, "eeprom", 0 )
+ ROM_LOAD( "eeprom-s1945ii.bin", 0x0000, 0x0100, CRC(7ac38846) SHA1(c5f4b05a94211f3c96b8c472adbe634f2e77d753) )
+ROM_END
+
+ROM_START( s1945sr3 )
+ ROM_REGION( 0x180000, "maincpu", 0)
+ ROM_LOAD32_WORD_SWAP( "2_progl.u16", 0x000002, 0x080000, CRC(16b4e78e) SHA1(ac16e3d7b959e7d28f1afc6eb6c590afa96fa379) )
+ ROM_LOAD32_WORD_SWAP( "1_progh.u17", 0x000000, 0x080000, CRC(6607b00e) SHA1(958d00880deb3d57c607402b8a87adaaa720914c) )
+ ROM_LOAD16_WORD_SWAP( "3_data.u1", 0x100000, 0x080000, CRC(8ff5f7d3) SHA1(420a3d7f2d5ab6a56789d36b418431f12f5f73f5) )
+
+ ROM_REGION( 0x3800000, "gfx1", 0 )
+ ROM_LOAD32_WORD( "0l.u3", 0x0000000, 0x800000, CRC(70a0d52c) SHA1(c9d9534da59123b577dc22020273b94ccdeeb67d) )
+ ROM_LOAD32_WORD( "0h.u10", 0x0000002, 0x800000, CRC(4dcd22b4) SHA1(2df7a7d08df17d2a62d574fccc8ba40aaae21a13) )
+ ROM_LOAD32_WORD( "1l.u4", 0x1000000, 0x800000, CRC(de1042ff) SHA1(468f6dfd5c1f2084c573b6851e314ff2826dc350) )
+ ROM_LOAD32_WORD( "1h.u11", 0x1000002, 0x800000, CRC(b51a4430) SHA1(b51117591b0e351e922f9a6a7930e8b50237e54e) )
+ ROM_LOAD32_WORD( "2l.u5", 0x2000000, 0x800000, CRC(23b02dca) SHA1(0249dceca02b312301a917d98fac481b6a0a9122) )
+ ROM_LOAD32_WORD( "2h.u12", 0x2000002, 0x800000, CRC(9933ab04) SHA1(710e6b20e111c1898666b4466554d039309883cc) )
+ ROM_LOAD32_WORD( "3l.u6", 0x3000000, 0x400000, CRC(f693438c) SHA1(d70e25a3f56aae6575c696d9b7b6d7a9d04f0104) )
+ ROM_LOAD32_WORD( "3h.u13", 0x3000002, 0x400000, CRC(2d0c334f) SHA1(74d94abb34484c7b79dbb989645f53124e53e3b7) )
+
+ ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */
+ ROM_LOAD( "sound.u9", 0x000000, 0x400000, CRC(c5374beb) SHA1(d13e12cbd249246d953c45bb3bfa576a0ec75595) )
+
+ ROM_REGION( 0x100, "eeprom", 0 )
+ ROM_LOAD( "eeprom-s1945iii.bin", 0x0000, 0x0100, CRC(b39f3604) SHA1(d7c66210598096fcafb20adac2f0b293755f4926) )
+ROM_END
+
+
+
+/* YEAR NAME PARENT MACHINE INPUT CLASS INIT MONITOR COMPANY FULLNAME FLAGS */
+GAME( 2009, s1945iiex, s1945ii, psikyo3v1, s1945ii, psikyosh_state, ps3, ROT270, "Pipi899", "Strikers 1945 II (EX Super Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, s1945sr3, s1945iii, psikyo5, s1945iii, psikyosh_state, ps5, ROT270, "hack", "Strikers 1945 III (hack R3)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/rallyx.cpp b/docs/release/src/hbmame/drivers/rallyx.cpp
new file mode 100644
index 00000000000..d0556da7bc4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/rallyx.cpp
@@ -0,0 +1,97 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/rallyx.cpp"
+
+INPUT_PORTS_START( nrallyv )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+
+ PORT_START("P2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+
+ PORT_START("DSW")
+ PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
+ /* TODO: the bonus score depends on the number of lives */
+ PORT_DIPNAME( 0x06, 0x02, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x02, "A" )
+ PORT_DIPSETTING( 0x04, "B" )
+ PORT_DIPSETTING( 0x06, "C" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPNAME( 0x38, 0x00, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x10, "1 Car, Medium" )
+ PORT_DIPSETTING( 0x28, "1 Car, Hard" )
+ PORT_DIPSETTING( 0x18, "2 Cars, Medium" )
+ PORT_DIPSETTING( 0x30, "2 Cars, Hard" )
+ PORT_DIPSETTING( 0x00, "3 Cars, Easy" )
+ PORT_DIPSETTING( 0x20, "3 Cars, Medium" )
+ PORT_DIPSETTING( 0x38, "3 Cars, Hard" )
+ PORT_DIPSETTING( 0x08, "4 Cars, Easy" )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+INPUT_PORTS_END
+
+ROM_START( rxtron ) // roms from rallyx except where marked
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1b", 0x0000, 0x1000, CRC(5882700d) SHA1(b6029e9730f1694894fe8b729ac0ba8d6712dea9) )
+ ROM_LOAD( "rxtron.1e", 0x1000, 0x1000, CRC(8d5b88e5) SHA1(95a8bde287325f88cfc7ce12ad900647831b861e) )
+ ROM_LOAD( "rxtron.1h", 0x2000, 0x1000, CRC(1ecfddc0) SHA1(e800a3bb0e2d35dbfba49c7724689d29ab1912fd) )
+ ROM_LOAD( "rxtron.1k", 0x3000, 0x1000, CRC(2729e00a) SHA1(1f3d17e8342d8a7db57d64fd890b70e64315752a) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "rxtron.8e", 0x0000, 0x1000, CRC(91538868) SHA1(4ba04a56a6255895214bca1e0249e365b95f566d) )
+
+ ROM_REGION( 0x0100, "gfx2", 0 )
+ ROM_LOAD( "rx1-6.8m", 0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "rx1-1.11n", 0x0000, 0x0020, CRC(c7865434) SHA1(70c1c9610ba6f1ead77f347e7132958958bccb31) )
+ ROM_LOAD( "rx1-7.8p", 0x0020, 0x0100, CRC(834d4fda) SHA1(617864d3df0917a513e8255ad8d96ae7a04da5a1) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "rx1-5.3p", 0x0000, 0x0100, CRC(4bad7017) SHA1(3e6da9d798f5e07fa18d6ce7d0b148be98c766d5) )
+ ROM_LOAD( "rx1-4.2m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+ROM_START( nrallyv )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // from nrallyxb except where marked
+ ROM_LOAD( "nrallyx.1b", 0x0000, 0x1000, CRC(9404c8d6) SHA1(ee7e45c22a2fbf72d3ac5ac26ab1111a22623fc5) )
+ ROM_LOAD( "nrallyx.1e", 0x1000, 0x1000, CRC(ac01bf3f) SHA1(8e1a7cce92ef709d18727db6ee7f89936f4b8df8) )
+ ROM_LOAD( "nrallyx.1h", 0x2000, 0x1000, CRC(aeba29b5) SHA1(2a6e4568729b83c430bf70e43c4146ad6a556b1b) )
+ ROM_LOAD( "nrallyx.1k", 0x3000, 0x1000, CRC(78f17da7) SHA1(1e035746a10f91e898166a58093d45bdb158ae47) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "nrallyv.8e", 0x0000, 0x1000, CRC(031acfc5) SHA1(7e0df966b7f2be416e22ec2c36bb86425138c203) )
+
+ ROM_REGION( 0x0100, "gfx2", 0 )
+ ROM_LOAD( "rx1-6.8m", 0x0000, 0x0100, CRC(3c16f62c) SHA1(7a3800be410e306cf85753b9953ffc5575afbcd6) )
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD( "nrx1-1.11n", 0x0000, 0x0020, CRC(a0a49017) SHA1(494c920a157e9f876d533c1b0146275a366c4989) )
+ ROM_LOAD( "nrallyv.pr2", 0x0020, 0x0100, CRC(b2b7ca15) SHA1(e604d58f2f20ebf042f28b01e74eddeacf5baba9) )
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "nrallyv.spr", 0x0000, 0x0100, CRC(b75c4e87) SHA1(450f79a5ae09e34f7624d37769815baf93c0028e) )
+ ROM_LOAD( "rx1-4.2m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )
+ROM_END
+
+GAME( 1998, rxtron, rallyx, rallyx, rallyx, driver_device, 0, ROT0, "Jerky and Sil", "Rally-X Tron", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, nrallyv, rallyx, rallyx, nrallyv, driver_device, 0, ROT90, "hack", "New Rally X (Vertical Screen)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/rastan.cpp b/docs/release/src/hbmame/drivers/rastan.cpp
new file mode 100644
index 00000000000..2c2d209bceb
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/rastan.cpp
@@ -0,0 +1,155 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/rastan.cpp"
+
+ROM_START( rastwack )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rs19_38.bin", 0x00000, 0x10000, CRC(a38ac909) SHA1(66d792fee03c6bd87d15060b9d5cae74137c5ebd) )
+ ROM_LOAD16_BYTE( "wk_rs07_37.bin", 0x00001, 0x10000, CRC(bad60872) SHA1(e020f79b3ac3d2abccfcd5d135d2dc49e1335c7d) )
+ ROM_LOAD16_BYTE( "wk_rs20_40.bin", 0x20000, 0x10000, CRC(6bcf70dc) SHA1(3e369548ac01981c503150b44c2747e6c2cec12a) )
+ ROM_LOAD16_BYTE( "wk_rs08_39.bin", 0x20001, 0x10000, CRC(8838ecc5) SHA1(42b43ab77969bbacdf178fbe73a0a27652ccb297) )
+ ROM_LOAD16_BYTE( "wk_rs21_42.bin", 0x40000, 0x10000, CRC(b626c439) SHA1(976e820edc4ba107c5b579edaaee1e354e85fb67) )
+ ROM_LOAD16_BYTE( "wk_rs09_43.bin", 0x40001, 0x10000, CRC(c928a516) SHA1(fe87fdf2d1b7ba93e1986460eb6af648b58f42e4) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b04-19.49", 0x00000, 0x4000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "wk_ic40_01.bin", 0x00000, 0x20000, CRC(f2111c1f) SHA1(bfdb46aeffe3f08fd5095440a7fa439f52d93d92) )
+ ROM_LOAD( "wk_ic39_03.bin", 0x20000, 0x20000, CRC(a25b10c1) SHA1(6a163e12e00b599cf8430d73e39b5a47a94db41e) )
+ ROM_LOAD( "wk_ic67_02.bin", 0x40000, 0x20000, CRC(a465449c) SHA1(7cae41f4c64641fb6ed8115ae7b934c013b964b2) )
+ ROM_LOAD( "wk_ic66_04.bin", 0x60000, 0x20000, CRC(9d4f8e36) SHA1(4f6634a5c2eeb7be4582f0a2596bb7caa7fddac3) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "wk_ic15_05.bin", 0x00000, 0x20000, CRC(edc6f1bb) SHA1(567e88a4e2bfc39e9f056a9c3aa735297363a376) )
+ ROM_LOAD( "wk_ic14_07.bin", 0x20000, 0x20000, CRC(c672101c) SHA1(5759adc762f9cffb85175ee66c237a195dc2b656) )
+ ROM_LOAD( "wk_ic28_06.bin", 0x40000, 0x20000, CRC(f6ada09a) SHA1(6ddc23f2499164d4a403d4c519e9b14492a1604b) )
+ ROM_LOAD( "wk_ic27_08.bin", 0x60000, 0x20000, CRC(533d567e) SHA1(e61082c4c3e9d1422ff01646bb5fded9fda96f65) )
+
+ ROM_REGION( 0x10000, "adpcm", 0 )
+ ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) )
+ROM_END
+
+ROM_START( rastandh )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b04-38.19", 0x00000, 0x10000, CRC(1c91dbb1) SHA1(17fc55e8546cc0b847aebd67fb4570a1e9f128f3) )
+ ROM_LOAD16_BYTE( "b04-37.7", 0x00001, 0x10000, CRC(ecf20bdd) SHA1(92e46b1edef40a19be17091c09daba598d77bca8) )
+ ROM_LOAD16_BYTE( "dh_ic20_40.bin", 0x20000, 0x10000, CRC(8f1ab70d) SHA1(58356b1b02d7c7de9f59bb8413782f655ebf0012) )
+ ROM_LOAD16_BYTE( "dh_ic08_39.bin", 0x20001, 0x10000, CRC(553a1ed8) SHA1(ef872bcdf681dd5f723907da3a36c065b618c563) )
+ ROM_LOAD16_BYTE( "dh_ic21_42.bin", 0x40000, 0x10000, CRC(08dc89b1) SHA1(836d87bcf2a12586722867fdd7d0d65f823008b7) )
+ ROM_LOAD16_BYTE( "dh_ic09_43.bin", 0x40001, 0x10000, CRC(a93fc337) SHA1(4117a31e3844cc981cae4323dd4c8878b1f77eb1) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b04-19.49", 0x00000, 0x4000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
+ ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
+ ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
+ ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
+ ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
+ ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
+ ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) )
+
+ ROM_REGION( 0x10000, "adpcm", 0 )
+ ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) )
+ROM_END
+
+ROM_START( rastand2 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b04-38.19", 0x00000, 0x10000, CRC(1c91dbb1) SHA1(17fc55e8546cc0b847aebd67fb4570a1e9f128f3) )
+ ROM_LOAD16_BYTE( "b04-37.7", 0x00001, 0x10000, CRC(ecf20bdd) SHA1(92e46b1edef40a19be17091c09daba598d77bca8) )
+ ROM_LOAD16_BYTE( "dh_ic20_40.bin", 0x20000, 0x10000, CRC(8f1ab70d) SHA1(58356b1b02d7c7de9f59bb8413782f655ebf0012) )
+ ROM_LOAD16_BYTE( "dh_ic08_39.bin", 0x20001, 0x10000, CRC(553a1ed8) SHA1(ef872bcdf681dd5f723907da3a36c065b618c563) )
+ ROM_LOAD16_BYTE( "b04-42.21", 0x40000, 0x10000, CRC(1857a7cb) SHA1(7d967d04ade648c6ddb19aad9e184b6e272856da) )
+ ROM_LOAD16_BYTE( "d2_ic09_43.bin", 0x40001, 0x10000, CRC(e08d2b2d) SHA1(917017bdc64dc2d1ba15534baef80e581cacf7c1) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b04-19.49", 0x00000, 0x4000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
+ ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
+ ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
+ ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
+ ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
+ ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
+ ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) )
+
+ ROM_REGION( 0x10000, "adpcm", 0 )
+ ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) )
+ROM_END
+
+ROM_START( rastaneh )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b04-38.19", 0x00000, 0x10000, CRC(1c91dbb1) SHA1(17fc55e8546cc0b847aebd67fb4570a1e9f128f3) )
+ ROM_LOAD16_BYTE( "b04-37.7", 0x00001, 0x10000, CRC(ecf20bdd) SHA1(92e46b1edef40a19be17091c09daba598d77bca8) )
+ ROM_LOAD16_BYTE( "dh_ic20_40.bin", 0x20000, 0x10000, CRC(8f1ab70d) SHA1(58356b1b02d7c7de9f59bb8413782f655ebf0012) )
+ ROM_LOAD16_BYTE( "dh_ic08_39.bin", 0x20001, 0x10000, CRC(553a1ed8) SHA1(ef872bcdf681dd5f723907da3a36c065b618c563) )
+ ROM_LOAD16_BYTE( "b04-42.21", 0x40000, 0x10000, CRC(1857a7cb) SHA1(7d967d04ade648c6ddb19aad9e184b6e272856da) )
+ ROM_LOAD16_BYTE( "eh_ic09_43.bin", 0x40001, 0x10000, CRC(71037966) SHA1(f32d87a47535c6eae9016b7cc027d347236c217e) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b04-19.49", 0x00000, 0x4000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
+ ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
+ ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
+ ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
+ ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
+ ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
+ ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) )
+
+ ROM_REGION( 0x10000, "adpcm", 0 )
+ ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) )
+ROM_END
+
+ROM_START( rastane2 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b04-38.19", 0x00000, 0x10000, CRC(1c91dbb1) SHA1(17fc55e8546cc0b847aebd67fb4570a1e9f128f3) )
+ ROM_LOAD16_BYTE( "b04-37.7", 0x00001, 0x10000, CRC(ecf20bdd) SHA1(92e46b1edef40a19be17091c09daba598d77bca8) )
+ ROM_LOAD16_BYTE( "dh_ic20_40.bin", 0x20000, 0x10000, CRC(8f1ab70d) SHA1(58356b1b02d7c7de9f59bb8413782f655ebf0012) )
+ ROM_LOAD16_BYTE( "dh_ic08_39.bin", 0x20001, 0x10000, CRC(553a1ed8) SHA1(ef872bcdf681dd5f723907da3a36c065b618c563) )
+ ROM_LOAD16_BYTE( "e2_ic21_42.bin", 0x40000, 0x10000, CRC(27845873) SHA1(b6197e15ee2655135d0fc8e72cc44fa3bcc73c10) )
+ ROM_LOAD16_BYTE( "e2_ic09_43.bin", 0x40001, 0x10000, CRC(a38131f3) SHA1(f46cda36d698c688f1b1bfee9945915194a30ebd) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 )
+ ROM_LOAD( "b04-19.49", 0x00000, 0x4000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
+ ROM_CONTINUE( 0x10000, 0xc000 )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
+ ROM_LOAD( "b04-03.39", 0x20000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
+ ROM_LOAD( "b04-02.67", 0x40000, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
+ ROM_LOAD( "b04-04.66", 0x60000, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
+ ROM_LOAD( "b04-07.14", 0x20000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
+ ROM_LOAD( "b04-06.28", 0x40000, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
+ ROM_LOAD( "b04-08.27", 0x60000, 0x20000, CRC(feafca05) SHA1(9de9ff1fcf037e5ab25c181b678245041238d6ae) )
+
+ ROM_REGION( 0x10000, "adpcm", 0 )
+ ROM_LOAD( "b04-20.76", 0x0000, 0x10000, CRC(fd1a34cc) SHA1(b1682959521fa295769207b75cf7d839e9ec95fd) )
+ROM_END
+
+
+GAME( 2000, rastwack, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Vogel", "Wacky Rastan", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, rastandh, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Neil Pearce", "Rastan Dragon Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, rastand2, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Neil Pearce", "Rastan Dragon Hack (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, rastaneh, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Neil Pearce", "Rastan Enemy Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, rastane2, rastan, rastan, rastsaga, driver_device, 0, ROT0, "Neil Pearce", "Rastan Enemy Hack (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/retofinv.cpp b/docs/release/src/hbmame/drivers/retofinv.cpp
new file mode 100644
index 00000000000..dfe0eb21f47
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/retofinv.cpp
@@ -0,0 +1,40 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/retofinv.cpp"
+
+ROM_START( retofinv4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a37-03.70", 0x0000, 0x2000, CRC(eae7459d) SHA1(c105f6adbd4c09decaad68ed13163d8f9b55e646) )
+ ROM_LOAD( "a37-02.71", 0x2000, 0x2000, CRC(72895e37) SHA1(42fb904338e9f92a79d587eac401d456e7fb6e55) )
+ ROM_LOAD( "a37-01.72", 0x4000, 0x2000, CRC(505dd20b) SHA1(3a34b1515bb834ff9e2d86b0b43a752d9619307b) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "a37-04.62", 0x0000, 0x2000, CRC(d2899cc1) SHA1(fdbec743b06f4cdcc134ef863e4e71337ad0b2c5) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "a37-05.17", 0x0000, 0x2000, CRC(9025abea) SHA1(2f03e8572f23624d7cd1215a55109e97fd66e271) )
+
+ ROM_REGION( 0x0800, "68705:mcu", 0 )
+ ROM_LOAD( "a37-09.37", 0x00000, 0x0800, BAD_DUMP CRC(79bd6ded) SHA1(4967e95b4461c1bfb4e933d1804677799014f77b) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "4_a37-16.61", 0x0000, 0x2000, CRC(e0de0cc4) SHA1(a9a19ed25de26306a328cc158843f43ade6eede1) )
+
+ ROM_REGION( 0x08000, "gfx2", 0 )
+ ROM_LOAD( "4_a37-10.8", 0x0000, 0x2000, CRC(c691fdbe) SHA1(b2f4c41cb0d059c9aa8045fc3e8e684bcc96b309) )
+ ROM_LOAD( "4_a37-11.9", 0x2000, 0x2000, CRC(0ff8cf5b) SHA1(46a67a8d7d59cdbf1a4ce9e8b9361a5766880e96) )
+ ROM_LOAD( "4_a37-12.10", 0x4000, 0x2000, CRC(90fd7496) SHA1(db2a98f4b07996d178c99a2653e1df1be4619644) )
+ ROM_LOAD( "4_a37-13.11", 0x6000, 0x2000, CRC(a2526b5e) SHA1(a31999c86aff8977cbec4bd24056a097aaa738c7) )
+
+ ROM_REGION( 0x04000, "gfx3", 0 )
+ ROM_LOAD( "4_a37-14.55", 0x0000, 0x2000, CRC(f233c421) SHA1(77da9750f88d032143968104e0b400ed1a07adca) )
+ ROM_LOAD( "4_a37-15.56", 0x2000, 0x2000, CRC(58c3f1c9) SHA1(5e0c46a5cd6adfcccba5cf33271a51a23ff9752a) )
+
+ ROM_REGION( 0x0b00, "proms", 0 )
+ ROM_LOAD( "a37-06.13", 0x0000, 0x0100, CRC(e9643b8b) SHA1(7bbb92a42e7c3effb701fc7b2c24f2470f31b063) )
+ ROM_LOAD( "a37-07.4", 0x0100, 0x0100, CRC(e8f34e11) SHA1(8f438561b8d46ffff00747ed8baf0ebb6a081615) )
+ ROM_LOAD( "a37-08.3", 0x0200, 0x0100, CRC(50030af0) SHA1(e748ae0b8702b7d20fb65c254dceee23246b3d13) )
+ ROM_LOAD( "82s191n", 0x0300, 0x0800, CRC(93c891e3) SHA1(643a0107717b6a434432dda73a0102e6e8adbca7) )
+ROM_END
+
+GAME( 2011, retofinv4, retofinv, retofinv, retofinv, driver_device, 0, ROT90, "Paul Smith", "Return of the Invaders (hack)", 0 )
diff --git a/docs/release/src/hbmame/drivers/schaser.cpp b/docs/release/src/hbmame/drivers/schaser.cpp
new file mode 100644
index 00000000000..0a906ca9ac3
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/schaser.cpp
@@ -0,0 +1,602 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/****************************************************************************************
+
+Space Chaser (CV version)
+
+August, 2008 by Robbbert
+
+No diagram, therefore this is a Hack Job.
+
+
+These cheats exist in this game:
+1. Hold down 2P DOWN (the F key) while it says INSERT COIN. Then insert a coin
+ and play. You will have 2 extra ships.
+2. In the Hard difficulty setting, you normally start at level 4. Hold down the
+ 1P START (the 1 key) while it says INSERT COIN. Then insert a coin and play.
+ You will start at level 5.
+
+
+Changes:
+1. Used the existing Discrete System for all sounds
+2. Removed IN0 as it is never referenced
+3. Identified and documented input cheats
+4. Added watchdog
+5. Added coin lockout
+
+*******************************************************************************************/
+
+#include "emu.h"
+#include "cpu/i8085/i8085.h"
+#include "machine/mb14241.h"
+#include "sound/sn76477.h"
+#include "sound/discrete.h"
+#include "screen.h"
+#include "speaker.h"
+
+#define MW8080BW_MASTER_CLOCK (19968000.0)
+#define MW8080BW_CPU_CLOCK (MW8080BW_MASTER_CLOCK / 10)
+#define MW8080BW_PIXEL_CLOCK (MW8080BW_MASTER_CLOCK / 4)
+#define MW8080BW_HTOTAL (0x140)
+#define MW8080BW_HBEND (0x000)
+#define MW8080BW_HBSTART (0x100)
+#define MW8080BW_VTOTAL (0x106)
+#define MW8080BW_VBEND (0x000)
+#define MW8080BW_VBSTART (0x0e0)
+#define MW8080BW_VCOUNTER_START_NO_VBLANK (0x020)
+#define MW8080BW_VCOUNTER_START_VBLANK (0x0da)
+#define MW8080BW_INT_TRIGGER_COUNT_1 (0x080)
+#define MW8080BW_INT_TRIGGER_VBLANK_1 (0)
+#define MW8080BW_INT_TRIGGER_COUNT_2 MW8080BW_VCOUNTER_START_VBLANK
+#define MW8080BW_INT_TRIGGER_VBLANK_2 (1)
+#define MW8080BW_HPIXCOUNT MW8080BW_HBSTART
+
+class sc_state : public driver_device
+{
+public:
+ sc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this,"maincpu")
+ , m_p_ram(*this, "ram")
+ , m_p_colorram(*this, "colorram")
+ , m_sn(*this, "snsnd")
+ , m_discrete(*this, "discrete")
+ , m_555_timer(*this, "schaser_sh_555")
+ , m_screen(*this, "screen")
+ { }
+
+ DECLARE_READ8_MEMBER(mw8080bw_shift_result_rev_r);
+ DECLARE_READ8_MEMBER(mw8080bw_reversable_shift_result_r);
+ DECLARE_WRITE8_MEMBER(mw8080bw_reversable_shift_count_w);
+ DECLARE_READ8_MEMBER(port02_r);
+ DECLARE_WRITE8_MEMBER(port03_w);
+ DECLARE_WRITE8_MEMBER(port05_w);
+ DECLARE_WRITE8_MEMBER(colour_w);
+ DECLARE_MACHINE_START(sc);
+ DECLARE_MACHINE_RESET(sc);
+ TIMER_DEVICE_CALLBACK_MEMBER(schaser_effect_555_cb);
+ TIMER_CALLBACK_MEMBER(mw8080bw_interrupt_callback);
+ uint32_t screen_update_schasercv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+private:
+
+ bool m_flip_screen;
+ bool m_sound_enabled;
+ bool m_explosion;
+ bool m_555_is_low;
+ attotime m_555_time_remain;
+ int32_t m_555_time_remain_savable;
+ uint8_t m_last_effect;
+ uint8_t m_sound_seq;
+ emu_timer *m_interrupt_timer;
+ uint8_t vpos_to_vysnc_chain_counter( int vpos );
+ int vysnc_chain_counter_to_vpos( uint8_t counter, int vblank );
+ void schaser_reinit_555_time_remain();
+ void mw8080bw_create_interrupt_timer( );
+ void mw8080bw_start_interrupt_timer( );
+ required_device<cpu_device> m_maincpu;
+ required_shared_ptr<uint8_t> m_p_ram;
+ required_shared_ptr<uint8_t> m_p_colorram;
+ required_device<sn76477_device> m_sn;
+ required_device<discrete_device> m_discrete;
+ required_device<timer_device> m_555_timer;
+ required_device<screen_device> m_screen;
+};
+
+/*
+ * The dot sound is a square wave clocked by either the
+ * the 8V or 4V signals
+ *
+ * The frequencies are (for the 8V signal):
+ *
+ * 19.968 MHz crystal / 2 (Qa of 74160 #10) -> 9.984MHz
+ * / 2 (7474 #14) -> 4.992MHz
+ * / 256+16 (74161 #5 and #8) -> 18352.94Hz
+ * / 8 (8V) -> 2294.12 Hz
+ * / 2 the final freq. is 2 toggles -> 1147.06Hz
+ *
+ * for 4V, it's double at 2294.12Hz
+ */
+#define SCHASER_HSYNC 18352.94
+#define SCHASER_4V SCHASER_HSYNC /2 /4
+#define SCHASER_8V SCHASER_HSYNC /2 /8
+
+/* Nodes - Inputs */
+#define SCHASER_DOT_EN NODE_01
+#define SCHASER_DOT_SEL NODE_02
+#define SCHASER_EXP_STREAM NODE_03
+#define SCHASER_MUSIC_BIT NODE_04
+#define SCHASER_SND_EN NODE_05
+/* Nodes - Adjusters */
+#define SCHASER_VR1 NODE_07
+#define SCHASER_VR2 NODE_08
+#define SCHASER_VR3 NODE_09
+/* Nodes - Sounds */
+#define SCHASER_DOT_SND NODE_10
+#define SCHASER_EXP_SND NODE_11
+#define SCHASER_MUSIC_SND NODE_12
+
+DISCRETE_SOUND_START(schaser)
+ /************************************************/
+ /* Input register mapping for schaser */
+ /************************************************/
+ DISCRETE_INPUT_LOGIC (SCHASER_DOT_EN)
+ DISCRETE_INPUT_LOGIC (SCHASER_DOT_SEL)
+ // scale to 0-3.5V
+ DISCRETE_INPUTX_STREAM(SCHASER_EXP_STREAM, 0, 1.0/14100, 2.323)
+ DISCRETE_INPUTX_LOGIC (SCHASER_MUSIC_BIT, DEFAULT_TTL_V_LOGIC_1, 0, 0.0)
+ DISCRETE_INPUT_LOGIC (SCHASER_SND_EN)
+
+ /************************************************/
+ /* Volume adjusters. */
+ /* We will set them to adjust the relative */
+ /* gains. */
+ /************************************************/
+ DISCRETE_ADJUSTMENT(SCHASER_VR1, 0, RES_K(50)/(RES_K(50) + RES_K(470)), DISC_LINADJ, "VR1")
+ DISCRETE_ADJUSTMENT(SCHASER_VR2, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(2)), DISC_LINADJ, "VR2")
+ DISCRETE_ADJUSTMENT(SCHASER_VR3, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(10)), DISC_LINADJ, "VR3")
+
+ /************************************************/
+ /* Dot selection just selects between 4V and 8V */
+ /************************************************/
+ DISCRETE_SQUAREWFIX(NODE_20, 1, SCHASER_4V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
+ DISCRETE_SQUAREWFIX(NODE_21, 1, SCHASER_8V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
+ DISCRETE_SWITCH(NODE_22, SCHASER_DOT_EN, SCHASER_DOT_SEL, NODE_20, NODE_21)
+ DISCRETE_RCFILTER(NODE_23, NODE_22, 560, CAP_U(.1))
+ DISCRETE_RCFILTER(NODE_24, NODE_23, RES_K(6.8) + 560, CAP_U(.1))
+ DISCRETE_MULTIPLY(SCHASER_DOT_SND, NODE_24, SCHASER_VR3)
+
+ /************************************************/
+ /* Explosion/Effect filtering */
+ /************************************************/
+ DISCRETE_RCFILTER(NODE_30, SCHASER_EXP_STREAM, 560, CAP_U(.1))
+ DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(6.8) + 560, CAP_U(.1))
+ DISCRETE_CRFILTER(NODE_32, NODE_31, RES_K(6.8) + 560 + RES_K(2) + RES_K(50), CAP_U(1))
+ DISCRETE_MULTIPLY(SCHASER_EXP_SND, NODE_32, SCHASER_VR2)
+
+ /************************************************/
+ /* Music is just a 1 bit DAC */
+ /************************************************/
+ DISCRETE_CRFILTER(NODE_40, SCHASER_MUSIC_BIT, RES_K(470) + RES_K(50), CAP_U(.01))
+ DISCRETE_MULTIPLY(SCHASER_MUSIC_SND, NODE_40, SCHASER_VR1)
+
+ /************************************************/
+ /* Final mix with gain */
+ /************************************************/
+ DISCRETE_ADDER3(NODE_90, SCHASER_SND_EN, SCHASER_DOT_SND, SCHASER_EXP_SND, SCHASER_MUSIC_SND)
+
+ DISCRETE_OUTPUT(NODE_90, 33080)
+DISCRETE_SOUND_END
+
+static const double schaser_effect_rc[8] =
+{
+ 0,
+ (RES_K(15) + RES_K(20)) * CAP_U(1),
+ (RES_K(39) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(15) + 1.0/RES_K(39)) + RES_K(20)) * CAP_U(1),
+ (RES_K(82) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(15) + 1.0/RES_K(82)) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(15) + 1.0/RES_K(82)) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(15) + 1.0/RES_K(39) + 1.0/RES_K(82)) + RES_K(20)) * CAP_U(1)
+};
+
+WRITE8_MEMBER(sc_state::port03_w)
+{
+ /* bit 1 - Dot Sound Enable
+ bit 2 - Effect Sound A (a stream of pulses)
+ bit 3 - Effect Sound B (a stream of pulses)
+ bit 4 - Explosion (a stream of ff's with some fe's thrown in)
+ bit 5 - Goes high when first dot hit */
+
+ uint8_t effect = 0, byte = data & 0x2c;
+
+ /* If you use fuel, the dot sound turns into a continuous beep.
+
+ The effect sequence is really bizarre, however a pattern exists. */
+
+ m_explosion = BIT(data, 4);
+ if (!m_explosion) m_discrete->write(space, SCHASER_DOT_EN, BIT(data, 1)); /* prevents beep during explosion */
+
+ if (!m_sound_enabled) /* sound disabled */
+ m_sound_seq=0;
+ else
+ if ((m_sound_seq == 0) && (m_sound_enabled)) /* normal play */
+ m_sound_seq=1;
+ else
+ if ((m_sound_seq == 1) && (byte == 0x28)) /* going faster... */
+ m_sound_seq=2;
+ else
+ if ((m_sound_seq == 2) && (byte == 0x24)) /* and faster... */
+ m_sound_seq=3;
+ else
+ if ((m_sound_seq < 4) && (byte == 0x2c)) /* died */
+ m_sound_seq=4;
+ else
+ if ((m_sound_seq > 2) && (byte == 0)) /* finished stage, and the pause before a stage starts */
+ m_sound_seq=5;
+
+ if (m_sound_seq == 1) effect=4; /* normal speed */
+ else
+ if (m_sound_seq == 2) effect=2; /* going faster... */
+ else
+ if (m_sound_seq == 3) effect=1; /* and faster... */
+ /* effect = 0 when no missile on screen, or in attract mode */
+
+
+ if (m_last_effect != effect)
+ {
+ if (effect)
+ {
+ if (m_555_time_remain != attotime::zero)
+ {
+ /* timer re-enabled, use up remaining 555 high time */
+ m_555_timer->adjust(m_555_time_remain, effect);
+ }
+ else if (!m_555_is_low)
+ {
+ /* set 555 high time */
+ attotime new_time = attotime(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
+ m_555_timer->adjust(new_time, effect);
+ }
+ }
+ else
+ {
+ /* disable effect - stops at end of low cycle */
+ if (!m_555_is_low)
+ {
+ m_555_time_remain = attotime::zero;
+ m_555_time_remain_savable = m_555_time_remain.as_double();
+ m_555_timer->adjust(attotime::never);
+ }
+ }
+ m_last_effect = effect;
+ }
+
+ if (m_explosion)
+ m_sn->amplitude_res_w(1.0 / (1.0/RES_K(200) + 1.0/RES_K(68)));
+ else
+ m_sn->amplitude_res_w(RES_K(200));
+
+ m_sn->enable_w(!(m_555_is_low | m_explosion));
+ m_sn->one_shot_cap_voltage_w(!(m_555_is_low | m_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
+ m_sn->mixer_b_w(m_explosion);
+}
+
+WRITE8_MEMBER(sc_state::port05_w)
+{
+ /* bit 0 - Music (DAC)
+ bit 2 - Coin Lockout
+ bit 4 - Sound Enable
+ bit 5 - Flip Screen
+ There are no field control bits. Therefore the green mask can never appear.
+ The sound is enabled early on the stages that should have the mask. */
+
+ m_discrete->write(space, SCHASER_MUSIC_BIT, BIT(data, 0));
+
+ m_sound_enabled = BIT(data, 4);
+ m_discrete->write(space, SCHASER_SND_EN, m_sound_enabled);
+ machine().sound().system_enable(m_sound_enabled);
+
+ machine().bookkeeping().coin_lockout_global_w(BIT(data, 2));
+
+ m_flip_screen = BIT(data, 5) & ioport("CAB")->read();
+}
+
+
+TIMER_DEVICE_CALLBACK_MEMBER(sc_state::schaser_effect_555_cb)
+{
+ uint8_t effect = param;
+ attotime new_time;
+
+ /* Toggle 555 output */
+ m_555_is_low ^= 1;
+ m_555_time_remain = attotime::zero;
+ m_555_time_remain_savable = m_555_time_remain.as_double();
+
+ if (m_555_is_low)
+ new_time = PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)) / 2;
+ else
+ {
+ if (effect)
+ new_time = attotime(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
+ else
+ new_time = attotime::never;
+ }
+ m_555_timer->adjust(new_time, effect);
+ m_sn->enable_w(!(m_555_is_low | m_explosion));
+ m_sn->one_shot_cap_voltage_w(!(m_555_is_low | m_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
+}
+
+
+void sc_state::schaser_reinit_555_time_remain()
+{
+ m_555_time_remain = attotime::from_double(m_555_time_remain_savable);
+}
+
+
+MACHINE_START_MEMBER( sc_state, sc )
+{
+ save_item(NAME(m_flip_screen));
+ save_item(NAME(m_sound_enabled));
+ save_item(NAME(m_explosion));
+ save_item(NAME(m_last_effect));
+ save_item(NAME(m_sound_seq));
+ save_item(NAME(m_555_is_low));
+ save_item(NAME(m_555_time_remain_savable));
+ machine().save().register_postload(save_prepost_delegate(FUNC(sc_state::schaser_reinit_555_time_remain), this));
+ mw8080bw_create_interrupt_timer();
+}
+
+
+MACHINE_RESET_MEMBER( sc_state, sc )
+{
+ m_flip_screen = 0;
+ m_sound_enabled = 0;
+ m_explosion = 0;
+ m_last_effect = 0xff;
+ m_sound_seq = 0;
+ m_555_is_low = 0;
+ m_555_time_remain = attotime::zero;
+ m_555_time_remain_savable = m_555_time_remain.as_double();
+ m_555_timer->adjust(attotime::never);
+
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ port03_w(space, 0, 0);
+ port05_w(space, 0, 0);
+ mw8080bw_start_interrupt_timer();
+}
+
+uint8_t sc_state::vpos_to_vysnc_chain_counter( int vpos )
+{
+ /* convert from a vertical position to the actual values on the vertical sync counters */
+ uint8_t counter;
+ int vblank = (vpos >= MW8080BW_VBSTART);
+
+ if (vblank)
+ counter = vpos - MW8080BW_VBSTART + MW8080BW_VCOUNTER_START_VBLANK;
+ else
+ counter = vpos + MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return counter;
+}
+
+
+int sc_state::vysnc_chain_counter_to_vpos( uint8_t counter, int vblank )
+{
+ /* convert from the vertical sync counters to an actual vertical position */
+ int vpos;
+
+ if (vblank)
+ vpos = counter - MW8080BW_VCOUNTER_START_VBLANK + MW8080BW_VBSTART;
+ else
+ vpos = counter - MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return vpos;
+}
+
+
+TIMER_CALLBACK_MEMBER(sc_state::mw8080bw_interrupt_callback)
+{
+ uint8_t next_counter;
+ int next_vpos;
+ int next_vblank;
+
+ /* compute vector and set the interrupt line */
+ int vpos = m_screen->vpos();
+ uint8_t counter = vpos_to_vysnc_chain_counter(vpos);
+ uint8_t vector = 0xc7 | ((counter & 0x40) >> 2) | ((~counter & 0x40) >> 3);
+ m_maincpu->set_input_line_and_vector(0, HOLD_LINE, vector);
+
+ /* set up for next interrupt */
+ if (counter == MW8080BW_INT_TRIGGER_COUNT_1)
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_2;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_2;
+ }
+ else
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_1;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_1;
+ }
+
+ next_vpos = vysnc_chain_counter_to_vpos(next_counter, next_vblank);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(next_vpos));
+}
+
+
+void sc_state::mw8080bw_create_interrupt_timer( )
+{
+ m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sc_state::mw8080bw_interrupt_callback),this));
+}
+
+
+void sc_state::mw8080bw_start_interrupt_timer( )
+{
+ int vpos = vysnc_chain_counter_to_vpos(MW8080BW_INT_TRIGGER_COUNT_1, MW8080BW_INT_TRIGGER_VBLANK_1);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(vpos));
+}
+
+
+
+uint32_t sc_state::screen_update_schasercv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ pen_t pens[8];
+ offs_t offs;
+ uint8_t i, x, y, data, fg, color;
+
+ for (i = 0; i < 8; i++)
+ pens[i] = rgb_t(pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1));
+
+ for (offs = 0; offs < m_p_ram.bytes(); offs++)
+ {
+ y = offs >> 5;
+ x = offs << 3;
+
+ data = m_p_ram[offs];
+ fg = m_p_colorram[offs & 0x1f9f] & 0x07;
+
+ for (i = 0; i < 8; i++)
+ {
+ color = BIT(data, i) ? fg : 2;
+
+ if (y >= MW8080BW_VCOUNTER_START_NO_VBLANK)
+ {
+ if (m_flip_screen)
+ bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - x) = pens[color];
+ else
+ bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, x) = pens[color];
+ }
+
+ x++;
+ }
+ }
+
+ return 0;
+}
+
+READ8_MEMBER(sc_state::port02_r)
+{
+ uint8_t data = ioport("IN2")->read();
+ if (m_flip_screen) return data;
+ uint8_t in1 = ioport("IN1")->read();
+ return (data & 0x89) | (in1 & 0x70) | (BIT(in1, 3) << 1) | (BIT(in1, 7) << 2);
+}
+
+WRITE8_MEMBER( sc_state::colour_w )
+{
+ m_p_colorram[offset & 0x1f9f] = data;
+}
+
+static ADDRESS_MAP_START( schaser_map, AS_PROGRAM, 8, sc_state )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM
+ AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("ram")
+ AM_RANGE(0x4000, 0x5fff) AM_ROM
+ AM_RANGE(0xc000, 0xdfff) AM_SHARE("colorram") AM_WRITE(colour_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( schasercv_io_map, AS_IO, 8, sc_state )
+ AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
+ AM_RANGE(0x02, 0x02) AM_READ(port02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
+ AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(port03_w)
+ AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
+ AM_RANGE(0x05, 0x05) AM_WRITE(port05_w)
+ AM_RANGE(0x06, 0x06) AM_WRITENOP //(watchdog_reset_w)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( schasercv )
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW1:5")
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:6")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:3" ) /* doesn't do anything */
+
+ PORT_START("VR1")
+ PORT_ADJUSTER( 70, "VR1 - Music Volume" )
+
+ PORT_START("VR2")
+ PORT_ADJUSTER( 90, "VR2 - Explosion/Effect Volume" )
+
+ PORT_START("VR3")
+ PORT_ADJUSTER( 70, "VR3 - Dot Volume" )
+
+ PORT_START("CAB")
+ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( Cocktail ) )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( schasercv, sc_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",I8080,MW8080BW_CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(schaser_map)
+ MCFG_CPU_IO_MAP(schasercv_io_map)
+ MCFG_MACHINE_START_OVERRIDE(sc_state,sc)
+ MCFG_MACHINE_RESET_OVERRIDE(sc_state,sc)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(sc_state, screen_update_schasercv)
+
+ /* add shifter */
+ MCFG_MB14241_ADD("mb14241")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("snsnd", SN76477, 0)
+ MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(470)) // noise + filter
+ MCFG_SN76477_DECAY_RES(RES_M(2.2)) // decay_res
+ MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(4.7)) // attack_decay_cap + attack_res
+ MCFG_SN76477_AMP_RES(0) // amplitude_res
+ MCFG_SN76477_FEEDBACK_RES(RES_K(33)) // feedback_res
+ MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(39)) // VCO volt + cap + res
+ MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage
+ MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res
+ MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_K(220)) // oneshot caps + res
+ MCFG_SN76477_VCO_MODE(1) // VCO mode
+ MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C
+ MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2
+ MCFG_SN76477_ENABLE(1) // enable
+ MCFG_SOUND_ROUTE_EX(0, "discrete", 1.0, 0)
+
+ MCFG_SOUND_ADD("discrete", DISCRETE, 0)
+ MCFG_DISCRETE_INTF(schaser)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+ MCFG_TIMER_DRIVER_ADD("schaser_sh_555", sc_state, schaser_effect_555_cb)
+MACHINE_CONFIG_END
+
+ROM_START( schasrcv )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1", 0x0000, 0x0400, CRC(bec2b16b) SHA1(c62210ecb64d7c38e5b63481d7fe04eb59bb1068) )
+ ROM_LOAD( "2", 0x0400, 0x0400, CRC(9d25e608) SHA1(4cc52a93a3ab96a0ec1d07593e17832fa59b30a1) )
+ ROM_LOAD( "3", 0x0800, 0x0400, CRC(113d0635) SHA1(ab5e98d0b5fc37d7d69bb5c541681a0f66460440) )
+ ROM_LOAD( "4", 0x0c00, 0x0400, CRC(f3a43c8d) SHA1(29a7a8b7d1de763a255cfec79157fd95e7bff551) )
+ ROM_LOAD( "5", 0x1000, 0x0400, CRC(47c84f23) SHA1(61b475fa92b8335f8edd3a128d8ac8561658e464) )
+ ROM_LOAD( "6", 0x1400, 0x0400, CRC(02ff2199) SHA1(e12c235b2064cb4bb426145172e523256e3c6358) )
+ ROM_LOAD( "7", 0x1800, 0x0400, CRC(87d06b88) SHA1(2d743161f85e47cb8ee2a600cbee790b1ad7ad99) )
+ ROM_LOAD( "8", 0x1c00, 0x0400, CRC(6dfaad08) SHA1(2184c4e2f4b6bffdc4fe13e178134331fcd43253) )
+ ROM_LOAD( "9", 0x4000, 0x0400, CRC(3d1a2ae3) SHA1(672ad6590aebdfebc2748455fa638107f3934c41) )
+ ROM_LOAD( "10", 0x4400, 0x0400, CRC(037edb99) SHA1(f2fc5e61f962666e7f6bb81753ac24ea0b97e581) )
+ROM_END
+
+GAME( 1979, schasrcv, 0, schasercv, schasercv, driver_device, 0, ROT270, "Taito", "Space Chaser (CV version)(Extra Sounds)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
diff --git a/docs/release/src/hbmame/drivers/segac2.cpp b/docs/release/src/hbmame/drivers/segac2.cpp
new file mode 100644
index 00000000000..346dbb2e597
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/segac2.cpp
@@ -0,0 +1,15 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/segac2.cpp"
+
+/* http://frogfeast.rastersoft.net/SegaC2.html
+ It appears from the source that the sound is going through a Z80 - but the C2 hardware doesn't have one...
+ Also there are unmapped writes to A00000-A00100, A11100, A11200. */
+
+ROM_START( c2frog )
+ ROM_REGION( 0x1000000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "epr13114.32", 0x000000, 0x020000, CRC(d7039bd3) SHA1(82b9e3a760ebc845afe7bd78f22b897e1a530651) )
+ ROM_LOAD16_BYTE( "epr13113.31", 0x000001, 0x020000, CRC(754b111a) SHA1(5542fc3b955df843e15e7c98aebc4f80c7d44b69) )
+ROM_END
+
+GAME( 2007, c2frog, 0, segac, columns, segac2_state, columns, ROT0, "Rastersoft", "Frog Feast (Sega C2 hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/segag80r.cpp b/docs/release/src/hbmame/drivers/segag80r.cpp
new file mode 100644
index 00000000000..69189ad81ba
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/segag80r.cpp
@@ -0,0 +1,38 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/segag80r.cpp"
+
+ROM_START( astrob2h ) // same as astrob2 except u2 and u4
+ ROM_REGION( 0xc000, "maincpu", 0 )
+ ROM_LOAD( "829b.cpu-u25", 0x0000, 0x0800, CRC(14ae953c) SHA1(eb63d1b95faa5193db7fa6ab245e99325d519b5e) )
+ ROM_LOAD( "888a.prom-u1", 0x0800, 0x0800, CRC(42601744) SHA1(6bb58384c28b2105746a2f410f5e0979609db9bf) )
+ ROM_LOAD( "889b2h.u2", 0x1000, 0x0800, CRC(9fcdc62f) SHA1(6dbf7e1ad62548263ca5edaa81d38cbc7a9a281f) )
+ ROM_LOAD( "890.prom-u3", 0x1800, 0x0800, CRC(26f5b4cf) SHA1(be45e802f976b8847689ae8de7159843ac9100eb) )
+ ROM_LOAD( "891b2h.u4", 0x2000, 0x0800, CRC(74f906dc) SHA1(edf9efc0ec25f578214b26010d99385c0bace3ad) )
+ ROM_LOAD( "892.prom-u5", 0x2800, 0x0800, CRC(2d3c949b) SHA1(17e3c5300793f2345ff6e28e82cd7a22f1d6e41f) )
+ ROM_LOAD( "893.prom-u6", 0x3000, 0x0800, CRC(ccdb1a76) SHA1(1c8f0555e397c5558bbfca1fa1487cc32aca8592) )
+ ROM_LOAD( "894.prom-u7", 0x3800, 0x0800, CRC(66ae5ced) SHA1(81bb6e3adcc76ffbeafefecce5fe5541a7eefc37) )
+ ROM_LOAD( "895.prom-u8", 0x4000, 0x0800, CRC(202cf3a3) SHA1(26fcccfb3e94b2a01d38c14daa66713c223efb18) )
+ ROM_LOAD( "896.prom-u9", 0x4800, 0x0800, CRC(b603fe23) SHA1(3128877355a9c5bba5cd22e9addf4c8b79ee39d2) )
+ ROM_LOAD( "897.prom-u10", 0x5000, 0x0800, CRC(989198c6) SHA1(3344bf7272e388571026c4e68a2e4e5e0ebbc5e3) )
+ ROM_LOAD( "898.prom-u11", 0x5800, 0x0800, CRC(ef2bab04) SHA1(108a9812cb9d1ec4629b0306c45ba164f94ab426) )
+ ROM_LOAD( "899.prom-u12", 0x6000, 0x0800, CRC(e0d189ee) SHA1(dcab31d64e6b2d248a82cbae9e37afe031dfc6cd) )
+ ROM_LOAD( "900.prom-u13", 0x6800, 0x0800, CRC(682d4604) SHA1(6ac0d2d8ff407cc7e10b460736ae7fbc21148640) )
+ ROM_LOAD( "901.prom-u14", 0x7000, 0x0800, CRC(9ed11c61) SHA1(dd965c06d2013acdabd958e713109eeb049d5d5e) )
+ ROM_LOAD( "902.prom-u15", 0x7800, 0x0800, CRC(b4d6c330) SHA1(922a562b5f1a8a286e6777ba7d141bd0db6e2a92) )
+ ROM_LOAD( "903a.prom-u16", 0x8000, 0x0800, CRC(84acc38c) SHA1(86bed143ac2d95116e50e77b5c262d67156c6a59) )
+ ROM_LOAD( "904.prom-u17", 0x8800, 0x0800, CRC(5eba3097) SHA1(e785d1c1cea50aa25e5eea5e58a0c48fd53208c6) )
+ ROM_LOAD( "905.prom-u18", 0x9000, 0x0800, CRC(4f08f9f4) SHA1(755a825b18ed50caa7bf274a0a5c3a1b00b1c070) )
+ ROM_LOAD( "906.prom-u19", 0x9800, 0x0800, CRC(58149df1) SHA1(2bba56576a225ca47ce31a5b6dcc491546dfffec) )
+
+ ROM_REGION( 0x0800, "audiocpu", 0 )
+ ROM_LOAD( "808b.speech-u7", 0x0000, 0x0800, CRC(5988c767) SHA1(3b91a8cd46aa7e714028cc40f700fea32287afb1) )
+
+ ROM_REGION( 0x4000, "speech", 0 )
+ ROM_LOAD( "809a.speech-u6", 0x0000, 0x0800, CRC(893f228d) SHA1(41c08210d322105f5446cfaa1258c194dd078a34) )
+ ROM_LOAD( "810.speech-u5", 0x0800, 0x0800, CRC(ff0163c5) SHA1(158a12f9bf01d25c7e98f34fce56df51d49e5a85) )
+ ROM_LOAD( "811.speech-u4", 0x1000, 0x0800, CRC(219f3978) SHA1(728edb9251f7cde237fa3b005971366a099c6342) )
+ ROM_LOAD( "812a.speech-u3", 0x1800, 0x0800, CRC(410ad0d2) SHA1(9b5f05bb64a6ecfe3543025a10c6ec67de797333) )
+ROM_END
+
+GAME( 1981, astrob2h, astrob, astrob, astrob2, segag80r_state, astrob, ROT270, "Clay Cowgill", "Astro Blaster (ver 2 Hack)", 0 )
diff --git a/docs/release/src/hbmame/drivers/segaorun.cpp b/docs/release/src/hbmame/drivers/segaorun.cpp
new file mode 100644
index 00000000000..1bf93213ba0
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/segaorun.cpp
@@ -0,0 +1,220 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/segaorun.cpp"
+
+ROM_START( outrunen )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "outrunen.133", 0x000000, 0x10000, CRC(90e6ecec) SHA1(a2dfb4934770c107504f358e0b0c1ed6b4dece40) )
+ ROM_LOAD16_BYTE( "outrunen.118", 0x000001, 0x10000, CRC(e227af3c) SHA1(f5387d50b6c1cfa426b89aaaef521217e8c6530a) )
+ ROM_LOAD16_BYTE( "outrunen.132", 0x020000, 0x10000, CRC(0c87bce3) SHA1(25bdbd94d4574d90214a1df9d5a9c56f43675aaf) )
+ ROM_LOAD16_BYTE( "outrunen.117", 0x020001, 0x10000, CRC(28a5e93e) SHA1(7dda2eef158783562b17fd57ad1a94f061e34d5d) )
+
+ ROM_REGION( 0x60000, "subcpu", 0 )
+ ROM_LOAD16_BYTE( "epr-10327a.76", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
+ ROM_LOAD16_BYTE( "epr-10329a.58", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
+ ROM_LOAD16_BYTE( "epr-10328a.75", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
+ ROM_LOAD16_BYTE( "epr-10330a.57", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 )
+ ROM_LOAD( "opr-10268.99", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
+ ROM_LOAD( "opr-10232.102", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
+ ROM_LOAD( "opr-10267.100", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
+ ROM_LOAD( "opr-10231.103", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
+ ROM_LOAD( "opr-10266.101", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
+ ROM_LOAD( "opr-10230.104", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
+
+ ROM_REGION32_LE( 0x100000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "mpr-10371.9", 0x00000, 0x20000, CRC(7cc86208) SHA1(21320f945f7c8e990c97c9b1232a0f4b6bd00f8f) )
+ ROM_LOAD32_BYTE( "mpr-10373.10", 0x00001, 0x20000, CRC(b0d26ac9) SHA1(3a9ce8547cd43b7b04abddf9a9ab5634e0bbfaba) )
+ ROM_LOAD32_BYTE( "mpr-10375.11", 0x00002, 0x20000, CRC(59b60bd7) SHA1(e5d8c67e020608edd24ba87b7687b2ac2483ee7f) )
+ ROM_LOAD32_BYTE( "mpr-10377.12", 0x00003, 0x20000, CRC(17a1b04a) SHA1(9f7210cb4153ac9029a785dcd4b45f4513a4b008) )
+ ROM_LOAD32_BYTE( "mpr-10372.13", 0x80000, 0x20000, CRC(b557078c) SHA1(a3746a2da077a8df4932348f650a061f413e8430) )
+ ROM_LOAD32_BYTE( "mpr-10374.14", 0x80001, 0x20000, CRC(8051e517) SHA1(9c8509fbed170b4ac74c169da573393e54774f49) )
+ ROM_LOAD32_BYTE( "mpr-10376.15", 0x80002, 0x20000, CRC(f3b8f318) SHA1(a5f2532613f33a64441e0f75443c10ba78dccc6e) )
+ ROM_LOAD32_BYTE( "mpr-10378.16", 0x80003, 0x20000, CRC(a1062984) SHA1(4399030a155caf71f2dec7f75c4b65531ab53576) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx (2 identical roms, 1 for each road)
+ ROM_LOAD( "opr-10186.47", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+ ROM_LOAD( "opr-10185.11", 0x8000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr-10187.88", 0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
+
+ ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF )
+ ROM_LOAD( "opr-10193.66", 0x00000, 0x08000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
+ ROM_RELOAD( 0x08000, 0x08000 )
+ ROM_LOAD( "opr-10192.67", 0x10000, 0x08000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_LOAD( "opr-10191.68", 0x20000, 0x08000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
+ ROM_RELOAD( 0x28000, 0x08000 )
+ ROM_LOAD( "opr-10190.69", 0x30000, 0x08000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
+ ROM_RELOAD( 0x38000, 0x08000 )
+ ROM_LOAD( "opr-10189.70", 0x40000, 0x08000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
+ ROM_RELOAD( 0x48000, 0x08000 )
+ ROM_LOAD( "outrunen.71", 0x50000, 0x08000, CRC(37598616) SHA1(e7c8ae6c59742e1de7ec5a95c5aebfab5716d959) )
+ ROM_RELOAD( 0x58000, 0x08000 )
+ROM_END
+
+ROM_START( outrunen0 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "outrunen0.133", 0x000000, 0x10000, CRC(f4d07c15) SHA1(7d1ba7683e2f8c1942281d5de1ce636eec1ea3a1) )
+ ROM_LOAD16_BYTE( "outrunen0.118", 0x000001, 0x10000, CRC(8f97042f) SHA1(ff587eba8fa0c31c30266e6030aa7df3de90e98d) )
+ ROM_LOAD16_BYTE( "outrunen.132", 0x020000, 0x10000, CRC(0c87bce3) SHA1(25bdbd94d4574d90214a1df9d5a9c56f43675aaf) )
+ ROM_LOAD16_BYTE( "outrunen0.117", 0x020001, 0x10000, CRC(ffc9884b) SHA1(35409afaf32a68bcfca4af60a036e66b2defa7fe) )
+
+ ROM_REGION( 0x60000, "subcpu", 0 )
+ ROM_LOAD16_BYTE( "epr-10327a.76", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
+ ROM_LOAD16_BYTE( "epr-10329a.58", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
+ ROM_LOAD16_BYTE( "epr-10328a.75", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
+ ROM_LOAD16_BYTE( "epr-10330a.57", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 )
+ ROM_LOAD( "opr-10268.99", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
+ ROM_LOAD( "opr-10232.102", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
+ ROM_LOAD( "opr-10267.100", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
+ ROM_LOAD( "opr-10231.103", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
+ ROM_LOAD( "opr-10266.101", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
+ ROM_LOAD( "opr-10230.104", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
+
+ ROM_REGION32_LE( 0x100000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "mpr-10371.9", 0x00000, 0x20000, CRC(7cc86208) SHA1(21320f945f7c8e990c97c9b1232a0f4b6bd00f8f) )
+ ROM_LOAD32_BYTE( "mpr-10373.10", 0x00001, 0x20000, CRC(b0d26ac9) SHA1(3a9ce8547cd43b7b04abddf9a9ab5634e0bbfaba) )
+ ROM_LOAD32_BYTE( "mpr-10375.11", 0x00002, 0x20000, CRC(59b60bd7) SHA1(e5d8c67e020608edd24ba87b7687b2ac2483ee7f) )
+ ROM_LOAD32_BYTE( "mpr-10377.12", 0x00003, 0x20000, CRC(17a1b04a) SHA1(9f7210cb4153ac9029a785dcd4b45f4513a4b008) )
+ ROM_LOAD32_BYTE( "mpr-10372.13", 0x80000, 0x20000, CRC(b557078c) SHA1(a3746a2da077a8df4932348f650a061f413e8430) )
+ ROM_LOAD32_BYTE( "mpr-10374.14", 0x80001, 0x20000, CRC(8051e517) SHA1(9c8509fbed170b4ac74c169da573393e54774f49) )
+ ROM_LOAD32_BYTE( "mpr-10376.15", 0x80002, 0x20000, CRC(f3b8f318) SHA1(a5f2532613f33a64441e0f75443c10ba78dccc6e) )
+ ROM_LOAD32_BYTE( "mpr-10378.16", 0x80003, 0x20000, CRC(a1062984) SHA1(4399030a155caf71f2dec7f75c4b65531ab53576) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx (2 identical roms, 1 for each road)
+ ROM_LOAD( "opr-10186.47", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+ ROM_LOAD( "opr-10185.11", 0x8000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr-10187.88", 0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
+
+ ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF )
+ ROM_LOAD( "opr-10193.66", 0x00000, 0x08000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
+ ROM_RELOAD( 0x08000, 0x08000 )
+ ROM_LOAD( "opr-10192.67", 0x10000, 0x08000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_LOAD( "opr-10191.68", 0x20000, 0x08000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
+ ROM_RELOAD( 0x28000, 0x08000 )
+ ROM_LOAD( "opr-10190.69", 0x30000, 0x08000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
+ ROM_RELOAD( 0x38000, 0x08000 )
+ ROM_LOAD( "opr-10189.70", 0x40000, 0x08000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
+ ROM_RELOAD( 0x48000, 0x08000 )
+ ROM_LOAD( "opr-10188.71", 0x50000, 0x08000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
+ ROM_RELOAD( 0x58000, 0x08000 )
+ROM_END
+
+ROM_START( outrunen1 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "outrunen1.133", 0x000000, 0x10000, CRC(5ea17a9e) SHA1(accd6a4412542857e07239ceea72a7f6ec9fb2da) )
+ ROM_LOAD16_BYTE( "outrunen1.118", 0x000001, 0x10000, CRC(455e67d8) SHA1(b3f3bcde8f5655ba3dc743573b6d91b8ca2faddc) )
+ ROM_LOAD16_BYTE( "outrunen.132", 0x020000, 0x10000, CRC(0c87bce3) SHA1(25bdbd94d4574d90214a1df9d5a9c56f43675aaf) )
+ ROM_LOAD16_BYTE( "outrunen0.117", 0x020001, 0x10000, CRC(ffc9884b) SHA1(35409afaf32a68bcfca4af60a036e66b2defa7fe) )
+
+ ROM_REGION( 0x60000, "subcpu", 0 )
+ ROM_LOAD16_BYTE( "epr-10327a.76", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
+ ROM_LOAD16_BYTE( "epr-10329a.58", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
+ ROM_LOAD16_BYTE( "epr-10328a.75", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
+ ROM_LOAD16_BYTE( "epr-10330a.57", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 )
+ ROM_LOAD( "opr-10268.99", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
+ ROM_LOAD( "opr-10232.102", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
+ ROM_LOAD( "opr-10267.100", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
+ ROM_LOAD( "opr-10231.103", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
+ ROM_LOAD( "opr-10266.101", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
+ ROM_LOAD( "opr-10230.104", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
+
+ ROM_REGION32_LE( 0x100000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "mpr-10371.9", 0x00000, 0x20000, CRC(7cc86208) SHA1(21320f945f7c8e990c97c9b1232a0f4b6bd00f8f) )
+ ROM_LOAD32_BYTE( "mpr-10373.10", 0x00001, 0x20000, CRC(b0d26ac9) SHA1(3a9ce8547cd43b7b04abddf9a9ab5634e0bbfaba) )
+ ROM_LOAD32_BYTE( "mpr-10375.11", 0x00002, 0x20000, CRC(59b60bd7) SHA1(e5d8c67e020608edd24ba87b7687b2ac2483ee7f) )
+ ROM_LOAD32_BYTE( "mpr-10377.12", 0x00003, 0x20000, CRC(17a1b04a) SHA1(9f7210cb4153ac9029a785dcd4b45f4513a4b008) )
+ ROM_LOAD32_BYTE( "mpr-10372.13", 0x80000, 0x20000, CRC(b557078c) SHA1(a3746a2da077a8df4932348f650a061f413e8430) )
+ ROM_LOAD32_BYTE( "mpr-10374.14", 0x80001, 0x20000, CRC(8051e517) SHA1(9c8509fbed170b4ac74c169da573393e54774f49) )
+ ROM_LOAD32_BYTE( "mpr-10376.15", 0x80002, 0x20000, CRC(f3b8f318) SHA1(a5f2532613f33a64441e0f75443c10ba78dccc6e) )
+ ROM_LOAD32_BYTE( "mpr-10378.16", 0x80003, 0x20000, CRC(a1062984) SHA1(4399030a155caf71f2dec7f75c4b65531ab53576) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx (2 identical roms, 1 for each road)
+ ROM_LOAD( "opr-10186.47", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+ ROM_LOAD( "opr-10185.11", 0x8000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr-10187.88", 0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
+
+ ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF )
+ ROM_LOAD( "opr-10193.66", 0x00000, 0x08000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
+ ROM_RELOAD( 0x08000, 0x08000 )
+ ROM_LOAD( "opr-10192.67", 0x10000, 0x08000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_LOAD( "opr-10191.68", 0x20000, 0x08000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
+ ROM_RELOAD( 0x28000, 0x08000 )
+ ROM_LOAD( "opr-10190.69", 0x30000, 0x08000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
+ ROM_RELOAD( 0x38000, 0x08000 )
+ ROM_LOAD( "opr-10189.70", 0x40000, 0x08000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
+ ROM_RELOAD( 0x48000, 0x08000 )
+ ROM_LOAD( "opr-10188.71", 0x50000, 0x08000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
+ ROM_RELOAD( 0x58000, 0x08000 )
+ROM_END
+
+ROM_START( outrunen2 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "outrunen2.133", 0x000000, 0x10000, CRC(c2db4cb7) SHA1(64c3f87f759204efe2a9014e8daee8cf7396ee76) )
+ ROM_LOAD16_BYTE( "outrunen2.118", 0x000001, 0x10000, CRC(c330de11) SHA1(72cb40a0f60eae452619e64c70ae49d00857a039) )
+ ROM_LOAD16_BYTE( "outrunen.132", 0x020000, 0x10000, CRC(0c87bce3) SHA1(25bdbd94d4574d90214a1df9d5a9c56f43675aaf) )
+ ROM_LOAD16_BYTE( "outrunen.117", 0x020001, 0x10000, CRC(28a5e93e) SHA1(7dda2eef158783562b17fd57ad1a94f061e34d5d) )
+
+ ROM_REGION( 0x60000, "subcpu", 0 )
+ ROM_LOAD16_BYTE( "epr-10327a.76", 0x00000, 0x10000, CRC(e28a5baf) SHA1(f715bde96c73ed47035acf5a41630fdeb41bb2f9) )
+ ROM_LOAD16_BYTE( "epr-10329a.58", 0x00001, 0x10000, CRC(da131c81) SHA1(57d5219bd0e2fd886217e37e8773fd76be9b40eb) )
+ ROM_LOAD16_BYTE( "epr-10328a.75", 0x20000, 0x10000, CRC(d5ec5e5d) SHA1(a4e3cfca4d803e72bc4fcf91ab00e21bf3f8959f) )
+ ROM_LOAD16_BYTE( "epr-10330a.57", 0x20001, 0x10000, CRC(ba9ec82a) SHA1(2136c9572e26b7ae6de402c0cd53174407cc6018) )
+
+ ROM_REGION( 0x30000, "gfx1", 0 )
+ ROM_LOAD( "opr-10268.99", 0x00000, 0x08000, CRC(95344b04) SHA1(b3480714b11fc49b449660431f85d4ba92f799ba) )
+ ROM_LOAD( "opr-10232.102", 0x08000, 0x08000, CRC(776ba1eb) SHA1(e3477961d19e694c97643066534a1f720e0c4327) )
+ ROM_LOAD( "opr-10267.100", 0x10000, 0x08000, CRC(a85bb823) SHA1(a7e0143dee5a47e679fd5155e58e717813912692) )
+ ROM_LOAD( "opr-10231.103", 0x18000, 0x08000, CRC(8908bcbf) SHA1(8e1237b640a6f26bdcbfd5e201dadb2687c4febb) )
+ ROM_LOAD( "opr-10266.101", 0x20000, 0x08000, CRC(9f6f1a74) SHA1(09164e858ebeedcff4d389524ddf89e7c216dcae) )
+ ROM_LOAD( "opr-10230.104", 0x28000, 0x08000, CRC(686f5e50) SHA1(03697b892f911177968aa40de6c5f464eb0258e7) )
+
+ ROM_REGION32_LE( 0x100000, "sprites", 0 )
+ ROM_LOAD32_BYTE( "mpr-10371.9", 0x00000, 0x20000, CRC(7cc86208) SHA1(21320f945f7c8e990c97c9b1232a0f4b6bd00f8f) )
+ ROM_LOAD32_BYTE( "mpr-10373.10", 0x00001, 0x20000, CRC(b0d26ac9) SHA1(3a9ce8547cd43b7b04abddf9a9ab5634e0bbfaba) )
+ ROM_LOAD32_BYTE( "mpr-10375.11", 0x00002, 0x20000, CRC(59b60bd7) SHA1(e5d8c67e020608edd24ba87b7687b2ac2483ee7f) )
+ ROM_LOAD32_BYTE( "mpr-10377.12", 0x00003, 0x20000, CRC(17a1b04a) SHA1(9f7210cb4153ac9029a785dcd4b45f4513a4b008) )
+ ROM_LOAD32_BYTE( "mpr-10372.13", 0x80000, 0x20000, CRC(b557078c) SHA1(a3746a2da077a8df4932348f650a061f413e8430) )
+ ROM_LOAD32_BYTE( "mpr-10374.14", 0x80001, 0x20000, CRC(8051e517) SHA1(9c8509fbed170b4ac74c169da573393e54774f49) )
+ ROM_LOAD32_BYTE( "mpr-10376.15", 0x80002, 0x20000, CRC(f3b8f318) SHA1(a5f2532613f33a64441e0f75443c10ba78dccc6e) )
+ ROM_LOAD32_BYTE( "mpr-10378.16", 0x80003, 0x20000, CRC(a1062984) SHA1(4399030a155caf71f2dec7f75c4b65531ab53576) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 ) // road gfx (2 identical roms, 1 for each road)
+ ROM_LOAD( "opr-10186.47", 0x0000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+ ROM_LOAD( "opr-10185.11", 0x8000, 0x8000, CRC(22794426) SHA1(a554d4b68e71861a0d0da4d031b3b811b246f082) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr-10187.88", 0x00000, 0x8000, CRC(a10abaa9) SHA1(01c8a819587a66d2ee4d255656e36fa0904377b0) )
+
+ ROM_REGION( 0x80000, "pcm", ROMREGION_ERASEFF )
+ ROM_LOAD( "opr-10193.66", 0x00000, 0x08000, CRC(bcd10dde) SHA1(417ce1d7242884640c5b14f4db8ee57cde7d085d) )
+ ROM_RELOAD( 0x08000, 0x08000 )
+ ROM_LOAD( "opr-10192.67", 0x10000, 0x08000, CRC(770f1270) SHA1(686bdf44d45c1d6002622f6658f037735382f3e0) )
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_LOAD( "opr-10191.68", 0x20000, 0x08000, CRC(20a284ab) SHA1(7c9027416d4122791ba53782fe2230cf02b7d506) )
+ ROM_RELOAD( 0x28000, 0x08000 )
+ ROM_LOAD( "opr-10190.69", 0x30000, 0x08000, CRC(7cab70e2) SHA1(a3c581d2b438630d0d4c39481dcfd85681c9f889) )
+ ROM_RELOAD( 0x38000, 0x08000 )
+ ROM_LOAD( "opr-10189.70", 0x40000, 0x08000, CRC(01366b54) SHA1(f467a6b807694d5832a985f5381c170d24aaee4e) )
+ ROM_RELOAD( 0x48000, 0x08000 )
+ ROM_LOAD( "opr-10188.71", 0x50000, 0x08000, CRC(bad30ad9) SHA1(f70dd3a6362c314adef313b064102f7a250401c8) )
+ ROM_RELOAD( 0x58000, 0x08000 )
+ROM_END
+
+GAMEL(2012, outrunen, outrun, outrun, outrun, segaorun_state, outrun, ROT0, "Chris White and Darren Finck", "Out Run Enhanced Edition v1.0.3", 0, layout_outrun )
+GAMEL(2012, outrunen2, outrun, outrun, outrun, segaorun_state, outrun, ROT0, "Chris White and Darren Finck", "Out Run Enhanced Edition v1.0.2", 0, layout_outrun )
+GAMEL(2012, outrunen1, outrun, outrun, outrun, segaorun_state, outrun, ROT0, "Chris White and Darren Finck", "Out Run Enhanced Edition v1.0.1", 0, layout_outrun )
+GAMEL(2012, outrunen0, outrun, outrun, outrun, segaorun_state, outrun, ROT0, "Chris White and Darren Finck", "Out Run Enhanced Edition v1.0.0", 0, layout_outrun )
diff --git a/docs/release/src/hbmame/drivers/segas16b.cpp b/docs/release/src/hbmame/drivers/segas16b.cpp
new file mode 100644
index 00000000000..badecf5e8e2
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/segas16b.cpp
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/segas16b.cpp"
+
+ROM_START( altbeastfr )
+ ROM_REGION( 0x040000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "altbeastfr.a7", 0x000000, 0x20000, CRC(309d3a0a) SHA1(646dcafe7ac2831e241eb0643a06f8c32bdba77a) )
+ ROM_LOAD16_BYTE( "altbeastfr.a5", 0x000001, 0x20000, CRC(39cd8368) SHA1(6b5890d44b549c3bbe18345ac86943c55f7b9d26) )
+
+ ROM_REGION( 0x60000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "opr-11674.a14", 0x00000, 0x20000, CRC(a57a66d5) SHA1(5103583d48997abad12a0c5fee26431c486ced52) )
+ ROM_LOAD( "opr-11675.a15", 0x20000, 0x20000, CRC(2ef2f144) SHA1(38d22d609db2d9b6067b5d12f6499436de4605cb) )
+ ROM_LOAD( "opr-11676.a16", 0x40000, 0x20000, CRC(0c04acac) SHA1(87fe2a0dd9913f9550e9b4cbc7e7465b61640e07) )
+
+ ROM_REGION16_BE( 0x100000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-11677.b1", 0x00001, 0x20000, CRC(a01425cd) SHA1(72be5ec29e476601f9bf6aaedef9b73cedeb42f0) )
+ ROM_LOAD16_BYTE( "epr-11681.b5", 0x00000, 0x20000, CRC(d9e03363) SHA1(995a7c6a8f0c61468b57a3bb407461a2a3ae8adc) )
+ ROM_LOAD16_BYTE( "epr-11678.b2", 0x40001, 0x20000, CRC(17a9fc53) SHA1(85a9a605742ae5aab86db37189b9ee4d54c70e56) )
+ ROM_LOAD16_BYTE( "epr-11682.b6", 0x40000, 0x20000, CRC(e3f77c5e) SHA1(6b3cb7918ab0c7c97a51cc5ea19ced3374ff3914) )
+ ROM_LOAD16_BYTE( "epr-11679.b3", 0x80001, 0x20000, CRC(14dcc245) SHA1(1ca1b6e0f2b7bedad2a8ab70f52da8c54d40d3cf) )
+ ROM_LOAD16_BYTE( "epr-11683.b7", 0x80000, 0x20000, CRC(f9a60f06) SHA1(0cffcfdb02733feaa869198b7e668c58b47c321a) )
+ ROM_LOAD16_BYTE( "epr-11680.b4", 0xc0001, 0x20000, CRC(f43dcdec) SHA1(2941500cf33afca487f19f2329033d5d17aad826) )
+ ROM_LOAD16_BYTE( "epr-11684.b8", 0xc0000, 0x20000, CRC(b20c0edb) SHA1(6c8694d05e3adac37c9015037ab800233371db36) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) // sound CPU
+ ROM_LOAD( "epr-11671.a10", 0x00000, 0x08000, CRC(2b71343b) SHA1(8a657f787de2b9d5161ed2c109642a148348af09) )
+ ROM_LOAD( "opr-11672.a11", 0x10000, 0x20000, CRC(bbd7f460) SHA1(bbc5c2219cb3a827d84062b19affd9780da2a3cf) )
+ ROM_LOAD( "opr-11673.a12", 0x30000, 0x20000, CRC(400c4a36) SHA1(de4bdfa91734410e0a7f6a16bf8336db172f458a) )
+
+ ROM_REGION( 0x1000, "mcu", 0 ) // Intel i8751 protection MCU
+ ROM_LOAD( "317-0078.c2", 0x00000, 0x1000, CRC(8101925f) SHA1(a45d772ebe2fd1a577a6ccac8c6c76bb622258bb) )
+ROM_END
+
+GAME( 1988, altbeastfr, altbeast, system16b_i8751, altbeast, segas16b_state, generic_5521, ROT0, "Arkatrad", "Altered Beast (French)", MACHINE_NOT_WORKING )
diff --git a/docs/release/src/hbmame/drivers/shaolins.cpp b/docs/release/src/hbmame/drivers/shaolins.cpp
new file mode 100644
index 00000000000..bd06432a438
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/shaolins.cpp
@@ -0,0 +1,27 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/shaolins.cpp"
+
+ROM_START( kfjohnny ) // same as kicker except for gfx roms
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "477-l03.d9", 0x6000, 0x2000, CRC(2598dfdd) SHA1(70a9d81b73bbd4ff6b627a3e4102d5328a946d20) )
+ ROM_LOAD( "477-l04.d10", 0x8000, 0x4000, CRC(0cf0351a) SHA1(a9da783b29a63a46912a29715e8d11dc4cd22265) )
+ ROM_LOAD( "477-l05.d11", 0xC000, 0x4000, CRC(654037f8) SHA1(52d098386fe87ae97d4dfefab0bd3a902f66d70b) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "kfjohnny.a10", 0x0000, 0x2000, CRC(be0310d0) SHA1(e615aec557c656121761cf77d9ec4a6d1a6ddbea) )
+ ROM_LOAD( "kfjohnny.a11", 0x2000, 0x2000, CRC(fab8c880) SHA1(b90ae46ee72a000983ec68884f4ea0e406030ba3) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_LOAD( "kfjohnny.h15", 0x0000, 0x4000, CRC(f7fbbb9c) SHA1(4b85c1b50a6232be2f6e7b2e497dca86dda387d8) )
+ ROM_LOAD( "kfjohnny.h14", 0x4000, 0x4000, CRC(84bc0cfd) SHA1(2140fe066262a5bdeb1e89d2d6cfa737f88de25d) )
+
+ ROM_REGION( 0x0500, "proms", 0 )
+ ROM_LOAD( "477j10.a12", 0x0000, 0x0100, CRC(b09db4b4) SHA1(d21176cdc7def760da109083eb52e5b6a515021f) )
+ ROM_LOAD( "477j11.a13", 0x0100, 0x0100, CRC(270a2bf3) SHA1(c0aec04bd3bceccddf5f5a814a560a893b29ef6b) )
+ ROM_LOAD( "477j12.a14", 0x0200, 0x0100, CRC(83e95ea8) SHA1(e0bfa20600488f5c66233e13ea6ad857f62acb7c) )
+ ROM_LOAD( "477j09.b8", 0x0300, 0x0100, CRC(aa900724) SHA1(c5343273d0a7101b8ba6876c4f22e43d77610c75) )
+ ROM_LOAD( "477j08.f16", 0x0400, 0x0100, CRC(80009cf5) SHA1(a367f3f55d75a9d5bf4d43f9d77272eb910a1344) )
+ROM_END
+
+GAME( 2002, kfjohnny, kicker, shaolins, shaolins, driver_device, 0, ROT90, "Smitdogg", "Kung-Fu Johnny", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/simple_st0016.cpp b/docs/release/src/hbmame/drivers/simple_st0016.cpp
new file mode 100644
index 00000000000..cf82b3542ed
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/simple_st0016.cpp
@@ -0,0 +1,11 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/simple_st0016.cpp"
+
+ROM_START( renjuk )
+ ROM_REGION( 0x290000, "maincpu", 0 )
+ ROM_LOAD( "renjuk.u31", 0x000000, 0x200000, CRC(2bd052c5) SHA1(724662d6d2ead1ef9dce1fa95d7c15d35fcb5a51) )
+ ROM_LOAD( "rnj2.u32", 0x200000, 0x080000, CRC(2015289c) SHA1(5223b6d3dbe4657cd63cf5b527eaab84cf23587a) )
+ROM_END
+
+GAME( 1994, renjuk, renju, renju, renju, st0016_state, renju, ROT0, "Visco", "Renju Kizoku (Korean)", 0 )
diff --git a/docs/release/src/hbmame/drivers/snk6502.cpp b/docs/release/src/hbmame/drivers/snk6502.cpp
new file mode 100644
index 00000000000..543ddf8c95a
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/snk6502.cpp
@@ -0,0 +1,25 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/snk6502.cpp"
+
+ROM_START( vantris )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "vantris.ic13", 0x8000, 0x1000, CRC(f9f367a5) SHA1(49249a73951ae9a8a965954d8b03627b5fcf4fe3) )
+ ROM_RELOAD( 0xf000, 0x1000 ) // for the reset and interrupt vectors
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "vantris.ic50", 0x0000, 0x0800, CRC(a7061526) SHA1(f5f5860a9dc468cb4177348e0b0592e5adda28f1) )
+ ROM_LOAD( "vantris.ic51", 0x0800, 0x0800, CRC(67bd31ed) SHA1(24f03cf097e5382500a85483351f21913a98fdd5) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "vantris.ic7", 0x0000, 0x0020, CRC(90f17fc1) SHA1(fc92864178cbceccd6f7f2c75249b5c568bdbea8) )
+ ROM_RELOAD( 0x0020, 0x0020 )
+
+ ROM_REGION( 0x1000, "snk6502", 0 )
+ ROM_LOAD( "vantris.ic53", 0x0000, 0x0800, CRC(fd4d8bb0) SHA1(d59ec7569147263aed50041b15aed2ca4f395c23) )
+ ROM_LOAD( "sk4_ic52.bin", 0x0800, 0x0800, CRC(cc4a0b6f) SHA1(251b24d60083d516c4ba686d75b41e04d10f7198) )
+
+ ROM_REGION( 0x5800, "speech", ROMREGION_ERASE00 )
+ROM_END
+
+GAME( 1998, vantris, 0, vanguard, vanguard, driver_device, 0, ROT90, "Norbert Kehrer", "Vantris 98", MACHINE_SUPPORTS_SAVE ) // http://web.utanet.at/nkehrer/vantris.html
diff --git a/docs/release/src/hbmame/drivers/spacmiss.cpp b/docs/release/src/hbmame/drivers/spacmiss.cpp
new file mode 100644
index 00000000000..d6077190635
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/spacmiss.cpp
@@ -0,0 +1,486 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/****************************************************************************************
+
+Space Missile
+
+Galaxian running on Space Invaders hardware
+
+2013-06-26
+
+*******************************************************************************************/
+
+#include "emu.h"
+#include "cpu/i8085/i8085.h"
+#include "machine/mb14241.h"
+#include "sound/discrete.h"
+#include "sound/samples.h"
+#include "screen.h"
+#include "speaker.h"
+#include "spacmissx.lh"
+
+#define MW8080BW_MASTER_CLOCK (19968000.0)
+#define MW8080BW_CPU_CLOCK (MW8080BW_MASTER_CLOCK / 10)
+#define MW8080BW_PIXEL_CLOCK (MW8080BW_MASTER_CLOCK / 4)
+#define MW8080BW_HTOTAL (0x140)
+#define MW8080BW_HBEND (0x000)
+#define MW8080BW_HBSTART (0x100)
+#define MW8080BW_VTOTAL (0x106)
+#define MW8080BW_VBEND (0x000)
+#define MW8080BW_VBSTART (0x0e0)
+#define MW8080BW_VCOUNTER_START_NO_VBLANK (0x020)
+#define MW8080BW_VCOUNTER_START_VBLANK (0x0da)
+#define MW8080BW_INT_TRIGGER_COUNT_1 (0x080)
+#define MW8080BW_INT_TRIGGER_VBLANK_1 (0)
+#define MW8080BW_INT_TRIGGER_COUNT_2 MW8080BW_VCOUNTER_START_VBLANK
+#define MW8080BW_INT_TRIGGER_VBLANK_2 (1)
+#define MW8080BW_HPIXCOUNT MW8080BW_HBSTART + 6
+
+class sm_state : public driver_device
+{
+public:
+ sm_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this,"maincpu")
+ , m_p_ram(*this, "ram")
+ , m_discrete(*this, "discrete")
+ , m_samples(*this, "samples")
+ , m_screen(*this, "screen")
+ { }
+
+ /* device/memory pointers */
+ required_device<cpu_device> m_maincpu;
+ required_shared_ptr<uint8_t> m_p_ram;
+ required_device<discrete_device> m_discrete;
+ required_device<samples_device> m_samples;
+ required_device<screen_device> m_screen;
+
+ bool m_flip_screen;
+ bool m_screen_red;
+ bool m_sound_enabled;
+ uint8_t m_port_1_last_extra;
+ uint8_t m_port_2_last_extra;
+
+ /* timer */
+ emu_timer *m_interrupt_timer;
+
+ DECLARE_READ8_MEMBER(mw8080bw_shift_result_rev_r);
+ DECLARE_READ8_MEMBER(mw8080bw_reversable_shift_result_r);
+ DECLARE_WRITE8_MEMBER(mw8080bw_reversable_shift_count_w);
+ DECLARE_READ8_MEMBER(spacmissx_02_r);
+ DECLARE_WRITE8_MEMBER(spacmissx_03_w);
+ DECLARE_WRITE8_MEMBER(spacmissx_05_w);
+ DECLARE_WRITE8_MEMBER(spacmissx_07_w);
+ DECLARE_MACHINE_START(sm);
+ DECLARE_MACHINE_RESET(sm);
+ uint8_t vpos_to_vysnc_chain_counter( int vpos );
+ int vysnc_chain_counter_to_vpos( uint8_t counter, int vblank );
+ uint32_t screen_update_spacmissx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ TIMER_CALLBACK_MEMBER(mw8080bw_interrupt_callback);
+ void mw8080bw_create_interrupt_timer( );
+ void mw8080bw_start_interrupt_timer( );
+};
+
+static const discrete_dac_r1_ladder spacmissx_music_dac =
+ {3, {0, RES_K(47), RES_K(12)}, 0, 0, 0, CAP_U(0.1)};
+
+static const discrete_comp_adder_table invaders_thump_resistors =
+{
+ DISC_COMP_P_RESISTOR,
+ 0, /* no cDefault */
+ 4, /* length */
+ { RES_K(20) + RES_K(20), /* R126 + R127 */
+ RES_K(68), /* R128 */
+ RES_K(82), /* R129 */
+ RES_K(100) } /* R130 */
+};
+
+
+static const discrete_555_desc invaders_thump_555 =
+{
+ DISC_555_OUT_ENERGY | DISC_555_OUT_DC,
+ 5,
+ 5.0 - 0.6, /* 5V - diode drop */
+ DEFAULT_TTL_V_LOGIC_1 /* Output of F3 7411 buffer */
+};
+
+static const discrete_mixer_desc mix1 =
+{
+ DISC_MIXER_IS_RESISTOR,
+ {RES_K(22), RES_K(22)},
+ {0},
+ {CAP_U(.1), CAP_U(.1)},
+ 0, RES_K(100), 0, CAP_U(.1), 0, 20
+};
+
+#define spacmissx_MUSIC_CLK (150000)
+
+/* Nodes - Inputs */
+/* Nodes - Sounds */
+/************************************************
+ * Fleet movement
+ ************************************************/
+
+DISCRETE_SOUND_START(spacmissx)
+/******************************************************************************
+ *
+ * Background Hum
+ *
+ ******************************************************************************/
+ DISCRETE_INPUT_DATA(NODE_02) \
+ DISCRETE_COMP_ADDER(NODE_30, \
+ NODE_02, /* DATA */ \
+ &invaders_thump_resistors) \
+ DISCRETE_555_ASTABLE(NODE_31, /* IC F3, pin 6 */ \
+ 1, /* RESET */ \
+ NODE_30, /* R1 */ \
+ RES_K(75), /* R131 */ \
+ CAP_U(0.1), /* C29 */ \
+ &invaders_thump_555) \
+ DISCRETE_RCFILTER(NODE_32, \
+ NODE_31, /* IN0 */ \
+ 100, /* R132 */ \
+ CAP_U(4.7) ) /* C31 */ \
+ DISCRETE_RCFILTER(NODE_12, \
+ NODE_32, /* IN0 */ \
+ 100 + 100, /* R132 + R133 */ \
+ CAP_U(10) ) /* C32 */
+
+
+/******************************************************************************
+ *
+ * Music Generator
+ *
+ ******************************************************************************/
+ DISCRETE_INPUT_DATA (NODE_01)
+
+ DISCRETE_NOTE(NODE_20, 1, spacmissx_MUSIC_CLK, NODE_01, 255, 5, DISC_CLK_IS_FREQ)
+
+ // Convert count to 7492 output
+ DISCRETE_TRANSFORM2(NODE_21, NODE_20, 2, "01>0+")
+
+ DISCRETE_DAC_R1(NODE_22, NODE_21, DEFAULT_TTL_V_LOGIC_1, &spacmissx_music_dac)
+
+/******************************************************************************
+ *
+ * Final Mixing and Output
+ *
+ ******************************************************************************/
+ DISCRETE_CRFILTER(NODE_80, NODE_22, RES_K(10), CAP_U(0.1))
+
+ DISCRETE_MIXER2(NODE_90, \
+ 1, /* ENAB */ \
+ NODE_80, \
+ NODE_12, \
+ &mix1)
+
+ DISCRETE_OUTPUT(NODE_90, 2500)
+
+DISCRETE_SOUND_END
+
+WRITE8_MEMBER( sm_state::spacmissx_07_w )
+{
+ m_discrete->write(space, NODE_01, data | 0xc0);
+}
+
+WRITE8_MEMBER(sm_state::spacmissx_03_w)
+{
+ uint8_t rising_bits = data & ~m_port_1_last_extra;
+
+ if (BIT(rising_bits, 1)) m_samples->start(2, 2); /* Killed an enemy */
+ if (BIT(rising_bits, 2)) m_samples->start(1, 1); /* Lost a life */
+
+ m_port_1_last_extra = data;
+}
+
+// bits 0-3 make a variable background tone
+WRITE8_MEMBER(sm_state::spacmissx_05_w)
+{
+ if (BIT(m_port_1_last_extra, 5))
+ m_discrete->write(space, NODE_02, data & 0x0f);
+ else
+ m_discrete->write(space, NODE_02, 0);
+
+ uint8_t rising_bits = data & ~m_port_2_last_extra;
+
+ if (BIT(rising_bits, 4)) m_samples->start(0, 0); /* Shoot */
+
+ m_flip_screen = BIT(data, 5) & ioport("CAB")->read();
+
+ m_port_2_last_extra = data;
+}
+
+uint8_t sm_state::vpos_to_vysnc_chain_counter( int vpos )
+{
+ /* convert from a vertical position to the actual values on the vertical sync counters */
+ uint8_t counter;
+ int vblank = (vpos >= MW8080BW_VBSTART);
+
+ if (vblank)
+ counter = vpos - MW8080BW_VBSTART + MW8080BW_VCOUNTER_START_VBLANK;
+ else
+ counter = vpos + MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return counter;
+}
+
+
+int sm_state::vysnc_chain_counter_to_vpos( uint8_t counter, int vblank )
+{
+ /* convert from the vertical sync counters to an actual vertical position */
+ int vpos;
+
+ if (vblank)
+ vpos = counter - MW8080BW_VCOUNTER_START_VBLANK + MW8080BW_VBSTART;
+ else
+ vpos = counter - MW8080BW_VCOUNTER_START_NO_VBLANK;
+
+ return vpos;
+}
+
+
+TIMER_CALLBACK_MEMBER(sm_state::mw8080bw_interrupt_callback)
+{
+ uint8_t next_counter;
+ int next_vpos;
+ int next_vblank;
+
+ /* compute vector and set the interrupt line */
+ int vpos = m_screen->vpos();
+ uint8_t counter = vpos_to_vysnc_chain_counter(vpos);
+ uint8_t vector = 0xc7 | ((counter & 0x40) >> 2) | ((~counter & 0x40) >> 3);
+ m_maincpu->set_input_line_and_vector(0, HOLD_LINE, vector);
+
+ /* set up for next interrupt */
+ if (counter == MW8080BW_INT_TRIGGER_COUNT_1)
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_2;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_2;
+ }
+ else
+ {
+ next_counter = MW8080BW_INT_TRIGGER_COUNT_1;
+ next_vblank = MW8080BW_INT_TRIGGER_VBLANK_1;
+ }
+
+ next_vpos = vysnc_chain_counter_to_vpos(next_counter, next_vblank);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(next_vpos));
+}
+
+
+void sm_state::mw8080bw_create_interrupt_timer( )
+{
+ m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sm_state::mw8080bw_interrupt_callback),this));
+}
+
+
+void sm_state::mw8080bw_start_interrupt_timer( )
+{
+ int vpos = vysnc_chain_counter_to_vpos(MW8080BW_INT_TRIGGER_COUNT_1, MW8080BW_INT_TRIGGER_VBLANK_1);
+ m_interrupt_timer->adjust(m_screen->time_until_pos(vpos));
+}
+
+/*************************************
+ *
+ * Machine setup
+ *
+ *************************************/
+
+MACHINE_START_MEMBER( sm_state, sm )
+{
+ mw8080bw_create_interrupt_timer();
+}
+
+
+/*************************************
+ *
+ * Machine reset
+ *
+ *************************************/
+
+MACHINE_RESET_MEMBER( sm_state, sm )
+{
+ mw8080bw_start_interrupt_timer();
+}
+
+
+
+uint32_t sm_state::screen_update_spacmissx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ uint8_t x = 0;
+ uint8_t y = MW8080BW_VCOUNTER_START_NO_VBLANK;
+ uint8_t video_data = 0;
+ uint8_t flip = m_flip_screen;
+
+ while (1)
+ {
+ /* plot the current pixel */
+ pen_t pen = (video_data & 0x01) ? rgb_t(255,255,255) : rgb_t(0,0,0);
+
+ if (flip)
+ bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - x) = pen;
+ else
+ bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, x) = pen;
+
+ /* next pixel */
+ video_data = video_data >> 1;
+ x = x + 1;
+
+ /* end of line? */
+ if (x == 0)
+ {
+ /* yes, flush out the shift register */
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ pen = (video_data & 0x01) ? rgb_t(255,255,255) : rgb_t(0,0,0);
+
+ if (flip)
+ bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - (256 + i)) = pen;
+ else
+ bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, 256 + i) = pen;
+
+ video_data = video_data >> 1;
+ }
+
+ /* next row, video_data is now 0, so the next line will start
+ with 4 blank pixels */
+ y = y + 1;
+
+ /* end of screen? */
+ if (y == 0)
+ break;
+ }
+ /* the video RAM is read at every 8 pixels starting with pixel 4 */
+ else if ((x & 0x07) == 0x04)
+ {
+ offs_t offs = ((offs_t)y << 5) | (x >> 3);
+ video_data = m_p_ram[offs];
+ }
+ }
+
+ return 0;
+}
+
+READ8_MEMBER(sm_state::spacmissx_02_r)
+{
+ uint8_t data = ioport("IN2")->read();
+ if (m_flip_screen) return data;
+ return (data & 0x8f) | (ioport("IN1")->read() & 0x70);
+}
+
+static ADDRESS_MAP_START( spacmissx_map, AS_PROGRAM, 8, sm_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x7fff)
+ AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP
+ AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("ram")
+ AM_RANGE(0x4000, 0x5fff) AM_ROM AM_WRITENOP
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( spacmissx_io_map, AS_IO, 8, sm_state )
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
+ AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
+ AM_RANGE(0x02, 0x02) AM_READ(spacmissx_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
+ AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(spacmissx_03_w)
+ AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
+ AM_RANGE(0x05, 0x05) AM_WRITE(spacmissx_05_w)
+ AM_RANGE(0x06, 0x06) AM_WRITENOP //(watchdog_reset_w)
+ AM_RANGE(0x07, 0x07) AM_WRITE(spacmissx_07_w)
+ADDRESS_MAP_END
+
+static const char *const invaders_sample_names[] =
+{
+ "*invaders",
+ "1", /* shot/missle */
+ "2", /* base hit/explosion */
+ "3", /* invader hit */
+ "4", /* fleet move 1 */
+ "5", /* fleet move 2 */
+ "6", /* fleet move 3 */
+ "7", /* fleet move 4 */
+ "8", /* UFO/saucer hit */
+ "9", /* bonus base */
+ 0
+};
+
+
+static MACHINE_CONFIG_START( spacmissx, sm_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",I8080,MW8080BW_CPU_CLOCK)
+ MCFG_CPU_PROGRAM_MAP(spacmissx_map)
+ MCFG_CPU_IO_MAP(spacmissx_io_map)
+ MCFG_MACHINE_START_OVERRIDE(sm_state,sm)
+ MCFG_MACHINE_RESET_OVERRIDE(sm_state,sm)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(MW8080BW_PIXEL_CLOCK, MW8080BW_HTOTAL, MW8080BW_HBEND, MW8080BW_HPIXCOUNT, MW8080BW_VTOTAL, MW8080BW_VBEND, MW8080BW_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(sm_state, screen_update_spacmissx)
+
+ /* add shifter */
+ MCFG_MB14241_ADD("mb14241")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("samples", SAMPLES, 0)
+ MCFG_SAMPLES_CHANNELS(6)
+ MCFG_SAMPLES_NAMES(invaders_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_DISCRETE_ADD("discrete", 0, spacmissx)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+static INPUT_PORTS_START( spacmissx )
+ PORT_START("IN0")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // gets read into memory (0x2012) then never used
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, "4000" )
+ PORT_DIPSETTING( 0x02, "5000" )
+ PORT_DIPSETTING( 0x03, "7000" )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x08, "6" )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ /* Dummy port for cocktail mode */
+ PORT_START("CAB")
+ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( Cocktail ) )
+INPUT_PORTS_END
+
+ROM_START( spacmissx )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1", 0x0000, 0x0800, CRC(e212dc88) SHA1(bc56052bf43d18081f777b936b2be792e91ba842) )
+ ROM_LOAD( "2", 0x0800, 0x0800, CRC(f97410ee) SHA1(47f1f296c905fa13f6c521edc12c10f1f0e42400) )
+ ROM_LOAD( "3", 0x1000, 0x0800, CRC(c1175feb) SHA1(83bf955ed3a52e1ce8c688d89725d8dee1bcc866) )
+ ROM_LOAD( "4", 0x1800, 0x0800, CRC(b4451d7c) SHA1(62a18e8e927ef00a7f6cb933cdc5aeae9f074dc0) )
+ ROM_LOAD( "5", 0x4000, 0x0800, CRC(74c9da61) SHA1(cb98105729f0fa4343b71af3c658b378ade1ed46) )
+ ROM_LOAD( "6", 0x4800, 0x0800, CRC(5e7c6c44) SHA1(be7eeef10462377909018cf40503766f38466022) )
+ ROM_LOAD( "7", 0x5000, 0x0800, CRC(02619e18) SHA1(4c59f17fbc96ca08090f08c41ca9fc72c074e9c0) )
+
+ ROM_REGION( 0x0800, "user1", 0 )
+ ROM_LOAD( "8", 0x0000, 0x0800, CRC(942e5261) SHA1(e8af51d644eab4e7b31c14dc66bb036ad8940c42) ) // ?
+ROM_END
+
+GAMEL(1980?,spacmissx, 0, spacmissx, spacmissx, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game (Extra Sounds)", MACHINE_SUPPORTS_SAVE, layout_spacmissx )
diff --git a/docs/release/src/hbmame/drivers/system1.cpp b/docs/release/src/hbmame/drivers/system1.cpp
new file mode 100644
index 00000000000..87b9509df1d
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/system1.cpp
@@ -0,0 +1,70 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/system1.cpp"
+
+ROM_START( wbmlbit )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD( "wbml.01", 0x20000, 0x8000, CRC(66482638) SHA1(887f93015f0effa2d0fa1f1f59082f75ac072221) )
+ ROM_CONTINUE( 0x00000, 0x8000 )
+ ROM_LOAD( "wbml.02it", 0x30000, 0x8000, CRC(680f2186) SHA1(bb7b43a8d8438ec9dc55f219db284934a57ea81a) )
+ ROM_CONTINUE( 0x10000, 0x8000 )
+ ROM_LOAD( "wbml.03", 0x38000, 0x8000, CRC(d57ba8aa) SHA1(16f095cb78e31af5ce76d36c20fe4c3e0d027aea) )
+ ROM_CONTINUE( 0x18000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr11037.126", 0x0000, 0x8000, CRC(7a4ee585) SHA1(050436106cced5dcbf40a3d94d48202eedddc3ad) )
+
+ ROM_REGION( 0x18000, "tiles", 0 )
+ ROM_LOAD( "wbml.08it", 0x00000, 0x8000, CRC(bc2846d3) SHA1(6777ef6ca5b92600aa6038d773cdd8263639b1cb) )
+ ROM_LOAD( "wbml.09it", 0x08000, 0x8000, CRC(c61fd58e) SHA1(f17dba3195e8b3c3d443d696cce63604cdc64a5e) )
+ ROM_LOAD( "wbml.10it", 0x10000, 0x8000, CRC(e0386c02) SHA1(bdfa5fa2bbf641730865d74057203e41dcae80fa) )
+
+ ROM_REGION( 0x20000, "sprites", 0 )
+ ROM_LOAD( "epr11028.87", 0x00000, 0x8000, CRC(af0b3972) SHA1(413825f66b84c7e45aa1855131482abead8f7f3b) )
+ ROM_LOAD( "epr11027.86", 0x08000, 0x8000, CRC(277d8f1d) SHA1(7854673503ed03d276abe971805a11f8c992f6d6) )
+ ROM_LOAD( "epr11030.89", 0x10000, 0x8000, CRC(f05ffc76) SHA1(f3dbb518240f86430840c3d4cda04bac79c20f69) )
+ ROM_LOAD( "epr11029.88", 0x18000, 0x8000, CRC(cedc9c61) SHA1(dbe5744f9b6f2a406b52b910dd4e133db7bce6b2) )
+
+ ROM_REGION( 0x0300, "palette", 0 )
+ ROM_LOAD( "pr11026.20", 0x0000, 0x0100, CRC(27057298) SHA1(654be7abb937bb0720263ee6512e31194662effe) )
+ ROM_LOAD( "pr11025.14", 0x0100, 0x0100, CRC(41e4d86b) SHA1(a86e8bb0a465d01b04410edfbb82eb96f12b909f) )
+ ROM_LOAD( "pr11024.8", 0x0200, 0x0100, CRC(08d71954) SHA1(df045dbfb3d669e4d42fbdba1e7191cd046f7b47) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "pr5317.37", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
+ROM_END
+
+ROM_START( wbmlkb )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD( "wbml.01", 0x20000, 0x8000, CRC(66482638) SHA1(887f93015f0effa2d0fa1f1f59082f75ac072221) )
+ ROM_CONTINUE( 0x00000, 0x8000 )
+ ROM_LOAD( "m-6k.bin", 0x30000, 0x8000, CRC(7dd0b45a) SHA1(ae715437c225013bade54cf021be708c5145a84f) )
+ ROM_CONTINUE( 0x10000, 0x8000 )
+ ROM_LOAD( "m-7.bin", 0x38000, 0x8000, CRC(11881703) SHA1(b5e4d477158e7653b0fef5a4806be7b4871e917d) )
+ ROM_CONTINUE( 0x18000, 0x8000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr11037.126", 0x0000, 0x8000, CRC(7a4ee585) SHA1(050436106cced5dcbf40a3d94d48202eedddc3ad) )
+
+ ROM_REGION( 0x18000, "tiles", 0 )
+ ROM_LOAD( "epr11034.4k", 0x00000, 0x8000, CRC(7e631c73) SHA1(ef7bc9c8b15083680f8169fa8d322cfbfa7d54ac) )
+ ROM_LOAD( "epr11035.5k", 0x08000, 0x8000, CRC(4c67a9a6) SHA1(eac1f97aac3f5b0ce96dd082c7741033caa4b55b) )
+ ROM_LOAD( "epr11036.6k", 0x10000, 0x8000, CRC(0440b0c7) SHA1(f0e321dc6c979807852c375c8a6905fd32336dde) )
+
+ ROM_REGION( 0x20000, "sprites", 0 )
+ ROM_LOAD( "epr11028.87", 0x00000, 0x8000, CRC(af0b3972) SHA1(413825f66b84c7e45aa1855131482abead8f7f3b) )
+ ROM_LOAD( "epr11027.86", 0x08000, 0x8000, CRC(277d8f1d) SHA1(7854673503ed03d276abe971805a11f8c992f6d6) )
+ ROM_LOAD( "epr11030.89", 0x10000, 0x8000, CRC(f05ffc76) SHA1(f3dbb518240f86430840c3d4cda04bac79c20f69) )
+ ROM_LOAD( "epr11029.88", 0x18000, 0x8000, CRC(cedc9c61) SHA1(dbe5744f9b6f2a406b52b910dd4e133db7bce6b2) )
+
+ ROM_REGION( 0x0300, "palette", 0 )
+ ROM_LOAD( "pr11026.20", 0x0000, 0x0100, CRC(27057298) SHA1(654be7abb937bb0720263ee6512e31194662effe) )
+ ROM_LOAD( "pr11025.14", 0x0100, 0x0100, CRC(41e4d86b) SHA1(a86e8bb0a465d01b04410edfbb82eb96f12b909f) )
+ ROM_LOAD( "pr11024.8", 0x0200, 0x0100, CRC(08d71954) SHA1(df045dbfb3d669e4d42fbdba1e7191cd046f7b47) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "pr5317.37", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
+ROM_END
+
+GAME( 1987, wbmlbit, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "Michele", "Wonder Boy in Monster Land (Italian - v0.99)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, wbmlkb, wbml, sys2xb, wbml, system1_state, bootsys2, ROT0, "hack", "Wonder Boy in Monster Land (Korean)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/system16.cpp b/docs/release/src/hbmame/drivers/system16.cpp
new file mode 100644
index 00000000000..4e756d9f738
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/system16.cpp
@@ -0,0 +1,28 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/system16.cpp"
+
+// Sprite processing has been disabled because the sprite processor (sega16sp.c) freezes
+// the moment anything is written to sprite ram.
+
+ROM_START( sys16dem )
+ ROM_REGION( 0x040000, "maincpu", ROMREGION_ERASEFF ) /* 68000 code */
+ ROM_LOAD16_BYTE( "rom2dm.bin", 0x00000, 0x10000, CRC(671c5eac) SHA1(5fa7f8ba9d31a6c31a0b5a32c2cd869200032461) )
+ ROM_LOAD16_BYTE( "rom1dm.bin", 0x00001, 0x10000, CRC(6461ebd9) SHA1(16dc373408342560eb48e3c037a8f42636796560) )
+ ROM_FILL(0x686, 1, 0x4e)
+ ROM_FILL(0x687, 1, 0x71) // cancel writing to sprite ram
+
+ ROM_REGION( 0x30000, "gfx1", 0 ) /* tiles */
+ ROM_LOAD( "scr01dm.b9", 0x00000, 0x10000, CRC(2fdb9b09) SHA1(bec9ca842921695b06915825acfba076443a7e8b) )
+ ROM_LOAD( "scr02dm.b10", 0x10000, 0x10000, CRC(0e880750) SHA1(d6b7c84c00dfb3c1fcf966587f700f3ea3313b94) )
+ ROM_LOAD( "scr03dm.b11", 0x20000, 0x10000, CRC(3e76f2ba) SHA1(9177850b5d0b914a672af414e7e134e15d554fb8) )
+
+ ROM_REGION16_BE( 0x020000, "sprites", 0 ) /* sprites */
+ ROM_LOAD16_BYTE( "dm-obj0-o.rom", 0x00001, 0x10000, CRC(82ec3f29) SHA1(0c0b28e98348f8981314f8d940ccd17d790bf335) )
+ ROM_LOAD16_BYTE( "dm-obj0-e.rom", 0x00000, 0x10000, CRC(6eca3b5c) SHA1(f58ac53d24b167db4787d6fe91e4799f3c3256d6) )
+
+ ROM_REGION( 0x40000, "soundcpu", 0 ) /* sound CPU */
+ ROM_LOAD( "epr12168.a7", 0x0000, 0x8000, CRC(bd9ba01b) SHA1(fafa7dc36cc057a50ae4cdf7a35f3594292336f4) )
+ROM_END
+
+GAME( 1988, sys16dem, 0, tetrisbl, tetris, segas1x_bootleg_state, dduxbl, ROT0, "Charles Doty", "Demo - Sega System 16", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/docs/release/src/hbmame/drivers/taito_b.cpp b/docs/release/src/hbmame/drivers/taito_b.cpp
new file mode 100644
index 00000000000..c77f59dc40e
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/taito_b.cpp
@@ -0,0 +1,21 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/taito_b.cpp"
+
+ROM_START( bubbleb ) // same as pbobble except for ic2
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "pb-1c18.bin", 0x00000, 0x40000, CRC(5de14f49) SHA1(91d537748f26e19a5c32de4b8dad341750de39ef) )
+ ROM_LOAD16_BYTE( "pb-ic2.usa", 0x00001, 0x40000, CRC(b3b7566b) SHA1(455342b6988741f8c83ed97ef1a2d3b885cbc9d1) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "pb-ic27.bin", 0x00000, 0x20000, CRC(26efa4c4) SHA1(795af8f6d23c2cbe2c811ec9ab1f14a4eee3f99e) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "pb-ic14.bin", 0x00000, 0x80000, CRC(55f90ea4) SHA1(793c79e5b72171124368ad09dd31235252c541f5) )
+ ROM_LOAD( "pb-ic9.bin", 0x80000, 0x80000, CRC(3253aac9) SHA1(916d85aa96e2914630833292a0655b0389b4a39b) )
+
+ ROM_REGION( 0x100000, "ymsnd", 0 )
+ ROM_LOAD( "pb-ic15.bin", 0x000000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) )
+ROM_END
+
+GAME( 1994, bubbleb, pbobble, pbobble, pbobble, taitob_state, taito_b, ROT0, "Taito Corporation", "Bubble Buster", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/taito_f2.cpp b/docs/release/src/hbmame/drivers/taito_f2.cpp
new file mode 100644
index 00000000000..335ac377abd
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/taito_f2.cpp
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/taito_f2.cpp"
+
+static MACHINE_CONFIG_START( f2demo, taitof2_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 24000000/2) /* 12 MHz */
+ MCFG_CPU_PROGRAM_MAP(liquidk_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", taitof2_state, taitof2_interrupt)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 24000000/6) /* 4 MHz */
+ MCFG_CPU_PROGRAM_MAP(sound_map)
+
+ MCFG_MACHINE_START_OVERRIDE(taitof2_state,f2)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
+ MCFG_SCREEN_SIZE(120*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(40*8, 106*8-1, 2*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(taitof2_state, screen_update_taitof2_pri)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(taitof2_state, screen_vblank_partial_buffer_delayed))
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", taitof2)
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx)
+ MCFG_VIDEO_START_OVERRIDE(taitof2_state,taitof2_megab)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD("ymsnd", YM2610, 24000000/3) /* Was 16000000/2, but only a 24Mhz OSC */
+ MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
+ MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
+ MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(2, "rspeaker", 1.0)
+
+ MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0)
+ MCFG_TC0140SYT_MASTER_CPU("maincpu")
+ MCFG_TC0140SYT_SLAVE_CPU("audiocpu")
+
+ MCFG_DEVICE_ADD("tc0220ioc", TC0220IOC, 0)
+ MCFG_TC0220IOC_READ_0_CB(IOPORT("DSWA"))
+ MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB"))
+ MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0"))
+ MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1"))
+ MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2"))
+
+ MCFG_DEVICE_ADD("tc0100scn", TC0100SCN, 0)
+ MCFG_TC0100SCN_GFX_REGION(1)
+ MCFG_TC0100SCN_TX_REGION(2)
+ MCFG_TC0100SCN_OFFSETS(3, 0)
+ MCFG_TC0100SCN_GFXDECODE("gfxdecode")
+ MCFG_TC0100SCN_PALETTE("palette")
+
+ MCFG_TC0360PRI_ADD("tc0360pri")
+MACHINE_CONFIG_END
+
+// Game has no sound
+ROM_START( f2demo )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
+ ROM_LOAD16_BYTE( "lq09.bin", 0x00000, 0x20000, CRC(809a968b) SHA1(06e8be120869371d33c61fa14c48fe4e5fd659ec) )
+ ROM_LOAD16_BYTE( "lq11.bin", 0x00001, 0x20000, CRC(7ba3a5cb) SHA1(08f5392296cceadcae0cd34e9dfe76c835583231) )
+
+ ROM_REGION( 0x080000, "gfx1", 0 ) /* SCR */
+ ROM_LOAD( "f2d_scr.bin", 0x000000, 0x80000, CRC(b178fb05) SHA1(3d33dd822622579c75b55971926f6eb04d33f5a6) ) /* TC0100SCN #1 */
+
+ ROM_REGION( 0x100000, "gfx2", 0 ) /* OBJ */
+ ROM_LOAD( "f2d_obj0.bin", 0x00000, 0x80000, CRC(1bb8aa37) SHA1(9051270485a7a995779c80b4e692b8395503d6c3) )
+ ROM_LOAD( "f2d_obj1.bin", 0x80000, 0x80000, CRC(75660aac) SHA1(6a521e1d2a632c26e53b83d2cc4b0edecfc1e68c) )
+
+ ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
+ ROM_LOAD( "c49-08.9", 0x00000, 0x04000, CRC(413c310c) SHA1(cecb1c0c9fe3c8b744f95ce29009650a289107ab) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+
+ ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
+ ROM_LOAD( "lk_snd.bin", 0x00000, 0x80000, CRC(474d45a4) SHA1(20cb818d753a185973098007e645f1aa75c5528d) )
+
+ /* no Delta-T samples */
+ROM_END
+
+GAME( 1990, f2demo, 0, f2demo, liquidk, driver_device, 0, ROT180, "Charles Doty", "Demo - Taito F2", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/taito_f3.cpp b/docs/release/src/hbmame/drivers/taito_f3.cpp
new file mode 100644
index 00000000000..67004254b7a
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/taito_f3.cpp
@@ -0,0 +1,223 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/taito_f3.cpp"
+
+ROM_START( cleopath )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("e28-10.bin", 0x000000, 0x80000, CRC(013fbc39) SHA1(d36ac44609b88e1da35c98dda381042e0112ea00) )
+ ROM_LOAD32_BYTE("e28-09.bin", 0x000001, 0x80000, CRC(1c48a1f9) SHA1(791d321c03073cdd0269b970f926897446d2a6fb) )
+ ROM_LOAD32_BYTE("e28-08.bin", 0x000002, 0x80000, CRC(7564f199) SHA1(ec4b19edb0660ad478f6c0ec27d701368696a2e4) )
+ ROM_LOAD32_BYTE("e28-wrd.bin", 0x000003, 0x80000, CRC(544dd2e9) SHA1(11ad1ce4202937108f23c44de2244da570452ce1) )
+
+ ROM_REGION(0x200000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("e28-02.bin", 0x000000, 0x080000, CRC(b20d47cb) SHA1(6888e5564688840fed1c123ab38467066cd59c7f) )
+ ROM_LOAD16_BYTE("e28-01.bin", 0x000001, 0x080000, CRC(4440e659) SHA1(71dece81bac8d638473c6531fed5c32798096af9) )
+ ROM_FILL ( 0x100000, 0x100000, 0 )
+
+ ROM_REGION(0x400000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("e28-06.bin", 0x000000, 0x100000, CRC(21d0c454) SHA1(f4c815984b19321cfab303fa6f21d9cad35b09f2) )
+ ROM_LOAD16_BYTE("e28-05.bin", 0x000001, 0x100000, CRC(2870dbbc) SHA1(4e412b90cbd9a05956cde3d8cff615ebadca9db6) )
+ ROM_LOAD ("e28-04.bin", 0x300000, 0x100000, CRC(57aef029) SHA1(5c07209015d4749d1ffb3e9c1a890e6cfeec8cb0) )
+ ROM_FILL ( 0x200000, 0x100000, 0 )
+
+ ROM_REGION(0x140000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("e28-11.bin", 0x100000, 0x20000, CRC(01a06950) SHA1(94d22cd839f9027e9d45264c366e0cb5d698e0b6) )
+ ROM_LOAD16_BYTE("e28-12.bin", 0x100001, 0x20000, CRC(dc19260f) SHA1(fa0ca03a236326652e4f9898d07cd837c1507a9d) )
+
+ ROM_REGION16_BE(0x400000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("e28-03.bin", 0x000000, 0x200000, CRC(15c7989d) SHA1(7cc63d93e5c1f9f52f889e973bbefd5e6f7ce807) )
+ROM_END
+
+ROM_START( driusgxh )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("dge_mpr3.bin", 0x000000, 0x80000, CRC(1c1e24a7) SHA1(eafde331c3be5be55d0d838a84017f357ff92634) )
+ ROM_LOAD32_BYTE("dge_mpr2.bin", 0x000001, 0x80000, CRC(7be23e23) SHA1(4764355f51e207f4538dd753aea59bf2689835de) )
+ ROM_LOAD32_BYTE("dge_mpr1.bin", 0x000002, 0x80000, CRC(bc030f6f) SHA1(841396911d26ddfae0c9863431e02e0b5e762ac6) )
+ ROM_LOAD32_BYTE("dge_wrd.bin", 0x000003, 0x80000, CRC(2bb37270) SHA1(98bc07894e92ca9cce34fc7390f40d3357783e3f) )
+
+ ROM_REGION(0x800000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("d87-03.bin", 0x000000, 0x200000, CRC(4be1666e) SHA1(35ba7bcf29ec7a8f8b6944ee3544693d4df1bfc2) )
+ ROM_LOAD16_BYTE("d87-04.bin", 0x000001, 0x200000, CRC(2616002c) SHA1(003f98b740a697274385b8da03c78f3c6f7b5e89) )
+ ROM_LOAD ("d87-05.bin", 0x600000, 0x200000, CRC(4e5891a9) SHA1(fd08d848079841c9237fa359a850980fd00114d8) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x800000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("d87-06.bin", 0x000000, 0x200000, CRC(3b97a07c) SHA1(72cdeffedeab0c1bd0e47f03172085390a2be393) )
+ ROM_LOAD16_BYTE("d87-17.bin", 0x000001, 0x200000, CRC(e601d63e) SHA1(256a6aeb5633fe1db407fad567169a9d0c911219) )
+ ROM_LOAD ("d87-08.bin", 0x600000, 0x200000, CRC(76d23602) SHA1(ca53ea6641182c44a4038bbeaa5effb1687f1980) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x180000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("d87-13.bin", 0x100000, 0x40000, CRC(15b1fff4) SHA1(28692b731ae98a47c2c5e11a8a71b61a813d9a64) )
+ ROM_LOAD16_BYTE("d87-14.bin", 0x100001, 0x40000, CRC(eecda29a) SHA1(6eb238e47bc7bf635ffbdbb25fb06a37db980ef8) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("d87-01.bin", 0x000000, 0x200000, CRC(3848a110) SHA1(802e91695a526f665c7fd261f0a7639a0b883c9e) )
+ ROM_LOAD16_BYTE("d87-02.bin", 0x400000, 0x200000, CRC(9250abae) SHA1(07cae8edbc3cca0a95022d9b40a5c18a55350b67) )
+ROM_END
+
+ROM_START( f3demo )
+ ROM_REGION(0x200000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD("f3demo.bin", 0, 0x194c, CRC(08587aea) SHA1(4850d170b935fd4b6726c03693eb25e5ac3b6198) )
+ ROM_FILL(0x043A, 1, 0x4E)
+ ROM_FILL(0x043B, 1, 0xB8)
+ ROM_FILL(0x043C, 1, 0x19)
+ ROM_FILL(0x043D, 1, 0x4C)
+ ROM_FILL(0x194C, 1, 0x41)
+ ROM_FILL(0x194D, 1, 0xF9)
+ ROM_FILL(0x194F, 1, 0x66)
+ ROM_FILL(0x1951, 1, 0x18)
+ ROM_FILL(0x1952, 1, 0x30)
+ ROM_FILL(0x1953, 1, 0x3C)
+ ROM_FILL(0x1955, 1, 0x9E)
+ ROM_FILL(0x1956, 1, 0x31)
+ ROM_FILL(0x1957, 1, 0x40)
+ ROM_FILL(0x195A, 1, 0x30)
+ ROM_FILL(0x195B, 1, 0x3C)
+ ROM_FILL(0x195D, 1, 0xF1)
+ ROM_FILL(0x195E, 1, 0x31)
+ ROM_FILL(0x195F, 1, 0x40)
+ ROM_FILL(0x1961, 1, 0x02)
+ ROM_FILL(0x1962, 1, 0x60)
+ ROM_FILL(0x1963, 1, 0xFE)
+
+ ROM_REGION(0x800000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("d87-03.bin", 0x000000, 0x200000, CRC(4be1666e) SHA1(35ba7bcf29ec7a8f8b6944ee3544693d4df1bfc2) )
+ ROM_LOAD16_BYTE("d87-04.bin", 0x000001, 0x200000, CRC(2616002c) SHA1(003f98b740a697274385b8da03c78f3c6f7b5e89) )
+ ROM_LOAD ("d87-05.bin", 0x600000, 0x200000, CRC(4e5891a9) SHA1(fd08d848079841c9237fa359a850980fd00114d8) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x800000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("d87-06.bin", 0x000000, 0x200000, CRC(3b97a07c) SHA1(72cdeffedeab0c1bd0e47f03172085390a2be393) )
+ ROM_LOAD16_BYTE("d87-17.bin", 0x000001, 0x200000, CRC(e601d63e) SHA1(256a6aeb5633fe1db407fad567169a9d0c911219) )
+ ROM_LOAD ("d87-08.bin", 0x600000, 0x200000, CRC(76d23602) SHA1(ca53ea6641182c44a4038bbeaa5effb1687f1980) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x180000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("d87-13.bin", 0x100000, 0x40000, CRC(15b1fff4) SHA1(28692b731ae98a47c2c5e11a8a71b61a813d9a64) )
+ ROM_LOAD16_BYTE("d87-14.bin", 0x100001, 0x40000, CRC(eecda29a) SHA1(6eb238e47bc7bf635ffbdbb25fb06a37db980ef8) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("d87-01.bin", 0x000000, 0x200000, CRC(3848a110) SHA1(802e91695a526f665c7fd261f0a7639a0b883c9e) )
+ ROM_LOAD16_BYTE("d87-02.bin", 0x400000, 0x200000, CRC(9250abae) SHA1(07cae8edbc3cca0a95022d9b40a5c18a55350b67) )
+ROM_END
+
+ROM_START( gekiridh )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("e11-12.ic20", 0x000000, 0x40000, CRC(6a7aaacf) SHA1(a8114c84e76c75c908a61d985d96aa4eb9a0ac5a) )
+ ROM_LOAD32_BYTE("e11-11.ic19", 0x000001, 0x40000, CRC(2284a08e) SHA1(3dcb91be0d3491ad5e77efd30bacd506dad0f848) )
+ ROM_LOAD32_BYTE("e11-10.ic18", 0x000002, 0x40000, CRC(8795e6ba) SHA1(9128c29fdce3276f55aad47451e4a507470c8b9f) )
+ ROM_LOAD32_BYTE("e11-15.ic17", 0x000003, 0x40000, CRC(5aef1fd8) SHA1(a94884e39172e664759bff53a6dd2f93422d3299) )
+
+ ROM_REGION(0x800000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("e11-03.ic12", 0x000000, 0x200000, CRC(f73877c5) SHA1(1f6b7c0b8a0aaab3e5427d21de7fad3d3cbf737a) )
+ ROM_LOAD16_BYTE("e11-02.ic8", 0x000001, 0x200000, CRC(5722a83b) SHA1(823c20a33016a5506ca5415ec615c3d2546ca9ab) )
+ ROM_LOAD ("e11-01.ic4", 0x600000, 0x200000, CRC(c2cd1069) SHA1(9744dd3d8a6d9200cea4429dafce5620b60e2960) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x800000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("e11-08.ic47", 0x000000, 0x200000, CRC(907f69d3) SHA1(0899ed58edcae22144625c349c9d2fe4d46d11e3) )
+ ROM_LOAD16_BYTE("e11-07.ic45", 0x000001, 0x200000, CRC(ef018607) SHA1(61b602b13754c3be21caf76acbfc10c87518ba47) )
+ ROM_LOAD ("e11-06.ic43", 0x600000, 0x200000, CRC(200ce305) SHA1(c80a0b96510913a6411e6763fb72bf413fb792da) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x140000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("e11-13.bin", 0x100000, 0x20000, CRC(51a11ff7) SHA1(c03042489d71423667f25856d15aa6a363ea6c92) )
+ ROM_LOAD16_BYTE("e11-14.bin", 0x100001, 0x20000, CRC(dce2ba91) SHA1(00bc353c7747a7954365b587d7bc759ee5dc09c2) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("e11-04.ic38", 0x000000, 0x200000, CRC(e0ff4fb1) SHA1(81e186e3a692af1da316b8085a729c4f103d9a52) )
+ ROM_LOAD16_BYTE("e11-05.ic41", 0x400000, 0x200000, CRC(a4d08cf1) SHA1(ae2cabef7b7bcb8a788988c73d7af6fa4bb2c444) )
+ROM_END
+
+ROM_START( gekiridoc )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("e11-12c.bin", 0x000000, 0x40000, CRC(448308ce) SHA1(22eac25158bd3a0349aa4f1f041473b93030ee43) )
+ ROM_LOAD32_BYTE("e11-11c.bin", 0x000001, 0x40000, CRC(8ae457c4) SHA1(f1d74d99c916df90a74be0ff80b05b0f31284306) )
+ ROM_LOAD32_BYTE("e11-10c.bin", 0x000002, 0x40000, CRC(b1ff4529) SHA1(9e8366d9d90ad4155aab3828523daff09e3d400d) )
+ ROM_LOAD32_BYTE("e11-09c.bin", 0x000003, 0x40000, CRC(24d884ff) SHA1(35ddb21608c781a0674a4244c8e5c0aa6dc220eb) )
+
+ ROM_REGION(0x800000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("e11-03c.bin", 0x000000, 0x200000, CRC(2b0dab58) SHA1(7c70a2104fbbfde32fa006bfafe30c3d9708cb10) )
+ ROM_LOAD16_BYTE("e11-02c.bin", 0x000001, 0x200000, CRC(a2c4fa4f) SHA1(2ad73ce8431f1199dd32df83352dc4f85345529f) )
+ ROM_LOAD ("e11-01c.bin", 0x600000, 0x200000, CRC(e19874b3) SHA1(a8d6806133977a7decefafff5d7b249803add70b) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x800000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("e11-08c.bin", 0x000000, 0x200000, CRC(93884253) SHA1(6d0530db64c84bf7b2ad47e94036ecd8c81418b6) )
+ ROM_LOAD16_BYTE("e11-07c.bin", 0x000001, 0x200000, CRC(15ca8ac2) SHA1(33cbcc96e5144e5910c67c99815958d8f004287e) )
+ ROM_LOAD ("e11-06c.bin", 0x600000, 0x200000, CRC(0acc71d3) SHA1(455c70ec8f1087189170160d5683545bbea1fe9a) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x140000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("e11-13.bin", 0x100000, 0x20000, CRC(51a11ff7) SHA1(c03042489d71423667f25856d15aa6a363ea6c92) )
+ ROM_LOAD16_BYTE("e11-14.bin", 0x100001, 0x20000, CRC(dce2ba91) SHA1(00bc353c7747a7954365b587d7bc759ee5dc09c2) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("e11-04.ic38", 0x000000, 0x200000, CRC(e0ff4fb1) SHA1(81e186e3a692af1da316b8085a729c4f103d9a52) )
+ ROM_LOAD16_BYTE("e11-05.ic41", 0x400000, 0x200000, CRC(a4d08cf1) SHA1(ae2cabef7b7bcb8a788988c73d7af6fa4bb2c444) )
+ROM_END
+
+ROM_START( landmakh )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("e61-13.20", 0x000000, 0x80000, CRC(0af756a2) SHA1(2dadac6873f2491ee77703f07f00dde2aa909355) )
+ ROM_LOAD32_BYTE("e61-12.19", 0x000001, 0x80000, CRC(636b3df9) SHA1(78a5bf4977bb90d710942188ce5016f3df499feb) )
+ ROM_LOAD32_BYTE("e61-11.18", 0x000002, 0x80000, CRC(279a0ee4) SHA1(08380286737b33db76a79b27d0df5faba17dfb96) )
+ ROM_LOAD32_BYTE("e61-wrd.17", 0x000003, 0x80000, CRC(34a5939e) SHA1(4fbcdd0b57cbd589b554d1751394df8389293966) )
+
+ ROM_REGION(0x800000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("e61-03.12",0x000000, 0x200000, CRC(e8abfc46) SHA1(fbde006f9822af3ed8debec525270d329981ea21) )
+ ROM_LOAD16_BYTE("e61-02.08",0x000001, 0x200000, CRC(1dc4a164) SHA1(33b412d9653099aaff8ed5e62d1ba4fc30aa9058) )
+ ROM_LOAD ("e61-01.04",0x600000, 0x200000, CRC(6cdd8311) SHA1(7810a5a81f3b5a730d2088c79b12fffd77659b5b) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x800000, "gfx2" , 0)
+ ROM_LOAD16_BYTE("e61-09.47", 0x000000, 0x200000, CRC(6ba29987) SHA1(b63c12523e19da66b3ca07c3548ac81bf57b59a1) )
+ ROM_LOAD16_BYTE("e61-08.45", 0x000001, 0x200000, CRC(76c98e14) SHA1(c021c325ab4ae410fa54e2eab61d34318867432b) )
+ ROM_LOAD ("e61-07.43", 0x600000, 0x200000, CRC(4a57965d) SHA1(8e80788e0f47fb242da9af3aa19077dc0ec829b8) )
+ ROM_FILL ( 0x400000, 0x200000, 0 )
+
+ ROM_REGION(0x140000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("e61-14.32", 0x100000, 0x20000, CRC(b905f4a7) SHA1(613b954e3e129fd44b4ce64958f16e5636012d6e) )
+ ROM_LOAD16_BYTE("e61-15.33", 0x100001, 0x20000, CRC(87909869) SHA1(7b90c23899a673966cac3352d375d17b83e66596) )
+
+ ROM_REGION16_BE(0x1000000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("e61-04.38", 0x400000, 0x200000, CRC(c27aec0c) SHA1(e95da2db07a20a53662ebd45c033966e8a22a15a) )
+ ROM_LOAD16_BYTE("e61-05.39", 0x800000, 0x200000, CRC(83920d9d) SHA1(019e39ae85d1129f6d3b8460c4b1bd925f868ee2) )
+ ROM_LOAD16_BYTE("e61-06.40", 0xc00000, 0x200000, CRC(2e717bfe) SHA1(1be54cd2ec65d8fd49a5c09b5d27791fd7a320d4) )
+ROM_END
+
+ROM_START( pbobl2xh )
+ ROM_REGION(0x200000, "maincpu", 0)
+ ROM_LOAD32_BYTE("e10-29.20", 0x000000, 0x40000, CRC(f1e9ad3f) SHA1(8689d85f30e075d21e4be01a2a097a850a921c47) )
+ ROM_LOAD32_BYTE("e10-28.19", 0x000001, 0x40000, CRC(412a3602) SHA1(d754e6ac886676d2c1eb52de3a727894f316e6b5) )
+ ROM_LOAD32_BYTE("e10-27.18", 0x000002, 0x40000, CRC(88cc0b5c) SHA1(bb08a7b8b37356376052ed03f8515677811823c0) )
+ ROM_LOAD32_BYTE("e10-wrd.17", 0x000003, 0x40000, CRC(4bcc216b) SHA1(45e9250414201fa5ad866b32b0285973fd06367c) )
+
+ ROM_REGION(0x400000, "gfx1" , 0)
+ ROM_LOAD16_BYTE("e10-02.rom", 0x000000, 0x100000, CRC(c0564490) SHA1(cbe9f880192c08f4d1db21d5ba14073b97e5f1d3) )
+ ROM_LOAD16_BYTE("e10-01.rom", 0x000001, 0x100000, CRC(8c26ff49) SHA1(cbb514c061106003d2ae2b6c43958b24feaad656) )
+ ROM_FILL ( 0x200000, 0x200000, 0 )
+
+ ROM_REGION(0x400000, "gfx2" , ROMREGION_ERASE00)
+ ROM_LOAD16_BYTE("e10-07.rom", 0x000000, 0x100000, CRC(dcb3c29b) SHA1(b80c3a8ce53d696c57675e654c9927ef8687759e) )
+ ROM_LOAD16_BYTE("e10-06.rom", 0x000001, 0x100000, CRC(1b0f20e2) SHA1(66b44d059c2896abac2f0e7fc932489dee440ba0) )
+ ROM_LOAD ("e10-05.rom", 0x300000, 0x100000, CRC(81266151) SHA1(aa3b144f32995425db97efce440e234a3c7a6715) )
+
+ ROM_REGION(0x180000, "taito_en:audiocpu", 0)
+ ROM_LOAD16_BYTE("e10-30.32", 0x100000, 0x40000, CRC(bb090c1e) SHA1(af2ff23d6f9bd56c25530cb9bf9f452b6f5210f5) )
+ ROM_LOAD16_BYTE("e10-31.33", 0x100001, 0x40000, CRC(f4b88d65) SHA1(c74dcb4bed979039fad1d5c7528c14ce4db1d5ec) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 )
+ ROM_LOAD16_BYTE("e10-04.rom", 0x000000, 0x200000, CRC(5c0862a6) SHA1(f916f63b8629239e3221e1e231e1b39962ef38ba) )
+ ROM_LOAD16_BYTE("e10-03.rom", 0x400000, 0x200000, CRC(46d68ac8) SHA1(ad014e9f0d458308014959ca6823077f581ab088) )
+ROM_END
+
+
+GAME( 1996, cleopath, cleopatr, f3_224a, f3, taito_f3_state, cleopatr, ROT0, "hack", "Cleopatra Fortune (World Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, driusgxh, dariusg, f3, f3, taito_f3_state, dariusg, ROT0, "hack", "Darius Gaiden (World Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, f3demo, 0, f3, f3, taito_f3_state, pbobble3, ROT0, "Antiriad", "Demo - Taito F3", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gekiridh, gekiridn, f3, f3, taito_f3_state, gekirido, ROT270, "hack", "Gekirindan (World Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gekiridoc, gekiridn, f3, f3, taito_f3_state, gekirido, ROT270, "Taito Corporation", "Gekirindan (Ver 2.3C 1995/09/21)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, landmakh, landmakr, f3, f3, taito_f3_state, landmakr, ROT0, "hack", "Land Maker (World Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pbobl2xh, pbobble2, f3, f3, taito_f3_state, pbobbl2x, ROT0, "hack", "Puzzle Bobble 2X (World Hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/taito_l.cpp b/docs/release/src/hbmame/drivers/taito_l.cpp
new file mode 100644
index 00000000000..7b01dd2dff4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/taito_l.cpp
@@ -0,0 +1,72 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/taito_l.cpp"
+
+ROM_START( evilstonfr )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD( "c67-03fr.ic2", 0x00000, 0x20000, CRC(3fa7e884) SHA1(94716256c199b5f347bbe122d04adbab1a54b1ce) )
+ ROM_LOAD( "c67-04fr.ic6", 0x20000, 0x20000, CRC(8c43dc76) SHA1(ee395d55ee8e66c86e12f604774799ca7cfe1858) )
+
+ ROM_REGION( 0x80000, "audiocpu", 0 )
+ ROM_LOAD( "c67-05.ic22", 0x00000, 0x20000, CRC(94d3a642) SHA1(af20aa5bb60a45c05eb1deba23ba30e6640ca235) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "c67-01.ic1", 0x00000, 0x80000, CRC(2f351bf4) SHA1(0fb37abf3413cd11baece1c9bbca5a51b0f28938) )
+ ROM_LOAD( "c67-02.ic5", 0x80000, 0x80000, CRC(eb4f895c) SHA1(2c902572fe5a5d4442e4dd29e8a85cb40c384140) )
+ROM_END
+
+ROM_START( sokoban )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "sokoban.ic10", 0x00000, 0x10000, CRC(5959ddb4) SHA1(73f206e19cdfd151426092aa3eea6f72093f360b) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "sokoban.ic9", 0x00000, 0x10000, CRC(859e1ff4) SHA1(899b71bd0eb9923e88cf7142ed634b36b3e34c6c) )
+ ROM_LOAD16_BYTE( "sokoban.ic8", 0x00001, 0x10000, CRC(439a6670) SHA1(79144e3ba5205f5356f28d3b23ef32d3d4fca51c) )
+
+ // came with the zipfile but not used
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD_OPTIONAL( "gal16v8-b86-04.bin", 0x0000, 0x0117, CRC(bf8c0ea0) SHA1(e0a00f1f6363fb79650202f90a56329990876d49) )
+ROM_END
+
+ROM_START( speccies )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "speccies.ic10", 0x00000, 0x55e9, CRC(29e126ac) SHA1(1e3e1379f964e0967d6ea5ef6a84741319b5108f) )
+
+ // came with the zipfile but not used
+ ROM_REGION( 0x0800, "mcu", 0 )
+ ROM_LOAD_OPTIONAL( "mc68705p3.ic4", 0x0000, 0x0800, CRC(085f68b4) SHA1(2dbc7e2c015220dc59ee1f1208540744e5b9b7cc) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "speccies.ic9", 0x00000, 0x10000, CRC(11ed1528) SHA1(55f0b63bcbbbe4ad4d1041dca980b55ccb7a7aea) )
+ ROM_LOAD16_BYTE( "speccies.ic8", 0x00001, 0x10000, CRC(fcfeb89f) SHA1(fc0e811c72313b371d3a6530b27f9023ff201e31) )
+
+ // came with the zipfile but not used
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD_OPTIONAL( "gal16v8-b86-04.bin", 0x0000, 0x0117, CRC(bf8c0ea0) SHA1(e0a00f1f6363fb79650202f90a56329990876d49) )
+ROM_END
+
+ROM_START( tldemo )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "tldemo.ic10", 0x00000, 0x56a4, CRC(fda3d418) SHA1(e0171cc1c035d1f800702c3766825b63f6acd291) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "tldemo.ic9", 0x00000, 0x10000, CRC(792b8c11) SHA1(0592481b586bfca0f8f8eb096bee46690943596b) )
+ ROM_LOAD16_BYTE( "tldemo.ic8", 0x00001, 0x10000, CRC(59cfc5ab) SHA1(133084eeacdf978ed13db565f64d155c08ecaade) )
+ROM_END
+
+ROM_START( tldemo2 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "tldemo2.ic10", 0x00000, 0x7142, CRC(1292a22c) SHA1(e351ac5381f7d73de0087586c7fb28d9eccd72cb) )
+ // This one below is the old version, works fine in MAME but is buggy in real hardware.
+ //ROM_LOAD( "tldemo2.ic10", 0x00000, 0x6514, CRC(efd21b6b) SHA1(1c3bfb64dacfb5a1da55201cd4d4202694e06d37) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "tldemo2.ic9", 0x00000, 0x10000, CRC(fcc75ddb) SHA1(e702480b84379e3106cb6d575d237a8f9701f49e) )
+ ROM_LOAD16_BYTE( "tldemo2.ic8", 0x00001, 0x10000, CRC(33e70f71) SHA1(5a0caa0912dd7d76dd7e788e21b4cc7f320156ad) )
+ROM_END
+
+GAME( 2007, evilstonfr, evilston, evilston, evilston, driver_device, 0, ROT270, "Arkatrad", "Evil Stone (French)", MACHINE_IMPERFECT_SOUND )
+GAME( 2015, sokoban, 0, plotting, plotting, driver_device, 0, ROT0, "cmonkey", "Sokoban LE", 0 )
+GAME( 2015, speccies, 0, plotting, plotting, driver_device, 0, ROT0, "Sokurah", "Speccies 2", 0 )
+GAME( 2014, tldemo, 0, plotting, plotting, driver_device, 0, ROT0, "cmonkey", "Demo - System Timed Cheat Tool", 0 )
+GAME( 2015, tldemo2, 0, plotting, plotting, driver_device, 0, ROT0, "cmonkey", "Demo - 256 colours", 0 )
diff --git a/docs/release/src/hbmame/drivers/tecmo.cpp b/docs/release/src/hbmame/drivers/tecmo.cpp
new file mode 100644
index 00000000000..8df56115e5c
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/tecmo.cpp
@@ -0,0 +1,73 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/tecmo.cpp"
+
+ROM_START( geminit ) // same as gemini except for 1c
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "gw04-5s.rom", 0x00000, 0x10000, CRC(ff9de855) SHA1(34167af8456a081f68b338f10d4319ce1e703fd4) )
+ ROM_LOAD( "gw05-6s.rom", 0x10000, 0x10000, CRC(5a6947a9) SHA1(18b7aeb0f0e2c396bc759118dd7c45fd6070b804) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "gw03-5h.rom", 0x0000, 0x8000, CRC(9bc79596) SHA1(61de9ddd45140e8ed88173294bd26147e2abfa21) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "gw02-3h.rom", 0x00000, 0x08000, CRC(7acc8d35) SHA1(05056e9f077e7571b314390b508c72d56ad0f43b) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "geminit.1c", 0x00000, 0x10000, CRC(c47b1c97) SHA1(7d8680afe4bc76ac712ef2e86bb43bbe02c77199) )
+ ROM_LOAD( "gw07-1d.rom", 0x10000, 0x10000, CRC(da42637e) SHA1(9885c52823279f26871092c77bdbe027df08268f) )
+ ROM_LOAD( "gw08-1f.rom", 0x20000, 0x10000, CRC(0b4e8d70) SHA1(55069f3df1c8db83f306d46b8262fd23585e6013) )
+ ROM_LOAD( "gw09-1h.rom", 0x30000, 0x10000, CRC(b65c5e4c) SHA1(699e1a9e72b8d94edae7382ba119fe5da113514d) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 )
+ ROM_LOAD( "gw10-1n.rom", 0x00000, 0x10000, CRC(5e84cd4f) SHA1(e85320291027a16619c87fc2365448367bda454a) )
+ ROM_LOAD( "gw11-2na.rom", 0x10000, 0x10000, CRC(08b458e1) SHA1(b3426faa57dca51dc053db44fa4968425d8bf3ee) )
+ ROM_LOAD( "gw12-2nb.rom", 0x20000, 0x10000, CRC(229c9714) SHA1(f4f47d6b379c973c22f9ae7d7bec7041cdf3f737) )
+ ROM_LOAD( "gw13-3n.rom", 0x30000, 0x10000, CRC(c5dfaf47) SHA1(c3202ca8c7f3c5c7dc9acdc09c1c894e168ef9fe) )
+
+ ROM_REGION( 0x40000, "gfx4", 0 )
+ ROM_LOAD( "gw14-1r.rom", 0x00000, 0x10000, CRC(9c10e5b5) SHA1(a81399b85d8f3ddca26883ec3535cb9044c35ada) )
+ ROM_LOAD( "gw15-2ra.rom", 0x10000, 0x10000, CRC(4cd18cfa) SHA1(c197a098a7c1e5220aad039383a40702fe7c4f21) )
+ ROM_LOAD( "gw16-2rb.rom", 0x20000, 0x10000, CRC(f911c7be) SHA1(3f49f6c4734f2b644d93c4a54249aae6ff080e1d) )
+ ROM_LOAD( "gw17-3r.rom", 0x30000, 0x10000, CRC(79a9ce25) SHA1(74e3917b8e7a920ceb2135d7ef8fb2f2c5176b21) )
+
+ ROM_REGION( 0x8000, "adpcm", 0 )
+ ROM_LOAD( "gw01-6a.rom", 0x0000, 0x8000, CRC(d78afa05) SHA1(b02a739b045f5cddf943ce59226ef234463eeebe) )
+ROM_END
+
+ROM_START( rygark ) // same as rygarj except for gfx1
+ ROM_REGION( 0x18000, "maincpu", 0 )
+ ROM_LOAD( "cpuj_5p.bin", 0x00000, 0x08000, CRC(b39698ba) SHA1(01a5a12a71973ad117b0bbd763e470f89c439e45) )
+ ROM_LOAD( "cpuj_5m.bin", 0x08000, 0x04000, CRC(3f180979) SHA1(c4c2e9f83b06b8677978800bfcc39f4ba3b344ab) )
+ ROM_LOAD( "cpuj_5j.bin", 0x10000, 0x08000, CRC(69e44e8f) SHA1(e979760a3582e64788c043adf7e475f0e1b75033) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "cpu_4h.bin", 0x0000, 0x2000, CRC(e4a2fa87) SHA1(ed58187dbbcf59358496a98ffd6c227a87d6c433) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "rygark.8k", 0x00000, 0x08000, CRC(370bd8c0) SHA1(a4f140c8890608afdee4617ad1165b491cd103d8) )
+
+ ROM_REGION( 0x20000, "gfx2", 0 )
+ ROM_LOAD( "vid_6k.bin", 0x00000, 0x08000, CRC(aba6db9e) SHA1(43eb6f4f92afb5fbc11adc7e2ab04878ab56cb17) )
+ ROM_LOAD( "vid_6j.bin", 0x08000, 0x08000, CRC(ae1f2ed6) SHA1(6e6a33e665ba0884b7f57e9ad69d3f51e41d9e7b) )
+ ROM_LOAD( "vid_6h.bin", 0x10000, 0x08000, CRC(46d9e7df) SHA1(a24e0bea310a03636af704a0ad3f1a9cc4aafe12) )
+ ROM_LOAD( "vid_6g.bin", 0x18000, 0x08000, CRC(45839c9a) SHA1(eaee5767d8b0b62b991c089ef51b922e89850b79) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 )
+ ROM_LOAD( "vid_6p.bin", 0x00000, 0x08000, CRC(9eae5f8e) SHA1(ed83b608ca57b9bf69fa866d9b8f55d16b7cff63) )
+ ROM_LOAD( "vid_6o.bin", 0x08000, 0x08000, CRC(5a10a396) SHA1(12ebed3952ff35a2c275cb27c915f82183048cd4) )
+ ROM_LOAD( "vid_6n.bin", 0x10000, 0x08000, CRC(7b12cf3f) SHA1(6b9d8cad6e15317df01bab0591fab09199ca6d40) )
+ ROM_LOAD( "vid_6l.bin", 0x18000, 0x08000, CRC(3cea7eaa) SHA1(1dd194d5672dfe71c2b27d2d7b76f5a611cff76f) )
+
+ ROM_REGION( 0x20000, "gfx4", 0 )
+ ROM_LOAD( "vid_6f.bin", 0x00000, 0x08000, CRC(9840edd8) SHA1(f19a1a1d932214037144c533ad07ed81256c34e7) )
+ ROM_LOAD( "vid_6e.bin", 0x08000, 0x08000, CRC(ff65e074) SHA1(513c1bad336ef5d871f15d6ba8943020f98d1f4a) )
+ ROM_LOAD( "vid_6c.bin", 0x10000, 0x08000, CRC(89868c85) SHA1(f21550f40e7a177e95c40f2726c651f85ca8edce) )
+ ROM_LOAD( "vid_6b.bin", 0x18000, 0x08000, CRC(35389a7b) SHA1(a887a89f9bbb5979bb589468d80efba1f243690b) )
+
+ ROM_REGION( 0x4000, "adpcm", 0 )
+ ROM_LOAD( "cpu_1f.bin", 0x0000, 0x4000, CRC(3cc98c5a) SHA1(ea1035be939ed1a994f3273b33412c85dda0973e) )
+ROM_END
+
+GAME( 2002, geminit, gemini, gemini, gemini, tecmo_state, gemini, ROT90, "Twisty", "Gemini Wing Hack", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, rygark, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Hack", "Rygar (Korean)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/tecmo16.cpp b/docs/release/src/hbmame/drivers/tecmo16.cpp
new file mode 100644
index 00000000000..60d9fbea587
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/tecmo16.cpp
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/tecmo16.cpp"
+
+
+
+ROM_START( fstarfrcc )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "fstarfc01.rom", 0x00000, 0x40000, CRC(28a0b648) SHA1(b9b1ad7a7823b0c4e96bf1a3c4ede0192a78fe38) )
+ ROM_LOAD16_BYTE( "fstarfc02.rom", 0x00001, 0x40000, CRC(cd49179f) SHA1(b1093a999c5c918cf399589fba6d175cd6899e6a) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "fstarf07.rom", 0x00000, 0x10000, CRC(e0ad5de1) SHA1(677237341e837061b6cc02200c0752964caed907) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "fstarfc03.rom", 0x00000, 0x20000, CRC(4bedd245) SHA1(55a5dfac11dbd0c615025d25d24a5917a54955c7) )
+
+ ROM_REGION( 0x100000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "fstarf05.rom", 0x00000, 0x80000, CRC(77a281e7) SHA1(a87a90c2c856d45785cb56185b1a7dff3404b5cb) )
+ ROM_LOAD16_BYTE( "fstarf04.rom", 0x00001, 0x80000, CRC(398a920d) SHA1(eecc167803f48517348d68ce70f15e87eac204bb) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 )
+ ROM_LOAD16_BYTE( "fstarf09.rom", 0x00000, 0x80000, CRC(d51341d2) SHA1(e46c319158046d407d4387cb2d8f0b6cfd7be576) )
+ ROM_LOAD16_BYTE( "fstarf06.rom", 0x00001, 0x80000, CRC(07e40e87) SHA1(22867e52a8267ae8ae0ff0dba6bb846cb3e1b63d) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "fstarf08.rom", 0x00000, 0x20000, CRC(f0ad5693) SHA1(a0202801bb9f9c86175ca7989fbc9efa47183188) )
+ROM_END
+
+
+
+GAME( 1992, fstarfrcc, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Chinese)", 0 )
diff --git a/docs/release/src/hbmame/drivers/tehkanwc.cpp b/docs/release/src/hbmame/drivers/tehkanwc.cpp
new file mode 100644
index 00000000000..fcb204fa562
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/tehkanwc.cpp
@@ -0,0 +1,123 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/tehkanwc.cpp"
+
+ROM_START( ballonwc )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-1.bin", 0x0000, 0x4000, CRC(34d6d5ff) SHA1(72f4d408b8a7766d348f6a229d395e0c98215c40) )
+ ROM_LOAD( "twc-2.bin", 0x4000, 0x4000, CRC(7017a221) SHA1(4b4700af0a6ff64f976db369ba4b9d97cee1fd5f) )
+ ROM_LOAD( "twc-3.bin", 0x8000, 0x4000, CRC(8b662902) SHA1(13bcd4bf23e34dd7193545561e05bb2cb2c95f9b) )
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-4.bin", 0x0000, 0x8000, CRC(70a9f883) SHA1(ace04359265271eb37512a89eb0217eb013aecb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-6.bin", 0x0000, 0x4000, CRC(e3112be2) SHA1(7859e51b4312dc5df01c88e1d97cf608abc7ca72) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "twc-12.bin", 0x00000, 0x4000, CRC(a9e274f8) SHA1(02b46e1b149a856f0be74a23faaeb792935b66c7) ) /* fg tiles */
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "blwc-8.bin", 0x00000, 0x8000, CRC(a0f75389) SHA1(60c5117430ac3471768efd0341ea533f49e8b1bd) ) /* sprites */
+ ROM_LOAD( "twc-7.bin", 0x08000, 0x8000, CRC(59faebe7) SHA1(85dad90928369601e039467d575750539410fcf6) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "twc-11.bin", 0x00000, 0x8000, CRC(669389fc) SHA1(a93e8455060ce5242cb65f78e47b4840aa13ab13) ) /* bg tiles */
+ ROM_LOAD( "twc-9.bin", 0x08000, 0x8000, CRC(347ef108) SHA1(bb9c2f51d65f28655404e10c3be44d7ade98711b) )
+
+ ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples */
+ ROM_LOAD( "twc-5.bin", 0x0000, 0x4000, CRC(444b5544) SHA1(0786d6d9ada7fe49c8ab9751b049095474d2e598) )
+ROM_END
+
+ROM_START( tehkangc )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-1.bin", 0x0000, 0x4000, CRC(34d6d5ff) SHA1(72f4d408b8a7766d348f6a229d395e0c98215c40) )
+ ROM_LOAD( "twc-2.bin", 0x4000, 0x4000, CRC(7017a221) SHA1(4b4700af0a6ff64f976db369ba4b9d97cee1fd5f) )
+ ROM_LOAD( "twc-3.bin", 0x8000, 0x4000, CRC(8b662902) SHA1(13bcd4bf23e34dd7193545561e05bb2cb2c95f9b) )
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-4.bin", 0x0000, 0x8000, CRC(70a9f883) SHA1(ace04359265271eb37512a89eb0217eb013aecb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-6.bin", 0x0000, 0x4000, CRC(e3112be2) SHA1(7859e51b4312dc5df01c88e1d97cf608abc7ca72) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "tgc-12.bin", 0x00000, 0x4000, CRC(dbf5cede) SHA1(ec2d21f62ab331ce64c7765f6b05a8c3c69e8ddd) ) /* fg tiles */
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "tgc-8.bin", 0x00000, 0x8000, CRC(1177c8a0) SHA1(be0e0c763f2ac08ede546884e616073eb9a5517d) ) /* sprites */
+ ROM_LOAD( "tgc-7.bin", 0x08000, 0x8000, CRC(7f01d5a4) SHA1(4494ca82c9d16a4047591de7b588a8ab53ce5170) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "twc-11.bin", 0x00000, 0x8000, CRC(669389fc) SHA1(a93e8455060ce5242cb65f78e47b4840aa13ab13) ) /* bg tiles */
+ ROM_LOAD( "twc-9.bin", 0x08000, 0x8000, CRC(347ef108) SHA1(bb9c2f51d65f28655404e10c3be44d7ade98711b) )
+
+ ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples */
+ ROM_LOAD( "twc-5.bin", 0x0000, 0x4000, CRC(444b5544) SHA1(0786d6d9ada7fe49c8ab9751b049095474d2e598) )
+ROM_END
+
+ROM_START( tankwc )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-1.bin", 0x0000, 0x4000, CRC(34d6d5ff) SHA1(72f4d408b8a7766d348f6a229d395e0c98215c40) )
+ ROM_LOAD( "twc-2.bin", 0x4000, 0x4000, CRC(7017a221) SHA1(4b4700af0a6ff64f976db369ba4b9d97cee1fd5f) )
+ ROM_LOAD( "twc-3.bin", 0x8000, 0x4000, CRC(8b662902) SHA1(13bcd4bf23e34dd7193545561e05bb2cb2c95f9b) )
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-4.bin", 0x0000, 0x8000, CRC(70a9f883) SHA1(ace04359265271eb37512a89eb0217eb013aecb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-6.bin", 0x0000, 0x4000, CRC(e3112be2) SHA1(7859e51b4312dc5df01c88e1d97cf608abc7ca72) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "tkwc-12.bin", 0x00000, 0x4000, CRC(cf5e084a) SHA1(bba909898135467a8cbe8ca7ba7d14254ad52135) ) /* fg tiles */
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "tkwc-8.bin", 0x00000, 0x8000, CRC(068210d1) SHA1(f2f21fa9452ba6d47ccdb4de3ddab833956d3fea) ) /* sprites */
+ ROM_LOAD( "tkwc-7.bin", 0x08000, 0x8000, CRC(8e7dca59) SHA1(4ae3d6c0faf99d16db5b3c49ae96aa87741f635c) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "tkwc-11.bin", 0x00000, 0x8000, CRC(1f8536e3) SHA1(de44a066fc5862bac7de039053262ec167b70c35) ) /* bg tiles */
+ ROM_LOAD( "tkwc-9.bin", 0x08000, 0x8000, CRC(f88f52ed) SHA1(33fa29582f81f2da7dcb671ccb0c7121b95b545f) )
+
+ ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples */
+ ROM_LOAD( "twc-5.bin", 0x0000, 0x4000, CRC(444b5544) SHA1(0786d6d9ada7fe49c8ab9751b049095474d2e598) )
+ROM_END
+
+ROM_START( twc_gr )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-1gr.bin", 0x0000, 0x4000, CRC(0686377f) SHA1(69c4d63c216e0b640ad514568a07c414a94bae7c) )
+ ROM_LOAD( "twc-2.bin", 0x4000, 0x4000, CRC(7017a221) SHA1(4b4700af0a6ff64f976db369ba4b9d97cee1fd5f) )
+ ROM_LOAD( "twc-3gr.bin", 0x8000, 0x4000, CRC(9a10118d) SHA1(1319e465620ab297bf70aed6eed426b68580a327) )
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-4gr.bin", 0x0000, 0x8000, CRC(8a13d6ac) SHA1(cc9b7a0836d6b4ff5f037a165451f6cf2f967d21) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for code */
+ ROM_LOAD( "twc-6.bin", 0x0000, 0x4000, CRC(e3112be2) SHA1(7859e51b4312dc5df01c88e1d97cf608abc7ca72) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "twc-12gr.bin", 0x00000, 0x4000, CRC(17808225) SHA1(259c0162c4eef4eceb889f4a1a142b541376e04d) ) /* fg tiles */
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "twc-8.bin", 0x00000, 0x8000, CRC(055a5264) SHA1(fe294ba57c2c858952e2fab0be1b8859730846cb) ) /* sprites */
+ ROM_LOAD( "twc-7.bin", 0x08000, 0x8000, CRC(59faebe7) SHA1(85dad90928369601e039467d575750539410fcf6) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "twc-11gr.bin", 0x00000, 0x8000, CRC(ceab1e34) SHA1(f803965ef8b69a5951656f890f0e411dfdeef7ab) ) /* bg tiles */
+ ROM_LOAD( "twc-9gr.bin", 0x08000, 0x8000, CRC(b120fbee) SHA1(a7012ec3ecbedfb3d04477bdda6f87f1fe819919) )
+
+ ROM_REGION( 0x8000, "adpcm", 0 ) /* ADPCM samples */
+ ROM_LOAD( "twc-5.bin", 0x0000, 0x4000, CRC(444b5544) SHA1(0786d6d9ada7fe49c8ab9751b049095474d2e598) )
+ROM_END
+
+GAME( 1985, ballonwc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "Grand Master Peter", "Ballon World Cup", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, tehkangc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "Grand Master Peter", "Tehkan Greek Cup", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, tankwc, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "Kazzy", "Tank World Cup", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, twc_gr, tehkanwc, tehkanwc, tehkanwc, driver_device, 0, ROT0, "GreekRoms", "Tehkan World Cup (Greek)", MACHINE_SUPPORTS_SAVE )
+
+/* Notes on E602 - Tehkan World Cup (set 3 bootleg) (1986)
+ - Year is 1986 instead of 1985 - seems this is possibly the Spanish version
+ - Rom 1 is overdumped, after fixing this, noticed last byte changed from 27 to FF
+ - 4 bytes in rom 9 changed - this rom makes the gfx on the title screen
+ - Could not see any visual or other differences
+ - Therefore, game not added */
diff --git a/docs/release/src/hbmame/drivers/tempest.cpp b/docs/release/src/hbmame/drivers/tempest.cpp
new file mode 100644
index 00000000000..afb948e8f85
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/tempest.cpp
@@ -0,0 +1,782 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/tempest.cpp"
+
+
+/* most of these inputs are not verified */
+static INPUT_PORTS_START( aliensv )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT ) /* no tilt */
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Diagnostic Step") PORT_CODE(KEYCODE_F1)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER("avg", avg_tempest_device, done_r, NULL)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, tempest_state,clock_r, NULL)
+
+ PORT_START("IN1/DSW0")
+ PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, tempest_state,tempest_knob_r, NULL)
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) /* controls change but no flip */
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x03, "Medium1" )
+ PORT_DIPSETTING( 0x00, "Medium2" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x04, 0x04, "Rating" )
+ PORT_DIPSETTING( 0x04, "1, 3, 5, 7, 9" )
+ PORT_DIPSETTING( 0x00, "tied to high score" )
+ PORT_BIT(0x18, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, tempest_state,tempest_buttons_r, NULL)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coinage ) ) /* coinage verified */
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x00, "Right Coin" )
+ PORT_DIPSETTING( 0x00, "*1" )
+ PORT_DIPSETTING( 0x04, "*4" )
+ PORT_DIPSETTING( 0x08, "*5" )
+ PORT_DIPSETTING( 0x0c, "*6" )
+ PORT_DIPNAME( 0x10, 0x00, "Left Coin" )
+ PORT_DIPSETTING( 0x00, "*1" )
+ PORT_DIPSETTING( 0x10, "*2" )
+ PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPSETTING( 0x80, "1 each 5" )
+ PORT_DIPSETTING( 0x40, "1 each 4 (+Demo)" )
+ PORT_DIPSETTING( 0xa0, "1 each 3" )
+ PORT_DIPSETTING( 0x60, "2 each 4 (+Demo)" )
+ PORT_DIPSETTING( 0x20, "1 each 2" )
+ PORT_DIPSETTING( 0xc0, "Freeze Mode" )
+ PORT_DIPSETTING( 0xe0, "Freeze Mode" )
+
+ PORT_START("DSW2") /* DSW2 all dips verified */
+ PORT_DIPNAME( 0x01, 0x00, "Minimum" )
+ PORT_DIPSETTING( 0x00, "1 Credit" )
+ PORT_DIPSETTING( 0x01, "2 Credit" )
+ PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x08, "4" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Language ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( English ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( French ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( German ) )
+ PORT_DIPSETTING( 0x30, DEF_STR( Spanish ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Bonus_Life ) )
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x02, "20000" )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // if high it freezes
+
+ PORT_START(TEMPEST_KNOB_P1_TAG )
+ /* This is the Tempest spinner input. It only uses 4 bits. */
+ PORT_BIT( 0x0f, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_FULL_TURN_COUNT(72)
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START(TEMPEST_KNOB_P2_TAG )
+ /* This is the Tempest spinner input. It only uses 4 bits. */
+ PORT_BIT( 0x0f, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_PLAYER(2) PORT_FULL_TURN_COUNT(72)
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START(TEMPEST_BUTTONS_P1_TAG )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START(TEMPEST_BUTTONS_P2_TAG )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+ROM_START( temped )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "136002.113", 0x9000, 0x0800, CRC(65d61fe7) SHA1(38a1e8a8f65b7887cf3e190269fe4ce2c6f818aa) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "temped.118", 0xb800, 0x0800, CRC(4825ee42) SHA1(7082c4a2f4b945c004b3b17166e0e58484fda3d2) )
+ ROM_LOAD( "136002.119", 0xc000, 0x0800, CRC(a4de050f) SHA1(ea302e43a313a5a18115e74ddbaaedde0fbecda7) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "136002.121", 0xd000, 0x0800, CRC(73d38e47) SHA1(9980606376a79ba94f8e2a325871a6c8d10d83fc) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tempestm )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "136002.113", 0x9000, 0x0800, CRC(65d61fe7) SHA1(38a1e8a8f65b7887cf3e190269fe4ce2c6f818aa) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tempestm.118", 0xb800, 0x0800, CRC(b5e00840) SHA1(912e98b6766143ff5a1bc09c4d9685379408ee85) )
+ ROM_LOAD( "tempestm.119", 0xc000, 0x0800, CRC(ed4f2132) SHA1(b7deb31b23c28d0e084772bbed80a1c5997eac12) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "136002.121", 0xd000, 0x0800, CRC(73d38e47) SHA1(9980606376a79ba94f8e2a325871a6c8d10d83fc) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tempall ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tempall.118", 0xb800, 0x0800, CRC(beb352ab) SHA1(f213166d3970e0bd0f29d8dea8d6afa6990cce38) )
+ ROM_LOAD( "136002.119", 0xc000, 0x0800, CRC(a4de050f) SHA1(ea302e43a313a5a18115e74ddbaaedde0fbecda7) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "136002.121", 0xd000, 0x0800, CRC(73d38e47) SHA1(9980606376a79ba94f8e2a325871a6c8d10d83fc) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( temptwst ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "temptwst.118", 0xb800, 0x0800, CRC(f30afe2d) SHA1(b83b0fd7c8f4c51e2c2dc1f516212ce53fa8b240) )
+ ROM_LOAD( "temptwst.119", 0xc000, 0x0800, CRC(571b1799) SHA1(d6e5615032bcae0018e388d7e7d8a00c42ff0c5a) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "temptwst.121", 0xd000, 0x0800, CRC(67619e6e) SHA1(4cf91abc535cc8c5de7e5f30fabe0876a5182b39) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tmptwsta ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tmptwsta.118", 0xb800, 0x0800, CRC(a45add57) SHA1(79748a415dbc0a5f600d38ac098bd2d63a4f9ecc) )
+ ROM_LOAD( "temptwst.119", 0xc000, 0x0800, CRC(571b1799) SHA1(d6e5615032bcae0018e388d7e7d8a00c42ff0c5a) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "temptwst.121", 0xd000, 0x0800, CRC(67619e6e) SHA1(4cf91abc535cc8c5de7e5f30fabe0876a5182b39) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tmptwst2 ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tmptwst2.118", 0xb800, 0x0800, CRC(1c6827cb) SHA1(d5a555f6ad59630e6d33c4bacad80ee429349e59) )
+ ROM_LOAD( "temptwst.119", 0xc000, 0x0800, CRC(571b1799) SHA1(d6e5615032bcae0018e388d7e7d8a00c42ff0c5a) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "tmptwst2.121", 0xd000, 0x0800, CRC(c1bc4a69) SHA1(a60491fd7d6715118ed0d59dac0064c4263e15c6) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tmptwst3 ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tmptwst3.118", 0xb800, 0x0800, CRC(c8e7693f) SHA1(18914841f3dc685d9a72bc2aaae940f6b6711e27) )
+ ROM_LOAD( "temptwst.119", 0xc000, 0x0800, CRC(571b1799) SHA1(d6e5615032bcae0018e388d7e7d8a00c42ff0c5a) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "tmptwst3.121", 0xd000, 0x0800, CRC(194b34a9) SHA1(86c34dcccc2054cad4f8c175c4db4d3856172f66) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tmptwst4 ) /* rev 3 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "tempall.113", 0x9000, 0x0800, CRC(a9000137) SHA1(1dfb23f5d47e49923c681d4483d744795d589af0) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "tmptwst4.118", 0xb800, 0x0800, CRC(2b6fcca4) SHA1(adfd65c94c46235ba47017e726a7b3c554e8e07a) )
+ ROM_LOAD( "temptwst.119", 0xc000, 0x0800, CRC(571b1799) SHA1(d6e5615032bcae0018e388d7e7d8a00c42ff0c5a) )
+ ROM_LOAD( "136002.120", 0xc800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_LOAD( "tmptwst4.121", 0xd000, 0x0800, CRC(7fde0be4) SHA1(3d06b0f0ef71132b3fa67ad8930e2dd334e90932) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( vbrakout )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "vbrakout.113", 0x9000, 0x0800, CRC(6fd3efe5) SHA1(d195d08984ad8797607bc1989e8a606d51547c68) )
+ ROM_LOAD( "vbrakout.114", 0x9800, 0x0800, CRC(9974b9a5) SHA1(6ecc6f72070895bb15992977348f58835233911f) )
+ ROM_LOAD( "vbrakout.115", 0xa000, 0x0800, CRC(44d611d8) SHA1(82cd63fc9067ea1f00feeffbee66e7d750cab7e5) )
+ ROM_LOAD( "vbrakout.116", 0xa800, 0x0800, CRC(cd58fc11) SHA1(060e31e55183ccef67a1adc91fb48c22424a4ba5) )
+ ROM_LOAD( "vbrakout.122", 0xd800, 0x0800, CRC(1ae2dd53) SHA1(b908ba6b59195aea853380a56a243aa8fa2fba71) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( temptlm )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "temptlm.113", 0x9000, 0x0800, CRC(44103863) )
+ ROM_LOAD( "136002-114.e1", 0x9800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_LOAD( "136002.115", 0xa000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_LOAD( "136002.316", 0xa800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_LOAD( "136002.217", 0xb000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_LOAD( "136002.118", 0xb800, 0x0800, CRC(beb352ab) SHA1(f213166d3970e0bd0f29d8dea8d6afa6990cce38) )
+ ROM_LOAD( "136002.119", 0xc000, 0x0800, CRC(a4de050f) SHA1(ea302e43a313a5a18115e74ddbaaedde0fbecda7) )
+ ROM_LOAD( "temptlm.120", 0xc800, 0x0800, CRC(d27ed181) )
+ ROM_LOAD( "136002.121", 0xd000, 0x0800, CRC(73d38e47) SHA1(9980606376a79ba94f8e2a325871a6c8d10d83fc) )
+ ROM_LOAD( "136002.222", 0xd800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "136002-123.np3", 0x3000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) ) /* May be labeled "136002-111", same data */
+ ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+
+/* The following prototypes, if run on the real hardware, can ruin your monitor... */
+/* or, as written in the readme, "DONT RUN IT ON REAL HARDWARE - IT CAN FUCK THE MONITOR." ;) */
+
+ROM_START( tvortex ) /* rev 1 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "d1.bin", 0x9000, 0x0800, CRC(3aff3417) SHA1(3b7c31f01b7467757ec85e98a17038e5df5720bb) )
+ ROM_LOAD( "e1.bin", 0x9800, 0x0800, CRC(11861be3) SHA1(a35797c649e8286c844cee6dac86ac50f4fbd669) )
+ ROM_LOAD( "f1.bin", 0xa000, 0x0800, CRC(1d251111) SHA1(2912a21dc708231e28d6164e54e593a8300b9c4a) )
+ ROM_LOAD( "h1.bin", 0xa800, 0x0800, CRC(937a9859) SHA1(336b25291533d19294f1ced730bbf20971849adf) )
+ ROM_LOAD( "j1.bin", 0xb000, 0x0800, CRC(79481246) SHA1(c5362670fd29ef1432f8e626323da395d6e8a675) )
+ ROM_LOAD( "k1.bin", 0xb800, 0x0800, CRC(390f872a) SHA1(c5463ea2d2307e21c941b5b459e3652c12154609) )
+ ROM_LOAD( "lm1.bin", 0xc000, 0x0800, CRC(515760dd) SHA1(773f06c9a64e72f9d3d8a5c622bf3ec2b4ba678d) )
+ ROM_LOAD( "mn1.bin", 0xc800, 0x0800, CRC(c6c41c68) SHA1(9323c07fc80a947142dde008c53f5e8c0b0c572d) )
+ ROM_LOAD( "p1.bin", 0xd000, 0x0800, CRC(3c2ff130) SHA1(32ebabcb2cbd7aab5e29de2b873f02ed78776ae6) )
+ ROM_LOAD( "r1.bin", 0xd800, 0x0800, CRC(67cafbb1) SHA1(467515733d843398e6fe29661002536a1e6c8fc9) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "n3.bin", 0x3000, 0x0800, CRC(29c6a1cb) SHA1(290702a1c0942a68e288b37963e51eba02177a3f) )
+ ROM_LOAD( "r3.bin", 0x3800, 0x0800, CRC(7fbe5e21) SHA1(e5de6c3af82e64444b0ddcda559e9cb4fbf6c1da) )
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( tvortexa ) /* rev 2? */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "d1.bin", 0x9000, 0x0800, CRC(3aff3417) SHA1(3b7c31f01b7467757ec85e98a17038e5df5720bb) )
+ ROM_LOAD( "e1.bin", 0x9800, 0x0800, CRC(11861be3) SHA1(a35797c649e8286c844cee6dac86ac50f4fbd669) )
+ ROM_LOAD( "f1.bin", 0xa000, 0x0800, CRC(1d251111) SHA1(2912a21dc708231e28d6164e54e593a8300b9c4a) )
+ ROM_LOAD( "h1.bin", 0xa800, 0x0800, CRC(937a9859) SHA1(336b25291533d19294f1ced730bbf20971849adf) )
+ ROM_LOAD( "j1.bin", 0xb000, 0x0800, CRC(79481246) SHA1(c5362670fd29ef1432f8e626323da395d6e8a675) )
+ ROM_LOAD( "k1.bin", 0xb800, 0x0800, CRC(390f872a) SHA1(c5463ea2d2307e21c941b5b459e3652c12154609) )
+ ROM_LOAD( "lm1.bin", 0xc000, 0x0800, CRC(515760dd) SHA1(773f06c9a64e72f9d3d8a5c622bf3ec2b4ba678d) )
+ ROM_LOAD( "mn1.bin", 0xc800, 0x0800, CRC(c6c41c68) SHA1(9323c07fc80a947142dde008c53f5e8c0b0c572d) )
+ ROM_LOAD( "p1.bin", 0xd000, 0x0800, CRC(3c2ff130) SHA1(32ebabcb2cbd7aab5e29de2b873f02ed78776ae6) )
+ ROM_LOAD( "r1_alt.bin", 0xd800, 0x0800, CRC(2711c2cc) SHA1(f5e43dd46c24828e733b70f7bd678522c34e318a) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "n3.bin", 0x3000, 0x0800, CRC(29c6a1cb) SHA1(290702a1c0942a68e288b37963e51eba02177a3f) )
+ ROM_LOAD( "r3.bin", 0x3800, 0x0800, CRC(7fbe5e21) SHA1(e5de6c3af82e64444b0ddcda559e9cb4fbf6c1da) )
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( aliensv ) /* rev 1 */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "aliens_d1.bin", 0x9000, 0x0800, CRC(337e21f6) SHA1(7adadeaa975e22f0b20e8f1fb6ad68b5c3934133) )
+ ROM_LOAD( "aliens_e1.bin", 0x9800, 0x0800, CRC(337e21f6) SHA1(7adadeaa975e22f0b20e8f1fb6ad68b5c3934133) )
+ ROM_LOAD( "aliens_f1.bin", 0xa000, 0x0800, CRC(4d2aabb0) SHA1(31106a1fc22d2a19866f07b8d6c6f4bf76007909) )
+ ROM_LOAD( "aliens_h1.bin", 0xa800, 0x0800, CRC(a503f54a) SHA1(91ebf9f69a183a04a5bf55fcdd9e191523bb66bb) )
+ ROM_LOAD( "aliens_j1.bin", 0xb000, 0x0800, CRC(5487d531) SHA1(c95f037151b824345af03f27a6c3c7eb8a899b2c) )
+ ROM_LOAD( "aliens_k1.bin", 0xb800, 0x0800, CRC(0ac96e87) SHA1(37461e84e6f46516c25dbf4ddb2ffd65877445c0) )
+ ROM_LOAD( "aliens_l1.bin", 0xc000, 0x0800, CRC(cd246ac2) SHA1(de2e6fe2e72c092c3874e797fc302a71dbf57710) )
+ ROM_LOAD( "aliens_n1.bin", 0xc800, 0x0800, CRC(bd98c5f3) SHA1(268487d9cf46b4b7b49eab7420d078bf676e636c) )
+ ROM_LOAD( "aliens_p1.bin", 0xd000, 0x0800, CRC(7c10adbd) SHA1(38579128a90bff4a7a4ae46d6aaa42118b8bc218) )
+ ROM_LOAD( "aliens_r1.bin", 0xd800, 0x0800, CRC(555c3070) SHA1(032f03af23c7ccac8a2bf50c3c646e141921ffee) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "aliens_n3.bin", 0x3000, 0x0800, CRC(5c8fd38b) SHA1(bb0d6bd062eba53b5d64b3f444d5ce0a34728bf5) )
+ ROM_LOAD( "aliens_r3.bin", 0x3800, 0x0800, CRC(6cabcd08) SHA1(e3950de50f3dfbc4d4d2f4fe26625d8ef94c0819) )
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+ROM_START( aliensva ) /* rev 2? */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code */
+ ROM_LOAD( "aliens_d1.bin", 0x9000, 0x0800, CRC(337e21f6) SHA1(7adadeaa975e22f0b20e8f1fb6ad68b5c3934133) )
+ ROM_LOAD( "aliens_e1.bin", 0x9800, 0x0800, CRC(337e21f6) SHA1(7adadeaa975e22f0b20e8f1fb6ad68b5c3934133) )
+ ROM_LOAD( "aliens_f1.bin", 0xa000, 0x0800, CRC(4d2aabb0) SHA1(31106a1fc22d2a19866f07b8d6c6f4bf76007909) )
+ ROM_LOAD( "aliens_h1.bin", 0xa800, 0x0800, CRC(a503f54a) SHA1(91ebf9f69a183a04a5bf55fcdd9e191523bb66bb) )
+ ROM_LOAD( "aliens_j1.bin", 0xb000, 0x0800, CRC(5487d531) SHA1(c95f037151b824345af03f27a6c3c7eb8a899b2c) )
+ ROM_LOAD( "aliens_k1.bin", 0xb800, 0x0800, CRC(0ac96e87) SHA1(37461e84e6f46516c25dbf4ddb2ffd65877445c0) )
+ ROM_LOAD( "aliens_l1.bin", 0xc000, 0x0800, CRC(cd246ac2) SHA1(de2e6fe2e72c092c3874e797fc302a71dbf57710) )
+ ROM_LOAD( "aliens_n1.bin", 0xc800, 0x0800, CRC(bd98c5f3) SHA1(268487d9cf46b4b7b49eab7420d078bf676e636c) )
+ ROM_LOAD( "aliens_p1.bin", 0xd000, 0x0800, CRC(7c10adbd) SHA1(38579128a90bff4a7a4ae46d6aaa42118b8bc218) )
+ ROM_LOAD( "aliens_r1a.bin", 0xd800, 0x0800, CRC(4da6627d) SHA1(01d8eea45373e3e87c81bc3b31d85ba8c7f4fcb3) )
+ ROM_RELOAD( 0xf800, 0x0800 ) /* for reset/interrupt vectors */
+ /* Vector ROM */
+ ROM_LOAD( "aliens_n3.bin", 0x3000, 0x0800, CRC(5c8fd38b) SHA1(bb0d6bd062eba53b5d64b3f444d5ce0a34728bf5) )
+ ROM_LOAD( "aliens_r3.bin", 0x3800, 0x0800, CRC(6cabcd08) SHA1(e3950de50f3dfbc4d4d2f4fe26625d8ef94c0819) )
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+/* tempest multigame */
+
+class tempmg_state : public tempest_state
+{
+public:
+ tempmg_state(const machine_config &mconfig, device_type type, const char *tag)
+ : tempest_state(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ { }
+
+ DECLARE_WRITE8_MEMBER(tempmg_rombank_w);
+ DECLARE_MACHINE_RESET(tempmg);
+ DECLARE_DRIVER_INIT(tempmg);
+ required_device<cpu_device> m_maincpu;
+};
+
+WRITE8_MEMBER( tempmg_state::tempmg_rombank_w )
+{
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->set_entry(data);
+ membank("bank2")->set_entry(data);
+ /* standard rom banking would not work here, using memcpy instead */
+ if (data < 4) memcpy(&RAM[0x3000], &RAM[0x16000+(data<<15)],0x1000);
+}
+
+MACHINE_RESET_MEMBER( tempmg_state, tempmg )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ tempmg_rombank_w (space, 0,0);
+}
+
+DRIVER_INIT_MEMBER( tempmg_state, tempmg )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ uint8_t *RAM = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 8, &RAM[0x11000], 0x8000); // main roms
+ membank("bank2")->configure_entries(0, 8, &RAM[0x17800], 0x8000); // vectors
+ tempmg_rombank_w (space, 0,0);
+}
+
+static ADDRESS_MAP_START( tempmg_map, AS_PROGRAM, 8, tempmg_state )
+ AM_RANGE(0x0000, 0x07ff) AM_RAM
+ AM_RANGE(0x0800, 0x080f) AM_WRITEONLY AM_SHARE("colorram")
+ AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("IN0")
+ AM_RANGE(0x0d00, 0x0d00) AM_READ_PORT("DSW1")
+ AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("DSW2")
+ AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
+ AM_RANGE(0x3000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x4000) AM_WRITE(tempest_coin_w)
+ AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("avg", avg_tempest_device, go_w)
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(wdclr_w)
+ AM_RANGE(0x5800, 0x5800) AM_DEVWRITE("avg", avg_tempest_device, reset_w)
+ AM_RANGE(0x6000, 0x603f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
+ AM_RANGE(0x6040, 0x6040) AM_DEVREAD("mathbox", mathbox_device, status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
+ AM_RANGE(0x6050, 0x6050) AM_DEVREAD("earom", atari_vg_earom_device, read)
+ AM_RANGE(0x6060, 0x6060) AM_DEVREAD("mathbox", mathbox_device, lo_r)
+ AM_RANGE(0x6070, 0x6070) AM_DEVREAD("mathbox", mathbox_device, hi_r)
+ AM_RANGE(0x6080, 0x609f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
+ AM_RANGE(0x60c0, 0x60cf) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
+ AM_RANGE(0x60d0, 0x60df) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
+ AM_RANGE(0x60e0, 0x60e0) AM_WRITE(tempest_led_w)
+ AM_RANGE(0x9000, 0xdfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xe000, 0xe000) AM_WRITE(tempmg_rombank_w)
+ AM_RANGE(0xf800, 0xffff) AM_ROMBANK("bank2")
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_DERIVED_CLASS( tempmg, tempest, tempmg_state ) // new cfg, old cfg, new class
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(tempmg_map)
+ MCFG_MACHINE_RESET_OVERRIDE(tempmg_state, tempmg)
+MACHINE_CONFIG_END
+
+ROM_START( tempmg )
+ ROM_REGION( 0x50000, "maincpu", 0 )
+ ROM_LOAD( "tempmg-113.d1", 0x11000, 0x0800, CRC(8a6633fb) SHA1(b143a5d2019f24666b350b40b0dab2924bb9c7c0) )
+ ROM_LOAD( "tempmg-114.e1", 0x11800, 0x0800, CRC(2eedfdf6) SHA1(2ed494bd8610bebd07284289ca8b7059fd805300) )
+ ROM_LOAD( "tempmg-115.f1", 0x12000, 0x0800, CRC(12f62746) SHA1(37356b5738c27ffe4c38f1b6cf99ae21441d8e8e) )
+ ROM_LOAD( "tempmg-222.r1", 0x15800, 0x0800, CRC(1d8f194a) SHA1(c77f6b83f5c498c0f2d5372089a4604913a4aad5) )
+ ROM_RELOAD( 0x17800, 0x0800 )
+ ROM_LOAD( "aliens_d1.bin", 0x19000, 0x0800, CRC(337e21f6) SHA1(7adadeaa975e22f0b20e8f1fb6ad68b5c3934133) )
+ ROM_RELOAD( 0x19800, 0x0800 )
+ ROM_LOAD( "aliens_f1.bin", 0x1a000, 0x0800, CRC(4d2aabb0) SHA1(31106a1fc22d2a19866f07b8d6c6f4bf76007909) )
+ ROM_LOAD( "aliens_h1.bin", 0x1a800, 0x0800, CRC(a503f54a) SHA1(91ebf9f69a183a04a5bf55fcdd9e191523bb66bb) )
+ ROM_LOAD( "aliens_j1.bin", 0x1b000, 0x0800, CRC(5487d531) SHA1(c95f037151b824345af03f27a6c3c7eb8a899b2c) )
+ ROM_LOAD( "aliens_k1.bin", 0x1b800, 0x0800, CRC(0ac96e87) SHA1(37461e84e6f46516c25dbf4ddb2ffd65877445c0) )
+ ROM_LOAD( "aliens_l1.bin", 0x1c000, 0x0800, CRC(cd246ac2) SHA1(de2e6fe2e72c092c3874e797fc302a71dbf57710) )
+ ROM_LOAD( "aliens_n1.bin", 0x1c800, 0x0800, CRC(bd98c5f3) SHA1(268487d9cf46b4b7b49eab7420d078bf676e636c) )
+ ROM_LOAD( "aliens_p1.bin", 0x1d000, 0x0800, CRC(7c10adbd) SHA1(38579128a90bff4a7a4ae46d6aaa42118b8bc218) )
+ ROM_LOAD( "aliens_r1.bin", 0x1d800, 0x0800, CRC(555c3070) SHA1(032f03af23c7ccac8a2bf50c3c646e141921ffee) )
+ ROM_RELOAD( 0x1f800, 0x0800 ) /* for reset/interrupt vectors */
+ ROM_LOAD( "vb_d1.bin", 0x21000, 0x0800, CRC(6fd3efe5) SHA1(d195d08984ad8797607bc1989e8a606d51547c68) )
+ ROM_LOAD( "vb_e1.bin", 0x21800, 0x0800, CRC(9974b9a5) SHA1(6ecc6f72070895bb15992977348f58835233911f) )
+ ROM_LOAD( "vb_f1.bin", 0x22000, 0x0800, CRC(44d611d8) SHA1(82cd63fc9067ea1f00feeffbee66e7d750cab7e5) )
+ ROM_LOAD( "vb_h1.bin", 0x22800, 0x0800, CRC(cd58fc11) SHA1(060e31e55183ccef67a1adc91fb48c22424a4ba5) )
+ ROM_LOAD( "vb_r1.bin", 0x25800, 0x0800, CRC(1ae2dd53) SHA1(b908ba6b59195aea853380a56a243aa8fa2fba71) )
+ ROM_RELOAD( 0x27800, 0x0800 ) /* for reset/interrupt vectors */
+ ROM_LOAD( "d1.bin", 0x29000, 0x0800, CRC(3aff3417) SHA1(3b7c31f01b7467757ec85e98a17038e5df5720bb) )
+ ROM_LOAD( "e1.bin", 0x29800, 0x0800, CRC(11861be3) SHA1(a35797c649e8286c844cee6dac86ac50f4fbd669) )
+ ROM_LOAD( "f1.bin", 0x2a000, 0x0800, CRC(1d251111) SHA1(2912a21dc708231e28d6164e54e593a8300b9c4a) )
+ ROM_LOAD( "h1.bin", 0x2a800, 0x0800, CRC(937a9859) SHA1(336b25291533d19294f1ced730bbf20971849adf) )
+ ROM_LOAD( "j1.bin", 0x2b000, 0x0800, CRC(79481246) SHA1(c5362670fd29ef1432f8e626323da395d6e8a675) )
+ ROM_LOAD( "k1.bin", 0x2b800, 0x0800, CRC(390f872a) SHA1(c5463ea2d2307e21c941b5b459e3652c12154609) )
+ ROM_LOAD( "lm1.bin", 0x2c000, 0x0800, CRC(515760dd) SHA1(773f06c9a64e72f9d3d8a5c622bf3ec2b4ba678d) )
+ ROM_LOAD( "mn1.bin", 0x2c800, 0x0800, CRC(c6c41c68) SHA1(9323c07fc80a947142dde008c53f5e8c0b0c572d) )
+ ROM_LOAD( "p1.bin", 0x2d000, 0x0800, CRC(3c2ff130) SHA1(32ebabcb2cbd7aab5e29de2b873f02ed78776ae6) )
+ ROM_LOAD( "r1.bin", 0x2d800, 0x0800, CRC(67cafbb1) SHA1(467515733d843398e6fe29661002536a1e6c8fc9) )
+ ROM_RELOAD( 0x2f800, 0x0800 ) /* for reset/interrupt vectors */
+ ROM_LOAD( "136002-113.d1", 0x31000, 0x0800, CRC(65d61fe7) SHA1(38a1e8a8f65b7887cf3e190269fe4ce2c6f818aa) )
+ ROM_RELOAD( 0x39000, 0x0800 )
+ ROM_RELOAD( 0x41000, 0x0800 )
+ ROM_RELOAD( 0x49000, 0x0800 )
+ ROM_LOAD( "136002-114.e1", 0x31800, 0x0800, CRC(11077375) SHA1(ed8ff0ca969da6672a7683b93d4fcf2935a0d903) )
+ ROM_RELOAD( 0x39800, 0x0800 )
+ ROM_RELOAD( 0x41800, 0x0800 )
+ ROM_RELOAD( 0x49800, 0x0800 )
+ ROM_LOAD( "136002-115.f1", 0x32000, 0x0800, CRC(f3e2827a) SHA1(bd04fcfbbba995e08c3144c1474fcddaaeb1c700) )
+ ROM_RELOAD( 0x3a000, 0x0800 )
+ ROM_RELOAD( 0x42000, 0x0800 )
+ ROM_RELOAD( 0x4a000, 0x0800 )
+ ROM_LOAD( "136002-316.h1", 0x32800, 0x0800, CRC(aeb0f7e9) SHA1(a5cc25015b98692673cfc1c7c2e9634efd750870) )
+ ROM_RELOAD( 0x4a800, 0x0800 )
+ ROM_RELOAD( 0x12800, 0x0800 )
+ ROM_LOAD( "136002-217.j1", 0x33000, 0x0800, CRC(ef2eb645) SHA1(b1a2c969e8897e335d5354de6ae04a65d4b2a1e4) )
+ ROM_RELOAD( 0x43000, 0x0800 )
+ ROM_RELOAD( 0x4b000, 0x0800 )
+ ROM_RELOAD( 0x13000, 0x0800 )
+ ROM_LOAD( "tube-118.k1", 0x33800, 0x0800, CRC(cefb03f0) SHA1(41ddfa4991fa49a31d4740a04551556acca66196) )
+ ROM_LOAD( "136002-119.lm1", 0x34000, 0x0800, CRC(a4de050f) SHA1(ea302e43a313a5a18115e74ddbaaedde0fbecda7) )
+ ROM_RELOAD( 0x3c000, 0x0800 )
+ ROM_RELOAD( 0x44000, 0x0800 )
+ ROM_RELOAD( 0x4c000, 0x0800 )
+ ROM_RELOAD( 0x14000, 0x0800 )
+ ROM_LOAD( "136002-120.mn1", 0x34800, 0x0800, CRC(35619648) SHA1(48f1e8bed7ec6afa0b4c549a30e5ec331c071e40) )
+ ROM_RELOAD( 0x3c800, 0x0800 )
+ ROM_RELOAD( 0x44800, 0x0800 )
+ ROM_RELOAD( 0x4c800, 0x0800 )
+ ROM_RELOAD( 0x14800, 0x0800 )
+ ROM_LOAD( "136002-121.p1", 0x35000, 0x0800, CRC(73d38e47) SHA1(9980606376a79ba94f8e2a325871a6c8d10d83fc) )
+ ROM_RELOAD( 0x3d000, 0x0800 )
+ ROM_RELOAD( 0x45000, 0x0800 )
+ ROM_RELOAD( 0x4d000, 0x0800 )
+ ROM_RELOAD( 0x15000, 0x0800 )
+ ROM_LOAD( "136002-222.r1", 0x35800, 0x0800, CRC(707bd5c3) SHA1(2f0af6fb7154c244c794f7247e5c16a1e06ddf7d) )
+ ROM_RELOAD( 0x37800, 0x0800 )
+ ROM_RELOAD( 0x45800, 0x0800 )
+ ROM_RELOAD( 0x47800, 0x0800 )
+ ROM_RELOAD( 0x4d800, 0x0800 )
+ ROM_RELOAD( 0x4f800, 0x0800 )
+ ROM_LOAD( "136002-116.h1", 0x3a800, 0x0800, CRC(7356896c) SHA1(a013ede292189a8f5a907de882ee1a573d784b3c) )
+ ROM_RELOAD( 0x42800, 0x0800 )
+ ROM_LOAD( "136002-117.j1", 0x3b000, 0x0800, CRC(55952119) SHA1(470d914fa52fce3786cb6330889876d3547dca65) )
+ ROM_LOAD( "136002-118.k1", 0x3b800, 0x0800, CRC(beb352ab) SHA1(f213166d3970e0bd0f29d8dea8d6afa6990cce38) )
+ ROM_RELOAD( 0x43800, 0x0800 )
+ ROM_RELOAD( 0x4b800, 0x0800 )
+ ROM_RELOAD( 0x13800, 0x0800 )
+ ROM_LOAD( "136002-122.r1", 0x3d800, 0x0800, CRC(796a9918) SHA1(c862a0d4ea330161e4c3cc8e5e9ad38893fffbd4) )
+ ROM_RELOAD( 0x3f800, 0x0800 )
+ /* Vector ROMs */
+ ROM_LOAD( "136002-123.np3", 0x16000, 0x0800, CRC(29f7e937) SHA1(686c8b9b8901262e743497cee7f2f7dd5cb3af7e) )
+ ROM_RELOAD( 0x26000, 0x0800 )
+ ROM_LOAD( "136002-124.r3", 0x16800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) )
+ ROM_RELOAD( 0x26800, 0x0800 )
+ ROM_LOAD( "aliens_n3.bin", 0x1e000, 0x0800, CRC(5c8fd38b) SHA1(bb0d6bd062eba53b5d64b3f444d5ce0a34728bf5) )
+ ROM_LOAD( "aliens_r3.bin", 0x1e800, 0x0800, CRC(6cabcd08) SHA1(e3950de50f3dfbc4d4d2f4fe26625d8ef94c0819) )
+ ROM_LOAD( "n3.bin", 0x2e000, 0x0800, CRC(29c6a1cb) SHA1(290702a1c0942a68e288b37963e51eba02177a3f) )
+ ROM_LOAD( "r3.bin", 0x2e800, 0x0800, CRC(7fbe5e21) SHA1(e5de6c3af82e64444b0ddcda559e9cb4fbf6c1da) )
+
+ /* AVG PROM */
+ ROM_REGION( 0x100, "user1", 0 )
+ ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
+
+ /* Mathbox PROMs */
+ ROM_REGION( 0x20, "user2", 0 )
+ ROM_LOAD( "136002.126", 0x0000, 0x0020, CRC(8b04f921) SHA1(317b3397482f13b2d1bc21f296d3b3f9a118787b) )
+
+ ROM_REGION32_BE( 0x400, "user3", 0 )
+ ROMX_LOAD( "136002.132", 0, 0x100, CRC(2af82e87) SHA1(3816835a9ccf99a76d246adf204989d9261bb065), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.131", 0, 0x100, CRC(b31f6e24) SHA1(ce5f8ca34d06a5cfa0076b47400e61e0130ffe74), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.130", 1, 0x100, CRC(8119b847) SHA1(c4fbaedd4ce1ad6a4128cbe902b297743edb606a), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.129", 1, 0x100, CRC(09f5a4d5) SHA1(d6f2ac07ca9ee385c08831098b0dcaf56808993b), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ ROMX_LOAD( "136002.128", 2, 0x100, CRC(823b61ae) SHA1(d99a839874b45f64e14dae92a036e47a53705d16), ROM_NIBBLE | ROM_SHIFT_NIBBLE_LO | ROM_SKIP(3))
+ ROMX_LOAD( "136002.127", 2, 0x100, CRC(276eadd5) SHA1(55718cd8ec4bcf75076d5ef0ee1ed2551e19d9ba), ROM_NIBBLE | ROM_SHIFT_NIBBLE_HI | ROM_SKIP(3))
+ROM_END
+
+
+GAME( 2000, temped, tempest, tempest, tempest, driver_device, 0, ROT270, "hack", "TempEd", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tempall, tempest, tempest, tempest, driver_device, 0, ROT270, "hack", "Tempest All Levels", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, temptwst, tempest, tempest, tempest, driver_device, 0, ROT270, "Twisty", "Tempest Twisted", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tmptwsta, tempest, tempest, tempest, driver_device, 0, ROT270, "Twisty", "Tempest Twisted (Alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tmptwst2, tempest, tempest, tempest, driver_device, 0, ROT270, "Twisty", "Tempest Twisty's Revenge", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tmptwst3, tempest, tempest, tempest, driver_device, 0, ROT270, "Twisty", "Tempest Psycho Twist", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tmptwst4, tempest, tempest, tempest, driver_device, 0, ROT270, "Twisty", "Tempest Twisted Maniac", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, tempestm, tempest, tempest, tempest, driver_device, 0, ROT270, "hack", "Tempest Mark's Hacks", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, tempmg, tempest, tempmg, tempest, tempmg_state, tempmg, ROT270, "Clay Cowgill", "Tempest Multigame", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, vbrakout, tempest, tempest, tempest, driver_device, 0, ROT270, "Clay Cowgill", "Vector Breakout [h]", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, temptlm, tempest, tempest, tempest, driver_device, 0, ROT270, "hack", "Tempest Level Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, tvortex, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Vortex", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, tvortexa, tempest, tempest, tempest, driver_device, 0, ROT270, "Atari", "Vortex alt version", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, aliensv, tempest, tempest, aliensv, driver_device, 0, ROT270, "Atari", "Aliens", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, aliensva, tempest, tempest, aliensv, driver_device, 0, ORIENTATION_FLIP_Y ^ ROT270, "Atari", "Aliens alt version", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/terracre.cpp b/docs/release/src/hbmame/drivers/terracre.cpp
new file mode 100644
index 00000000000..e8a9fc798a4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/terracre.cpp
@@ -0,0 +1,50 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/terracre.cpp"
+
+ROM_START( terracrc )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "terracrc.8", 0x00000, 0x4000, CRC(44e29950) SHA1(0446c803771e624a812b5b7bd422505a58fa2f9d) )
+ ROM_LOAD16_BYTE( "terracrc.12", 0x00001, 0x4000, CRC(5d2d4fef) SHA1(b31c2c496013163a5504343f06b4f9cc9834f78a) )
+ ROM_LOAD16_BYTE( "terracrc.7", 0x08000, 0x4000, CRC(907968e6) SHA1(8b8a17b87a08e2a5e4223d9bdbc4a7df0726a589) )
+ ROM_LOAD16_BYTE( "terracrc.11", 0x08001, 0x4000, CRC(f5dcd168) SHA1(d58c76d1f199e664caae6a89b39d8dddb758d593) )
+ ROM_LOAD16_BYTE( "terracrc.6", 0x10000, 0x4000, CRC(b2cb4442) SHA1(a7a3a2d2a509bfcc905c7bfda516147626e09782) )
+ ROM_LOAD16_BYTE( "terracrc.10", 0x10001, 0x4000, CRC(66db3b3b) SHA1(637b6dec3e03bd80ba4efdb08e9604bf3deea49b) )
+ ROM_LOAD16_BYTE( "terracrc.5", 0x18000, 0x4000, CRC(a1bea44f) SHA1(cda2f0f7feac9060f86392704907b86cb5857b47) )
+ ROM_LOAD16_BYTE( "1a_9b.rom", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) )
+ ROM_FILL(0x1c16,1,1)
+ ROM_FILL(0x1c17,1,0x1c) // bypass rom checksum - one of the roms might be bad
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "bk2_11.15b", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) )
+ ROM_LOAD( "terracrc.19", 0x4000, 0x4000, CRC(20fd3b53) SHA1(baf494f64a66fc4ae9d2fef12ae7c6f61ad82d94) )
+ ROM_LOAD( "bk2_13.18b", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) )
+
+ ROM_REGION( 0x02000, "gfx1", 0 )
+ ROM_LOAD( "bk2_14.16g", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "terracrc.4", 0x0000, 0x4000, CRC(3597f737) SHA1(443ad8b868a20a28a739df2f677803cb94012919) )
+ ROM_LOAD( "terracrc.2", 0x4000, 0x4000, CRC(26474fd6) SHA1(7e8b725d5a29cc328925eea1ccdc2edaa2e7a927) )
+ ROM_LOAD( "terracrc.3", 0x8000, 0x4000, CRC(f5f66a67) SHA1(d7761634fd0ea725e4fdaff698171285f9042f0f) )
+ ROM_LOAD( "terracrc.1", 0xc000, 0x4000, CRC(55f80572) SHA1(a32749f8539a2a908532365f7f5650c92fc19f42) )
+
+ ROM_REGION( 0x10000, "gfx3", 0 )
+ ROM_LOAD( "bk2_7.6e", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) )
+ ROM_LOAD( "bk2_8.7e", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) )
+ ROM_LOAD( "bk2_9.6g", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) )
+ ROM_LOAD( "bk2_10.7g", 0x0c000, 0x4000, CRC(450749fc) SHA1(376ab98ab8db56ed45f7d97a221dfd52e389cb5a) )
+
+ ROM_REGION( 0x0504, "proms", 0 ) /* first 4 not supplied - using from terracre */
+ ROM_LOAD( "bk1_3.10f", 0x0000, 0x0100, CRC(ce07c544) SHA1(c3691cb420c88f1887a55e3035b5d017decbc17a) )
+ ROM_LOAD( "bk1_2.11f", 0x0100, 0x0100, CRC(566d323a) SHA1(fe83585a0d9c7f942a5e54620b627a5a17a0fcf4) )
+ ROM_LOAD( "bk1_1.12f", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) )
+ ROM_LOAD( "bk2_4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) )
+ /* This came with dump - no idea what it does - not hooked up */
+ ROM_LOAD_OPTIONAL( "pal16r4.bin", 0x0400, 0x0104, CRC(119ef878) SHA1(4cc68200c755d646789f6af1c7a52273f07f597c) )
+
+ ROM_REGION( 0x0100, "user1", 0 ) /* not supplied - using from terracre */
+ ROM_LOAD( "bk2_5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) )
+ROM_END
+
+GAME( 1985, terracrc, terracre, ym3526, terracre, driver_device, 0, ROT270, "Nichibutsu", "Terra Cresta (alt)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/timelimit.cpp b/docs/release/src/hbmame/drivers/timelimit.cpp
new file mode 100644
index 00000000000..3e968b53c8b
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/timelimit.cpp
@@ -0,0 +1,107 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/timelimt.cpp"
+
+/* Changes to MAME's timelimt:
+- Added a handcrafted clr.57 from Dink
+- Added an alternate clr.48 from my collection
+- Run the game at half speed, unplayable otherwise
+*/
+
+class timelimt_hbmame : public timelimt_state
+{
+public:
+ timelimt_hbmame(const machine_config &mconfig, device_type type, const char *tag)
+ : timelimt_state(mconfig, type, tag)
+ , m_irq_state(false)
+ { }
+
+ INTERRUPT_GEN_MEMBER(hb_irq);
+private:
+ bool m_irq_state;
+};
+
+INTERRUPT_GEN_MEMBER(timelimt_hbmame::hb_irq)
+{
+ if ( m_nmi_enabled )
+ {
+ m_irq_state = (m_irq_state) ? false : true;
+ if (m_irq_state)
+ device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ }
+}
+
+static MACHINE_CONFIG_START( timelimit, timelimt_hbmame )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, 5000000) /* 5.000 MHz */
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_IO_MAP(main_io_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", timelimt_hbmame, hb_irq)
+
+ MCFG_CPU_ADD("audiocpu", Z80,18432000/6) /* 3.072 MHz */
+ MCFG_CPU_PROGRAM_MAP(sound_map)
+ MCFG_CPU_IO_MAP(sound_io_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", timelimt_state, irq0_line_hold) /* ? */
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(3000))
+
+ MCFG_WATCHDOG_ADD("watchdog")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(timelimt_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", timelimt)
+ MCFG_PALETTE_ADD("palette", 64+32)
+ MCFG_PALETTE_INIT_OWNER(timelimt_state, timelimt)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+
+ MCFG_SOUND_ADD("ay1", AY8910, 18432000/12)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("ay2", AY8910, 18432000/12)
+ MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+ROM_START( timelimit )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "t8", 0x0000, 0x2000, CRC(006767ca) SHA1(a5d528c58cd73c0101ffa9ab783ec870668256db) )
+ ROM_LOAD( "t7", 0x2000, 0x2000, CRC(cbe7cd86) SHA1(502a78c14c9717a466ea24cdc63da4c0f3bec1f9) )
+ ROM_LOAD( "t6", 0x4000, 0x2000, CRC(f5f17e39) SHA1(7d78f551ce73276725c349703a790f2a63bb5503) )
+ ROM_LOAD( "t9", 0x6000, 0x2000, CRC(2d72ab45) SHA1(01d4afacc01b9e7c49355123efd5f5ad4d79a9cd) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "tl5", 0x0000, 0x1000, CRC(5b782e4a) SHA1(2f4fe2beb8efa5a636fefc1ee172d0200d1c9497) )
+ ROM_LOAD( "tl4", 0x1000, 0x1000, CRC(a32883a9) SHA1(26e1725b67be87db28855672facb1504b8ac84d6) )
+
+ ROM_REGION( 0x2000, "tiles_1", 0 )
+ ROM_LOAD( "tl11", 0x0000, 0x1000, CRC(46676307) SHA1(38fe80722972b6b3ba32705469a0dcb868fb76a9) )
+ ROM_LOAD( "tl10", 0x1000, 0x1000, CRC(2336908a) SHA1(345fc209ce891cc6f8f111c6d3a9e0f65ee6d818) )
+
+ ROM_REGION( 0x2000, "tiles_2", 0 )
+ ROM_LOAD( "tl13", 0x0000, 0x1000, CRC(072e4053) SHA1(209edf7b371078e38d1c2812fa6a3d1a78193b3f) )
+ ROM_LOAD( "tl12", 0x1000, 0x1000, CRC(ce960389) SHA1(57ee52cfa1b5a3832b362b38c8b7aa411dfc782b) )
+
+ ROM_REGION( 0x6000, "sprites", 0 )
+ ROM_LOAD( "tl3", 0x0000, 0x2000, CRC(01a9fd95) SHA1(cd1078700c97a3539c9d9447c55efbd27540a1b3) )
+ ROM_LOAD( "tl2", 0x2000, 0x2000, CRC(4693b849) SHA1(fbebedde53599fb1eaedc648bd704b321ab096b5) )
+ ROM_LOAD( "tl1", 0x4000, 0x2000, CRC(c4007caf) SHA1(ae05af3319545d5ca98a046bfc100138a5a3ed96) )
+
+ ROM_REGION( 0x0060, "proms", 0 )
+ ROM_LOAD( "clr.35", 0x0000, 0x0020, CRC(9c9e6073) SHA1(98496175bf19a8cdb0018705bc1a2193b8a782e1) )
+ ROM_LOAD( "clr.48", 0x0020, 0x0020, CRC(813e17c7) SHA1(25a65d8a841538748348368ebcfce101976406a9) )
+ ROM_LOAD( "clr.57", 0x0040, 0x0020, CRC(aaa6f23e) SHA1(9fcb6af82f725517e8eff86d748701f836a05eba) )
+ROM_END
+
+GAME( 2017, timelimit, timelimt, timelimit, timelimt, driver_device, 0, ROT90, "Dink", "Time Limit (colour hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/tmnt.cpp b/docs/release/src/hbmame/drivers/tmnt.cpp
new file mode 100644
index 00000000000..e493268c28f
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/tmnt.cpp
@@ -0,0 +1,33 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/tmnt.cpp"
+
+ROM_START( ssridersaex )
+ ROM_REGION( 0xc0000, "maincpu", 0 ) /* 2*256k and 2*128k for 68000 code */
+ ROM_LOAD16_BYTE( "064eac02.8e-ex", 0x000000, 0x40000, CRC(536d4a79) SHA1(dec7f827e3a1300ee32e6134b8141ae99a89b50a) )
+ ROM_LOAD16_BYTE( "064eac03.8g-ex", 0x000001, 0x40000, CRC(8ea4c0e8) SHA1(c971df7fdaa801c6351a5df401a7528f000bee06) )
+ ROM_LOAD16_BYTE( "064eab04.10e", 0x080000, 0x20000, CRC(ef2315bd) SHA1(2c8b11321cb5fdb78d760fabca666c0d8cc5b298) )
+ ROM_LOAD16_BYTE( "064eab05.10g", 0x080001, 0x20000, CRC(51d6fbc4) SHA1(e80de7d155b7f263c48ef4ae2702059be3c18e76) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "064e01.2f", 0x0000, 0x10000, CRC(44b9bc52) SHA1(4654d6e14c6956c40a19cb41155accb63f0da338) )
+
+ ROM_REGION( 0x100000, "k052109", 0 ) /* tiles */
+ ROM_LOAD32_WORD( "064e12.16k", 0x000000, 0x080000, CRC(e2bdc619) SHA1(04449deb267b0beacfa33640b593eb16194aa0d9) )
+ ROM_LOAD32_WORD( "064e11.12k", 0x000002, 0x080000, CRC(2d8ca8b0) SHA1(7c882f79c2402cf75979c681071007d76e4db9ae) )
+
+ ROM_REGION( 0x200000, "k053245", 0 ) /* graphics (addressable by the main CPU) */
+ ROM_LOAD32_WORD( "064e09.7l", 0x000000, 0x100000, CRC(4160c372) SHA1(0b36181e5ccd785c7fb89b9f41e458066a42c3b0) ) /* sprites */
+ ROM_LOAD32_WORD( "064e07.3l", 0x000002, 0x100000, CRC(64dd673c) SHA1(bea4d17a71dd21c635866ee69b4892dc9d0ab455) )
+
+ ROM_REGION( 0x100000, "k053260", 0 ) /* samples for the 053260 */
+ ROM_LOAD( "064e06.1d", 0x0000, 0x100000, CRC(59810df9) SHA1(a0affc6330bdbfab1447dc0cf13c20ff708c2c71) )
+
+ ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
+ ROM_LOAD( "ssriders_abd.nv", 0x0000, 0x080, CRC(bfdafedf) SHA1(bc786d4fb3495a6baf2ae13c19392c6740a2be6d) )
+ //ROM_LOAD( "ssriders_eac.nv", 0x0000, 0x080, CRC(f6d641a7) SHA1(6c680d49e1b07a47b29ff263a6009d226bd120cf) )
+ROM_END
+
+
+// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
+GAME( 2009, ssridersaex, ssriders, ssriders, ssriders, driver_device, 0, ROT0, "Pipi899","Sunset Riders (2 Players ver ABD EX Super Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/toaplan2.cpp b/docs/release/src/hbmame/drivers/toaplan2.cpp
new file mode 100644
index 00000000000..fbe8d29dafb
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/toaplan2.cpp
@@ -0,0 +1,91 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/toaplan2.cpp"
+
+ROM_START( batsugunt )
+ ROM_REGION( 0x080000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "tp030_01t.bin", 0x000000, 0x080000, CRC(63d28fd3) SHA1(aa3e111d596f408b735e4f79ab654eea24bd6f0c) )
+
+ ROM_REGION( 0x400000, "gp9001", 0 )
+ ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
+ ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
+ ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
+ ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
+
+ ROM_REGION( 0x200000, "gp9001_1", 0 )
+ ROM_LOAD( "tp030_5.bin", 0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
+ ROM_LOAD( "tp030_6.bin", 0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
+ROM_END
+
+ROM_START( bgareggz )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "prg0z.bin", 0x000000, 0x080000, CRC(6f4af466) SHA1(fb77f3b86c0b25941ae0efe70ca779d06f66f02b) )
+ ROM_LOAD16_BYTE( "prg1z.bin", 0x000001, 0x080000, CRC(b4dc9a48) SHA1(9310a8c1de2a64e5597206a9974f25351d7825c2) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
+
+ ROM_REGION( 0x800000, "gp9001", 0 )
+ ROM_LOAD( "rom4.bin", 0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
+ ROM_LOAD( "rom3.bin", 0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
+ ROM_LOAD( "rom2.bin", 0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
+ ROM_LOAD( "rom1.bin", 0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
+
+ ROM_REGION( 0x010000, "text", 0 )
+ ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
+
+ ROM_REGION( 0x140000, "oki", 0 )
+ ROM_LOAD( "rom5.bin", 0x040000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
+ROM_END
+
+
+/* This game can be obtained from the Raine site, use a hex editor to zero out the last 4 bytes,
+ and rename the result to "kgpe.05". Thanks goes to the Raine devs for the idea and the rom,
+ and Tourniquet for the byte modification. Without this mod, the rom has the same crc as "ma02rom5.eng"
+ from "kingdmgp", which caused all sorts of confusion and problems. */
+ROM_START( kgpe ) // same as kingdmgp and shippumd, except for rom 05
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "ma02rom1.bin", 0x000000, 0x080000, CRC(a678b149) SHA1(8c1a631e023dbba0a3fa6cd1b7d10dec1663213a) )
+ ROM_LOAD16_BYTE( "ma02rom0.bin", 0x000001, 0x080000, CRC(f226a212) SHA1(526acf3d05fdc88054a772fbea3de2af532bf3d2) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ma02rom2.bin", 0x00000, 0x10000, CRC(dde8a57e) SHA1(f522a3f17e229c71512464349760a9e27778bf6a) )
+
+ ROM_REGION( 0x400000, "gp9001", 0 )
+ ROM_LOAD( "ma02rom3.bin", 0x000000, 0x200000, CRC(0e797142) SHA1(a480ccd151e49b886d3175a6deff56e1f2c26c3e) )
+ ROM_LOAD( "ma02rom4.bin", 0x200000, 0x200000, CRC(72a6fa53) SHA1(ce92e65205b84361cfb90305a61e9541b5c4dc2f) )
+
+ ROM_REGION( 0x008000, "text", 0 )
+ ROM_LOAD( "kgpe.05", 0x000000, 0x008000, CRC(a0707702) SHA1(b6105291c1ae3d0792e69fd2495c31b56fbf61b7) )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "ma02rom6.bin", 0x00000, 0x80000, CRC(199e7cae) SHA1(0f5e13cc8ec42c80bb4bbff90aba29cdb15213d4) )
+ROM_END
+
+ROM_START( mahoudcn )
+ ROM_REGION( 0x080000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ra_ma_01_01.u65", 0x000000, 0x080000, CRC(970ccc5c) SHA1(c87cab83bde0284e631f02e50068407fee81d941) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ra-ma-01_02.u66", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
+
+ ROM_REGION( 0x200000, "gp9001", 0 )
+ ROM_LOAD( "ra_ma_01_cn.03", 0x000000, 0x100000, CRC(7441e469) SHA1(ba1b127b6878ec45054c7220510a1ec0a8c06a0a) )
+ ROM_LOAD( "ra_ma_01_cn.04", 0x100000, 0x100000, CRC(eb9f8159) SHA1(db8e10b847b0fbb34136c1a320ca0a160ac2646e) )
+
+ ROM_REGION( 0x008000, "text", 0 )
+ ROM_LOAD( "ra_ma_01_05.u81", 0x000000, 0x008000, CRC(c00d1e80) SHA1(53e64c4c0c6309130b37597d13b44a9e95b717d8) )
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "ra-ma01-rom1.u57", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
+ROM_END
+
+
+
+GAME( 1993, batsugunt, batsugun, batsugun, batsugun, toaplan2_state, dogyuun, ROT270, "Eezezy", "Batsugun Transparent (HACK BY EEZEZY(LB70))", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, bgareggz, bgaregga, bgaregga, bgaregga, toaplan2_state, bgaregga,ROT270, "Zack", "Battle Garegga (Europe / USA / Japan / Asia) (Zakk version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, kgpe, kingdmgp, shippumd, kingdmgp, driver_device, 0, ROT270, "Neil Corlett", "Kingdom Grand Prix" , MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mahoudcn, sstriker, mahoudai, mahoudai, driver_device, 0, ROT270, "Raizing (Able license)", "Mahou Daisakusen (Chinese)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/trackfld.cpp b/docs/release/src/hbmame/drivers/trackfld.cpp
new file mode 100644
index 00000000000..885d23adcf4
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/trackfld.cpp
@@ -0,0 +1,75 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/trackfld.cpp"
+
+ROM_START( athens04 ) // same as trackfld except where indicated
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "a01_e01.bin", 0x6000, 0x2000, CRC(2882f6d4) SHA1(f7ddae2c5412a2849efd7f9629e92a5b0328e7cb) )
+ ROM_LOAD( "a02_e02.bin", 0x8000, 0x2000, CRC(1743b5ee) SHA1(31301031a525f893c31461f634350f01a9492ef4) )
+ ROM_LOAD( "athens04.k03", 0xa000, 0x2000, CRC(2dd0e765) SHA1(4f832db55d9614ea733eaf53bf8a35d673bf5cba) )
+ ROM_LOAD( "a04_e04.bin", 0xc000, 0x2000, CRC(21d6c448) SHA1(6c42cc76302485954a31520bdd08469fa948c72f) )
+ ROM_LOAD( "a05_e05.bin", 0xe000, 0x2000, CRC(f08c7b7e) SHA1(50e65d9b0ea37d2afb2dfdf1f3e1378e3290bc81) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "c2_d13.bin", 0x0000, 0x2000, CRC(95bf79b6) SHA1(ea9135acd7ad162c19c5cdde356e69792d61b675) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "c11_d06.bin", 0x0000, 0x2000, CRC(82e2185a) SHA1(1da9ea20e7af0b49c62fb39834a7ec686491af04) )
+ ROM_LOAD( "c12_d07.bin", 0x2000, 0x2000, CRC(800ff1f1) SHA1(33d73b18903e3e6bfb30f1a06db4b8105d4040d8) )
+ ROM_LOAD( "c13_d08.bin", 0x4000, 0x2000, CRC(d9faf183) SHA1(4448b6242790783d37acf50704d597af5878c2ab) )
+ ROM_LOAD( "c14_d09.bin", 0x6000, 0x2000, CRC(5886c802) SHA1(884a12a8f63600da4f23b29be6dbaacef37add20) )
+
+ ROM_REGION( 0x6000, "gfx2", 0 )
+ ROM_LOAD( "athens04.e12", 0x0000, 0x2000, CRC(29908ce9) SHA1(6f80f4962059f3422282f3e30c55c73407d9cf4c) )
+ ROM_LOAD( "athens04.e11", 0x2000, 0x2000, CRC(7a534ca1) SHA1(0bcf582662e93f96a2ebe6bd52ee8f8e8f36c24c) )
+ ROM_LOAD( "h14_e10.bin", 0x4000, 0x2000, CRC(c2166a5c) SHA1(5ba25900e653ce4edcf35f1fbce758a327a715ce) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "361b16.f1", 0x0000, 0x0020, CRC(d55f30b5) SHA1(4d6a851f4886778307f75771645078b97ad55f5f) )
+ ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) )
+ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) )
+
+ ROM_REGION( 0x2000, "vlm", 0 )
+ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) )
+ROM_END
+
+/* ATHENS 2004
+
+HACK by The Gameland Crew (http://www.gameland.gr)
+Maddog, Whacker, Badge, Geoanas */
+
+GAME( 2004, athens04, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Gameland.gr", "Athens 2004", MACHINE_SUPPORTS_SAVE )
+
+ROM_START( tst_trkfld )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "testrom13beta", 0x6000, 0x2000, CRC(81f91de1) SHA1(66d1bfec31167c1acda7b1ff0b534730ff58ff3e) )
+ ROM_LOAD( "a02_e02.bin", 0x8000, 0x2000, CRC(1743b5ee) SHA1(31301031a525f893c31461f634350f01a9492ef4) )
+ ROM_LOAD( "a03_k03.bin", 0xa000, 0x2000, CRC(6c0d1ee9) SHA1(380ab2162153a61910a6fe5b6d091ca9451ad4fd) )
+ ROM_LOAD( "a04_e04.bin", 0xc000, 0x2000, CRC(21d6c448) SHA1(6c42cc76302485954a31520bdd08469fa948c72f) )
+ ROM_LOAD( "a05_e05.bin", 0xe000, 0x2000, CRC(f08c7b7e) SHA1(50e65d9b0ea37d2afb2dfdf1f3e1378e3290bc81) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "c2_d13.bin", 0x0000, 0x2000, CRC(95bf79b6) SHA1(ea9135acd7ad162c19c5cdde356e69792d61b675) )
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "c11_d06.bin", 0x0000, 0x2000, CRC(82e2185a) SHA1(1da9ea20e7af0b49c62fb39834a7ec686491af04) )
+ ROM_LOAD( "c12_d07.bin", 0x2000, 0x2000, CRC(800ff1f1) SHA1(33d73b18903e3e6bfb30f1a06db4b8105d4040d8) )
+ ROM_LOAD( "c13_d08.bin", 0x4000, 0x2000, CRC(d9faf183) SHA1(4448b6242790783d37acf50704d597af5878c2ab) )
+ ROM_LOAD( "c14_d09.bin", 0x6000, 0x2000, CRC(5886c802) SHA1(884a12a8f63600da4f23b29be6dbaacef37add20) )
+
+ ROM_REGION( 0x6000, "gfx2", 0 )
+ ROM_LOAD( "h16_e12.bin", 0x0000, 0x2000, CRC(50075768) SHA1(dfff92c0f59dd3d8d3d6256944bfd48792cef6a9) )
+ ROM_LOAD( "h15_e11.bin", 0x2000, 0x2000, CRC(dda9e29f) SHA1(0f41cde82bb60c3f1591ee14dc3cff4642bbddc1) )
+ ROM_LOAD( "h14_e10.bin", 0x4000, 0x2000, CRC(c2166a5c) SHA1(5ba25900e653ce4edcf35f1fbce758a327a715ce) )
+
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "361b16.f1", 0x0000, 0x0020, CRC(d55f30b5) SHA1(4d6a851f4886778307f75771645078b97ad55f5f) )
+ ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) )
+ ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) )
+
+ ROM_REGION( 0x2000, "vlm", 0 )
+ ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) )
+ROM_END
+
+// http://www.jammarcade.net/track-field-test-rom-beta/
+GAME( 2015, tst_trkfld, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Shoestring", "Test Rom - Track and Field", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/twincobr.cpp b/docs/release/src/hbmame/drivers/twincobr.cpp
new file mode 100644
index 00000000000..105031d7f30
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/twincobr.cpp
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/twincobr.cpp"
+
+ROM_START( twincbu2 )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b30_01.7j", 0x00000, 0x10000, CRC(07f64d13) SHA1(864ce0f9369c40c3ae792fc4ab2444a168214749) )
+ ROM_LOAD16_BYTE( "b30_03.7h", 0x00001, 0x10000, CRC(41be6978) SHA1(4784804b738a332c7f24a43bcbb7a1e607365735) )
+ ROM_LOAD16_BYTE( "tcbra26.bin", 0x20000, 0x08000, CRC(bdd00ba4) SHA1(b76b22f03eb4b821a8c555edd9fcee814f2e66a7) )
+ ROM_LOAD16_BYTE( "tcbra27.bin", 0x20001, 0x08000, CRC(ed600907) SHA1(e5964db9eab2c334940795d71cb90f6679490227) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "b30-05", 0x00000, 0x08000, CRC(1a8f1e10) SHA1(0c37a7a50b2523506ad77ac03ae752eb94092ff6) )
+
+ ROM_REGION( 0x2000, "dsp", 0 )
+ ROM_LOAD16_BYTE( "dsp_22.bin", 0x0001, 0x0800, CRC(79389a71) SHA1(14ec4c1c9b06702319e89a7a250d0038393437f4) )
+ ROM_LOAD16_BYTE( "dsp_21.bin", 0x0000, 0x0800, CRC(2d135376) SHA1(67a2cc774d272ee1cd6e6bc1c5fc33fc6968837e) )
+
+ ROM_REGION( 0x0c000, "gfx1", 0 )
+ ROM_LOAD( "b30_08.8c", 0x00000, 0x04000, CRC(0a254133) SHA1(17e9cc5e36fb4696012d0f9229fa172034cd843a) )
+ ROM_LOAD( "b30_07.128", 0x04000, 0x04000, CRC(3160894d) SHA1(234951e2aa4002e23781f8ed3be64b71b0400e9f) )
+ ROM_LOAD( "b30_06.8b", 0x08000, 0x04000, CRC(a599d845) SHA1(732001f2d378d890f148e6b616c287d71fae832a) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "b30_15.512", 0x00000, 0x10000, CRC(88795b18) SHA1(73bd28ef12576cf54630304c3c0f8a08141a321f) )
+ ROM_LOAD( "b30_16.512", 0x10000, 0x10000, CRC(e6f421d2) SHA1(82da99d017780d0e52988dc8ebfcd16b54d34b6b) )
+ ROM_LOAD( "b30_13.18c", 0x20000, 0x10000, CRC(13daeac8) SHA1(1cb103f434e2ecf193fa936ca7ea9194064c5b39) )
+ ROM_LOAD( "b30_14.20c", 0x30000, 0x10000, CRC(8cc79357) SHA1(31064df2b796ca85ad3caccf626b684dff1104a1) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 )
+ ROM_LOAD( "b30_12.16c", 0x00000, 0x08000, CRC(b5d48389) SHA1(a00c5b9c231d3d580fa20c7ad3f8b6fd990e6594) )
+ ROM_LOAD( "b30_11.14c", 0x08000, 0x08000, CRC(97f20fdc) SHA1(7cb3cd0637b0db889a3d552fd7c1a916eee5ca27) )
+ ROM_LOAD( "b30_10.12c", 0x10000, 0x08000, CRC(170c01db) SHA1(f4c5a1600f6cbb48abbace66c6f7514f79138e8b) )
+ ROM_LOAD( "b30_09.10c", 0x18000, 0x08000, CRC(44f5accd) SHA1(2f9bdebe71c8be195332356df68992fd38d86994) )
+
+ ROM_REGION( 0x40000, "scu", 0 )
+ ROM_LOAD( "b30_20.12d", 0x00000, 0x10000, CRC(cb4092b8) SHA1(35b1d1e04af760fa106124bd5a94174d63ff9705) )
+ ROM_LOAD( "b30_19.512", 0x10000, 0x10000, CRC(4043ad5a) SHA1(bf14829ec800dab9ac6e385bddcab303301df530) )
+ ROM_LOAD( "b30_18.512", 0x20000, 0x10000, CRC(cdc16155) SHA1(9f41695409dbf72c2a66911aaa94b8fe5f6acc01) )
+ ROM_LOAD( "b30_17.16d", 0x30000, 0x10000, CRC(4264bff8) SHA1(3271b8b23f51346d1928ae01f8b547fed49181e6) )
+
+ ROM_REGION( 0x260, "proms", 0 )
+ ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) )
+ ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) )
+ ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) )
+ ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) )
+ ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) )
+ROM_END
+
+ROM_START( twintwst )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b30_01.7j", 0x00000, 0x10000, CRC(07f64d13) SHA1(864ce0f9369c40c3ae792fc4ab2444a168214749) )
+ ROM_LOAD16_BYTE( "b30_03.7h", 0x00001, 0x10000, CRC(41be6978) SHA1(4784804b738a332c7f24a43bcbb7a1e607365735) )
+ ROM_LOAD16_BYTE( "b30_26_ii.8j", 0x20000, 0x08000, CRC(3a646618) SHA1(fc1ed8f3c491f5cf16a17e5ce08c5d8f3ce03683) )
+ ROM_LOAD16_BYTE( "b30_27_ii.8h", 0x20001, 0x08000, CRC(d7d1e317) SHA1(57b8433b1677a390a7c7e00a1464bb8ed9cbfc73) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "b30_05_ii.4f", 0x00000, 0x08000, CRC(e37b3c44) SHA1(5fed10b29c14e27aee0cd92ecde5c5cb422273b1) )
+
+ ROM_REGION( 0x2000, "dsp", 0 )
+ ROM_LOAD16_BYTE( "dsp_22.bin", 0x0001, 0x0800, CRC(79389a71) SHA1(14ec4c1c9b06702319e89a7a250d0038393437f4) )
+ ROM_LOAD16_BYTE( "dsp_21.bin", 0x0000, 0x0800, CRC(2d135376) SHA1(67a2cc774d272ee1cd6e6bc1c5fc33fc6968837e) )
+
+ ROM_REGION( 0x0c000, "gfx1", 0 )
+ ROM_LOAD( "b30_08.8c", 0x00000, 0x04000, CRC(0a254133) SHA1(17e9cc5e36fb4696012d0f9229fa172034cd843a) )
+ ROM_LOAD( "b30_07.10b", 0x04000, 0x04000, CRC(e9e2d4b1) SHA1(e0a19dd46a9ba85d95bba7fbf81d8dc36dbfeabd) )
+ ROM_LOAD( "b30_06.8b", 0x08000, 0x04000, CRC(a599d845) SHA1(732001f2d378d890f148e6b616c287d71fae832a) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "b30_16.20b", 0x00000, 0x10000, CRC(15b3991d) SHA1(f5e7ed7a7721ed7e6dfd440634160390b7a294e4) )
+ ROM_LOAD( "b30_15.18b", 0x10000, 0x10000, CRC(d9e2e55d) SHA1(0409e6df836d1d5198b64b21b42192631aa6d096) )
+ ROM_LOAD( "b30_13.18c", 0x20000, 0x10000, CRC(13daeac8) SHA1(1cb103f434e2ecf193fa936ca7ea9194064c5b39) )
+ ROM_LOAD( "b30_14.20c", 0x30000, 0x10000, CRC(8cc79357) SHA1(31064df2b796ca85ad3caccf626b684dff1104a1) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 )
+ ROM_LOAD( "b30_12.16c", 0x00000, 0x08000, CRC(b5d48389) SHA1(a00c5b9c231d3d580fa20c7ad3f8b6fd990e6594) )
+ ROM_LOAD( "b30_11.14c", 0x08000, 0x08000, CRC(97f20fdc) SHA1(7cb3cd0637b0db889a3d552fd7c1a916eee5ca27) )
+ ROM_LOAD( "b30_10.12c", 0x10000, 0x08000, CRC(170c01db) SHA1(f4c5a1600f6cbb48abbace66c6f7514f79138e8b) )
+ ROM_LOAD( "b30_09.10c", 0x18000, 0x08000, CRC(44f5accd) SHA1(2f9bdebe71c8be195332356df68992fd38d86994) )
+
+ ROM_REGION( 0x40000, "scu", 0 )
+ ROM_LOAD( "tcw20", 0x00000, 0x10000, CRC(41c8f4ea) SHA1(9da6911b89b5cf49b64a8bcb12ab191cc98316f2) )
+ ROM_LOAD( "tcw19", 0x10000, 0x10000, CRC(8d5db99e) SHA1(33a1a51396fd289ee23ea1c645bc85bfed37848d) )
+ ROM_LOAD( "tcw18", 0x20000, 0x10000, CRC(eade1ca3) SHA1(af62d4b3a4072d6b0970a47ab6ef68987bac9c93) )
+ ROM_LOAD( "tcw17", 0x30000, 0x10000, CRC(6a559622) SHA1(8a07f792efea9d521a5fd0169a5d6c15fe615d5d) )
+
+ ROM_REGION( 0x260, "proms", 0 )
+ ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) )
+ ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) )
+ ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) )
+ ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) )
+ ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) )
+ROM_END
+
+GAME( 2002, twincbu2, twincobr, twincobr, twincobru, twincobr_state, twincobr, ROT270, "[Hack]", "Twin Cobra (Hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, twintwst, twincobr, twincobr, twincobr, twincobr_state, twincobr, ROT270, "[Hack]", "Twin Twist (Twin Cobra Hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/volfied.cpp b/docs/release/src/hbmame/drivers/volfied.cpp
new file mode 100644
index 00000000000..c4193b58b4c
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/volfied.cpp
@@ -0,0 +1,30 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/volfied.cpp"
+
+ROM_START( volfiedg ) // roms that don't end in g are same as volfied
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "c04-12-1.30g", 0x00000, 0x10000, CRC(f13c5621) SHA1(b50aaadb1a3128aa5ecbab2a1450c5e817f33620) )
+ ROM_LOAD16_BYTE( "c04-08-1.10g", 0x00001, 0x10000, CRC(b7e5472e) SHA1(68323e46ffee7cf8d2119405543353691673ac05) )
+ ROM_LOAD16_BYTE( "c04-11-1.29g", 0x20000, 0x10000, CRC(54730fe3) SHA1(796693cd2cfb539f6691aa4e359c47cfd7348734) )
+ ROM_LOAD16_BYTE( "c04-25-1.9g", 0x20001, 0x10000, CRC(cff7aee1) SHA1(1d9a3ddebafb8b8b4075de2946a250156f81fb54) )
+ ROM_LOAD16_BYTE( "c04-20.7g", 0x80000, 0x20000, CRC(7614c798) SHA1(7465f2eaeab73f047cc9f41f5a00173c34636513) )
+ ROM_LOAD16_BYTE( "c04-22.9g", 0x80001, 0x20000, CRC(aa6e8da8) SHA1(014eb2b5ba89e267a915ea647a71fdd8413099c7) )
+ ROM_LOAD16_BYTE( "c04-19.6", 0xc0000, 0x20000, CRC(231493ae) SHA1(2658e6556fd0e75ddd0f0b8628cfa5237c187a06) )
+ ROM_LOAD16_BYTE( "c04-21.8", 0xc0001, 0x20000, CRC(8598d38e) SHA1(4ec1b819586b50e2f6aff2aaa5e3b06704b9bec2) )
+
+ ROM_REGION( 0xc0000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "c04-16.2g", 0x00000, 0x20000, CRC(1c6963a9) SHA1(2dc4b6838c95497e019c03582a8f7ecb48fa97a8) )
+ ROM_LOAD16_BYTE( "c04-18.4g", 0x00001, 0x20000, CRC(67ea587f) SHA1(2b43ba53cc563d3462a4bec430427f92290f2b23) )
+ ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
+ ROM_LOAD16_BYTE( "c04-17.3", 0x40001, 0x20000, CRC(c62fdeb8) SHA1(a9f6ca8335071169d772e65a9f5315a22a310b25) )
+ ROM_LOAD16_BYTE( "c04-10.15", 0x80000, 0x10000, CRC(429b6b49) SHA1(dcb0c8bc9d67643d96b2ffdf5ccd747318704c37) )
+ ROM_RELOAD ( 0xa0000, 0x10000 )
+ ROM_LOAD16_BYTE( "c04-09.14", 0x80001, 0x10000, CRC(c78cf057) SHA1(097982e57b1d20fbdf21986c23684adefe6f1ce1) )
+ ROM_RELOAD ( 0xa0001, 0x10000 )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "c04-06.71", 0x0000, 0x8000, CRC(b70106b2) SHA1(d71062f9d9b11492e13fc93982b95883f564f902) )
+ROM_END
+
+GAME( 2005, volfiedg, volfied, volfied, volfied, driver_device, 0, ROT270, "GreekRoms", "Volfied (Greek)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/vsnes.cpp b/docs/release/src/hbmame/drivers/vsnes.cpp
new file mode 100644
index 00000000000..d9c343df629
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/vsnes.cpp
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/vsnes.cpp"
+
+ROM_START( mrio2002 )
+ ROM_REGION( 0x10000,"maincpu", 0 ) /* 6502 memory */
+ ROM_LOAD( "mds-sm4.1d", 0x8000, 0x2000, CRC(be4d5436) SHA1(08162a7c987f1939d09bebdb676f596c86abf465) )
+ ROM_LOAD( "mds-sm4.1c", 0xa000, 0x2000, CRC(0011fc5a) SHA1(5c2c49938a12affc03e64e5bdab307998be20020) )
+ ROM_LOAD( "mds-sm4.1b", 0xc000, 0x2000, CRC(b1b87893) SHA1(8563ceaca664cf4495ef1020c07179ca7e4af9f3) )
+ ROM_LOAD( "mds-sm4.1a", 0xe000, 0x2000, CRC(1abf053c) SHA1(f17db88ce0c9bf1ed88dc16b9650f11d10835cec) )
+
+ ROM_REGION( 0x4000,"gfx1", 0 ) /* PPU memory */
+ ROM_LOAD( "mrio2002.2b", 0x0000, 0x2000, CRC(1feda640) SHA1(f26be31f43dacdaa9d8bffa75f4fcd9d8d04953a) )
+ ROM_LOAD( "mds-sm4.2a", 0x2000, 0x2000, CRC(15506b86) SHA1(69ecf7a3cc8bf719c1581ec7c0d68798817d416f) )
+
+ PALETTE_2C04_0004
+ROM_END
+
+ROM_START( suprsktr )
+ ROM_REGION( 0x10000,"maincpu", 0 ) /* 6502 memory */
+ ROM_LOAD( "mds-sm4.1d", 0x8000, 0x2000, CRC(be4d5436) SHA1(08162a7c987f1939d09bebdb676f596c86abf465) )
+ ROM_LOAD( "mds-sm4.1c", 0xa000, 0x2000, CRC(0011fc5a) SHA1(5c2c49938a12affc03e64e5bdab307998be20020) )
+ ROM_LOAD( "mds-sm4.1b", 0xc000, 0x2000, CRC(b1b87893) SHA1(8563ceaca664cf4495ef1020c07179ca7e4af9f3) )
+ ROM_LOAD( "mds-sm4.1a", 0xe000, 0x2000, CRC(1abf053c) SHA1(f17db88ce0c9bf1ed88dc16b9650f11d10835cec) )
+
+ ROM_REGION( 0x4000,"gfx1", 0 ) /* PPU memory */
+ ROM_LOAD( "suprsktr.2b", 0x0000, 0x2000, CRC(f3980303) SHA1(b9a25c906d1861c89e2e40e878a34d318daf6619) )
+ ROM_LOAD( "mds-sm4.2a", 0x2000, 0x2000, CRC(15506b86) SHA1(69ecf7a3cc8bf719c1581ec7c0d68798817d416f) )
+
+ PALETTE_2C04_0004
+ROM_END
+
+GAME( 2002, mrio2002, suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Mario Bros. 2002", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, suprsktr, suprmrio, vsnes, suprmrio, vsnes_state, vsnormal, ROT0, "Nintendo", "Vs. Super Skater Bros.", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/williams.cpp b/docs/release/src/hbmame/drivers/williams.cpp
new file mode 100644
index 00000000000..e8384b577d8
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/williams.cpp
@@ -0,0 +1,130 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/williams.cpp"
+
+ROM_START( defender2 )
+ ROM_REGION( 0x19000, "maincpu", 0 )
+ ROM_LOAD( "10", 0x0d000, 0x1000, CRC(4d82fc2f) SHA1(b11dc3f3f2100ab14ad5b26cd333b212c454cc8d) )
+ ROM_LOAD( "11", 0x0e000, 0x1000, CRC(561fad3f) SHA1(597851e78423f30341f682f3fc62bf24cf9e8a91) )
+ ROM_LOAD( "12", 0x0f000, 0x1000, CRC(836eacca) SHA1(f788fc2a25adffa21e02a3dfe2074e8719405200) )
+ ROM_LOAD( "01", 0x10000, 0x1000, CRC(88824d18) SHA1(f003a5a9319c4eb8991fa2aae3f10c72d6b8e81a) )
+ ROM_LOAD( "02", 0x11000, 0x1000, CRC(afc614c5) SHA1(087c6da93318e8dc922d3d22e0a2af7b9759701c) )
+ ROM_LOAD( "03", 0x12000, 0x1000, CRC(6dd57970) SHA1(1fdee9180bfb835f35ac786116e0f8d7833f2c3f) )
+ ROM_LOAD( "04", 0x13000, 0x1000, CRC(a8b4bf0f) SHA1(6b4d47c2899fe9f14f9dab5928499f12078c437d) )
+ ROM_LOAD( "05", 0x14000, 0x1000, CRC(2d306074) SHA1(54f871983699113e31bb756d4ca885c26c2d66b4) )
+ ROM_LOAD( "06", 0x15000, 0x1000, CRC(53598dde) SHA1(54b02d944caf95283c9b6f0160e75ea8c4ccc97b) )
+ ROM_LOAD( "07", 0x16000, 0x1000, CRC(55b5b0d2) SHA1(dcf392a899fb6c225c4e31034e242e575c3dc94d) )
+ ROM_LOAD( "08", 0x17000, 0x1000, CRC(b4f22d4d) SHA1(2486e895628df9ae1268d9eb2434f240dba99f70) )
+ ROM_LOAD( "09", 0x18000, 0x1000, CRC(6df7463d) SHA1(b80c2872fc47b4b604967f176e3931cd992dd692) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "sg.snd", 0xf800, 0x0800, CRC(2fcf6c4d) SHA1(9c4334ac3ff15d94001b22fc367af40f9deb7d57) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "decoder.4", 0x0000, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
+ ROM_LOAD( "decoder.5", 0x0200, 0x0200, CRC(f921c5fe) SHA1(9cebb8bb935315101d248140d1b4503993ebdf8a) )
+ROM_END
+
+ROM_START( splatsc1 )
+ ROM_REGION( 0x19000, "maincpu", 0 )
+ ROM_LOAD( "splatsc1.10", 0x0d000, 0x1000, CRC(6cc2988a) SHA1(bd0648185ab859afc981d4e8ab954ed1f39303e4) )
+ ROM_LOAD( "splatsc1.11", 0x0e000, 0x1000, CRC(ee960115) SHA1(b3a03b14f7ee97d55b948ecc09c5e4006c31f0ce) )
+ ROM_LOAD( "splatsc1.12", 0x0f000, 0x1000, CRC(21916fce) SHA1(6896afd10c30d90b807b60f90fced7114b1812e3) )
+ ROM_LOAD( "splat.01", 0x10000, 0x1000, CRC(1cf26e48) SHA1(6ba4de6cc7d1359ed450da7bae1000552373f873) )
+ ROM_LOAD( "splat.02", 0x11000, 0x1000, CRC(ac0d4276) SHA1(710aba98909d5d63c4b9b08579021f9c026b3111) )
+ ROM_LOAD( "splat.03", 0x12000, 0x1000, CRC(74873e59) SHA1(727c9da682fd10353f3969ef02e9f1826d8cb77a) )
+ ROM_LOAD( "splat.04", 0x13000, 0x1000, CRC(70a7064e) SHA1(7e6440585462b68b62d6d571d83635bf17149f1a) )
+ ROM_LOAD( "splatsc1.05", 0x14000, 0x1000, CRC(6989e923) SHA1(383d831084cf79e3961125142d1e3bf4fad1ac66) )
+ ROM_LOAD( "splatsc1.06", 0x15000, 0x1000, CRC(82b22e55) SHA1(d71c6598f6a43f47f6752c803069efeb877bf1f0) )
+ ROM_LOAD( "splatsc1.07", 0x16000, 0x1000, CRC(e0c4230c) SHA1(2795732725f63e766ee23744147bf002373bc5f7) )
+ ROM_LOAD( "splatsc1.08", 0x17000, 0x1000, CRC(42ff589f) SHA1(72c9b40c9291a6b97f637c6424265b30227d87c6) )
+ ROM_LOAD( "splatsc1.09", 0x18000, 0x1000, CRC(f67564be) SHA1(3fda9032953e4f75df838616d1c7023a1f2e9861) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "splat.snd", 0xf000, 0x1000, CRC(a878d5f3) SHA1(f3347a354cb54ca228fe0971f0ae3bc778e2aecf) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "decoder.4", 0x0000, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
+ ROM_LOAD( "decoder.6", 0x0200, 0x0200, CRC(83faf25e) SHA1(30002643d08ed983a6701a7c4b5ee74a2f4a1adb) )
+ROM_END
+
+ROM_START( robotron201 )
+ ROM_REGION( 0x19000, "maincpu", 0 )
+ ROM_LOAD( "robotron.sba", 0x0d000, 0x1000, CRC(13797024) SHA1(d426a50e75dabe936de643c83a548da5e399331c) )
+ ROM_LOAD( "robotronp.sbb", 0x0e000, 0x1000, CRC(e83a2eda) SHA1(4a62fcd2f91dfb609c3d2c300bd9e6cb60edf52e) )
+ ROM_LOAD( "robotron.sbc", 0x0f000, 0x1000, CRC(645d543e) SHA1(fad7cea868ebf17347c4bc5193d647bbd8f9517b) )
+ ROM_LOAD( "robotron.sb1", 0x10000, 0x1000, CRC(66c7d3ef) SHA1(f6d60e26c209c1df2cc01ac07ad5559daa1b7118) )
+ ROM_LOAD( "robotron.sb2", 0x11000, 0x1000, CRC(5bc6c614) SHA1(4d6e82bc29f49100f7751ccfc6a9ff35695b84b3) )
+ ROM_LOAD( "robotron201.3", 0x12000, 0x1000, CRC(85eb583e) SHA1(b6c4280415515de6f56b358206dc3bd93a12bfce) )
+ ROM_LOAD( "robotron.sb4", 0x13000, 0x1000, CRC(afb1c561) SHA1(aaf89c19fd8f4e8750717169eb1af476aef38a5e) )
+ ROM_LOAD( "robotronp.5", 0x14000, 0x1000, CRC(827cb5c9) SHA1(1732d16cd88e0662f1cffce1aeda5c8aa8c31338) )
+ ROM_LOAD( "robotron.sb6", 0x15000, 0x1000, CRC(bd2c853d) SHA1(f76ec5432a7939b33a27be1c6855e2dbe6d9fdc8) )
+ ROM_LOAD( "robotron.sb7", 0x16000, 0x1000, CRC(49ac400c) SHA1(06eae5138254723819a5e93cfd9e9f3285fcddf5) )
+ ROM_LOAD( "robotron.sb8", 0x17000, 0x1000, CRC(3a96e88c) SHA1(7ae38a609ed9a6f62ca003cab719740ed7651b7c) )
+ ROM_LOAD( "robotron.sb9", 0x18000, 0x1000, CRC(b124367b) SHA1(fd9d75b866f0ebbb723f84889337e6814496a103) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "robotron.snd", 0xf000, 0x1000, CRC(c56c1d28) SHA1(15afefef11bfc3ab78f61ab046701db78d160ec3) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "decoder.4", 0x0000, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
+ ROM_LOAD( "decoder.6", 0x0200, 0x0200, CRC(83faf25e) SHA1(30002643d08ed983a6701a7c4b5ee74a2f4a1adb) )
+ROM_END
+
+ROM_START( robotronp )
+ ROM_REGION( 0x19000, "maincpu", 0 )
+ ROM_LOAD( "robotron.sba", 0x0d000, 0x1000, CRC(13797024) SHA1(d426a50e75dabe936de643c83a548da5e399331c) )
+ ROM_LOAD( "robotronp.sbb", 0x0e000, 0x1000, CRC(e83a2eda) SHA1(4a62fcd2f91dfb609c3d2c300bd9e6cb60edf52e) )
+ ROM_LOAD( "robotron.sbc", 0x0f000, 0x1000, CRC(645d543e) SHA1(fad7cea868ebf17347c4bc5193d647bbd8f9517b) )
+ ROM_LOAD( "robotron.sb1", 0x10000, 0x1000, CRC(66c7d3ef) SHA1(f6d60e26c209c1df2cc01ac07ad5559daa1b7118) )
+ ROM_LOAD( "robotron.sb2", 0x11000, 0x1000, CRC(5bc6c614) SHA1(4d6e82bc29f49100f7751ccfc6a9ff35695b84b3) )
+ ROM_LOAD( "robotron.sb3", 0x12000, 0x1000, CRC(e99a82be) SHA1(06a8c8dd0b4726eb7f0bb0e89c8533931d75fc1c) )
+ ROM_LOAD( "robotron.sb4", 0x13000, 0x1000, CRC(afb1c561) SHA1(aaf89c19fd8f4e8750717169eb1af476aef38a5e) )
+ ROM_LOAD( "robotronp.5", 0x14000, 0x1000, CRC(827cb5c9) SHA1(1732d16cd88e0662f1cffce1aeda5c8aa8c31338) )
+ ROM_LOAD( "robotron.sb6", 0x15000, 0x1000, CRC(bd2c853d) SHA1(f76ec5432a7939b33a27be1c6855e2dbe6d9fdc8) )
+ ROM_LOAD( "robotron.sb7", 0x16000, 0x1000, CRC(49ac400c) SHA1(06eae5138254723819a5e93cfd9e9f3285fcddf5) )
+ ROM_LOAD( "robotron.sb8", 0x17000, 0x1000, CRC(3a96e88c) SHA1(7ae38a609ed9a6f62ca003cab719740ed7651b7c) )
+ ROM_LOAD( "robotron.sb9", 0x18000, 0x1000, CRC(b124367b) SHA1(fd9d75b866f0ebbb723f84889337e6814496a103) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "robotron.snd", 0xf000, 0x1000, CRC(c56c1d28) SHA1(15afefef11bfc3ab78f61ab046701db78d160ec3) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "decoder.4", 0x0000, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
+ ROM_LOAD( "decoder.6", 0x0200, 0x0200, CRC(83faf25e) SHA1(30002643d08ed983a6701a7c4b5ee74a2f4a1adb) )
+ROM_END
+
+ROM_START( robotrontie )
+ ROM_REGION( 0x19000, "maincpu", 0 )
+ ROM_LOAD( "robotrontie.a", 0x0d000, 0x1000, CRC(952bea55) SHA1(80f51d8e7ec62518afad7e56a47e0756f83f813c) )
+ ROM_LOAD( "robotrontie.b", 0x0e000, 0x1000, CRC(4c05fd3c) SHA1(0d727458454826fd8222e4022b755d686ccb065f) )
+ ROM_LOAD( "robotron.sbc", 0x0f000, 0x1000, CRC(645d543e) SHA1(fad7cea868ebf17347c4bc5193d647bbd8f9517b) )
+ ROM_LOAD( "robotron.sb1", 0x10000, 0x1000, CRC(66c7d3ef) SHA1(f6d60e26c209c1df2cc01ac07ad5559daa1b7118) )
+ ROM_LOAD( "robotron.sb2", 0x11000, 0x1000, CRC(5bc6c614) SHA1(4d6e82bc29f49100f7751ccfc6a9ff35695b84b3) )
+ ROM_LOAD( "robotron.sb3", 0x12000, 0x1000, CRC(e99a82be) SHA1(06a8c8dd0b4726eb7f0bb0e89c8533931d75fc1c) )
+ ROM_LOAD( "robotrontie.4", 0x13000, 0x1000, CRC(e8238019) SHA1(0ce29f4bf6bdee677c8e80c2d5e66fc556ba349f) )
+ ROM_LOAD( "robotronp.5", 0x14000, 0x1000, CRC(827cb5c9) SHA1(1732d16cd88e0662f1cffce1aeda5c8aa8c31338) )
+ ROM_LOAD( "robotron.sb6", 0x15000, 0x1000, CRC(bd2c853d) SHA1(f76ec5432a7939b33a27be1c6855e2dbe6d9fdc8) )
+ ROM_LOAD( "robotrontie.7", 0x16000, 0x1000, CRC(3ecf4620) SHA1(3c670a1f8df35d18451c82f220a02448bf5ef5ac) )
+ ROM_LOAD( "robotrontie.8", 0x17000, 0x1000, CRC(752d7a46) SHA1(85dd58d14d527ca75d6c546d6271bf8ee5a82c8c) )
+ ROM_LOAD( "robotron.sb9", 0x18000, 0x1000, CRC(b124367b) SHA1(fd9d75b866f0ebbb723f84889337e6814496a103) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "robotron.snd", 0xf000, 0x1000, CRC(c56c1d28) SHA1(15afefef11bfc3ab78f61ab046701db78d160ec3) )
+
+ ROM_REGION( 0x0400, "proms", 0 )
+ ROM_LOAD( "decoder.4", 0x0000, 0x0200, CRC(e6631c23) SHA1(9988723269367fb44ef83f627186a1c88cf7877e) )
+ ROM_LOAD( "decoder.6", 0x0200, 0x0200, CRC(83faf25e) SHA1(30002643d08ed983a6701a7c4b5ee74a2f4a1adb) )
+ROM_END
+
+/*******************************************************
+ *
+ * Game Driver
+ *
+ *******************************************************/
+
+GAME( 1981, defender2, defender, williams, stargate, williams_state, stargate, ROT0, "Jeff Vavasour", "Defender II", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, splatsc1, splat, williams, splat, williams_state, joust, ROT0, "Williams", "Splat! (sc1 hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, robotron201, robotron, williams, robotron, williams_state, robotron, ROT0, "Sean Riddle", "Robotron: 2084 (Hacked Patched Blue-201)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, robotronp, robotron, williams, robotron, williams_state, robotron, ROT0, "Christian Gingras / Sean Riddle", "Robotron: 2084 (patched)", MACHINE_SUPPORTS_SAVE )
+GAME( 2014, robotrontie, robotron, williams, robotron, williams_state, robotron, ROT0, "Vid Kidz", "Robotron: 2084 (Tie Die)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/drivers/yiear.cpp b/docs/release/src/hbmame/drivers/yiear.cpp
new file mode 100644
index 00000000000..50fcfddf0fa
--- /dev/null
+++ b/docs/release/src/hbmame/drivers/yiear.cpp
@@ -0,0 +1,27 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/drivers/yiear.cpp"
+
+ROM_START( nacho )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "nacho.8", 0x08000, 0x4000, CRC(ad779f38) SHA1(057f05f789261f0b9a0f9d32623c3de10d5ed5e6) )
+ ROM_LOAD( "nacho.7", 0x0c000, 0x4000, CRC(6d9b7c36) SHA1(634c68617df9d3078be85ccaefda3719b9e06bab) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "nacho.1", 0x00000, 0x2000, CRC(7f1139ef) SHA1(04872803bcfd468490aa68b6b4b8c6219d0e3805) )
+ ROM_LOAD( "nacho.2", 0x02000, 0x2000, CRC(cd8be306) SHA1(7e6fe875e808def4da7d5b19e291481d736e418c) )
+
+ ROM_REGION( 0x10000, "gfx2", 0 )
+ ROM_LOAD( "nacho.5", 0x00000, 0x4000, CRC(2da87538) SHA1(37f17b8a6e1ad2fc2a94f90e54fa9ae8a5380b45) )
+ ROM_LOAD( "nacho.6", 0x04000, 0x4000, CRC(b48393a9) SHA1(d8f4011423027e9f22f3a62e16e9f77e0fbfdb2c) )
+ ROM_LOAD( "nacho.3", 0x08000, 0x4000, CRC(75bad724) SHA1(b6fad1771b7600867de3cafddd7555a8ab0f4f98) )
+ ROM_LOAD( "nacho.4", 0x0c000, 0x4000, CRC(3ecb72e4) SHA1(4fc494bf3025b3b9fd05fc9f4f6d865039b3ffc8) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "407c10.1g", 0x00000, 0x0020, CRC(c283d71f) SHA1(10cd39f4e951ba6ca5610081c8c1fcd9d68b34d2) )
+
+ ROM_REGION( 0x2000, "vlm", 0 )
+ ROM_LOAD( "407_c09.8b", 0x00000, 0x2000, CRC(f75a1539) SHA1(f139f6cb41351eb81ee47d777db03012aa5fadb1) )
+ROM_END
+
+GAME( 2009, nacho, yiear, yiear, yiear, driver_device, 0, ROT0, "Gatinho", "Nacho Libre", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/hbmame/hbmame.cpp b/docs/release/src/hbmame/hbmame.cpp
new file mode 100644
index 00000000000..299d7cbf496
--- /dev/null
+++ b/docs/release/src/hbmame/hbmame.cpp
@@ -0,0 +1,24 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***************************************************************************
+
+ hbmame.c
+
+ Specific (per target) constants
+
+****************************************************************************/
+
+#include "emu.h"
+
+#define APPNAME "HBMAME"
+#define APPNAME_LOWER "hbmame"
+#define CONFIGNAME "hbmame"
+#define COPYRIGHT "Copyright Nicola Salmoria\nand the MAME team\nhttp://mamedev.org"
+#define COPYRIGHT_INFO "\nMAME portions are copyright Nicola Salmoria and the MAME team.\n" \
+ "HBMAME portions are copyright Robbbert."
+
+const char * emulator_info::get_appname() { return APPNAME;}
+const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;}
+const char * emulator_info::get_configname() { return CONFIGNAME;}
+const char * emulator_info::get_copyright() { return COPYRIGHT;}
+const char * emulator_info::get_copyright_info() { return COPYRIGHT_INFO;}
diff --git a/docs/release/src/hbmame/hbmame.lst b/docs/release/src/hbmame/hbmame.lst
new file mode 100644
index 00000000000..45d2b2e8475
--- /dev/null
+++ b/docs/release/src/hbmame/hbmame.lst
@@ -0,0 +1,2994 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/******************************************************************************
+
+ hbmame.lst
+
+ List of all enabled drivers in the system.
+
+****************************************************************************
+
+
+ /* 1942 */
+1942 //parent
+1942h
+1942c64 // 1942 with C64 sounds (by minwah)
+1942fpa // 1942 with free play (by cmonkey)
+galagax /* Jerky - Chris Moore hack of 1942 */
+
+ /* 1943 */
+1943 //parent
+1943h /* Hacked to have the vendor name and phone number */
+
+ /* 8080bw */
+invaders //parent
+tst_invd // test rom
+invmulti //parent
+invmultim1a
+invmultim2a
+invmultim2c
+invmultim3a
+invmultip
+invmultis1a
+invmultis2a
+invmultis3a
+invmultit3d
+invrvnge //parent for ir
+
+ /* arkanoid */
+arkanoid //parent
+akblc2dx /* hack */
+akgcdx /* hack */
+aktaytdx /* hack */
+arkll32 /* LLMAME 32 */
+
+ /* asteroid */
+asteroid //parent
+asteroid6 /* Clay Cowgill Bullet Hack */
+astdelux4
+starslayer // star destroyer, hack of asteroid2
+//amg // test only
+
+ /* astrocde */
+tst_gorf /* Gorf test rom */
+tst_gor1 /* Gorf test rom */
+tst_wow2 /* Wow test rom */
+tst_wow3 /* Wow test rom */
+
+ /* astrof */
+astrof //parent
+astrofbl /* Black Background */
+
+ /* asuka */
+asuka //parent
+asukac // chinese
+
+ /* atarisy1 */
+atarisy1 //bios
+indytemp //parent
+ataris1hw
+
+ /* atari_s1 */
+//atarians //parent
+//atarianb /* hack for emulators */
+
+ /* bagman */
+bagman //parent
+bagturbo
+pickin //parent
+pickinpi /* Color Hack by Pi */
+
+ /* blktiger */
+blktiger //parent
+blkdrgonk /* Korean Translation */
+
+ /* bombjack */
+bombjack //parent
+bmbjckgr /* Vag @ GreekRoms */
+bombjckb /* bootleg */
+bombjred /* hack by unknown French person */
+
+ /* btime */
+btime //parent
+brubber //parent
+lnc //parent
+bnjr /* Bump N Jump Reverse Mod */
+pnc /* Pac N Chase */
+stictime /* Marks Hack of btime */
+vecbtime /* T-Bone hack of Burgertime */
+
+ /* bublbobl */
+bublbobl //parent
+boblcave
+bublcave
+bublcave10
+bublcave11
+bbaladar /* Aladar Bootleg */
+bb2bmh /* Overclocked Bubblebobble Memories Hack */
+bbhackv1 /* Overclocked Level Hack */
+bbredux1 /* Punji - Bubble Bobble Redux with Level Skip */
+bbredux2 /* Punji - Bubble Bobble Redux with Level Skip and Game Continue */
+bbredux3 /* Punji - Bubble Bobble Redux with Level Skip, Game Continue, and High Score Save */
+bublbobf /* Arkatrad */
+sboblboblh /* level select hack */
+
+ /* bwidow */
+spacwarp /* Jeff Hendrix - Proto on Space Duel HW */
+
+ /* cave */
+ddonpach //parent
+ddonpacha // trap15 hack
+pwrinst2 //parent
+pwrinst2h /* 2013 Hack by TT */
+pwrinst2z
+
+ /* cball */
+cball //parent
+cballfix // With MASH 'fixed' gfx rom
+
+ /* cclimber */
+ckong //parent
+cclimber //parent
+tongypac
+ckongfix /* Graphics Fix */
+ckonga2
+ckonga3
+cclimbrm /* Tim Arcadecollecting Modded Version */
+
+ /* centiped */
+centiped //parent
+milliped //parent
+astroped /* Twisty Hack of Centipede */
+astropd2 /* Twisty Hack of Centipede */
+cemescry /* NoSync hack of Centipede */
+killiped /* The Dog hack of Centipede */
+pacipede /* Jeff Coleburn hack of Centiped */
+silliped /* Andy hack of Millipede */
+vectiped /* The Dog hack of Centipede */
+vectrped /* T-Bone hack of Centipede */
+centipb /* bootleg of centipdb */
+magworm2 /* bootleg of magworm */
+
+ /* cinemat */
+bbugtest /* Test Rom */
+
+ /* commando */
+commando //parent
+comdelux /* Twisty Hack */
+comdlux1 /* Twisty Hack */
+
+ /* cps1 */
+3wonders // parent
+captcomm // parent
+cawing // parent
+dino // parent
+ffight // parent
+ghouls // parent
+kod // parent
+knights // parent
+megaman // parent
+pnickj // parent
+punisher // parent
+sf2 // parent
+sf2ce // parent
+slammast // parent
+strider // parent
+wof // parent
+
+ /* cps1mis */
+3wondrud
+//captcocc // not working
+captcomc // chinese
+captcomh
+captcoud
+//captcovs // not working
+cawingb
+cps1demo /* Charles Doty */
+cps1frog /* Charles Doty */
+cps1testm /* Cal2 */
+cps1testma /* Cal2 */
+cps1tests /* Cal2 */
+cps1testsa /* Cal2 */
+daimakb /* Found in Mame Plus */
+dino08h2
+dino08h3
+dino08hp
+dinob /* 1993 Cadillacs and Dinosaurs (bootleg) */
+dinobt
+dinobtpp
+dinocgba
+dinocgbb
+dinocgbc
+dinoeh
+dinoex
+dinoh /* 1993 Cadillacs and Dinosaurs (Hack) */
+dinoha /* 1993 Cadillacs and Dinosaurs (Hack) */
+dinohb /* 1993 Cadillacs and Dinosaurs (Hack) */
+dinohp
+//dinohx // crashes in the "underground", demo sound only works on first run.
+dinojp // 2010 Pipi899, RockWall, Zhyxxxx
+dinorp
+//dinosf2
+dinoslice
+dinouphp
+dinoz /* Boss Hack */
+ffightb
+knight21 // debug
+//knightsa // - rom missing
+knightsb2
+knightsh /* 1991 Knights of the Round (Hack) */
+knightsha /* 1991 Knights of the Round (Hack) */
+knightsjb
+knightsro // Sebastian Mihai - Romanian translation 2015
+knightud
+//kodd // not working
+kodh
+kodsp
+//kodud // not working
+pnicku /* 06/08/1994 (c) 1994 + Compile license (Japan) not listed on Capcom's site */
+punisherb /* Found in neht build */
+punisherf /* Flash version 24/7/2009 by Zhyxxxx */
+punisherje1
+punisherjh
+punisherjh1
+punisherjha
+punisherud1
+punisherud2
+sf2bhj
+sf2c // sf2, chinese
+sf2cebr /* hack, Brasil 920313 */
+sf2ced /* hack, Hispanic 990804 */
+sf2ceda /* hack, Hispanic 990804 */
+sf2ceh /* hack, Hispanic 990804 */
+sf2cehk
+sf2cehp
+sf2cejem
+sf2jbh // sf2jbh2014
+sf2koryuh /* Hack by TT */
+sf2h9 /* Found in Mame Plus */
+sf2h10 /* Found in Mame Plus */
+sf2h11 /* Found in Mame Plus */
+sf2h12 /* Found in Mame Plus */
+sf2h13 /* hack */
+sf2pun /* Drakon, Punishment Edition v1 Final */
+sf2sl73a /* Drakon, Sheng Long v7.3a */
+sf2th
+sf2tha
+sf2tlona /* hack, Tu Long set 1 */
+sf2tlonb /* hack, Tu Long set 2 */
+sf2tlonc /* hack, Tu Long set 3 */
+sf2turyu /* hack, Tu Long prototype */
+sf2yyc3d5
+sf2yyc3g
+sf2yyc6
+sk2h1 /* 1999 Legend of Three Kingdoms' Heroes / Sanguo Yingxiong Zhuan */
+sk2h1q // qsound version of sk2h1
+sk2h2 /* 1999 Legend of Three Kingdoms' Heroes / Sanguo Yingxiong Zhuan */
+sk2h2q
+sk2h3 // mame sgyxz for testing
+sk2h4q
+sk2h5q
+sk2h6q
+sk2h11 /* 1992 Sangokushi II (Hack 1) */
+sk2h12 /* 1992 Sangokushi II (Hack 2) */
+sk2h13 /* 1992 Sangokushi II (Hack 3) */
+sk2h14 /* Chinese language */
+sk2h15 // wofaehp
+sk2h16 // wofahp2
+sk2h21 /* 1997 Three Sword Masters / San Jian Sheng */
+sk2h22 // San Jian Sheng (Chinese bootleg of Sangokushi II
+sk2h31 /* 1997 Three Holy Swords / San Sheng Jian */
+sk2h32 /* 1997 Three Holy Swords / San Sheng Jian */
+sk2h33 /* 1995 Holy Sword Three Kingdoms / Sheng Jian San Guo */
+sk2h34 /* 1995 Holy Sword Three Kingdoms / Sheng Jian San Guo */
+sk2h35 /* 1995 Holy Sword Three Kingdoms / Sheng Jian San Guo */
+sk2h31q
+sk2h32q
+sk2h33q
+sk2h34q
+sk3p1 // wofchdx
+sk3p2 // wofchdx1
+sk3p3 // wofchdx2
+slammastud
+stridergf // fix unwanted black specks
+stridergh // as above, and uncensored
+tk2c1 // wofbio
+tk2c2 // wofbt
+tk2c3 // wofctj
+tk2c4 // wofdy
+tk2c5 // wofdyg
+tk2c6 // woffh
+tk2c7 // wofgyc
+tk2c8 // wofgyq
+tk2c9 // wofhgz
+tk2c10 // wofhzj
+tk2c11 // wofjjq
+tk2c12 // wofjqz
+tk2c13 // wofmr
+tk2c14 // wofsbl
+tk2c15 // wofsjj
+tk2c16 // wofsz
+tk2c17 // wofyjs
+tk2c18 // wofyxg
+tk2c19 // wofzhs
+tk2c20 // wofzhy
+tk2c21 // wofzy2
+tk2c22 // wofzy3
+tk2c23 // wofzyq
+tk2h1 // wofjh
+tk2h2 // wofjhb, was dynwarjh before rom loading was figured out
+tk2h3 // wofjhc, was dynwarj2 before rom loading was figured out
+tk2h4 // wofjh2
+tk2h5 // wofjcn
+tk2h6 // wofjd
+tk2h7 // wofjehp
+tk2h8 // wofjhdwb
+tk2h9 // wofjhp2
+tk2h10 // wofjm
+tk2h11 // wofjmjp
+tk2h12 // wofjpsrw
+tk2h13 // wofjrabh
+tk2h14 // wofjrlb
+//tk2h15 // wofjrpbs exception in first demo
+//tk2h16 // wofjv10s exception in first demo
+tk2h17 // wofjzcr1
+tk2h18 // wofjzero
+tk2p2 // wofch_v3
+tk2p3 // wofchspp
+wofb
+wofch // tk2p1
+wofes
+woffr /* Neo-Arc French Trans */
+wofr1h
+wofsf2
+wofud
+
+ /* cps2 */
+// CPS2 PARENTS ***
+1944
+19xx
+armwar
+avsp
+batcir
+csclub
+cybots
+ddsom
+ddtod
+dimahoo
+dstlk
+ecofghtr
+gigawing
+hsf2
+megaman2
+mmatrix
+mpang
+msh
+mshvsf
+mvsc
+nwarr
+progear
+ringdest
+sfa
+sfa2
+sfa3
+sfz2al
+sgemf
+spf2t
+ssf2
+ssf2t
+vhunt2
+vsav
+vsav2
+xmcota
+xmvsf
+// CPS2 HACKS ***
+1944fp
+ddsomavs
+ddsomchs
+ddsomhp
+ddsomjfs
+halfway // progear hack by The Halfway House
+mshjphp
+mshvsemb
+mshvsfjh
+mshvsfjphp
+mshyh
+mvscjemb
+mvscjphp
+//mvscrcp // reboots shortly after start
+//mvscuh // reboots shortly after start
+pfghtjrm
+suicide /* Razoola */
+suicide2 /* Razoola */
+sfa2h
+sfa3br
+sfa3dp
+sfa3nc
+sfa3nch
+sfa3sp2
+sfa3spp
+sfa3uhd
+sfz2abr
+sfz2ajhp
+sfz2aldp
+sfz2aldp2
+sfz2jyh
+sfz3jb
+sfz3jemb
+sfz3jhp
+sfz3jsep
+sfzjboss
+sfzjyh
+sgemfch
+spf2tb // boss hack
+ssf2tfp
+ssf2tfr
+ssf2tpls
+ssf2xjhy
+ssf2xjjs
+ssf2xjnc
+ssf2zhp
+vampjb
+vsav2emb
+xmcotajb
+xmcotajphp
+xmvsfjphp
+xmvsfrm
+xmvsfryh
+// CPS2 PHOENIX ***
+1944d
+1944da
+19xxd
+armwar1d
+avspd
+batcird
+csclub1d
+cybotsud
+cybotsjd
+dimahoud
+ddsomud
+ddtodd
+dstlku1d
+ecofghtrd
+gigaman2
+gigawingd
+gigawingjd
+hsf2d
+megamn2d
+mmatrixd
+mpangjd
+mshud
+mshvsfu1d
+mvscud
+nwarrud
+progearud
+progearjd
+progearjbl
+ringdstd
+sfa3ud
+sfad
+sfaud
+sfz2ad
+sfz2ald
+sfz2jd
+sfz3jr2d
+sgemfd
+spf2td
+ssf2r1d
+ssf2td
+spf2xjd
+ssf2tad
+ssf2tbd
+ssf2ud
+ssf2xjr1d
+vhunt2d
+vsavd
+vsav2d
+xmcotar1d
+xmvsfu1d
+
+ /* cps3 */
+jojo //parent
+jojoba //parent
+redearth //parent
+sfiii //parent
+sfiii2 //parent
+sfiii3 //parent
+jojobbh2
+jojobbss
+jojobpow
+jojonbss
+jojonpow
+redearex
+redeartn // no-cd version
+redeartno // no-cd version with old roms from multijet
+sfiiibhp
+sfiiipmp
+sfiii2bh
+sfiii2np
+sfiii2pl
+sfiii3an // hack
+sfiii3bh
+sfiii3mh
+sfiii3ng
+sfiii3np
+sfiii4rd // hack
+
+ /* dec0 */
+baddudes //parent
+baddudef /* Arkatrad */
+decodemo /* Charles Doty */
+
+ /* dkong */
+dkong //parent
+dkong2m
+dkongex /* Jeff's Hack with Foundry Level */
+dkongf
+dkongp /* Fix for level 22 kill screen by Don Hodges */
+dkongpac /* Tim Appleton - Donkey Kong with Pacman graphics */
+dkongpe
+dkongx
+dkongx11
+dkrainbow
+dkrdemo
+kong2600 /* Vic Twenty George hack of Donkey Kong */
+nadkong
+
+ /* docastle */
+dorunrun //parent
+sdreturn
+
+ /* dotrikun */
+dotrimjr
+mineswp /* Minesweeper */
+
+ /* ertictac */
+//armdemo /* Charles Doty */ // totally broken
+
+ /* exidy */
+targ //parent
+targtest // Targ Test Rom
+teetert //parent
+teetertfp // free play hack
+
+ /* exerion */
+exerion //parent
+exerionj /* Japanese version */
+exeriongr /* Vag @ GreekRoms 2004 */
+
+ /* fcrash */
+fcrash
+captcommb2
+ffightbl
+ffightbla
+kodb
+
+ /* flower */
+flower
+flowerj
+
+ /* galaga */
+galaga //parent
+xevious //parent
+galagads
+galagab2
+galaga84
+nebulbee
+galaga99 /* Jerky and Sil hack of Galaga */
+galagabl /* Namco 1982 version of Gallag */
+galagaf /* Fast Shoot Hack */
+galagap /* Patch to fix level 0 crash, by Don Hodges */
+galagix /* Galaga Meets Phoenix */
+galagost /* Twisty Hack of Galaga */
+galagosb /* Twisty Hack of Galaga 20021128 */
+galaped /* Cary Barnhard hack of Galaga */
+galgaxin /* T-Bone hack of Galaga */
+terror /* Galaga Terrorist Hack */
+galagaef /* Galaga Terrorist Hack */
+vgalaga /* Galaga Vector Hack */
+vgalagam
+vgalagaf
+battlesh /* Battles 2002 */
+gaous /* Xevious Hack */
+mrdonm /* Mr Do Nightmare */
+sxvioush /* Super Xevious 2002 */
+xevioush /* Xevious 2002 */
+xviousah
+xeviousp /* Xevious Plus! */
+xevious3 /* Xevious 2003 */
+xevious4 /* Xevious 2004 */
+xevious5 /* Xevious 2005 */
+xeviblk /* Xevious Black */
+
+ /* galaxian */
+amidar //parent
+mooncrst //parent
+pisces //parent
+scramble //parent
+frogger //parent
+amidarf /* ArkaMAME */
+amidargr /* GreekRoms 2004 */
+andromd /* hack - Renamed to avoid confusion with andromed (ex TestDriver) */
+buglaxn /* The Dog hack of Galaxian */
+fourplay
+galaxiab /* unknown hack of Galaxian */
+galaxkyo /* unknown hack of Galaxian Part X */
+galaxni /* Petaco bootleg of Galaxian Part X */
+galinvad /* T-Bone hack of Galaxian */
+galnamco /* The Original Namco */
+gaylaxn /* The Dog hack of Galaxian Part X */
+jumpbugx // extra sounds
+kazzy
+monstrz // monster zero hacked to partially work
+mooncmst
+mooncrs5 /* clone of fantazia */
+offender /* Chris Henry hack of scramble */
+starfgh2 /* Bootleg of Pisces */
+superdog /* Jerky Hack Hack of scramble */
+trukker /* Grimlick hack of Frogger */
+tst_frog /* JROK */
+vectrgal /* T-Bone hack of Galaxian */
+videight /* 8in1 multigame */
+wbeast /* Bootleg of War-of-Bug */
+
+ /* gauntlet */
+gaunt2 //parent
+gaunt2ls // Orange Elf - new levels
+gaunt2s /* Speed Hack */
+gaunt2f // graphics hack
+
+ /* gottlieb */
+qbert //parent
+711qbert /* Hack of Mello Yellow QBert */
+pbert
+qbertb
+vbert
+
+ /* ir */
+ir // extra sounds
+
+ /* itech8 */
+itecdemo /* Charles Doty */
+
+ /* jrpacman */
+jrpacman //parent
+jr1000 /* Blue Justice */
+jr1000_2 /* Blue Justice */
+jr2000 /* Blue Justice */
+jr2001 /* Blue Justice */
+jr2001p /* Blue Justice */
+jr2002 /* Blue Justice */
+jr2002p /* Blue Justice */
+jr2003 /* Blue Justice */
+jr2003p /* Blue Justice */
+jr2004 /* Blue Justice */
+jr2004p /* Blue Justice */
+jr2005 /* Blue Justice */
+jr2005p /* Blue Justice */
+jr3000p /* Blue Justice */
+jr4000p /* Blue Justice */
+jr5000p /* Blue Justice */
+jr6000 /* Blue Justice */
+jr7000 /* Blue Justice */
+jr7000p /* Blue Justice */
+jr8000 /* Blue Justice */
+jr8000p /* Blue Justice */
+jr9000p /* Blue Justice */
+jrdeluxe /* Blue Justice */
+jrhearts
+jrpacad
+jrpacjr /* Blue Justice */
+jrpacjrp /* Blue Justice */
+jrpacp /* Blue Justice */
+jrvectr /* T-Bone hack of Jr. Pac-Man */
+jrfast
+jrcheat
+jrspeed
+jryumyum /* Tim Appleton: Jr.Pacman vs Yum Yum */
+
+ /* kaneko */
+shogwarr //parent
+fjbusterbh
+shogwarrbh
+
+ /* kof94 */
+kof94b
+kof94bc
+kof94blk
+kof94br
+kof94cg
+kof94cn
+kof94cyk
+kof94eh
+//kof94h rom missing
+kof94k
+kof94kh
+kof94qaq
+kof94ru
+kof94ruj
+kof94rz
+kof94seh
+kof94sri
+kof94y
+
+ /* kof95 */
+kof95b
+kof95bln
+kof95brz
+kof95ce
+kof95d
+kof95eh
+kof95hp
+kof95k
+kof95neo
+kof95pjc
+kof95ru
+kof95seh
+kof95xg
+kof95y
+
+ /* kof96 */
+kof96a
+kof96ae
+kof96ae1
+kof96ae1a
+kof96ae1b
+kof96b
+kof96b1
+kof96bb
+kof96c
+kof96cbi
+kof96ckvs
+kof96cn
+kof96cr
+kof96chj
+kof96de
+kof96dr1
+kof96eh
+kof96ep
+kof96ep2
+kof96ep3
+kof96evo
+kof96evoo
+kof96evsp
+kof96ey
+kof96hp
+kof96hp1
+kof96hpr
+kof96k
+kof96k1
+kof96k3
+kof96k3o
+kof96kt // supposedly a korean translation, but looks the same to me.
+kof96lx
+kof96ncd
+kof96oib //IsmaMj
+kof96oib2 //IsmaMj
+kof96oih
+kof96oir
+kof96pch
+kof96pjc
+kof96pm
+kof96rcw
+kof96rf
+kof96rfs
+kof96rfsa
+kof96ri
+kof96ri1
+kof96ri2
+kof96ri3
+kof96ri4
+kof96ri5
+kof96rm
+kof96rp
+kof96rp1
+kof96rss
+kof96ru
+kof96ru2
+kof96rw
+kof96ryu
+kof96seh
+
+ /* kof97 */
+kof97aa
+kof97ae
+kof97ae1
+kof97aot
+kof97bh
+kof97bng
+kof97bs
+kof97cb2
+kof97chris
+kof97cn
+kof97co // combo 2010-02-07
+kof97co6 // combo 2006
+kof97cr
+kof97chl
+kof97chl2
+kof97cy
+kof97dse
+kof97eh
+kof97eh2
+kof97eho
+kof97ei // combo 2010-02-07 different colours
+kof97evo
+kof97evoa
+kof97frb
+kof97irgc
+kof97irgc2
+kof97hk
+kof97hl
+kof97hxd
+kof97ice
+kof97kai
+kof97kp
+kof97kp1
+kof97lb
+kof97lc
+kof97lr
+kof97m
+kof97mit
+kof97mj
+kof97nd
+kof97ne
+kof97neo
+kof97nude
+kof97phl
+kof97pj
+kof97pjc
+kof97pl2
+kof97pl3
+kof97pla
+kof97plc
+kof97plus
+kof97pm
+kof97ps
+kof97rev
+kof97ribe
+kof97rk
+kof97rst
+kof97rst2
+kof97rst3
+kof97rv
+kof97saw
+kof97sex
+kof97shi
+kof97sm
+kof97svs
+kof97svsb2
+kof97sw
+kof97tse
+kof97wh
+kof97wpls
+kof97xbt
+kof97xi
+kof97xp
+kof97xt
+kof97xt1
+kof97xxx
+kof97y
+kof97ya
+kof97yb
+kof97ye
+kof97yg
+kof97yh
+kof97yk
+kof97yk1
+kof97yk2
+kof97yk83
+kof97yk85
+kof97yl
+kof97yl2
+kof97yo
+kof97z
+kof97zm
+
+ /* kof98 */
+kof98aas
+//kof98ae //test only, do not enable
+kof98ae0 //black splashes all over fight scene where cars speed past
+kof98ae1 //black splashes all over fight scene where cars speed past
+kof98ae2 //black splashes all over fight scene where cars speed past
+kof98ae3 //black splashes all over fight scene where cars speed past
+kof98ae20160308 //black splashes all over fight scene where cars speed past
+kof98ae20160827 //black splashes all over fight scene where cars speed past
+kof98bge
+kof98bh
+//kof98bvi // reboots in first demo
+kof98c2006
+kof98c20060214 // date cannot be confirmed
+kof98c20070720 // sometimes reboots itself
+kof98c20070923 // sometimes reboots itself
+kof98c20080330 // sometimes reboots itself while in China with Benimaru
+kof98c20080524 // sometimes reboots itself
+kof98c20080616 // sometimes reboots itself
+kof98c20080712 // sometimes reboots itself
+kof98c20090620 // sometimes reboots itself
+kof98c20090923
+kof98c20100214
+kof98c20100304
+kof98c20110114
+kof98c20110314
+kof98c20120116
+kof98c20120915
+kof98c20130213
+kof98c20130311
+kof98c20130509
+kof98c20130528
+kof98c20130617
+kof98c20130808
+kof98c20130820
+kof98c20131113
+kof98c20140101
+kof98c20140110
+kof98c20140118
+kof98c20140204
+kof98c20140213
+kof98c20140217
+kof98c20140228
+kof98c20140302
+kof98c20140310
+kof98c20140317
+kof98c20140403
+kof98c20140412
+kof98c20140416
+kof98c20140419
+kof98c20140428
+kof98c20140504
+kof98c20140524
+kof98c20140606
+kof98c20140620
+kof98c20140717
+kof98c20140809
+kof98c20140816
+kof98c20140824
+kof98c20140906
+kof98c20140924
+kof98c20141002
+kof98c20141020
+kof98c20150201
+kof98c20150228
+kof98c20150302
+kof98c20150310
+kof98c20150330
+kof98c20150528
+kof98c20150614
+kof98c20150705
+kof98c20150729
+kof98c20150827
+kof98c20151103
+kof98c20151108
+kof98c20151110
+kof98c20151223
+kof98c20160320
+kof98c20160907
+kof98cd
+kof98cd1
+kof98cd2
+kof98ch
+kof98ch1
+kof98chl
+kof98chris
+kof98cn
+kof98cn1
+kof98cos
+kof98cos1
+kof98cos2
+kof98cta // (kof98c20080801) - sometimes reboots itself
+kof98dc
+kof98ecm
+kof98ehr
+kof98evl
+kof98evo
+kof98evo2
+kof98evr
+kof98f
+kof98fr
+kof98fro
+kof98fro2
+kof98frp //slutfest
+kof98fv
+kof98fv2
+kof98gold
+kof98hk
+kof98ice
+kof98ico
+kof98iori
+kof98izh
+kof98jh
+kof98k95
+kof98klc
+kof98lb
+kof98lv
+kof98m
+kof98mev
+kof98mix
+kof98nc
+kof98ncdh
+kof98new
+kof98pjc
+kof98rh
+kof98rh1
+kof98rl
+kof98rm
+kof98rsa
+kof98rup
+kof98seh
+kof98seho
+kof98sof
+kof98sp
+kof98sp2
+kof98sr
+kof98sv
+kof98tim
+kof98ul
+kof98ur
+kof98urf
+kof98wh
+kof98wh1
+kof98wh2
+kof98xi
+kof98y
+kof98yh
+kof98zy
+
+ /* kof99 */
+kof99ab
+kof99ae /* Anniversary Edition */
+kof99ae0
+kof99ae20140408
+kof99ae20140624
+kof99ae20150121
+kof99ae20150520
+kof99ae20150711
+kof99ae20160411
+kof99ae20160419
+kof99aes
+kof99bh
+kof99bhp2
+kof99bhs
+kof99bs
+kof99bs2
+kof99ch
+kof99chf
+kof99co
+kof99co2
+kof99d
+kof99eh
+kof99ehr
+kof99eur
+kof99eur1
+kof99eur2
+kof99eur3
+kof99eur4
+kof99ev2
+kof99evo
+kof99evos
+kof99fc
+kof99fc0
+kof99fc1
+kof99fc2
+kof99fix
+kof99fix1
+kof99fix2
+kof99fmi
+kof99hbi
+kof99hp
+kof99iori
+kof99jh
+kof99jho
+kof99kp
+kof99lb
+kof99m
+kof99nd
+kof99ndh
+kof99ndis
+kof99nevo
+kof99ob
+kof99ob2
+kof99pb
+kof99phl
+kof99pjc1
+kof99pjc2
+kof99pjc3
+kof99pjco
+kof99pk
+kof99pko
+kof99pm
+kof99pt
+kof99py
+kof99r
+kof99rd
+kof99rev
+kof99revo
+kof99roll
+kof99rp
+kof99rp0
+kof99rp1
+kof99rp2
+kof99rp3
+kof99rp4
+kof99rp5
+kof99rp6
+kof99rp7
+kof99rp8
+kof99rp9
+kof99rpa
+kof99rpb
+kof99rpc
+kof99rpp
+kof99rr
+kof99rs
+kof99rsm
+kof99rsp
+kof99seh
+kof99sp
+kof99spd
+kof99sr
+kof99srr
+kof99srr1
+kof99the4
+kof99the42
+//kof99vor // corrupt gfx
+kof99wet
+kof99wh1
+kof99wh2
+kof99wh3
+kof99wh4
+kof99xpsa
+kof99xpsf
+kof99xpsp
+kof99xxx
+kof99y
+kof99yb
+kof99yd
+
+ /* kof2000 */
+kof2000d
+kof2000ev
+kof2000r
+kof2kbh
+kof2kbj
+kof2kbsd
+kof2kce
+kof2kch
+kof2kcp
+kof2keh
+kof2kehr
+kof2kevo
+kof2kevo1
+kof2kevo2
+kof2kevo3
+kof2kgbh
+kof2kgold
+kof2kice
+kof2kiori
+kof2kjlc
+kof2kkf1
+kof2kkvs
+kof2kkzs
+kof2knd
+kof2kpjc
+kof2kpjc1
+kof2kpjc2
+kof2kpjc3
+kof2kpls
+kof2krm
+kof2krp
+kof2kryu
+kof2kseh
+kof2kst
+kof2kwh
+kof2kwh2
+kof2kxxx
+kof2ky
+kof2kyd
+kof2kyg
+kof2kz
+kof2kzs
+
+ /* kof2001 */
+kof2001d
+kof2001n
+kof2k1ay
+kof2k1b
+kof2k1b1
+kof2k1b3
+kof2k1b4
+kof2k1bd2
+kof2k1bh
+kof2k1bh1
+kof2k1bs
+kof2k1bs2
+kof2k1ce
+kof2k1cfc
+kof2k1cf1
+kof2k1ch
+kof2k1clr
+kof2k1cp
+kof2k1cp1
+kof2k1cp2
+kof2k1cp3
+kof2k1cp4
+kof2k1cp5
+kof2k1cp6
+kof2k1cp7
+kof2k1cr
+kof2k1eh
+kof2k1ehc
+kof2k1ehr
+kof2k1gm
+kof2k1guan
+kof2k1ha
+kof2k1ha2
+kof2k1hao
+kof2k1hb
+kof2k1hgm
+kof2k1ice
+kof2k1ic2
+kof2k1k3o
+kof2k1k32
+kof2k1k33
+kof2k1k34
+kof2k1k35
+kof2k1k36
+kof2k1k37
+kof2k1k38
+kof2k1k39
+kof2k1k3a
+kof2k1k3b
+kof2k1k3c
+kof2k1k3d
+kof2k1k3e
+kof2k1k3f
+kof2k1k3g
+kof2k1k3h
+kof2k1ki
+kof2k1lse
+kof2k1mk2
+kof2k1mk
+kof2k1mke
+kof2k1pa
+kof2k1pa2
+kof2k1pjc
+kof2k1pjo
+kof2k1pj1
+kof2k1pj2
+kof2k1pj3
+kof2k1pls
+kof2k1rm
+kof2k1rp
+kof2k1rp0
+kof2k1rp1
+kof2k1rpo
+kof2k1ru
+kof2k1ru0
+kof2k1seh
+kof2k1sob
+kof2k1st
+kof2k1st2
+kof2k1wh
+kof2k1z1
+kof2k1z2
+//kf2k1pa
+//kf2k1pls
+
+ /* kof2002 */
+kof200215
+kof2002d
+kof2002x
+kof2k2ath
+kof2k2b // no sound in attract mode
+kof2k2b1
+kof2k2bd //not working
+kof2k2bh
+kof2k2bjh
+kof2k2bjo
+kof2k2bl3
+kof2k2bl4
+kof2k2bld
+kof2k2blood2
+kof2k2br
+kof2k2br1
+kof2k2br2
+kof2k2bs
+kof2k2c2
+kof2k2cf1
+kof2k2cf2
+kof2k2cf3
+kof2k2cfc
+kof2k2ch
+kof2k2chl
+kof2k2cl2
+kof2k2cl3
+kof2k2cn
+kof2k2cori
+kof2k2dbh
+kof2k2e1
+kof2k2e2
+kof2k2e3
+kof2k2ehr
+kof2k2er2
+kof2k2er3
+kof2k2er4
+kof2k2erx
+kof2k2evo
+kof2k2evo2
+kof2k2fy
+kof2k2gc
+kof2k2gc2
+kof2k2gf
+kof2k2green
+kof2k2ht
+kof2k2ibp
+kof2k2ic1
+kof2k2ic2
+kof2k2ice
+kof2k2jc
+kof2k2js
+kof2k2js2
+kof2k2js4
+kof2k2k2
+kof2k2k3o
+kof2k2k32
+kof2k2k33
+kof2k2k34
+kof2k2k35
+kof2k2k36
+kof2k2k37
+kof2k2k38
+kof2k2k39
+kof2k2k3a
+kof2k2k3b
+kof2k2k3c
+kof2k2k3d
+kof2k2k3e
+kof2k2k3f
+kof2k2k3g
+kof2k2kai
+kof2k2kc
+kof2k2kc2
+kof2k2kk
+kof2k2lb // no sound in attract mode
+kof2k2leon
+kof2k2mcr
+kof2k2moi2
+kof2k2moir // no sound in attract mode
+kof2k2mp1 /* Magic Plus */
+kof2k2mp3 /* Magic Plus III - Ismamj */
+kof2k2mpu
+kof2k2ngp
+kof2k2nu
+kof2k2olp
+kof2k2omg
+kof2k2omg8
+kof2k2omg9
+kof2k2omg9b
+kof2k2on
+kof2k2or
+kof2k2ori
+kof2k2ori2
+kof2k2pa
+kof2k2pjw // no sound in attract mode
+kof2k2plb
+kof2k2pr
+kof2k2pro
+kof2k2ps2
+kof2k2ps2a
+kof2k2ps2mp
+kof2k2pur
+kof2k2ra
+kof2k2rgl // no sound in attract mode
+kof2k2rm
+kof2k2rma
+kof2k2rmb
+kof2k2rm1
+kof2k2rm2
+kof2k2rm3
+kof2k2rm13 // no sound in attract mode
+kof2k2rr // no sound in attract mode
+kof2k2rr1
+kof2k2rr2 // no sound in attract mode
+kof2k2rr3
+kof2k2rr4
+kof2k2rr5
+kof2k2rr6
+kof2k2rr7
+kof2k2rr8 // no sound in attract mode
+kof2k2rs
+kof2k2rs2
+kof2k2ru
+kof2k2rw
+kof2k2sb
+kof2k2seh
+kof2k2se2
+kof2k2sm // bad gfx on train scene
+kof2k2smf
+kof2k2smg
+kof2k2smg2
+kof2k2soi
+kof2k2sp
+kof2k2spl
+kof2k2spls
+kof2k2spo
+kof2k2tc
+kof2k2ul
+kof2k2ule
+kof2k2wuk // no sound in attract mode
+kof2k2xxx
+//kf2k2plc
+
+ /* kof2003 */
+kof2003d
+kof2003f
+kof2003rebh
+kof2k3b
+kof2k3bl2
+kof2k3br
+kof2k3bs1
+kof2k3bs2
+kof2k3bs3
+kof2k3bs4
+kof2k3d
+kof2k3evo
+kof2k3gc
+kof2k3hd
+kof2k3nd
+kof2k3nrx
+kof2k3pcd
+kof2k3pch
+kof2k3ps2
+kof2k3ps3
+kof2k3ryu
+kof2k3sc
+kof2k3ss
+kof2k3tc
+kof2k3zgf
+//kof2k3bd
+//kof2k3pd
+//kof2k3upd
+
+ /* kyugo */
+airwolf //parent
+airwolffr // french
+
+ /* m52 */
+alpha1v // Kyle Hodgetts
+mpatrol //parent
+spatrol /* Sponge Patrol - Gatinho 2008 */
+
+ /* maketrax */
+eyes //parent
+aa /* Widel's Games */
+abscam // GL 1982
+absurd /* scott - nonworking alpha ver 3 */
+alpaca7 /* Jerronimo (useless) */
+alpaca8 /* Jerronimo (useless) */
+bace /* Widel's Games */
+crashh /* PacMAME Hacks */
+deathstar
+dderby /* Widel's Games */
+eyesb
+ghohunt // Hurray Banana
+kangaroh /* Widel's Games */
+lazybug
+lazybug1
+mtturbo /* Tim - Make Trax Turbo Hack */
+pachello /* Jerronimo */
+pacmatri /* Jerronimo */
+pactest /* Widel's Games */
+pactetris
+ppong /* Widel's Games */
+ppong2 /* Widel's Games */
+rainboh /* Widel's Games */
+seq1 /* Jerronimo */
+seq2 /* Jerronimo */
+snakes
+tst_pacm
+wavybug
+zap /* Widel's Games */
+
+ /* mappy */
+mappy //parent
+superpac //parent
+crackhea /* Cary Barnhard hack of Mappy */
+housepty /* Jerky hack of Mappy */
+marpy
+superpc1 /* Paul Smith */
+superpcn /* Blue Justice */
+superpcp /* Blue Justice */
+superpcs /* Paul Smith */
+vectrsup /* T-Bone hack of Super Pac-Man */
+
+ /* marinedt */
+marinedt
+
+ /* mario */
+mario //parent
+cenmario
+
+ /* mcr */
+shollow //parent
+tron //parent
+tapper //parent
+handiman /* Bobby Tribble hack of Tron */
+shtron /* Jerronimo */
+stapper /* Tapper Simpsons Hack */
+stapper1 /* Tapper Simpsons Hack ver .81 */
+
+ /* mcr3 */
+sarge //parent
+sargex /* Gatinho Sarge x-rated */
+
+ /* mgd2 */
+bstarsd /* 0002 (c) 1990 SNK */
+tpgolfd /* 0003 (c) 1990 SNK */
+maglordd /* 0005 (c) 1990 Alpha Denshi Co. */
+ridherod /* 0006 (c) 1990 SNK */
+alpham2d /* 0007 (c) 1991 SNK */
+ncombatd /* 0009 (c) 1990 Alpha Denshi Co. */
+cyberlipd /* 0010 (c) 1990 SNK */
+superspyd /* 0011 (c) 1990 SNK */
+mutnatd /* 0014 (c) 1992 SNK */
+kotmd /* 0016 (c) 1991 SNK */
+sengokud /* 0017 (c) 1991 SNK */
+burningfd /* 0018 (c) 1991 SNK */
+lbowlingd /* 0019 (c) 1990 SNK */
+gpilotsd /* 0020 (c) 1991 SNK */
+joyjoyd /* 0021 (c) 1990 SNK */
+lresortd /* 0024 (c) 1992 SNK */
+eightmand /* 0025 (c) 1991 SNK / Pallas */
+minasand /* 0027 (c) 1990 Monolith Corp. */
+2020bbd /* 0030 (c) 1991 SNK / Pallas */
+socbrawld /* 0031 (c) 1991 SNK */
+roboarmyd /* 0032 (c) 1991 SNK */
+fatfury1d /* 0033 (c) 1991 SNK */
+fbfrenzyd /* 0034 (c) 1992 SNK */
+bakatonod /* 0036 (c) 1991 Monolith Corp. */
+crswordd /* 0037 (c) 1991 Alpha Denshi Co. */
+trallyd /* 0038 (c) 1991 Alpha Denshi Co. */
+sengoku2d /* 0040 (c) 1993 SNK */
+3countbd /* 0043 (c) 1993 SNK */
+aofd /* 0044 (c) 1992 SNK */
+androdund /* 0049 (c) 1992 Visco */
+ncommandd /* 0050 (c) 1992 Alpha Denshi Co. */
+wh1d /* 0053 (c) 1992 Alpha Denshi Co. */
+
+ /* midtunit */
+mk //parent
+mkfr // french
+mkturbod /* MK protection hack */
+mktturboen // Zenomorp 2012 Turbo Endurance
+mktturbopi // Zenomorp 2012 Turbo Projectile Insanity
+mk2 //parent Mortal Kombat II r3.1
+mk2fr // french
+mk2r33 // Mortal Kombat II r3.3
+umk2te50 // Ultimate MKII Tournament Edition r5.0.050
+umk2te51 // Ultimate MKII Tournament Edition r5.0.051
+umk2te52 // Ultimate MKII Tournament Edition r5.0.052
+
+ /* midwunit */
+umk3 //parent
+umk3j /* UMK3 1.2 Juggernaut Hack v1.0 */
+umk3z /* UMK3 1.2 Zeus hack */
+umk3te /* UMK3 Tournament Edition 2.0.032b8 */
+umk3te2 /* UMK3 Tournament Edition 2.0.035 */
+
+ /* midyunit */
+mkla4d /* MK protection hack */
+
+ /* mitchell */
+mitcdemo /* Charles Doty */
+
+ /* mmagic */
+mmagic // with sound
+
+ /* model2 */
+srallyc //parent
+srallyp // Kyle Hodgetts Sega Rally Pro Drivin'
+
+ /* monaco */
+monaco
+
+ /* mrdo */
+mrdo //parent
+mrdigdo /* Justin Clark hack of Mr. Do! */
+mrdofast /* Speedup hack from Evil Exidy*/
+mrpac /* Twist Hack 20020813 */
+mrpacb
+newdigdo /* Vic 20 George and Jerky hack of... */
+stickydo /* Marck's Hacks */
+
+ /* mslug */
+msboot
+mslugeh
+mslug2eh
+mslug2eh0
+mslug2eh1
+mslug2eh2
+mslug2eh3
+mslug2eh4
+mslug2fr
+mslug2fro
+mslug2sh
+mslug2t // 2015 trap15 - remove slowdowns that plague gameplay
+mslugxce
+mslugxeb
+mslugxeh
+mslugxeh1
+mslugxex
+mslugxfe
+mslugxfr
+mslugxfro
+mslugxhp
+mslugxit
+mslugxjdkj
+mslugxmfb
+mslugxres
+mslugxsef
+mslugxsvb
+mslugxp
+mslugxr
+mslugxst
+mslug3d
+mslug3eha
+mslug3ehs
+mslug3e02
+mslug3e03
+mslug3e04
+mslug3e05
+mslug3e06
+mslug3e07
+mslug3e08
+mslug3e09
+mslug3e10
+mslug3e11
+mslug3e12
+mslug3e13
+mslug3e14
+mslug3e15
+mslug3e16
+mslug3e17
+mslug3e18
+mslug3e19
+mslug3e20
+mslug3e21
+mslug3e22
+mslug3eb
+mslug3fr
+mslug3fro
+mslug3hev
+mslug3kh
+mslug3kho
+mslug3nd
+mslug3v /* EEZEZY Violence Edition */
+mslug4d
+mslug4dh /* Super D version */
+mslug4dh1
+mslug4eh
+mslug4eh2
+mslug4eh3
+mslug4eh4
+mslug4eh5
+mslug4eh6
+mslug4eho
+mslug4fr
+mslug4i
+mslug4i1
+mslug4kh
+//mslug4lw // not working - p roms are encrypted
+mslug4nd
+mslug4sp
+mslug5b
+mslug5d
+mslug5d1
+mslug5f
+mslug5fr
+mslug5fr1
+//mslug5fu // not working - p roms are encrypted
+mslug5hd
+mslug5l9a
+mslug5l9b
+mslug5lvf
+mslug5lvnc
+mslug5nd
+mslug5w
+ms5boot
+ms5pcbd
+ms5sp
+
+ /* mspacman */
+mspacman //parent
+chtmsatk /* PacMAME Hacks */
+chtmspa /* PacMAME Hacks */
+cookiem
+cottoh /* Gatinho hack of mspacman, to simulate what Crazy Otto might have been like */
+cottoh2 /* Gatinho hack of mspacman, to simulate what Crazy Otto might have been like */
+fasthang
+fastpuck
+fasthear /* PacMAME Hacks */
+fastmspa /* PacMAME Hacks */
+fastpop
+faststrm /* PacMAME Hacks */
+fstmsatk /* PacMAME Hacks */
+fstpman2
+heartbn2 /* PacMAME Hacks */
+heartbrn /* unknown hack of Ms. Pac-Man */
+horizpab /* Jerronimo v1.0 2004 */
+horizpac /* Jerronimo */
+mrmrspac
+mrpacman
+ms1000 /* Blue Justice */
+ms2000 /* Blue Justice */
+ms2600 /* T-Bone hack of Ms. Pac-Man */
+ms3000 /* Blue Justice */
+ms4000p /* Blue Justice */
+ms5000 /* Blue Justice */
+ms5000p /* Blue Justice */
+msatk2ad /* PacMAME Hacks */
+msatkad
+msbaby /* T-Bone hack */
+msberzk /* Bobby Tribble hack of Ms. Pac-Man */
+mscrzyma /* Blue Justice */
+mscrzymp /* Blue Justice */
+msdroid /* Grendal74 */
+msdstorm /* Mike Naylor hack of Ms. Pac-Man */
+mselton /* Sil hack of Ms. Pac-Man */
+msextra /* Blue Justice */
+msextrap /* Blue Justice */
+msf1pac /* Sil hack of Ms. Pac-Man */
+msgrkatk /* Grendal74 */
+msgrkb /* Grendal74 */
+mshangly /* PacMAME Hacks */
+mshearts /* PacMAME Hacks */
+msheartb
+msindy /* Sil hack of Ms. Pac-Man */
+msmini /* T-Bone hack of Ms. Pac-Man */
+msminia /* T-Bone hack of Ms. Pac-Man */
+msmspac /* Blue Justice */
+msnes4a /* T-Bone hack of Ms. Pac-Man */
+msnes62 /* T-Bone hack of Ms. Pac-Man */
+msnes63 /* T-Bone hack of Ms. Pac-Man */
+msnes6m /* T-Bone hack of Ms. Pac-Man */
+msnes6m2 /* T-Bone hack of Ms. Pac-Man */
+msnes6m3 /* T-Bone hack of Ms. Pac-Man */
+msnes6m4 /* T-Bone hack of Ms. Pac-Man */
+mspac1 /* from Greekmame 0.87 */
+mspac6m /* Sil hack of Ms. Pac-Man */
+mspac6m2 /* Sil hack of Ms. Pac-Man (fixed) */
+mspacad /* Sil hack of Ms. Pac-Man */
+mspacat2 /* Sil hack of Miss Pac Plus */
+mspacatb
+mspacde
+mspacdel /* Blue Justice */
+mspacfnt
+mspachi
+mspacii
+mspacit
+mspacit2
+mspacj
+mspacmap /* Don Hodges patch to fix various bugs in mspacmab */
+mspacmbg
+mspacnes /* T-Bone hack of Ms. Pac-Man */
+mspacp /* Blue Justice */
+mspacpbl /* Dav/PMP bootleg */
+mspacren /* T-Bone hack of Ms. Pac-Man */
+mspacrip /* R3mer hack of Ms. Pac-Man */
+mspacsup /* Super Ms. Pac-Man */
+mspacwf /* Tim Appleton - Ms. PacMan Weird Fruit */
+mspamsba /* Blue Justice */
+mspc6mad /* T-Bone hack of Ms. Pac-Man */
+msplus /* Blue Justice 20010824 */
+msrumble
+mssilad /* PacMAME Hacks */
+msstrmaz /* Blue Justice */
+msultra
+msvctr6m /* T-Bone hack of Ms. Pac-Man */
+msvectr /* PacMAME Hacks */
+msyakman /* PacMAME Hacks */
+ottop1
+ottop2
+ottop3
+ottopz
+pacatk /* Widel's Games */
+pacgalu
+pacgent
+pacrab
+pacsnoop /* Jerronimo */
+petshop
+pheartb
+piranha2
+ramsnoop /* Jerronimo */
+sueworlb
+sueworld
+superp4g
+superp4m
+supmspac /* Spedic Vending bootleg */
+tinyworld
+vectratk /* Sil and T-Bone hack of Ms. Pac-Man */
+womanp5
+zolamaze
+zolaad /* PacMAME Hacks */
+zolaatk /* PacMAME Hacks */
+zolapac /* PacMAME Hacks */
+zolaslow /* PacMAME Hacks */
+zolatunl /* PacMAME Hacks */
+zolavect /* PacMAME Hacks */
+ /* "Pacman hardware" games (hires hacks) */
+mschampx
+mspacmnx
+mspacmfx
+mspacatx
+mspacmbx
+mspacplx
+pacgalx
+
+ /* multipac */
+96in1 /* Widel's Games */
+96in1a /* Widel's Games */
+96in1b /* Widel's Games */
+96in1c /* Widel's Games */
+hackypac /* Widel's Games */
+madpac /* Widel's Games */
+multi10 /* bootleg */
+multi11 /* bootleg */
+multi13 /* bootleg */
+multi14 /* bootleg */
+multi15 /* bootleg */
+mspaceur
+pm4n1
+pm4n1a
+pm4n1b
+pm4n1c
+pm4n1d
+pm4n1e
+superabc
+superabco
+
+ /* nemesis */
+salamand //parent
+spclone // v0.7.3
+spcloneo // v0.7.2.2
+
+ /* neogeo */
+// These are the parents of our hacks
+neogeo
+2020bb // 030
+3countb // 043
+alpham2 // 007
+androdun // 049
+//aodk // 074 not needed
+aof // 044
+aof2 // 056
+aof3 // 096
+b2b // 071
+bakatono // 036
+bangbead // 259
+bjourney // 022
+//blazstar // 239 not needed
+breakers // 230
+breakrev // 245
+bstars // 002
+//bstars2 // 041 not needed
+burningf // 018
+crsword // 037
+crswd2bl // 054
+ctomaday // 249
+cyberlip // 010
+doubledr // 082
+eightman // 025
+fatfury1 // 033
+fatfury2 // 047
+fatfury3 // 069
+fatfursp // 058
+fbfrenzy // 034
+fightfev // 060
+flipshot // 247
+galaxyfg // 078
+ganryu // 252
+garou // 253
+ghostlop // 228
+//goalx3 // 209 not needed
+gowcaizr // 094
+gpilots // 020
+//gururin // 067 not needed
+ironclad // 220
+//irrmaze // 236 not needed
+//janshin // 048 not needed
+jockeygp // 331
+joyjoy // 021
+kabukikl // 092
+karnovr // 066
+kizuna // 216
+kof94 // 055
+kof95 // 084
+kof96 // 214
+kof97 // 232
+kof98 // 242
+kof99 // 251
+kof2000 // 257
+kof2001 // 262
+kof2002 // 265
+kof2003 // 271
+kf2k3pcb
+kotm // 016
+//kotm2 // 039 not needed
+lastblad // 234
+lastbld2 // 243
+lasthope // 802
+lbowling // 019
+//legendos // 029 not needed
+lresort // 024
+//magdrop2 // 221 not needed
+magdrop3 // 233
+maglord // 005
+//mahretsu // 004 not needed
+//marukodq // 206 not needed
+matrim // 266
+miexchng // 231
+minasan // 027
+mosyougi // 203
+ms5pcb
+mslug // 201
+mslug2 // 241
+mslugx // 250
+mslug3 // 256
+mslug4 // 263
+mslug5 // 268
+mutnat // 014
+nam1975 // 001
+ncombat // 009
+ncommand // 050
+//neobombe // 093 not needed
+neocup98 // 244
+//neodrift // 213 not needed
+//neomrdo // 207 not needed
+ninjamas // 217
+nitd // 260
+overtop // 212
+//panicbom // 073 not needed
+//pbobbl2n // 248 not needed
+pbobblen // 083
+//pgoal // 219 not needed
+pnyaa // 267
+//popbounc // 237 not needed
+preisle2 // 255
+//pspikes2 // 068 not needed
+//pulstar // 089
+puzzledp // 202
+puzzldpr // 235
+//quizdais // 023 not needed
+//quizdai2 // 042 not needed
+//quizkof // 080 not needed
+ragnagrd // 218
+rbff1 // 095
+rbff2 // 240
+rbffspec // 223
+ridhero // 006
+roboarmy // 032
+rotd // 264
+s1945p // 254
+samsho // 045
+samsho2 // 063
+samsho3 // 087
+samsho4 // 222
+samsho5 // 270
+samsh5sp // 272
+savagere // 059
+//sbp // 338 not working
+sdodgeb // 208
+sengoku // 017
+sengoku2 // 040
+sengoku3 // 261
+shocktr2 // 246
+shocktro // 238
+socbrawl // 031
+sonicwi2 // 075
+sonicwi3 // 097
+spinmast // 062
+ssideki // 052
+//ssideki2 // 061 not needed
+//ssideki3 // 081 not needed
+//ssideki4 // 215 not needed
+//stakwin // 088 not needed
+//stakwin2 // 227 not needed
+strhoop // 079
+superspy // 011
+svc // 269
+svcpcb
+tophuntr // 046
+tpgolf // 003
+trally // 038
+//turfmast // 200 not needed
+twinspri // 224
+//tws96 // 086 not needed
+viewpoin // 051
+//vliner // 332 not needed
+wakuwak7 // 225
+wh1 // 053
+wh2 // 057
+wh2j // 064
+whp // 090
+wjammers // 065
+//zedblade // 076 not needed
+zintrckb // 211
+zupapa // 070
+
+ /* neogeohb */
+akiradmo
+beast /* 2002 (c) 1989 Psygnosis */
+cndi /* Chip n Dale Intro */
+cnbe
+cphd
+columnsn /* 2000 (c) 1990 Sega */
+columnsncd
+//csw2 //not working & roms missing
+didemo
+dti // Duck Tales Intro
+dwi /* DarkWing Duck Intro */
+ffeast // Frog Feast
+ffeastd // Frog Feast demo
+fr2 // 098 Idol Mahjong - final romance 2
+fr2cd /* 098 (c) 1995 Video Systems Co. */
+fr2ch /* 098 (c) 1995 Video Systems Co. */
+gbi /* Ghostbusters Intro */
+iocero // BEY
+knacki // KnackiBalls by Furrtek
+lhcdb /* 2007 (c) Last Hope CD beta */
+lhcdba
+//lhopecd //not working
+//lhopecdh // not working
+ltorb
+neo2500 /* Blastar */
+neo3d // Oxygene
+neobubble
+neocstlv // BarfHappy
+neodemo /* Charles Doty */
+neofight // Kannagi
+neofightb
+neofighto
+neogal1 // BEY
+neogal1d // BEY
+neogal1t // BEY
+neogal2 // BEY
+neonopon /* (c) 2002-10-05 Blastar */
+neonopon_d1 // unplayable demo
+neonopon_d2 // unplayable demo
+neonopon_d3 // unplayable demo
+neopong /* (c) 2002 Neodev */
+neoponga /* (c) 2002 Neodev */
+neoromjb // CeL
+neotest // BEY
+neothund // Sebastian Mihai
+ngem2k
+ngftdemo // CeL
+ngmontst
+ngtd2
+ngtetris
+nyan
+pcmademo // 2015 freem
+pcmbdemo // 2015 freem
+poknight /* 2003 (c) 200? JMK */
+poknightcd
+poknightfr
+rci /* Robocop intro */
+santabll
+smi /* Spiderman intro */
+snddemo // Sound-Loop Demo by Freem
+spriteex // furrtek Sprite Experimenter
+syscheck
+test01 // MVS Test 01 by Furrtek
+timesupd // CeL
+tmnti /* TMNT intro */
+totc // Treasure of the Caribbean
+twister // Blastar 2015
+ww2demo
+zintrckbh
+zintrkcd /* 211 (c) 1996 ADK / SNK */
+zintrkcd1
+zintrkm
+
+ /* neogeo1 */
+2020bbcd
+androdunpx
+aofbh
+aof2b
+aof2b1
+aof2bh
+aof2br2
+aof3b
+aof3bh
+bangbeadp
+bjourneypx
+breakersbh
+breakersp
+breakersy
+breakrevb
+breakrevpp
+breakrevy
+burningfhp
+ctomadaypx
+dragons1
+eightmaneb
+fightfevbs
+fightfevk
+flipshotk
+galaxyfgb
+galaxyfgbh
+ganryud
+gowcaizrb
+gowcaizrbs
+gowcaizrrv
+gowcaizry
+gpilotscd
+gpilotse
+gpilotspx
+ironcladb
+//ironcladcd // not working
+jockeygpd
+joyjoycd
+joyjoycd1
+kabukiklb
+kabukikleh
+kabukiklgm
+kabukiklgmc
+kabukiklmc
+kabukiklyc
+karnovreh
+kizunab
+kizunaeh
+lans2k4d
+lbowlingcd
+lresortpx
+magdrop3fr /* Neo-Arc French Trans */
+maglordpx
+matrima
+matrimbh
+matrimd
+matrimdh
+matrimeh
+matrimehc
+matrimnd
+miexchngfr /* Neo-Arc French Trans */
+mutnatex
+nam1975g
+nam1975h
+ncombatpk
+ncommandsp
+neocup98k
+ninjamasasp
+ninjamaschl
+ninjamaseh
+ninjamasehc
+ninjamasehyc
+ninjamasha
+ninjamashb
+nitdd
+nitdfr /* Neo-Arc French Trans */
+nitdfro /* Neo-Arc French Trans */
+nitdfro1
+nitdpx
+nitdsp
+nitdsp1 // Spanish.Rev2
+nitdsp2
+pbcrazyb1
+pbcrazyb2
+pbobblenba
+pbobblencd
+pbobblendx
+pnyaad
+preisle2d
+preisle2px
+//pspikes2cd // not working
+ragnagrdbe
+ragnagrdbs
+ragnagrdeh
+ragnagrdsb
+s1945pd
+s1945peh
+s1945ph
+s1945pwe
+savagereb
+savageredb
+sdodgebp
+shocktr2px
+shocktr2w
+shocktrosp
+sonicwi2eh
+sonicwi2px
+sonicwi3eh
+sonicwi3h
+sonicwi3px
+spinmasth
+spinmastpx
+ssidekicd
+strhoopcd
+superspycd
+tophuntrpx
+tpgolfcd
+trallycd
+twinsprih
+viewpoinf
+viewpointr
+wakuwak7bh
+wakuwak7h
+wjammersf
+wjammersk
+zupapad
+//diggerma duplicate name, to check
+
+
+ /* ngdoubledr */
+dbdehy
+dbdy
+dbdeh
+dbdq
+dbdqb
+dbdqp
+dbdqeh
+doubledre2
+doubledres
+doubledrhp
+//doubledrsp //protection issues
+
+ /* nggaroup */
+garoub
+garoud
+garoupamu
+garoupeh
+garoupehc
+garoupy
+garoupf
+garoupfu
+garoupfp
+garoupx11
+garoupy1
+
+ /* ngkofmisc */
+cthd2k3b
+//cthd2k3a // not working, "not responding"
+ct2k3eh
+ct2k3ifz
+ct2k3k3
+ct2k3k3o
+ct2k3spi
+ct2k3xx
+ct2k3ys
+//ct2k3ad
+//ct2k3spd
+//cthd2k3a
+//cthd2k3d
+kof2k4mp
+kof2k4omg
+kof2k4ru // no sound in attract mode
+kof2k4se1
+kof2k4se2
+//kof2k4pls
+kof2k4seb
+kof2k4spl
+kof2k8uni
+//kof10thbr
+//kof10thd
+//kof10thd16 // not working, p1 needs unscrambling
+kof10thep15
+kof10thu
+kof10thub
+kof10thud
+kogd
+kogf
+koggv
+kogmxpls
+kogplus
+kogplus1
+kogplusf
+kogsm
+
+ /* nglastblade */
+lba
+lbb
+lbd
+lbe
+lbboss
+lbeh
+lbeh2
+lbeho
+lbha
+lbseh
+lbsk
+lby
+lb2a
+lb2b
+lb2bh
+lb2bhd
+lb2easy
+lb2ed
+lb2ebd
+lb2eh
+lb2eh2
+lb2eho
+lb2ehu
+lb2pl
+lb2te
+lb2uh
+lb2wh
+lb2yd
+
+ /* ngrbff */
+fatfury2b
+fatfury3b
+fatfury3bd
+fatfury3bh
+fatfury3eh
+fatfurspb
+fatfurspbs
+fatfurspbt
+fatfurspeh
+rbff1ud
+rbffsehd
+rbffsb
+rbffseh
+rbffspecbs
+rbffspy
+rbffspbd
+rbffsud
+rbff2b
+rbff2bh
+rbff2eh
+rbff2ehc
+rbff2eh2
+rbff2eho
+rbff2fc
+rbff2ud
+rbff2y
+
+ /* ngrotd */
+rotdb
+rotdb1
+rotdbh
+rotdbr
+rotdbr1
+rotdbr2
+rotdbr2d
+rotdcre
+rotdcreb
+rotdd
+rotddh
+rotdeh
+rotdehc
+rotdfw
+rotdfy
+rotdh2b
+rotdhab
+rotdhab1
+rotdhar
+rotdhfw
+rotdhfwb
+rotdnd
+rotdyc
+
+ /* ngsamsho */
+fswordsb1
+fswordsb2
+fswordsbf
+samshob
+samshoeh
+samshoeh2
+samshos1
+samshozk
+samsho2eh
+samsho2emb
+samsho2hy
+samsho2mb
+samsho2q
+samsho2s2
+samsho2sp
+samsho2sp2
+samsho2sp3
+samsho2sp4
+samsho2sq
+samsho2ss
+samsho2yc
+samsho2zk
+samsho3eh
+samsho3hb
+samsho3s2
+samsho3se
+samsho3ss
+samsho3yc
+samsho3zk
+samsho4bh
+samsho4cz
+samsho4eh
+samsho4es
+samsho4ev
+samsho4ew
+samsho4fc
+samsho4kw
+samsho4kz
+samsho4mb
+samsho4pm
+samsho4ps
+samsho4s2
+samsho4wh
+samsho4zk
+samsho5ba
+samsho5bd
+samsho5bh
+samsho5bs
+samsho5ch
+samsho5d
+samsho5d1
+samsho5ge
+samsho5hd
+samsho5s2
+samsho5x
+samsho5zk
+samsh5spd
+samsh5spd1
+samsh5spd2
+samsh5sph1
+samsh5spha
+samsh5sphb
+samsh5sphc
+samsh5sphd
+samsh5spn
+samsh5spnd
+samsh5spnh3
+samsh5spnzk
+
+ /* ngsengoku */
+sengokucd
+sengoku3b
+sengoku3c
+sengoku3d
+sengoku3eb
+sengoku3eh
+sengoku3ha
+sengoku3k
+sengoku3kc
+sengoku3p
+sengoku3pl
+sengoku3s
+sengoku3ya
+sengoku3yk
+
+ /* ngsvc */
+svccprw
+svcd
+svcd1
+svcee
+svcesv
+svcg
+svch
+svch2
+svcice
+svclspc
+svcnd
+svcnh
+svcpcbd
+svcplusa2016
+svcplusb
+svcplusd
+svcplusg
+svcplusp
+svcplusp2
+svcpryu
+svcps2
+svcrm
+svcryu
+svcspjoy
+svcsplus2016
+svcspryu
+svcstdse
+svcxlb
+
+ /* ngwh */
+whpb
+whpb2
+whpbh
+whpbho
+whpbho2
+whpeh
+whpeho
+whphez
+whpsp
+whpss
+wh1bs
+wh2bs
+wh2ey
+wh2ja
+wh2jb
+
+ /* nmk16 */
+//tdragon //parent
+//tdragonp // trap15 - not working
+tdragon2 //parent
+tdragon2p // trap15
+
+ /* pacland */
+pacland //parent
+mariopac
+paclandb
+paclandd /* Blue Justice */
+
+ /* pacman */
+abortman /* Paul C Copeland hack of Puckman */
+baby2 /* T-Bone hack */
+baby3 /* T-Bone hack */
+baby4 /* T-Bone hack */
+brakman /* Jerry Lawrence hack of Pac-Man (Midway) */
+bucaneer /* PacMAME Hacks */
+caterpil
+chtpac
+chtpac3d
+chtpman2
+chtpop
+chtpuck
+crazypac
+dizzy
+eltonpac /* Sil hack of Pac-Man (Midway) */
+europac /* Stefano 'Jojo' Priore hack of Pac-Man (Midway) */
+fpnleash
+hanglyad
+hmhearts /* hack */
+hearts
+hellowp // cmonkey UKVAC
+hm1000 /* Blue Justice */
+hm2000 /* Blue Justice */
+hmba5000 /* Blue Justice */
+hmba7000 /* Blue Justice */
+hmbabymz /* Blue Justice */
+hmbluep /* Blue Justice */
+hmgrenp /* Blue Justice */
+hmpopey /* */
+hmplus /* Blue Justice */
+homercid /* David Widel */
+jacman
+jpmmunch /* JPM bootleg */
+mazeman /* Sil hack of Pac-Man */
+namcosil /* Sil hack of Pac-Man (Namco) */
+newpuck2 /* Scotty hack of Pac-Man */
+newpuck3
+nwpuc2b
+pac2600 /* Bobby Tribble hack of Pac-Man (Midway) */
+pac2600a
+pacbaby
+pacbaby2
+pacbaby3
+pacbell
+pacelec
+pacfnt
+pacinvis
+pacjail
+pacjr1
+pacjr2
+pacjr3
+pacjr4
+pacm255 /* Mark Spaeth patch for level 256 */
+pacman25 /* Jerronimo v1.0 2004 */
+pacman3d /* Sil hack of Pac-Man (Midway) */
+pacman6
+pacmanp /* Don Hodges patch for level 256 */
+pacmar /* PacMAME Hacks */
+pacminer
+pacmini /* Bobby Tribble hack of Pac-Man (Midway) */
+pacmini2 /* Bobby Tribble hack of Pac-Man (Midway) */
+pacmn6m2
+pacms1
+pacms2
+pacms3
+pacms4
+pacmsa1
+pacmsa2
+pacmsa3
+pacmsa4
+pacmulti
+puck255
+pacplusc
+pacpopey /* unknown hack of Pac-Man (Namco) */
+pacshuf
+pacspeed
+pacweird
+pacwf /* Tim Appleton - Weird Fruit */
+pcrunchy
+pengman /* Jerry Lawrence hack of Pac-Man (Midway) */
+pm1000 /* Blue Justice */
+pm2000 /* Blue Justice */
+pm3000 /* Blue Justice */
+pm4000p /* Blue Justice */
+pm5000p /* Blue Justice */
+pm6000 /* Blue Justice */
+pm7000 /* Blue Justice */
+pm7000p /* Blue Justice */
+pmad /* SirScotty and Sil hack of Pac-Man (Midway) */
+pmad00
+pmad6m /* T-Bone hack */
+pmada
+pmba2000 /* Blue Justice */
+pmba3000 /* Blue Justice */
+pmba4000 /* Blue Justice */
+pmba6000 /* Blue Justice */
+pmba8000 /* Blue Justice */
+pmbamaz /* Blue Justice */
+pmbaplus /* Blue Justice */
+pmbluep /* Blue Justice */
+pmdeluxe /* Blue Justice */
+pmextra /* Blue Justice */
+pmextrap /* Blue Justice */
+pmfever /* Blue Justice */
+pmgrenp /* Blue Justice */
+pmheart
+newpuc1 /* Italian dump */
+pplusad
+puckman //our parent (not same as mame)
+puckmano
+puckmoti
+puckmot1
+puckren
+puckrenc
+punleash
+roboman
+snakeyes /* T-Bone hack */
+snowpac /* T-Bone hack */
+spuckman
+sumeltob
+sumelton
+tbone /* T-Bone hack */
+ultra2 /* PacMAME Hacks */
+ultrapac
+vcrunchy
+vecbaby
+vecbaby2
+vecbaby3
+vecpac /* T-Bone hack of Pac-Man (Midway) */
+vectplus
+vectr6m /* T-Bone hack */
+vectr6tb /* T-Bone hack */
+vectxens
+vhangly
+vhangly3
+vpacbell
+vpacelec
+vpacjail
+vpacms1
+vpacms2
+vpacms3
+vpacms4
+vpacmsa1
+vpacmsa2
+vpacmsa3
+vpacmsa4
+vpacshuf
+vpspeed
+xensad
+xensrev
+ /* "Pacman hardware" games (hires hacks) */
+puckmanx
+puckmnax
+puckmnfx
+puckmnhx
+pacmanx
+pacmanfx
+puckmodx
+pacmodx
+newpuc2x
+nwpuc2bx
+nwpuckxx
+hanglyx
+hangly2x
+hangly3x
+pacplusx
+pheartx
+
+ /* pcktgal */
+pcktgal //parent
+pckgalgr /* Vag @ GreekRoms */
+pcktgalk /* Korean Translation */
+
+ /* pengo */
+pengo //parent
+pacpen
+pengopop
+vecpengo /* T-Bone hack of Pengo */
+alpacap7 /* "Jerronimo", "Alpaca v0.7 (Pengo Hardware) useless */
+alpacap8 /* "Jerronimo", "Alpaca v0.8 (Pengo Hardware) useless */
+
+ /* pgm */
+pgm //required bios
+ket
+//kov //parent
+//kov2 //parent
+kovplus
+kovsh
+kov2p
+pgemeni /* Blastar */
+pgmdemo /* Charles Doty */
+pgmfrog /* Rastersoft */
+ketarr // trap15 hack
+ketarrb // trap15 hack
+ketarr10 // trap15 hack
+ketarr15 // trap15 hack
+ketarr151 // trap15 hack
+ketarrf // trap15 hack
+ketarrs15 // trap15 hack
+ketarrs151 // trap15 hack
+orlegend //parent
+orlegendcs
+orlegendh
+//kovassg
+//kovdf
+kovsgqyzc // similar to kovsgqyza
+kov2h1
+kov2h2
+kov2h3
+kov2h4
+kov2h5 // was kov2psv
+kovph1
+kovph2
+kovph3
+kovph4
+kovph5
+kovph6
+//kovph7
+kovph8
+//kovph9
+//kovph10
+kovph11
+kovph12
+kovph13
+kovph14
+kovph15
+//kovph16
+kovph17
+kovph18
+//kovph19
+//kovph20
+//kovph21
+//kovph22
+//kovph23
+kovph24 // was kvplusjq
+kovph25 // was kovplusq
+kovsh1
+kovsh2
+kovsh3
+//kovsh4 // all of these are encrypted, not working
+//kovsh5
+//kovsh6
+//kovsh7
+//kovsh8
+//kovsh9
+//kovsh10
+//kovsh11
+//kovsh12
+//kovsh13
+//kovsh14
+//kovsh15
+//kovsh16
+//kovsh17
+kovsh18 // gem fighters
+kovsh19 // rugal 98
+
+ /* phoenix */
+phoenix //parent
+phoenixg /* Vag @ GreekRoms */
+phoenixr /* CYBERYOGI =CO= Windler hack of Phoenix */
+
+ /* playch10 */
+playch10 //bios
+pc_bb2 /* NES->PC-10 */
+pc_ctfrc /* NES->PC-10 */
+pc_digdg /* NES->PC-10 */
+pc_krsty /* NES->PC-10 */
+pc_mman5 /* NES->PC-10 */
+pc_parsl /* NES->PC-10 */
+pc_ark /* NES->PC-10 */
+pc_dk3 /* NES->PC-10 */
+pc_galag /* NES->PC-10 */
+pc_cch /* NES->PC-10 */
+pc_dk /* NES->PC-10 */
+pc_pacm /* NES->PC-10 */
+pc_gyrus /* NES->PC-10 */
+pc_skykd /* NES->PC-10 */
+
+ /* powerins */
+powerins //parent
+powernbr // Brazil translation
+
+ /* psikyosh */
+s1945ii //parent
+s1945iiex
+s1945iii //parent
+s1945sr3
+
+ /* rallyx */
+rallyx //parent
+rxtron /* Jerky and Sil hack of Rally-X */
+nrallyv /* New Rally-X (vertical) */
+
+ /* rastan */
+rastan //parent
+rastandh /* Neil Pearce Hack */
+rastand2 /* Neil Pearce Hack */
+rastaneh /* Neil Pearce Hack */
+rastane2 /* Neil Pearce Hack */
+rastwack /* Vogel Hack */
+
+ /* retofinv */
+retofinv //parent
+retofinv4 /* Paul Smith hack */
+
+ /* schaser */
+schasrcv // extra sounds
+
+ /* segac2 */
+c2frog
+
+ /* segaorun */
+outrun //parent
+outrunen
+outrunen0
+outrunen1
+outrunen2
+
+ /* segag80r */
+astrob //parent
+astrob2h
+
+ /* segas16b */
+//altbeast //parent
+//altbeastfr // french - Arkatrad - not working
+
+ /* shaolins */
+kicker //parent
+kfjohnny /* hack by Smitdogg*/
+
+ /* skimaxx */
+skimaxx // Kyle Hodgetts
+
+ /* snk6502 */
+vantris /* (c) 1998 Norbert Kehrer */
+
+ /* simple_st0016 */
+renju //parent
+renjuk /* Korean Translation */
+
+ /* spacmiss */
+spacmissx // extra sounds
+
+ /* system1 */
+wbml //parent
+wbmlbit /* Italian Translation */
+wbmlkb /* Korean Translation */
+
+ /* system16 */
+sys16dem // Charles Doty
+
+ /* taito_b */
+pbobble //parent
+bubbleb /* pbobble USA Region Hack */
+
+ /* taito_f2 */
+f2demo /* Charles Doty */
+
+ /* taito_f3 */
+cleopatr //parent
+dariusg //parent
+gekiridn //parent
+landmakr //parent
+pbobble2 //parent
+cleopath
+driusgxh
+//f3demo /* Antiriad (a demo made for Raine, not tested on real hardware) - not working */
+gekiridh
+gekiridoc
+landmakh
+pbobl2xh
+
+ /* taito_l */
+evilston //parent
+evilstonfr // French
+sokoban // Sokoban LE by cmonkey
+speccies // Speccies 2 by Sokurah
+tldemo // cmonkey
+tldemo2 // cmonkey
+
+ /* tecmo */
+gemini //parent
+geminit /* Twisty Hack */
+rygar //parent
+rygark /* Korean Translation */
+
+ /* tecmo16 */
+fstarfrc //parent
+fstarfrcc
+
+ /* tehkanwc */
+tehkanwc //parent
+ballonwc
+tehkangc
+tankwc
+twc_gr /* Vag @ GreekRoms */
+
+ /* tempest */
+tempest //parent
+tempall
+temped /* Tempest TempEd Hack */
+tempestm
+temptwst /* Twisty Hack */
+tmptwsta /* Twisty Hack 2000 */
+tmptwst2 /* Twisty Hack */
+tmptwst3 /* Twisty Hack */
+tmptwst4 /* Twisty Hack */
+vbrakout /* Clay Cowgill */
+tempmg /* Clay Cowgill Multi-Tempest */
+temptlm
+tvortex /* Tempest Prototype */
+tvortexa /* Tempest Prototype */
+aliensv /* Tempest Prototype */
+aliensva /* Tempest Prototype */
+
+ /* terracre */
+terracre //parent
+terracrc
+
+ /* timelimit */
+timelimt //parent
+timelimit // dink colour hack
+
+ /* tmnt */
+ssriders //parent
+ssridersaex
+
+ /* toaplan1 */
+fireshrk //parent
+samesamenh // Trap15
+
+ /* toaplan2 */
+kingdmgp //parent
+kgpe /* Neill Corlett hack */
+sstriker //parent
+mahoudcn
+batsugun //parent
+batsugunt
+bgaregga //parent
+bgareggz
+
+ /* trackfld */
+trackfld //parent
+athens04 /* Athens 2004 - Hack by The Gameland Crew (http://www.gameland.gr): Maddog, Whacker, Badge, Geoanas */
+tst_trkfld
+
+ /* twincobr */
+twincobr //parent
+twincbu2
+twintwst
+
+ /* volfied */
+volfied //parent
+volfiedg /* Vag @ GreekRoms 2005 */
+
+ /* vsnes */
+suprmrio //parent
+mrio2002 /* Vs. Super Mario Bros. 2002 */
+suprsktr /* Vs. Super Skater Bros. - Vs. Super Mario Skaters */
+
+ /* wc90 */
+pac90
+
+ /* williams */
+defender //parent
+defender2
+robotron //parent
+robotron201 // start at level 201 (Sean Riddle)
+robotronp /* Patched to remove the 'in the corner' crash */
+robotrontie // Tie Die set (Vid Kidz)
+splat //parent
+splatsc1
+
+ /* wmg */
+wmg
+
+ /* yiear */
+yiear //parent
+nacho /* Gatinho - Nacho Libre */
+
diff --git a/docs/release/src/hbmame/hbmame.mak b/docs/release/src/hbmame/hbmame.mak
new file mode 100644
index 00000000000..559272f373c
--- /dev/null
+++ b/docs/release/src/hbmame/hbmame.mak
@@ -0,0 +1,62 @@
+# license:BSD-3-Clause
+# copyright-holders:Robbbert
+###########################################################################
+#
+# makefile
+#
+# Additional makefile for building HBMAME
+#
+###########################################################################
+
+GEN_FOLDERS += $(GENDIR)/mame/layout/
+
+# MAME layouts that we use
+LAYOUTS += \
+ $(SRC)/mame/layout/dotrikun.lay \
+ $(SRC)/hbmame/layout/spacmissx.lay
+# $(SRC)/mame/layout/atari_s1.lay
+
+# MAME layouts that are needed for compile to succeed, not used by HBMAME
+LAYOUTS += \
+ $(SRC)/mame/layout/gorf.lay \
+ $(SRC)/mame/layout/tenpindx.lay \
+ $(SRC)/mame/layout/spacezap.lay \
+ $(SRC)/mame/layout/seawolf2.lay \
+ $(SRC)/mame/layout/gridiron.lay \
+ $(SRC)/mame/layout/turbotag.lay \
+ $(SRC)/mame/layout/spyhunt.lay \
+ $(SRC)/mame/layout/dpoker.lay \
+ $(SRC)/mame/layout/astdelux.lay \
+ $(SRC)/mame/layout/outrun.lay \
+ $(SRC)/mame/layout/polepos.lay \
+ $(SRC)/mame/layout/topracer.lay \
+ $(SRC)/mame/layout/armora.lay \
+ $(SRC)/mame/layout/barrier.lay \
+ $(SRC)/mame/layout/demon.lay \
+ $(SRC)/mame/layout/solarq.lay \
+ $(SRC)/mame/layout/starcas.lay \
+ $(SRC)/mame/layout/sundance.lay \
+ $(SRC)/mame/layout/tailg.lay \
+ $(SRC)/mame/layout/wotw.lay \
+ $(SRC)/mame/layout/ppsatan.lay \
+ $(SRC)/mame/layout/konamigt.lay \
+ $(SRC)/mame/layout/sfiii2.lay \
+ $(SRC)/mame/layout/280zzzap.lay \
+ $(SRC)/mame/layout/attackfc.lay \
+ $(SRC)/mame/layout/clowns.lay \
+ $(SRC)/mame/layout/cosmicm.lay \
+ $(SRC)/mame/layout/escmars.lay \
+ $(SRC)/mame/layout/galactic.lay \
+ $(SRC)/mame/layout/gunchamp.lay \
+ $(SRC)/mame/layout/gunfight.lay \
+ $(SRC)/mame/layout/invad2ct.lay \
+ $(SRC)/mame/layout/invaders.lay \
+ $(SRC)/mame/layout/lagunar.lay \
+ $(SRC)/mame/layout/maze.lay \
+ $(SRC)/mame/layout/phantom2.lay \
+ $(SRC)/mame/layout/seawolf.lay \
+ $(SRC)/mame/layout/shuttlei.lay \
+ $(SRC)/mame/layout/spacecom.lay \
+ $(SRC)/mame/layout/spacwalk.lay \
+ $(SRC)/mame/layout/spcenctr.lay \
+
diff --git a/docs/release/src/hbmame/includes/cps1.h b/docs/release/src/hbmame/includes/cps1.h
new file mode 100644
index 00000000000..f12c48ccec3
--- /dev/null
+++ b/docs/release/src/hbmame/includes/cps1.h
@@ -0,0 +1,483 @@
+// license:BSD-3-Clause
+// copyright-holders:Paul Leaman
+/***************************************************************************
+
+ Capcom CPS1/2 hardware
+
+***************************************************************************/
+
+#ifndef _CPS1_H_
+#define _CPS1_H_
+
+#include "sound/msm5205.h"
+#include "sound/qsound.h"
+#include "sound/okim6295.h"
+#include "machine/gen_latch.h"
+#include "machine/timekpr.h"
+#include "cpu/m68000/m68000.h"
+#include "screen.h"
+#include "speaker.h"
+
+// Video raw params
+// measured clocks:
+// CPS2(Guru): V = 59.6376Hz, H = 15,4445kHz *H is probably measured too low!
+// CPS1 GNG: V = 59.61Hz
+/* CPS1(Charles MacDonald):
+ Pixel clock: 8.00 MHz
+ Total pixel clocks per scanline: 512 clocks
+ Horizontal sync pulse width : 36 clocks
+ Horizontal display and blanking period: 476 clocks
+ Frame size: 262 scanlines
+ Refresh rate: 59.63 MHz.
+*/
+#define CPS_PIXEL_CLOCK (XTAL_16MHz/2)
+
+#define CPS_HTOTAL (512)
+#define CPS_HBEND (64)
+#define CPS_HBSTART (448)
+
+#define CPS_VTOTAL (262)
+#define CPS_VBEND (16)
+#define CPS_VBSTART (240)
+
+
+struct gfx_range
+{
+ // start and end are as passed by the game (shift adjusted to be all
+ // in the same scale a 8x8 tiles): they don't necessarily match the
+ // position in ROM.
+ int type;
+ int start;
+ int end;
+ int bank;
+};
+
+struct CPS1config
+{
+ const char *name; /* game driver name */
+
+ /* Some games interrogate a couple of registers on bootup. */
+ /* These are CPS1 board B self test checks. They wander from game to */
+ /* game. */
+ int cpsb_addr; /* CPS board B test register address */
+ int cpsb_value; /* CPS board B test register expected value */
+
+ /* some games use as a protection check the ability to do 16-bit multiplies */
+ /* with a 32-bit result, by writing the factors to two ports and reading the */
+ /* result from two other ports. */
+ /* It looks like this feature was introduced with 3wonders (CPSB ID = 08xx) */
+ int mult_factor1;
+ int mult_factor2;
+ int mult_result_lo;
+ int mult_result_hi;
+
+ /* unknown registers which might be related to the multiply protection */
+ int unknown1;
+ int unknown2;
+ int unknown3;
+
+ int layer_control;
+ int priority[4];
+ int palette_control;
+
+ /* ideally, the layer enable masks should consist of only one bit, */
+ /* but in many cases it is unknown which bit is which. */
+ int layer_enable_mask[5];
+
+ /* these depend on the B-board model and PAL */
+ int bank_sizes[4];
+ const struct gfx_range *bank_mapper;
+
+ /* some C-boards have additional I/O for extra buttons/extra players */
+ int in2_addr;
+ int in3_addr;
+ int out2_addr;
+
+ int bootleg_kludge;
+};
+
+
+class cps_state : public driver_device
+{
+public:
+ cps_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_mainram(*this, "mainram"),
+ m_gfxram(*this, "gfxram"),
+ m_cps_a_regs(*this, "cps_a_regs"),
+ m_cps_b_regs(*this, "cps_b_regs"),
+ m_qsound_sharedram1(*this, "qsound_ram1"),
+ m_qsound_sharedram2(*this, "qsound_ram2"),
+ m_objram1(*this, "objram1"),
+ m_objram2(*this, "objram2"),
+ m_output(*this, "output"),
+ m_io_in0(*this, "IN0"),
+ m_io_in1(*this, "IN1"),
+ m_cps2_dial_type(0),
+ m_ecofghtr_dial_direction0(0),
+ m_ecofghtr_dial_direction1(0),
+ m_ecofghtr_dial_last0(0),
+ m_ecofghtr_dial_last1(0),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
+ m_oki(*this, "oki"),
+ m_m48t35(*this,"m48t35"),
+ m_msm_1(*this, "msm1"),
+ m_msm_2(*this, "msm2"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_soundlatch(*this, "soundlatch"),
+ m_soundlatch2(*this, "soundlatch2"),
+ m_decrypted_opcodes(*this, "decrypted_opcodes"),
+ m_region_key(*this, "key"),
+ m_region_stars(*this, "stars")
+ { }
+
+ // cps config for new
+ int m_cpsb_addr;
+ int m_cpsb_value;
+ int m_mult_factor1;
+ int m_mult_factor2;
+ int m_mult_result_lo;
+ int m_mult_result_hi;
+ int m_layer_control;
+ int m_priority[4];
+ int m_palette_control;
+ int m_layer_enable_mask[5];
+ int m_bank_sizes[4];
+ int m_in2_addr;
+ int m_in3_addr;
+ int m_out2_addr;
+ int m_bootleg_kludge;
+ u8 m_scrollx1;
+ u8 m_scrollx2;
+ u8 m_scrollx3;
+ u32 m_bank_type[32];
+
+ /* memory pointers */
+ // cps1
+ optional_shared_ptr<uint16_t> m_mainram;
+ required_shared_ptr<uint16_t> m_gfxram;
+ required_shared_ptr<uint16_t> m_cps_a_regs;
+ required_shared_ptr<uint16_t> m_cps_b_regs;
+ uint16_t * m_scroll1;
+ uint16_t * m_scroll2;
+ uint16_t * m_scroll3;
+ uint16_t * m_obj;
+ uint16_t * m_other;
+ std::unique_ptr<uint16_t[]> m_buffered_obj;
+ optional_shared_ptr<uint8_t> m_qsound_sharedram1;
+ optional_shared_ptr<uint8_t> m_qsound_sharedram2;
+ std::unique_ptr<uint8_t[]> m_decrypt_kabuki;
+ // cps2
+ optional_shared_ptr<uint16_t> m_objram1;
+ optional_shared_ptr<uint16_t> m_objram2;
+ optional_shared_ptr<uint16_t> m_output;
+
+ optional_ioport m_io_in0;
+ optional_ioport m_io_in1;
+ std::unique_ptr<uint16_t[]> m_cps2_buffered_obj;
+ // game-specific
+ std::unique_ptr<uint16_t[]> m_gigaman2_dummyqsound_ram;
+ uint16_t sf2ceblp_prot;
+
+ /* video-related */
+ tilemap_t *m_bg_tilemap[3];
+ int m_scanline1;
+ int m_scanline2;
+ int m_scancalls;
+
+ int m_scroll1x;
+ int m_scroll1y;
+ int m_scroll2x;
+ int m_scroll2y;
+ int m_scroll3x;
+ int m_scroll3y;
+
+ int m_stars_enabled[2]; /* Layer enabled [Y/N] */
+ int m_stars1x;
+ int m_stars1y;
+ int m_stars2x;
+ int m_stars2y;
+ int m_last_sprite_offset; /* Offset of the last sprite */
+ int m_cps2_last_sprite_offset; /* Offset of the last sprite */
+ int m_pri_ctrl; /* Sprite layer priorities */
+ int m_objram_bank;
+
+ /* misc */
+ int m_dial[2]; // forgottn
+ int m_readpaddle; // pzloop2
+ int m_cps2networkpresent;
+ int m_cps2digitalvolumelevel;
+ int m_cps2disabledigitalvolume;
+ emu_timer *m_digital_volume_timer;
+ int m_cps2_dial_type;
+ int m_ecofghtr_dial_direction0;
+ int m_ecofghtr_dial_direction1;
+ int m_ecofghtr_dial_last0;
+ int m_ecofghtr_dial_last1;
+
+
+ /* fcrash sound hw */
+ int m_sample_buffer1;
+ int m_sample_buffer2;
+ int m_sample_select1;
+ int m_sample_select2;
+
+ /* video config (never changed after video_start) */
+ const struct CPS1config *m_game_config;
+ int m_scroll_size;
+ int m_obj_size;
+ int m_cps2_obj_size;
+ int m_other_size;
+ int m_palette_align;
+ int m_palette_size;
+ int m_stars_rom_size;
+ uint8_t m_empty_tile[32*32];
+ int m_cps_version;
+
+ /* fcrash video config */
+ uint8_t m_layer_enable_reg;
+ uint8_t m_layer_mask_reg[4];
+ int m_layer_scroll1x_offset;
+ int m_layer_scroll2x_offset;
+ int m_layer_scroll3x_offset;
+ int m_sprite_base;
+ int m_sprite_list_end_marker;
+ int m_sprite_x_offset;
+ std::unique_ptr<uint16_t[]> m_bootleg_sprite_ram;
+ std::unique_ptr<uint16_t[]> m_bootleg_work_ram;
+
+ /* devices */
+ required_device<m68000_base_device> m_maincpu;
+ optional_device<cpu_device> m_audiocpu;
+ optional_device<okim6295_device> m_oki;
+ optional_device<m48t35_device> m_m48t35;
+ optional_device<msm5205_device> m_msm_1; // fcrash
+ optional_device<msm5205_device> m_msm_2; // fcrash
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ optional_device<generic_latch_8_device> m_soundlatch;
+ optional_device<generic_latch_8_device> m_soundlatch2;
+ optional_shared_ptr<uint16_t> m_decrypted_opcodes;
+ optional_memory_region m_region_key;
+ optional_memory_region m_region_stars;
+
+ DECLARE_READ16_MEMBER(cps1_hack_dsw_r);
+ DECLARE_READ16_MEMBER(cps1_in1_r);
+ DECLARE_READ16_MEMBER(cps1_in2_r);
+ DECLARE_READ16_MEMBER(cps1_in3_r);
+ DECLARE_READ16_MEMBER(forgottn_dial_0_r);
+ DECLARE_READ16_MEMBER(forgottn_dial_1_r);
+ DECLARE_WRITE16_MEMBER(forgottn_dial_0_reset_w);
+ DECLARE_WRITE16_MEMBER(forgottn_dial_1_reset_w);
+ DECLARE_WRITE8_MEMBER(cps1_snd_bankswitch_w);
+ DECLARE_WRITE16_MEMBER(cps1_soundlatch_w);
+ DECLARE_WRITE16_MEMBER(cps1_soundlatch2_w);
+ DECLARE_WRITE16_MEMBER(cpsq_coinctrl2_w);
+ DECLARE_READ16_MEMBER(qsound_rom_r);
+ DECLARE_READ16_MEMBER(qsound_sharedram2_r);
+ DECLARE_WRITE16_MEMBER(qsound_sharedram2_w);
+ DECLARE_WRITE8_MEMBER(qsound_banksw_w);
+ DECLARE_READ16_MEMBER(sf2rb_prot_r);
+ DECLARE_READ16_MEMBER(sf2rb2_prot_r);
+ DECLARE_READ16_MEMBER(sf2dongb_prot_r);
+ DECLARE_READ16_MEMBER(sf2ceblp_prot_r);
+ DECLARE_WRITE16_MEMBER(sf2ceblp_prot_w);
+ DECLARE_READ16_MEMBER(cps1_dsw_r);
+ DECLARE_WRITE16_MEMBER(cps1_coinctrl_w);
+ DECLARE_READ16_MEMBER(qsound_sharedram1_r);
+ DECLARE_WRITE16_MEMBER(qsound_sharedram1_w);
+ DECLARE_READ16_MEMBER(ganbare_ram_r);
+ DECLARE_WRITE16_MEMBER(ganbare_ram_w);
+ DECLARE_WRITE16_MEMBER(cps1_cps_a_w);
+ DECLARE_READ16_MEMBER(cps1_cps_b_r);
+ DECLARE_WRITE16_MEMBER(cps1_cps_b_w);
+ DECLARE_WRITE16_MEMBER(cps1_gfxram_w);
+ DECLARE_WRITE16_MEMBER(cps2_objram_bank_w);
+ DECLARE_READ16_MEMBER(cps2_objram1_r);
+ DECLARE_READ16_MEMBER(cps2_objram2_r);
+ DECLARE_WRITE16_MEMBER(cps2_objram1_w);
+ DECLARE_WRITE16_MEMBER(cps2_objram2_w);
+ DECLARE_WRITE8_MEMBER(cps1_oki_pin7_w);
+ DECLARE_WRITE16_MEMBER(sf2m1_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2m3_layer_w);
+ DECLARE_READ16_MEMBER(dinohunt_sound_r);
+ DECLARE_DRIVER_INIT(sf2rb);
+ DECLARE_DRIVER_INIT(sf2rb2);
+ DECLARE_DRIVER_INIT(sf2thndr);
+ DECLARE_DRIVER_INIT(dinohunt);
+ DECLARE_DRIVER_INIT(forgottn);
+ DECLARE_DRIVER_INIT(sf2hack);
+ DECLARE_DRIVER_INIT(slammast);
+ DECLARE_DRIVER_INIT(pang3b);
+ DECLARE_DRIVER_INIT(pang3);
+ DECLARE_DRIVER_INIT(sf2ee);
+ DECLARE_DRIVER_INIT(sf2m8);
+ DECLARE_DRIVER_INIT(cps1);
+ DECLARE_DRIVER_INIT(dino);
+ DECLARE_DRIVER_INIT(punisher);
+ DECLARE_DRIVER_INIT(wof);
+ DECLARE_DRIVER_INIT(ganbare);
+ DECLARE_DRIVER_INIT(cps2_video);
+ DECLARE_DRIVER_INIT(cps2);
+ DECLARE_DRIVER_INIT(cps2nc);
+ DECLARE_DRIVER_INIT(cps2crypt);
+ DECLARE_DRIVER_INIT(ssf2tb);
+ DECLARE_DRIVER_INIT(pzloop2);
+ DECLARE_DRIVER_INIT(singbrd);
+ DECLARE_DRIVER_INIT(gigaman2);
+ DECLARE_DRIVER_INIT(ecofghtr);
+ DECLARE_DRIVER_INIT(sf2dongb);
+ DECLARE_DRIVER_INIT(sf2ceblp);
+ TILEMAP_MAPPER_MEMBER(tilemap0_scan);
+ TILEMAP_MAPPER_MEMBER(tilemap1_scan);
+ TILEMAP_MAPPER_MEMBER(tilemap2_scan);
+ TILE_GET_INFO_MEMBER(get_tile0_info);
+ TILE_GET_INFO_MEMBER(get_tile1_info);
+ TILE_GET_INFO_MEMBER(get_tile2_info);
+ DECLARE_MACHINE_START(cps1);
+ DECLARE_VIDEO_START(cps1);
+ DECLARE_MACHINE_START(common);
+ DECLARE_MACHINE_START(cps2);
+ DECLARE_VIDEO_START(cps2);
+ DECLARE_MACHINE_START(qsound);
+ DECLARE_MACHINE_START(ganbare);
+ DECLARE_MACHINE_RESET(cps);
+ DECLARE_VIDEO_START(cps);
+ DECLARE_MACHINE_START(sf2m1);
+ uint32_t screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank_cps1);
+ INTERRUPT_GEN_MEMBER(cps1_interrupt);
+ TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt);
+ TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt);
+ TIMER_CALLBACK_MEMBER(cps2_update_digital_volume);
+
+ void kabuki_setup(void (*decode)(uint8_t *src, uint8_t *dst));
+
+ /* fcrash handlers */
+ DECLARE_DRIVER_INIT(kodb);
+ DECLARE_DRIVER_INIT(cawingbl);
+ DECLARE_DRIVER_INIT(dinopic);
+ DECLARE_DRIVER_INIT(knightsb);
+ DECLARE_DRIVER_INIT(punipic);
+ DECLARE_DRIVER_INIT(punipic3);
+ DECLARE_DRIVER_INIT(sf2m1);
+ DECLARE_DRIVER_INIT(sf2mdt);
+ DECLARE_DRIVER_INIT(sf2mdta);
+ DECLARE_DRIVER_INIT(sf2mdtb);
+ DECLARE_DRIVER_INIT(sf2b);
+ DECLARE_DRIVER_INIT(slampic);
+ DECLARE_MACHINE_START(fcrash);
+ DECLARE_MACHINE_RESET(fcrash);
+ DECLARE_MACHINE_START(cawingbl);
+ DECLARE_MACHINE_START(dinopic);
+ DECLARE_MACHINE_START(knightsb);
+ DECLARE_MACHINE_START(kodb);
+ DECLARE_MACHINE_START(punipic);
+ DECLARE_MACHINE_START(sf2mdt);
+ DECLARE_MACHINE_START(slampic);
+ DECLARE_MACHINE_START(sgyxz);
+ DECLARE_WRITE16_MEMBER(cawingbl_soundlatch_w);
+ DECLARE_WRITE16_MEMBER(dinopic_layer_w);
+ DECLARE_WRITE16_MEMBER(dinopic_layer2_w);
+ DECLARE_WRITE16_MEMBER(knightsb_layer_w);
+ DECLARE_WRITE16_MEMBER(kodb_layer_w);
+ DECLARE_WRITE16_MEMBER(punipic_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2mdt_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2mdta_layer_w);
+ DECLARE_WRITE16_MEMBER(slampic_layer_w);
+ DECLARE_WRITE16_MEMBER(fcrash_soundlatch_w);
+ DECLARE_WRITE8_MEMBER(fcrash_snd_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(sf2mdt_snd_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(knightsb_snd_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(fcrash_msm5205_0_data_w);
+ DECLARE_WRITE8_MEMBER(fcrash_msm5205_1_data_w);
+ DECLARE_WRITE16_MEMBER(varthb_layer_w);
+ uint32_t screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void fcrash_update_transmasks();
+ void fcrash_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void fcrash_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask);
+ void fcrash_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer);
+ void fcrash_build_palette();
+
+
+ /* cps video */
+ inline uint16_t *cps1_base( int offset, int boundary );
+ void cps1_get_video_base();
+ void unshuffle(uint64_t *buf, int len);
+ void cps2_gfx_decode();
+ int gfxrom_bank_mapper(int type, int code);
+ void cps1_update_transmasks();
+ void cps1_build_palette(const uint16_t* const palette_base);
+ void cps1_find_last_sprite();
+ void cps1_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void cps2_find_last_sprite();
+ void cps2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks);
+ void cps1_render_stars(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void cps1_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask);
+ void cps1_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer);
+ void cps2_set_sprite_priorities();
+ void cps2_objram_latch();
+ uint16_t *cps2_objbase();
+
+
+ /* cps2 driver */
+ void init_digital_volume();
+ DECLARE_READ16_MEMBER(gigaman2_dummyqsound_r);
+ DECLARE_WRITE16_MEMBER(gigaman2_dummyqsound_w);
+ void gigaman2_gfx_reorder();
+ DECLARE_WRITE16_MEMBER(cps2_eeprom_port_w);
+ DECLARE_READ16_MEMBER(cps2_qsound_volume_r);
+ DECLARE_READ16_MEMBER(kludge_r);
+ DECLARE_READ16_MEMBER(joy_or_paddle_r);
+ DECLARE_READ16_MEMBER(joy_or_paddle_ecofghtr_r);
+ DECLARE_WRITE_LINE_MEMBER(m5205_int1);
+ DECLARE_WRITE_LINE_MEMBER(m5205_int2);
+// HBMAME start
+
+ DECLARE_WRITE16_MEMBER(dinoh_sound_command_w);
+ DECLARE_WRITE16_MEMBER(daimakb_layer_w);
+ DECLARE_WRITE16_MEMBER(daimakb_palctrl_w);
+ DECLARE_DRIVER_INIT(dinoeh);
+ DECLARE_DRIVER_INIT(dinoh);
+ DECLARE_DRIVER_INIT(dinoz);
+ DECLARE_DRIVER_INIT(dinohb);
+ DECLARE_DRIVER_INIT(punisherb);
+ DECLARE_DRIVER_INIT(sf2h9);
+ DECLARE_DRIVER_INIT(sf2h13);
+ DECLARE_DRIVER_INIT(sk2h1);
+ DECLARE_DRIVER_INIT(sk2h1q);
+ DECLARE_DRIVER_INIT(sk2h3);
+ DECLARE_DRIVER_INIT(sk2h21);
+ DECLARE_DRIVER_INIT(sk2h22);
+ DECLARE_DRIVER_INIT(sk2h31);
+ DECLARE_DRIVER_INIT(sk2h35);
+ DECLARE_DRIVER_INIT(wofb);
+ DECLARE_MACHINE_START(captcommb2);
+
+// HBMAME end
+};
+
+/*----------- defined in drivers/cps1.c -----------*/
+
+MACHINE_CONFIG_EXTERN(cps1_12MHz);
+
+ADDRESS_MAP_EXTERN( qsound_sub_map, 8 );
+
+GFXDECODE_EXTERN( cps1 );
+
+INPUT_PORTS_EXTERN( dino );
+INPUT_PORTS_EXTERN( knights );
+INPUT_PORTS_EXTERN( punisher );
+INPUT_PORTS_EXTERN( sf2 );
+INPUT_PORTS_EXTERN( slammast );
+INPUT_PORTS_EXTERN( varth );
+// HBMAME start
+INPUT_PORTS_EXTERN( captcomm );
+// HBMAME end
+
+
+#endif
diff --git a/docs/release/src/hbmame/includes/galaga.h b/docs/release/src/hbmame/includes/galaga.h
new file mode 100644
index 00000000000..028f5d4eb37
--- /dev/null
+++ b/docs/release/src/hbmame/includes/galaga.h
@@ -0,0 +1,21 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria
+#include "../mame/includes/galaga.h"
+#include "sound/samples.h"
+#include "machine/namco06.h"
+
+class galaga_hbmame : public galaga_state
+{
+public:
+ galaga_hbmame(const machine_config &mconfig, device_type type, const char *tag)
+ : galaga_state(mconfig, type, tag)
+ , m_samples(*this, "samples")
+ , m_06xx(*this, "06xx")
+ { }
+
+ DECLARE_WRITE8_MEMBER(galaga_sample_w);
+
+private:
+ optional_device<samples_device> m_samples;
+ optional_device<namco_06xx_device> m_06xx;
+};
diff --git a/docs/release/src/hbmame/includes/galaxian.h b/docs/release/src/hbmame/includes/galaxian.h
new file mode 100644
index 00000000000..cf686885bff
--- /dev/null
+++ b/docs/release/src/hbmame/includes/galaxian.h
@@ -0,0 +1,345 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Couriersud
+/***************************************************************************
+
+ Galaxian hardware family
+
+***************************************************************************/
+
+#include "machine/gen_latch.h"
+#include "machine/i8255.h"
+#include "sound/ay8910.h"
+#include "sound/dac.h"
+#include "sound/digitalk.h"
+#include "screen.h"
+
+/* we scale horizontally by 3 to render stars correctly */
+#define GALAXIAN_XSCALE 3
+
+/* master clocks */
+#define GALAXIAN_MASTER_CLOCK (18432000)
+#define GALAXIAN_PIXEL_CLOCK (GALAXIAN_XSCALE*GALAXIAN_MASTER_CLOCK/3)
+
+/* H counts from 128->511, HBLANK starts at 130 and ends at 250 */
+/* we normalize this here so that we count 0->383 with HBLANK */
+/* from 264-383 */
+#define GALAXIAN_HTOTAL (384*GALAXIAN_XSCALE)
+#define GALAXIAN_HBEND (0*GALAXIAN_XSCALE)
+//#define GALAXIAN_H0START (6*GALAXIAN_XSCALE)
+//#define GALAXIAN_HBSTART (264*GALAXIAN_XSCALE)
+#define GALAXIAN_H0START (0*GALAXIAN_XSCALE)
+#define GALAXIAN_HBSTART (256*GALAXIAN_XSCALE)
+
+#define GALAXIAN_VTOTAL (264)
+#define GALAXIAN_VBEND (16)
+#define GALAXIAN_VBSTART (224+16)
+
+
+class galaxian_state : public driver_device
+{
+public:
+ galaxian_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
+ m_audio2(*this, "audio2"),
+ m_dac(*this, "dac"),
+ m_ay8910_0(*this, "8910.0"),
+ m_ay8910_1(*this, "8910.1"),
+ m_ay8910_2(*this, "8910.2"),
+ m_ay8910_cclimber(*this, "cclimber_audio:aysnd"),
+ m_digitalker(*this, "digitalker"),
+ m_ppi8255_0(*this, "ppi8255_0"),
+ m_ppi8255_1(*this, "ppi8255_1"),
+ m_ppi8255_2(*this, "ppi8255_2"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_soundlatch(*this, "soundlatch"),
+ m_fake_select(*this, "FAKE_SELECT"),
+ m_tenspot_game_dsw(*this, {"IN2_GAME0", "IN2_GAME1", "IN2_GAME2", "IN2_GAME3", "IN2_GAME4", "IN2_GAME5", "IN2_GAME6", "IN2_GAME7", "IN2_GAME8", "IN2_GAME9"}),
+ m_spriteram(*this, "spriteram"),
+ m_videoram(*this, "videoram"),
+ m_decrypted_opcodes(*this, "decrypted_opcodes") { }
+
+ required_device<cpu_device> m_maincpu;
+ optional_device<cpu_device> m_audiocpu;
+ optional_device<cpu_device> m_audio2;
+ optional_device<dac_byte_interface> m_dac;
+ optional_device<ay8910_device> m_ay8910_0;
+ optional_device<ay8910_device> m_ay8910_1;
+ optional_device<ay8910_device> m_ay8910_2;
+ optional_device<ay8910_device> m_ay8910_cclimber;
+ optional_device<digitalker_device> m_digitalker;
+ optional_device<i8255_device> m_ppi8255_0;
+ optional_device<i8255_device> m_ppi8255_1;
+ optional_device<i8255_device> m_ppi8255_2;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ optional_device<generic_latch_8_device> m_soundlatch;
+
+ optional_ioport m_fake_select;
+ optional_ioport_array<10> m_tenspot_game_dsw;
+
+ required_shared_ptr<uint8_t> m_spriteram;
+ required_shared_ptr<uint8_t> m_videoram;
+ optional_shared_ptr<uint8_t> m_decrypted_opcodes;
+
+ int m_bullets_base;
+ int m_sprites_base;
+ int m_numspritegens;
+ int m_counter_74ls161[2];
+ int m_direction[2];
+ uint8_t m_gmgalax_selected_game;
+ uint8_t m_zigzag_ay8910_latch;
+ uint8_t m_kingball_speech_dip;
+ uint8_t m_kingball_sound;
+ uint8_t m_mshuttle_ay8910_cs;
+ uint16_t m_protection_state;
+ uint8_t m_protection_result;
+ uint8_t m_konami_sound_control;
+ uint8_t m_sfx_sample_control;
+ uint8_t m_moonwar_port_select;
+ uint8_t m_irq_enabled;
+ int m_irq_line;
+ int m_tenspot_current_game;
+ uint8_t m_frogger_adjust;
+ uint8_t m_sfx_tilemap;
+
+ /* video extension callbacks */
+ typedef void (galaxian_state::*galaxian_extend_tile_info_func)(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ typedef void (galaxian_state::*galaxian_extend_sprite_info_func)(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ typedef void (galaxian_state::*galaxian_draw_bullet_func)(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+ typedef void (galaxian_state::*galaxian_draw_background_func)(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ galaxian_extend_tile_info_func m_extend_tile_info_ptr;
+ galaxian_extend_sprite_info_func m_extend_sprite_info_ptr;
+ galaxian_draw_bullet_func m_draw_bullet_ptr;
+ galaxian_draw_background_func m_draw_background_ptr;
+
+ tilemap_t *m_bg_tilemap;
+ uint8_t m_flipscreen_x;
+ uint8_t m_flipscreen_y;
+ uint8_t m_background_enable;
+ uint8_t m_background_red;
+ uint8_t m_background_green;
+ uint8_t m_background_blue;
+ uint32_t m_star_rng_origin;
+ uint32_t m_star_rng_origin_frame;
+ rgb_t m_star_color[64];
+ std::unique_ptr<uint8_t[]> m_stars;
+ uint8_t m_stars_enabled;
+ uint8_t m_stars_blink_state;
+ rgb_t m_bullet_color[8];
+ uint8_t m_gfxbank[5];
+ DECLARE_WRITE8_MEMBER(galaxian_videoram_w);
+ DECLARE_WRITE8_MEMBER(galaxian_objram_w);
+ DECLARE_WRITE8_MEMBER(galaxian_flip_screen_x_w);
+ DECLARE_WRITE8_MEMBER(galaxian_flip_screen_y_w);
+ DECLARE_WRITE8_MEMBER(galaxian_flip_screen_xy_w);
+ DECLARE_WRITE8_MEMBER(galaxian_stars_enable_w);
+ DECLARE_WRITE8_MEMBER(scramble_background_enable_w);
+ DECLARE_WRITE8_MEMBER(scramble_background_red_w);
+ DECLARE_WRITE8_MEMBER(scramble_background_green_w);
+ DECLARE_WRITE8_MEMBER(scramble_background_blue_w);
+ DECLARE_WRITE8_MEMBER(galaxian_gfxbank_w);
+ DECLARE_CUSTOM_INPUT_MEMBER(scramble_protection_alt_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(gmgalax_port_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(azurian_port_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(kingball_muxbit_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(kingball_noise_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(moonwar_dial_r);
+ DECLARE_WRITE8_MEMBER(irq_enable_w);
+ DECLARE_WRITE8_MEMBER(start_lamp_w);
+ DECLARE_WRITE8_MEMBER(coin_lock_w);
+ DECLARE_WRITE8_MEMBER(coin_count_0_w);
+ DECLARE_WRITE8_MEMBER(coin_count_1_w);
+ DECLARE_READ8_MEMBER(konami_ay8910_r);
+ DECLARE_WRITE8_MEMBER(konami_ay8910_w);
+ DECLARE_WRITE8_MEMBER(konami_sound_filter_w);
+ DECLARE_READ8_MEMBER(theend_ppi8255_r);
+ DECLARE_WRITE8_MEMBER(theend_ppi8255_w);
+ DECLARE_WRITE8_MEMBER(explorer_sound_control_w);
+ DECLARE_READ8_MEMBER(sfx_sample_io_r);
+ DECLARE_WRITE8_MEMBER(sfx_sample_io_w);
+ DECLARE_READ8_MEMBER(monsterz_protection_r);
+ DECLARE_READ8_MEMBER(frogger_ppi8255_r);
+ DECLARE_WRITE8_MEMBER(frogger_ppi8255_w);
+ DECLARE_READ8_MEMBER(frogger_ay8910_r);
+ DECLARE_WRITE8_MEMBER(frogger_ay8910_w);
+ IRQ_CALLBACK_MEMBER(froggermc_audiocpu_irq_ack);
+ DECLARE_WRITE8_MEMBER(froggermc_sound_control_w);
+ DECLARE_READ8_MEMBER(frogf_ppi8255_r);
+ DECLARE_WRITE8_MEMBER(frogf_ppi8255_w);
+ DECLARE_READ8_MEMBER(turtles_ppi8255_0_r);
+ DECLARE_READ8_MEMBER(turtles_ppi8255_1_r);
+ DECLARE_WRITE8_MEMBER(turtles_ppi8255_0_w);
+ DECLARE_WRITE8_MEMBER(turtles_ppi8255_1_w);
+ DECLARE_READ8_MEMBER(scorpion_ay8910_r);
+ DECLARE_WRITE8_MEMBER(scorpion_ay8910_w);
+ DECLARE_READ8_MEMBER(scorpion_digitalker_intr_r);
+ DECLARE_WRITE8_MEMBER(zigzag_bankswap_w);
+ DECLARE_WRITE8_MEMBER(zigzag_ay8910_w);
+ DECLARE_WRITE8_MEMBER(kingball_speech_dip_w);
+ DECLARE_WRITE8_MEMBER(kingball_sound1_w);
+ DECLARE_WRITE8_MEMBER(kingball_sound2_w);
+ DECLARE_WRITE8_MEMBER(mshuttle_ay8910_cs_w);
+ DECLARE_WRITE8_MEMBER(mshuttle_ay8910_control_w);
+ DECLARE_WRITE8_MEMBER(mshuttle_ay8910_data_w);
+ DECLARE_READ8_MEMBER(mshuttle_ay8910_data_r);
+ DECLARE_READ8_MEMBER(jumpbug_protection_r);
+ DECLARE_WRITE8_MEMBER(checkman_sound_command_w);
+ DECLARE_READ8_MEMBER(checkmaj_protection_r);
+ DECLARE_READ8_MEMBER(dingo_3000_r);
+ DECLARE_READ8_MEMBER(dingo_3035_r);
+ DECLARE_READ8_MEMBER(dingoe_3001_r);
+ DECLARE_WRITE8_MEMBER(tenspot_unk_6000_w);
+ DECLARE_WRITE8_MEMBER(tenspot_unk_8000_w);
+ DECLARE_WRITE8_MEMBER(tenspot_unk_e000_w);
+ DECLARE_WRITE8_MEMBER(artic_gfxbank_w);
+ DECLARE_READ8_MEMBER(tenspot_dsw_read);
+ DECLARE_INPUT_CHANGED_MEMBER(gmgalax_game_changed);
+ DECLARE_WRITE8_MEMBER(konami_sound_control_w);
+ DECLARE_READ8_MEMBER(konami_sound_timer_r);
+ DECLARE_WRITE8_MEMBER(konami_portc_0_w);
+ DECLARE_WRITE8_MEMBER(konami_portc_1_w);
+ DECLARE_WRITE8_MEMBER(theend_coin_counter_w);
+ DECLARE_WRITE8_MEMBER(scramble_protection_w);
+ DECLARE_READ8_MEMBER(scramble_protection_r);
+ DECLARE_READ8_MEMBER(explorer_sound_latch_r);
+ DECLARE_WRITE8_MEMBER(sfx_sample_control_w);
+ DECLARE_WRITE8_MEMBER(monsterz_porta_1_w);
+ DECLARE_WRITE8_MEMBER(monsterz_portb_1_w);
+ DECLARE_WRITE8_MEMBER(monsterz_portc_1_w);
+ DECLARE_READ8_MEMBER(frogger_sound_timer_r);
+ DECLARE_READ8_MEMBER(scorpion_protection_r);
+ DECLARE_WRITE8_MEMBER(scorpion_protection_w);
+ DECLARE_WRITE8_MEMBER(scorpion_digitalker_control_w);
+ DECLARE_WRITE8_MEMBER(kingball_dac_w);
+ DECLARE_WRITE8_MEMBER(moonwar_port_select_w);
+ DECLARE_DRIVER_INIT(galaxian);
+ DECLARE_DRIVER_INIT(nolock);
+ DECLARE_DRIVER_INIT(azurian);
+ DECLARE_DRIVER_INIT(gmgalax);
+ DECLARE_DRIVER_INIT(pisces);
+ DECLARE_DRIVER_INIT(batman2);
+ DECLARE_DRIVER_INIT(frogg);
+ DECLARE_DRIVER_INIT(mooncrst);
+ DECLARE_DRIVER_INIT(mooncrsu);
+ DECLARE_DRIVER_INIT(mooncrgx);
+ DECLARE_DRIVER_INIT(moonqsr);
+ DECLARE_DRIVER_INIT(pacmanbl);
+ DECLARE_DRIVER_INIT(tenspot);
+ DECLARE_DRIVER_INIT(devilfsg);
+ DECLARE_DRIVER_INIT(zigzag);
+ DECLARE_DRIVER_INIT(jumpbug);
+ DECLARE_DRIVER_INIT(checkman);
+ DECLARE_DRIVER_INIT(checkmaj);
+ DECLARE_DRIVER_INIT(dingo);
+ DECLARE_DRIVER_INIT(dingoe);
+ DECLARE_DRIVER_INIT(skybase);
+ DECLARE_DRIVER_INIT(kong);
+ DECLARE_DRIVER_INIT(mshuttle);
+ DECLARE_DRIVER_INIT(mshuttlj);
+ DECLARE_DRIVER_INIT(fantastc);
+ DECLARE_DRIVER_INIT(timefgtr);
+ DECLARE_DRIVER_INIT(kingball);
+ DECLARE_DRIVER_INIT(scorpnmc);
+ DECLARE_DRIVER_INIT(thepitm);
+ DECLARE_DRIVER_INIT(theend);
+ DECLARE_DRIVER_INIT(scramble);
+ DECLARE_DRIVER_INIT(sfx);
+ DECLARE_DRIVER_INIT(atlantis);
+ DECLARE_DRIVER_INIT(scobra);
+ DECLARE_DRIVER_INIT(scobrae);
+ DECLARE_DRIVER_INIT(losttomb);
+ DECLARE_DRIVER_INIT(frogger);
+ DECLARE_DRIVER_INIT(froggermc);
+ DECLARE_DRIVER_INIT(froggers);
+ DECLARE_DRIVER_INIT(quaak);
+ DECLARE_DRIVER_INIT(turtles);
+ DECLARE_DRIVER_INIT(scorpion);
+ DECLARE_DRIVER_INIT(anteater);
+ DECLARE_DRIVER_INIT(anteateruk);
+ DECLARE_DRIVER_INIT(superbon);
+ DECLARE_DRIVER_INIT(calipso);
+ DECLARE_DRIVER_INIT(moonwar);
+ DECLARE_DRIVER_INIT(ghostmun);
+ DECLARE_DRIVER_INIT(froggrs);
+ DECLARE_DRIVER_INIT(warofbugg);
+ DECLARE_DRIVER_INIT(jungsub);
+ TILE_GET_INFO_MEMBER(bg_get_tile_info);
+ virtual void video_start() override;
+ DECLARE_PALETTE_INIT(galaxian);
+ DECLARE_PALETTE_INIT(moonwar);
+ void tenspot_set_game_bank(int bank, int from_game);
+ uint32_t screen_update_galaxian(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(interrupt_gen);
+ INTERRUPT_GEN_MEMBER(fakechange_interrupt_gen);
+ TIMER_DEVICE_CALLBACK_MEMBER(checkmaj_irq0_gen);
+ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_stars_blink_timer);
+ TIMER_DEVICE_CALLBACK_MEMBER(timefgtr_scanline);
+ void state_save_register();
+ void sprites_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, const uint8_t *spritebase);
+ void bullets_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, const uint8_t *base);
+ void stars_init();
+ void stars_update_origin();
+ void stars_draw_row(bitmap_rgb32 &bitmap, int maxx, int y, uint32_t star_offs, uint8_t starmask);
+ void galaxian_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void background_draw_colorsplit(bitmap_rgb32 &bitmap, const rectangle &cliprect, rgb_t color, int split, int split_flipped);
+ void scramble_draw_stars(bitmap_rgb32 &bitmap, const rectangle &cliprect, int maxx);
+ void scramble_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void anteater_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void jumpbug_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void turtles_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void frogger_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void quaak_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ inline void galaxian_draw_pixel(bitmap_rgb32 &bitmap, const rectangle &cliprect, int y, int x, rgb_t color);
+ void galaxian_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+ void mshuttle_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+ void scramble_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+ void theend_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
+ void upper_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void upper_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void frogger_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void frogger_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void gmgalax_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void gmgalax_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void pisces_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void pisces_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void batman2_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void mooncrst_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void mooncrst_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void moonqsr_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void moonqsr_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void mshuttle_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void mshuttle_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void calipso_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void jumpbug_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void jumpbug_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+ void monsterz_set_latch();
+ void decode_mooncrst(int length, uint8_t *dest);
+ void decode_checkman();
+ void decode_dingoe();
+ void decode_frogger_sound();
+ void decode_froggermc_sound();
+ void decode_frogger_gfx();
+ void decode_anteater_gfx();
+ void decode_losttomb_gfx();
+ void decode_superbon();
+ void unmap_galaxian_sound(offs_t base);
+ void mshuttle_decode(const uint8_t convtable[8][16]);
+ void common_init(galaxian_draw_bullet_func draw_bullet,galaxian_draw_background_func draw_background,
+ galaxian_extend_tile_info_func extend_tile_info,galaxian_extend_sprite_info_func extend_sprite_info);
+//HBMAME start
+ DECLARE_WRITE8_MEMBER(fourplay_rombank_w);
+ DECLARE_WRITE8_MEMBER(videight_rombank_w);
+ DECLARE_WRITE8_MEMBER(videight_gfxbank_w);
+ DECLARE_DRIVER_INIT(fourplay);
+ DECLARE_DRIVER_INIT(trukker);
+ DECLARE_DRIVER_INIT(videight);
+ void videight_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x);
+ void videight_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color);
+//HBMAME end
+};
diff --git a/docs/release/src/hbmame/includes/neogeo.h b/docs/release/src/hbmame/includes/neogeo.h
new file mode 100644
index 00000000000..8c30a57fa4a
--- /dev/null
+++ b/docs/release/src/hbmame/includes/neogeo.h
@@ -0,0 +1,508 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari
+// thanks-to:Fuzz
+/*************************************************************************
+
+ Neo-Geo hardware
+
+*************************************************************************/
+
+#include "machine/upd1990a.h"
+#include "machine/ng_memcard.h"
+#include "machine/gen_latch.h"
+#include "video/neogeo_spr.h"
+#include "bus/neogeo/prot.h"
+#include "bus/neogeo/banked_cart.h"
+#include "bus/neogeo_ctrl/ctrl.h"
+#include "screen.h"
+#include "speaker.h"
+
+// On scanline 224, /VBLANK goes low 56 mclks (14 pixels) from the rising edge of /HSYNC.
+// Two mclks after /VBLANK goes low, the hardware sets a pending IRQ1 flip-flop.
+#define NEOGEO_VBLANK_IRQ_HTIM (attotime::from_ticks(56+2, NEOGEO_MASTER_CLOCK))
+
+class neogeo_state : public driver_device
+{
+public:
+ neogeo_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_banked_cart(*this, "banked_cart"),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
+ m_region_maincpu(*this, "maincpu"),
+ m_region_sprites(*this, "sprites"),
+ m_region_fixed(*this, "fixed"),
+ m_region_fixedbios(*this, "fixedbios"),
+ m_bank_audio_main(*this, "audio_main"),
+ m_upd4990a(*this, "upd4990a"),
+ m_save_ram(*this, "saveram"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_memcard(*this, "memcard"),
+ m_dsw(*this, "DSW"),
+ m_trackx(*this, "TRACK_X"),
+ m_tracky(*this, "TRACK_Y"),
+ m_edge(*this, "edge"),
+ m_ctrl1(*this, "ctrl1"),
+ m_ctrl2(*this, "ctrl2"),
+ m_sprgen(*this, "spritegen"),
+ m_soundlatch(*this, "soundlatch"),
+ m_soundlatch2(*this, "soundlatch2"),
+ m_use_cart_vectors(0),
+ m_use_cart_audio(0)
+ { }
+
+ DECLARE_WRITE8_MEMBER(io_control_w);
+ DECLARE_READ16_MEMBER(memcard_r);
+ DECLARE_WRITE16_MEMBER(memcard_w);
+ DECLARE_WRITE8_MEMBER(audio_command_w);
+ DECLARE_READ8_MEMBER(audio_command_r);
+ DECLARE_READ8_MEMBER(audio_cpu_bank_select_r);
+ DECLARE_WRITE8_MEMBER(audio_cpu_enable_nmi_w);
+ DECLARE_WRITE8_MEMBER(system_control_w);
+ DECLARE_READ16_MEMBER(neogeo_unmapped_r);
+ DECLARE_READ16_MEMBER(neogeo_paletteram_r);
+ DECLARE_WRITE16_MEMBER(neogeo_paletteram_w);
+ DECLARE_READ16_MEMBER(neogeo_video_register_r);
+ DECLARE_WRITE16_MEMBER(neogeo_video_register_w);
+ READ16_MEMBER(banked_vectors_r);
+ DECLARE_READ16_MEMBER(in0_r);
+ DECLARE_READ16_MEMBER(in1_r);
+
+ void set_slot_number(int slot);
+
+ DECLARE_CUSTOM_INPUT_MEMBER(get_memcard_status);
+ DECLARE_CUSTOM_INPUT_MEMBER(get_audio_result);
+
+ TIMER_CALLBACK_MEMBER(display_position_interrupt_callback);
+ TIMER_CALLBACK_MEMBER(display_position_vblank_callback);
+ TIMER_CALLBACK_MEMBER(vblank_interrupt_callback);
+
+ // MVS-specific
+ DECLARE_WRITE16_MEMBER(save_ram_w);
+ DECLARE_CUSTOM_INPUT_MEMBER(kizuna4p_start_r);
+ DECLARE_INPUT_CHANGED_MEMBER(select_bios);
+
+ uint32_t screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ DECLARE_DRIVER_INIT(neogeo);
+ DECLARE_DRIVER_INIT(mvs);
+
+ optional_device<neogeo_banked_cart_device> m_banked_cart;
+
+protected:
+ void neogeo_postload();
+ void update_interrupts();
+ void create_interrupt_timers();
+ void start_interrupt_timers();
+ void neogeo_acknowledge_interrupt(uint16_t data);
+
+ void neogeo_main_cpu_banking_init();
+ void neogeo_audio_cpu_banking_init(int set_entry);
+ void adjust_display_position_interrupt_timer();
+ void neogeo_set_display_position_interrupt_control(uint16_t data);
+ void neogeo_set_display_counter_msb(uint16_t data);
+ void neogeo_set_display_counter_lsb(uint16_t data);
+ void set_video_control( uint16_t data );
+
+ void create_rgb_lookups();
+ void set_pens();
+ void neogeo_set_screen_shadow( int data );
+ void neogeo_set_palette_bank( int data );
+
+ void audio_cpu_check_nmi();
+ void set_save_ram_unlock( uint8_t data );
+ void set_outputs( );
+ void set_output_latch( uint8_t data );
+ void set_output_data( uint8_t data );
+
+
+ // device overrides
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ // devices
+ required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_audiocpu;
+
+ // memory
+ required_memory_region m_region_maincpu;
+ required_memory_region m_region_sprites;
+ required_memory_region m_region_fixed;
+ optional_memory_region m_region_fixedbios;
+ optional_memory_bank m_bank_audio_main; // optional because of neocd
+ memory_bank *m_bank_audio_cart[4];
+
+ // MVS-specific devices
+ optional_device<upd4990a_device> m_upd4990a;
+ optional_shared_ptr<uint16_t> m_save_ram;
+
+ required_device<screen_device> m_screen;
+ optional_device<palette_device> m_palette;
+ optional_device<ng_memcard_device> m_memcard;
+
+ // configuration
+ enum {NEOGEO_MVS, NEOGEO_AES, NEOGEO_CD} m_type;
+
+ // internal state
+ bool m_recurse;
+ bool m_audio_cpu_nmi_enabled;
+ bool m_audio_cpu_nmi_pending;
+
+ // MVS-specific state
+ uint8_t m_save_ram_unlocked;
+ uint8_t m_output_data;
+ uint8_t m_output_latch;
+ uint8_t m_el_value;
+ uint8_t m_led1_value;
+ uint8_t m_led2_value;
+
+ optional_ioport m_dsw;
+ optional_ioport m_trackx;
+ optional_ioport m_tracky;
+ optional_device<neogeo_ctrl_edge_port_device> m_edge;
+ optional_device<neogeo_control_port_device> m_ctrl1;
+ optional_device<neogeo_control_port_device> m_ctrl2;
+
+ // video hardware, including maincpu interrupts
+ // TODO: make into a device
+ virtual void video_start() override;
+ virtual void video_reset() override;
+
+ emu_timer *m_display_position_interrupt_timer;
+ emu_timer *m_display_position_vblank_timer;
+ emu_timer *m_vblank_interrupt_timer;
+ uint32_t m_display_counter;
+ uint8_t m_vblank_interrupt_pending;
+ uint8_t m_display_position_interrupt_pending;
+ uint8_t m_irq3_pending;
+ uint8_t m_display_position_interrupt_control;
+ uint8_t m_vblank_level;
+ uint8_t m_raster_level;
+
+ required_device<neosprite_device> m_sprgen;
+ optional_device<generic_latch_8_device> m_soundlatch;
+ optional_device<generic_latch_8_device> m_soundlatch2;
+ uint16_t get_video_control( );
+
+ // color/palette related
+ std::vector<uint16_t> m_paletteram;
+ uint8_t m_palette_lookup[32][4];
+ const pen_t *m_bg_pen;
+ int m_screen_shadow;
+ int m_palette_bank;
+
+ int m_use_cart_vectors;
+ int m_use_cart_audio;
+
+
+public:
+ DECLARE_READ16_MEMBER(neogeo_slot_rom_low_r);
+ DECLARE_READ16_MEMBER(neogeo_slot_rom_low_bectors_r);
+
+};
+
+
+class neogeo_noslot_state : public neogeo_state
+{
+ public:
+ neogeo_noslot_state(const machine_config &mconfig, device_type type, const char *tag)
+ : neogeo_state(mconfig, type, tag),
+ /* legacy cartridge specifics */
+ m_mslugx_prot(*this, "mslugx_prot"),
+ m_sma_prot(*this, "sma_prot"),
+ m_cmc_prot(*this, "cmc_prot"),
+ m_pcm2_prot(*this, "pcm2_prot"),
+ m_pvc_prot(*this, "pvc_prot"),
+ m_bootleg_prot(*this, "bootleg_prot"),
+ m_kof2002_prot(*this, "kof2002_prot"),
+ m_fatfury2_prot(*this, "fatfury2_prot"),
+ m_kof98_prot(*this, "kof98_prot"),
+ m_sbp_prot(*this, "sbp_prot") {}
+
+ DECLARE_DRIVER_INIT(fatfury2);
+ DECLARE_DRIVER_INIT(zupapa);
+ DECLARE_DRIVER_INIT(kof98);
+ DECLARE_DRIVER_INIT(mslugx);
+ DECLARE_DRIVER_INIT(kof99);
+ DECLARE_DRIVER_INIT(kof99k);
+ DECLARE_DRIVER_INIT(garou);
+ DECLARE_DRIVER_INIT(garouh);
+ DECLARE_DRIVER_INIT(garoubl);
+ DECLARE_DRIVER_INIT(mslug3);
+ DECLARE_DRIVER_INIT(mslug3h);
+ DECLARE_DRIVER_INIT(mslug3b6);
+ DECLARE_DRIVER_INIT(kof2000);
+ DECLARE_DRIVER_INIT(kof2000n);
+ DECLARE_DRIVER_INIT(kof2001);
+ DECLARE_DRIVER_INIT(cthd2003);
+ DECLARE_DRIVER_INIT(ct2k3sp);
+ DECLARE_DRIVER_INIT(ct2k3sa);
+ DECLARE_DRIVER_INIT(mslug4);
+ DECLARE_DRIVER_INIT(ms4plus);
+ DECLARE_DRIVER_INIT(ganryu);
+ DECLARE_DRIVER_INIT(s1945p);
+ DECLARE_DRIVER_INIT(preisle2);
+ DECLARE_DRIVER_INIT(bangbead);
+ DECLARE_DRIVER_INIT(nitd);
+ DECLARE_DRIVER_INIT(sengoku3);
+ DECLARE_DRIVER_INIT(rotd);
+ DECLARE_DRIVER_INIT(kof2002);
+ DECLARE_DRIVER_INIT(kof2002b);
+ DECLARE_DRIVER_INIT(kf2k2pls);
+ DECLARE_DRIVER_INIT(kf2k2mp);
+ DECLARE_DRIVER_INIT(kf2k2mp2);
+ DECLARE_DRIVER_INIT(kof10th);
+ DECLARE_DRIVER_INIT(kf10thep);
+ DECLARE_DRIVER_INIT(kf2k5uni);
+ DECLARE_DRIVER_INIT(kof2k4se);
+ DECLARE_DRIVER_INIT(matrim);
+ DECLARE_DRIVER_INIT(matrimbl);
+ DECLARE_DRIVER_INIT(pnyaa);
+ DECLARE_DRIVER_INIT(mslug5);
+ DECLARE_DRIVER_INIT(ms5pcb);
+ DECLARE_DRIVER_INIT(ms5plus);
+ DECLARE_DRIVER_INIT(svcpcb);
+ DECLARE_DRIVER_INIT(svc);
+ DECLARE_DRIVER_INIT(svcboot);
+ DECLARE_DRIVER_INIT(svcplus);
+ DECLARE_DRIVER_INIT(svcplusa);
+ DECLARE_DRIVER_INIT(svcsplus);
+ DECLARE_DRIVER_INIT(samsho5);
+ DECLARE_DRIVER_INIT(samsho5b);
+ DECLARE_DRIVER_INIT(kf2k3pcb);
+ DECLARE_DRIVER_INIT(kof2003);
+ DECLARE_DRIVER_INIT(kof2003h);
+ DECLARE_DRIVER_INIT(kf2k3bl);
+ DECLARE_DRIVER_INIT(kf2k3pl);
+ DECLARE_DRIVER_INIT(kf2k3upl);
+ DECLARE_DRIVER_INIT(samsh5sp);
+ DECLARE_DRIVER_INIT(jockeygp);
+ DECLARE_DRIVER_INIT(vliner);
+ DECLARE_DRIVER_INIT(kof97oro);
+ DECLARE_DRIVER_INIT(lans2004);
+ DECLARE_DRIVER_INIT(sbp);
+ DECLARE_DRIVER_INIT(irrmaze);
+
+ void install_banked_bios();
+
+ // legacy
+ optional_device<mslugx_prot_device> m_mslugx_prot;
+ optional_device<sma_prot_device> m_sma_prot;
+ optional_device<cmc_prot_device> m_cmc_prot;
+ optional_device<pcm2_prot_device> m_pcm2_prot;
+ optional_device<pvc_prot_device> m_pvc_prot;
+ optional_device<ngbootleg_prot_device> m_bootleg_prot;
+ optional_device<kof2002_prot_device> m_kof2002_prot;
+ optional_device<fatfury2_prot_device> m_fatfury2_prot;
+ optional_device<kof98_prot_device> m_kof98_prot;
+ optional_device<sbp_prot_device> m_sbp_prot;
+};
+
+class neogeo_noslot_kog_state : public neogeo_state
+{
+public:
+ neogeo_noslot_kog_state(const machine_config &mconfig, device_type type, const char *tag)
+ : neogeo_state(mconfig, type, tag),
+ /* legacy cartridge specifics */
+ m_bootleg_prot(*this, "bootleg_prot"),
+ m_kog_prot(*this, "kog_prot") {}
+
+
+ DECLARE_DRIVER_INIT(kog);
+
+ // legacy
+ optional_device<ngbootleg_prot_device> m_bootleg_prot;
+ optional_device<kog_prot_device> m_kog_prot;
+};
+
+/*----------- defined in drivers/neogeo.c -----------*/
+
+MACHINE_CONFIG_EXTERN( neogeo_base );
+MACHINE_CONFIG_EXTERN( neogeo_arcade );
+INPUT_PORTS_EXTERN(neogeo);
+ADDRESS_MAP_EXTERN(neogeo_main_map,16);
+
+/*************************************
+ *
+ * Neo-Geo bios
+ *
+ *************************************
+
+ These are the known Bios Roms, Set options.bios to the one you want.
+
+ The Universe bios roms are supported because they're now used on enough PCBs
+ to be considered 'in active arcade use' rather than just homebrew hacks.
+ Some may be missing, there have been multiple CRCs reported for the same
+ revision in some cases (the Universe bios has an option for entering / displaying
+ a serial number; these should be noted as such if they're added).
+ Universe bios prior to version 1.3 was incompatible with AES.
+
+ The 'japan-hotel' BIOS is a dump of an MVS which could be found in some japanese
+ hotels. it is a custom MVS mobo which uses MVS carts but it hasn't jamma
+ connector and it's similar to a console with a coin mechanism, so it's a sort
+ of little coin op console installed in hotels.
+
+ The sp-45.sp1 bios is the latest 'ASIA' revision. Japan-j3.bin is the latest 'JAPAN'
+ revision. Both of them are also used in the sp-4x.sp1 bios of the Jamma PCB boards.
+
+ The current Neo-Geo MVS system set (SFIX/SM1/000-LO) used is from a NEO-MVH MV1FS board.
+ Other boards (MV1xx / MV2x / MV4x /MV6x) other system sets?
+
+ Zoom ROM (LO) 128K TC531000CP 1x 128Kx8 Zoom look-up table ROM
+ Fix ROM (SFIX) 128K 27C1000 1x 128Kx8 Text layer graphics ROM
+ Sound ROM (SM1) 128K 27C1000/23C1000 1x 128Kx8 Z80 program ROM
+
+*/
+
+#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
+ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_OPTIONAL | ROM_BIOS(bios+1)) /* Note '+1' */
+
+#define NEOGEO_UNIBIOS(x) \
+ ROM_SYSTEM_BIOS( x+ 0, "unibios32", "Universe Bios (Hack, Ver. 3.2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 0, "uni-bios_3_2.rom", 0x00000, 0x020000, CRC(a4e8b9b3) SHA1(c92f18c3f1edda543d264ecd0ea915240e7c8258) ) /* Universe Bios v3.2 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 1, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 1, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 2, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 2, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 3, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 3, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 4, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 4, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \
+ ROM_SYSTEM_BIOS( x+ 5, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 5, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 6, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 6, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 7, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 7, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \
+ ROM_SYSTEM_BIOS( x+ 8, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 8, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */
+#define NEOGEO_UNIBIOS_1_2_AND_OLDER(x) \
+ ROM_SYSTEM_BIOS( x+ 9, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+ 9, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \
+ ROM_SYSTEM_BIOS( x+10, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+10, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \
+ ROM_SYSTEM_BIOS( x+11, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+11, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \
+ ROM_SYSTEM_BIOS( x+12, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( x+12, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */
+
+#define NEOGEO_BIOS \
+ ROM_REGION16_BE( 0x80000, "mainbios", 0 ) \
+ ROM_SYSTEM_BIOS( 0, "euro", "Europe MVS (Ver. 2)" ) \
+ ROMX_LOAD("euro_s1", 0, 0x20000, CRC(9036d879) SHA1(4f5ed7105b7128794654ce82b51723e16e389543), ROM_GROUPWORD | ROM_REVERSE | ROM_OPTIONAL | ROM_BIOS(1)) \
+ ROM_SYSTEM_BIOS( 1, "euro-s1", "Europe MVS (Ver. 1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 1, "sp-s.sp1", 0x00000, 0x020000, CRC(c7f2fa45) SHA1(09576ff20b4d6b365e78e6a5698ea450262697cd) ) /* Europe, 4 Slot */ \
+ ROM_SYSTEM_BIOS( 2, "us", "US MVS (Ver. 2?)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 2, "sp-u2.sp1", 0x00000, 0x020000, CRC(e72943de) SHA1(5c6bba07d2ec8ac95776aa3511109f5e1e2e92eb) ) /* US, 2 Slot */ \
+ ROM_SYSTEM_BIOS( 3, "us-e", "US MVS (Ver. 1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 3, "sp-e.sp1", 0x00000, 0x020000, CRC(2723a5b5) SHA1(5dbff7531cf04886cde3ef022fb5ca687573dcb8) ) /* US, 6 Slot (V5?) */ \
+ ROM_SYSTEM_BIOS( 4, "us-v2", "US MVS (4 slot, Ver 2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 4, "v2.bin", 0x00000, 0x020000, CRC(62f021f4) SHA1(62d372269e1b3161c64ae21123655a0a22ffd1bb) ) /* US, 4 slot */ \
+ ROM_SYSTEM_BIOS( 5, "asia", "Asia MVS (Ver. 3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 5, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \
+ ROM_SYSTEM_BIOS( 6, "japan", "Japan MVS (Ver. 3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 6, "vs-bios.rom", 0x00000, 0x020000, CRC(f0e8f27d) SHA1(ecf01eda815909f1facec62abf3594eaa8d11075) ) /* Japan, Ver 6 VS Bios */ \
+ ROM_SYSTEM_BIOS( 7, "japan-s2", "Japan MVS (Ver. 2)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp-j2.sp1", 0x00000, 0x020000, CRC(acede59c) SHA1(b6f97acd282fd7e94d9426078a90f059b5e9dd91) ) /* Japan, Older */ \
+ ROM_SYSTEM_BIOS( 8, "japan-s1", "Japan MVS (Ver. 1)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 8, "sp1.jipan.1024", 0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \
+ ROM_SYSTEM_BIOS( 9, "mv1c", "NEO-MVH MV1C" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 9, "sp-45.sp1", 0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) /* Latest Asia bios */ \
+ ROM_SYSTEM_BIOS( 10, "japan-j3", "Japan MVS (J3)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 10, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \
+ ROM_SYSTEM_BIOS( 11, "japan-hotel", "Custom Japanese Hotel" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 11, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \
+ \
+ NEOGEO_UNIBIOS(12) \
+ NEOGEO_UNIBIOS_1_2_AND_OLDER(12)
+
+
+#define NEO_BIOS_AUDIO_64K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x20000, "audiocpu", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x10000, hash ) \
+ ROM_RELOAD( 0x10000, 0x10000 )
+
+#define NEO_BIOS_AUDIO_128K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x30000, "audiocpu", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x20000, hash ) \
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+#define NEO_BIOS_AUDIO_256K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x50000, "audiocpu", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x40000, hash ) \
+ ROM_RELOAD( 0x10000, 0x40000 )
+
+#define NEO_BIOS_AUDIO_512K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x90000, "audiocpu", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x80000, hash ) \
+ ROM_RELOAD( 0x10000, 0x80000 )
+
+
+#define NEO_BIOS_AUDIO_ENCRYPTED_128K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \
+ ROM_REGION( 0x80000, "audiocrypt", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x20000, hash )
+#define NEO_BIOS_AUDIO_ENCRYPTED_256K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \
+ ROM_REGION( 0x80000, "audiocrypt", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x40000, hash )
+#define NEO_BIOS_AUDIO_ENCRYPTED_512K(name, hash) \
+ NEOGEO_BIOS \
+ ROM_REGION( 0x20000, "audiobios", 0 ) \
+ ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \
+ ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \
+ ROM_REGION( 0x80000, "audiocrypt", 0 ) \
+ ROM_LOAD( name, 0x00000, 0x80000, hash )
+
+
+#define ROM_Y_ZOOM \
+ ROM_REGION( 0x20000, "zoomy", 0 ) \
+ ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) )
+
+#define NEO_SFIX_MT(bytes) \
+ ROM_Y_ZOOM \
+ ROM_REGION( 0x20000, "fixedbios", 0 ) \
+ ROM_LOAD( "sfix.sfix", 0, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) \
+ ROM_REGION( bytes, "fixed", ROMREGION_ERASE00 )
+
+#define NEO_SFIX_MT_128K \
+ NEO_SFIX_MT( 0x20000 )
+
+#define NEO_SFIX_MT_512K \
+ NEO_SFIX_MT( 0x80000 )
+
+#define NEO_SFIX_MSLUG(name, hash) \
+ NEO_SFIX_MT( 0x80000 ) \
+ ROM_LOAD( name, 0x00000, 0x20000, hash ) \
+ ROM_RELOAD( 0x20000, 0x20000 ) \
+ ROM_RELOAD( 0x40000, 0x20000 ) \
+ ROM_RELOAD( 0x60000, 0x20000 )
+
+#define NEO_SFIX(bytes, name, hash) \
+ NEO_SFIX_MT( bytes ) \
+ ROM_LOAD( name, 0x00000, bytes, hash )
+
+#define NEO_SFIX_64K(name, hash) \
+ NEO_SFIX( 0x10000, name, hash )
+
+#define NEO_SFIX_128K(name, hash) \
+ NEO_SFIX( 0x20000, name, hash )
diff --git a/docs/release/src/hbmame/includes/pacman.h b/docs/release/src/hbmame/includes/pacman.h
new file mode 100644
index 00000000000..bbe9da2ac7c
--- /dev/null
+++ b/docs/release/src/hbmame/includes/pacman.h
@@ -0,0 +1,226 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "sound/namco.h"
+#include "machine/watchdog.h"
+#include "screen.h"
+#include "speaker.h"
+
+/*************************************************************************
+
+ Namco PuckMan
+
+**************************************************************************/
+
+class pacman_state : public driver_device
+{
+public:
+ pacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_namco_sound(*this, "namco"),
+ m_spriteram(*this, "spriteram"),
+ m_spriteram2(*this, "spriteram2"),
+ m_s2650_spriteram(*this, "s2650_spriteram"),
+ m_videoram(*this, "videoram"),
+ m_colorram(*this, "colorram"),
+ m_s2650games_tileram(*this, "s2650_tileram"),
+ m_rocktrv2_prot_data(*this, "rocktrv2_prot"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_patched_opcodes(*this, "patched_opcodes")
+ , m_io_fake(*this, "FAKE") // HBMAME
+ { }
+
+ required_device<cpu_device> m_maincpu;
+ optional_device<namco_device> m_namco_sound;
+ optional_shared_ptr<uint8_t> m_spriteram;
+ optional_shared_ptr<uint8_t> m_spriteram2;
+ optional_shared_ptr<uint8_t> m_s2650_spriteram;
+ required_shared_ptr<uint8_t> m_videoram;
+ optional_shared_ptr<uint8_t> m_colorram;
+ optional_shared_ptr<uint8_t> m_s2650games_tileram;
+ optional_shared_ptr<uint8_t> m_rocktrv2_prot_data;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+ optional_shared_ptr<uint8_t> m_patched_opcodes;
+ optional_ioport m_io_fake; // HBMAME
+ uint8_t m_cannonb_bit_to_read;
+ int m_mystery;
+ uint8_t m_counter;
+ int m_bigbucks_bank;
+ uint8_t m_rocktrv2_question_bank;
+ tilemap_t *m_bg_tilemap;
+ uint8_t m_charbank;
+ uint8_t m_spritebank;
+ uint8_t m_palettebank;
+ uint8_t m_colortablebank;
+ uint8_t m_flipscreen;
+ uint8_t m_bgpriority;
+ int m_xoffsethack;
+ uint8_t m_inv_spr;
+ uint8_t m_irq_mask;
+
+ DECLARE_WRITE8_MEMBER(pacman_interrupt_vector_w);
+ DECLARE_WRITE8_MEMBER(piranha_interrupt_vector_w);
+ DECLARE_WRITE8_MEMBER(nmouse_interrupt_vector_w);
+ DECLARE_WRITE8_MEMBER(pacman_leds_w);
+ DECLARE_WRITE8_MEMBER(pacman_coin_counter_w);
+ DECLARE_WRITE8_MEMBER(pacman_coin_lockout_global_w);
+ DECLARE_WRITE8_MEMBER(alibaba_sound_w);
+ DECLARE_READ8_MEMBER(alibaba_mystery_1_r);
+ DECLARE_READ8_MEMBER(alibaba_mystery_2_r);
+ DECLARE_READ8_MEMBER(maketrax_special_port2_r);
+ DECLARE_READ8_MEMBER(maketrax_special_port3_r);
+ DECLARE_READ8_MEMBER(korosuke_special_port2_r);
+ DECLARE_READ8_MEMBER(korosuke_special_port3_r);
+ DECLARE_READ8_MEMBER(mschamp_kludge_r);
+ DECLARE_WRITE8_MEMBER(bigbucks_bank_w);
+ DECLARE_READ8_MEMBER(bigbucks_question_r);
+ DECLARE_WRITE8_MEMBER(porky_banking_w);
+ DECLARE_READ8_MEMBER(drivfrcp_port1_r);
+ DECLARE_READ8_MEMBER(_8bpm_port1_r);
+ DECLARE_READ8_MEMBER(porky_port1_r);
+ DECLARE_READ8_MEMBER(rocktrv2_prot1_data_r);
+ DECLARE_READ8_MEMBER(rocktrv2_prot2_data_r);
+ DECLARE_READ8_MEMBER(rocktrv2_prot3_data_r);
+ DECLARE_READ8_MEMBER(rocktrv2_prot4_data_r);
+ DECLARE_WRITE8_MEMBER(rocktrv2_prot_data_w);
+ DECLARE_WRITE8_MEMBER(rocktrv2_question_bank_w);
+ DECLARE_READ8_MEMBER(rocktrv2_question_r);
+ DECLARE_READ8_MEMBER(pacman_read_nop);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x0038);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x03b0);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x1600);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x2120);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x3ff0);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x8000);
+ DECLARE_READ8_MEMBER(mspacman_disable_decode_r_0x97f0);
+ DECLARE_WRITE8_MEMBER(mspacman_disable_decode_w);
+ DECLARE_READ8_MEMBER(mspacman_enable_decode_r_0x3ff8);
+ DECLARE_WRITE8_MEMBER(mspacman_enable_decode_w);
+ DECLARE_WRITE8_MEMBER(irq_mask_w);
+ DECLARE_READ8_MEMBER(mspacii_protection_r);
+ DECLARE_READ8_MEMBER(cannonbp_protection_r);
+ DECLARE_WRITE8_MEMBER(pacman_videoram_w);
+ DECLARE_WRITE8_MEMBER(pacman_colorram_w);
+ DECLARE_WRITE8_MEMBER(pacman_flipscreen_w);
+ DECLARE_WRITE8_MEMBER(pengo_palettebank_w);
+ DECLARE_WRITE8_MEMBER(pengo_colortablebank_w);
+ DECLARE_WRITE8_MEMBER(pengo_gfxbank_w);
+ DECLARE_WRITE8_MEMBER(s2650games_videoram_w);
+ DECLARE_WRITE8_MEMBER(s2650games_colorram_w);
+ DECLARE_WRITE8_MEMBER(s2650games_scroll_w);
+ DECLARE_WRITE8_MEMBER(s2650games_tilesbank_w);
+ DECLARE_WRITE8_MEMBER(jrpacman_videoram_w);
+ DECLARE_WRITE8_MEMBER(jrpacman_charbank_w);
+ DECLARE_WRITE8_MEMBER(jrpacman_spritebank_w);
+ DECLARE_WRITE8_MEMBER(jrpacman_scroll_w);
+ DECLARE_WRITE8_MEMBER(jrpacman_bgpriority_w);
+ DECLARE_WRITE8_MEMBER(superabc_bank_w);
+ DECLARE_DRIVER_INIT(maketrax);
+ DECLARE_DRIVER_INIT(drivfrcp);
+ DECLARE_DRIVER_INIT(mspacmbe);
+ DECLARE_DRIVER_INIT(ponpoko);
+ DECLARE_DRIVER_INIT(eyes);
+ DECLARE_DRIVER_INIT(woodpek);
+ DECLARE_DRIVER_INIT(cannonbp);
+ DECLARE_DRIVER_INIT(jumpshot);
+ DECLARE_DRIVER_INIT(korosuke);
+ DECLARE_DRIVER_INIT(mspacii);
+ DECLARE_DRIVER_INIT(pacplus);
+ DECLARE_DRIVER_INIT(rocktrv2);
+ DECLARE_DRIVER_INIT(superabc);
+ DECLARE_DRIVER_INIT(8bpm);
+ DECLARE_DRIVER_INIT(porky);
+ DECLARE_DRIVER_INIT(mspacman);
+ TILEMAP_MAPPER_MEMBER(pacman_scan_rows);
+ TILE_GET_INFO_MEMBER(pacman_get_tile_info);
+ TILE_GET_INFO_MEMBER(s2650_get_tile_info);
+ TILEMAP_MAPPER_MEMBER(jrpacman_scan_rows);
+ TILE_GET_INFO_MEMBER(jrpacman_get_tile_info);
+ DECLARE_VIDEO_START(pacman);
+ DECLARE_PALETTE_INIT(pacman);
+ DECLARE_VIDEO_START(birdiy);
+ DECLARE_VIDEO_START(s2650games);
+ DECLARE_MACHINE_RESET(mschamp);
+ DECLARE_MACHINE_RESET(superabc);
+ DECLARE_VIDEO_START(pengo);
+ DECLARE_VIDEO_START(jrpacman);
+ uint32_t screen_update_pacman(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_s2650games(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(vblank_irq);
+ INTERRUPT_GEN_MEMBER(vblank_nmi);
+ INTERRUPT_GEN_MEMBER(s2650_interrupt);
+ void init_save_state();
+ void jrpacman_mark_tile_dirty( int offset );
+ void maketrax_rom_decode();
+ void korosuke_rom_decode();
+ void eyes_decode(uint8_t *data);
+ void mspacman_install_patches(uint8_t *ROM);
+
+ // theglopb.c
+ void theglobp_decrypt_rom_8();
+ void theglobp_decrypt_rom_9();
+ void theglobp_decrypt_rom_A();
+ void theglobp_decrypt_rom_B();
+ DECLARE_READ8_MEMBER(theglobp_decrypt_rom);
+ DECLARE_MACHINE_START(theglobp);
+ DECLARE_MACHINE_RESET(theglobp);
+
+ // pacplus.c
+ uint8_t pacplus_decrypt(int addr, uint8_t e);
+ void pacplus_decode();
+
+ // jumpshot.c
+ uint8_t jumpshot_decrypt(int addr, uint8_t e);
+ void jumpshot_decode();
+
+ // acitya.c
+ void acitya_decrypt_rom_8();
+ void acitya_decrypt_rom_9();
+ void acitya_decrypt_rom_A();
+ void acitya_decrypt_rom_B();
+ DECLARE_READ8_MEMBER(acitya_decrypt_rom);
+ DECLARE_MACHINE_START(acitya);
+ DECLARE_MACHINE_RESET(acitya);
+// HBMAME extras
+ DECLARE_VIDEO_START(pacmanx);
+ DECLARE_VIDEO_START(multipac);
+ uint32_t screen_update_pacmanx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_multipac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_pengo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_PALETTE_INIT(multipac);
+ DECLARE_PALETTE_INIT(pengo);
+ void m96in1b_gfxbank_w(uint8_t gfxbank);
+ void madpac_gfxbank_w(uint8_t gfxbank);
+ DECLARE_WRITE8_MEMBER(multipac_gfxbank_w);
+ DECLARE_WRITE8_MEMBER(multipac_palbank_w);
+ TILE_GET_INFO_MEMBER(multipac_get_tile_info);
+ uint8_t m_speedcheat;
+ uint8_t m_timerthing;
+ DECLARE_READ8_MEMBER(mspacii_prot_r);
+ DECLARE_READ8_MEMBER(zolatimer_r);
+ DECLARE_WRITE8_MEMBER(zolatimer_w);
+ DECLARE_MACHINE_RESET(mspacman);
+ DECLARE_WRITE8_MEMBER(m96in1_rombank_w);
+ DECLARE_WRITE8_MEMBER(m96in1b_rombank_w);
+ DECLARE_WRITE8_MEMBER(hackypac_rombank_w);
+ DECLARE_WRITE8_MEMBER(madpac_rombank_w);
+ DECLARE_WRITE8_MEMBER(multipac_rombank_w);
+ DECLARE_WRITE8_MEMBER(pm4n1_rombank_w);
+ DECLARE_WRITE8_MEMBER(pm4n1d_rombank_w);
+ DECLARE_WRITE8_MEMBER(superabc_rombank_w);
+ DECLARE_MACHINE_RESET(96in1);
+ DECLARE_MACHINE_RESET(hackypac);
+ DECLARE_MACHINE_RESET(madpac);
+ DECLARE_MACHINE_RESET(multipac);
+ DECLARE_MACHINE_RESET(mspaceur);
+ DECLARE_MACHINE_RESET(pm4n1);
+ DECLARE_DRIVER_INIT(96in1);
+ DECLARE_DRIVER_INIT(madpac);
+ DECLARE_DRIVER_INIT(mspaceur);
+ DECLARE_DRIVER_INIT(multipac);
+ DECLARE_DRIVER_INIT(pm4n1);
+ DECLARE_DRIVER_INIT(pengo);
+// END HBMAME
+};
diff --git a/docs/release/src/hbmame/layout/monaco.lay b/docs/release/src/hbmame/layout/monaco.lay
new file mode 100644
index 00000000000..311d5b4572b
--- /dev/null
+++ b/docs/release/src/hbmame/layout/monaco.lay
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+<element name="digit" defstate="10">
+ <led7seg>
+ <color red="1.0" green="0.3" blue="0.0" />
+ </led7seg>
+</element>
+
+<view name="Lamps and Timer">
+ <screen index="0">
+ <bounds left="1" top="0" right="8" bottom="8" />
+ </screen>
+ <bezel name="digit5" element="digit">
+ <bounds x="0.49" y="2.1" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds x="0.345" y="2.1" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit3" element="digit">
+ <bounds x="0.635" y="1.8" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="0.49" y="1.8" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds x="0.345" y="1.8" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit0" element="digit">
+ <bounds x="0.2" y="1.8" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit53" element="digit">
+ <bounds x="0.635" y="1.3" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit52" element="digit">
+ <bounds x="0.49" y="1.3" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit51" element="digit">
+ <bounds x="0.345" y="1.3" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit50" element="digit">
+ <bounds x="0.2" y="1.3" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit43" element="digit">
+ <bounds x="0.635" y="1.0" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit42" element="digit">
+ <bounds x="0.49" y="1.0" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit41" element="digit">
+ <bounds x="0.345" y="1.0" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit40" element="digit">
+ <bounds x="0.2" y="1.0" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit33" element="digit">
+ <bounds x="0.635" y="0.7" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit32" element="digit">
+ <bounds x="0.49" y="0.7" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit31" element="digit">
+ <bounds x="0.345" y="0.7" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit30" element="digit">
+ <bounds x="0.2" y="0.7" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit23" element="digit">
+ <bounds x="0.635" y="0.4" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit22" element="digit">
+ <bounds x="0.49" y="0.4" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit21" element="digit">
+ <bounds x="0.345" y="0.4" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit20" element="digit">
+ <bounds x="0.2" y="0.4" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit13" element="digit">
+ <bounds x="0.635" y="0.1" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit12" element="digit">
+ <bounds x="0.49" y="0.1" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit11" element="digit">
+ <bounds x="0.345" y="0.1" width="0.145" height="0.2" />
+ </bezel>
+ <bezel name="digit10" element="digit">
+ <bounds x="0.2" y="0.1" width="0.145" height="0.2" />
+ </bezel>
+ </view>
+</mamelayout> \ No newline at end of file
diff --git a/docs/release/src/hbmame/layout/neogeo.lay b/docs/release/src/hbmame/layout/neogeo.lay
new file mode 100644
index 00000000000..bdaa722b17d
--- /dev/null
+++ b/docs/release/src/hbmame/layout/neogeo.lay
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+ <element name="blank">
+ <rect>
+ <color red="0" green="0" blue="0" />
+ </rect>
+ </element>
+
+ <view name="Screen 0 Standard (4:3)">
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+ </view>
+
+ <view name="Screen 0 Cropped (304x224)">
+ <bezel name="blank" element="blank">
+ <bounds left="0" top="0" right="0.1" bottom="3" />
+ </bezel>
+ <bezel name="blank" element="blank">
+ <bounds left="3.9" top="0" right="4" bottom="3" />
+ </bezel>
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+ </view>
+
+ <view name="Screen 0 Stretched (304x224)">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ <screen index="0">
+ <bounds left="-0.105263" top="0" right="4.105263" bottom="3" />
+ </screen>
+ </view>
+
+ <view name="Screen 0 Stretched (272x224)">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ <screen index="0">
+ <bounds left="-0.210526" top="0" right="4.205263" bottom="3" />
+ </screen>
+ </view>
+</mamelayout>
diff --git a/docs/release/src/hbmame/layout/spacmissx.lay b/docs/release/src/hbmame/layout/spacmissx.lay
new file mode 100644
index 00000000000..2c306daf5bb
--- /dev/null
+++ b/docs/release/src/hbmame/layout/spacmissx.lay
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+ <element name="overlay">
+ <rect>
+ <bounds left="0" top="0" right="224" bottom="260" />
+ <color red="0" green="1" blue="0.4" />
+ </rect>
+ <rect>
+ <bounds left="0" top="47" right="224" bottom="70" />
+ <color red="1" green="0.2" blue="0.15" />
+ </rect>
+ <rect>
+ <bounds left="0" top="70" right="224" bottom="192" />
+ <color red="1" green="1" blue="0.2" />
+ </rect>
+ <rect>
+ <bounds left="0" top="192" right="224" bottom="214" />
+ <color red="0.2" green="0.6" blue="1" />
+ </rect>
+ </element>
+
+ <view name="Color_Overlay">
+ <screen index="0">
+ <bounds x="0" y="0" width="3" height="4" />
+ </screen>
+ <overlay element="overlay">
+ <bounds x="0" y="0" width="3" height="4" />
+ </overlay>
+ </view>
+</mamelayout>
diff --git a/docs/release/src/hbmame/machine/arkanoid.cpp b/docs/release/src/hbmame/machine/arkanoid.cpp
new file mode 100644
index 00000000000..d05697a39b8
--- /dev/null
+++ b/docs/release/src/hbmame/machine/arkanoid.cpp
@@ -0,0 +1,634 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***************************************************************************
+
+ machine.c
+
+ Functions to emulate general aspects of the machine (RAM, ROM, interrupts,
+ I/O ports)
+
+***************************************************************************/
+
+#include "emu.h"
+#include "includes/arkanoid.h"
+
+
+/* To log specific reads and writes of the bootlegs */
+#define ARKANOID_BOOTLEG_VERBOSE 1
+
+
+READ8_MEMBER(arkanoid_state::arkanoid_Z80_mcu_r)
+{
+ /* return the last value the 68705 wrote, and mark that we've read it */
+ m_m68705write = 0;
+ return m_toz80;
+}
+
+TIMER_CALLBACK_MEMBER(arkanoid_state::test)
+{
+ m_z80write = 1;
+ m_fromz80 = param;
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_Z80_mcu_w)
+{
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(arkanoid_state::test),this), data);
+ /* boost the interleave for a few usecs to make sure it is read successfully */
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10));
+}
+
+READ8_MEMBER(arkanoid_state::arkanoid_68705_port_a_r)
+{
+ return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_68705_port_a_w)
+{
+ m_port_a_out = data;
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_a_w)
+{
+ m_ddr_a = data;
+}
+
+
+READ8_MEMBER(arkanoid_state::arkanoid_68705_port_c_r)
+{
+ int res = 0;
+
+ /* bit 0 is high on a write strobe; clear it once we've detected it */
+ if (m_z80write)
+ res |= 0x01;
+
+ /* bit 1 is high if the previous write has been read */
+ if (!m_m68705write)
+ res |= 0x02;
+
+ return (m_port_c_out & m_ddr_c) | (res & ~m_ddr_c);
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_68705_port_c_w)
+{
+ if ((m_ddr_c & 0x04) && (~data & 0x04) && (m_port_c_out & 0x04))
+ {
+ /* return the last value the Z80 wrote */
+ m_z80write = 0;
+ m_port_a_in = m_fromz80;
+ }
+ if ((m_ddr_c & 0x08) && (~data & 0x08) && (m_port_c_out & 0x08))
+ {
+ /* a write from the 68705 to the Z80; remember its value */
+ m_m68705write = 1;
+ m_toz80 = m_port_a_out;
+ }
+
+ m_port_c_out = data;
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_c_w)
+{
+ m_ddr_c = data;
+}
+
+CUSTOM_INPUT_MEMBER(arkanoid_state::arkanoid_68705_input_r)
+{
+ int res = 0;
+
+ /* bit 0x40 of comes from the sticky bit */
+ if (!m_z80write)
+ res |= 0x01;
+
+ /* bit 0x80 comes from a write latch */
+ if (m_mcu) // HBMAME fix for bootlegs
+ if (!m_m68705write)
+ res |= 0x02;
+
+ return res;
+}
+
+CUSTOM_INPUT_MEMBER(arkanoid_state::arkanoid_input_mux)
+{
+ const char *tag1 = (const char *)param;
+ const char *tag2 = tag1 + strlen(tag1) + 1;
+ return ioport((m_paddle_select == 0) ? tag1 : tag2)->read();
+}
+
+/*
+
+Bootlegs stuff
+
+The bootlegs simulate the missing MCU behaviour with writes to 0xd018 and reads value back from 0xf002.
+Fortunately, 'arkangc', 'arkangc2', 'block2', 'arkbloc2' and 'arkblock' has patched code not to bother with that.
+So I've fixed 'arkbl3' and 'paddle2' to return the expected values (code is strongly similar).
+However, 'block2' is the only bootleg that writes some values to 0xd018 and reads them back from 0xf000.
+
+Some bootlegs also test some bits from 0xd008 after reading the paddle value at 0xd018.
+Their effect is completely unknown but I need to set some bits to 1 so the games are playable :
+
+ - 'arkangc' : NO read from 0xd008 !
+ - 'arkangc2' :
+ * bit 1 must be set to 1 or you enter sort of endless "demo mode" when you start :
+ . you can't select your starting level (it always starts at level 1)
+ . you can't control the paddle (it automoves by following the ball)
+ . you can use the "fire" button (the game never shoots)
+ . you are awarded points as in a normal game
+ . sounds are played
+ - 'block2' :
+ * bit 1 must be set to 1 or you enter sort of endless "demo mode" when you start :
+ . you can't control the paddle (it automoves by following the ball)
+ . you can use the "fire" button (the game never shoots)
+ . you are awarded points as in a normal game
+ . sounds are played
+ - 'arkblock' : NO read from 0xd008 !
+ - 'arkbloc2' :
+ * bit 5 must sometimes be set to 1 or you can't reach right side of the screen
+ nor select all levels at the beginning of the game
+ - 'arkgcbl' :
+ * bit 1 must be set to 1 or you enter sort of endless "demo mode" when you start :
+ . you can't select your starting level (it always starts at level 1)
+ . you can't control the paddle (it automoves by following the ball)
+ . you can use the "fire" button (the game never shoots)
+ . you are awarded points as in a normal game
+ . sounds are played
+ * bit 5 must sometimes be set to 1 or you can't reach right side of the screen
+ nor select all levels at the beginning of the game
+ - 'paddle2' :
+ * bits 0 and 1 must be set to 1 or the paddle goes up (joystick issue ?)
+ * bits 2 and 3 must be set to 1 or the paddle goes down (joystick issue ?)
+ * bit 5 must sometimes be set to 1 or you can't reach right side of the screen
+ nor select all levels at the beginning of the game
+
+
+TO DO (2006.09.12) :
+
+ - understand reads from 0xd008 (even if the games are playable)
+ - try to document writes to 0xd018 with unknown effect
+
+*/
+
+
+#define LOG_F000_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - val = %02x\n", space.device().safe_pc(), m_bootleg_cmd, arkanoid_bootleg_val);
+#define LOG_F002_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - val = %02x\n", space.device().safe_pc(), m_bootleg_cmd, arkanoid_bootleg_val);
+#define LOG_D018_W if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - cmd = %02x\n", space.device().safe_pc(), data, m_bootleg_cmd);
+#define LOG_D008_R if (ARKANOID_BOOTLEG_VERBOSE) logerror("%04x: arkanoid_bootleg_d008_r - val = %02x\n", space.device().safe_pc(), arkanoid_bootleg_d008_val);
+
+
+/* Kludge for some bootlegs that read this address */
+READ8_MEMBER(arkanoid_state::arkanoid_bootleg_f000_r)
+{
+ uint8_t arkanoid_bootleg_val = 0x00;
+
+ switch (m_bootleg_id)
+ {
+ case ARKANGC: /* There are no reads from 0xf000 in these bootlegs */
+ case ARKBLOCK:
+ case ARKANGC2:
+ case ARKBLOC2:
+ case ARKGCBL:
+ case PADDLE2:
+ switch (m_bootleg_cmd)
+ {
+ default:
+ break;
+ }
+ LOG_F000_R
+ break;
+ case BLOCK2:
+ switch (m_bootleg_cmd)
+ {
+ case 0x05: /* Check 1 */
+ arkanoid_bootleg_val = 0x05;
+ break;
+ case 0x0a: /* Check 2 */
+ arkanoid_bootleg_val = 0x0a;
+ break;
+ default:
+ break;
+ }
+ LOG_F000_R
+ break;
+ default:
+ logerror("%04x: arkanoid_bootleg_f000_r - cmd = %02x - unknown bootleg !\n", space.device().safe_pc(), m_bootleg_cmd);
+ break;
+ }
+
+ return arkanoid_bootleg_val;
+}
+
+/* Kludge for some bootlegs that read this address */
+READ8_MEMBER(arkanoid_state::arkanoid_bootleg_f002_r)
+{
+ uint8_t arkanoid_bootleg_val = 0x00;
+
+ switch (m_bootleg_id)
+ {
+ case ARKANGC:
+ case ARKBLOCK:
+ switch (m_bootleg_cmd)
+ {
+ default:
+ break;
+ }
+ LOG_F002_R
+ break;
+ case ARKANGC2: /* There are no reads from 0xf002 in these bootlegs */
+ case BLOCK2:
+ switch (m_bootleg_cmd)
+ {
+ default:
+ break;
+ }
+ LOG_F002_R
+ break;
+ case ARKBLOC2:
+ switch (m_bootleg_cmd)
+ {
+ default:
+ break;
+ }
+ LOG_F002_R
+ break;
+ case ARKGCBL:
+ switch (m_bootleg_cmd)
+ {
+ case 0x8a: /* Current level (fixed routine) */
+ arkanoid_bootleg_val = 0xa5;
+ break;
+ case 0xff: /* Avoid "BAD HARDWARE " message (fixed routine) */
+ arkanoid_bootleg_val = 0xe2;
+ break;
+ default:
+ break;
+ }
+ LOG_F002_R
+ break;
+ case PADDLE2:
+ switch (m_bootleg_cmd)
+ {
+ case 0x24: /* Avoid bad jump to 0x0066 */
+ arkanoid_bootleg_val = 0x9b;
+ break;
+ case 0x36: /* Avoid "BAD HARDWARE " message */
+ arkanoid_bootleg_val = 0x2d;
+ break;
+ case 0x38: /* Start of levels table (fixed offset) */
+ arkanoid_bootleg_val = 0xf3;
+ break;
+ case 0x8a: /* Current level (fixed routine) */
+ arkanoid_bootleg_val = 0xa5;
+ break;
+ case 0xc3: /* Avoid bad jump to 0xf000 */
+ arkanoid_bootleg_val = 0x1d;
+ break;
+ case 0xe3: /* Number of bricks left (fixed offset) */
+ arkanoid_bootleg_val = 0x61;
+ break;
+ case 0xf7: /* Avoid "U69" message */
+ arkanoid_bootleg_val = 0x00;
+ break;
+ case 0xff: /* Avoid "BAD HARDWARE " message (fixed routine) */
+ arkanoid_bootleg_val = 0xe2;
+ break;
+ default:
+ break;
+ }
+ LOG_F002_R
+ break;
+ default:
+ logerror("%04x: arkanoid_bootleg_f002_r - cmd = %02x - unknown bootleg !\n", space.device().safe_pc(), m_bootleg_cmd);
+ break;
+ }
+
+ return arkanoid_bootleg_val;
+}
+
+/* Kludge for some bootlegs that write this address */
+WRITE8_MEMBER(arkanoid_state::arkanoid_bootleg_d018_w)
+{
+ m_bootleg_cmd = 0x00;
+
+ switch (m_bootleg_id)
+ {
+ case ARKANGC:
+ case ARKBLOCK:
+ switch (data)
+ {
+ case 0x36: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x0313 -> 0x0340) */
+ if (space.device().safe_pc() == 0x7c47)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x38: /* unneeded value : no call 0x2050, unused A and fixed HL (0x7bd5) */
+ if (space.device().safe_pc() == 0x7b87)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x8a: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7b77 -> 0x7c1c) */
+ if (space.device().safe_pc() == 0x9661)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x00) and fixed HL (0xed83) */
+ if (space.device().safe_pc() == 0x67e3)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xf7: /* unneeded value : 3 * 'NOP' at 0x034f + 2 * 'NOP' at 0x35b */
+ if (space.device().safe_pc() == 0x0349)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xff: /* unneeded value : no call 0x2050, unused A and overwritten HL (0x7c4f -> 0x7d31) */
+ if (space.device().safe_pc() == 0x9670)
+ m_bootleg_cmd = 0x00;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+ case ARKANGC2:
+ switch (data)
+ {
+ case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */
+ if (space.device().safe_pc() == 0x7c4c)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */
+ if (space.device().safe_pc() == 0x7b87)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x88: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e3)
+ m_bootleg_cmd = 0x00;
+ if (space.device().safe_pc() == 0x7c47)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x89: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e5)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x8a: /* unneeded value : call 0x2050 but fixed A (0xa5) */
+ if (space.device().safe_pc() == 0x9661)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xc0: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e7)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */
+ if (space.device().safe_pc() == 0x67e9)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xff: /* unneeded value : call 0x2050 but fixed A (0xe2) */
+ if (space.device().safe_pc() == 0x9670)
+ m_bootleg_cmd = 0x00;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+ case BLOCK2:
+ switch (data)
+ {
+ case 0x05: /* Check 1 */
+ if (space.device().safe_pc() == 0x0363)
+ m_bootleg_cmd = 0x05;
+ break;
+ case 0x0a: /* Check 2 */
+ if (space.device().safe_pc() == 0x0372)
+ m_bootleg_cmd = 0x0a;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+ case ARKBLOC2:
+ switch (data)
+ {
+ case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */
+ if (space.device().safe_pc() == 0x7c4c)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */
+ if (space.device().safe_pc() == 0x7b87)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x88: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e3)
+ m_bootleg_cmd = 0x00;
+ if (space.device().safe_pc() == 0x7c47)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x89: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e5)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x8a: /* unneeded value : call 0x2050 but unused HL and fixed DE (0x7c1c) */
+ if (space.device().safe_pc() == 0x9661)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xc0: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e7)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */
+ if (space.device().safe_pc() == 0x67e9)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xf7: /* unneeded value : call 0x2050 but never called (check code at 0x0340) */
+ if (space.device().safe_pc() == 0x0349)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xff: /* unneeded value : no call 0x2050, unused A and fixed HL (0x7d31) */
+ if (space.device().safe_pc() == 0x9670)
+ m_bootleg_cmd = 0x00;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+ case ARKGCBL:
+ switch (data)
+ {
+ case 0x36: /* unneeded value : call 0x2050 but fixed A (0x2d) */
+ if (space.device().safe_pc() == 0x7c4c)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x38: /* unneeded value : call 0x2050 but fixed A (0xf3) */
+ if (space.device().safe_pc() == 0x7b87)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x88: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e3)
+ m_bootleg_cmd = 0x00;
+ if (space.device().safe_pc() == 0x7c47)
+ m_bootleg_cmd = 0x00;
+ case 0x89: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e5)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x8a: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x9661)
+ m_bootleg_cmd = data;
+ break;
+ case 0xc0: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e7)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xe3: /* unneeded value : call 0x2050 but fixed A (0x61) */
+ if (space.device().safe_pc() == 0x67e9)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xf7: /* unneeded value : 3 * 'NOP' at 0x034f + 'JR NZ,$035D' at 0x35b */
+ if (space.device().safe_pc() == 0x0349)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xff: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x9670)
+ m_bootleg_cmd = data;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+ case PADDLE2:
+ switch (data)
+ {
+ case 0x24: /* A read from 0xf002 (expected to be 0x9b) */
+ if (space.device().safe_pc() == 0xbd7a)
+ m_bootleg_cmd = data;
+ break;
+ case 0x36: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x7c4c)
+ m_bootleg_cmd = data;
+ break;
+ case 0x38: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x7b87)
+ m_bootleg_cmd = data;
+ break;
+ case 0x88: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e3)
+ m_bootleg_cmd = 0x00;
+ if (space.device().safe_pc() == 0x7c47)
+ m_bootleg_cmd = 0x00;
+ case 0x89: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e5)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0x8a: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x9661)
+ m_bootleg_cmd = data;
+ break;
+ case 0xc0: /* unneeded value : no read back */
+ if (space.device().safe_pc() == 0x67e7)
+ m_bootleg_cmd = 0x00;
+ break;
+ case 0xc3: /* A read from 0xf002 (expected to be 0x1d) */
+ if (space.device().safe_pc() == 0xbd8a)
+ m_bootleg_cmd = data;
+ break;
+ case 0xe3: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x67e9)
+ m_bootleg_cmd = data;
+ break;
+ case 0xf7: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x0349)
+ m_bootleg_cmd = data;
+ break;
+ case 0xff: /* call 0x2050 with A read from 0xf002 and wrong HL */
+ if (space.device().safe_pc() == 0x9670)
+ m_bootleg_cmd = data;
+ break;
+ default:
+ m_bootleg_cmd = 0x00;
+ break;
+ }
+ LOG_D018_W
+ break;
+
+ default:
+ logerror("%04x: arkanoid_bootleg_d018_w - data = %02x - unknown bootleg !\n", space.device().safe_pc(), data);
+ break;
+ }
+}
+
+#ifdef UNUSED_CODE
+READ8_MEMBER(arkanoid_state::block2_bootleg_f000_r)
+{
+ return m_bootleg_cmd;
+}
+#endif
+
+/* Kludge for some bootlegs that read this address */
+READ8_MEMBER(arkanoid_state::arkanoid_bootleg_d008_r)
+{
+ uint8_t arkanoid_bootleg_d008_bit[8];
+ uint8_t arkanoid_bootleg_d008_val;
+ uint8_t arkanoid_paddle_value = ioport("MUX")->read();
+ int b;
+
+ arkanoid_bootleg_d008_bit[4] = arkanoid_bootleg_d008_bit[6] = arkanoid_bootleg_d008_bit[7] = 0; /* untested bits */
+
+ switch (m_bootleg_id)
+ {
+ case ARKANGC:
+ case ARKBLOCK:
+ arkanoid_bootleg_d008_bit[0] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[1] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[2] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[3] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[5] = 0; /* untested bit */
+ break;
+ case ARKANGC2:
+ case BLOCK2:
+ arkanoid_bootleg_d008_bit[0] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[1] = 1; /* check code at 0x0cad */
+ arkanoid_bootleg_d008_bit[2] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[3] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[5] = 0; /* untested bit */
+ break;
+ case ARKBLOC2:
+ arkanoid_bootleg_d008_bit[0] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[1] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[2] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[3] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[5] = (arkanoid_paddle_value < 0x40); /* check code at 0x96b0 */
+ break;
+ case ARKGCBL:
+ arkanoid_bootleg_d008_bit[0] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[1] = 1; /* check code at 0x0cad */
+ arkanoid_bootleg_d008_bit[2] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[3] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[5] = (arkanoid_paddle_value < 0x40); /* check code at 0x96b0 */
+ break;
+ case PADDLE2:
+ arkanoid_bootleg_d008_bit[0] = 1; /* check code at 0x7d65 */
+ arkanoid_bootleg_d008_bit[1] = 1; /* check code at 0x7d65 */
+ arkanoid_bootleg_d008_bit[2] = 1; /* check code at 0x7d65 */
+ arkanoid_bootleg_d008_bit[3] = 1; /* check code at 0x7d65 */
+ arkanoid_bootleg_d008_bit[5] = (arkanoid_paddle_value < 0x40); /* check code at 0x96b0 */
+ break;
+ default:
+ arkanoid_bootleg_d008_bit[0] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[1] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[2] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[3] = 0; /* untested bit */
+ arkanoid_bootleg_d008_bit[5] = 0; /* untested bit */
+ logerror("%04x: arkanoid_bootleg_d008_r - unknown bootleg !\n",space.device().safe_pc());
+ break;
+ }
+
+ arkanoid_bootleg_d008_val = 0;
+ for (b = 0; b < 8; b++)
+ arkanoid_bootleg_d008_val |= (arkanoid_bootleg_d008_bit[b] << b);
+
+ LOG_D008_R
+
+ return arkanoid_bootleg_d008_val;
+}
diff --git a/docs/release/src/hbmame/machine/ng_memcard.cpp b/docs/release/src/hbmame/machine/ng_memcard.cpp
new file mode 100644
index 00000000000..38608a8b62a
--- /dev/null
+++ b/docs/release/src/hbmame/machine/ng_memcard.cpp
@@ -0,0 +1,83 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/*********************************************************************
+
+ ng_memcard.c
+
+ NEOGEO Memory card functions.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "emuopts.h"
+#include "ng_memcard.h"
+
+// device type definition
+const device_type NG_MEMCARD = device_creator<ng_memcard_device>;
+
+//-------------------------------------------------
+// ng_memcard_device - constructor
+//-------------------------------------------------
+
+ng_memcard_device::ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NG_MEMCARD, "NeoGeo Memory Card", tag, owner, clock, "ng_memcard", __FILE__),
+ device_image_interface(mconfig, *this)
+{
+}
+
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void ng_memcard_device::device_start()
+{
+ save_item(NAME(m_memcard_data));
+}
+
+/*-------------------------------------------------
+ memcard_insert - insert an existing memory card
+ with the given index
+-------------------------------------------------*/
+
+image_init_result ng_memcard_device::call_load()
+{
+ if(length() != 0x800)
+ return image_init_result::FAIL;
+
+ fseek(0, SEEK_SET);
+ size_t ret = fread(m_memcard_data, 0x800);
+ if(ret != 0x800)
+ return image_init_result::FAIL;
+
+ return image_init_result::PASS;
+}
+
+void ng_memcard_device::call_unload()
+{
+ fseek(0, SEEK_SET);
+ fwrite(m_memcard_data, 0x800);
+}
+
+image_init_result ng_memcard_device::call_create(int format_type, util::option_resolution *format_options)
+{
+ memset(m_memcard_data, 0, 0x800);
+
+ size_t ret = fwrite(m_memcard_data, 0x800);
+ if(ret != 0x800)
+ return image_init_result::FAIL;
+
+ return image_init_result::PASS;
+}
+
+
+READ8_MEMBER(ng_memcard_device::read)
+{
+ return m_memcard_data[offset];
+}
+
+WRITE8_MEMBER(ng_memcard_device::write)
+{
+ m_memcard_data[offset] = data;
+}
diff --git a/docs/release/src/hbmame/machine/ng_memcard.h b/docs/release/src/hbmame/machine/ng_memcard.h
new file mode 100644
index 00000000000..3cab8b1af66
--- /dev/null
+++ b/docs/release/src/hbmame/machine/ng_memcard.h
@@ -0,0 +1,65 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic
+/*********************************************************************
+
+ ng_memcard.h
+
+ NEOGEO Memory card functions.
+
+*********************************************************************/
+
+#pragma once
+
+#ifndef __NG_MEMCARD_H__
+#define __NG_MEMCARD_H__
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_NEOGEO_MEMCARD_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, NG_MEMCARD, 0)
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+// ======================> ng_memcard_device
+
+class ng_memcard_device : public device_t, public device_image_interface
+{
+public:
+ // construction/destruction
+ ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual iodevice_t image_type() const override { return IO_MEMCARD; }
+
+ virtual bool is_readable() const override { return true; }
+ virtual bool is_writeable() const override { return true; }
+ virtual bool is_creatable() const override { return true; }
+ virtual bool must_be_loaded() const override { return false; }
+ virtual bool is_reset_on_load() const override { return false; }
+ virtual const char *file_extensions() const override { return "neo"; }
+
+ virtual image_init_result call_load() override;
+ virtual void call_unload() override;
+ virtual image_init_result call_create(int format_type, util::option_resolution *format_options) override;
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ DECLARE_READ8_MEMBER(read);
+ DECLARE_WRITE8_MEMBER(write);
+
+ /* returns the index of the current memory card, or -1 if none */
+ int present() { return is_loaded() ? 0 : -1; }
+private:
+ uint8_t m_memcard_data[0x800];
+};
+
+
+// device type definition
+extern const device_type NG_MEMCARD;
+
+
+#endif /* __NG_MEMCARD_H__ */
diff --git a/docs/release/src/hbmame/osd/windows/hbmame.man b/docs/release/src/hbmame/osd/windows/hbmame.man
new file mode 100644
index 00000000000..cd8abb329c5
--- /dev/null
+++ b/docs/release/src/hbmame/osd/windows/hbmame.man
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="HBMAME" type="win32" />
+ <description>Homebrew M.A.M.E.</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+ </dependentAssembly>
+ </dependency>
+</assembly>
diff --git a/docs/release/src/hbmame/osd/windows/hbmame.rc b/docs/release/src/hbmame/osd/windows/hbmame.rc
new file mode 100644
index 00000000000..e9fd900c163
--- /dev/null
+++ b/docs/release/src/hbmame/osd/windows/hbmame.rc
@@ -0,0 +1,49 @@
+//============================================================
+//
+// mess.rc - Minimal resource file for Win32 MAME
+//
+//============================================================
+//
+// Copyright Aaron Giles
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or
+// without modification, are permitted provided that the
+// following conditions are met:
+//
+// * Redistributions of source code must retain the above
+// copyright notice, this list of conditions and the
+// following disclaimer.
+// * Redistributions in binary form must reproduce the
+// above copyright notice, this list of conditions and
+// the following disclaimer in the documentation and/or
+// other materials provided with the distribution.
+// * Neither the name 'MAME' nor the names of its
+// contributors may be used to endorse or promote
+// products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGE (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//============================================================
+
+#define NOWINRES
+#include "windows.h"
+#include "commctrl.h"
+//#include "hbmamevers.rc"
+
+1 24 MOVEABLE PURE "hbmame.man"
+
+2 ICON DISCARDABLE "../../osd/winui/res/hbmame.ico"
diff --git a/docs/release/src/hbmame/osd/windows/hbmame/hbmame.ico b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.ico
new file mode 100644
index 00000000000..845ec9aedd7
--- /dev/null
+++ b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.ico
Binary files differ
diff --git a/docs/release/src/hbmame/osd/windows/hbmame/hbmame.man b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.man
new file mode 100644
index 00000000000..dea8c25868e
--- /dev/null
+++ b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.man
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
+ <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="HBMAME" type="win32" />
+ <description>Home Brew Multiple Arcade Machine Emulator</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+ </dependentAssembly>
+ </dependency>
+ <asmv3:application>
+ <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+ <dpiAware>true</dpiAware>
+ </asmv3:windowsSettings>
+ </asmv3:application>
+</assembly>
diff --git a/docs/release/src/hbmame/osd/windows/hbmame/hbmame.rc b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.rc
new file mode 100644
index 00000000000..ca578cfb58c
--- /dev/null
+++ b/docs/release/src/hbmame/osd/windows/hbmame/hbmame.rc
@@ -0,0 +1,11 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+
+//#define NOWINRES
+#include "windows.h"
+//#include "commctrl.h"
+//#include "hbmamevers.rc"
+
+1 24 MOVEABLE PURE "hbmame.man"
+
+2 ICON DISCARDABLE "hbmame.ico"
diff --git a/docs/release/src/hbmame/video/cps1.cpp b/docs/release/src/hbmame/video/cps1.cpp
new file mode 100644
index 00000000000..0b63f49e965
--- /dev/null
+++ b/docs/release/src/hbmame/video/cps1.cpp
@@ -0,0 +1,2930 @@
+// license:BSD-3-Clause
+// copyright-holders:Paul Leaman
+/*****************************************************************************************************************************
+
+Format of the .key files:
+
+All values are little-endian
+
+Offset Purpose
+00 0x55 file header
+01 cpsb_addr
+02,03 cpsb_value
+04 mult_factor1
+05 mult_factor2
+06 mult_result_lo
+07 mult_result_hi
+08 layer_control
+09 priority[0]
+0A priority[1]
+0B priority[2]
+0C priority[3]
+0D palette_control
+0E layer_enable_mask[0]
+0F layer_enable_mask[1]
+10 layer_enable_mask[2]
+11 layer_enable_mask[3]
+12 layer_enable_mask[4]
+13 in2_addr
+14 in3_addr
+15 out2_addr
+16,17 bootleg_kludge
+18 scrollx1 offset for bootlegs (negative values are subtracted, e.g 0x81 = subtract 1)
+19 scrollx2 offset for bootlegs (as above)
+1A scrollx3 offset for bootlegs (as above)
+1B,1C,1D bank_sizes[0]
+1E,1F,20 bank_sizes[1]
+21,22,23 bank_sizes[2]
+24,25,26 bank_sizes[3]
+27 bank_type.type(bits 0-4) and bank_number(bits 6-7)
+28,29,2A bank_type.start
+2B,2C,2D bank_type.end
+The bank_type occurs 8 times for the 8 possible combinations
+After that, the remainder of the file is binary zeroes.
+
+*****************************************************************************************************************************/
+#include "emu.h"
+#include "includes/cps1.h"
+
+/********************************************************************
+
+ Configuration table:
+
+********************************************************************/
+#define WRITE_FILE 0
+
+/* Game specific data */
+
+#define GFXTYPE_SPRITES (1<<0)
+#define GFXTYPE_SCROLL1 (1<<1)
+#define GFXTYPE_SCROLL2 (1<<2)
+#define GFXTYPE_SCROLL3 (1<<3)
+#define GFXTYPE_STARS (1<<4)
+
+
+#define __not_applicable__ -1,-1,-1,-1,-1,-1,-1
+
+/* CPSB ID multiply protection unknown ctrl priority masks palctrl layer enable masks */
+#define CPS_B_01 -1, 0x0000, __not_applicable__, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30}
+#define CPS_B_02 0x20,0x0002, __not_applicable__, 0x2c,{0x2a,0x28,0x26,0x24},0x22, {0x02,0x04,0x08,0x00,0x00}
+#define CPS_B_03 -1, 0x0000, __not_applicable__, 0x30,{0x2e,0x2c,0x2a,0x28},0x26, {0x20,0x10,0x08,0x00,0x00}
+#define CPS_B_04 0x20,0x0004, __not_applicable__, 0x2e,{0x26,0x30,0x28,0x32},0x2a, {0x02,0x04,0x08,0x00,0x00}
+#define CPS_B_05 0x20,0x0005, __not_applicable__, 0x28,{0x2a,0x2c,0x2e,0x30},0x32, {0x02,0x08,0x20,0x14,0x14}
+#define CPS_B_11 0x32,0x0401, __not_applicable__, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x08,0x10,0x20,0x00,0x00}
+#define CPS_B_12 0x20,0x0402, __not_applicable__, 0x2c,{0x2a,0x28,0x26,0x24},0x22, {0x02,0x04,0x08,0x00,0x00}
+#define CPS_B_13 0x2e,0x0403, __not_applicable__, 0x22,{0x24,0x26,0x28,0x2a},0x2c, {0x20,0x02,0x04,0x00,0x00}
+#define CPS_B_14 0x1e,0x0404, __not_applicable__, 0x12,{0x14,0x16,0x18,0x1a},0x1c, {0x08,0x20,0x10,0x00,0x00}
+#define CPS_B_15 0x0e,0x0405, __not_applicable__, 0x02,{0x04,0x06,0x08,0x0a},0x0c, {0x04,0x02,0x20,0x00,0x00}
+#define CPS_B_16 0x00,0x0406, __not_applicable__, 0x0c,{0x0a,0x08,0x06,0x04},0x02, {0x10,0x0a,0x0a,0x00,0x00}
+#define CPS_B_17 0x08,0x0407, __not_applicable__, 0x14,{0x12,0x10,0x0e,0x0c},0x0a, {0x08,0x14,0x02,0x00,0x00} // the sf2 -> strider conversion needs 0x04 for the 2nd layer enable on one level, gfx confirmed to appear on the PCB, register at the time is 0x8e, so 0x10 is not set.
+#define CPS_B_18 0x10,0x0408, __not_applicable__, 0x1c,{0x1a,0x18,0x16,0x14},0x12, {0x10,0x08,0x02,0x00,0x00}
+#define CPS_B_21_DEF 0x32, -1, 0x00,0x02,0x04,0x06, 0x08, -1, -1, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30} // pang3 sets layer enable to 0x26 on startup
+#define CPS_B_21_BT1 0x32,0x0800, 0x0e,0x0c,0x0a,0x08, 0x06,0x04,0x02, 0x28,{0x26,0x24,0x22,0x20},0x30, {0x20,0x04,0x08,0x12,0x12}
+#define CPS_B_21_BT2 -1, -1, 0x1e,0x1c,0x1a,0x18, -1, 0x0c,0x0a, 0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x30,0x08,0x30,0x00,0x00}
+#define CPS_B_21_BT3 -1, -1, 0x06,0x04,0x02,0x00, 0x0e,0x0c,0x0a, 0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x20,0x12,0x12,0x00,0x00}
+#define CPS_B_21_BT4 -1, -1, 0x06,0x04,0x02,0x00, 0x1e,0x1c,0x1a, 0x28,{0x26,0x24,0x22,0x20},0x30, {0x20,0x10,0x02,0x00,0x00}
+#define CPS_B_21_BT5 0x32, -1, 0x0e,0x0c,0x0a,0x08, 0x1e,0x1c,0x1a, 0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x20,0x04,0x02,0x00,0x00}
+#define CPS_B_21_BT6 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x20,0x14,0x14,0x00,0x00}
+#define CPS_B_21_BT7 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x2c,{ -1, -1, -1, -1 },0x12, {0x14,0x02,0x14,0x00,0x00}
+#define CPS_B_21_QS1 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x22,{0x24,0x26,0x28,0x2a},0x2c, {0x10,0x08,0x04,0x00,0x00}
+#define CPS_B_21_QS2 -1, -1, -1, -1, -1, -1, -1, 0x2e,0x20, 0x0a,{0x0c,0x0e,0x00,0x02},0x04, {0x16,0x16,0x16,0x00,0x00}
+#define CPS_B_21_QS3 0x0e,0x0c00, -1, -1, -1, -1, 0x2c, -1, -1, 0x12,{0x14,0x16,0x08,0x0a},0x0c, {0x04,0x02,0x20,0x00,0x00}
+#define CPS_B_21_QS4 0x2e,0x0c01, -1, -1, -1, -1, 0x1c,0x1e,0x08, 0x16,{0x00,0x02,0x28,0x2a},0x2c, {0x04,0x08,0x10,0x00,0x00}
+#define CPS_B_21_QS5 0x1e,0x0c02, -1, -1, -1, -1, 0x0c, -1, -1, 0x2a,{0x2c,0x2e,0x30,0x32},0x1c, {0x04,0x08,0x10,0x00,0x00}
+#define HACK_B_1 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x14,{0x12,0x10,0x0e,0x0c},0x0a, {0x0e,0x0e,0x0e,0x30,0x30}
+#define HACK_B_2 -1, -1, 0x0e,0x0c,0x0a,0x08, 0x06,0x04,0x02, 0x28,{0x26,0x24,0x22,0x20},0x22, {0x20,0x04,0x08,0x12,0x12}
+
+// HBMAME extras
+
+#define HACK_H_2 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x20,{ -1, -1, -1, -1 },0x2a, {0x02,0x02,0x02,0x00,0x00} // wofh etc
+#define HACK_H_3 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x04,{0x12,0x10,0x0e,0x0c},0x0a, {0x02,0x02,0x02,0x00,0x00} // not used
+#define HACK_H_4 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x30,{0x2e,0x2c,0x2a,0x28},0x26, {0x02,0x04,0x08,0x00,0x00} // not used
+#define HACK_H_5 -1, 0x0000, __not_applicable__, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x40,0x40,0x40,0x00,0x00} // daimakb
+#define HACK_H_6 -1, -1, 0x06,0x04,0x02,0x00, 0x1e,0x1c,0x1a, 0x28,{0x26,0x24,0x22,0x20},0x30, {0x40,0x10,0x02,0x00,0x00} // knightsb2
+#define HACK_H_7 -1, -1, 0x06,0x04,0x02,0x00, 0x1e,0x1c,0x1a, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x20,0x10,0x02,0x00,0x00} // knightsha
+#define HACK_H_8 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x20,{0x00,0x00,0x00,0x00},0x00, {0x80,0x80,0x80,0x00,0x00}
+
+/*
+CPS_B_21_DEF is CPS-B-21 at default settings (no battery)
+CPS_B_21_BTx are various battery configurations
+CPS_B_21_QSx are various battery configurations in Q-Sound games
+*/
+
+
+// LWCHR and LW621 are equivalent as far as the game is concerned, though the
+// equations are different
+
+#define mapper_LWCHR { 0x8000, 0x8000, 0, 0 }, mapper_LWCHR_table
+static const struct gfx_range mapper_LWCHR_table[] =
+{
+ // verified from PAL dump (PAL16P8B @ 3A):
+ // bank 0 = pin 19 (ROMs 1,5,8,12)
+ // bank 1 = pin 16 (ROMs 2,6,9,13)
+ // pin 12 and pin 14 are always enabled (except for stars)
+ // note that allowed codes go up to 0x1ffff but physical ROM is half that size
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SCROLL1, 0x00000, 0x1ffff, 0 },
+ { GFXTYPE_STARS, 0x00000, 0x1ffff, 1 },
+ { GFXTYPE_SCROLL2, 0x00000, 0x1ffff, 1 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 },
+ { 0 }
+};
+
+#define mapper_LW621 { 0x8000, 0x8000, 0, 0 }, mapper_LW621_table
+static const struct gfx_range mapper_LW621_table[] =
+{
+ // verified from PAL dump (PAL @ 1A):
+ // bank 0 = pin 18
+ // bank 1 = pin 14
+ // pins 19, 16, 17, and 12 give an alternate half-size mapping which would
+ // allow to use smaller ROMs:
+ // pin 19
+ // 0 00000-03fff
+ // pin 16
+ // 0 04000-07fff
+ // 1 00000-1ffff
+ // pin 17
+ // 2 00000-1ffff
+ // 3 00000-1ffff
+ // 4 00000-1ffff
+ // pin 12
+ // 3 00000-1ffff
+ //
+ // note that allowed codes go up to 0x1ffff but physical ROM is half that size
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SCROLL1, 0x00000, 0x1ffff, 0 },
+ { GFXTYPE_STARS, 0x00000, 0x1ffff, 1 },
+ { GFXTYPE_SCROLL2, 0x00000, 0x1ffff, 1 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 },
+ { 0 }
+};
+
+
+// DM620, DM22A and DAM63B are equivalent as far as the game is concerned, though
+// the equations are quite different
+
+#define mapper_DM620 { 0x8000, 0x2000, 0x2000, 0 }, mapper_DM620_table
+static const struct gfx_range mapper_DM620_table[] =
+{
+ // verified from PAL dump (PAL16P8B @ 2A):
+ // bank 0 = pin 19 (ROMs 5,6,7,8)
+ // bank 1 = pin 16 (ROMs 9,11,13,15,18,20,22,24)
+ // bank 2 = pin 14 (ROMs 10,12,14,16,19,21,23,25)
+ // pin 12 is never enabled
+ // note that bank 0 is enabled whenever banks 1 or 2 are not enabled,
+ // which would make it highly redundant, so I'm relying on the table
+ // to be scanned top to bottom and using a catch-all clause at the end.
+
+ /* type start end bank */
+ { GFXTYPE_SCROLL3, 0x8000, 0xbfff, 1 },
+ { GFXTYPE_SPRITES, 0x2000, 0x3fff, 2 },
+ { GFXTYPE_STARS | GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 0 },
+ { 0 }
+};
+
+#define mapper_DM22A { 0x4000, 0x4000, 0x2000, 0x2000 }, mapper_DM22A_table
+static const struct gfx_range mapper_DM22A_table[] =
+{
+ // verified from PAL dump
+ // bank 0 = pin 19
+ // bank 1 = pin 16
+ // bank 2 = pin 14
+ // bank 3 = pin 12
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x01fff, 0 },
+ { GFXTYPE_SCROLL1, 0x02000, 0x03fff, 0 },
+ { GFXTYPE_SCROLL2, 0x04000, 0x07fff, 1 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 2 },
+ { GFXTYPE_SPRITES, 0x02000, 0x03fff, 3 },
+ { 0 }
+};
+
+#define mapper_DAM63B { 0x8000, 0x8000, 0, 0 }, mapper_DAM63B_table
+static const struct gfx_range mapper_DAM63B_table[] =
+{
+ // verified from PAL dump:
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // pins 12,13,14,15 are always enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x01fff, 0 },
+ { GFXTYPE_SCROLL1, 0x02000, 0x02fff, 0 },
+ { GFXTYPE_SCROLL2, 0x04000, 0x07fff, 0 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 },
+ { GFXTYPE_SPRITES, 0x02000, 0x03fff, 1 },
+ { 0 }
+};
+
+
+// ST24M1 and ST22B are equivalent except for the stars range which is
+// different. This has no practical effect.
+
+#define mapper_ST24M1 { 0x8000, 0x8000, 0, 0 }, mapper_ST24M1_table
+static const struct gfx_range mapper_ST24M1_table[] =
+{
+ // verified from PAL dump
+ // bank 0 = pin 19 (ROMs 2,4,6,8)
+ // bank 1 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 and pin 14 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_STARS, 0x00000, 0x003ff, 0 },
+ { GFXTYPE_SPRITES, 0x00000, 0x04fff, 0 },
+ { GFXTYPE_SCROLL2, 0x04000, 0x07fff, 0 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x07fff, 1 },
+ { GFXTYPE_SCROLL1, 0x07000, 0x07fff, 1 },
+ { 0 }
+};
+
+#define mapper_ST22B { 0x4000, 0x4000, 0x4000, 0x4000 }, mapper_ST22B_table
+static const struct gfx_range mapper_ST22B_table[] =
+{
+ // verified from PAL dump
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // bank 2 = pin 14 (ROMs 3,7,11,15,19,21,26,28)
+ // bank 3 = pin 12 (ROMS 4,8,12,16,20,22,27,29)
+
+ /* type start end bank */
+ { GFXTYPE_STARS, 0x00000, 0x1ffff, 0 },
+ { GFXTYPE_SPRITES, 0x00000, 0x03fff, 0 },
+ { GFXTYPE_SPRITES, 0x04000, 0x04fff, 1 },
+ { GFXTYPE_SCROLL2, 0x04000, 0x07fff, 1 },
+ { GFXTYPE_SCROLL3, 0x00000, 0x03fff, 2 },
+ { GFXTYPE_SCROLL3, 0x04000, 0x07fff, 3 },
+ { GFXTYPE_SCROLL1, 0x07000, 0x07fff, 3 },
+ { 0 }
+};
+
+
+#define mapper_TK22B { 0x4000, 0x4000, 0x4000, 0x4000 }, mapper_TK22B_table
+static const struct gfx_range mapper_TK22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // bank 2 = pin 14 (ROMs 3,7,11,15,19,21,26,28)
+ // bank 3 = pin 12 (ROMS 4,8,12,16,20,22,27,29)
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SPRITES, 0x4000, 0x5fff, 1 },
+ { GFXTYPE_SCROLL1, 0x6000, 0x7fff, 1 },
+ { GFXTYPE_SCROLL3, 0x0000, 0x3fff, 2 },
+ { GFXTYPE_SCROLL2, 0x4000, 0x7fff, 3 },
+ { 0 }
+};
+
+
+#define mapper_WL24B { 0x8000, 0x8000, 0, 0 }, mapper_WL24B_table
+static const struct gfx_range mapper_WL24B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // bank 1 = pin 12 (ROMs 10,12,14,16,20,22,24,26)
+ // pin 14 and pin 19 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x4fff, 0 },
+ { GFXTYPE_SCROLL3, 0x5000, 0x6fff, 0 },
+ { GFXTYPE_SCROLL1, 0x7000, 0x7fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x3fff, 1 },
+ { 0 }
+};
+
+
+#define mapper_S224B { 0x8000, 0, 0, 0 }, mapper_S224B_table
+static const struct gfx_range mapper_S224B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 & pin 14 give an alternate half-size mapping which would allow to
+ // populate the 8-bit ROM sockets instead of the 16-bit ones:
+ // pin 12
+ // 0 00000 - 03fff
+ // pin 14
+ // 0 04000 - 043ff
+ // 1 04400 - 04bff
+ // 2 06000 - 07fff
+ // 3 04c00 - 05fff
+ // pin 19 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x43ff, 0 },
+ { GFXTYPE_SCROLL1, 0x4400, 0x4bff, 0 },
+ { GFXTYPE_SCROLL3, 0x4c00, 0x5fff, 0 },
+ { GFXTYPE_SCROLL2, 0x6000, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_YI24B { 0x8000, 0, 0, 0 }, mapper_YI24B_table
+static const struct gfx_range mapper_YI24B_table[] =
+{
+ // verified from JED:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 & pin 14 give an alternate half-size mapping which would allow to
+ // populate the 8-bit ROM sockets instead of the 16-bit ones:
+ // pin 12
+ // 0 0000-1fff
+ // 3 2000-3fff
+ // pin 14
+ // 1 4000-47ff
+ // 2 4800-7fff
+ // pin 19 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x1fff, 0 },
+ { GFXTYPE_SCROLL3, 0x2000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL1, 0x4000, 0x47ff, 0 },
+ { GFXTYPE_SCROLL2, 0x4800, 0x7fff, 0 },
+ { 0 }
+};
+
+
+// AR24B and AR22B are equivalent, but since we could dump both PALs we are
+// documenting both.
+
+#define mapper_AR24B { 0x8000, 0, 0, 0 }, mapper_AR24B_table
+static const struct gfx_range mapper_AR24B_table[] =
+{
+ // verified from JED:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 & pin 14 give an alternate half-size mapping which would allow to
+ // populate the 8-bit ROM sockets instead of the 16-bit ones:
+ // pin 12
+ // 0 0000-2fff
+ // 1 3000-3fff
+ // pin 14
+ // 2 4000-5fff
+ // 3 6000-7fff
+ // pin 19 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL1, 0x3000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL2, 0x4000, 0x5fff, 0 },
+ { GFXTYPE_SCROLL3, 0x6000, 0x7fff, 0 },
+ { 0 }
+};
+
+#define mapper_AR22B { 0x4000, 0x4000, 0, 0 }, mapper_AR22B_table
+static const struct gfx_range mapper_AR22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // pins 12 and 14 are tristated
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL1, 0x3000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL2, 0x4000, 0x5fff, 1 },
+ { GFXTYPE_SCROLL3, 0x6000, 0x7fff, 1 },
+ { 0 }
+};
+
+
+#define mapper_O224B { 0x8000, 0x4000, 0, 0 }, mapper_O224B_table
+static const struct gfx_range mapper_O224B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 2,4,6,8)
+ // bank 1 = pin 12 (ROMs 10,12,14,16,20,22,24,26)
+ // pin 16 & pin 14 appear to be an alternate half-size mapping for bank 0
+ // but scroll1 is missing:
+ // pin 16
+ // 2 00c00 - 03bff
+ // 3 03c00 - 03fff
+ // pin 14
+ // 3 04000 - 04bff
+ // 0 04c00 - 07fff
+
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x0bff, 0 },
+ { GFXTYPE_SCROLL2, 0x0c00, 0x3bff, 0 },
+ { GFXTYPE_SCROLL3, 0x3c00, 0x4bff, 0 },
+ { GFXTYPE_SPRITES, 0x4c00, 0x7fff, 0 },
+ { GFXTYPE_SPRITES, 0x8000, 0xa7ff, 1 },
+ { GFXTYPE_SCROLL2, 0xa800, 0xb7ff, 1 },
+ { GFXTYPE_SCROLL3, 0xb800, 0xbfff, 1 },
+ { 0 }
+};
+
+
+#define mapper_MS24B { 0x8000, 0, 0, 0 }, mapper_MS24B_table
+static const struct gfx_range mapper_MS24B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 14 duplicates pin 16 allowing to populate the 8-bit ROM sockets
+ // instead of the 16-bit ones.
+ // pin 12 is enabled only for sprites:
+ // 0 0000-3fff
+ // pin 19 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL1, 0x4000, 0x4fff, 0 },
+ { GFXTYPE_SCROLL2, 0x5000, 0x6fff, 0 },
+ { GFXTYPE_SCROLL3, 0x7000, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_CK24B { 0x8000, 0, 0, 0 }, mapper_CK24B_table
+static const struct gfx_range mapper_CK24B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL1, 0x3000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL2, 0x4000, 0x6fff, 0 },
+ { GFXTYPE_SCROLL3, 0x7000, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_NM24B { 0x8000, 0, 0, 0 }, mapper_NM24B_table
+static const struct gfx_range mapper_NM24B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 & pin 14 give an alternate half-size mapping which would allow to
+ // populate the 8-bit ROM sockets instead of the 16-bit ones:
+ // pin 12
+ // 0 00000 - 03fff
+ // 2 00000 - 03fff
+ // pin 14
+ // 1 04000 - 047ff
+ // 0 04800 - 067ff
+ // 2 04800 - 067ff
+ // 3 06800 - 07fff
+ // pin 19 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL1, 0x4000, 0x47ff, 0 },
+ { GFXTYPE_SPRITES, 0x4800, 0x67ff, 0 },
+ { GFXTYPE_SCROLL2, 0x4800, 0x67ff, 0 },
+ { GFXTYPE_SCROLL3, 0x6800, 0x7fff, 0 },
+ { 0 }
+};
+
+
+// CA24B and CA22B are equivalent, but since we could dump both PALs we are
+// documenting both.
+
+#define mapper_CA24B { 0x8000, 0, 0, 0 }, mapper_CA24B_table
+static const struct gfx_range mapper_CA24B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // pin 12 & pin 14 give an alternate half-size mapping which would allow to
+ // populate the 8-bit ROM sockets instead of the 16-bit ones:
+ // pin 12
+ // 0 0000-2fff
+ // 2 0000-2fff
+ // 3 3000-3fff
+ // pin 14
+ // 3 4000-4fff
+ // 1 5000-57ff
+ // 0 5800-7fff
+ // 2 5800-7fff
+ // pin 19 is never enabled (actually it is always enabled when PAL pin 1 is 1, purpose unknown)
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL3, 0x3000, 0x4fff, 0 },
+ { GFXTYPE_SCROLL1, 0x5000, 0x57ff, 0 },
+ { GFXTYPE_SPRITES, 0x5800, 0x7fff, 0 },
+ { GFXTYPE_SCROLL2, 0x5800, 0x7fff, 0 },
+ { 0 }
+};
+
+#define mapper_CA22B { 0x4000, 0x4000, 0, 0 }, mapper_CA22B_table
+static const struct gfx_range mapper_CA22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // pin 12 and pin 14 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x2fff, 0 },
+ { GFXTYPE_SCROLL3, 0x3000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL3, 0x4000, 0x4fff, 1 },
+ { GFXTYPE_SCROLL1, 0x5000, 0x57ff, 1 },
+ { GFXTYPE_SPRITES, 0x5800, 0x7fff, 1 },
+ { GFXTYPE_SCROLL2, 0x5800, 0x7fff, 1 },
+ { 0 }
+};
+
+
+#define mapper_STF29 { 0x8000, 0x8000, 0x8000, 0 }, mapper_STF29_table
+static const struct gfx_range mapper_STF29_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 5,6,7,8)
+ // bank 1 = pin 14 (ROMs 14,15,16,17)
+ // bank 2 = pin 12 (ROMS 24,25,26,27)
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES, 0x08000, 0x0ffff, 1 },
+ { GFXTYPE_SPRITES, 0x10000, 0x11fff, 2 },
+ { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 2 },
+ { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 2 },
+ { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 2 },
+ { 0 }
+};
+
+
+// RT24B and RT22B are equivalent, but since we could dump both PALs we are
+// documenting both.
+
+#define mapper_RT24B { 0x8000, 0x8000, 0, 0 }, mapper_RT24B_table
+static const struct gfx_range mapper_RT24B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 16 (ROMs 1,3,5,7)
+ // bank 1 = pin 19 (ROMs 2,4,6,8)
+ // pin 12 & pin 14 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x53ff, 0 },
+ { GFXTYPE_SCROLL1, 0x5400, 0x6fff, 0 },
+ { GFXTYPE_SCROLL3, 0x7000, 0x7fff, 0 },
+ { GFXTYPE_SCROLL3, 0x0000, 0x3fff, 1 },
+ { GFXTYPE_SCROLL2, 0x2800, 0x7fff, 1 },
+ { GFXTYPE_SPRITES, 0x5400, 0x7fff, 1 },
+ { 0 }
+};
+
+#define mapper_RT22B { 0x4000, 0x4000, 0x4000, 0x4000 }, mapper_RT22B_table
+static const struct gfx_range mapper_RT22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // bank 2 = pin 14 (ROMs 3,7,11,15,19,21,26,28)
+ // bank 3 = pin 12 (ROMS 4,8,12,16,20,22,27,29)
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SPRITES, 0x4000, 0x53ff, 1 },
+ { GFXTYPE_SCROLL1, 0x5400, 0x6fff, 1 },
+ { GFXTYPE_SCROLL3, 0x7000, 0x7fff, 1 },
+ { GFXTYPE_SCROLL3, 0x0000, 0x3fff, 2 },
+ { GFXTYPE_SCROLL2, 0x2800, 0x3fff, 2 },
+ { GFXTYPE_SCROLL2, 0x4000, 0x7fff, 3 },
+ { GFXTYPE_SPRITES, 0x5400, 0x7fff, 3 },
+ { 0 }
+};
+
+
+#define mapper_KD29B { 0x8000, 0x8000, 0, 0 }, mapper_KD29B_table
+static const struct gfx_range mapper_KD29B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,2,3,4)
+ // bank 1 = pin 14 (ROMs 10,11,12,13)
+ // pin 12 is never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES, 0x8000, 0x8fff, 1 },
+ { GFXTYPE_SCROLL2, 0x9000, 0xbfff, 1 },
+ { GFXTYPE_SCROLL1, 0xc000, 0xd7ff, 1 },
+ { GFXTYPE_SCROLL3, 0xd800, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_CC63B { 0x8000, 0x8000, 0, 0 }, mapper_CC63B_table
+static const struct gfx_range mapper_CC63B_table[] =
+{
+ // verified from PAL dump:
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // pins 12,13,14,15 are always enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES, 0x8000, 0xffff, 1 },
+ { GFXTYPE_SCROLL1, 0x8000, 0xffff, 1 },
+ { GFXTYPE_SCROLL2, 0x8000, 0xffff, 1 },
+ { GFXTYPE_SCROLL3, 0x8000, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_KR63B { 0x8000, 0x8000, 0, 0 }, mapper_KR63B_table
+static const struct gfx_range mapper_KR63B_table[] =
+{
+ // verified from PAL dump:
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // pins 12,13,14,15 are always enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SCROLL1, 0x8000, 0x9fff, 1 },
+ { GFXTYPE_SPRITES, 0x8000, 0xcfff, 1 },
+ { GFXTYPE_SCROLL2, 0x8000, 0xcfff, 1 },
+ { GFXTYPE_SCROLL3, 0xd000, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_S9263B { 0x8000, 0x8000, 0x8000, 0 }, mapper_S9263B_table
+static const struct gfx_range mapper_S9263B_table[] =
+{
+ // verified from PAL dump:
+ // FIXME there is some problem with this dump since pin 14 is never enabled
+ // instead of being the same as pin 15 as expected
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // bank2 = pin 15 (ROMs 10,12) & pin 14 (ROMs 11,13)
+ // pins 12 and 13 are the same as 14 and 15
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES, 0x08000, 0x0ffff, 1 },
+ { GFXTYPE_SPRITES, 0x10000, 0x11fff, 2 },
+ { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 2 },
+ { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 2 },
+ { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 2 },
+ { 0 }
+};
+
+
+// VA22B and VA63B are equivalent, but since we could dump both PALs we are
+// documenting both.
+
+#define mapper_VA22B { 0x4000, 0x4000, 0, 0 }, mapper_VA22B_table
+static const struct gfx_range mapper_VA22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19 (ROMs 1,5, 9,13,17,24,32,38)
+ // bank 1 = pin 16 (ROMs 2,6,10,14,18,25,33,39)
+ // pin 12 and pin 14 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x03fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x04000, 0x07fff, 1 },
+ { 0 }
+};
+
+#define mapper_VA63B { 0x8000, 0, 0, 0 }, mapper_VA63B_table
+static const struct gfx_range mapper_VA63B_table[] =
+{
+ // verified from PAL dump (PAL # uncertain):
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // pins 12,13,14,15,16,17 are never enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_Q522B { 0x8000, 0, 0, 0 }, mapper_Q522B_table
+static const struct gfx_range mapper_Q522B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x0000, 0x6fff, 0 },
+ { GFXTYPE_SCROLL3, 0x7000, 0x77ff, 0 },
+ { GFXTYPE_SCROLL1, 0x7800, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_TK263B { 0x8000, 0x8000, 0, 0 }, mapper_TK263B_table
+static const struct gfx_range mapper_TK263B_table[] =
+{
+ // verified from PAL dump:
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // pins 12,13,14,15 are always enabled
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x08000, 0x0ffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_CD63B { 0x8000, 0x8000, 0, 0 }, mapper_CD63B_table
+static const struct gfx_range mapper_CD63B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 },
+ { GFXTYPE_SPRITES, 0x1000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x8000, 0xdfff, 1 },
+ { GFXTYPE_SCROLL3, 0xe000, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_PS63B { 0x8000, 0x8000, 0, 0 }, mapper_PS63B_table
+static const struct gfx_range mapper_PS63B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 },
+ { GFXTYPE_SPRITES, 0x1000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x8000, 0xdbff, 1 },
+ { GFXTYPE_SCROLL3, 0xdc00, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_MB63B { 0x8000, 0x8000, 0x8000, 0 }, mapper_MB63B_table
+static const struct gfx_range mapper_MB63B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x00000, 0x00fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x01000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x08000, 0x0ffff, 1 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x10000, 0x167ff, 2 },
+ { GFXTYPE_SCROLL3, 0x16800, 0x17fff, 2 },
+ { 0 }
+};
+
+
+#define mapper_QD22B { 0x4000, 0, 0, 0 }, mapper_QD22B_table
+static const struct gfx_range mapper_QD22B_table[] =
+{
+ // verified from PAL dump:
+ // bank 0 = pin 19
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL1, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL2, 0x0000, 0x3fff, 0 },
+ { GFXTYPE_SCROLL3, 0x0000, 0x3fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_QAD63B { 0x8000, 0, 0, 0 }, mapper_QAD63B_table
+static const struct gfx_range mapper_QAD63B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x07ff, 0 },
+ { GFXTYPE_SCROLL3, 0x0800, 0x1fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x2000, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_TN2292 { 0x8000, 0x8000, 0, 0 }, mapper_TN2292_table
+static const struct gfx_range mapper_TN2292_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 },
+ { GFXTYPE_SCROLL3, 0x1000, 0x3fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x4000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x8000, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_RCM63B { 0x8000, 0x8000, 0x8000, 0x8000 }, mapper_RCM63B_table
+static const struct gfx_range mapper_RCM63B_table[] =
+{
+ // verified from PAL dump:
+ // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4)
+ // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8)
+ // bank0 = pin 15 (ROMs 10,12) & pin 14 (ROMs 11,13)
+ // bank1 = pin 13 (ROMs 14,16) & pin 12 (ROMs 15,17)
+
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x08000, 0x0ffff, 1 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x10000, 0x17fff, 2 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x18000, 0x1ffff, 3 },
+ { 0 }
+};
+
+
+#define mapper_PKB10B { 0x8000, 0, 0, 0 }, mapper_PKB10B_table
+static const struct gfx_range mapper_PKB10B_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x1000, 0x5fff, 0 },
+ { GFXTYPE_SCROLL3, 0x6000, 0x7fff, 0 },
+ { 0 }
+};
+
+
+#define mapper_pang3 { 0x8000, 0x8000, 0, 0 }, mapper_pang3_table
+static const struct gfx_range mapper_pang3_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x0000, 0x7fff, 0 },
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x8000, 0x9fff, 1 },
+ { GFXTYPE_SCROLL1, 0xa000, 0xbfff, 1 },
+ { GFXTYPE_SCROLL3, 0xc000, 0xffff, 1 },
+ { 0 }
+};
+
+
+#define mapper_sfzch { 0x20000, 0, 0, 0 }, mapper_sfzch_table
+static const struct gfx_range mapper_sfzch_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 0 },
+ { 0 }
+};
+
+/*
+ I don't know if CPS2 ROM boards use PALs as well; since all games seem to be
+ well behaved, I'll just assume that there is no strong checking of gfx type.
+ (sprites are not listed here because they are addressed linearly by the CPS2
+ sprite code)
+ */
+#define mapper_cps2 { 0x20000, 0x20000, 0, 0 }, mapper_cps2_table
+static const struct gfx_range mapper_cps2_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 }, // 20000-3ffff physical
+ { 0 }
+};
+
+
+#define mapper_KNM10B { 0x8000, 0x8000, 0x8000, 0 }, mapper_KNM10B_table
+static const struct gfx_range mapper_KNM10B_table[] =
+{
+ /* type start end bank */
+
+ { GFXTYPE_SPRITES , 0x00000, 0x07fff, 0 },
+ { GFXTYPE_SPRITES , 0x08000, 0x0ffff, 1 },
+ { GFXTYPE_SPRITES , 0x10000, 0x17fff, 2 },
+ { GFXTYPE_SCROLL2 , 0x04000, 0x07fff, 2 },
+ { GFXTYPE_SCROLL1, 0x01000, 0x01fff, 2 },
+ { GFXTYPE_SCROLL3 , 0x02000, 0x03fff, 2 },
+ { 0 }
+};
+
+#if 0
+#define mapper_frog { 0x8000, 0, 0, 0 }, mapper_frog_table
+static const struct gfx_range mapper_frog_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x04e0, 0x050f, 0 }, // frogs and bugs
+ { GFXTYPE_SCROLL1, 0x0000, 0x003f, 0 }, // text
+ { GFXTYPE_SCROLL2, 0x0140, 0x025f, 0 }, // frog feast title
+ { GFXTYPE_SCROLL3, 0x0040, 0x04df, 0 }, // logo and background
+ { 0 }
+};
+
+#define mapper_demo { 0x8000, 0, 0, 0 }, mapper_demo_table
+static const struct gfx_range mapper_demo_table[] =
+{
+ /* type start end bank */
+ { GFXTYPE_SPRITES, 0x0000, 0x003f, 0 }, // moveable chaos
+ { GFXTYPE_SCROLL1, 0x4400, 0x445f, 0 }, // text
+ { GFXTYPE_SCROLL2, 0x0040, 0x00ff, 0 }, // logo, blue box, 10th
+ { GFXTYPE_SCROLL3, 0x0100, 0x011f, 0 }, // must not allow access to 0000, otherwise not used
+ { 0 }
+};
+#endif
+
+
+static const struct CPS1config cps1_config_table[]=
+{
+ /* name CPSB gfx mapper in2 in3 out2 kludge */
+ {"forgottn", CPS_B_01, mapper_LW621 },
+ {"forgottna", CPS_B_01, mapper_LW621 },
+ {"forgottnu", CPS_B_01, mapper_LW621 },
+ {"forgottnu1", CPS_B_01, mapper_LWCHR },
+ {"forgottnua", CPS_B_01, mapper_LWCHR },
+ {"forgottnuaa", CPS_B_01, mapper_LWCHR },
+ {"lostwrld", CPS_B_01, mapper_LWCHR },
+ {"lostwrldo", CPS_B_01, mapper_LWCHR },
+ {"ghouls", CPS_B_01, mapper_DM620 },
+ {"ghoulsu", CPS_B_01, mapper_DM620 },
+ {"daimakai", CPS_B_01, mapper_DM22A }, // equivalent to DM620
+ {"daimakair", CPS_B_21_DEF, mapper_DAM63B }, // equivalent to DM620, also CPS_B_21_DEF is equivalent to CPS_B_01
+ {"strider", CPS_B_01, mapper_ST24M1 },
+ {"striderua", CPS_B_01, mapper_ST24M1 }, // wrong, this set uses ST24B2, still not dumped
+ {"strideruc", CPS_B_17, mapper_ST24M1 }, // wrong?
+ {"striderj", CPS_B_01, mapper_ST22B }, // equivalent to ST24M1
+ {"striderjr", CPS_B_21_DEF, mapper_ST24M1 }, // wrong, this set uses STH63B, still not dumped
+ {"dynwar", CPS_B_02, mapper_TK22B }, // wrong, this set uses TK24B1, dumped but equations still not added
+ {"dynwara", CPS_B_02, mapper_TK22B },
+ {"dynwarj", CPS_B_02, mapper_TK22B },
+ {"dynwarjr", CPS_B_21_DEF, mapper_TK22B }, // wrong, this set uses TK163B, still not dumped
+ {"willow", CPS_B_03, mapper_WL24B },
+ {"willowu", CPS_B_03, mapper_WL24B },
+ {"willowuo", CPS_B_03, mapper_WL24B },
+ {"willowj", CPS_B_03, mapper_WL24B }, // wrong, this set uses WL22B, still not dumped
+ {"ffight", CPS_B_04, mapper_S224B },
+ {"ffighta", CPS_B_04, mapper_S224B },
+ {"ffightu", CPS_B_04, mapper_S224B },
+ {"ffightu1", CPS_B_04, mapper_S224B },
+ {"ffightua", CPS_B_01, mapper_S224B },
+ {"ffightub", CPS_B_03, mapper_S224B }, // had 04 handwritten on the CPS_B chip, but clearly isn't.
+ {"ffightuc", CPS_B_05, mapper_S224B },
+ {"ffightj", CPS_B_04, mapper_S224B }, // wrong, this set uses S222B
+ {"ffightj1", CPS_B_01, mapper_S224B }, // wrong, this set uses S222B
+ {"ffightj2", CPS_B_02, mapper_S224B }, // wrong, this set uses S222B
+ {"ffightj3", CPS_B_05, mapper_S224B }, // wrong, this set uses S222B
+ {"ffightjh", CPS_B_01, mapper_S224B }, // wrong, ffightjh hack doesn't even use the S222B PAL, since replaced with a GAL.
+ {"1941", CPS_B_05, mapper_YI24B },
+ {"1941r1", CPS_B_05, mapper_YI24B },
+ {"1941u", CPS_B_05, mapper_YI24B },
+ {"1941j", CPS_B_05, mapper_YI24B }, // wrong, this set uses YI22B, still not dumped
+ {"unsquad", CPS_B_11, mapper_AR24B },
+ {"area88", CPS_B_11, mapper_AR22B }, // equivalent to AR24B
+ {"area88r", CPS_B_21_DEF, mapper_AR22B }, // wrong, this set uses ARA63B, still not dumped
+ {"mercs", CPS_B_12, mapper_O224B, 0x36, 0, 0x34 },
+ {"mercsu", CPS_B_12, mapper_O224B, 0x36, 0, 0x34 },
+ {"mercsur1", CPS_B_12, mapper_O224B, 0x36, 0, 0x34 },
+ {"mercsj", CPS_B_12, mapper_O224B, 0x36, 0, 0x34 }, // wrong, this set uses O222B, still not dumped
+ {"msword", CPS_B_13, mapper_MS24B },
+ {"mswordr1", CPS_B_13, mapper_MS24B },
+ {"mswordu", CPS_B_13, mapper_MS24B },
+ {"mswordj", CPS_B_13, mapper_MS24B }, // wrong, this set uses MS22B, dumped but equations still not added
+ {"mtwins", CPS_B_14, mapper_CK24B },
+ {"chikij", CPS_B_14, mapper_CK24B }, // wrong, this set uses CK22B, dumped but equations still not added
+ {"nemo", CPS_B_15, mapper_NM24B },
+ {"nemor1", CPS_B_15, mapper_NM24B },
+ {"nemoj", CPS_B_15, mapper_NM24B }, // wrong, this set uses NM22B, still not dumped
+ {"cawing", CPS_B_16, mapper_CA24B },
+ {"cawingr1", CPS_B_16, mapper_CA24B },
+ {"cawingu", CPS_B_16, mapper_CA24B },
+ {"cawingj", CPS_B_16, mapper_CA22B }, // equivalent to CA24B
+ {"cawingbl", CPS_B_16, mapper_CA22B }, // equivalent to CA24B
+ {"sf2", CPS_B_11, mapper_STF29, 0x36 },
+ {"sf2eb", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2ed", CPS_B_05, mapper_STF29, 0x36 },
+ {"sf2ee", CPS_B_18, mapper_STF29, 0x3c },
+ {"sf2ebbl", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"sf2ebbl2", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"sf2ebbl3", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"sf2stt", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"sf2rk", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"sf2ua", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2ub", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2uc", CPS_B_12, mapper_STF29, 0x36 },
+ {"sf2ud", CPS_B_05, mapper_STF29, 0x36 },
+ {"sf2ue", CPS_B_18, mapper_STF29, 0x3c },
+ {"sf2uf", CPS_B_15, mapper_STF29, 0x36 },
+ {"sf2ug", CPS_B_11, mapper_STF29, 0x36 },
+ {"sf2ui", CPS_B_14, mapper_STF29, 0x36 },
+ {"sf2uk", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2j", CPS_B_13, mapper_STF29, 0x36 },
+ {"sf2ja", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2jc", CPS_B_12, mapper_STF29, 0x36 },
+ {"sf2jf", CPS_B_15, mapper_STF29, 0x36 },
+ {"sf2jh", CPS_B_13, mapper_STF29, 0x36 },
+ {"sf2jl", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2qp1", CPS_B_17, mapper_STF29, 0x36 },
+ {"sf2thndr", CPS_B_17, mapper_STF29, 0x36 },
+
+ /* from here onwards the CPS-B board has suicide battery and multiply protection */
+
+ {"3wonders", CPS_B_21_BT1, mapper_RT24B },
+ {"3wondersr1", CPS_B_21_BT1, mapper_RT24B },
+ {"3wondersu", CPS_B_21_BT1, mapper_RT24B },
+ {"wonder3", CPS_B_21_BT1, mapper_RT22B }, // equivalent to RT24B
+ {"3wondersb", CPS_B_21_BT1, mapper_RT24B, 0x36, 0, 0, 0x88 }, // same as 3wonders except some registers are hard wired rather than written to
+ {"3wondersh", HACK_B_2, mapper_RT24B }, // one port is changed from 3wonders, and no protection
+ {"kod", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 },
+ {"kodr1", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 },
+ {"kodu", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 },
+ {"kodj", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 },
+ {"kodja", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, // wrong, this set uses KD22B, still not dumped
+ {"kodb", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, /* bootleg, doesn't use multiply protection */
+ {"captcomm", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
+ {"captcommr1", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
+ {"captcommu", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
+ {"captcommj", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
+ {"captcommjr1", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
+ {"captcommb", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34, 3 },
+ {"knights", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
+ {"knightsu", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
+ {"knightsj", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
+ {"knightsja", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // wrong, this set uses KR22B, still not dumped
+ //{"knightsb", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // wrong, knightsb bootleg doesn't use the KR63B PAL
+ {"sf2ce", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceea", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceua", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceub", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceuc", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceja", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2cejb", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2cejc", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2bhh", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2rb", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2rb2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2rb3", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2red", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2v004", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2acc", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2ceblp", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2cebltw", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2acca", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2accp2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2amf", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, // probably wrong but this set is not completely dumped anyway
+ {"sf2amf2", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2dkot2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2m1", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2m2", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2m3", HACK_B_1, mapper_S9263B, 0, 0, 0, 2 },
+ {"sf2m4", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2m5", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2m6", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2m7", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2m8", HACK_B_1, mapper_S9263B, 0, 0, 0, 2 },
+ {"sf2m9", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2m10", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2dongb", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2yyc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2koryu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2mdt", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2mdta", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2mdtb", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
+ {"sf2b", CPS_B_17, mapper_STF29, 0x36, 0, 0, 1 },
+ {"varth", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ // wrong, this set uses VA24B, dumped but equations still not added
+ {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F },
+ {"varthr1", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ // wrong, this set uses VA24B, dumped but equations still not added
+ {"varthu", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */
+ {"varthj", CPS_B_21_BT5, mapper_VA22B }, /* CPSB test has been patched out (72=0001) register is also written to, possibly leftover from development */
+ {"varthjr", CPS_B_21_BT5, mapper_VA63B }, /* CPSB test has been patched out (72=0001) register is also written to, possibly leftover from development */
+ {"cworld2j", CPS_B_21_BT6, mapper_Q522B, 0x36, 0, 0x34 }, /* (ports 36, 34 probably leftover input code from another game) */
+ {"cworld2ja", CPS_B_21_DEF, mapper_Q522B }, // patched set, no battery, could be desuicided // wrong, this set uses Q529B, still not dumped
+ {"cworld2jb", CPS_B_21_BT6, mapper_Q522B, 0x36, 0, 0x34 }, // wrong, this set uses Q563B, still not dumped
+ {"wof", CPS_B_21_QS1, mapper_TK263B },
+ {"wofr1", CPS_B_21_DEF, mapper_TK263B }, // patched set coming from a desuicided board?
+ {"wofa", CPS_B_21_DEF, mapper_TK263B }, // patched set coming from a desuicided board?
+ {"wofu", CPS_B_21_QS1, mapper_TK263B },
+ {"wofj", CPS_B_21_QS1, mapper_TK263B },
+ {"wofhfh", CPS_B_21_DEF, mapper_TK263B, 0x36 }, /* Chinese bootleg */
+ {"dino", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */
+ {"dinou", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */
+ {"dinoj", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */
+ {"dinopic", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */
+ {"dinopic2", CPS_B_21_QS2, mapper_CD63B }, /* layer enable never used */
+ {"dinohunt", CPS_B_21_DEF, mapper_CD63B }, /* Chinese bootleg */
+ {"punisher", CPS_B_21_QS3, mapper_PS63B },
+ {"punisheru", CPS_B_21_QS3, mapper_PS63B },
+ {"punisherh", CPS_B_21_QS3, mapper_PS63B },
+ {"punisherj", CPS_B_21_QS3, mapper_PS63B },
+ {"punipic", CPS_B_21_QS3, mapper_PS63B },
+ {"punipic2", CPS_B_21_QS3, mapper_PS63B },
+ {"punipic3", CPS_B_21_QS3, mapper_PS63B },
+ {"punisherbz", CPS_B_21_DEF, mapper_PS63B }, /* Chinese bootleg */
+ {"slammast", CPS_B_21_QS4, mapper_MB63B },
+ {"slammastu", CPS_B_21_QS4, mapper_MB63B },
+ {"slampic", CPS_B_21_QS4, mapper_MB63B },
+ {"mbomberj", CPS_B_21_QS4, mapper_MB63B },
+ {"mbombrd", CPS_B_21_QS5, mapper_MB63B },
+ {"mbombrdj", CPS_B_21_QS5, mapper_MB63B },
+ {"sf2hf", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2hfu", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2hfj", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"qad", CPS_B_21_BT7, mapper_QD22B, 0x36 }, /* TODO: layer enable (port 36 probably leftover input code from another game) */
+ {"qadjr", CPS_B_21_DEF, mapper_QAD63B, 0x36, 0x38, 0x34 }, /* (ports 36, 38, 34 probably leftover input code from another game) */
+ {"qtono2j", CPS_B_21_DEF, mapper_TN2292, 0x36, 0x38, 0x34 }, /* (ports 36, 38, 34 probably leftover input code from another game) */
+ {"megaman", CPS_B_21_DEF, mapper_RCM63B },
+ {"megamana", CPS_B_21_DEF, mapper_RCM63B },
+ {"rockmanj", CPS_B_21_DEF, mapper_RCM63B },
+ {"pnickj", CPS_B_21_DEF, mapper_PKB10B },
+ {"pang3", CPS_B_21_DEF, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ // should use one of these three CP1B1F,CP1B8K,CP1B9KA
+ {"pang3r1", CPS_B_21_DEF, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ // should use one of these three CP1B1F,CP1B8K,CP1B9K
+ {"pang3j", CPS_B_21_DEF, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ // should use one of these three CP1B1F,CP1B8K,CP1B9K
+ {"pang3b", CPS_B_21_DEF, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ // should use one of these three CP1B1F,CP1B8K,CP1B9K
+ {"ganbare", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses GBPR2, dumped but equations still not added
+
+ /* CPS Changer */
+
+ {"sfach", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped
+ {"sfzbch", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped
+ {"sfzch", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped
+ {"wofch", CPS_B_21_DEF, mapper_TK263B },
+
+ /* CPS2 games */
+
+ {"cps2", CPS_B_21_DEF, mapper_cps2 },
+
+ /* CPS1 board + extra support boards */
+
+ {"kenseim", CPS_B_21_DEF, mapper_KNM10B }, // wrong, need to convert equations from PAL
+
+// HBMAME
+ {"captcocc", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, // nw
+ {"captcovs", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, // nw
+ {"dinosf2", CPS_B_21_QS2, mapper_CD63B }, // nw
+ {"kodd", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, // nw
+ {"kodud", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, // nw
+#if 0
+ {"3wondrud", CPS_B_21_DEF, mapper_RT24B }, //works
+ {"captcoud", CPS_B_21_DEF, mapper_CC63B, 0x36, 0x38, 0x34 }, //works
+ {"captcomc", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works
+ {"captcomh", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works
+ {"captcommb2", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works
+ //{"cawingb", CPS_B_16, mapper_CA24B, 0, 0, 0, 0x8F }, // no sprites here, ok in fcrash.cpp
+ //{"cawingb", CPS_B_16, mapper_CA24B, 0, 0, 0, 0x8F }, // no sprites here, ok in fcrash.cpp
+ //{"knightsa", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // a rom is unobtainable
+ {"cps1demo", CPS_B_04, mapper_demo, 0, 0, 0, 0x80 }, //works
+ {"cps1frog", CPS_B_04, mapper_frog, 0, 0, 0, 0x80 }, //works
+ {"cps1test", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"cps1testa", CPS_B_21_DEF, mapper_RCM63B }, //works
+ {"daimakb", HACK_H_5, mapper_DM22A }, //works
+ {"dino08h2", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dino08h3", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dino08hp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinob", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works
+ {"dinobt", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinobtpp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinocgba", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinocgbb", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinocgbc", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinoeh", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinoex", CPS_B_21_DEF, mapper_CD63B }, //works
+ {"dinoh", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works
+ {"dinoha", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works
+ {"dinohb", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works
+ {"dinohp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinohx", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works
+ {"dinojp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinorp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinoslice", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinouphp", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"dinoz", CPS_B_21_QS2, mapper_CD63B }, //works
+ {"ffightb", CPS_B_01, mapper_S224B }, //works
+ {"knight21", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works
+ //{"knightsa", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // a rom is unobtainable
+ {"knightsb2", HACK_H_6, mapper_KR63B, 0x36, 0, 0x34, 0x44 }, //works
+ {"knightsh", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works (intro screen is crap)
+ {"knightsha", HACK_H_7, mapper_KR63B, 0x36, 0, 0x34 }, //works
+ {"knightsjb", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works
+ {"knightsro", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works
+ {"knightud", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works
+ {"kodh", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, //works
+ {"kodsp", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, //works
+ {"pnicku", CPS_B_21_DEF, mapper_PKB10B }, //works
+ {"punisherb", CPS_B_21_QS3, mapper_PS63B, 0, 0, 0, 0x0E }, //works
+ {"punisherf", CPS_B_21_QS3, mapper_PS63B }, //works
+ {"punisherje1", CPS_B_21_QS3, mapper_PS63B }, //works
+ {"punisherjh", CPS_B_21_QS3, mapper_PS63B }, //works
+ {"punisherjh1", CPS_B_21_QS3, mapper_PS63B }, //works
+ {"punisherjha", CPS_B_21_QS3, mapper_PS63B }, //works
+ {"punisherud1", CPS_B_21_DEF, mapper_PS63B }, //works
+ {"punisherud2", CPS_B_21_DEF, mapper_PS63B }, //works
+ {"sf2bhj", CPS_B_12, mapper_STF29, 0x36 }, //works
+ {"sf2c", CPS_B_13, mapper_STF29, 0x36 }, //works
+ {"sf2cebr", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2ced", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2ceda", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2ceh", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2cehk", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2cehp", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2cejem", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2koryuh", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2h9", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2h10", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2h11", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2h12", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2h13", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2pun", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2sl73a", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works
+ {"sf2th", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2tha", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2tlona", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2tlonb", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2tlonc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2turyu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2yyc3d5", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2yyc3g", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sf2yyc6", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works
+ {"sk2h1", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h1q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h2", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h2q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h3", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h4q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h5q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h6q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities
+ {"sk2h11", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h12", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h13", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h14", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h15", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h16", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk2h21", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works
+ {"sk2h22", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h31", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h31q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h32", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h32q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h33", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h33q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h34", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h34q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities
+ {"sk2h35", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works
+ {"sk3p1", CPS_B_21_DEF, mapper_sfzch }, //works
+ {"sk3p2", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"sk3p3", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"slammastud", CPS_B_21_DEF, mapper_MB63B }, //works
+ {"stridergf", CPS_B_01, mapper_ST24M1 }, //works
+ {"stridergh", CPS_B_01, mapper_ST24M1 }, //works
+ {"tk2c1", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c2", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c3", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c4", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c5", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c6", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c7", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c8", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c9", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c10", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c11", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c12", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c13", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c14", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c15", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c16", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c17", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c18", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c19", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c20", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c21", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c22", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2c23", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h1", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h2", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h3", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h4", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h5", CPS_B_21_QS1, mapper_TK263B }, // problem with chinese language roms
+ {"tk2h6", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"tk2h7", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h8", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h9", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h10", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h11", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h12", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h13", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h14", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h15", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h16", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h17", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2h18", CPS_B_21_QS1, mapper_TK263B }, //works
+ {"tk2p2", CPS_B_21_DEF, mapper_sfzch }, //works
+ {"tk2p3", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, //works
+ {"wofb", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"wofes", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"woffr", CPS_B_21_DEF, mapper_sfzch }, //works
+ {"wofr1h", CPS_B_21_DEF, mapper_TK263B }, //works
+ {"wofsf2", CPS_B_21_QS1, mapper_TK263B, 0x36 }, //works
+ {"wofud", CPS_B_21_DEF, mapper_TK263B }, //works
+#endif
+ // HBMAME end
+ {nullptr} /* End of table */
+};
+
+
+
+
+/* Offset of each palette entry */
+#define cps1_palette_entries (32*6) /* Number colour schemes in palette */
+
+
+/* CPS-A registers */
+#define CPS1_OBJ_BASE (0x00/2) /* Base address of objects */
+#define CPS1_SCROLL1_BASE (0x02/2) /* Base address of scroll 1 */
+#define CPS1_SCROLL2_BASE (0x04/2) /* Base address of scroll 2 */
+#define CPS1_SCROLL3_BASE (0x06/2) /* Base address of scroll 3 */
+#define CPS1_OTHER_BASE (0x08/2) /* Base address of other video */
+#define CPS1_PALETTE_BASE (0x0a/2) /* Base address of palette */
+#define CPS1_SCROLL1_SCROLLX (0x0c/2) /* Scroll 1 X */
+#define CPS1_SCROLL1_SCROLLY (0x0e/2) /* Scroll 1 Y */
+#define CPS1_SCROLL2_SCROLLX (0x10/2) /* Scroll 2 X */
+#define CPS1_SCROLL2_SCROLLY (0x12/2) /* Scroll 2 Y */
+#define CPS1_SCROLL3_SCROLLX (0x14/2) /* Scroll 3 X */
+#define CPS1_SCROLL3_SCROLLY (0x16/2) /* Scroll 3 Y */
+#define CPS1_STARS1_SCROLLX (0x18/2) /* Stars 1 X */
+#define CPS1_STARS1_SCROLLY (0x1a/2) /* Stars 1 Y */
+#define CPS1_STARS2_SCROLLX (0x1c/2) /* Stars 2 X */
+#define CPS1_STARS2_SCROLLY (0x1e/2) /* Stars 2 Y */
+#define CPS1_ROWSCROLL_OFFS (0x20/2) /* base of row scroll offsets in other RAM */
+#define CPS1_VIDEOCONTROL (0x22/2) /* flip screen, rowscroll enable */
+
+
+/*
+CPS1 VIDEO RENDERER
+
+*/
+#define CPS2_OBJ_BASE 0x00 /* Unknown (not base address of objects). Could be bass address of bank used when object swap bit set? */
+#define CPS2_OBJ_UK1 0x02 /* Unknown (nearly always 0x807d, or 0x808e when screen flipped) */
+#define CPS2_OBJ_PRI 0x04 /* Layers priorities */
+#define CPS2_OBJ_UK2 0x06 /* Unknown (usually 0x0000, 0x1101 in ssf2, 0x0001 in 19XX) */
+#define CPS2_OBJ_XOFFS 0x08 /* X offset (usually 0x0040) */
+#define CPS2_OBJ_YOFFS 0x0a /* Y offset (always 0x0010) */
+
+
+MACHINE_RESET_MEMBER(cps_state,cps)
+{
+ const char *gamename = machine().system().name;
+ u8 tt = 0;
+ u8 *rom = 0;
+ if (memregion("control"))
+ {
+ rom = memregion("control")->base();
+ tt = rom[0x00];
+ }
+ if (tt == 0x55)
+ {
+ tt = 1;
+ m_cpsb_addr = rom[tt++];
+ m_cpsb_value = rom[tt] | (rom[tt+1] << 8); tt += 2;
+ m_mult_factor1 = rom[tt++];
+ m_mult_factor2 = rom[tt++];
+ m_mult_result_lo = rom[tt++];
+ m_mult_result_hi = rom[tt++];
+ m_layer_control = rom[tt++];
+ m_priority[0] = rom[tt++];
+ m_priority[1] = rom[tt++];
+ m_priority[2] = rom[tt++];
+ m_priority[3] = rom[tt++];
+ m_palette_control = rom[tt++];
+ m_layer_enable_mask[0] = rom[tt++];
+ m_layer_enable_mask[1] = rom[tt++];
+ m_layer_enable_mask[2] = rom[tt++];
+ m_layer_enable_mask[3] = rom[tt++];
+ m_layer_enable_mask[4] = rom[tt++];
+ m_in2_addr = rom[tt++];
+ m_in3_addr = rom[tt++];
+ m_out2_addr = rom[tt++];
+ m_bootleg_kludge = rom[tt] | (rom[tt+1] << 8); tt += 2;
+ m_scrollx1 = rom[tt++];
+ m_scrollx2 = rom[tt++];
+ m_scrollx3 = rom[tt++];
+ m_bank_sizes[0] = rom[tt] | (rom[tt+1] << 8) | (rom[tt+2] << 16); tt += 3;
+ m_bank_sizes[1] = rom[tt] | (rom[tt+1] << 8) | (rom[tt+2] << 16); tt += 3;
+ m_bank_sizes[2] = rom[tt] | (rom[tt+1] << 8) | (rom[tt+2] << 16); tt += 3;
+ m_bank_sizes[3] = rom[tt] | (rom[tt+1] << 8) | (rom[tt+2] << 16); tt += 3;
+
+ for (u8 i = 0; i < 8; i++)
+ {
+ m_bank_type[i*4] = rom[tt] & 0x1f;
+ m_bank_type[i*4+1] = rom[tt+1] | (rom[tt+2] << 8) | (rom[tt+3] << 16);
+ m_bank_type[i*4+2] = rom[tt+4] | (rom[tt+5] << 8) | (rom[tt+6] << 16);
+ m_bank_type[i*4+3] = rom[tt] >> 6;
+ tt += 7;
+ }
+ }
+ else
+ {
+ const struct CPS1config *pCFG = &cps1_config_table[0];
+ while (pCFG->name)
+ {
+ if (strcmp(pCFG->name, gamename) == 0)
+ break;
+
+ pCFG++;
+ }
+
+ m_game_config = pCFG;
+
+ if (!m_game_config->name)
+ {
+ gamename = "cps2";
+ pCFG = &cps1_config_table[0];
+
+ while(pCFG->name)
+ {
+ if (strcmp(pCFG->name, gamename) == 0)
+ break;
+
+ pCFG++;
+ }
+
+ m_game_config = pCFG;
+ }
+
+ // convert legacy to new
+ m_cpsb_addr = m_game_config->cpsb_addr;
+ m_cpsb_value = m_game_config->cpsb_value;
+ m_mult_factor1 = m_game_config->mult_factor1;
+ m_mult_factor2 = m_game_config->mult_factor2;
+ m_mult_result_lo = m_game_config->mult_result_lo;
+ m_mult_result_hi = m_game_config->mult_result_hi;
+ m_layer_control = m_game_config->layer_control;
+ m_palette_control = m_game_config->palette_control;
+ m_in2_addr = m_game_config->in2_addr;
+ m_in3_addr = m_game_config->in3_addr;
+ m_out2_addr = m_game_config->out2_addr;
+ m_bootleg_kludge = m_game_config->bootleg_kludge;
+
+ for (u8 i = 0; i < 4; i++)
+ {
+ m_priority[i] = m_game_config->priority[i];
+ m_layer_enable_mask[i] = m_game_config->layer_enable_mask[i];
+ m_bank_sizes[i] = m_game_config->bank_sizes[i];
+ }
+ m_layer_enable_mask[4] = m_game_config->layer_enable_mask[4];
+
+ for (u8 i = 0; i < 32; i++)
+ m_bank_type[i] = 0;
+ const struct gfx_range *range = m_game_config->bank_mapper;
+ u8 tu = 0;
+ while ((range->type) && (tu < 32))
+ {
+ m_bank_type[tu++] = range->type;
+ m_bank_type[tu++] = range->start;
+ m_bank_type[tu++] = range->end;
+ m_bank_type[tu++] = range->bank;
+ ++range;
+ }
+ }
+#if 0
+ if (strcmp(gamename, "sf2accp2") == 0)
+ {
+ /* Patch out a odd branch which would be incorrectly interpreted
+ by the cpu core as a 32-bit branch. This branch would make the
+ game crash (address error, since it would branch to an odd address)
+ if location 180ca6 (outside ROM space) isn't 0. Protection check? */
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ rom[0x11756 / 2] = 0x4e71;
+ }
+ else if (strcmp(gamename, "ghouls") == 0)
+ {
+ /* Patch out self-test... it takes forever */
+ uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
+ rom[0x61964 / 2] = 0x4ef9;
+ rom[0x61966 / 2] = 0x0000;
+ rom[0x61968 / 2] = 0x0400;
+ }
+#endif
+#if WRITE_FILE
+ // Write the config to a file
+ FILE *fp;
+ fp = fopen(gamename, "wb");
+ fprintf(fp, "%s", "U");
+ fprintf(fp, "%c", m_cpsb_addr);
+ fprintf(fp, "%c%c", m_cpsb_value&0xff, (m_cpsb_value >> 8) & 0xff);
+ fprintf(fp, "%c", m_mult_factor1);
+ fprintf(fp, "%c", m_mult_factor2);
+ fprintf(fp, "%c", m_mult_result_lo);
+ fprintf(fp, "%c", m_mult_result_hi);
+ fprintf(fp, "%c", m_layer_control);
+ fprintf(fp, "%c", m_priority[0]);
+ fprintf(fp, "%c", m_priority[1]);
+ fprintf(fp, "%c", m_priority[2]);
+ fprintf(fp, "%c", m_priority[3]);
+ fprintf(fp, "%c", m_palette_control);
+ fprintf(fp, "%c", m_layer_enable_mask[0]);
+ fprintf(fp, "%c", m_layer_enable_mask[1]);
+ fprintf(fp, "%c", m_layer_enable_mask[2]);
+ fprintf(fp, "%c", m_layer_enable_mask[3]);
+ fprintf(fp, "%c", m_layer_enable_mask[4]);
+ fprintf(fp, "%c", m_in2_addr);
+ fprintf(fp, "%c", m_in3_addr);
+ fprintf(fp, "%c", m_out2_addr);
+ fprintf(fp, "%c%c", m_bootleg_kludge&0xff, (m_bootleg_kludge >> 8) & 0xff);
+ u8 scroll1x = 0, scroll2x = 0, scroll3x = 0;
+ switch (m_bootleg_kludge&0x0f)
+ {
+ case 0x01:
+ scroll1x = 0x8c;
+ scroll2x = 0x8e;
+ scroll3x = 0x90;
+ break;
+ case 0x02:
+ scroll1x = 0x8c;
+ scroll2x = 0x90;
+ scroll3x = 0x90;
+ break;
+ case 0x03:
+ scroll1x = 0x88;
+ scroll2x = 0x8b;
+ scroll3x = 0x8c;
+ break;
+ case 0x08:
+ scroll1x = 0x04;
+ scroll2x = 0x06;
+ scroll3x = 0x0a;
+ break;
+ case 0x0E:
+ scroll1x = 0xc6;
+ scroll2x = 0xc0;
+ scroll3x = 0xc6;
+ break;
+ case 0x0F:
+ scroll1x = 0xc0;
+ scroll2x = 0xc0;
+ scroll3x = 0xc0;
+ }
+ fprintf(fp, "%c%c%c", scroll1x, scroll2x, scroll3x);
+ fprintf(fp, "%c%c%c", m_bank_sizes[0]&0xff, (m_bank_sizes[0] >> 8)&0xff, m_bank_sizes[0] >> 16);
+ fprintf(fp, "%c%c%c", m_bank_sizes[1]&0xff, (m_bank_sizes[1] >> 8)&0xff, m_bank_sizes[1] >> 16);
+ fprintf(fp, "%c%c%c", m_bank_sizes[2]&0xff, (m_bank_sizes[2] >> 8)&0xff, m_bank_sizes[2] >> 16);
+ fprintf(fp, "%c%c%c", m_bank_sizes[3]&0xff, (m_bank_sizes[3] >> 8)&0xff, m_bank_sizes[3] >> 16);
+
+ for (u8 i = 0; i < 8; i++)
+ {
+ fprintf(fp, "%c", m_bank_type[i*4] | (m_bank_type[i*4+3] << 6));
+ fprintf(fp, "%c%c%c", m_bank_type[i*4+1] & 0xff, (m_bank_type[i*4+1] >> 8)&0xff, m_bank_type[i*4+1] >> 16);
+ fprintf(fp, "%c%c%c", m_bank_type[i*4+2] & 0xff, (m_bank_type[i*4+2] >> 8)&0xff, m_bank_type[i*4+2] >> 16);
+ printf("%X,%X,%X,%X\n",m_bank_type[i*4],m_bank_type[i*4+1],m_bank_type[i*4+2],m_bank_type[i*4+3]);
+ }
+ for (u8 i = ftell(fp); i < 0x80; i++)
+ fprintf(fp, "%c", 0);
+ fclose(fp);
+#endif
+}
+
+
+inline uint16_t *cps_state::cps1_base( int offset, int boundary )
+{
+ int base = m_cps_a_regs[offset] * 256;
+
+ /*
+ The scroll RAM must start on a 0x4000 boundary.
+ Some games do not do this.
+ For example:
+ Captain commando - continue screen will not display
+ Muscle bomber games - will animate garbage during gameplay
+ Mask out the irrelevant bits.
+ */
+ base &= ~(boundary - 1);
+ return &m_gfxram[(base & 0x3ffff) / 2];
+}
+
+
+
+WRITE16_MEMBER(cps_state::cps1_cps_a_w)
+{
+ data = COMBINE_DATA(&m_cps_a_regs[offset]);
+
+ /*
+ The main CPU writes the palette to gfxram, and the CPS-B custom copies it
+ to the real palette RAM, which is separated from gfxram.
+ This is done ONLY after the palette base register is written to. It is not
+ known what the exact timing should be, how long it should take and when it
+ should happen. We are assuming that the copy happens immediately, since it
+ fixes glitches in the ghouls intro, but it might happen at next vblank.
+ */
+ if (offset == CPS1_PALETTE_BASE)
+ cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, m_palette_align));
+
+ // pzloop2 write to register 24 on startup. This is probably just a bug.
+ if (offset == 0x24 / 2 && m_cps_version == 2)
+ return;
+
+#ifdef MAME_DEBUG
+ if (offset > CPS1_VIDEOCONTROL)
+ popmessage("write to CPS-A register %02x contact MAMEDEV", offset * 2);
+#endif
+}
+
+
+READ16_MEMBER(cps_state::cps1_cps_b_r)
+{
+ /* Some games interrogate a couple of registers on bootup. */
+ /* These are CPS1 board B self test checks. They wander from game to */
+ /* game. */
+ if (offset == m_cpsb_addr / 2)
+ return m_cpsb_value;
+ else
+ /* some games use as a protection check the ability to do 16-bit multiplications */
+ /* with a 32-bit result, by writing the factors to two ports and reading the */
+ /* result from two other ports. */
+ if (offset == m_mult_result_lo / 2)
+ {
+ //printf("Multiply protection lo at %s\n",machine().describe_context());
+ return (m_cps_b_regs[m_mult_factor1 / 2] *
+ m_cps_b_regs[m_mult_factor2 / 2]) & 0xffff;
+ }
+ else
+ if (offset == m_mult_result_hi / 2)
+ {
+ //printf("Multiply protection hi\n");
+ return (m_cps_b_regs[m_mult_factor1 / 2] *
+ m_cps_b_regs[m_mult_factor2 / 2]) >> 16;
+ }
+ else
+ if (offset == m_in2_addr / 2) /* Extra input ports (on C-board) */
+ return cps1_in2_r(space, 0, 0); // HBMAME ioport("IN2")->read();
+ else
+ if (offset == m_in3_addr / 2) /* Player 4 controls (on C-board) ("Captain Commando") */
+ return cps1_in3_r(space, 0, 0); // HBMAME ioport("IN3")->read();
+ else
+ if (m_cps_version == 2)
+ {
+ if (offset == 0x10/2)
+ {
+ // UNKNOWN--only mmatrix appears to read this, and I'm not sure if the result is actually used
+ return m_cps_b_regs[0x10 / 2];
+ }
+ if (offset == 0x12/2)
+ return m_cps_b_regs[0x12 / 2];
+ }
+#ifdef MAME_DEBUG
+ popmessage("CPS-B read port %02x contact MAMEDEV", offset * 2);
+#endif
+ return 0xffff;
+}
+
+
+WRITE16_MEMBER(cps_state::cps1_cps_b_w)
+{
+ data = COMBINE_DATA(&m_cps_b_regs[offset]);
+
+ if (m_cps_version == 2)
+ {
+ /* To mark scanlines for raster effects */
+ if (offset == 0x0e/2)
+ {
+ // UNKNOWN
+ return;
+ }
+ if (offset == 0x10/2)
+ {
+ m_scanline1 = (data & 0x1ff);
+ return;
+ }
+ if (offset == 0x12/2)
+ {
+ m_scanline2 = (data & 0x1ff);
+ return;
+ }
+ }
+
+
+ // additional outputs on C-board
+ if (offset == m_out2_addr / 2)
+ {
+ if (ACCESSING_BITS_0_7)
+ {
+ if (m_cpsb_value == 0x0402) // Mercs (CN2 connector)
+ {
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x01);
+ output().set_led_value(0, data & 0x02);
+ output().set_led_value(1, data & 0x04);
+ output().set_led_value(2, data & 0x08);
+ }
+ else // kod, captcomm, knights
+ {
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x08);
+ }
+ }
+ }
+
+#ifdef MAME_DEBUG
+ if (offset != m_cpsb_addr / 2 && // only varth writes here
+ offset != m_mult_factor1 / 2 &&
+ offset != m_mult_factor2 / 2 &&
+ offset != m_layer_control / 2 &&
+ offset != m_unknown1 / 2 &&
+ offset != m_unknown2 / 2 &&
+ offset != m_unknown3 / 2 &&
+ offset != m_priority[0] / 2 &&
+ offset != m_priority[1] / 2 &&
+ offset != m_priority[2] / 2 &&
+ offset != m_priority[3] / 2 &&
+ offset != m_palette_control / 2 &&
+ offset != m_out2_addr / 2 &&
+ !m_bootleg_kludge)
+ popmessage("CPS-B write %04x to port %02x contact MAMEDEV", data, offset * 2);
+#endif
+}
+
+
+void cps_state::unshuffle( uint64_t *buf, int len )
+{
+ int i;
+ uint64_t t;
+
+ if (len == 2)
+ return;
+
+ assert(len % 4 == 0); /* must not happen */
+
+ len /= 2;
+
+ unshuffle(buf, len);
+ unshuffle(buf + len, len);
+
+ for (i = 0; i < len / 2; i++)
+ {
+ t = buf[len / 2 + i];
+ buf[len / 2 + i] = buf[len + i];
+ buf[len + i] = t;
+ }
+}
+
+
+void cps_state::cps2_gfx_decode()
+{
+ const int banksize = 0x200000;
+ int size = memregion("gfx")->bytes();
+ int i;
+
+ for (i = 0; i < size; i += banksize)
+ unshuffle((uint64_t *)(memregion("gfx")->base() + i), banksize / 8);
+}
+
+
+DRIVER_INIT_MEMBER(cps_state,cps1)
+{
+ m_scanline1 = 0;
+ m_scanline2 = 0;
+ m_scancalls = 0;
+ m_last_sprite_offset = 0;
+ m_pri_ctrl = 0;
+ m_objram_bank = 0;
+}
+
+
+
+DRIVER_INIT_MEMBER(cps_state,cps2_video)
+{
+ cps2_gfx_decode();
+
+ m_scanline1 = 262;
+ m_scanline2 = 262;
+ m_scancalls = 0;
+ m_last_sprite_offset = 0;
+ m_cps2_last_sprite_offset = 0;
+ m_pri_ctrl = 0;
+ m_objram_bank = 0;
+}
+
+
+void cps_state::cps1_get_video_base()
+{
+ // HBMAME start
+ int layercontrol=0, videocontrol=0, scroll1xoff=0, scroll2xoff=0, scroll3xoff=0;
+
+ if (BIT(m_scrollx1, 7))
+ scroll1xoff = 0 - (m_scrollx1 & 0x7f);
+ else
+ scroll1xoff = m_scrollx1;
+
+ if (BIT(m_scrollx2, 7))
+ scroll2xoff = 0 - (m_scrollx2 & 0x7f);
+ else
+ scroll2xoff = m_scrollx2;
+
+ if (BIT(m_scrollx3, 7))
+ scroll3xoff = 0 - (m_scrollx3 & 0x7f);
+ else
+ scroll3xoff = m_scrollx3;
+ // HBMAME end
+
+ /* Re-calculate the VIDEO RAM base */
+ if (m_scroll1 != cps1_base(CPS1_SCROLL1_BASE, m_scroll_size))
+ {
+ m_scroll1 = cps1_base(CPS1_SCROLL1_BASE, m_scroll_size);
+ m_bg_tilemap[0]->mark_all_dirty();
+ }
+ if (m_scroll2 != cps1_base(CPS1_SCROLL2_BASE, m_scroll_size))
+ {
+ m_scroll2 = cps1_base(CPS1_SCROLL2_BASE, m_scroll_size);
+ m_bg_tilemap[1]->mark_all_dirty();
+ }
+ if (m_scroll3 != cps1_base(CPS1_SCROLL3_BASE, m_scroll_size))
+ {
+ m_scroll3 = cps1_base(CPS1_SCROLL3_BASE, m_scroll_size);
+ m_bg_tilemap[2]->mark_all_dirty();
+ }
+
+ // HBMAME start
+ /* Some of the sf2 hacks use only sprite port 0x9100 and the scroll layers are offset */
+ uint8_t kludge = m_bootleg_kludge & 15;
+ if (kludge == 0x01 || kludge == 0x02)
+ m_cps_a_regs[CPS1_OBJ_BASE] = 0x9100;
+ else
+ if (kludge == 0x08) // 3wondersb
+ {
+ m_cps_b_regs[0x30/2] = 0x3f;
+ m_cps_a_regs[CPS1_VIDEOCONTROL] = 0x3e;
+ m_cps_a_regs[CPS1_SCROLL2_BASE] = 0x90c0;
+ m_cps_a_regs[CPS1_SCROLL3_BASE] = 0x9100;
+ m_cps_a_regs[CPS1_PALETTE_BASE] = 0x9140;
+ }
+ // HBMAME end
+
+ m_obj = cps1_base(CPS1_OBJ_BASE, m_obj_size);
+ m_other = cps1_base(CPS1_OTHER_BASE, m_other_size);
+
+ /* Get scroll values */
+ m_scroll1x = m_cps_a_regs[CPS1_SCROLL1_SCROLLX] + scroll1xoff;
+ m_scroll1y = m_cps_a_regs[CPS1_SCROLL1_SCROLLY];
+ m_scroll2x = m_cps_a_regs[CPS1_SCROLL2_SCROLLX] + scroll2xoff;
+ m_scroll2y = m_cps_a_regs[CPS1_SCROLL2_SCROLLY];
+ m_scroll3x = m_cps_a_regs[CPS1_SCROLL3_SCROLLX] + scroll3xoff;
+ m_scroll3y = m_cps_a_regs[CPS1_SCROLL3_SCROLLY];
+ m_stars1x = m_cps_a_regs[CPS1_STARS1_SCROLLX];
+ m_stars1y = m_cps_a_regs[CPS1_STARS1_SCROLLY];
+ m_stars2x = m_cps_a_regs[CPS1_STARS2_SCROLLX];
+ m_stars2y = m_cps_a_regs[CPS1_STARS2_SCROLLY];
+
+ /* Get layer enable bits */
+ layercontrol = m_cps_b_regs[m_layer_control / 2];
+ videocontrol = m_cps_a_regs[CPS1_VIDEOCONTROL];
+ m_bg_tilemap[0]->enable(layercontrol & m_layer_enable_mask[0]);
+ m_bg_tilemap[1]->enable((layercontrol & m_layer_enable_mask[1]) && (videocontrol & 4));
+ m_bg_tilemap[2]->enable((layercontrol & m_layer_enable_mask[2]) && (videocontrol & 8));
+ m_stars_enabled[0] = layercontrol & m_layer_enable_mask[3];
+ m_stars_enabled[1] = layercontrol & m_layer_enable_mask[4];
+
+#ifdef MAME_DEBUG
+{
+ int enablemask = 0;
+
+ if (m_layer_enable_mask[0] == m_layer_enable_mask[1])
+ enablemask = m_layer_enable_mask[0];
+
+ if (m_layer_enable_mask[0] == m_layer_enable_mask[2])
+ enablemask = m_layer_enable_mask[0];
+
+ if (m_layer_enable_mask[1] == m_layer_enable_mask[2])
+ enablemask = m_layer_enable_mask[1];
+
+ if (enablemask)
+ {
+ if (((layercontrol & enablemask) && (layercontrol & enablemask) != enablemask))
+ popmessage("layer %02x contact MAMEDEV", layercontrol & 0xc03f);
+ }
+
+ enablemask = m_layer_enable_mask[0] | m_layer_enable_mask[1]
+ | m_layer_enable_mask[2]
+ | m_layer_enable_mask[3] | m_layer_enable_mask[4];
+
+ if (((layercontrol & ~enablemask) & 0x003e) != 0)
+ popmessage("layer %02x contact MAMEDEV", layercontrol & 0xc03f);
+}
+#endif
+
+}
+
+
+WRITE16_MEMBER(cps_state::cps1_gfxram_w)
+{
+ int page = (offset >> 7) & 0x3c0;
+ COMBINE_DATA(&m_gfxram[offset]);
+
+ if (page == (m_cps_a_regs[CPS1_SCROLL1_BASE] & 0x3c0))
+ m_bg_tilemap[0]->mark_tile_dirty(offset / 2 & 0x0fff);
+
+ if (page == (m_cps_a_regs[CPS1_SCROLL2_BASE] & 0x3c0))
+ m_bg_tilemap[1]->mark_tile_dirty(offset / 2 & 0x0fff);
+
+ if (page == (m_cps_a_regs[CPS1_SCROLL3_BASE] & 0x3c0))
+ m_bg_tilemap[2]->mark_tile_dirty(offset / 2 & 0x0fff);
+}
+
+
+
+int cps_state::gfxrom_bank_mapper( int type, int code )
+{
+ int shift = 0;
+
+ switch (type)
+ {
+ case GFXTYPE_SPRITES: shift = 1; break;
+ case GFXTYPE_SCROLL1: shift = 0; break;
+ case GFXTYPE_SCROLL2: shift = 1; break;
+ case GFXTYPE_SCROLL3: shift = 3; break;
+ }
+
+ code <<= shift;
+
+ for (u8 i = 0; i < 8; i++)
+ {
+ if (code >= m_bank_type[i*4+1] && code <= m_bank_type[i*4+2])
+ {
+ if (m_bank_type[i*4] & type)
+ {
+ int base = 0;
+ for (int j = 0; j < m_bank_type[i*4+3]; ++j)
+ base += m_bank_sizes[j];
+
+ return (base + (code & (m_bank_sizes[m_bank_type[i*4+3]] - 1))) >> shift;
+ }
+ }
+ }
+
+#ifdef MAME_DEBUG
+// popmessage("tile %02x/%04x out of range", type, code >> shift);
+#endif
+
+ return -1;
+}
+
+
+/***************************************************************************
+
+ Start the video hardware emulation.
+
+***************************************************************************/
+
+TILEMAP_MAPPER_MEMBER(cps_state::tilemap0_scan)
+{
+ /* logical (col,row) -> memory offset */
+ return (row & 0x1f) + ((col & 0x3f) << 5) + ((row & 0x20) << 6);
+}
+
+TILEMAP_MAPPER_MEMBER(cps_state::tilemap1_scan)
+{
+ /* logical (col,row) -> memory offset */
+ return (row & 0x0f) + ((col & 0x3f) << 4) + ((row & 0x30) << 6);
+}
+
+TILEMAP_MAPPER_MEMBER(cps_state::tilemap2_scan)
+{
+ /* logical (col,row) -> memory offset */
+ return (row & 0x07) + ((col & 0x3f) << 3) + ((row & 0x38) << 6);
+}
+
+TILE_GET_INFO_MEMBER(cps_state::get_tile0_info)
+{
+ int code = m_scroll1[2 * tile_index];
+ int attr = m_scroll1[2 * tile_index + 1];
+ int gfxset;
+
+ code = gfxrom_bank_mapper(GFXTYPE_SCROLL1, code);
+
+ /* allows us to reproduce a problem seen with a ffight board where USA and Japanese
+ roms have been mixed to be reproduced (ffightub) -- it looks like each column
+ should alternate between the left and right side of the 16x16 tiles */
+ gfxset = (tile_index & 0x20) >> 5;
+
+ SET_TILE_INFO_MEMBER(gfxset,
+ code,
+ (attr & 0x1f) + 0x20,
+ TILE_FLIPYX((attr & 0x60) >> 5));
+ tileinfo.group = (attr & 0x0180) >> 7;
+
+ // for out of range tiles, switch to fully transparent data
+ // (but still call SET_TILE_INFO_MEMBER, otherwise problems might occur on boot e.g. unsquad)
+ if (code == -1)
+ tileinfo.pen_data = m_empty_tile;
+}
+
+TILE_GET_INFO_MEMBER(cps_state::get_tile1_info)
+{
+ int code = m_scroll2[2 * tile_index];
+ int attr = m_scroll2[2 * tile_index + 1];
+
+ code = gfxrom_bank_mapper(GFXTYPE_SCROLL2, code);
+
+ SET_TILE_INFO_MEMBER(2,
+ code,
+ (attr & 0x1f) + 0x40,
+ TILE_FLIPYX((attr & 0x60) >> 5));
+ tileinfo.group = (attr & 0x0180) >> 7;
+
+ // for out of range tiles, switch to fully transparent data
+ if (code == -1)
+ tileinfo.pen_data = m_empty_tile;
+}
+
+TILE_GET_INFO_MEMBER(cps_state::get_tile2_info)
+{
+ int code = m_scroll3[2 * tile_index] & 0x3fff;
+ int attr = m_scroll3[2 * tile_index + 1];
+
+ code = gfxrom_bank_mapper(GFXTYPE_SCROLL3, code);
+
+ SET_TILE_INFO_MEMBER(3,
+ code,
+ (attr & 0x1f) + 0x60,
+ TILE_FLIPYX((attr & 0x60) >> 5));
+ tileinfo.group = (attr & 0x0180) >> 7;
+
+ // for out of range tiles, switch to fully transparent data
+ // (but still call SET_TILE_INFO_MEMBER, otherwise problems might occur on boot e.g. unsquad)
+ if (code == -1)
+ tileinfo.pen_data = m_empty_tile;
+}
+
+
+
+void cps_state::cps1_update_transmasks()
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ int mask;
+
+ /* Get transparency registers */
+ if (m_priority[i] != -1)
+ mask = m_cps_b_regs[m_priority[i] / 2] ^ 0xffff;
+ else
+ mask = 0xffff; /* completely transparent if priority masks not defined (qad) */
+
+ m_bg_tilemap[0]->set_transmask(i, mask, 0x8000);
+ m_bg_tilemap[1]->set_transmask(i, mask, 0x8000);
+ m_bg_tilemap[2]->set_transmask(i, mask, 0x8000);
+ }
+}
+
+VIDEO_START_MEMBER(cps_state,cps)
+{
+ int i;
+
+ MACHINE_RESET_CALL_MEMBER(cps);
+
+ /* Put in some const */
+ m_scroll_size = 0x4000; /* scroll1, scroll2, scroll3 */
+ m_obj_size = 0x0800;
+ m_cps2_obj_size = 0x2000;
+ m_other_size = 0x0800;
+ m_palette_align = 0x0400; /* minimum alignment is a single palette page (512 colors). Verified on pcb. */
+ m_palette_size = cps1_palette_entries * 32; /* Size of palette RAM */
+ m_stars_rom_size = 0x2000; /* first 0x4000 of gfx ROM are used, but 0x0000-0x1fff is == 0x2000-0x3fff */
+
+ /* create tilemaps */
+ m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile0_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap0_scan),this), 8, 8, 64, 64);
+ m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile1_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap1_scan),this), 16, 16, 64, 64);
+ m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile2_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap2_scan),this), 32, 32, 64, 64);
+
+ /* create empty tiles */
+ memset(m_empty_tile, 0x0f, sizeof(m_empty_tile));
+
+ /* front masks will change at runtime to handle sprite occluding */
+ cps1_update_transmasks();
+
+ for (i = 0; i < cps1_palette_entries * 16; i++)
+ m_palette->set_pen_color(i, rgb_t(0,0,0));
+
+ m_buffered_obj = make_unique_clear<uint16_t[]>(m_obj_size / 2);
+
+ if (m_cps_version == 2)
+ m_cps2_buffered_obj = make_unique_clear<uint16_t[]>(m_cps2_obj_size / 2);
+
+ /* clear RAM regions */
+ memset(m_gfxram, 0, m_gfxram.bytes()); /* Clear GFX RAM */
+ memset(m_cps_a_regs, 0, 0x40); /* Clear CPS-A registers */
+ memset(m_cps_b_regs, 0, 0x40); /* Clear CPS-B registers */
+
+ m_cps_b_regs[m_palette_control/2] = 0x3F; // HBMAME
+
+ if (m_cps_version == 2)
+ {
+ memset(m_objram1, 0, m_cps2_obj_size);
+ memset(m_objram2, 0, m_cps2_obj_size);
+ }
+
+ /* Put in some defaults */
+ m_cps_a_regs[CPS1_OBJ_BASE] = 0x9200;
+ m_cps_a_regs[CPS1_SCROLL1_BASE] = 0x9000;
+ m_cps_a_regs[CPS1_SCROLL2_BASE] = 0x9040;
+ m_cps_a_regs[CPS1_SCROLL3_BASE] = 0x9080;
+ m_cps_a_regs[CPS1_OTHER_BASE] = 0x9100;
+
+ /* Set up old base */
+ m_scroll1 = nullptr;
+ m_scroll2 = nullptr;
+ m_scroll3 = nullptr;
+ m_obj = nullptr;
+ m_other = nullptr;
+ cps1_get_video_base(); /* Calculate base pointers */
+ cps1_get_video_base(); /* Calculate old base pointers */
+
+ /* state save register */
+ save_item(NAME(m_scanline1));
+ save_item(NAME(m_scanline2));
+ save_item(NAME(m_scancalls));
+#if 0
+ /* these do not need to be saved, because they are recovered from cps_a_regs in cps1_postload */
+ save_item(NAME(m_scroll1x));
+ save_item(NAME(m_scroll1y));
+ save_item(NAME(m_scroll2x));
+ save_item(NAME(m_scroll2y));
+ save_item(NAME(m_scroll3x));
+ save_item(NAME(m_scroll3y));
+ save_item(NAME(m_stars1x));
+ save_item(NAME(m_stars1y));
+ save_item(NAME(m_stars2x));
+ save_item(NAME(m_stars2y));
+ save_item(NAME(m_stars_enabled));
+#endif
+ save_item(NAME(m_last_sprite_offset));
+ save_item(NAME(m_pri_ctrl));
+ save_item(NAME(m_objram_bank));
+
+ save_pointer(NAME(m_buffered_obj.get()), m_obj_size / 2);
+ if (m_cps_version == 2)
+ {
+ save_item(NAME(m_cps2_last_sprite_offset));
+ save_pointer(NAME(m_cps2_buffered_obj.get()), m_cps2_obj_size / 2);
+ }
+
+ machine().save().register_postload(save_prepost_delegate(FUNC(cps_state::cps1_get_video_base), this));
+}
+
+VIDEO_START_MEMBER(cps_state,cps1)
+{
+ m_cps_version = 1;
+ VIDEO_START_CALL_MEMBER(cps);
+}
+
+VIDEO_START_MEMBER(cps_state,cps2)
+{
+ m_cps_version = 2;
+ VIDEO_START_CALL_MEMBER(cps);
+}
+
+/***************************************************************************
+
+ Build palette from palette RAM
+
+ 12 bit RGB with a 4 bit brightness value.
+
+***************************************************************************/
+
+void cps_state::cps1_build_palette( const uint16_t* const palette_base )
+{
+ int offset, page;
+ const uint16_t *palette_ram = palette_base;
+ int ctrl = m_cps_b_regs[m_palette_control/2];
+
+ /*
+ The palette is copied only for pages that are enabled in the ctrl
+ register. Note that if the first palette pages are skipped, all
+ the following pages are scaled down.
+ */
+ for (page = 0; page < 6; ++page)
+ {
+ if (BIT(ctrl, page))
+ {
+ for (offset = 0; offset < 0x200; ++offset)
+ {
+ int palette = *(palette_ram++);
+ int r, g, b, bright;
+
+ // from my understanding of the schematics, when the 'brightness'
+ // component is set to 0 it should reduce brightness to 1/3
+
+ bright = 0x0f + ((palette >> 12) << 1);
+
+ r = ((palette >> 8) & 0x0f) * 0x11 * bright / 0x2d;
+ g = ((palette >> 4) & 0x0f) * 0x11 * bright / 0x2d;
+ b = ((palette >> 0) & 0x0f) * 0x11 * bright / 0x2d;
+
+ m_palette->set_pen_color (0x200 * page + offset, rgb_t(r, g, b));
+ }
+ }
+ else
+ {
+ // skip page in gfxram, but only if we have already copied at least one page
+ if (palette_ram != palette_base)
+ palette_ram += 0x200;
+ }
+ }
+}
+
+
+
+/***************************************************************************
+
+ Sprites
+ =======
+
+ Sprites are represented by a number of 8 byte values
+
+ xx xx yy yy nn nn aa aa
+
+ where xxxx = x position
+ yyyy = y position
+ nnnn = tile number
+ aaaa = attribute word
+ 0x0001 colour
+ 0x0002 colour
+ 0x0004 colour
+ 0x0008 colour
+ 0x0010 colour
+ 0x0020 X Flip
+ 0x0040 Y Flip
+ 0x0080 X & Y offset toggle (used in Marvel vs. Capcom.)
+ 0x0100 X block size (in sprites)
+ 0x0200 X block size
+ 0x0400 X block size
+ 0x0800 X block size
+ 0x1000 Y block size (in sprites)
+ 0x2000 Y block size
+ 0x4000 Y block size
+ 0x8000 Y block size
+
+ The end of the table (may) be marked by an attribute value of 0xff00.
+
+***************************************************************************/
+
+void cps_state::cps1_find_last_sprite() /* Find the offset of last sprite */
+{
+ int offset = 0;
+ /* Locate the end of table marker */
+ while (offset < m_obj_size / 2)
+ {
+ if (m_bootleg_kludge == 3) {
+ /* captcommb - same end of sprite marker as CPS-2 */
+ int colour = m_buffered_obj[offset + 1];
+ if (colour >= 0x8000)
+ {
+ /* Marker found. This is the last sprite. */
+ m_last_sprite_offset = offset - 4;
+ return;
+ }
+ }
+ else
+ {
+ int colour = m_buffered_obj[offset + 3];
+ if ((colour & 0xff00) == 0xff00)
+ {
+ /* Marker found. This is the last sprite. */
+ m_last_sprite_offset = offset - 4;
+ return;
+ }
+ }
+
+ offset += 4;
+ }
+ /* Sprites must use full sprite RAM */
+ m_last_sprite_offset = m_obj_size / 2 - 4;
+}
+
+
+void cps_state::cps1_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+#define DRAWSPRITE(CODE,COLOR,FLIPX,FLIPY,SX,SY) \
+{ \
+ if (flip_screen()) \
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ cliprect, \
+ CODE, \
+ COLOR, \
+ !(FLIPX),!(FLIPY), \
+ 512-16-(SX),256-16-(SY), screen.priority(),0x02,15); \
+ else \
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ cliprect, \
+ CODE, \
+ COLOR, \
+ FLIPX,FLIPY, \
+ SX,SY, screen.priority(),0x02,15); \
+}
+
+
+ int i, baseadd;
+ uint16_t *base = m_buffered_obj.get();
+
+ /* some sf2 hacks draw the sprites in reverse order */
+ if (BIT(m_bootleg_kludge, 6)) // HBMAME
+ {
+ base += m_last_sprite_offset;
+ baseadd = -4;
+ }
+ else
+ {
+ baseadd = 4;
+ }
+
+ for (i = m_last_sprite_offset; i >= 0; i -= 4)
+ {
+ int x = *(base + 0);
+ int y = *(base + 1);
+ int code = *(base + 2);
+ int colour = *(base + 3);
+ int col = colour & 0x1f;
+
+// x -= 0x20;
+// y += 0x20;
+
+ code = gfxrom_bank_mapper(GFXTYPE_SPRITES, code);
+
+ if (code != -1)
+ {
+ if (colour & 0xff00 )
+ {
+ /* handle blocked sprites */
+ int nx = (colour & 0x0f00) >> 8;
+ int ny = (colour & 0xf000) >> 12;
+ int nxs, nys, sx, sy;
+ nx++;
+ ny++;
+
+ if (colour & 0x40)
+ {
+ /* Y flip */
+ if (colour & 0x20)
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16) & 0x1ff;
+ sy = (y + nys * 16) & 0x1ff;
+
+ DRAWSPRITE(
+// code + (nx - 1) - nxs + 0x10 * (ny - 1 - nys),
+ (code & ~0xf) + ((code + (nx - 1) - nxs) & 0xf) + 0x10 * (ny - 1 - nys),
+ (col & 0x1f),
+ 1,1,
+ sx,sy);
+ }
+ }
+ }
+ else
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16) & 0x1ff;
+ sy = (y + nys * 16) & 0x1ff;
+
+ DRAWSPRITE(
+// code + nxs + 0x10 * (ny - 1 - nys),
+ (code & ~0xf) + ((code + nxs) & 0xf) + 0x10 * (ny - 1 - nys),
+ (col & 0x1f),
+ 0,1,
+ sx,sy);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (colour & 0x20)
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs<nx; nxs++)
+ {
+ sx = (x + nxs * 16) & 0x1ff;
+ sy = (y + nys * 16) & 0x1ff;
+
+ DRAWSPRITE(
+// code + (nx - 1) - nxs + 0x10 * nys,
+ (code & ~0xf) + ((code + (nx - 1) - nxs) & 0xf) + 0x10 * nys,
+ (col & 0x1f),
+ 1,0,
+ sx,sy);
+ }
+ }
+ }
+ else
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16) & 0x1ff;
+ sy = (y + nys * 16) & 0x1ff;
+
+ DRAWSPRITE(
+// code + nxs + 0x10 * nys,
+ (code & ~0xf) + ((code + nxs) & 0xf) + 0x10 * nys, // fix 00406: qadjr: When playing as the ninja, there is one broken frame in his animation loop when walking.
+ (col & 0x1f),
+ 0,0,
+ sx,sy);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Simple case... 1 sprite */
+ DRAWSPRITE(
+ code,
+ (col & 0x1f),
+ colour&0x20,colour&0x40,
+ x & 0x1ff,y & 0x1ff);
+ }
+ }
+ base += baseadd;
+ }
+#undef DRAWSPRITE
+}
+
+
+
+
+WRITE16_MEMBER(cps_state::cps2_objram_bank_w)
+{
+ if (ACCESSING_BITS_0_7)
+ m_objram_bank = data & 1;
+}
+
+READ16_MEMBER(cps_state::cps2_objram1_r)
+{
+ if (m_objram_bank & 1)
+ return m_objram2[offset];
+ else
+ return m_objram1[offset];
+}
+
+READ16_MEMBER(cps_state::cps2_objram2_r)
+{
+ if (m_objram_bank & 1)
+ return m_objram1[offset];
+ else
+ return m_objram2[offset];
+}
+
+WRITE16_MEMBER(cps_state::cps2_objram1_w)
+{
+ if (m_objram_bank & 1)
+ COMBINE_DATA(&m_objram2[offset]);
+ else
+ COMBINE_DATA(&m_objram1[offset]);
+}
+
+WRITE16_MEMBER(cps_state::cps2_objram2_w)
+{
+ if (m_objram_bank & 1)
+ COMBINE_DATA(&m_objram1[offset]);
+ else
+ COMBINE_DATA(&m_objram2[offset]);
+}
+
+uint16_t *cps_state::cps2_objbase()
+{
+ int baseptr;
+ baseptr = 0x7000;
+
+ if (m_objram_bank & 1)
+ baseptr ^= 0x0080;
+
+//popmessage("%04x %d", cps2_port(machine, CPS2_OBJ_BASE), m_objram_bank & 1);
+
+ if (baseptr == 0x7000)
+ return m_objram1;
+ else //if (baseptr == 0x7080)
+ return m_objram2;
+}
+
+
+void cps_state::cps2_find_last_sprite() /* Find the offset of last sprite */
+{
+ int offset = 0;
+ uint16_t *base = m_cps2_buffered_obj.get();
+
+ /* Locate the end of table marker */
+ while (offset < m_cps2_obj_size / 2)
+ {
+ if (base[offset + 1] >= 0x8000 || base[offset + 3] >= 0xff00)
+ {
+ /* Marker found. This is the last sprite. */
+ m_cps2_last_sprite_offset = offset - 4;
+ return;
+ }
+
+ offset += 4;
+ }
+ /* Sprites must use full sprite RAM */
+ m_cps2_last_sprite_offset = m_cps2_obj_size / 2 - 4;
+}
+
+void cps_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks )
+{
+#define DRAWSPRITE(CODE,COLOR,FLIPX,FLIPY,SX,SY) \
+{ \
+ if (flip_screen()) \
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ cliprect, \
+ CODE, \
+ COLOR, \
+ !(FLIPX),!(FLIPY), \
+ 512-16-(SX),256-16-(SY), screen.priority(),primasks[priority],15); \
+ else \
+ m_gfxdecode->gfx(2)->prio_transpen(bitmap,\
+ cliprect, \
+ CODE, \
+ COLOR, \
+ FLIPX,FLIPY, \
+ SX,SY, screen.priority(),primasks[priority],15); \
+}
+
+ int i;
+ uint16_t *base = m_cps2_buffered_obj.get();
+ int xoffs = 64 - m_output[CPS2_OBJ_XOFFS /2];
+ int yoffs = 16 - m_output[CPS2_OBJ_YOFFS /2];
+
+#ifdef MAME_DEBUG
+ if (machine().input().code_pressed(KEYCODE_Z) && machine().input().code_pressed(KEYCODE_R))
+ {
+ return;
+ }
+#endif
+
+ for (i = m_cps2_last_sprite_offset; i >= 0; i -= 4)
+ {
+ int x = base[i + 0];
+ int y = base[i + 1];
+ int priority = (x >> 13) & 0x07;
+ int code = base[i + 2] + ((y & 0x6000) << 3);
+ int colour = base[i + 3];
+ int col = colour & 0x1f;
+
+ if (colour & 0x80)
+ {
+ x += m_output[CPS2_OBJ_XOFFS /2]; /* fix the offset of some games */
+ y += m_output[CPS2_OBJ_YOFFS /2]; /* like Marvel vs. Capcom ending credits */
+ }
+
+ if (colour & 0xff00)
+ {
+ /* handle blocked sprites */
+ int nx = (colour & 0x0f00) >> 8;
+ int ny = (colour & 0xf000) >> 12;
+ int nxs, nys, sx, sy;
+ nx++;
+ ny++;
+
+ if (colour & 0x40)
+ {
+ /* Y flip */
+ if (colour & 0x20)
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16 + xoffs) & 0x3ff;
+ sy = (y + nys * 16 + yoffs) & 0x3ff;
+ DRAWSPRITE(
+ code + (nx - 1) - nxs + 0x10 * (ny - 1 - nys),
+ (col & 0x1f),
+ 1,1,
+ sx,sy);
+ }
+ }
+ }
+ else
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16 + xoffs) & 0x3ff;
+ sy = (y + nys * 16 + yoffs) & 0x3ff;
+
+ DRAWSPRITE(
+ code + nxs + 0x10 * (ny - 1 - nys),
+ (col & 0x1f),
+ 0,1,
+ sx,sy);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (colour & 0x20)
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16 + xoffs) & 0x3ff;
+ sy = (y + nys * 16 + yoffs) & 0x3ff;
+
+ DRAWSPRITE(
+ code + (nx - 1) - nxs + 0x10 * nys,
+ (col & 0x1f),
+ 1,0,
+ sx,sy);
+ }
+ }
+ }
+ else
+ {
+ for (nys = 0; nys < ny; nys++)
+ {
+ for (nxs = 0; nxs < nx; nxs++)
+ {
+ sx = (x + nxs * 16 + xoffs) & 0x3ff;
+ sy = (y + nys * 16 + yoffs) & 0x3ff;
+
+ DRAWSPRITE(
+// code + nxs + 0x10 * nys,
+ (code & ~0xf) + ((code + nxs) & 0xf) + 0x10 * nys, // pgear fix
+ (col & 0x1f),
+ 0,0,
+ sx,sy);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Simple case... 1 sprite */
+ DRAWSPRITE(
+ code,
+ (col & 0x1f),
+ colour&0x20,colour&0x40,
+ (x+xoffs) & 0x3ff,(y+yoffs) & 0x3ff);
+ }
+ }
+}
+
+
+
+
+void cps_state::cps1_render_stars( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ int offs;
+ uint8_t *stars_rom = m_region_stars->base();
+
+ if (!stars_rom && (m_stars_enabled[0] || m_stars_enabled[1]))
+ {
+#ifdef MAME_DEBUG
+// popmessage("stars enabled but no stars ROM");
+#endif
+ return;
+ }
+
+ if (m_stars_enabled[0])
+ {
+ for (offs = 0; offs < m_stars_rom_size / 2; offs++)
+ {
+ int col = stars_rom[8 * offs + 4];
+ if (col != 0x0f)
+ {
+ int sx = (offs / 256) * 32;
+ int sy = (offs % 256);
+ sx = (sx - m_stars2x + (col & 0x1f)) & 0x1ff;
+ sy = (sy - m_stars2y) & 0xff;
+ if (flip_screen())
+ {
+ sx = 512 - sx;
+ sy = 256 - sy;
+ }
+
+ col = ((col & 0xe0) >> 1) + (screen.frame_number() / 16 & 0x0f);
+
+ if (cliprect.contains(sx, sy))
+ bitmap.pix16(sy, sx) = 0xa00 + col;
+ }
+ }
+ }
+
+ if (m_stars_enabled[1])
+ {
+ for (offs = 0; offs < m_stars_rom_size / 2; offs++)
+ {
+ int col = stars_rom[8*offs];
+ if (col != 0x0f)
+ {
+ int sx = (offs / 256) * 32;
+ int sy = (offs % 256);
+ sx = (sx - m_stars1x + (col & 0x1f)) & 0x1ff;
+ sy = (sy - m_stars1y) & 0xff;
+ if (flip_screen())
+ {
+ sx = 512 - sx;
+ sy = 256 - sy;
+ }
+
+ col = ((col & 0xe0) >> 1) + (screen.frame_number() / 16 & 0x0f);
+
+ if (cliprect.contains(sx, sy))
+ bitmap.pix16(sy, sx) = 0x800 + col;
+ }
+ }
+ }
+}
+
+
+void cps_state::cps1_render_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask )
+{
+ switch (layer)
+ {
+ case 0:
+ cps1_render_sprites(screen, bitmap, cliprect);
+ break;
+ case 1:
+ case 2:
+ case 3:
+ m_bg_tilemap[layer - 1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, primask);
+ break;
+ }
+}
+
+void cps_state::cps1_render_high_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
+{
+ bitmap_ind16 dummy_bitmap;
+ switch (layer)
+ {
+ case 0:
+ /* there are no high priority sprites */
+ break;
+ case 1:
+ case 2:
+ case 3:
+ m_bg_tilemap[layer - 1]->draw(screen, dummy_bitmap, cliprect, TILEMAP_DRAW_LAYER0, 1);
+ break;
+ }
+}
+
+
+/***************************************************************************
+
+ Refresh screen
+
+***************************************************************************/
+
+uint32_t cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int layercontrol, l0, l1, l2, l3;
+ int videocontrol = m_cps_a_regs[CPS1_VIDEOCONTROL];
+
+ flip_screen_set(videocontrol & 0x8000);
+
+ layercontrol = m_cps_b_regs[m_layer_control / 2];
+
+ /* Get video memory base registers */
+ cps1_get_video_base();
+
+ /* Find the offset of the last sprite in the sprite table */
+ cps1_find_last_sprite();
+
+ if (m_cps_version == 2)
+ cps2_find_last_sprite();
+
+ cps1_update_transmasks();
+
+ m_bg_tilemap[0]->set_scrollx(0, m_scroll1x);
+ m_bg_tilemap[0]->set_scrolly(0, m_scroll1y);
+
+ if (videocontrol & 0x01) /* linescroll enable */
+ {
+ int scrly = -m_scroll2y;
+
+ m_bg_tilemap[1]->set_scroll_rows(1024);
+
+ int otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
+
+ for (int i = 0; i < 256; i++)
+ m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, m_scroll2x + m_other[(i + otheroffs) & 0x3ff]);
+ }
+ else
+ {
+ m_bg_tilemap[1]->set_scroll_rows(1);
+ m_bg_tilemap[1]->set_scrollx(0, m_scroll2x);
+ }
+ m_bg_tilemap[1]->set_scrolly(0, m_scroll2y);
+ m_bg_tilemap[2]->set_scrollx(0, m_scroll3x);
+ m_bg_tilemap[2]->set_scrolly(0, m_scroll3y);
+
+
+ /* Blank screen */
+ if (m_cps_version == 1)
+ {
+ // CPS1 games use pen 0xbff as background color; this is used in 3wonders,
+ // mtwins (explosion during attract), mercs (intermission).
+ bitmap.fill(0xbff, cliprect);
+ }
+ else
+ {
+ // CPS2 apparently always force the background to black. Several games would
+ // should a blue screen during boot if we used the same code as CPS1.
+ // Maybe Capcom changed the background handling due to the problems that
+ // it caused on several monitors (because the background extended into the
+ // blanking area instead of going black, causing the monitor to clip).
+ bitmap.fill(m_palette->black_pen(), cliprect);
+ }
+
+ if (m_region_stars)
+ {
+ cps1_render_stars(screen, bitmap, cliprect);
+ }
+
+ /* Draw layers (0 = sprites, 1-3 = tilemaps) */
+ l0 = (layercontrol >> 0x06) & 03;
+ l1 = (layercontrol >> 0x08) & 03;
+ l2 = (layercontrol >> 0x0a) & 03;
+ l3 = (layercontrol >> 0x0c) & 03;
+ screen.priority().fill(0, cliprect);
+
+ if (m_cps_version == 1)
+ {
+ if (BIT(m_bootleg_kludge, 7))
+ cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, m_palette_align));
+
+ cps1_render_layer(screen, bitmap, cliprect, l0, 0);
+
+ if (l1 == 0)
+ cps1_render_high_layer(screen, bitmap, cliprect, l0); /* prepare mask for sprites */
+
+ cps1_render_layer(screen, bitmap, cliprect, l1, 0);
+
+ if (l2 == 0)
+ cps1_render_high_layer(screen, bitmap, cliprect, l1); /* prepare mask for sprites */
+
+ cps1_render_layer(screen, bitmap, cliprect, l2, 0);
+
+ if (l3 == 0)
+ cps1_render_high_layer(screen, bitmap, cliprect, l2); /* prepare mask for sprites */
+
+ cps1_render_layer(screen, bitmap, cliprect, l3, 0);
+ }
+ else
+ {
+ int l0pri, l1pri, l2pri, l3pri;
+ int primasks[8], i;
+ l0pri = (m_pri_ctrl >> 4 * l0) & 0x0f;
+ l1pri = (m_pri_ctrl >> 4 * l1) & 0x0f;
+ l2pri = (m_pri_ctrl >> 4 * l2) & 0x0f;
+ l3pri = (m_pri_ctrl >> 4 * l3) & 0x0f;
+
+#if 0
+if ( (m_output[CPS2_OBJ_BASE /2] != 0x7080 && m_output[CPS2_OBJ_BASE /2] != 0x7000) ||
+ m_output[CPS2_OBJ_UK1 /2] != 0x807d ||
+ (m_output[CPS2_OBJ_UK2 /2] != 0x0000 && m_output[CPS2_OBJ_UK2 /2] != 0x1101 && m_output[CPS2_OBJ_UK2 /2] != 0x0001))
+ popmessage("base %04x uk1 %04x uk2 %04x",
+ m_output[CPS2_OBJ_BASE /2],
+ m_output[CPS2_OBJ_UK1 /2],
+ m_output[CPS2_OBJ_UK2 /2]);
+
+if (0 && machine().input().code_pressed(KEYCODE_Z))
+ popmessage("order: %d (%d) %d (%d) %d (%d) %d (%d)",l0,l0pri,l1,l1pri,l2,l2pri,l3,l3pri);
+#endif
+
+ /* take out the CPS1 sprites layer */
+ if (l0 == 0) { l0 = l1; l1 = 0; l0pri = l1pri; }
+ if (l1 == 0) { l1 = l2; l2 = 0; l1pri = l2pri; }
+ if (l2 == 0) { l2 = l3; l3 = 0; l2pri = l3pri; }
+
+ {
+ int mask0 = 0xaa;
+ int mask1 = 0xcc;
+ if (l0pri > l1pri) mask0 &= ~0x88;
+ if (l0pri > l2pri) mask0 &= ~0xa0;
+ if (l1pri > l2pri) mask1 &= ~0xc0;
+
+ primasks[0] = 0xff;
+ for (i = 1; i < 8; i++)
+ {
+ if (i <= l0pri && i <= l1pri && i <= l2pri)
+ {
+ primasks[i] = 0xfe;
+ continue;
+ }
+ primasks[i] = 0;
+ if (i <= l0pri) primasks[i] |= mask0;
+ if (i <= l1pri) primasks[i] |= mask1;
+ if (i <= l2pri) primasks[i] |= 0xf0;
+ }
+ }
+
+ cps1_render_layer(screen, bitmap, cliprect, l0, 1);
+ cps1_render_layer(screen, bitmap, cliprect, l1, 2);
+ cps1_render_layer(screen, bitmap, cliprect, l2, 4);
+ cps2_render_sprites(screen, bitmap, cliprect, primasks);
+ }
+
+ return 0;
+}
+
+WRITE_LINE_MEMBER(cps_state::screen_vblank_cps1)
+{
+ // rising edge
+ if (state)
+ {
+ /* Get video memory base registers */
+ cps1_get_video_base();
+
+ if (m_cps_version == 1)
+ {
+ /* CPS1 sprites have to be delayed one frame */
+ memcpy(m_buffered_obj.get(), m_obj, m_obj_size);
+ }
+ }
+}
+
+void cps_state::cps2_set_sprite_priorities()
+{
+ m_pri_ctrl = m_output[CPS2_OBJ_PRI /2];
+}
+
+void cps_state::cps2_objram_latch()
+{
+ cps2_set_sprite_priorities();
+ memcpy(m_cps2_buffered_obj.get(), cps2_objbase(), m_cps2_obj_size);
+}
diff --git a/docs/release/src/hbmame/video/galaxian.cpp b/docs/release/src/hbmame/video/galaxian.cpp
new file mode 100644
index 00000000000..c94dac4e83f
--- /dev/null
+++ b/docs/release/src/hbmame/video/galaxian.cpp
@@ -0,0 +1,87 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/video/galaxian.cpp"
+
+
+/***************************************************************************
+
+ HBMAME Video support for extra games
+
+***************************************************************************/
+
+
+
+
+
+/*************************************
+ *
+ * Four Play extensions
+ *
+ *************************************/
+
+/* gfxbank[4] is used as a cpu bank number, and gfxbank[0] for graphics banking */
+WRITE8_MEMBER( galaxian_state::fourplay_rombank_w )
+{
+ m_gfxbank[4] = (m_gfxbank[4] & (2 - offset)) | (data << offset);
+
+ m_gfxbank[0] = (m_gfxbank[4] == 3); // 1 = true, 0 = false
+
+ membank("bank1")->set_entry( m_gfxbank[4] );
+}
+
+
+
+/*************************************
+ *
+ * Video Eight extensions
+ *
+ *************************************/
+
+void galaxian_state::videight_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x)
+{
+ *code |= (m_gfxbank[0] << 8);
+ *color |= (m_gfxbank[4] << 3);
+}
+
+void galaxian_state::videight_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color)
+{
+ *code |= (m_gfxbank[0] << 6);
+ *color |= (m_gfxbank[4] << 3);
+}
+
+
+/* This handles the main bankswitching for code and one-bank gfx games */
+WRITE8_MEMBER( galaxian_state::videight_rombank_w )
+{
+ uint8_t gfxbanks[] = { 0, 10, 2, 8, 1, 9, 4, 11 };
+ if (offset == 2)
+ galaxian_stars_enable_w( space, 0, data );
+ else
+ {
+ m_gfxbank[4] = (m_gfxbank[4] & (6 - offset)) | (data << ((offset + 1) >> 1));
+ galaxian_gfxbank_w (space, 0, gfxbanks[m_gfxbank[4]]);
+ membank("bank1")->set_entry( m_gfxbank[4] );
+ }
+}
+
+/* This handles those games with multiple gfx banks */
+WRITE8_MEMBER( galaxian_state::videight_gfxbank_w )
+{
+ /* Moon Cresta (mooncrgx) */
+ if (( data < 2 ) && (m_gfxbank[4] == 3))
+ {
+ uint8_t gfxbanks[] = { 8, 12, 8, 14, 8, 13, 8, 15 };
+ if (!offset) m_gfxbank[3] = (m_gfxbank[3] & 6) | data;
+ if (offset == 1) m_gfxbank[3] = (m_gfxbank[3] & 5) | (data << 1);
+ if (offset == 2) m_gfxbank[3] = (m_gfxbank[3] & 3) | (data << 2);
+ galaxian_gfxbank_w(space, 0, gfxbanks[m_gfxbank[3]]);
+ }
+
+ /* Uniwar S */
+ if (( data < 2 ) && (m_gfxbank[4] == 2) && (offset == 2))
+ galaxian_gfxbank_w( space, 0, data+2 );
+
+ /* Pisces (piscesb) */
+ if (( data < 2 ) && (m_gfxbank[4] == 6) && (offset == 2))
+ galaxian_gfxbank_w( space, 0, data+4 );
+}
diff --git a/docs/release/src/hbmame/video/neogeo.cpp b/docs/release/src/hbmame/video/neogeo.cpp
new file mode 100644
index 00000000000..35227dd4d72
--- /dev/null
+++ b/docs/release/src/hbmame/video/neogeo.cpp
@@ -0,0 +1,279 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari
+// thanks-to:Fuzz
+/***************************************************************************
+
+ Neo-Geo hardware
+
+****************************************************************************/
+
+#include "emu.h"
+#include "includes/neogeo.h"
+#include "video/resnet.h"
+
+#define NUM_PENS (0x1000)
+#define VERBOSE (0)
+
+
+
+/*************************************
+ *
+ * Palette handling
+ *
+ *************************************/
+
+void neogeo_state::create_rgb_lookups()
+{
+ static const int resistances[] = {3900, 2200, 1000, 470, 220};
+
+ /* compute four sets of weights - with or without the pulldowns -
+ ensuring that we use the same scaler for all */
+ double weights_normal[5];
+ double scaler = compute_resistor_weights(0, 255, -1,
+ 5, resistances, weights_normal, 0, 0,
+ 0, nullptr, nullptr, 0, 0,
+ 0, nullptr, nullptr, 0, 0);
+
+ double weights_dark[5];
+ compute_resistor_weights(0, 255, scaler,
+ 5, resistances, weights_dark, 8200, 0,
+ 0, nullptr, nullptr, 0, 0,
+ 0, nullptr, nullptr, 0, 0);
+
+ double weights_shadow[5];
+ compute_resistor_weights(0, 255, scaler,
+ 5, resistances, weights_shadow, 150, 0,
+ 0, nullptr, nullptr, 0, 0,
+ 0, nullptr, nullptr, 0, 0);
+
+ double weights_dark_shadow[5];
+ compute_resistor_weights(0, 255, scaler,
+ 5, resistances, weights_dark_shadow, 1.0 / ((1.0 / 8200) + (1.0 / 150)), 0,
+ 0, nullptr, nullptr, 0, 0,
+ 0, nullptr, nullptr, 0, 0);
+
+ for (int i = 0; i < 32; i++)
+ {
+ int i4 = (i >> 4) & 1;
+ int i3 = (i >> 3) & 1;
+ int i2 = (i >> 2) & 1;
+ int i1 = (i >> 1) & 1;
+ int i0 = (i >> 0) & 1;
+ m_palette_lookup[i][0] = combine_5_weights(weights_normal, i0, i1, i2, i3, i4);
+ m_palette_lookup[i][1] = combine_5_weights(weights_dark, i0, i1, i2, i3, i4);
+ m_palette_lookup[i][2] = combine_5_weights(weights_shadow, i0, i1, i2, i3, i4);
+ m_palette_lookup[i][3] = combine_5_weights(weights_dark_shadow, i0, i1, i2, i3, i4);
+ }
+}
+
+void neogeo_state::set_pens()
+{
+ const pen_t *pen_base = m_palette->pens() + m_palette_bank + (m_screen_shadow ? 0x2000 : 0);
+ m_sprgen->set_pens(pen_base);
+ m_bg_pen = pen_base + 0xfff;
+}
+
+
+void neogeo_state::neogeo_set_screen_shadow( int data )
+{
+ m_screen_shadow = data;
+ set_pens();
+}
+
+
+void neogeo_state::neogeo_set_palette_bank( int data )
+{
+ m_palette_bank = data ? 0x1000 : 0;
+ set_pens();
+}
+
+
+READ16_MEMBER(neogeo_state::neogeo_paletteram_r)
+{
+ return m_paletteram[m_palette_bank + offset];
+}
+
+
+WRITE16_MEMBER(neogeo_state::neogeo_paletteram_w)
+{
+ offset += m_palette_bank;
+ data = COMBINE_DATA(&m_paletteram[offset]);
+
+ int dark = data >> 15;
+ int r = ((data >> 14) & 0x1) | ((data >> 7) & 0x1e);
+ int g = ((data >> 13) & 0x1) | ((data >> 3) & 0x1e);
+ int b = ((data >> 12) & 0x1) | ((data << 1) & 0x1e);
+
+ m_palette->set_pen_color(offset,
+ m_palette_lookup[r][dark],
+ m_palette_lookup[g][dark],
+ m_palette_lookup[b][dark]); // normal
+
+ m_palette->set_pen_color(offset + 0x2000,
+ m_palette_lookup[r][dark+2],
+ m_palette_lookup[g][dark+2],
+ m_palette_lookup[b][dark+2]); // shadow
+}
+
+
+
+/*************************************
+ *
+ * Video system start
+ *
+ *************************************/
+
+void neogeo_state::video_start()
+{
+ create_rgb_lookups();
+
+ m_paletteram.resize(0x1000 * 2);
+ memset(&m_paletteram[0], 0, 0x1000 * 2 * sizeof(m_paletteram[0]));
+
+ m_screen_shadow = 0;
+ m_palette_bank = 0;
+
+ save_item(NAME(m_paletteram));
+ save_item(NAME(m_screen_shadow));
+ save_item(NAME(m_palette_bank));
+ machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_state::set_pens), this));
+
+ set_pens();
+}
+
+
+
+/*************************************
+ *
+ * Video system reset
+ *
+ *************************************/
+
+void neogeo_state::video_reset()
+{
+}
+
+
+
+/*************************************
+ *
+ * Video update
+ *
+ *************************************/
+
+uint32_t neogeo_state::screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ // fill with background color first
+ bitmap.fill(*m_bg_pen, cliprect);
+
+ m_sprgen->draw_sprites(bitmap, cliprect.min_y);
+
+ m_sprgen->draw_fixed_layer(bitmap, cliprect.min_y);
+
+ return 0;
+}
+
+
+
+/*************************************
+ *
+ * Video control
+ *
+ *************************************/
+
+uint16_t neogeo_state::get_video_control( )
+{
+ uint16_t ret;
+ uint16_t v_counter;
+
+ /*
+ The format of this very important location is: AAAA AAAA A??? BCCC
+
+ A is the raster line counter. mosyougi relies solely on this to do the
+ raster effects on the title screen; sdodgeb loops waiting for the top
+ bit to be 1; zedblade heavily depends on it to work correctly (it
+ checks the top bit in the IRQ2 handler).
+ B is definitely a PAL/NTSC flag. (LSPC2 only) Evidence:
+ 1) trally changes the position of the speed indicator depending on
+ it (0 = lower 1 = higher).
+ 2) samsho3 sets a variable to 60 when the bit is 0 and 50 when it's 1.
+ This is obviously the video refresh rate in Hz.
+ 3) samsho3 sets another variable to 256 or 307. This could be the total
+ screen height (including vblank), or close to that.
+ Some games (e.g. lstbld2, samsho3) do this (or similar):
+ bclr #$0, $3c000e.l
+ when the bit is set, so 3c000e (whose function is unknown) has to be
+ related
+ C animation counter lower 3 bits
+ */
+
+ /* the vertical counter chain goes from 0xf8 - 0x1ff */
+ v_counter = m_screen->vpos() + 0x100;
+
+ if (v_counter >= 0x200)
+ v_counter = v_counter - NEOGEO_VTOTAL;
+
+ ret = (v_counter << 7) | (m_sprgen->neogeo_get_auto_animation_counter() & 0x0007);
+
+ if (VERBOSE) logerror("%s: video_control read (%04x)\n", machine().describe_context(), ret);
+
+ return ret;
+}
+
+
+void neogeo_state::set_video_control( uint16_t data )
+{
+ if (VERBOSE) logerror("%s: video control write %04x\n", machine().describe_context(), data);
+
+ m_sprgen->set_auto_animation_speed(data >> 8);
+ m_sprgen->set_auto_animation_disabled(data & 0x0008);
+
+ neogeo_set_display_position_interrupt_control(data & 0x00f0);
+}
+
+
+READ16_MEMBER(neogeo_state::neogeo_video_register_r)
+{
+ uint16_t ret;
+
+ /* accessing the LSB only is not mapped */
+ if (mem_mask == 0x00ff)
+ ret = neogeo_unmapped_r(space, 0, 0xffff) & 0x00ff;
+ else
+ {
+ switch (offset)
+ {
+ default:
+ case 0x00:
+ case 0x01: ret = m_sprgen->get_videoram_data(); break;
+ case 0x02: ret = m_sprgen->get_videoram_modulo(); break;
+ case 0x03: ret = get_video_control(); break;
+ }
+ }
+
+ return ret;
+}
+
+
+WRITE16_MEMBER(neogeo_state::neogeo_video_register_w)
+{
+ /* accessing the LSB only is not mapped */
+ if (mem_mask != 0x00ff)
+ {
+ /* accessing the MSB only stores same data in MSB and LSB */
+ if (mem_mask == 0xff00)
+ data = (data & 0xff00) | (data >> 8);
+
+ switch (offset)
+ {
+ case 0x00: m_sprgen->set_videoram_offset(data); break;
+ case 0x01: m_sprgen->set_videoram_data(data); break;
+ case 0x02: m_sprgen->set_videoram_modulo(data); break;
+ case 0x03: set_video_control(data); break;
+ case 0x04: neogeo_set_display_counter_msb(data); break;
+ case 0x05: neogeo_set_display_counter_lsb(data); break;
+ case 0x06: neogeo_acknowledge_interrupt(data); break;
+ case 0x07: break; // d0: pause timer for 32 lines when in PAL mode (LSPC2 only)
+ }
+ }
+}
diff --git a/docs/release/src/hbmame/video/neogeo_spr.cpp b/docs/release/src/hbmame/video/neogeo_spr.cpp
new file mode 100644
index 00000000000..023b652fc92
--- /dev/null
+++ b/docs/release/src/hbmame/video/neogeo_spr.cpp
@@ -0,0 +1,644 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari
+// thanks-to:Fuzz
+/* NeoGeo sprites (and fixed text layer) */
+
+#include "emu.h"
+#include "neogeo_spr.h"
+#include "screen.h"
+
+const device_type NEOGEO_SPRITE = device_creator<neosprite_device>;
+
+neosprite_device::neosprite_device
+ (const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, NEOGEO_SPRITE, "Neo-Geo Sprites", tag, owner, clock, "neosprite", __FILE__)
+ , m_bppshift(4)
+ , m_spritegfx8(nullptr)
+ { }
+
+void neosprite_device::device_start()
+{
+ m_videoram = std::make_unique<uint16_t[]>(0x8000 + 0x800);
+ m_videoram_drawsource = m_videoram.get();
+
+ /* clear allocated memory */
+ memset(m_videoram.get(), 0x00, (0x8000 + 0x800) * sizeof(uint16_t));
+
+ create_sprite_line_timer();
+ create_auto_animation_timer();
+
+ /* initialize values that are not modified on a reset */
+ m_vram_offset = 0;
+ m_vram_read_buffer = 0;
+ m_vram_modulo = 0;
+ m_auto_animation_speed = 0;
+ m_auto_animation_disabled = 0;
+ m_auto_animation_counter = 0;
+ m_auto_animation_frame_counter = 0;
+
+ /* register for state saving */
+ save_pointer(NAME(m_videoram.get()), 0x8000 + 0x800);
+ save_item(NAME(m_vram_offset));
+ save_item(NAME(m_vram_read_buffer));
+ save_item(NAME(m_vram_modulo));
+ save_item(NAME(m_fixed_layer_source));
+
+ save_item(NAME(m_auto_animation_speed));
+ save_item(NAME(m_auto_animation_disabled));
+ save_item(NAME(m_auto_animation_counter));
+ save_item(NAME(m_auto_animation_frame_counter));
+
+ m_region_zoomy = memregion(":zoomy")->base();
+}
+
+void neosprite_device::device_reset()
+{
+ //m_sprite_gfx_address_mask = 0;
+ optimize_sprite_data();
+
+ start_sprite_line_timer();
+ start_auto_animation_timer();
+}
+
+
+
+/*************************************
+ *
+ * Video RAM access
+ *
+ *************************************/
+
+void neosprite_device::set_videoram_offset( uint16_t data )
+{
+ m_vram_offset = (data & 0x8000 ? data & 0x87ff : data);
+
+ /* the read happens right away */
+ m_vram_read_buffer = m_videoram[m_vram_offset];
+}
+
+
+uint16_t neosprite_device::get_videoram_data( )
+{
+ return m_vram_read_buffer;
+}
+
+
+void neosprite_device::set_videoram_data( uint16_t data)
+{
+ m_videoram[m_vram_offset] = data;
+
+ /* auto increment/decrement the current offset - A15 is NOT affected */
+ set_videoram_offset((m_vram_offset & 0x8000) | ((m_vram_offset + m_vram_modulo) & 0x7fff));
+}
+
+
+void neosprite_device::set_videoram_modulo( uint16_t data)
+{
+ m_vram_modulo = data;
+}
+
+
+uint16_t neosprite_device::get_videoram_modulo( )
+{
+ return m_vram_modulo;
+}
+
+
+
+/*************************************
+ *
+ * Auto animation
+ *
+ *************************************/
+
+void neosprite_device::set_auto_animation_speed( uint8_t data)
+{
+ m_auto_animation_speed = data;
+}
+
+
+void neosprite_device::set_auto_animation_disabled( uint8_t data)
+{
+ m_auto_animation_disabled = data;
+}
+
+
+uint8_t neosprite_device::neogeo_get_auto_animation_counter( )
+{
+ return m_auto_animation_counter;
+}
+
+
+TIMER_CALLBACK_MEMBER(neosprite_device::auto_animation_timer_callback)
+{
+ if (m_auto_animation_frame_counter == 0)
+ {
+ m_auto_animation_frame_counter = m_auto_animation_speed;
+ m_auto_animation_counter += 1;
+ }
+ else
+ m_auto_animation_frame_counter = m_auto_animation_frame_counter - 1;
+
+ m_auto_animation_timer->adjust(m_screen->time_until_pos(NEOGEO_VSSTART));
+}
+
+
+void neosprite_device::create_auto_animation_timer( )
+{
+ m_auto_animation_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_device::auto_animation_timer_callback),this));
+}
+
+
+void neosprite_device::start_auto_animation_timer( )
+{
+ m_auto_animation_timer->adjust(m_screen->time_until_pos(NEOGEO_VSSTART));
+}
+
+
+
+/*************************************
+ *
+ * Fixed layer
+ *
+ *************************************/
+
+void neosprite_device::neogeo_set_fixed_layer_source( uint8_t data )
+{
+ m_fixed_layer_source = data;
+}
+
+
+void neosprite_device::draw_fixed_layer( bitmap_rgb32 &bitmap, int scanline )
+{
+ uint8_t* gfx_base = m_fixed_layer_source ? m_region_fixed : m_region_fixedbios->base();
+ uint32_t addr_mask = ( m_fixed_layer_source ? m_region_fixed_size : m_region_fixedbios->bytes() ) - 1;
+ uint16_t *video_data = &m_videoram_drawsource[0x7000 | (scanline >> 3)];
+ uint32_t *pixel_addr = &bitmap.pix32(scanline, NEOGEO_HBEND);
+
+ uint8_t garouoffsets[32];
+ bool banked = m_fixed_layer_source && (addr_mask > 0x1ffff);
+
+ /* thanks to Mr K for the garou & kof2000 banking info */
+ /* Build line banking table for Garou & MS3 before starting render */
+ if (banked && m_fixed_layer_bank_type == 1)
+ {
+ uint8_t garoubank = 0, k = 0, y = 0;
+ while (y < 32)
+ {
+ if (m_videoram_drawsource[0x7500 + k] == 0x0200 && (m_videoram_drawsource[0x7580 + k] & 0xff00) == 0xff00)
+ {
+ garoubank = m_videoram_drawsource[0x7580 + k] & 3;
+ garouoffsets[y++] = garoubank;
+ }
+ garouoffsets[y++] = garoubank;
+ k += 2;
+ }
+ }
+
+ for (uint8_t x = 0; x < 40; x++)
+ {
+ uint16_t code_and_palette = *video_data;
+ uint16_t code = code_and_palette & 0x0fff;
+
+ if (banked)
+ {
+ int y = scanline >> 3;
+ switch (m_fixed_layer_bank_type)
+ {
+ case 1:
+ /* Garou, MSlug 3 */
+ code += 0x1000 * (garouoffsets[(y - 2) & 31] ^ 3);
+ break;
+ case 2:
+ code += 0x1000 * (((m_videoram_drawsource[0x7500 + ((y - 1) & 31) + 32 * (x / 6)] >> (5 - (x % 6)) * 2) & 3) ^ 3);
+ break;
+ }
+ }
+
+ {
+ int gfx_offset = ((code << 5) | (scanline & 0x07)) & addr_mask;
+
+ const pen_t *char_pens;
+
+ char_pens = &m_pens[code_and_palette >> 12 << m_bppshift];
+
+ static const uint32_t pix_offsets[] = { 0x10, 0x18, 0x00, 0x08 };
+
+ for (u8 i = 0; i < 4; i++)
+ draw_fixed_layer_2pixels(pixel_addr, gfx_offset + pix_offsets[i], gfx_base, char_pens);
+ }
+
+ video_data += 0x20;
+ }
+}
+
+
+inline void neosprite_device::draw_fixed_layer_2pixels(uint32_t*&pixel_addr, int offset, uint8_t* gfx_base, const pen_t* char_pens)
+{
+ uint8_t data = gfx_base[offset];
+
+ if (data & 0x0f)
+ *pixel_addr = char_pens[data & 0x0f];
+ pixel_addr++;
+
+ if (data & 0xf0)
+ *pixel_addr = char_pens[data >> 4];
+ pixel_addr++;
+}
+
+/*************************************
+ *
+ * Sprite hardware
+ *
+ *************************************/
+
+#define MAX_SPRITES_PER_SCREEN (381)
+// HBMAME
+//#define MAX_SPRITES_PER_LINE (96)
+// beast requires 236 sprites, also fixes neopong and lhcdb
+#define MAX_SPRITES_PER_LINE (236)
+
+
+/* horizontal zoom table - verified on real hardware */
+static const int zoom_x_tables[][16] =
+{
+ { 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
+ { 0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 },
+ { 0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0 },
+ { 0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 },
+ { 0,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0 },
+ { 0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0 },
+ { 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 },
+ { 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 },
+ { 1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0 },
+ { 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0 },
+ { 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1 },
+ { 1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1 },
+ { 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1 },
+ { 1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1 },
+ { 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1 },
+ { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
+};
+
+
+
+inline bool neosprite_device::sprite_on_scanline(int scanline, int y, int rows)
+{
+ return (rows == 0) || (rows >= 0x20) || ((scanline - y) & 0x1ff) < (rows * 0x10);
+}
+
+
+
+
+void neosprite_device::draw_sprites( bitmap_rgb32 &bitmap, int scanline )
+{
+ int sprite_index;
+ int max_sprite_index;
+
+ int y = 0;
+ int x = 0;
+ int rows = 0;
+ int zoom_y = 0;
+ int zoom_x = 0;
+ uint16_t *sprite_list;
+
+ /* select the active list */
+ if (scanline & 0x01)
+ sprite_list = &m_videoram_drawsource[0x8680];
+ else
+ sprite_list = &m_videoram_drawsource[0x8600];
+
+ /* optimization -- find last non-zero entry and only draw that many +1
+ sprite. This is not 100% correct as the hardware will keep drawing
+ the #0 sprite over and over, but we need the speed */
+ for (max_sprite_index = (MAX_SPRITES_PER_LINE - 1); max_sprite_index >= 0; max_sprite_index--)
+ {
+ if (sprite_list[max_sprite_index] != 0)
+ break;
+ }
+
+ /* add the +1 now, just in case the 0 at the end is real sprite */
+ if (max_sprite_index != (MAX_SPRITES_PER_LINE - 1))
+ max_sprite_index = max_sprite_index + 1;
+
+ for (sprite_index = 0; sprite_index <= max_sprite_index; sprite_index++)
+ {
+ uint16_t sprite_number = sprite_list[sprite_index] & 0x01ff;
+ uint16_t y_control = m_videoram_drawsource[0x8200 | sprite_number];
+ uint16_t zoom_control = m_videoram_drawsource[0x8000 | sprite_number];
+
+ /* if chained, go to next X coordinate and get new X zoom */
+ if (y_control & 0x40)
+ {
+ x = (x + zoom_x + 1) & 0x01ff;
+ zoom_x = (zoom_control >> 8) & 0x0f;
+ }
+ /* new block */
+ else
+ {
+ y = 0x200 - (y_control >> 7);
+ x = m_videoram_drawsource[0x8400 | sprite_number] >> 7;
+
+ zoom_y = (zoom_control & 0xff);
+
+ zoom_x = (zoom_control >> 8) & 0x0f;
+ rows = y_control & 0x3f;
+ }
+
+ /* skip if falls completely outside the screen */
+ if ((x >= 0x140) && (x <= 0x1f0))
+ continue;
+
+ /* double check the Y coordinate, in case somebody modified the sprite coordinate
+ since we buffered it */
+ if (sprite_on_scanline(scanline, y, rows))
+ {
+ int sprite_y;
+ int tile;
+ uint8_t sprite_y_and_tile;
+ offs_t attr_and_code_offs;
+ uint16_t attr;
+ uint32_t code;
+ const int *zoom_x_table;
+ const pen_t *line_pens;
+ int x_inc;
+
+ int sprite_line = (scanline - y) & 0x1ff;
+ int zoom_line = sprite_line & 0xff;
+ int invert = sprite_line & 0x100;
+
+ if (invert)
+ zoom_line ^= 0xff;
+
+ if (rows > 0x20)
+ {
+ zoom_line = zoom_line % ((zoom_y + 1) << 1);
+
+ if (zoom_line > zoom_y)
+ {
+ zoom_line = ((zoom_y + 1) << 1) - 1 - zoom_line;
+ invert = !invert;
+ }
+ }
+
+ sprite_y_and_tile = m_region_zoomy[(zoom_y << 8) | zoom_line];
+
+ sprite_y = sprite_y_and_tile & 0x0f;
+ tile = sprite_y_and_tile >> 4;
+
+ if (invert)
+ {
+ sprite_y ^= 0x0f;
+ tile ^= 0x1f;
+ }
+
+ attr_and_code_offs = (sprite_number << 6) | (tile << 1);
+ attr = m_videoram_drawsource[attr_and_code_offs + 1];
+ code = ((attr << 12) & 0x70000) | m_videoram_drawsource[attr_and_code_offs];
+
+ /* substitute auto animation bits */
+ if (!m_auto_animation_disabled)
+ {
+ if (attr & 0x0008)
+ code = (code & ~0x07) | (m_auto_animation_counter & 0x07);
+ else if (attr & 0x0004)
+ code = (code & ~0x03) | (m_auto_animation_counter & 0x03);
+ }
+
+ /* vertical flip? */
+ if (attr & 0x0002)
+ sprite_y ^= 0x0f;
+
+ zoom_x_table = zoom_x_tables[zoom_x];
+
+ /* compute offset in gfx ROM and mask it to the number of bits available */
+ int gfx_base = ((code << 8) | (sprite_y << 4)) & m_sprite_gfx_address_mask;
+
+ line_pens = &m_pens[attr >> 8 << m_bppshift];
+
+ /* horizontal flip? */
+ if (attr & 0x0001)
+ {
+ gfx_base = gfx_base + 0x0f;
+ x_inc = -1;
+ }
+ else
+ x_inc = 1;
+
+ /* draw the line - no wrap-around */
+ if (x <= 0x01f0)
+ {
+ int i;
+
+ uint32_t *pixel_addr = &bitmap.pix32(scanline, x + NEOGEO_HBEND);
+
+ for (i = 0; i < 0x10; i++)
+ {
+ if (*zoom_x_table)
+ {
+ draw_pixel(gfx_base, pixel_addr, line_pens);
+
+ pixel_addr++;
+ }
+
+ zoom_x_table++;
+ gfx_base += x_inc;
+ }
+ }
+ /* wrap-around */
+ else
+ {
+ int i;
+
+ int x_save = x;
+ uint32_t *pixel_addr = &bitmap.pix32(scanline, NEOGEO_HBEND);
+
+ for (i = 0; i < 0x10; i++)
+ {
+ if (*zoom_x_table)
+ {
+ if (x >= 0x200)
+ {
+ draw_pixel(gfx_base, pixel_addr, line_pens);
+
+ pixel_addr++;
+ }
+
+ x++;
+ }
+
+ zoom_x_table++;
+ gfx_base += x_inc;
+ }
+
+ x = x_save;
+ }
+ }
+ }
+}
+
+
+void neosprite_device::parse_sprites( int scanline )
+{
+ uint16_t sprite_number;
+ int y = 0;
+ int rows = 0;
+ uint16_t *sprite_list;
+
+ int active_sprite_count = 0;
+
+ /* select the active list */
+ if (scanline & 0x01)
+ sprite_list = &m_videoram_drawsource[0x8680];
+ else
+ sprite_list = &m_videoram_drawsource[0x8600];
+
+ /* scan all sprites */
+ for (sprite_number = 0; sprite_number < MAX_SPRITES_PER_SCREEN; sprite_number++)
+ {
+ uint16_t y_control = m_videoram_drawsource[0x8200 | sprite_number];
+
+ /* if not chained, get Y position and height, otherwise use previous values */
+ if (~y_control & 0x40)
+ {
+ y = 0x200 - (y_control >> 7);
+ rows = y_control & 0x3f;
+ }
+
+ /* skip sprites with 0 rows */
+ if (rows == 0)
+ continue;
+
+ if (!sprite_on_scanline(scanline, y, rows))
+ continue;
+
+ /* sprite is on this scanline, add it to active list */
+ *sprite_list = sprite_number;
+
+ sprite_list++;
+
+ /* increment sprite count, and if we reached the max, bail out */
+ active_sprite_count++;
+
+ if (active_sprite_count == MAX_SPRITES_PER_LINE)
+ break;
+ }
+
+ /* fill the rest of the sprite list with 0, including one extra entry */
+ memset(sprite_list, 0, sizeof(sprite_list[0]) * (MAX_SPRITES_PER_LINE - active_sprite_count + 1));
+}
+
+
+TIMER_CALLBACK_MEMBER(neosprite_device::sprite_line_timer_callback)
+{
+ int scanline = param;
+
+ // we are at the beginning of a scanline - we need to draw the previous scanline and parse the sprites on the current one
+ if (scanline != 0)
+ m_screen->update_partial(scanline - 1);
+
+ parse_sprites(scanline);
+
+ // let's come back at the beginning of the next line
+ scanline = (scanline + 1) % NEOGEO_VTOTAL;
+
+ m_sprite_line_timer->adjust(m_screen->time_until_pos(scanline), scanline);
+}
+
+
+void neosprite_device::create_sprite_line_timer( )
+{
+ m_sprite_line_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_device::sprite_line_timer_callback),this));
+}
+
+
+void neosprite_device::start_sprite_line_timer( )
+{
+ m_sprite_line_timer->adjust(m_screen->time_until_pos(0));
+}
+
+
+// these are for passing in pointers from the main system
+void neosprite_device::set_sprite_region(uint8_t* region_sprites, uint32_t region_sprites_size)
+{
+ m_region_sprites = region_sprites;
+ m_region_sprites_size = region_sprites_size;
+}
+
+void neosprite_device::set_fixed_regions(uint8_t* fix_cart, uint32_t fix_cart_size, memory_region* fix_bios)
+{
+ m_region_fixed = fix_cart;
+ m_region_fixed_size = fix_cart_size;
+ m_region_fixedbios = fix_bios;
+}
+
+void neosprite_device::set_screen(screen_device* screen)
+{
+ m_screen = screen;
+}
+
+void neosprite_device::set_pens(const pen_t* pens)
+{
+ m_pens = pens;
+}
+
+
+
+/*********************************************************************************************************************************/
+/* Regular NeoGeo sprite handling with pre-decode optimization */
+/* */
+/* this is closer to the old MAME implementation where the 4bpp graphics have been expanded to an easier to draw 8bpp format */
+/* for additional speed */
+/*********************************************************************************************************************************/
+
+
+// convert the sprite graphics data into a format that allows faster blitting
+void neosprite_device::optimize_sprite_data()
+{
+ uint32_t mask = 0xffffffff, len = m_region_sprites_size * 2 - 1;
+ uint8_t bit;
+
+ for (bit = 31; bit != 0; bit--)
+ if (BIT(len, bit))
+ break;
+
+ mask >>= (31-bit);
+
+ m_sprite_gfx.resize(mask + 1);
+ m_sprite_gfx_address_mask = mask;
+
+ uint8_t *src = m_region_sprites;
+ uint8_t *dest = &m_sprite_gfx[0];
+
+ for (unsigned i = 0; i < m_region_sprites_size; i += 0x80, src += 0x80)
+ {
+ for (unsigned y = 0; y < 0x10; y++)
+ {
+ for (unsigned x = 0; x < 8; x++)
+ {
+ *(dest++) = (((src[0x43 | (y << 2)] >> x) & 0x01) << 3) |
+ (((src[0x41 | (y << 2)] >> x) & 0x01) << 2) |
+ (((src[0x42 | (y << 2)] >> x) & 0x01) << 1) |
+ (((src[0x40 | (y << 2)] >> x) & 0x01) << 0);
+ }
+
+ for (unsigned x = 0; x < 8; x++)
+ {
+ *(dest++) = (((src[0x03 | (y << 2)] >> x) & 0x01) << 3) |
+ (((src[0x01 | (y << 2)] >> x) & 0x01) << 2) |
+ (((src[0x02 | (y << 2)] >> x) & 0x01) << 1) |
+ (((src[0x00 | (y << 2)] >> x) & 0x01) << 0);
+ }
+ }
+ }
+
+ m_spritegfx8 = &m_sprite_gfx[0];
+}
+
+inline void neosprite_device::draw_pixel(int romaddr, uint32_t* dst, const pen_t *line_pens)
+{
+ const uint8_t gfx = m_spritegfx8[romaddr];
+
+ if (gfx)
+ *dst = line_pens[gfx];
+}
diff --git a/docs/release/src/hbmame/video/neogeo_spr.h b/docs/release/src/hbmame/video/neogeo_spr.h
new file mode 100644
index 00000000000..8401f50a967
--- /dev/null
+++ b/docs/release/src/hbmame/video/neogeo_spr.h
@@ -0,0 +1,87 @@
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari
+// thanks-to:Fuzz
+
+// todo, move these back, currently the sprite code needs some of the values tho
+#define NEOGEO_MASTER_CLOCK (24000000)
+#define NEOGEO_MAIN_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 2)
+#define NEOGEO_AUDIO_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 6)
+#define NEOGEO_YM2610_CLOCK (NEOGEO_MASTER_CLOCK / 3)
+#define NEOGEO_PIXEL_CLOCK (NEOGEO_MASTER_CLOCK / 4)
+#define NEOGEO_HTOTAL (0x180)
+#define NEOGEO_HBEND (0x01e) /* this should really be 29.5 */
+#define NEOGEO_HBSTART (0x15e) /* this should really be 349.5 */
+#define NEOGEO_VTOTAL (0x108)
+#define NEOGEO_VBEND (0x010)
+#define NEOGEO_VBSTART (0x0f0)
+#define NEOGEO_VSSTART (0x100)
+
+
+class neosprite_device : public device_t
+{
+public:
+ neosprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ uint8_t m_fixed_layer_bank_type;
+ uint8_t m_fixed_layer_source;
+ uint16_t get_videoram_data( );
+ uint16_t get_videoram_modulo( );
+ uint8_t neogeo_get_auto_animation_counter( );
+ void set_videoram_data( uint16_t data);
+ void set_videoram_offset( uint16_t data );
+ void set_videoram_modulo( uint16_t data);
+ void set_auto_animation_speed( uint8_t data);
+ void set_auto_animation_disabled( uint8_t data);
+ void set_screen(screen_device* screen);
+ void set_pens(const pen_t* pens);
+ virtual void set_sprite_region(uint8_t* region_sprites, uint32_t region_sprites_size);
+ void set_fixed_regions(uint8_t* fix_cart, uint32_t fix_cart_size, memory_region* fix_bios);
+ void draw_fixed_layer( bitmap_rgb32 &bitmap, int scanline );
+ void draw_sprites( bitmap_rgb32 &bitmap, int scanline );
+ void neogeo_set_fixed_layer_source( uint8_t data );
+
+private:
+ virtual void draw_fixed_layer_2pixels(uint32_t*&pixel_addr, int offset, uint8_t* gfx_base, const pen_t* char_pens);
+ void create_auto_animation_timer( );
+ void start_auto_animation_timer( );
+ inline bool sprite_on_scanline(int scanline, int y, int rows);
+ void parse_sprites( int scanline );
+ void create_sprite_line_timer( );
+ void start_sprite_line_timer( );
+ virtual void optimize_sprite_data();
+ virtual void draw_pixel(int romaddr, uint32_t* dst, const pen_t *line_pens);
+
+ std::unique_ptr<uint16_t[]> m_videoram;
+ std::vector<uint8_t> m_sprite_gfx;
+
+ uint16_t *m_videoram_drawsource;
+ uint16_t m_vram_offset;
+ uint16_t m_vram_read_buffer;
+ uint16_t m_vram_modulo;
+ const uint8_t *m_region_zoomy;
+ uint32_t m_sprite_gfx_address_mask;
+ uint8_t m_auto_animation_speed;
+ uint8_t m_auto_animation_disabled;
+ uint8_t m_auto_animation_counter;
+ uint8_t m_auto_animation_frame_counter;
+
+ emu_timer *m_auto_animation_timer;
+ emu_timer *m_sprite_line_timer;
+
+ TIMER_CALLBACK_MEMBER(auto_animation_timer_callback);
+ TIMER_CALLBACK_MEMBER(sprite_line_timer_callback);
+
+ uint8_t m_bppshift; // 4 for 4bpp gfx (NeoGeo) 8 for 8bpp gfx (Midas)
+
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ uint8_t* m_region_sprites;
+ uint32_t m_region_sprites_size;
+ uint8_t* m_region_fixed;
+ uint32_t m_region_fixed_size;
+ memory_region* m_region_fixedbios;
+ screen_device* m_screen;
+ const pen_t *m_pens;
+ uint8_t* m_spritegfx8;
+};
+
+extern const device_type NEOGEO_SPRITE;
diff --git a/docs/release/src/hbmame/video/pacman.cpp b/docs/release/src/hbmame/video/pacman.cpp
new file mode 100644
index 00000000000..a1a38546b14
--- /dev/null
+++ b/docs/release/src/hbmame/video/pacman.cpp
@@ -0,0 +1,360 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+#include "../mame/video/pacman.cpp"
+
+
+VIDEO_START_MEMBER( pacman_state, pacmanx )
+{
+ init_save_state();
+ m_charbank = 0;
+ m_spritebank = 0;
+ m_palettebank = 0;
+ m_colortablebank = 0;
+ m_flipscreen = 0;
+ m_bgpriority = 0;
+ m_inv_spr = 0;
+ m_xoffsethack = 2;
+
+ m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::pacman_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 16, 16, 36, 28 );
+
+ m_bg_tilemap->set_scrolldx(0, 384*2 - 288*2 );
+ m_bg_tilemap->set_scrolldy(0, 264*2 - 224*2 );
+}
+
+uint32_t pacman_state::screen_update_pacmanx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ if (m_bgpriority)
+ bitmap.fill(0,cliprect);
+ else
+ m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
+
+ if( m_spriteram )
+ {
+ uint8_t *spriteram = m_spriteram;
+ uint8_t *spriteram_2 = m_spriteram2;
+ int offs;
+
+ rectangle spriteclip(2*2*8, 2*68*8-1, 0*8, 2*56*8-1);
+ spriteclip &= cliprect;
+
+ /* Draw the sprites. Note that it is important to draw them exactly in this */
+ /* order, to have the correct priorities. */
+ for (offs = m_spriteram.bytes() - 2;offs > 2*2;offs -= 2)
+ {
+ int color;
+ int sx,sy;
+ uint8_t fx,fy;
+
+ if(m_inv_spr)
+ {
+ sx = spriteram_2[offs + 1]*2;
+ sy = 480 - (spriteram_2[offs]*2);
+ }
+ else
+ {
+ sx = 544 - spriteram_2[offs + 1]*2;
+ sy = (spriteram_2[offs] - 31)*2;
+ }
+
+ fx = (spriteram[offs] & 1) ^ m_inv_spr;
+ fy = (spriteram[offs] & 2) ^ ((m_inv_spr) << 1);
+
+ color = ( spriteram[offs + 1] & 0x1f ) | (m_colortablebank << 5) | (m_palettebank << 6 );
+
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
+
+ /* also plot the sprite with wraparound (tunnel in Crush Roller) */
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx - 512,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
+ }
+ /* In the Pac Man based games (NOT Pengo) the first two sprites must be offset */
+ /* one pixel to the left to get a more correct placement */
+ for (offs = 2*2;offs >= 0;offs -= 2)
+ {
+ int color;
+ int sx,sy;
+ uint8_t fx,fy;
+
+ if(m_inv_spr)
+ {
+ sx = spriteram_2[offs + 1]*2;
+ sy = 480 - (spriteram_2[offs]*2);
+ }
+ else
+ {
+ sx = 544 - spriteram_2[offs + 1]*2;
+ sy = (spriteram_2[offs] - 31)*2;
+ }
+ color = ( spriteram[offs + 1] & 0x1f ) | (m_colortablebank << 5) | (m_palettebank << 6 );
+
+ fx = (spriteram[offs] & 1) ^ m_inv_spr;
+ fy = (spriteram[offs] & 2) ^ ((m_inv_spr) << 1);
+
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx,sy + m_xoffsethack,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
+
+ /* also plot the sprite with wraparound (tunnel in Crush Roller) */
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fy,fx, //FIXME: flipping bits are really supposed to be inverted here?
+ sx - 512,sy + m_xoffsethack,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color & 0x3f, 0));
+ }
+ }
+
+ if (m_bgpriority != 0)
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
+ return 0;
+}
+
+
+
+
+
+/************************************************************************
+ MULTIPAC adapted for HBMAME by Robbbert
+ ************************************************************************/
+
+static void init_save_state_multipac(running_machine &machine)
+{
+ pacman_state *state = machine.driver_data<pacman_state>();
+ state->save_item(NAME(state->m_charbank));
+ state->save_item(NAME(state->m_spritebank));
+ state->save_item(NAME(state->m_palettebank));
+ state->save_item(NAME(state->m_colortablebank));
+ state->save_item(NAME(state->m_flipscreen));
+ state->save_item(NAME(state->m_bgpriority));
+}
+
+TILE_GET_INFO_MEMBER(pacman_state::multipac_get_tile_info )
+{
+ int code = m_videoram[tile_index] | (m_charbank << 8);
+ int attr = (m_colorram[tile_index] & 0x1f) | (m_colortablebank << 5);
+
+ SET_TILE_INFO_MEMBER(0,code,attr,0);
+}
+
+VIDEO_START_MEMBER( pacman_state, multipac )
+{
+ init_save_state_multipac(machine());
+
+ m_charbank = 0;
+ m_spritebank = 0;
+ m_colortablebank = 0;
+ m_flipscreen = 0;
+ m_bgpriority = 0;
+ m_inv_spr = 0;
+ m_xoffsethack = 1;
+
+ m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::multipac_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 8, 8, 36, 28 );
+
+ m_bg_tilemap->set_scrolldx(0, 384 - 288 );
+ m_bg_tilemap->set_scrolldy(0, 264 - 224 );
+}
+
+PALETTE_INIT_MEMBER( pacman_state, multipac )
+{
+ uint16_t i;
+ static const int resistances[3] = { 1000, 470, 220 };
+ double rweights[3], gweights[3], bweights[2];
+ uint8_t bit0, bit1, bit2, r, g, b;
+ uint16_t entries = palette.indirect_entries();
+ uint16_t bank,banks = entries >> 5;
+ const uint8_t *color_prom = machine().root_device().memregion("proms")->base();
+ const uint8_t *m_p_prom = machine().root_device().memregion("proms")->base() + entries;
+
+ /* compute the color output resistor weights */
+ compute_resistor_weights(0, 255, -1.0,
+ 3, &resistances[0], rweights, 0, 0,
+ 3, &resistances[0], gweights, 0, 0,
+ 2, &resistances[1], bweights, 0, 0);
+
+ for (bank = 0; bank < banks; bank++)
+ {
+ uint16_t obank = bank << 7;
+ uint16_t ibank = bank << 5;
+
+ /* create a lookup table for the palette */
+ for (i = ibank; i < (ibank+32); i++)
+ {
+ /* red component */
+ bit0 = BIT(color_prom[i], 0);
+ bit1 = BIT(color_prom[i], 1);
+ bit2 = BIT(color_prom[i], 2);
+ r = combine_3_weights(rweights, bit0, bit1, bit2);
+
+ /* green component */
+ bit0 = BIT(color_prom[i], 3);
+ bit1 = BIT(color_prom[i], 4);
+ bit2 = BIT(color_prom[i], 5);
+ g = combine_3_weights(gweights, bit0, bit1, bit2);
+
+ /* blue component */
+ bit0 = BIT(color_prom[i], 6);
+ bit1 = BIT(color_prom[i], 7);
+ b = combine_2_weights(bweights, bit0, bit1);
+
+ palette.set_indirect_color(i, rgb_t(r, g, b));
+ }
+
+ for (i = obank;i < (obank+128);i++)
+ {
+ if (m_p_prom[i] & 15)
+ palette.set_pen_indirect(i,(m_p_prom[i] & 15) | ibank);
+ else
+ palette.set_pen_indirect(i, 0); /* preserve transparency */
+ }
+ }
+}
+
+uint32_t pacman_state::screen_update_multipac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ if (m_bgpriority != 0)
+ bitmap.fill(0, cliprect);
+ else
+ m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
+
+ if( m_spriteram != NULL )
+ {
+ uint8_t *spriteram = m_spriteram;
+ uint8_t *spriteram_2 = m_spriteram2;
+ int offs;
+
+ rectangle spriteclip(2*8, 34*8-1, 0*8, 28*8-1);
+ spriteclip &= cliprect;
+
+ /* Draw the sprites. Note that it is important to draw them exactly in this */
+ /* order, to have the correct priorities. */
+ for (offs = m_spriteram.bytes() - 2;offs > 2*2;offs -= 2)
+ {
+ int color;
+ int sx,sy;
+ uint8_t fx,fy;
+
+ if(m_inv_spr)
+ {
+ sx = spriteram_2[offs + 1];
+ sy = 240 - (spriteram_2[offs]);
+ }
+ else
+ {
+ sx = 272 - spriteram_2[offs + 1];
+ sy = spriteram_2[offs] - 31;
+ }
+
+ fx = (spriteram[offs] & 1) ^ m_inv_spr;
+ fy = (spriteram[offs] & 2) ^ ((m_inv_spr) << 1);
+
+ color = ( spriteram[offs + 1] & 0x1f ) | (m_colortablebank << 5) | (m_palettebank << 6 );
+
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
+
+ /* also plot the sprite with wraparound (tunnel in Crush Roller) */
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx - 256,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
+ }
+ /* In the Pac Man based games (NOT Pengo) the first two sprites must be offset */
+ /* one pixel to the left to get a more correct placement */
+ for (offs = 2*2;offs >= 0;offs -= 2)
+ {
+ int color;
+ int sx,sy;
+ uint8_t fx,fy;
+
+ if(m_inv_spr)
+ {
+ sx = spriteram_2[offs + 1];
+ sy = 240 - (spriteram_2[offs]);
+ }
+ else
+ {
+ sx = 272 - spriteram_2[offs + 1];
+ sy = spriteram_2[offs] - 31;
+ }
+ color = ( spriteram[offs + 1] & 0x1f ) | (m_colortablebank << 5) | (m_palettebank << 6 );
+
+ fx = (spriteram[offs] & 1) ^ m_inv_spr;
+ fy = (spriteram[offs] & 2) ^ ((m_inv_spr) << 1);
+
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
+
+ /* also plot the sprite with wraparound (tunnel in Crush Roller) */
+ m_gfxdecode->gfx(1)->transmask(bitmap,spriteclip,
+ ( spriteram[offs] >> 2 ) | (m_spritebank << 6),
+ color,
+ fx,fy,
+ sx - 256,sy,
+ m_palette->transpen_mask(*m_gfxdecode->gfx(1), color, 0));
+ }
+ }
+
+ if (m_bgpriority != 0)
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
+ return 0;
+}
+
+
+WRITE8_MEMBER( pacman_state::multipac_gfxbank_w )
+{
+ m_charbank = data;
+ m_spritebank = data;
+}
+
+/* multipac passes bankselect info for the 4a and 7f roms on separate bytes. MAME can only use one of them */
+WRITE8_MEMBER( pacman_state::multipac_palbank_w )
+{
+ if (offset) m_colortablebank = data;
+}
+
+
+/* =============================================
+ 96in1 / Mad Pac by Robbbert, July 2007
+ ============================================= */
+
+
+void pacman_state::m96in1b_gfxbank_w ( uint8_t gfxbank )
+{
+ uint8_t banks[] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 4, 2, 3, 5, 6, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 };
+ m_charbank = gfxbank;
+ m_spritebank = gfxbank;
+ m_colortablebank = banks[gfxbank];
+}
+
+void pacman_state::madpac_gfxbank_w ( uint8_t gfxbank )
+{
+ m_charbank = gfxbank;
+ m_spritebank = gfxbank;
+
+ if (gfxbank > 15)
+ m_colortablebank = gfxbank - 15;
+ else
+ m_colortablebank = 0;
+}
diff --git a/docs/release/src/mame/drivers/jrpacman.cpp b/docs/release/src/mame/drivers/jrpacman.cpp
new file mode 100644
index 00000000000..815339e941e
--- /dev/null
+++ b/docs/release/src/mame/drivers/jrpacman.cpp
@@ -0,0 +1,446 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria
+/***************************************************************************
+
+ Bally/Midway Jr. Pac-Man
+
+ Games supported:
+ * Jr. Pac-Man
+
+ Known issues:
+ * none
+
+****************************************************************************
+
+ Jr. Pac Man memory map (preliminary)
+
+ 0000-3fff ROM
+ 4000-47ff Video RAM (also color RAM)
+ 4800-4fff RAM
+ 8000-dfff ROM
+
+ memory mapped ports:
+
+ read:
+ 5000 P1
+ 5040 P2
+ 5080 DSW
+
+ *
+ * IN0 (all bits are inverted)
+ * bit 7 : CREDIT
+ * bit 6 : COIN 2
+ * bit 5 : COIN 1
+ * bit 4 : RACK TEST
+ * bit 3 : DOWN player 1
+ * bit 2 : RIGHT player 1
+ * bit 1 : LEFT player 1
+ * bit 0 : UP player 1
+ *
+ *
+ * IN1 (all bits are inverted)
+ * bit 7 : TABLE or UPRIGHT cabinet select (1 = UPRIGHT)
+ * bit 6 : START 2
+ * bit 5 : START 1
+ * bit 4 : TEST SWITCH
+ * bit 3 : DOWN player 2 (TABLE only)
+ * bit 2 : RIGHT player 2 (TABLE only)
+ * bit 1 : LEFT player 2 (TABLE only)
+ * bit 0 : UP player 2 (TABLE only)
+ *
+ *
+ * DSW1 (all bits are inverted)
+ * bit 7 : ?
+ * bit 6 : difficulty level
+ * 1 = Normal 0 = Harder
+ * bit 5 :\ bonus pac at xx000 pts
+ * bit 4 :/ 00 = 10000 01 = 15000 10 = 20000 11 = 30000
+ * bit 3 :\ nr of lives
+ * bit 2 :/ 00 = 1 01 = 2 10 = 3 11 = 5
+ * bit 1 :\ play mode
+ * bit 0 :/ 00 = free play 01 = 1 coin 1 credit
+ * 10 = 1 coin 2 credits 11 = 2 coins 1 credit
+ *
+
+ write:
+ 4ff2-4ffd 6 pairs of two bytes:
+ the first byte contains the sprite image number (bits 2-7), Y flip (bit 0),
+ X flip (bit 1); the second byte the color
+ 5000 interrupt enable
+ 5001 sound enable
+ 5002 unused
+ 5003 flip screen
+ 5004 unused
+ 5005 unused
+ 5006 unused
+ 5007 coin counter
+ 5040-5044 sound voice 1 accumulator (nibbles) (used by the sound hardware only)
+ 5045 sound voice 1 waveform (nibble)
+ 5046-5049 sound voice 2 accumulator (nibbles) (used by the sound hardware only)
+ 504a sound voice 2 waveform (nibble)
+ 504b-504e sound voice 3 accumulator (nibbles) (used by the sound hardware only)
+ 504f sound voice 3 waveform (nibble)
+ 5050-5054 sound voice 1 frequency (nibbles)
+ 5055 sound voice 1 volume (nibble)
+ 5056-5059 sound voice 2 frequency (nibbles)
+ 505a sound voice 2 volume (nibble)
+ 505b-505e sound voice 3 frequency (nibbles)
+ 505f sound voice 3 volume (nibble)
+ 5062-506d Sprite coordinates, x/y pairs for 6 sprites
+ 5070 palette bank
+ 5071 colortable bank
+ 5073 background priority over sprites
+ 5074 char gfx bank
+ 5075 sprite gfx bank
+ 5080 scroll
+ 50c0 Watchdog reset
+
+ I/O ports:
+ OUT on port $0 sets the interrupt vector
+
+***************************************************************************/
+
+#include "emu.h"
+#include "includes/pacman.h"
+
+#include "cpu/z80/z80.h"
+#include "screen.h"
+#include "speaker.h"
+
+
+class jrpacman_state : public pacman_state
+{
+public:
+ jrpacman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : pacman_state(mconfig, type, tag) { }
+ DECLARE_WRITE8_MEMBER(jrpacman_interrupt_vector_w);
+ DECLARE_WRITE8_MEMBER(irq_mask_w);
+ DECLARE_DRIVER_INIT(jrpacman);
+ INTERRUPT_GEN_MEMBER(vblank_irq);
+};
+
+
+
+WRITE8_MEMBER(jrpacman_state::jrpacman_interrupt_vector_w)
+{
+ m_maincpu->set_input_line_vector(0, data);
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+WRITE8_MEMBER(jrpacman_state::irq_mask_w)
+{
+ m_irq_mask = data & 1;
+}
+
+/*************************************
+ *
+ * Main CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, jrpacman_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x4800, 0x4fef) AM_RAM
+ AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x5000, 0x503f) AM_READ_PORT("P1")
+ AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x5001, 0x5001) AM_DEVWRITE("namco", namco_device, pacman_sound_enable_w)
+ AM_RANGE(0x5003, 0x5003) AM_WRITE(pacman_flipscreen_w)
+ AM_RANGE(0x5040, 0x507f) AM_READ_PORT("P2")
+ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w)
+ AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2")
+ AM_RANGE(0x5070, 0x5070) AM_WRITE(pengo_palettebank_w)
+ AM_RANGE(0x5071, 0x5071) AM_WRITE(pengo_colortablebank_w)
+ AM_RANGE(0x5073, 0x5073) AM_WRITE(jrpacman_bgpriority_w)
+ AM_RANGE(0x5074, 0x5074) AM_WRITE(jrpacman_charbank_w)
+ AM_RANGE(0x5075, 0x5075) AM_WRITE(jrpacman_spritebank_w)
+ AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW")
+ AM_RANGE(0x5080, 0x5080) AM_WRITE(jrpacman_scroll_w)
+ AM_RANGE(0x50c0, 0x50c0) AM_WRITENOP
+ AM_RANGE(0x8000, 0xdfff) AM_ROM
+// HBMAME extras
+ AM_RANGE(0x5002, 0x5002) AM_WRITENOP
+ AM_RANGE(0x5004, 0x5005) AM_WRITE(pacman_leds_w)
+ AM_RANGE(0x5006, 0x5006) AM_WRITENOP
+ AM_RANGE(0x5007, 0x5007) AM_WRITENOP
+ AM_RANGE(0x5072, 0x5072) AM_WRITENOP
+ AM_RANGE(0x5076, 0x507f) AM_WRITENOP
+ AM_RANGE(0xfffc, 0xffff) AM_RAM /* for jrfast and fastjr */
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( port_map, AS_IO, 8, jrpacman_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0, 0) AM_WRITE(jrpacman_interrupt_vector_w)
+ADDRESS_MAP_END
+
+
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+static INPUT_PORTS_START( jrpacman )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
+ /* Press this to instantly finish the level - HBMAME */
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Finish Level (Cheat)") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x0c, "5" )
+ PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
+ PORT_DIPSETTING( 0x00, "10000" )
+ PORT_DIPSETTING( 0x10, "15000" )
+ PORT_DIPSETTING( 0x20, "20000" )
+ PORT_DIPSETTING( 0x30, "30000" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// HBMAME extras
+ PORT_START ("FAKE")
+ /* This fake input port is used to get the status of the fire button */
+ /* and activate the speedup cheat. */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Speed (Cheat)" )
+ PORT_DIPNAME( 0x06, 0x02, "Speed Cheat" )
+ PORT_DIPSETTING( 0x00, "Disabled" )
+ PORT_DIPSETTING( 0x02, "Enabled with Button" )
+ PORT_DIPSETTING( 0x04, "Enabled Always" )
+
+ PORT_START ("CONFIG")
+ PORT_CONFNAME( 0x01, 0x01, "Level" )
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * Graphics layouts
+ *
+ *************************************/
+
+static const gfx_layout tilelayout =
+{
+ 8,8,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, 4 },
+ { STEP4(8*8,1), STEP4(0*8,1) },
+ { STEP8(0*8,8) },
+ 16*8
+};
+
+
+static const gfx_layout spritelayout =
+{
+ 16,16,
+ RGN_FRAC(1,2),
+ 2,
+ { 0, 4 },
+ { STEP4(8*8,1), STEP4(16*8,1), STEP4(24*8,1), STEP4(0*8,1) },
+ { STEP8(0*8,8), STEP8(32*8,8) },
+ 64*8
+};
+
+
+static GFXDECODE_START( jrpacman )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, tilelayout, 0, 128 )
+ GFXDECODE_ENTRY( "gfx1", 0x2000, spritelayout, 0, 128 )
+GFXDECODE_END
+
+
+
+/*************************************
+ *
+ * Machine drivers
+ *
+ *************************************/
+
+INTERRUPT_GEN_MEMBER(jrpacman_state::vblank_irq)
+{
+ if(m_irq_mask)
+ device.execute().set_input_line(0, HOLD_LINE);
+}
+
+static MACHINE_CONFIG_START( jrpacman, jrpacman_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_IO_MAP(port_map)
+// MCFG_CPU_VBLANK_INT_DRIVER("screen", jrpacman_state, vblank_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", pacman_state, pacman_interrupt) // HBMAME
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60.606060)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(36*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", jrpacman)
+ MCFG_PALETTE_ADD("palette", 128*4)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32)
+ MCFG_PALETTE_INIT_OWNER(jrpacman_state,pacman)
+ MCFG_VIDEO_START_OVERRIDE(jrpacman_state,jrpacman)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("namco", NAMCO, 3072000/32)
+ MCFG_NAMCO_AUDIO_VOICES(3)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( jrpacman )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "jrp8d.8d", 0x0000, 0x2000, CRC(e3fa972e) SHA1(5ea34621213c649ca2848ab31aab2cbe751723d4) )
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) ) /* tiles (bank 1 & 2) */
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) /* sprites (bank 1 & 2) */
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+ROM_START( jrpacmanf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "fast_jr.8d", 0x0000, 0x2000, CRC(461e8b57) SHA1(42e25d384e653efb95a97bd64f55a8c3b3f71239) ) // only 1 byte difference
+ ROM_LOAD( "jrp8e.8e", 0x2000, 0x2000, CRC(ec889e94) SHA1(8294e9e79f8fd19a419431fa690e6ac4a1302f58) )
+ ROM_LOAD( "jrp8h.8h", 0x8000, 0x2000, CRC(35f1fc6e) SHA1(b84b34560b9aae18b24274712b052283faa01730) )
+ ROM_LOAD( "jrp8j.8j", 0xa000, 0x2000, CRC(9737099e) SHA1(07d912a61824323c8fc1b8bd0da89172d4f70b91) )
+ ROM_LOAD( "jrp8k.8k", 0xc000, 0x2000, CRC(5252dd97) SHA1(18bd4d5381656120e4242811006c20776774de4d) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "jrp2c.2c", 0x0000, 0x2000, CRC(0527ff9b) SHA1(37fe3176b0d125b7d629e108e7ebdc1196e4a132) ) /* tiles (bank 1 & 2) */
+ ROM_LOAD( "jrp2e.2e", 0x2000, 0x2000, CRC(73477193) SHA1(f00a488958ea0438642d345693787bdf771219ad) ) /* sprites (bank 1 & 2) */
+
+ ROM_REGION( 0x0120, "proms", 0 )
+ ROM_LOAD_NIB_LOW ( "a290-27axv-bxhd.9e", 0x0000, 0x0100, CRC(029d35c4) SHA1(d9aa2dc442e9ac36cf3c346b9fb1aa745eaf3cb8) ) /* color palette (low bits) */
+ ROM_LOAD_NIB_HIGH( "a290-27axv-cxhd.9f", 0x0000, 0x0100, CRC(eee34a79) SHA1(7561f8ccab2af85c111af6a02af6986eb67503e5) ) /* color palette (high bits) */
+ ROM_LOAD( "a290-27axv-axhd.9p", 0x0020, 0x0100, CRC(9f6ea9d8) SHA1(62cf15513934d34641433c891a7f73bef82e2fb1) ) /* color lookup table */
+
+ ROM_REGION( 0x0200, "namco", 0 )
+ ROM_LOAD( "a290-27axv-dxhd.7p", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) /* waveform */
+ ROM_LOAD( "a290-27axv-exhd.5s", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
+ROM_END
+
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER(jrpacman_state,jrpacman)
+{
+ /* The encryption PALs garble bits 0, 2 and 7 of the ROMs. The encryption */
+ /* scheme is complex (basically it's a state machine) and can only be */
+ /* faithfully emulated at run time. To avoid the performance hit that would */
+ /* cause, here we have a table of the values which must be XORed with */
+ /* each memory region to obtain the decrypted bytes. */
+ /* Decryption table provided by David Caldwell (david@indigita.com) */
+ /* For an accurate reproduction of the encryption, see jrcrypt.c */
+ static const struct {
+ int count;
+ int value;
+ } table[] =
+ {
+ { 0x00C1, 0x00 },{ 0x0002, 0x80 },{ 0x0004, 0x00 },{ 0x0006, 0x80 },
+ { 0x0003, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0004, 0x80 },
+ { 0x9968, 0x00 },{ 0x0001, 0x80 },{ 0x0002, 0x00 },{ 0x0001, 0x80 },
+ { 0x0009, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0001, 0x80 },
+ { 0x00AF, 0x00 },{ 0x000E, 0x04 },{ 0x0002, 0x00 },{ 0x0004, 0x04 },
+ { 0x001E, 0x00 },{ 0x0001, 0x80 },{ 0x0002, 0x00 },{ 0x0001, 0x80 },
+ { 0x0002, 0x00 },{ 0x0002, 0x80 },{ 0x0009, 0x00 },{ 0x0002, 0x80 },
+ { 0x0009, 0x00 },{ 0x0002, 0x80 },{ 0x0083, 0x00 },{ 0x0001, 0x04 },
+ { 0x0001, 0x01 },{ 0x0001, 0x00 },{ 0x0002, 0x05 },{ 0x0001, 0x00 },
+ { 0x0003, 0x04 },{ 0x0003, 0x01 },{ 0x0002, 0x00 },{ 0x0001, 0x04 },
+ { 0x0003, 0x01 },{ 0x0003, 0x00 },{ 0x0003, 0x04 },{ 0x0001, 0x01 },
+ { 0x002E, 0x00 },{ 0x0078, 0x01 },{ 0x0001, 0x04 },{ 0x0001, 0x05 },
+ { 0x0001, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },
+ { 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },{ 0x0001, 0x01 },
+ { 0x0001, 0x04 },{ 0x0002, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },
+ { 0x0001, 0x05 },{ 0x0001, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },
+ { 0x0002, 0x00 },{ 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0002, 0x00 },
+ { 0x0001, 0x01 },{ 0x0001, 0x04 },{ 0x0001, 0x05 },{ 0x0001, 0x00 },
+ { 0x01B0, 0x01 },{ 0x0001, 0x00 },{ 0x0002, 0x01 },{ 0x00AD, 0x00 },
+ { 0x0031, 0x01 },{ 0x005C, 0x00 },{ 0x0005, 0x01 },{ 0x604E, 0x00 },
+ { 0,0 }
+ };
+
+ uint8_t *RAM = memregion("maincpu")->base();
+ int i, j, A;
+
+ for (i = A = 0; table[i].count; i++)
+ for (j = 0; j < table[i].count; j++)
+ RAM[A++] ^= table[i].value;
+}
+
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+GAME( 1983, jrpacman, 0, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "Bally Midway", "Jr. Pac-Man (11/9/83)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jrpacmanf, jrpacman, jrpacman, jrpacman, jrpacman_state, jrpacman, ROT90, "hack", "Jr. Pac-Man (speedup hack)", MACHINE_SUPPORTS_SAVE )
diff --git a/docs/release/src/osd/modules/render/drawd3d.cpp b/docs/release/src/osd/modules/render/drawd3d.cpp
new file mode 100644
index 00000000000..e886695df12
--- /dev/null
+++ b/docs/release/src/osd/modules/render/drawd3d.cpp
@@ -0,0 +1,2749 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+//============================================================
+//
+// drawd3d.cpp - Win32 Direct3D implementation
+//
+//============================================================
+
+// MAME headers
+#include "emu.h"
+#include "render.h"
+
+#include "rendutil.h"
+#include "emuopts.h"
+#include "aviio.h"
+
+// MAMEOS headers
+#include "winmain.h"
+#include "window.h"
+#include "drawd3d.h"
+#include "modules/render/d3d/d3dhlsl.h"
+#include "modules/monitor/monitor_module.h"
+#include <utility>
+
+//============================================================
+// TYPE DEFINITIONS
+//============================================================
+
+typedef IDirect3D9* (WINAPI *d3d9_create_fn)(UINT);
+
+
+//============================================================
+// CONSTANTS
+//============================================================
+
+enum
+{
+ TEXTURE_TYPE_PLAIN,
+ TEXTURE_TYPE_DYNAMIC,
+ TEXTURE_TYPE_SURFACE
+};
+
+
+//============================================================
+// INLINES
+//============================================================
+
+static inline BOOL GetClientRectExceptMenu(HWND hWnd, PRECT pRect, BOOL fullscreen)
+{
+ static HMENU last_menu;
+ static RECT last_rect;
+ static RECT cached_rect;
+ HMENU menu = GetMenu(hWnd);
+ BOOL result = GetClientRect(hWnd, pRect);
+
+ if (!fullscreen || !menu)
+ return result;
+
+ // to avoid flicker use cache if we can use
+ if (last_menu != menu || memcmp(&last_rect, pRect, sizeof *pRect) != 0)
+ {
+ last_menu = menu;
+ last_rect = *pRect;
+
+ SetMenu(hWnd, nullptr);
+ result = GetClientRect(hWnd, &cached_rect);
+ SetMenu(hWnd, menu);
+ }
+
+ *pRect = cached_rect;
+ return result;
+}
+
+
+static inline uint32_t ycc_to_rgb(uint8_t y, uint8_t cb, uint8_t cr)
+{
+ /* original equations:
+
+ C = Y - 16
+ D = Cb - 128
+ E = Cr - 128
+
+ R = clip(( 298 * C + 409 * E + 128) >> 8)
+ G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
+ B = clip(( 298 * C + 516 * D + 128) >> 8)
+
+ R = clip(( 298 * (Y - 16) + 409 * (Cr - 128) + 128) >> 8)
+ G = clip(( 298 * (Y - 16) - 100 * (Cb - 128) - 208 * (Cr - 128) + 128) >> 8)
+ B = clip(( 298 * (Y - 16) + 516 * (Cb - 128) + 128) >> 8)
+
+ R = clip(( 298 * Y - 298 * 16 + 409 * Cr - 409 * 128 + 128) >> 8)
+ G = clip(( 298 * Y - 298 * 16 - 100 * Cb + 100 * 128 - 208 * Cr + 208 * 128 + 128) >> 8)
+ B = clip(( 298 * Y - 298 * 16 + 516 * Cb - 516 * 128 + 128) >> 8)
+
+ R = clip(( 298 * Y - 298 * 16 + 409 * Cr - 409 * 128 + 128) >> 8)
+ G = clip(( 298 * Y - 298 * 16 - 100 * Cb + 100 * 128 - 208 * Cr + 208 * 128 + 128) >> 8)
+ B = clip(( 298 * Y - 298 * 16 + 516 * Cb - 516 * 128 + 128) >> 8)
+ */
+ int r, g, b, common;
+
+ common = 298 * y - 298 * 16;
+ r = (common + 409 * cr - 409 * 128 + 128) >> 8;
+ g = (common - 100 * cb + 100 * 128 - 208 * cr + 208 * 128 + 128) >> 8;
+ b = (common + 516 * cb - 516 * 128 + 128) >> 8;
+
+ if (r < 0) r = 0;
+ else if (r > 255) r = 255;
+ if (g < 0) g = 0;
+ else if (g > 255) g = 255;
+ if (b < 0) b = 0;
+ else if (b > 255) b = 255;
+
+ return rgb_t(0xff, r, g, b);
+}
+
+
+//============================================================
+// drawd3d_init
+//============================================================
+
+static d3d_base * d3dintf; // FIX ME
+
+
+//============================================================
+// drawd3d_window_init
+//============================================================
+
+int renderer_d3d9::create()
+{
+ if (!initialize())
+ {
+ osd_printf_error("Unable to initialize Direct3D 9\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+void renderer_d3d9::toggle_fsfx()
+{
+ set_toggle(true);
+}
+
+void renderer_d3d9::record()
+{
+ if (m_shaders != nullptr)
+ {
+ m_shaders->record_movie();
+ }
+}
+
+void renderer_d3d9::add_audio_to_recording(const int16_t *buffer, int samples_this_frame)
+{
+ if (m_shaders != nullptr)
+ {
+ m_shaders->record_audio(buffer, samples_this_frame);
+ }
+}
+
+void renderer_d3d9::save()
+{
+ if (m_shaders != nullptr)
+ {
+ m_shaders->save_snapshot();
+ }
+}
+
+
+//============================================================
+// drawd3d_window_get_primitives
+//============================================================
+
+render_primitive_list *renderer_d3d9::get_primitives()
+{
+ RECT client;
+ auto win = try_getwindow();
+ if (win == nullptr)
+ return nullptr;
+
+ GetClientRectExceptMenu(std::static_pointer_cast<win_window_info>(win)->platform_window(), &client, win->fullscreen());
+ if (rect_width(&client) > 0 && rect_height(&client) > 0)
+ {
+ win->target()->set_bounds(rect_width(&client), rect_height(&client), win->pixel_aspect());
+ win->target()->set_max_update_rate((get_refresh() == 0) ? get_origmode().RefreshRate : get_refresh());
+ }
+ if (m_shaders != nullptr)
+ {
+ // do not transform primitives (scale, offset) if shaders are enabled, the shaders will handle the transformation
+ win->target()->set_transform_container(!m_shaders->enabled());
+ }
+ return &win->target()->get_primitives();
+}
+
+
+//============================================================
+// renderer_d3d9::init
+//============================================================
+
+bool renderer_d3d9::init(running_machine &machine)
+{
+ d3dintf = global_alloc(d3d_base);
+
+ d3dintf->d3d9_dll = osd::dynamic_module::open({ "d3d9.dll" });
+
+ d3d9_create_fn d3d9_create_ptr = d3dintf->d3d9_dll->bind<d3d9_create_fn>("Direct3DCreate9");
+ if (d3d9_create_ptr == nullptr)
+ {
+ osd_printf_verbose("Direct3D: Unable to find Direct3D 9 runtime library\n");
+ return true;
+ }
+
+ d3dintf->d3dobj = (*d3d9_create_ptr)(D3D_SDK_VERSION);
+ if (d3dintf->d3dobj == nullptr)
+ {
+ osd_printf_verbose("Direct3D: Unable to initialize Direct3D 9\n");
+ return true;
+ }
+
+ osd_printf_verbose("Direct3D: Using Direct3D 9\n");
+
+ return false;
+}
+
+
+//============================================================
+// drawd3d_window_draw
+//============================================================
+
+int renderer_d3d9::draw(const int update)
+{
+ int check = pre_window_draw_check();
+ if (check >= 0)
+ return check;
+
+ begin_frame();
+ process_primitives();
+ end_frame();
+
+ return 0;
+}
+
+void renderer_d3d9::set_texture(texture_info *texture)
+{
+ if (texture != m_last_texture)
+ {
+ m_last_texture = texture;
+ m_last_texture_flags = (texture == nullptr ? 0 : texture->get_flags());
+ HRESULT result = m_device->SetTexture(0, (texture == nullptr) ? get_default_texture()->get_finaltex() : texture->get_finaltex());
+ m_shaders->set_texture(texture);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device set_texture call\n", result);
+ }
+}
+
+void renderer_d3d9::set_filter(int filter)
+{
+ if (filter != m_last_filter)
+ {
+ m_last_filter = filter;
+ HRESULT result = m_device->SetSamplerState(0, D3DSAMP_MINFILTER, filter ? D3DTEXF_LINEAR : D3DTEXF_POINT);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(0, D3DSAMP_MAGFILTER, filter ? D3DTEXF_LINEAR : D3DTEXF_POINT);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(1, D3DSAMP_MINFILTER, filter ? D3DTEXF_LINEAR : D3DTEXF_POINT);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(1, D3DSAMP_MAGFILTER, filter ? D3DTEXF_LINEAR : D3DTEXF_POINT);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ }
+}
+
+void renderer_d3d9::set_wrap(unsigned int wrap)
+{
+ if (wrap != m_last_wrap)
+ {
+ m_last_wrap = wrap;
+ HRESULT result = m_device->SetSamplerState(0, D3DSAMP_ADDRESSU, wrap);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(0, D3DSAMP_ADDRESSV, wrap);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(1, D3DSAMP_ADDRESSU, wrap);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ result = m_device->SetSamplerState(1, D3DSAMP_ADDRESSV, wrap);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetSamplerState call\n", result);
+ }
+}
+
+void renderer_d3d9::set_modmode(int modmode)
+{
+ if (modmode != m_last_modmode)
+ {
+ m_last_modmode = modmode;
+ HRESULT result = m_device->SetTextureStageState(0, D3DTSS_COLOROP, modmode);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetTextureStageState call\n", result);
+ result = m_device->SetTextureStageState(1, D3DTSS_COLOROP, modmode);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetTextureStageState call\n", result);
+ }
+}
+
+void renderer_d3d9::set_blendmode(int blendmode)
+{
+ int blendenable;
+ int blendop;
+ int blendsrc;
+ int blenddst;
+
+ // choose the parameters
+ switch (blendmode)
+ {
+ default:
+ case BLENDMODE_NONE:
+ blendenable = FALSE;
+ blendop = D3DBLENDOP_ADD;
+ blendsrc = D3DBLEND_SRCALPHA;
+ blenddst = D3DBLEND_INVSRCALPHA;
+ break;
+ case BLENDMODE_ALPHA:
+ blendenable = TRUE;
+ blendop = D3DBLENDOP_ADD;
+ blendsrc = D3DBLEND_SRCALPHA;
+ blenddst = D3DBLEND_INVSRCALPHA;
+ break;
+ case BLENDMODE_RGB_MULTIPLY:
+ blendenable = TRUE;
+ blendop = D3DBLENDOP_ADD;
+ blendsrc = D3DBLEND_DESTCOLOR;
+ blenddst = D3DBLEND_ZERO;
+ break;
+ case BLENDMODE_ADD:
+ blendenable = TRUE;
+ blendop = D3DBLENDOP_ADD;
+ blendsrc = D3DBLEND_SRCALPHA;
+ blenddst = D3DBLEND_ONE;
+ break;
+ }
+
+ // adjust the bits that changed
+ if (blendenable != m_last_blendenable)
+ {
+ m_last_blendenable = blendenable;
+ HRESULT result = m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, blendenable);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderState call\n", result);
+ }
+
+ if (blendop != m_last_blendop)
+ {
+ m_last_blendop = blendop;
+ HRESULT result = m_device->SetRenderState(D3DRS_BLENDOP, blendop);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderState call\n", result);
+ }
+
+ if (blendsrc != m_last_blendsrc)
+ {
+ m_last_blendsrc = blendsrc;
+ HRESULT result = m_device->SetRenderState(D3DRS_SRCBLEND, blendsrc);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderState call\n", result);
+ }
+
+ if (blenddst != m_last_blenddst)
+ {
+ m_last_blenddst = blenddst;
+ HRESULT result = m_device->SetRenderState(D3DRS_DESTBLEND, blenddst);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderState call\n", result);
+ }
+}
+
+void renderer_d3d9::reset_render_states()
+{
+ // this ensures subsequent calls to the above setters will force-update the data
+ m_last_texture = (texture_info *)~0;
+ m_last_filter = -1;
+ m_last_blendenable = -1;
+ m_last_blendop = -1;
+ m_last_blendsrc = -1;
+ m_last_blenddst = -1;
+ m_last_wrap = (D3DTEXTUREADDRESS)-1;
+}
+
+d3d_texture_manager::d3d_texture_manager(renderer_d3d9 *d3d)
+{
+ m_renderer = d3d;
+
+ m_default_texture = nullptr;
+
+ D3DCAPS9 caps;
+ HRESULT result = d3dintf->d3dobj->GetDeviceCaps(d3d->get_adapter(), D3DDEVTYPE_HAL, &caps);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during GetDeviceCaps call\n", result);
+
+ // check for dynamic texture support
+ m_dynamic_supported = ((caps.Caps2 & D3DCAPS2_DYNAMICTEXTURES) != 0);
+ if (m_dynamic_supported)
+ osd_printf_verbose("Direct3D: Using dynamic textures\n");
+
+ // check for stretchrect support
+ m_stretch_supported = ((caps.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) != 0);
+ if (m_stretch_supported && video_config.prescale > 1)
+ osd_printf_verbose("Direct3D: Using StretchRect for prescaling\n");
+
+ // get texture caps
+ m_texture_caps = caps.TextureCaps;
+ m_texture_max_aspect = caps.MaxTextureAspectRatio;
+ m_texture_max_width = caps.MaxTextureWidth;
+ m_texture_max_height = caps.MaxTextureHeight;
+
+ // pick a YUV texture format
+ m_yuv_format = D3DFMT_UYVY;
+ result = d3dintf->d3dobj->CheckDeviceFormat(d3d->get_adapter(), D3DDEVTYPE_HAL, d3d->get_pixel_format(), 0, D3DRTYPE_TEXTURE, D3DFMT_UYVY);
+ if (FAILED(result))
+ {
+ m_yuv_format = D3DFMT_YUY2;
+ result = d3dintf->d3dobj->CheckDeviceFormat(d3d->get_adapter(), D3DDEVTYPE_HAL, d3d->get_pixel_format(), 0, D3DRTYPE_TEXTURE, D3DFMT_YUY2);
+ if (FAILED(result))
+ m_yuv_format = D3DFMT_A8R8G8B8;
+ }
+ osd_printf_verbose("Direct3D: YUV format = %s\n", (m_yuv_format == D3DFMT_YUY2) ? "YUY2" : (m_yuv_format == D3DFMT_UYVY) ? "UYVY" : "RGB");
+
+ auto win = d3d->assert_window();
+
+ // set the max texture size
+ win->target()->set_max_texture_size(m_texture_max_width, m_texture_max_height);
+ osd_printf_verbose("Direct3D: Max texture size = %dx%d\n", (int)m_texture_max_width, (int)m_texture_max_height);
+}
+
+void d3d_texture_manager::create_resources()
+{
+ auto win = m_renderer->assert_window();
+
+ m_default_bitmap.allocate(8, 8);
+ m_default_bitmap.fill(rgb_t(0xff,0xff,0xff,0xff));
+
+ if (m_default_bitmap.valid())
+ {
+ render_texinfo texture;
+
+ // fake in the basic data so it looks like it came from render.c
+ texture.base = m_default_bitmap.raw_pixptr(0);
+ texture.rowpixels = m_default_bitmap.rowpixels();
+ texture.width = m_default_bitmap.width();
+ texture.height = m_default_bitmap.height();
+ texture.palette = nullptr;
+ texture.seqid = 0;
+ texture.osddata = 0;
+
+ // now create it
+ auto tex = std::make_unique<texture_info>(this, &texture, win->prescale(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_TEXFORMAT(TEXFORMAT_ARGB32));
+ m_default_texture = tex.get();
+ m_texture_list.push_back(std::move(tex));
+ }
+}
+
+void d3d_texture_manager::delete_resources()
+{
+ // is part of m_texlist and will be free'd there
+ //global_free(m_default_texture);
+ m_default_texture = nullptr;
+
+ // free all textures
+ m_texture_list.clear();
+}
+
+uint32_t d3d_texture_manager::texture_compute_hash(const render_texinfo *texture, uint32_t flags)
+{
+ return (uintptr_t)texture->base ^ (flags & (PRIMFLAG_BLENDMODE_MASK | PRIMFLAG_TEXFORMAT_MASK));
+}
+
+texture_info *d3d_texture_manager::find_texinfo(const render_texinfo *texinfo, uint32_t flags)
+{
+ uint32_t hash = texture_compute_hash(texinfo, flags);
+
+ // find a match
+ for (auto it = m_texture_list.begin(); it != m_texture_list.end(); it++)
+ {
+ uint32_t test_screen = (uint32_t)(*it)->get_texinfo().osddata >> 1;
+ uint32_t test_page = (uint32_t)(*it)->get_texinfo().osddata & 1;
+ uint32_t prim_screen = (uint32_t)texinfo->osddata >> 1;
+ uint32_t prim_page = (uint32_t)texinfo->osddata & 1;
+ if (test_screen != prim_screen || test_page != prim_page)
+ continue;
+
+ if ((*it)->get_hash() == hash &&
+ (*it)->get_texinfo().base == texinfo->base &&
+ (*it)->get_texinfo().width == texinfo->width &&
+ (*it)->get_texinfo().height == texinfo->height &&
+ (((*it)->get_flags() ^ flags) & (PRIMFLAG_BLENDMODE_MASK | PRIMFLAG_TEXFORMAT_MASK)) == 0)
+ {
+ return (*it).get();
+ }
+ }
+
+ return nullptr;
+}
+
+renderer_d3d9::renderer_d3d9(std::shared_ptr<osd_window> window)
+ : osd_renderer(window, FLAG_NONE), m_adapter(0), m_width(0), m_height(0), m_refresh(0), m_create_error_count(0), m_device(nullptr), m_gamma_supported(0), m_pixformat(),
+ m_vertexbuf(nullptr), m_lockedbuf(nullptr), m_numverts(0), m_vectorbatch(nullptr), m_batchindex(0), m_numpolys(0), m_toggle(false),
+ m_screen_format(), m_last_texture(nullptr), m_last_texture_flags(0), m_last_blendenable(0), m_last_blendop(0), m_last_blendsrc(0), m_last_blenddst(0), m_last_filter(0),
+ m_last_wrap(), m_last_modmode(0), m_shaders(nullptr), m_texture_manager(nullptr)
+{
+}
+
+int renderer_d3d9::initialize()
+{
+ osd_printf_verbose("Direct3D: Initialize\n");
+
+ // configure the adapter for the mode we want
+ if (config_adapter_mode())
+ {
+ return false;
+ }
+
+ // create the device immediately for the full screen case (defer for window mode in update_window_size())
+ auto win = assert_window();
+ if (win->fullscreen() && device_create(std::static_pointer_cast<win_window_info>(win->main_window())->platform_window()))
+ {
+ return false;
+ }
+
+ return true;
+}
+
+int renderer_d3d9::pre_window_draw_check()
+{
+ auto win = assert_window();
+
+ // if we're in the middle of resizing, leave things alone
+ if (win->m_resize_state == RESIZE_STATE_RESIZING)
+ return 0;
+
+ // check if shaders should be toggled
+ if (m_toggle)
+ {
+ m_toggle = false;
+
+ // free resources
+ device_delete_resources();
+
+ m_shaders->toggle();
+ m_sliders_dirty = true;
+
+ // re-create resources
+ if (device_create_resources())
+ {
+ osd_printf_verbose("Direct3D: failed to recreate resources for device; failing permanently\n");
+ device_delete();
+ return 1;
+ }
+ }
+
+ // if we have a device, check the cooperative level
+ if (m_device != nullptr)
+ {
+ if (device_test_cooperative())
+ {
+ return 1;
+ }
+ }
+
+ // in window mode, we need to track the window size
+ if (!win->fullscreen() || m_device == nullptr)
+ {
+ // if the size changes, skip this update since the render target will be out of date
+ if (update_window_size())
+ return 0;
+
+ // if we have no device, after updating the size, return an error so GDI can try
+ if (m_device == nullptr)
+ return 1;
+ }
+
+ return -1;
+}
+
+void d3d_texture_manager::update_textures()
+{
+ auto win = m_renderer->assert_window();
+
+ for (render_primitive &prim : *win->m_primlist)
+ {
+ if (prim.texture.base != nullptr)
+ {
+ texture_info *texture = find_texinfo(&prim.texture, prim.flags);
+ if (texture == nullptr)
+ {
+ int prescale = m_renderer->get_shaders()->enabled() ? 1 : win->prescale();
+
+ auto tex = std::make_unique<texture_info>(this, &prim.texture, prescale, prim.flags);
+ texture = tex.get();
+ m_texture_list.push_back(std::move(tex));
+ }
+ else
+ {
+ // if there is one, but with a different seqid, copy the data
+ if (texture->get_texinfo().seqid != prim.texture.seqid)
+ {
+ texture->set_data(&prim.texture, prim.flags);
+ texture->get_texinfo().seqid = prim.texture.seqid;
+ }
+ }
+ }
+ }
+
+ if (!m_renderer->get_shaders()->enabled())
+ {
+ return;
+ }
+
+ int screen_index = 0;
+ for (render_primitive &prim : *win->m_primlist)
+ {
+ if (PRIMFLAG_GET_SCREENTEX(prim.flags))
+ {
+ if (!m_renderer->get_shaders()->get_texture_target(&prim, prim.texture.width, prim.texture.height, screen_index))
+ {
+ if (!m_renderer->get_shaders()->create_texture_target(&prim, prim.texture.width, prim.texture.height, screen_index))
+ {
+ d3dintf->post_fx_available = false;
+ break;
+ }
+ }
+ screen_index++;
+ }
+ else if (PRIMFLAG_GET_VECTORBUF(prim.flags))
+ {
+ if (!m_renderer->get_shaders()->get_vector_target(&prim, screen_index))
+ {
+ if (!m_renderer->get_shaders()->create_vector_target(&prim, screen_index))
+ {
+ d3dintf->post_fx_available = false;
+ break;
+ }
+ }
+ screen_index++;
+ }
+ }
+}
+
+void renderer_d3d9::begin_frame()
+{
+ auto win = assert_window();
+
+ HRESULT result = m_device->Clear(0, nullptr, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0,0,0,0), 0, 0);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device clear call\n", result);
+
+ win->m_primlist->acquire_lock();
+
+ // first update any textures
+ m_texture_manager->update_textures();
+
+ // begin the scene
+ result = m_device->BeginScene();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device BeginScene call\n", result);
+
+ if (m_shaders->enabled())
+ m_shaders->init_fsfx_quad();
+}
+
+void renderer_d3d9::process_primitives()
+{
+ auto win = assert_window();
+
+ // loop over line primitives
+ int vector_count = 0;
+ for (render_primitive &prim : *win->m_primlist)
+ {
+ if (prim.type == render_primitive::LINE && PRIMFLAG_GET_VECTOR(prim.flags))
+ {
+ vector_count++;
+ }
+ }
+
+ // Rotating index for vector time offsets
+ for (render_primitive &prim : *win->m_primlist)
+ {
+ switch (prim.type)
+ {
+ case render_primitive::LINE:
+ if (PRIMFLAG_GET_VECTOR(prim.flags))
+ {
+ if (vector_count > 0)
+ {
+ batch_vectors(vector_count);
+ vector_count = 0;
+ }
+ }
+ else
+ {
+ draw_line(prim);
+ }
+ break;
+
+ case render_primitive::QUAD:
+ draw_quad(prim);
+ break;
+
+ default:
+ throw emu_fatalerror("Unexpected render_primitive type");
+ }
+ }
+}
+
+void renderer_d3d9::end_frame()
+{
+ auto win = assert_window();
+
+ win->m_primlist->release_lock();
+
+ // flush any pending polygons
+ primitive_flush_pending();
+
+ // finish the scene
+ HRESULT result = m_device->EndScene();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device end_scene call\n", result);
+
+ // present the current buffers
+ result = m_device->Present(nullptr, nullptr, nullptr, nullptr);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device present call\n", result);
+}
+
+void renderer_d3d9::update_presentation_parameters()
+{
+ auto win = assert_window();
+
+ memset(&m_presentation, 0, sizeof(m_presentation));
+ m_presentation.BackBufferWidth = m_width;
+ m_presentation.BackBufferHeight = m_height;
+ m_presentation.BackBufferFormat = m_pixformat;
+ m_presentation.BackBufferCount = video_config.triplebuf ? 2 : 1;
+ m_presentation.MultiSampleType = D3DMULTISAMPLE_NONE;
+ m_presentation.SwapEffect = D3DSWAPEFFECT_DISCARD;
+ m_presentation.hDeviceWindow = std::static_pointer_cast<win_window_info>(win)->platform_window();
+ m_presentation.Windowed = !win->fullscreen() || win->win_has_menu();
+ m_presentation.EnableAutoDepthStencil = FALSE;
+ m_presentation.AutoDepthStencilFormat = D3DFMT_D16;
+ m_presentation.Flags = 0;
+ m_presentation.FullScreen_RefreshRateInHz = m_refresh;
+ m_presentation.PresentationInterval = (
+ (video_config.triplebuf && win->fullscreen())
+ || video_config.waitvsync
+ || video_config.syncrefresh)
+ ? D3DPRESENT_INTERVAL_ONE
+ : D3DPRESENT_INTERVAL_IMMEDIATE;
+}
+
+
+void renderer_d3d9::update_gamma_ramp()
+{
+ if (m_gamma_supported)
+ {
+ return;
+ }
+
+ auto win = assert_window();
+
+ // create a standard ramp
+ D3DGAMMARAMP ramp;
+
+ // set the gamma if we need to
+ if (win->fullscreen())
+ {
+ // only set the gamma if it's not 1.0
+ windows_options &options = downcast<windows_options &>(win->machine().options());
+ float brightness = options.full_screen_brightness();
+ float contrast = options.full_screen_contrast();
+ float gamma = options.full_screen_gamma();
+ if (brightness != 1.0f || contrast != 1.0f || gamma != 1.0f)
+ {
+ for (int i = 0; i < 256; i++)
+ {
+ ramp.red[i] = ramp.green[i] = ramp.blue[i] = apply_brightness_contrast_gamma(i, brightness, contrast, gamma) << 8;
+ }
+ }
+ }
+
+ m_device->SetGammaRamp(0, 0, &ramp);
+}
+
+
+//============================================================
+// device_create
+//============================================================
+
+int renderer_d3d9::device_create(HWND device_hwnd)
+{
+ // if a device exists, free it
+ if (m_device != nullptr)
+ {
+ device_delete();
+ }
+
+ // verify the caps
+ if (!device_verify_caps())
+ {
+ return 1;
+ }
+
+ m_texture_manager = global_alloc(d3d_texture_manager(this));
+
+try_again:
+ // try for XRGB first
+ m_screen_format = D3DFMT_X8R8G8B8;
+ HRESULT result = d3dintf->d3dobj->CheckDeviceFormat(m_adapter, D3DDEVTYPE_HAL, m_pixformat,
+ m_texture_manager->is_dynamic_supported()
+ ? D3DUSAGE_DYNAMIC
+ : 0,
+ D3DRTYPE_TEXTURE, m_screen_format);
+ if (FAILED(result))
+ {
+ // if not, try for ARGB
+ m_screen_format = D3DFMT_A8R8G8B8;
+ result = d3dintf->d3dobj->CheckDeviceFormat(m_adapter, D3DDEVTYPE_HAL, m_pixformat,
+ m_texture_manager->is_dynamic_supported()
+ ? D3DUSAGE_DYNAMIC
+ : 0,
+ D3DRTYPE_TEXTURE, m_screen_format);
+ if (FAILED(result) && m_texture_manager->is_dynamic_supported())
+ {
+ m_texture_manager->set_dynamic_supported(false);
+ goto try_again;
+ }
+ if (FAILED(result))
+ {
+ osd_printf_error("Error: unable to configure a screen texture format\n");
+ return 1;
+ }
+ }
+
+ // initialize the D3D presentation parameters
+ update_presentation_parameters();
+
+ // create the D3D device
+ result = d3dintf->d3dobj->CreateDevice(
+ m_adapter, D3DDEVTYPE_HAL, device_hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &m_presentation, &m_device);
+ if (FAILED(result))
+ {
+ // if we got a "DEVICELOST" error, it may be transitory; count it and only fail if
+ // we exceed a threshold
+ if (result == D3DERR_DEVICELOST)
+ {
+ m_create_error_count++;
+ if (m_create_error_count < 10)
+ {
+ return 0;
+ }
+ }
+
+ // fatal error if we just can't do it
+ osd_printf_error("Unable to create the Direct3D device (%08X)\n", (uint32_t)result);
+ return 1;
+ }
+ m_create_error_count = 0;
+ osd_printf_verbose("Direct3D: Device created at %dx%d\n", m_width, m_height);
+
+ update_gamma_ramp();
+
+ return device_create_resources();
+}
+
+
+//============================================================
+// device_create_resources
+//============================================================
+
+int renderer_d3d9::device_create_resources()
+{
+ auto win = assert_window();
+
+ // create shaders only once
+ if (m_shaders == nullptr)
+ {
+ m_shaders = (shaders*)global_alloc_clear<shaders>();
+ }
+
+ if (m_shaders->init(d3dintf, &win->machine(), this))
+ {
+ m_shaders->init_slider_list();
+ m_sliders_dirty = true;
+ }
+
+ // create resources
+ if (m_shaders->create_resources())
+ {
+ osd_printf_verbose("Direct3D: failed to create HLSL resources for device\n");
+ return 1;
+ }
+
+ // allocate a vertex buffer to use
+ HRESULT result = m_device->CreateVertexBuffer(
+ sizeof(vertex) * VERTEX_BUFFER_SIZE,
+ D3DUSAGE_DYNAMIC | D3DUSAGE_SOFTWAREPROCESSING | D3DUSAGE_WRITEONLY,
+ VERTEX_BASE_FORMAT | ((m_shaders->enabled())
+ ? D3DFVF_XYZW
+ : D3DFVF_XYZRHW),
+ D3DPOOL_DEFAULT, &m_vertexbuf, nullptr);
+ if (FAILED(result))
+ {
+ osd_printf_error("Error creating vertex buffer (%08X)\n", (uint32_t)result);
+ return 1;
+ }
+
+ // set the vertex format
+ result = m_device->SetFVF(
+ (D3DFORMAT)(VERTEX_BASE_FORMAT | ((m_shaders->enabled())
+ ? D3DFVF_XYZW
+ : D3DFVF_XYZRHW)));
+ if (FAILED(result))
+ {
+ osd_printf_error("Error setting vertex format (%08X)\n", (uint32_t)result);
+ return 1;
+ }
+
+ // set the fixed render state
+ result = m_device->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
+ result = m_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
+ result = m_device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
+ result = m_device->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
+ result = m_device->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
+ result = m_device->SetRenderState(D3DRS_LASTPIXEL, TRUE);
+ result = m_device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
+ result = m_device->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
+ result = m_device->SetRenderState(D3DRS_ALPHAREF, 0);
+ result = m_device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER);
+ result = m_device->SetRenderState(D3DRS_DITHERENABLE, FALSE);
+ result = m_device->SetRenderState(D3DRS_FOGENABLE, FALSE);
+ result = m_device->SetRenderState(D3DRS_SPECULARENABLE, FALSE);
+ result = m_device->SetRenderState(D3DRS_STENCILENABLE, FALSE);
+ result = m_device->SetRenderState(D3DRS_WRAP0, FALSE);
+ result = m_device->SetRenderState(D3DRS_CLIPPING, TRUE);
+ result = m_device->SetRenderState(D3DRS_LIGHTING, FALSE);
+ result = m_device->SetRenderState(D3DRS_COLORVERTEX, TRUE);
+
+ result = m_device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ result = m_device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+ result = m_device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ result = m_device->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+
+ // reset the local states to force updates
+ reset_render_states();
+
+ // clear the buffer
+ result = m_device->Clear(0, nullptr, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0,0,0,0), 0, 0);
+ result = m_device->Present(nullptr, nullptr, nullptr, nullptr);
+
+ m_texture_manager->create_resources();
+
+ return 0;
+}
+
+
+//============================================================
+// device_delete
+//============================================================
+
+renderer_d3d9::~renderer_d3d9()
+{
+ device_delete();
+
+ // todo: throws error when switching from full screen to window mode
+ //if (m_shaders != nullptr)
+ //{
+ // // delete the HLSL interface
+ // global_free(m_shaders);
+ // m_shaders = nullptr;
+ //}
+}
+
+void renderer_d3d9::exit()
+{
+ if (d3dintf != nullptr)
+ {
+ d3dintf->d3dobj->Release();
+ global_free(d3dintf);
+ }
+}
+
+void renderer_d3d9::device_delete()
+{
+ // free our base resources
+ device_delete_resources();
+
+ // we do not delete the HLSL interface here
+
+ if (m_texture_manager != nullptr)
+ {
+ global_free(m_texture_manager);
+ m_texture_manager = nullptr;
+ }
+
+ // free the device itself
+ if (m_device != nullptr)
+ {
+ m_device->Release();
+ m_device = nullptr;
+ }
+}
+
+
+//============================================================
+// device_delete_resources
+//============================================================
+
+void renderer_d3d9::device_delete_resources()
+{
+ if (m_shaders != nullptr)
+ {
+ m_shaders->delete_resources();
+ }
+
+ if (m_texture_manager != nullptr)
+ {
+ m_texture_manager->delete_resources();
+ }
+
+ // free the vertex buffer
+ if (m_vertexbuf != nullptr)
+ {
+ m_vertexbuf->Release();
+ m_vertexbuf = nullptr;
+ }
+}
+
+
+//============================================================
+// device_verify_caps
+//============================================================
+
+bool renderer_d3d9::device_verify_caps()
+{
+ bool success = true;
+
+ D3DCAPS9 caps;
+ HRESULT result = d3dintf->d3dobj->GetDeviceCaps(m_adapter, D3DDEVTYPE_HAL, &caps);
+ if (FAILED(result))
+ {
+ osd_printf_verbose("Direct3D: Error %08lX during GetDeviceCaps call\n", result);
+ return false;
+ }
+
+ if (caps.MaxPixelShader30InstructionSlots < 512)
+ {
+ osd_printf_verbose("Direct3D: Warning - Device does not support Pixel Shader 3.0, falling back to non-PS rendering\n");
+ d3dintf->post_fx_available = false;
+ }
+
+ // verify presentation capabilities
+ if (!(caps.PresentationIntervals & D3DPRESENT_INTERVAL_IMMEDIATE))
+ {
+ osd_printf_verbose("Direct3D Error: Your graphics card does not support immediate presentation.\n");
+ success = false;
+ }
+ if (!(caps.PresentationIntervals & D3DPRESENT_INTERVAL_ONE))
+ {
+ osd_printf_verbose("Direct3D Error: Your graphics card does not support per-refresh presentation.\n");
+ success = false;
+ }
+
+ // verify device capabilities
+ if (!(caps.DevCaps & D3DDEVCAPS_CANRENDERAFTERFLIP))
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support rendering after a page\n");
+ osd_printf_error("flip.\n");
+ success = false;
+ }
+
+ if (!(caps.DevCaps & D3DDEVCAPS_HWRASTERIZATION))
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support hardware rendering.\n");
+ success = false;
+ }
+
+ // verify texture operation capabilities
+ if (!(caps.TextureOpCaps & D3DTEXOPCAPS_MODULATE))
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support modulate-type blending.\n");
+ success = false;
+ }
+#if 0
+ if (caps.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL)
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not fully support non-power-of-two\n");
+ osd_printf_error("textures.\n");
+ success = false;
+ }
+
+ if (caps.TextureCaps & D3DPTEXTURECAPS_POW2)
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support non-power-of-two textures.\n");
+ success = false;
+ }
+#endif
+ if (caps.TextureCaps & D3DPTEXTURECAPS_SQUAREONLY)
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support non-square textures.\n");
+ success = false;
+ }
+
+ // verify texture formats
+ result = d3dintf->d3dobj->CheckDeviceFormat(m_adapter, D3DDEVTYPE_HAL, m_pixformat, 0, D3DRTYPE_TEXTURE, D3DFMT_A8R8G8B8);
+ if (FAILED(result))
+ {
+ osd_printf_error("Direct3D Error: Your graphics card does not support the A8R8G8B8 texture format.\n");
+ success = false;
+ }
+
+ if (!success)
+ {
+ osd_printf_error("This feature or features are required to use the Direct3D renderer. Please\n");
+ osd_printf_error("select another renderer using the -video option or contact the MAME developers\n");
+ osd_printf_error("with information about your system.\n");
+ return false;
+ }
+
+ m_gamma_supported = ((caps.Caps2 & D3DCAPS2_FULLSCREENGAMMA) != 0);
+ if (!m_gamma_supported)
+ {
+ osd_printf_warning("Direct3D: Warning - device does not support full screen gamma correction.\n");
+ }
+
+ return true;
+}
+
+
+//============================================================
+// device_test_cooperative
+//============================================================
+
+int renderer_d3d9::device_test_cooperative()
+{
+ // check our current status; if we lost the device, punt to GDI
+ HRESULT result = m_device->TestCooperativeLevel();
+ if (result == D3DERR_DEVICELOST)
+ return 1;
+
+ // if we're able to reset ourselves, try it
+ if (result == D3DERR_DEVICENOTRESET)
+ {
+ osd_printf_verbose("Direct3D: resetting device\n");
+
+ // free all existing resources and call reset on the device
+ device_delete_resources();
+ result = m_device->Reset(&m_presentation);
+
+ // if it didn't work, punt to GDI
+ if (FAILED(result))
+ {
+ osd_printf_error("Unable to reset, result %08lX\n", result);
+ return 1;
+ }
+
+ // try to create the resources again; if that didn't work, delete the whole thing
+ if (device_create_resources())
+ {
+ osd_printf_verbose("Direct3D: failed to recreate resources for device; failing permanently\n");
+ device_delete();
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+
+//============================================================
+// config_adapter_mode
+//============================================================
+
+int renderer_d3d9::config_adapter_mode()
+{
+ // choose the monitor number
+ m_adapter = get_adapter_for_monitor();
+
+ // get the identifier
+ D3DADAPTER_IDENTIFIER9 id;
+ HRESULT result = d3dintf->d3dobj->GetAdapterIdentifier(m_adapter, 0, &id);
+ if (FAILED(result))
+ {
+ osd_printf_error("Error getting identifier for adapter #%d\n", m_adapter);
+ return 1;
+ }
+
+ osd_printf_verbose("Direct3D: Configuring adapter #%d = %s\n", m_adapter, id.Description);
+
+ // get the current display mode
+ result = d3dintf->d3dobj->GetAdapterDisplayMode(m_adapter, &m_origmode);
+ if (FAILED(result))
+ {
+ osd_printf_error("Error getting mode for adapter #%d\n", m_adapter);
+ return 1;
+ }
+
+ auto win = assert_window();
+
+ // choose a resolution: window mode case
+ if (!win->fullscreen() || !video_config.switchres || win->win_has_menu())
+ {
+ RECT client;
+
+ // bounds are from the window client rect
+ GetClientRectExceptMenu(std::static_pointer_cast<win_window_info>(win)->platform_window(), &client, win->fullscreen());
+ m_width = client.right - client.left;
+ m_height = client.bottom - client.top;
+
+ // pix format is from the current mode
+ m_pixformat = m_origmode.Format;
+ m_refresh = 0;
+
+ // make sure it's a pixel format we can get behind
+ if (m_pixformat != D3DFMT_X1R5G5B5 && m_pixformat != D3DFMT_R5G6B5 && m_pixformat != D3DFMT_X8R8G8B8)
+ {
+ osd_printf_error("Device %s currently in an unsupported mode\n", win->monitor()->devicename().c_str());
+ return 1;
+ }
+ }
+
+ // choose a resolution: full screen mode case
+ else
+ {
+ // default to the current mode exactly
+ m_width = m_origmode.Width;
+ m_height = m_origmode.Height;
+ m_pixformat = m_origmode.Format;
+ m_refresh = m_origmode.RefreshRate;
+
+ // if we're allowed to switch resolutions, override with something better
+ if (video_config.switchres)
+ pick_best_mode();
+ }
+
+ // see if we can handle the device type
+ result = d3dintf->d3dobj->CheckDeviceType(m_adapter, D3DDEVTYPE_HAL, m_pixformat, m_pixformat, !win->fullscreen());
+ if (FAILED(result))
+ {
+ osd_printf_error("Proposed video mode not supported on device %s\n", win->monitor()->devicename().c_str());
+ return 1;
+ }
+
+ return 0;
+}
+
+
+//============================================================
+// get_adapter_for_monitor
+//============================================================
+
+int renderer_d3d9::get_adapter_for_monitor()
+{
+ int maxadapter = d3dintf->d3dobj->GetAdapterCount();
+
+ auto win = assert_window();
+
+ // iterate over adapters until we error or find a match
+ for (int adapternum = 0; adapternum < maxadapter; adapternum++)
+ {
+ // get the monitor for this adapter
+ HMONITOR curmonitor = d3dintf->d3dobj->GetAdapterMonitor(adapternum);
+
+ // if we match the proposed monitor, this is it
+ if (curmonitor == reinterpret_cast<HMONITOR>(win->monitor()->oshandle()))
+ {
+ return adapternum;
+ }
+ }
+
+ // default to the default
+ return D3DADAPTER_DEFAULT;
+}
+
+
+//============================================================
+// pick_best_mode
+//============================================================
+
+void renderer_d3d9::pick_best_mode()
+{
+ double target_refresh = 60.0;
+ int32_t minwidth, minheight;
+ float best_score = 0.0f;
+
+ auto win = assert_window();
+
+ // determine the refresh rate of the primary screen
+ const screen_device *primary_screen = win->machine().config().first_screen();
+ if (primary_screen != nullptr)
+ {
+ target_refresh = ATTOSECONDS_TO_HZ(primary_screen->refresh_attoseconds());
+ }
+
+ // determine the minimum width/height for the selected target
+ // note: technically we should not be calling this from an alternate window
+ // thread; however, it is only done during init time, and the init code on
+ // the main thread is waiting for us to finish, so it is safe to do so here
+ win->target()->compute_minimum_size(minwidth, minheight);
+
+ // use those as the target for now
+ int32_t target_width = minwidth;
+ int32_t target_height = minheight;
+
+ // determine the maximum number of modes
+ int maxmodes = d3dintf->d3dobj->GetAdapterModeCount(m_adapter, D3DFMT_X8R8G8B8);
+
+ // enumerate all the video modes and find the best match
+ osd_printf_verbose("Direct3D: Selecting video mode...\n");
+ for (int modenum = 0; modenum < maxmodes; modenum++)
+ {
+ // check this mode
+ D3DDISPLAYMODE mode;
+ HRESULT result = d3dintf->d3dobj->EnumAdapterModes(m_adapter, D3DFMT_X8R8G8B8, modenum, &mode);
+ if (FAILED(result))
+ break;
+
+ // skip non-32 bit modes
+ if (mode.Format != D3DFMT_X8R8G8B8)
+ continue;
+
+ // compute initial score based on difference between target and current
+ float size_score = 1.0f / (1.0f + fabs((float)(mode.Width - target_width)) + fabs((float)(mode.Height - target_height)));
+
+ // if the mode is too small, give a big penalty
+ if (mode.Width < minwidth || mode.Height < minheight)
+ size_score *= 0.01f;
+
+ // if mode is smaller than we'd like, it only scores up to 0.1
+ if (mode.Width < target_width || mode.Height < target_height)
+ size_score *= 0.1f;
+
+ // if we're looking for a particular mode, that's a winner
+ if (mode.Width == win->m_win_config.width && mode.Height == win->m_win_config.height)
+ size_score = 2.0f;
+
+ // compute refresh score
+ float refresh_score = 1.0f / (1.0f + fabs((double)mode.RefreshRate - target_refresh));
+
+ // if refresh is smaller than we'd like, it only scores up to 0.1
+ if ((double)mode.RefreshRate < target_refresh)
+ refresh_score *= 0.1f;
+
+ // if we're looking for a particular refresh, make sure it matches
+ if (mode.RefreshRate == win->m_win_config.refresh)
+ refresh_score = 2.0f;
+
+ // weight size and refresh equally
+ float final_score = size_score + refresh_score;
+
+ // best so far?
+ osd_printf_verbose(" %4dx%4d@%3dHz -> %f\n", mode.Width, mode.Height, mode.RefreshRate, final_score * 1000.0f);
+ if (final_score > best_score)
+ {
+ best_score = final_score;
+ m_width = mode.Width;
+ m_height = mode.Height;
+ m_pixformat = mode.Format;
+ m_refresh = mode.RefreshRate;
+ }
+ }
+ osd_printf_verbose("Direct3D: Mode selected = %4dx%4d@%3dHz\n", m_width, m_height, m_refresh);
+}
+
+
+//============================================================
+// update_window_size
+//============================================================
+
+bool renderer_d3d9::update_window_size()
+{
+ auto win = assert_window();
+
+ // get the current window bounds
+ RECT client;
+ GetClientRectExceptMenu(std::static_pointer_cast<win_window_info>(win)->platform_window(), &client, win->fullscreen());
+
+ // if we have a device and matching width/height, nothing to do
+ if (m_device != nullptr && rect_width(&client) == m_width && rect_height(&client) == m_height)
+ {
+ // clear out any pending resizing if the area didn't change
+ if (win->m_resize_state == RESIZE_STATE_PENDING)
+ win->m_resize_state = RESIZE_STATE_NORMAL;
+ return false;
+ }
+
+ // if we're in the middle of resizing, leave it alone as well
+ if (win->m_resize_state == RESIZE_STATE_RESIZING)
+ return false;
+
+ // set the new bounds and create the device again
+ m_width = rect_width(&client);
+ m_height = rect_height(&client);
+ if (device_create(std::static_pointer_cast<win_window_info>(win->main_window())->platform_window()))
+ return false;
+
+ // reset the resize state to normal, and indicate we made a change
+ win->m_resize_state = RESIZE_STATE_NORMAL;
+ return true;
+}
+
+
+//============================================================
+// batch_vectors
+//============================================================
+
+void renderer_d3d9::batch_vectors(int vector_count)
+{
+ auto win = assert_window();
+
+ float quad_width = 0.0f;
+ float quad_height = 0.0f;
+ float target_width = 0.0f;
+ float target_height = 0.0f;
+
+ int vertex_count = vector_count * 6;
+ int triangle_count = vector_count * 2;
+ m_vectorbatch = mesh_alloc(vertex_count);
+ m_batchindex = 0;
+
+ uint32_t cached_flags = 0;
+ for (render_primitive &prim : *win->m_primlist)
+ {
+ switch (prim.type)
+ {
+ case render_primitive::LINE:
+ if (PRIMFLAG_GET_VECTOR(prim.flags))
+ {
+ batch_vector(prim);
+ cached_flags = prim.flags;
+ }
+ break;
+
+ case render_primitive::QUAD:
+ if (PRIMFLAG_GET_VECTORBUF(prim.flags))
+ {
+ quad_width = prim.get_quad_width();
+ quad_height = prim.get_quad_height();
+ target_width = prim.get_full_quad_width();
+ target_height = prim.get_full_quad_height();
+ }
+ break;
+
+ default:
+ // Skip
+ break;
+ }
+ }
+
+ // handle orientation and rotation for vectors as they were a texture
+ if (m_shaders->enabled())
+ {
+ bool orientation_swap_xy =
+ (win->machine().system().flags & ORIENTATION_SWAP_XY) == ORIENTATION_SWAP_XY;
+ bool rotation_swap_xy =
+ (win->target()->orientation() & ORIENTATION_SWAP_XY) == ORIENTATION_SWAP_XY;
+ bool swap_xy = orientation_swap_xy ^ rotation_swap_xy;
+
+ bool rotation_0 = win->target()->orientation() == ROT0;
+ bool rotation_90 = win->target()->orientation() == ROT90;
+ bool rotation_180 = win->target()->orientation() == ROT180;
+ bool rotation_270 = win->target()->orientation() == ROT270;
+ bool flip_x =
+ ((rotation_0 || rotation_270) && orientation_swap_xy) ||
+ ((rotation_180 || rotation_270) && !orientation_swap_xy);
+ bool flip_y =
+ ((rotation_0 || rotation_90) && orientation_swap_xy) ||
+ ((rotation_180 || rotation_90) && !orientation_swap_xy);
+
+ float screen_width = float(this->get_width());
+ float screen_height = float(this->get_height());
+ float half_screen_width = screen_width * 0.5f;
+ float half_screen_height = screen_height * 0.5f;
+ float screen_swap_x_factor = 1.0f / screen_width * screen_height;
+ float screen_swap_y_factor = 1.0f / screen_height * screen_width;
+ float screen_target_ratio_x = screen_width / target_width;
+ float screen_target_ratio_y = screen_height / target_height;
+
+ if (swap_xy)
+ {
+ std::swap(screen_target_ratio_x, screen_target_ratio_y);
+ }
+
+ for (int batchindex = 0; batchindex < m_batchindex; batchindex++)
+ {
+ if (swap_xy)
+ {
+ m_vectorbatch[batchindex].x *= screen_swap_x_factor;
+ m_vectorbatch[batchindex].y *= screen_swap_y_factor;
+ std::swap(m_vectorbatch[batchindex].x, m_vectorbatch[batchindex].y);
+ }
+
+ if (flip_x)
+ {
+ m_vectorbatch[batchindex].x = screen_width - m_vectorbatch[batchindex].x;
+ }
+
+ if (flip_y)
+ {
+ m_vectorbatch[batchindex].y = screen_height - m_vectorbatch[batchindex].y;
+ }
+
+ // center
+ m_vectorbatch[batchindex].x -= half_screen_width;
+ m_vectorbatch[batchindex].y -= half_screen_height;
+
+ // correct screen/target ratio (vectors are created in screen coordinates and have to be adjusted for texture corrdinates of the target)
+ m_vectorbatch[batchindex].x *= screen_target_ratio_x;
+ m_vectorbatch[batchindex].y *= screen_target_ratio_y;
+
+ // un-center
+ m_vectorbatch[batchindex].x += half_screen_width;
+ m_vectorbatch[batchindex].y += half_screen_height;
+ }
+ }
+
+ // now add a polygon entry
+ m_poly[m_numpolys].init(D3DPT_TRIANGLELIST, triangle_count, vertex_count, cached_flags, nullptr, D3DTOP_MODULATE, quad_width, quad_height);
+ m_numpolys++;
+}
+
+void renderer_d3d9::batch_vector(const render_primitive &prim)
+{
+ // get a pointer to the vertex buffer
+ if (m_vectorbatch == nullptr)
+ {
+ return;
+ }
+
+ // compute the effective width based on the direction of the line
+ float effwidth = prim.width;
+ if (effwidth < 2.0f)
+ {
+ effwidth = 2.0f;
+ }
+
+ // determine the bounds of a quad to draw this line
+ render_bounds b0, b1;
+ render_line_to_quad(&prim.bounds, effwidth, effwidth, &b0, &b1);
+
+ float lx = b1.x1 - b0.x1;
+ float ly = b1.y1 - b0.y1;
+ float wx = b1.x1 - b1.x0;
+ float wy = b1.y1 - b1.y0;
+ float line_length = sqrtf(lx * lx + ly * ly);
+ float line_width = sqrtf(wx * wx + wy * wy);
+
+ m_vectorbatch[m_batchindex + 0].x = b0.x0;
+ m_vectorbatch[m_batchindex + 0].y = b0.y0;
+ m_vectorbatch[m_batchindex + 1].x = b0.x1;
+ m_vectorbatch[m_batchindex + 1].y = b0.y1;
+ m_vectorbatch[m_batchindex + 2].x = b1.x0;
+ m_vectorbatch[m_batchindex + 2].y = b1.y0;
+
+ m_vectorbatch[m_batchindex + 3].x = b0.x1;
+ m_vectorbatch[m_batchindex + 3].y = b0.y1;
+ m_vectorbatch[m_batchindex + 4].x = b1.x0;
+ m_vectorbatch[m_batchindex + 4].y = b1.y0;
+ m_vectorbatch[m_batchindex + 5].x = b1.x1;
+ m_vectorbatch[m_batchindex + 5].y = b1.y1;
+
+ if (m_shaders->enabled())
+ {
+ // procedural generated texture
+ m_vectorbatch[m_batchindex + 0].u0 = 0.0f;
+ m_vectorbatch[m_batchindex + 0].v0 = 0.0f;
+ m_vectorbatch[m_batchindex + 1].u0 = 0.0f;
+ m_vectorbatch[m_batchindex + 1].v0 = 1.0f;
+ m_vectorbatch[m_batchindex + 2].u0 = 1.0f;
+ m_vectorbatch[m_batchindex + 2].v0 = 0.0f;
+
+ m_vectorbatch[m_batchindex + 3].u0 = 0.0f;
+ m_vectorbatch[m_batchindex + 3].v0 = 1.0f;
+ m_vectorbatch[m_batchindex + 4].u0 = 1.0f;
+ m_vectorbatch[m_batchindex + 4].v0 = 0.0f;
+ m_vectorbatch[m_batchindex + 5].u0 = 1.0f;
+ m_vectorbatch[m_batchindex + 5].v0 = 1.0f;
+ }
+ else
+ {
+ vec2f& start = get_default_texture()->get_uvstart();
+ vec2f& stop = get_default_texture()->get_uvstop();
+
+ m_vectorbatch[m_batchindex + 0].u0 = start.c.x;
+ m_vectorbatch[m_batchindex + 0].v0 = start.c.y;
+ m_vectorbatch[m_batchindex + 1].u0 = start.c.x;
+ m_vectorbatch[m_batchindex + 1].v0 = stop.c.y;
+ m_vectorbatch[m_batchindex + 2].u0 = stop.c.x;
+ m_vectorbatch[m_batchindex + 2].v0 = start.c.y;
+
+ m_vectorbatch[m_batchindex + 3].u0 = start.c.x;
+ m_vectorbatch[m_batchindex + 3].v0 = stop.c.y;
+ m_vectorbatch[m_batchindex + 4].u0 = stop.c.x;
+ m_vectorbatch[m_batchindex + 4].v0 = start.c.y;
+ m_vectorbatch[m_batchindex + 5].u0 = stop.c.x;
+ m_vectorbatch[m_batchindex + 5].v0 = stop.c.y;
+ }
+
+ // determine the color of the line
+ int32_t r = (int32_t)(prim.color.r * 255.0f);
+ int32_t g = (int32_t)(prim.color.g * 255.0f);
+ int32_t b = (int32_t)(prim.color.b * 255.0f);
+ int32_t a = (int32_t)(prim.color.a * 255.0f);
+ DWORD color = D3DCOLOR_ARGB(a, r, g, b);
+
+ // set the color, Z parameters to standard values
+ for (int i = 0; i < 6; i++)
+ {
+ m_vectorbatch[m_batchindex + i].x -= 0.5f;
+ m_vectorbatch[m_batchindex + i].y -= 0.5f;
+ m_vectorbatch[m_batchindex + i].z = 0.0f;
+ m_vectorbatch[m_batchindex + i].rhw = 1.0f;
+ m_vectorbatch[m_batchindex + i].color = color;
+
+ // vector length/width
+ m_vectorbatch[m_batchindex + i].u1 = line_length;
+ m_vectorbatch[m_batchindex + i].v1 = line_width;
+ }
+
+ m_batchindex += 6;
+}
+
+
+//============================================================
+// draw_line
+//============================================================
+
+void renderer_d3d9::draw_line(const render_primitive &prim)
+{
+ // get a pointer to the vertex buffer
+ vertex *vertex = mesh_alloc(4);
+ if (vertex == nullptr)
+ {
+ return;
+ }
+
+ // compute the effective width based on the direction of the line
+ float effwidth = prim.width;
+ if (effwidth < 1.0f)
+ {
+ effwidth = 1.0f;
+ }
+
+ // determine the bounds of a quad to draw this line
+ render_bounds b0, b1;
+ render_line_to_quad(&prim.bounds, effwidth, 0.0f, &b0, &b1);
+
+ vertex[0].x = b0.x0;
+ vertex[0].y = b0.y0;
+ vertex[1].x = b0.x1;
+ vertex[1].y = b0.y1;
+ vertex[2].x = b1.x0;
+ vertex[2].y = b1.y0;
+ vertex[3].x = b1.x1;
+ vertex[3].y = b1.y1;
+
+ vec2f& start = get_default_texture()->get_uvstart();
+ vec2f& stop = get_default_texture()->get_uvstop();
+
+ vertex[0].u0 = start.c.x;
+ vertex[0].v0 = start.c.y;
+ vertex[1].u0 = start.c.x;
+ vertex[1].v0 = stop.c.y;
+ vertex[2].u0 = stop.c.x;
+ vertex[2].v0 = start.c.y;
+ vertex[3].u0 = stop.c.x;
+ vertex[3].v0 = stop.c.y;
+
+ // determine the color of the line
+ int32_t r = (int32_t)(prim.color.r * 255.0f);
+ int32_t g = (int32_t)(prim.color.g * 255.0f);
+ int32_t b = (int32_t)(prim.color.b * 255.0f);
+ int32_t a = (int32_t)(prim.color.a * 255.0f);
+ DWORD color = D3DCOLOR_ARGB(a, r, g, b);
+
+ // set the color, Z parameters to standard values
+ for (int i = 0; i < 4; i++)
+ {
+ vertex[i].z = 0.0f;
+ vertex[i].rhw = 1.0f;
+ vertex[i].color = color;
+ }
+
+ // now add a polygon entry
+ m_poly[m_numpolys].init(D3DPT_TRIANGLESTRIP, 2, 4, prim.flags, nullptr, D3DTOP_MODULATE, 0.0f, 0.0f);
+ m_numpolys++;
+}
+
+
+//============================================================
+// draw_quad
+//============================================================
+
+void renderer_d3d9::draw_quad(const render_primitive &prim)
+{
+ texture_info *texture = m_texture_manager->find_texinfo(&prim.texture, prim.flags);
+ if (texture == nullptr)
+ {
+ texture = get_default_texture();
+ }
+
+ // get a pointer to the vertex buffer
+ vertex *vertex = mesh_alloc(4);
+ if (vertex == nullptr)
+ {
+ return;
+ }
+
+ // fill in the vertexes clockwise
+ vertex[0].x = prim.bounds.x0;
+ vertex[0].y = prim.bounds.y0;
+ vertex[1].x = prim.bounds.x1;
+ vertex[1].y = prim.bounds.y0;
+ vertex[2].x = prim.bounds.x0;
+ vertex[2].y = prim.bounds.y1;
+ vertex[3].x = prim.bounds.x1;
+ vertex[3].y = prim.bounds.y1;
+ float quad_width = prim.get_quad_width();
+ float quad_height = prim.get_quad_height();
+
+ // set the texture coordinates
+ if (texture != nullptr)
+ {
+ vec2f& start = texture->get_uvstart();
+ vec2f& stop = texture->get_uvstop();
+ vec2f delta = stop - start;
+
+ vertex[0].u0 = start.c.x + delta.c.x * prim.texcoords.tl.u;
+ vertex[0].v0 = start.c.y + delta.c.y * prim.texcoords.tl.v;
+ vertex[1].u0 = start.c.x + delta.c.x * prim.texcoords.tr.u;
+ vertex[1].v0 = start.c.y + delta.c.y * prim.texcoords.tr.v;
+ vertex[2].u0 = start.c.x + delta.c.x * prim.texcoords.bl.u;
+ vertex[2].v0 = start.c.y + delta.c.y * prim.texcoords.bl.v;
+ vertex[3].u0 = start.c.x + delta.c.x * prim.texcoords.br.u;
+ vertex[3].v0 = start.c.y + delta.c.y * prim.texcoords.br.v;
+ }
+
+ // determine the color, allowing for over modulation
+ int32_t r = (int32_t)(prim.color.r * 255.0f);
+ int32_t g = (int32_t)(prim.color.g * 255.0f);
+ int32_t b = (int32_t)(prim.color.b * 255.0f);
+ int32_t a = (int32_t)(prim.color.a * 255.0f);
+ DWORD color = D3DCOLOR_ARGB(a, r, g, b);
+
+ // adjust half pixel X/Y offset, set the color, Z parameters to standard values
+ for (int i = 0; i < 4; i++)
+ {
+ vertex[i].x -= 0.5f;
+ vertex[i].y -= 0.5f;
+ vertex[i].z = 0.0f;
+ vertex[i].rhw = 1.0f;
+ vertex[i].color = color;
+ }
+
+ // now add a polygon entry
+ m_poly[m_numpolys].init(D3DPT_TRIANGLESTRIP, 2, 4, prim.flags, texture, D3DTOP_MODULATE, quad_width, quad_height);
+ m_numpolys++;
+}
+
+
+//============================================================
+// primitive_alloc
+//============================================================
+
+vertex *renderer_d3d9::mesh_alloc(int numverts)
+{
+ HRESULT result;
+
+ // if we're going to overflow, flush
+ if (m_lockedbuf != nullptr && m_numverts + numverts >= VERTEX_BUFFER_SIZE)
+ {
+ primitive_flush_pending();
+
+ if (m_shaders->enabled())
+ m_shaders->init_fsfx_quad();
+ }
+
+ // if we don't have a lock, grab it now
+ if (m_lockedbuf == nullptr)
+ {
+ result = m_vertexbuf->Lock(0, 0, (VOID **)&m_lockedbuf, D3DLOCK_DISCARD);
+ if (FAILED(result))
+ return nullptr;
+ }
+
+ // if we already have the lock and enough room, just return a pointer
+ if (m_lockedbuf != nullptr && m_numverts + numverts < VERTEX_BUFFER_SIZE)
+ {
+ int oldverts = m_numverts;
+ m_numverts += numverts;
+ return &m_lockedbuf[oldverts];
+ }
+
+ return nullptr;
+}
+
+
+//============================================================
+// primitive_flush_pending
+//============================================================
+
+void renderer_d3d9::primitive_flush_pending()
+{
+ // ignore if we're not locked
+ if (m_lockedbuf == nullptr)
+ return;
+
+ // unlock the buffer
+ HRESULT result = m_vertexbuf->Unlock();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during vertex buffer unlock call\n", result);
+
+ m_lockedbuf = nullptr;
+
+ // set the stream
+ result = m_device->SetStreamSource(0, m_vertexbuf, 0, sizeof(vertex));
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetStreamSource call\n", result);
+
+ m_shaders->begin_draw();
+
+ int vertnum = 0;
+ if (m_shaders->enabled())
+ {
+ vertnum = 6;
+ }
+
+ // now do the polys
+ for (int polynum = 0; polynum < m_numpolys; polynum++)
+ {
+ uint32_t flags = m_poly[polynum].flags();
+ texture_info *texture = m_poly[polynum].texture();
+ int newfilter;
+
+ // set the texture if different
+ set_texture(texture);
+
+ // set filtering if different
+ if (texture != nullptr)
+ {
+ newfilter = FALSE;
+ if (PRIMFLAG_GET_SCREENTEX(flags))
+ newfilter = video_config.filter;
+ set_filter(newfilter);
+ set_wrap(PRIMFLAG_GET_TEXWRAP(flags) ? D3DTADDRESS_WRAP : D3DTADDRESS_CLAMP);
+ set_modmode(m_poly[polynum].modmode());
+ }
+
+ if (vertnum + m_poly[polynum].numverts() > m_numverts)
+ {
+ osd_printf_error("Error: vertnum (%d) plus poly vertex count (%d) > %d\n", vertnum, m_poly[polynum].numverts(), m_numverts);
+ fflush(stdout);
+ }
+
+ assert(vertnum + m_poly[polynum].numverts() <= m_numverts);
+
+ if(m_shaders->enabled())
+ {
+ // reset blend mode (handled by shader passes)
+ set_blendmode(BLENDMODE_NONE);
+
+ m_shaders->render_quad(&m_poly[polynum], vertnum);
+ }
+ else
+ {
+ // set blend mode
+ set_blendmode(PRIMFLAG_GET_BLENDMODE(flags));
+
+ // add the primitives
+ result = m_device->DrawPrimitive(m_poly[polynum].type(), vertnum, m_poly[polynum].count());
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device draw_primitive call\n", result);
+ }
+
+ vertnum += m_poly[polynum].numverts();
+ }
+
+ m_shaders->end_draw();
+
+ // reset the vertex count
+ m_numverts = 0;
+ m_numpolys = 0;
+}
+
+
+std::vector<ui::menu_item> renderer_d3d9::get_slider_list()
+{
+ m_sliders_dirty = false;
+
+ std::vector<ui::menu_item> sliders;
+ sliders.insert(sliders.end(), m_sliders.begin(), m_sliders.end());
+
+ if (m_shaders != nullptr && m_shaders->enabled())
+ {
+ std::vector<ui::menu_item> s_slider = m_shaders->get_slider_list();
+ sliders.insert(sliders.end(), s_slider.begin(), s_slider.end());
+ }
+
+ return sliders;
+}
+
+void renderer_d3d9::set_sliders_dirty()
+{
+ m_sliders_dirty = true;
+}
+
+
+//============================================================
+// texture_info destructor
+//============================================================
+
+texture_info::~texture_info()
+{
+ if (m_d3dfinaltex != nullptr)
+ {
+ if (m_d3dtex == m_d3dfinaltex)
+ m_d3dtex = nullptr;
+
+ m_d3dfinaltex->Release();
+ }
+
+ if (m_d3dtex != nullptr)
+ m_d3dtex->Release();
+
+ if (m_d3dsurface != nullptr)
+ m_d3dsurface->Release();
+}
+
+
+//============================================================
+// texture_info constructor
+//============================================================
+
+texture_info::texture_info(d3d_texture_manager *manager, const render_texinfo* texsource, int prescale, uint32_t flags)
+{
+ HRESULT result;
+
+ // fill in the core data
+ m_texture_manager = manager;
+ m_renderer = m_texture_manager->get_d3d();
+ m_hash = m_texture_manager->texture_compute_hash(texsource, flags);
+ m_flags = flags;
+ m_texinfo = *texsource;
+ m_xprescale = prescale;
+ m_yprescale = prescale;
+
+ m_d3dtex = nullptr;
+ m_d3dsurface = nullptr;
+ m_d3dfinaltex = nullptr;
+
+ // determine texture type, required to compute texture size
+ if (!PRIMFLAG_GET_SCREENTEX(flags))
+ {
+ m_type = TEXTURE_TYPE_PLAIN;
+ }
+ else
+ {
+ if ((m_xprescale == 1 && m_yprescale == 1) || m_renderer->get_shaders()->enabled())
+ {
+ m_type = m_texture_manager->is_dynamic_supported() ? TEXTURE_TYPE_DYNAMIC : TEXTURE_TYPE_PLAIN;
+ }
+ else
+ {
+ if (m_texture_manager->is_stretch_supported() && PRIMFLAG_GET_TEXFORMAT(flags) != TEXFORMAT_YUY16)
+ {
+ m_type = TEXTURE_TYPE_SURFACE;
+ }
+ else
+ {
+ m_type = m_texture_manager->is_dynamic_supported() ? TEXTURE_TYPE_DYNAMIC : TEXTURE_TYPE_PLAIN;
+ }
+ }
+ }
+
+ // compute the size
+ compute_size(texsource->width, texsource->height);
+
+ // non-screen textures are easy
+ if (!PRIMFLAG_GET_SCREENTEX(flags))
+ {
+ assert(PRIMFLAG_TEXFORMAT(flags) != TEXFORMAT_YUY16);
+ result = m_renderer->get_device()->CreateTexture(m_rawdims.c.x, m_rawdims.c.y, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &m_d3dtex, nullptr);
+ if (FAILED(result))
+ goto error;
+ m_d3dfinaltex = m_d3dtex;
+ }
+
+ // screen textures are allocated differently
+ else
+ {
+ D3DFORMAT format;
+ DWORD usage = m_texture_manager->is_dynamic_supported() ? D3DUSAGE_DYNAMIC : 0;
+ D3DPOOL pool = m_texture_manager->is_dynamic_supported() ? D3DPOOL_DEFAULT : D3DPOOL_MANAGED;
+ int maxdim = std::max(m_renderer->get_presentation()->BackBufferWidth, m_renderer->get_presentation()->BackBufferHeight);
+
+ // pick the format
+ if (PRIMFLAG_GET_TEXFORMAT(flags) == TEXFORMAT_YUY16)
+ {
+ format = m_texture_manager->get_yuv_format();
+ }
+ else if (PRIMFLAG_GET_TEXFORMAT(flags) == TEXFORMAT_ARGB32 || PRIMFLAG_GET_TEXFORMAT(flags) == TEXFORMAT_PALETTEA16)
+ {
+ format = D3DFMT_A8R8G8B8;
+ }
+ else
+ {
+ format = m_renderer->get_screen_format();
+ }
+
+ // don't prescale above screen size
+ while (m_xprescale > 1 && m_rawdims.c.x * m_xprescale >= 2 * maxdim)
+ {
+ m_xprescale--;
+ }
+ while (m_xprescale > 1 && m_rawdims.c.x * m_xprescale > manager->get_max_texture_width())
+ {
+ m_xprescale--;
+ }
+ while (m_yprescale > 1 && m_rawdims.c.y * m_yprescale >= 2 * maxdim)
+ {
+ m_yprescale--;
+ }
+ while (m_yprescale > 1 && m_rawdims.c.y * m_yprescale > manager->get_max_texture_height())
+ {
+ m_yprescale--;
+ }
+
+ auto win = m_renderer->assert_window();
+
+ int prescale = win->prescale();
+ if (m_xprescale != prescale || m_yprescale != prescale)
+ {
+ osd_printf_verbose("Direct3D: adjusting prescale from %dx%d to %dx%d\n", prescale, prescale, m_xprescale, m_yprescale);
+ }
+
+ // loop until we allocate something or error
+ for (int attempt = 0; attempt < 2; attempt++)
+ {
+ // second attempt is always 1:1
+ if (attempt == 1)
+ {
+ m_xprescale = m_yprescale = 1;
+ }
+
+ // screen textures with no prescaling are pretty easy
+ if (m_xprescale == 1 && m_yprescale == 1)
+ {
+ result = m_renderer->get_device()->CreateTexture(m_rawdims.c.x, m_rawdims.c.y, 1, usage, format, pool, &m_d3dtex, nullptr);
+ if (result == D3D_OK)
+ {
+ m_d3dfinaltex = m_d3dtex;
+ break;
+ }
+ }
+ // screen textures with prescaling require two allocations
+ else
+ {
+ // use an offscreen plain surface for stretching if supported
+ // (won't work for YUY textures)
+ if (m_texture_manager->is_stretch_supported() && PRIMFLAG_GET_TEXFORMAT(flags) != TEXFORMAT_YUY16)
+ {
+ result = m_renderer->get_device()->CreateOffscreenPlainSurface(m_rawdims.c.x, m_rawdims.c.y, format, D3DPOOL_DEFAULT, &m_d3dsurface, nullptr);
+ if (FAILED(result))
+ {
+ continue;
+ }
+ }
+ // otherwise, we allocate a dynamic texture for the source
+ else
+ {
+ result = m_renderer->get_device()->CreateTexture(m_rawdims.c.x, m_rawdims.c.y, 1, usage, format, pool, &m_d3dtex, nullptr);
+ if (FAILED(result))
+ {
+ continue;
+ }
+ }
+
+ // for the target surface, we allocate a render target texture
+ int scwidth = m_rawdims.c.x * m_xprescale;
+ int scheight = m_rawdims.c.y * m_yprescale;
+
+ // target surfaces typically cannot be YCbCr, so we always pick RGB in that case
+ D3DFORMAT finalfmt = (format != m_texture_manager->get_yuv_format()) ? format : D3DFMT_A8R8G8B8;
+
+ result = m_renderer->get_device()->CreateTexture(scwidth, scheight, 1, D3DUSAGE_RENDERTARGET, finalfmt, D3DPOOL_DEFAULT, &m_d3dfinaltex, nullptr);
+ if (result == D3D_OK)
+ {
+ break;
+ }
+
+ m_d3dtex->Release();
+ m_d3dtex = nullptr;
+ }
+ }
+ }
+
+ // copy the data to the texture
+ set_data(texsource, flags);
+
+ return;
+
+error:
+ d3dintf->post_fx_available = false;
+ osd_printf_error("Direct3D: Critical warning: A texture failed to allocate. Expect things to get bad quickly.\n");
+ if (m_d3dsurface != nullptr)
+ m_d3dsurface->Release();
+ if (m_d3dtex != nullptr)
+ m_d3dtex->Release();
+}
+
+
+//============================================================
+// texture_info::compute_size_subroutine
+//============================================================
+
+void texture_info::compute_size_subroutine(int texwidth, int texheight, int* p_width, int* p_height)
+{
+ int finalheight = texheight;
+ int finalwidth = texwidth;
+
+ // adjust the aspect ratio if we need to
+ while (finalwidth < finalheight && finalheight / finalwidth > m_texture_manager->get_max_texture_aspect())
+ {
+ finalwidth *= 2;
+ }
+ while (finalheight < finalwidth && finalwidth / finalheight > m_texture_manager->get_max_texture_aspect())
+ {
+ finalheight *= 2;
+ }
+
+ *p_width = finalwidth;
+ *p_height = finalheight;
+}
+
+
+//============================================================
+// texture_info::compute_size
+//============================================================
+
+void texture_info::compute_size(int texwidth, int texheight)
+{
+ int finalheight = texheight;
+ int finalwidth = texwidth;
+
+ m_xborderpix = 0;
+ m_yborderpix = 0;
+
+ bool shaders_enabled = m_renderer->get_shaders()->enabled();
+ bool wrap_texture = (m_flags & PRIMFLAG_TEXWRAP_MASK) == PRIMFLAG_TEXWRAP_MASK;
+
+ // skip border when shaders are enabled
+ if (!shaders_enabled)
+ {
+ // if we're not wrapping, add a 1-2 pixel border on all sides
+ if (!wrap_texture)
+ {
+ // note we need 2 pixels in X for YUY textures
+ m_xborderpix = (PRIMFLAG_GET_TEXFORMAT(m_flags) == TEXFORMAT_YUY16) ? 2 : 1;
+ m_yborderpix = 1;
+ }
+ }
+
+ finalwidth += 2 * m_xborderpix;
+ finalheight += 2 * m_yborderpix;
+
+ // take texture size as given when shaders are enabled
+ if (!shaders_enabled)
+ {
+ compute_size_subroutine(finalwidth, finalheight, &finalwidth, &finalheight);
+
+ // if we added pixels for the border, and that just barely pushed us over, take it back
+ if (finalwidth > m_texture_manager->get_max_texture_width() || finalheight > m_texture_manager->get_max_texture_height())
+ {
+ finalheight = texheight;
+ finalwidth = texwidth;
+
+ m_xborderpix = 0;
+ m_yborderpix = 0;
+
+ compute_size_subroutine(finalwidth, finalheight, &finalwidth, &finalheight);
+ }
+ }
+
+ // if we're above the max width/height, do what?
+ if (finalwidth > m_texture_manager->get_max_texture_width() || finalheight > m_texture_manager->get_max_texture_height())
+ {
+ static bool printed = false;
+ if (!printed) osd_printf_warning("Texture too big! (wanted: %dx%d, max is %dx%d)\n", finalwidth, finalheight, (int)m_texture_manager->get_max_texture_width(), (int)m_texture_manager->get_max_texture_height());
+ printed = true;
+ }
+
+ // compute the U/V scale factors
+ m_start.c.x = (float)m_xborderpix / (float)finalwidth;
+ m_start.c.y = (float)m_yborderpix / (float)finalheight;
+ m_stop.c.x = (float)(texwidth + m_xborderpix) / (float)finalwidth;
+ m_stop.c.y = (float)(texheight + m_yborderpix) / (float)finalheight;
+
+ // set the final values
+ m_rawdims.c.x = finalwidth;
+ m_rawdims.c.y = finalheight;
+}
+
+
+//============================================================
+// copyline_palette16
+//============================================================
+
+static inline void copyline_palette16(uint32_t *dst, const uint16_t *src, int width, const rgb_t *palette, int xborderpix)
+{
+ if (xborderpix)
+ *dst++ = 0xff000000 | palette[*src];
+ for (int x = 0; x < width; x++)
+ *dst++ = 0xff000000 | palette[*src++];
+ if (xborderpix)
+ *dst++ = 0xff000000 | palette[*--src];
+}
+
+
+//============================================================
+// copyline_palettea16
+//============================================================
+
+static inline void copyline_palettea16(uint32_t *dst, const uint16_t *src, int width, const rgb_t *palette, int xborderpix)
+{
+ if (xborderpix)
+ *dst++ = palette[*src];
+ for (int x = 0; x < width; x++)
+ *dst++ = palette[*src++];
+ if (xborderpix)
+ *dst++ = palette[*--src];
+}
+
+
+//============================================================
+// copyline_rgb32
+//============================================================
+
+static inline void copyline_rgb32(uint32_t *dst, const uint32_t *src, int width, const rgb_t *palette, int xborderpix)
+{
+ if (palette != nullptr)
+ {
+ if (xborderpix)
+ {
+ rgb_t srcpix = *src;
+ *dst++ = 0xff000000 | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ for (int x = 0; x < width; x++)
+ {
+ rgb_t srcpix = *src++;
+ *dst++ = 0xff000000 | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ if (xborderpix)
+ {
+ rgb_t srcpix = *--src;
+ *dst++ = 0xff000000 | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ }
+ else
+ {
+ if (xborderpix)
+ *dst++ = 0xff000000 | *src;
+ for (int x = 0; x < width; x++)
+ *dst++ = 0xff000000 | *src++;
+ if (xborderpix)
+ *dst++ = 0xff000000 | *--src;
+ }
+}
+
+
+//============================================================
+// copyline_argb32
+//============================================================
+
+static inline void copyline_argb32(uint32_t *dst, const uint32_t *src, int width, const rgb_t *palette, int xborderpix)
+{
+ if (palette != nullptr)
+ {
+ if (xborderpix)
+ {
+ rgb_t srcpix = *src;
+ *dst++ = (srcpix & 0xff000000) | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ for (int x = 0; x < width; x++)
+ {
+ rgb_t srcpix = *src++;
+ *dst++ = (srcpix & 0xff000000) | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ if (xborderpix)
+ {
+ rgb_t srcpix = *--src;
+ *dst++ = (srcpix & 0xff000000) | palette[0x200 + srcpix.r()] | palette[0x100 + srcpix.g()] | palette[srcpix.b()];
+ }
+ }
+ else
+ {
+ if (xborderpix)
+ *dst++ = *src;
+ memcpy(dst, src, sizeof(uint32_t) * width);
+ dst += width;
+ src += width;
+ if (xborderpix)
+ *dst++ = *--src;
+ }
+}
+
+
+//============================================================
+// copyline_yuy16_to_yuy2
+//============================================================
+
+static inline void copyline_yuy16_to_yuy2(uint16_t *dst, const uint16_t *src, int width, const rgb_t *palette)
+{
+ assert(width % 2 == 0);
+
+ if (palette != nullptr) // palette (really RGB map) case
+ {
+ for (int x = 0; x < width; x += 2)
+ {
+ uint16_t srcpix0 = *src++;
+ uint16_t srcpix1 = *src++;
+ *dst++ = palette[0x000 + (srcpix0 >> 8)] | (srcpix0 << 8);
+ *dst++ = palette[0x000 + (srcpix1 >> 8)] | (srcpix1 << 8);
+ }
+ }
+ else // direct case
+ {
+ for (int x = 0; x < width; x += 2)
+ {
+ uint16_t srcpix0 = *src++;
+ uint16_t srcpix1 = *src++;
+ *dst++ = (srcpix0 >> 8) | (srcpix0 << 8);
+ *dst++ = (srcpix1 >> 8) | (srcpix1 << 8);
+ }
+ }
+}
+
+
+//============================================================
+// copyline_yuy16_to_uyvy
+//============================================================
+
+static inline void copyline_yuy16_to_uyvy(uint16_t *dst, const uint16_t *src, int width, const rgb_t *palette)
+{
+ assert(width % 2 == 0);
+
+ if (palette != nullptr) // palette (really RGB map) case
+ {
+ for (int x = 0; x < width; x += 2)
+ {
+ uint16_t srcpix0 = *src++;
+ uint16_t srcpix1 = *src++;
+ *dst++ = palette[0x100 + (srcpix0 >> 8)] | (srcpix0 & 0xff);
+ *dst++ = palette[0x100 + (srcpix1 >> 8)] | (srcpix1 & 0xff);
+ }
+ }
+
+ // direct case
+ else
+ {
+ memcpy(dst, src, sizeof(uint16_t) * width);
+ }
+}
+
+
+//============================================================
+// copyline_yuy16_to_argb
+//============================================================
+
+static inline void copyline_yuy16_to_argb(uint32_t *dst, const uint16_t *src, int width, const rgb_t *palette)
+{
+ assert(width % 2 == 0);
+
+ if (palette != nullptr) // palette (really RGB map) case
+ {
+ for (int x = 0; x < width / 2; x++)
+ {
+ uint16_t srcpix0 = *src++;
+ uint16_t srcpix1 = *src++;
+ uint8_t cb = srcpix0 & 0xff;
+ uint8_t cr = srcpix1 & 0xff;
+ *dst++ = ycc_to_rgb(palette[0x000 + (srcpix0 >> 8)], cb, cr);
+ *dst++ = ycc_to_rgb(palette[0x000 + (srcpix1 >> 8)], cb, cr);
+ }
+ }
+ else // direct case
+ {
+ for (int x = 0; x < width; x += 2)
+ {
+ uint16_t srcpix0 = *src++;
+ uint16_t srcpix1 = *src++;
+ uint8_t cb = srcpix0 & 0xff;
+ uint8_t cr = srcpix1 & 0xff;
+ *dst++ = ycc_to_rgb(srcpix0 >> 8, cb, cr);
+ *dst++ = ycc_to_rgb(srcpix1 >> 8, cb, cr);
+ }
+ }
+}
+
+
+//============================================================
+// texture_set_data
+//============================================================
+
+void texture_info::set_data(const render_texinfo *texsource, uint32_t flags)
+{
+ D3DLOCKED_RECT rect;
+ HRESULT result;
+
+ // lock the texture
+ switch (m_type)
+ {
+ default:
+ case TEXTURE_TYPE_PLAIN: result = m_d3dtex->LockRect(0, &rect, nullptr, 0); break;
+ case TEXTURE_TYPE_DYNAMIC: result = m_d3dtex->LockRect(0, &rect, nullptr, D3DLOCK_DISCARD); break;
+ case TEXTURE_TYPE_SURFACE: result = m_d3dsurface->LockRect(&rect, nullptr, D3DLOCK_DISCARD); break;
+ }
+ if (FAILED(result))
+ {
+ return;
+ }
+
+ // loop over Y
+ int tex_format = PRIMFLAG_GET_TEXFORMAT(flags);
+#if 0
+ if (tex_format == TEXFORMAT_ARGB32 && texsource->palette == nullptr && texsource->width == texsource->rowpixels && m_xborderpix == 0 && m_yborderpix == 0)
+ {
+ memcpy((BYTE *)rect.pBits, texsource->base, sizeof(uint32_t) * texsource->width * texsource->height);
+ }
+ else
+#endif
+ {
+ int miny = 0 - m_yborderpix;
+ int maxy = texsource->height + m_yborderpix;
+
+ for (int dsty = miny; dsty < maxy; dsty++)
+ {
+ int srcy = (dsty < 0) ? 0 : (dsty >= texsource->height) ? texsource->height - 1 : dsty;
+
+ void *dst = (BYTE *)rect.pBits + (dsty + m_yborderpix) * rect.Pitch;
+
+ switch (tex_format)
+ {
+ case TEXFORMAT_PALETTE16:
+ copyline_palette16((uint32_t *)dst, (uint16_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix);
+ break;
+
+ case TEXFORMAT_PALETTEA16:
+ copyline_palettea16((uint32_t *)dst, (uint16_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix);
+ break;
+
+ case TEXFORMAT_RGB32:
+ copyline_rgb32((uint32_t *)dst, (uint32_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix);
+ break;
+
+ case TEXFORMAT_ARGB32:
+ copyline_argb32((uint32_t *)dst, (uint32_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette, m_xborderpix);
+ break;
+
+ case TEXFORMAT_YUY16:
+ if (m_texture_manager->get_yuv_format() == D3DFMT_YUY2)
+ copyline_yuy16_to_yuy2((uint16_t *)dst, (uint16_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette);
+ else if (m_texture_manager->get_yuv_format() == D3DFMT_UYVY)
+ copyline_yuy16_to_uyvy((uint16_t *)dst, (uint16_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette);
+ else
+ copyline_yuy16_to_argb((uint32_t *)dst, (uint16_t *)texsource->base + srcy * texsource->rowpixels, texsource->width, texsource->palette);
+ break;
+
+ default:
+ osd_printf_error("Unknown texture blendmode=%d format=%d\n", PRIMFLAG_GET_BLENDMODE(flags), PRIMFLAG_GET_TEXFORMAT(flags));
+ break;
+ }
+ }
+ }
+
+ // unlock
+ switch (m_type)
+ {
+ default:
+ case TEXTURE_TYPE_PLAIN: result = m_d3dtex->UnlockRect(0); break;
+ case TEXTURE_TYPE_DYNAMIC: result = m_d3dtex->UnlockRect(0); break;
+ case TEXTURE_TYPE_SURFACE: result = m_d3dsurface->UnlockRect(); break;
+ }
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during texture UnlockRect call\n", result);
+
+ // prescale
+ prescale();
+}
+
+
+//============================================================
+// texture_info::prescale
+//============================================================
+
+void texture_info::prescale()
+{
+ IDirect3DSurface9 *scale_surface;
+ HRESULT result;
+ int i;
+
+ // if we don't need to, just skip it
+ if (m_d3dtex == m_d3dfinaltex)
+ return;
+
+ // for all cases, we need to get the surface of the render target
+ result = m_d3dfinaltex->GetSurfaceLevel(0, &scale_surface);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during texture GetSurfaceLevel call\n", result);
+
+ // if we have an offscreen plain surface, we can just StretchRect to it
+ if (m_type == TEXTURE_TYPE_SURFACE)
+ {
+ assert(m_d3dsurface != nullptr);
+
+ // set the source bounds
+ RECT source;
+ source.left = source.top = 0;
+ source.right = m_texinfo.width + 2 * m_xborderpix;
+ source.bottom = m_texinfo.height + 2 * m_yborderpix;
+
+ // set the target bounds
+ RECT dest;
+ dest = source;
+ dest.right *= m_xprescale;
+ dest.bottom *= m_yprescale;
+
+ // do the stretchrect
+ result = m_renderer->get_device()->StretchRect(m_d3dsurface, &source, scale_surface, &dest, D3DTEXF_POINT);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device stretct_rect call\n", result);
+ }
+
+ // if we are using a texture render target, we need to do more preparations
+ else
+ {
+ IDirect3DSurface9 *backbuffer;
+
+ assert(m_d3dtex != nullptr);
+
+ // first remember the original render target and set the new one
+ result = m_renderer->get_device()->GetRenderTarget(0, &backbuffer);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device GetRenderTarget call\n", result);
+ result = m_renderer->get_device()->SetRenderTarget(0, scale_surface);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderTarget call 1\n", result);
+ m_renderer->reset_render_states();
+
+ // start the scene
+ result = m_renderer->get_device()->BeginScene();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device BeginScene call\n", result);
+
+ // configure the rendering pipeline
+ m_renderer->set_filter(FALSE);
+ m_renderer->set_blendmode(BLENDMODE_NONE);
+ result = m_renderer->get_device()->SetTexture(0, m_d3dtex);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetTexture call\n", result);
+
+ // lock the vertex buffer
+ vertex *lockedbuf;
+ result = m_renderer->get_vertex_buffer()->Lock(0, 0, (VOID **)&lockedbuf, D3DLOCK_DISCARD);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during vertex buffer lock call\n", result);
+
+ // configure the X/Y coordinates on the target surface
+ lockedbuf[0].x = -0.5f;
+ lockedbuf[0].y = -0.5f;
+ lockedbuf[1].x = (float)((m_texinfo.width + 2 * m_xborderpix) * m_xprescale) - 0.5f;
+ lockedbuf[1].y = -0.5f;
+ lockedbuf[2].x = -0.5f;
+ lockedbuf[2].y = (float)((m_texinfo.height + 2 * m_yborderpix) * m_yprescale) - 0.5f;
+ lockedbuf[3].x = (float)((m_texinfo.width + 2 * m_xborderpix) * m_xprescale) - 0.5f;
+ lockedbuf[3].y = (float)((m_texinfo.height + 2 * m_yborderpix) * m_yprescale) - 0.5f;
+
+ // configure the U/V coordintes on the source texture
+ lockedbuf[0].u0 = 0.0f;
+ lockedbuf[0].v0 = 0.0f;
+ lockedbuf[1].u0 = (float)(m_texinfo.width + 2 * m_xborderpix) / (float)m_rawdims.c.x;
+ lockedbuf[1].v0 = 0.0f;
+ lockedbuf[2].u0 = 0.0f;
+ lockedbuf[2].v0 = (float)(m_texinfo.height + 2 * m_yborderpix) / (float)m_rawdims.c.y;
+ lockedbuf[3].u0 = (float)(m_texinfo.width + 2 * m_xborderpix) / (float)m_rawdims.c.x;
+ lockedbuf[3].v0 = (float)(m_texinfo.height + 2 * m_yborderpix) / (float)m_rawdims.c.y;
+
+ // reset the remaining vertex parameters
+ for (i = 0; i < 4; i++)
+ {
+ lockedbuf[i].z = 0.0f;
+ lockedbuf[i].rhw = 1.0f;
+ lockedbuf[i].color = D3DCOLOR_ARGB(0xff,0xff,0xff,0xff);
+ }
+
+ // unlock the vertex buffer
+ result = m_renderer->get_vertex_buffer()->Unlock();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during vertex buffer unlock call\n", result);
+
+ // set the stream and draw the triangle strip
+ result = m_renderer->get_device()->SetStreamSource(0, m_renderer->get_vertex_buffer(), 0, sizeof(vertex));
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetStreamSource call\n", result);
+ result = m_renderer->get_device()->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device DrawPrimitive call\n", result);
+
+ // end the scene
+ result = m_renderer->get_device()->EndScene();
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device end_scene call\n", result);
+
+ // reset the render target and release our reference to the backbuffer
+ result = m_renderer->get_device()->SetRenderTarget(0, backbuffer);
+ if (FAILED(result))
+ osd_printf_verbose("Direct3D: Error %08lX during device SetRenderTarget call 2\n", result);
+ backbuffer->Release();
+ m_renderer->reset_render_states();
+ }
+
+ // release our reference to the target surface
+ scale_surface->Release();
+}
+
+
+//============================================================
+// d3d_render_target::~d3d_render_target
+//============================================================
+
+d3d_render_target::~d3d_render_target()
+{
+ for (int index = 0; index < MAX_BLOOM_COUNT; index++)
+ {
+ if (bloom_texture[index] != nullptr)
+ bloom_texture[index]->Release();
+
+ if (bloom_surface[index] != nullptr)
+ bloom_surface[index]->Release();
+ }
+
+ for (int index = 0; index < 2; index++)
+ {
+ if (source_texture[index] != nullptr)
+ source_texture[index]->Release();
+
+ if (source_surface[index] != nullptr)
+ source_surface[index]->Release();
+
+ if (target_texture[index] != nullptr)
+ target_texture[index]->Release();
+
+ if (target_surface[index] != nullptr)
+ target_surface[index]->Release();
+ }
+
+ if (cache_texture != nullptr)
+ cache_texture->Release();
+
+ if (cache_surface != nullptr)
+ cache_surface->Release();
+}
+
+
+//============================================================
+// d3d_render_target::init - initializes a render target
+//============================================================
+
+bool d3d_render_target::init(renderer_d3d9 *d3d, int source_width, int source_height, int target_width, int target_height, int screen_index)
+{
+ HRESULT result;
+
+ this->width = source_width;
+ this->height = source_height;
+
+ this->target_width = target_width;
+ this->target_height = target_height;
+
+ this->screen_index = screen_index;
+
+ for (int index = 0; index < 2; index++)
+ {
+ result = d3d->get_device()->CreateTexture(source_width, source_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &source_texture[index], nullptr);
+ if (FAILED(result))
+ return false;
+
+ source_texture[index]->GetSurfaceLevel(0, &source_surface[index]);
+
+ result = d3d->get_device()->CreateTexture(target_width, target_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &target_texture[index], nullptr);
+ if (FAILED(result))
+ return false;
+
+ target_texture[index]->GetSurfaceLevel(0, &target_surface[index]);
+ }
+
+ result = d3d->get_device()->CreateTexture(target_width, target_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &cache_texture, nullptr);
+ if (FAILED(result))
+ return false;
+
+ cache_texture->GetSurfaceLevel(0, &cache_surface);
+
+ auto win = d3d->assert_window();
+
+ auto first_screen = win->machine().first_screen();
+ bool vector_screen =
+ first_screen != nullptr &&
+ first_screen->screen_type() == SCREEN_TYPE_VECTOR;
+
+ float scale_factor = 0.75f;
+ int scale_count = vector_screen ? MAX_BLOOM_COUNT : HALF_BLOOM_COUNT;
+
+ float bloom_width = (float)source_width;
+ float bloom_height = (float)source_height;
+ float bloom_size = bloom_width < bloom_height ? bloom_width : bloom_height;
+ for (int bloom_index = 0; bloom_index < scale_count && bloom_size >= 2.0f; bloom_size *= scale_factor)
+ {
+ this->bloom_dims[bloom_index][0] = (int)bloom_width;
+ this->bloom_dims[bloom_index][1] = (int)bloom_height;
+
+ result = d3d->get_device()->CreateTexture((int)bloom_width, (int)bloom_height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &bloom_texture[bloom_index], nullptr);
+ if (FAILED(result))
+ return false;
+
+ bloom_texture[bloom_index]->GetSurfaceLevel(0, &bloom_surface[bloom_index]);
+
+ bloom_width *= scale_factor;
+ bloom_height *= scale_factor;
+
+ bloom_index++;
+
+ this->bloom_count = bloom_index;
+ }
+
+ return true;
+}
+
+texture_info *renderer_d3d9::get_default_texture()
+{
+ return m_texture_manager->get_default_texture();
+}
diff --git a/docs/release/src/osd/winui/bitmask.cpp b/docs/release/src/osd/winui/bitmask.cpp
new file mode 100644
index 00000000000..c8b542dce5d
--- /dev/null
+++ b/docs/release/src/osd/winui/bitmask.cpp
@@ -0,0 +1,146 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+/* bitmask.c - Bitmask support routines - MSH 11/19/1998 */
+
+// standard windows headers
+#include <windows.h>
+
+// standard C headers
+#include <stdlib.h> /* For malloc and free */
+
+// MAME/MAMEUI headers
+#include "bitmask.h"
+#include "emu.h"
+/* Bit routines */
+static UCHAR maskTable[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
+
+/* Create a new LPBITS struct and return the new structure
+ * initialized to 'all bits cleared'
+ *
+ * nLength is the number of desired bits
+ */
+LPBITS NewBits(UINT nLength)
+{
+ UINT nSize = (nLength+7) / 8;
+
+ LPBITS lpBits = (LPBITS)malloc(sizeof(BITS));
+ if (lpBits)
+ {
+ lpBits->m_lpBits = (UCHAR *)malloc(nSize);
+ if (lpBits->m_lpBits)
+ {
+ memset(lpBits->m_lpBits, '\0', nSize);
+ lpBits->m_nSize = nSize;
+ }
+ else
+ {
+ free(lpBits);
+ lpBits = 0;
+ }
+ }
+
+ return lpBits;
+}
+
+void DeleteBits(LPBITS lpBits)
+{
+ if (!lpBits)
+ return;
+
+ if (lpBits->m_nSize && lpBits->m_lpBits)
+ free(lpBits->m_lpBits);
+
+ free(lpBits);
+}
+
+/* Test the 'nBit'th bit */
+BOOL TestBit(LPBITS lpBits, UINT nBit)
+{
+ UINT offset;
+ UCHAR mask;
+
+ if (!lpBits || !lpBits->m_lpBits)
+ return FALSE;
+
+ offset = nBit >> 3;
+
+ if (offset >= lpBits->m_nSize)
+ return FALSE;
+
+ mask = maskTable[nBit & 7];
+ return (lpBits->m_lpBits[offset] & mask) ? TRUE : FALSE;
+}
+
+/* Set the 'nBit'th bit */
+void SetBit(LPBITS lpBits, UINT nBit)
+{
+ UINT offset;
+ UCHAR mask;
+
+ if (!lpBits || !lpBits->m_lpBits)
+ return;
+
+ offset = nBit >> 3;
+
+ if (offset >= lpBits->m_nSize)
+ return;
+
+ mask = maskTable[nBit & 7];
+ lpBits->m_lpBits[offset] |= mask;
+}
+
+/* Clear the 'nBit'th bit */
+void ClearBit(LPBITS lpBits, UINT nBit)
+{
+ UINT offset;
+ UCHAR mask;
+
+ if (!lpBits || !lpBits->m_lpBits)
+ return;
+
+ offset = nBit >> 3;
+
+ if (offset >= lpBits->m_nSize)
+ return;
+
+ mask = maskTable[nBit & 7];
+ lpBits->m_lpBits[offset] &= ~mask;
+}
+
+/* Set or Clear all bits as specified by 'bSet' */
+void SetAllBits(LPBITS lpBits, BOOL bSet)
+{
+ if (lpBits && lpBits->m_nSize != 0 && lpBits->m_lpBits)
+ memset(lpBits->m_lpBits, (!bSet) ? '\0' : '\xFF', lpBits->m_nSize);
+}
+
+/* Find next bit that matches 'bSet'
+ *
+ * 'nStartPos' specifies the bit to start search after
+ * 'bSet' specifies to search for a set or unset bit
+ *
+ * Returns -1 if no bits are found
+ */
+int FindBit(LPBITS lpBits, int nStartPos, BOOL bSet)
+{
+ UINT i = 0;
+
+ if (!lpBits || !lpBits->m_nSize || !lpBits->m_lpBits)
+ return -1;
+
+ UINT end = lpBits->m_nSize << 3;
+
+ if (nStartPos < 0)
+ nStartPos = 0;
+
+ for (i = nStartPos; i < end; i++)
+ {
+ BOOL res = (TestBit(lpBits, i)) ? TRUE : FALSE;
+ if ((res && bSet) || (!res && !bSet))
+ return i;
+ }
+
+ return -1;
+}
+
+/* End of source file */
diff --git a/docs/release/src/osd/winui/bitmask.h b/docs/release/src/osd/winui/bitmask.h
new file mode 100644
index 00000000000..ad21e6ae7ae
--- /dev/null
+++ b/docs/release/src/osd/winui/bitmask.h
@@ -0,0 +1,33 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef BITMASK_H
+#define BITMASK_H
+
+/* Bit array type */
+typedef struct
+{
+ UINT m_nSize;
+ UCHAR* m_lpBits;
+} BITS, * LPBITS;
+
+/* Bit functions */
+LPBITS NewBits(UINT nLength /* in bits */);
+void DeleteBits(LPBITS lpBits);
+BOOL TestBit(LPBITS lpBits, UINT nBit);
+void SetBit(LPBITS lpBits, UINT nBit);
+void ClearBit(LPBITS lpBits, UINT nBit);
+void SetAllBits(LPBITS lpBits, BOOL bSet);
+int FindBit(LPBITS lpBits, int nStartPos, BOOL bSet);
+
+/* Linked list type */
+typedef struct
+{
+ LPVOID data;
+ LPVOID next;
+ LPVOID prev;
+} NODE, * LPNODE;
+
+/* Linked list functions */
+
+#endif /* BITMASK_H */
diff --git a/docs/release/src/osd/winui/columnedit.cpp b/docs/release/src/osd/winui/columnedit.cpp
new file mode 100644
index 00000000000..21cac963e76
--- /dev/null
+++ b/docs/release/src/osd/winui/columnedit.cpp
@@ -0,0 +1,439 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/***************************************************************************
+
+ columnedit.c
+
+ Column Edit dialog
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+#include <commdlg.h>
+#include <stdlib.h>
+#include <assert.h>
+
+// MAME/MAMEUI headers
+#include <stdlib.h>
+#include "resource.h"
+#include "mui_opts.h"
+#include "winui.h"
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+// Returns TRUE if successful
+static int DoExchangeItem(HWND hFrom, HWND hTo, int nMinItem)
+{
+ LV_ITEM lvi;
+ TCHAR buf[80];
+ BOOL b_res = 0;
+
+ lvi.iItem = ListView_GetNextItem(hFrom, -1, LVIS_SELECTED | LVIS_FOCUSED);
+ if (lvi.iItem < nMinItem)
+ {
+ if (lvi.iItem != -1) // Can't remove the first column
+ MessageBox(0, TEXT("Cannot Move Selected Item"), TEXT("Move Item"), IDOK);
+ SetFocus(hFrom);
+ return FALSE;
+ }
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM | LVIF_TEXT;
+ lvi.pszText = buf;
+ lvi.cchTextMax = ARRAY_LENGTH(buf);
+ if (ListView_GetItem(hFrom, &lvi))
+ {
+ // Add this item to the Show and delete it from Available
+ b_res = ListView_DeleteItem(hFrom, lvi.iItem);
+ lvi.iItem = ListView_GetItemCount(hTo);
+ (void)ListView_InsertItem(hTo, &lvi);
+ ListView_SetItemState(hTo, lvi.iItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ SetFocus(hTo);
+ return lvi.iItem;
+ }
+ return FALSE;
+}
+
+static void DoMoveItem( HWND hWnd, BOOL bDown)
+{
+ LV_ITEM lvi;
+ TCHAR buf[80];
+ int nMaxpos = 0;
+ BOOL b_res = 0;
+
+ lvi.iItem = ListView_GetNextItem(hWnd, -1, LVIS_SELECTED | LVIS_FOCUSED);
+ nMaxpos = ListView_GetItemCount(hWnd);
+ if (lvi.iItem == -1 ||
+ (lvi.iItem < 2 && bDown == FALSE) || // Disallow moving First column
+ (lvi.iItem == 0 && bDown == TRUE) || // ""
+ (lvi.iItem == nMaxpos - 1 && bDown == TRUE))
+ {
+ SetFocus(hWnd);
+ return;
+ }
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM | LVIF_TEXT;
+ lvi.pszText = buf;
+ lvi.cchTextMax = ARRAY_LENGTH(buf);
+ if (ListView_GetItem(hWnd, &lvi))
+ {
+ // Add this item to the Show and delete it from Available
+ b_res = ListView_DeleteItem(hWnd, lvi.iItem);
+ lvi.iItem += (bDown) ? 1 : -1;
+ (void)ListView_InsertItem(hWnd,&lvi);
+ ListView_SetItemState(hWnd, lvi.iItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ if (lvi.iItem == nMaxpos - 1)
+ EnableWindow(GetDlgItem(GetParent(hWnd), IDC_BUTTONMOVEDOWN), FALSE);
+ else
+ EnableWindow(GetDlgItem(GetParent(hWnd), IDC_BUTTONMOVEDOWN), TRUE);
+
+ if (lvi.iItem < 2)
+ EnableWindow(GetDlgItem(GetParent(hWnd), IDC_BUTTONMOVEUP), FALSE);
+ else
+ EnableWindow(GetDlgItem(GetParent(hWnd), IDC_BUTTONMOVEUP), TRUE);
+
+ SetFocus(hWnd);
+ }
+}
+
+INT_PTR InternalColumnDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam,
+ int nColumnMax, int *shown, int *order,
+ const LPCTSTR *names, void (*pfnGetRealColumnOrder)(int *),
+ void (*pfnGetColumnInfo)(int *pnOrder, int *pnShown),
+ void (*pfnSetColumnInfo)(int *pnOrder, int *pnShown))
+{
+ static HWND hShown;
+ static HWND hAvailable;
+ static BOOL showMsg = FALSE;
+ int nShown = 0;
+ int nAvail = 0;
+ int i, nCount = 0;
+ LV_ITEM lvi;
+ DWORD dwShowStyle, dwAvailableStyle, dwView = 0;
+ BOOL b_res = 0;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ hShown = GetDlgItem(hDlg, IDC_LISTSHOWCOLUMNS);
+ hAvailable = GetDlgItem(hDlg, IDC_LISTAVAILABLECOLUMNS);
+ /*Change Style to Always Show Selection */
+ dwShowStyle = GetWindowLong(hShown, GWL_STYLE);
+ dwAvailableStyle = GetWindowLong(hAvailable, GWL_STYLE);
+ dwView = LVS_SHOWSELALWAYS | LVS_LIST;
+
+ /* Only set the window style if the view bits have changed. */
+ if ((dwShowStyle & LVS_TYPEMASK) != dwView)
+ SetWindowLong(hShown, GWL_STYLE, (dwShowStyle & ~LVS_TYPEMASK) | dwView);
+ if ((dwAvailableStyle & LVS_TYPEMASK) != dwView)
+ SetWindowLong(hAvailable, GWL_STYLE, (dwAvailableStyle & ~LVS_TYPEMASK) | dwView);
+
+ pfnGetColumnInfo(order, shown);
+
+ showMsg = TRUE;
+ nShown = 0;
+ nAvail = 0;
+
+ lvi.mask = LVIF_TEXT | LVIF_PARAM;
+ lvi.stateMask = 0;
+ lvi.iSubItem = 0;
+ lvi.iImage = -1;
+
+ /* Get the Column Order and save it */
+ pfnGetRealColumnOrder(order);
+
+ for (i = 0 ; i < nColumnMax; i++)
+ {
+ lvi.pszText = (TCHAR *) names[order[i]];
+ lvi.lParam = order[i];
+
+ if (shown[order[i]])
+ {
+ lvi.iItem = nShown;
+ (void)ListView_InsertItem(hShown, &lvi);
+ nShown++;
+ }
+ else
+ {
+ lvi.iItem = nAvail;
+ (void)ListView_InsertItem(hAvailable, &lvi);
+ nAvail++;
+ }
+ }
+ if( nShown > 0)
+ {
+ /*Set to Second, because first is not allowed*/
+ ListView_SetItemState(hShown, 1, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ }
+ if( nAvail > 0)
+ {
+ ListView_SetItemState(hAvailable, 0, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ }
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), TRUE);
+ return TRUE;
+
+ case WM_NOTIFY:
+ {
+ NMHDR *nm = (NMHDR *)lParam;
+ NM_LISTVIEW *pnmv;
+ int nPos = 0;
+
+ switch (nm->code)
+ {
+ case NM_DBLCLK:
+ // Do Data Exchange here, which ListView was double clicked?
+ switch (nm->idFrom)
+ {
+ case IDC_LISTAVAILABLECOLUMNS:
+ // Move selected Item from Available to Shown column
+ nPos = DoExchangeItem(hAvailable, hShown, 0);
+ if (nPos)
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ }
+ break;
+
+ case IDC_LISTSHOWCOLUMNS:
+ // Move selected Item from Show to Available column
+ if (DoExchangeItem(hShown, hAvailable, 1))
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ }
+ break;
+ }
+ return TRUE;
+
+ case LVN_ITEMCHANGED:
+ // Don't handle this message for now
+ pnmv = (NM_LISTVIEW *)nm;
+ if (//!(pnmv->uOldState & LVIS_SELECTED) &&
+ (pnmv->uNewState & LVIS_SELECTED))
+ {
+ if (pnmv->iItem == 0 && pnmv->hdr.idFrom == IDC_LISTSHOWCOLUMNS)
+ {
+ // Don't allow selecting the first item
+ ListView_SetItemState(hShown, pnmv->iItem,
+ LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ if (showMsg)
+ {
+ MessageBox(0, TEXT("Changing this item is not permitted"), TEXT("Select Item"), IDOK);
+ showMsg = FALSE;
+ }
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ /*Leave Focus on Control*/
+ //SetFocus(GetDlgItem(hDlg,IDOK));
+ return TRUE;
+ }
+ else
+ showMsg = TRUE;
+ }
+ if( pnmv->uOldState & LVIS_SELECTED && pnmv->iItem == 0 && pnmv->hdr.idFrom == IDC_LISTSHOWCOLUMNS )
+ {
+ /*we enable the buttons again, if the first Entry loses selection*/
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), TRUE);
+ //SetFocus(GetDlgItem(hDlg,IDOK));
+ }
+ break;
+ case NM_SETFOCUS:
+ {
+ switch (nm->idFrom)
+ {
+ case IDC_LISTAVAILABLECOLUMNS:
+ if (ListView_GetItemCount(nm->hwndFrom) != 0)
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ }
+ break;
+ case IDC_LISTSHOWCOLUMNS:
+ if (ListView_GetItemCount(nm->hwndFrom) != 0)
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), FALSE);
+
+ if (ListView_GetNextItem(hShown, -1, LVIS_SELECTED | LVIS_FOCUSED) == 0 )
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), TRUE);
+ }
+ }
+ break;
+ }
+ }
+ break;
+ case LVN_KEYDOWN:
+ case NM_CLICK:
+ pnmv = (NM_LISTVIEW *)nm;
+ if (//!(pnmv->uOldState & LVIS_SELECTED) &&
+ (pnmv->uNewState & LVIS_SELECTED))
+ {
+ if (pnmv->iItem == 0 && pnmv->hdr.idFrom == IDC_LISTSHOWCOLUMNS)
+ {
+ }
+ }
+ switch (nm->idFrom)
+ {
+ case IDC_LISTAVAILABLECOLUMNS:
+ if (ListView_GetItemCount(nm->hwndFrom) != 0)
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ }
+ break;
+
+ case IDC_LISTSHOWCOLUMNS:
+ if (ListView_GetItemCount(nm->hwndFrom) != 0)
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), FALSE);
+ if (ListView_GetNextItem(hShown, -1, LVIS_SELECTED | LVIS_FOCUSED) == 0 )
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), TRUE);
+ }
+ }
+ break;
+ }
+ //SetFocus( nm->hwndFrom );
+ return TRUE;
+ }
+ }
+ return FALSE;
+ case WM_COMMAND:
+ {
+ WORD wID = GET_WM_COMMAND_ID(wParam, lParam);
+ HWND hWndCtrl = GET_WM_COMMAND_HWND(wParam, lParam);
+ int nPos = 0;
+
+ switch (wID)
+ {
+ case IDC_LISTSHOWCOLUMNS:
+ break;
+ case IDC_BUTTONADD:
+ // Move selected Item in Available to Shown
+ nPos = DoExchangeItem(hAvailable, hShown, 0);
+ if (nPos)
+ {
+ EnableWindow(hWndCtrl,FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONREMOVE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ }
+ break;
+
+ case IDC_BUTTONREMOVE:
+ // Move selected Item in Show to Available
+ if (DoExchangeItem( hShown, hAvailable, 1))
+ {
+ EnableWindow(hWndCtrl,FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONADD), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEUP), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_BUTTONMOVEDOWN), FALSE);
+ }
+ break;
+
+ case IDC_BUTTONMOVEDOWN:
+ // Move selected item in the Show window up 1 item
+ DoMoveItem(hShown, TRUE);
+ break;
+
+ case IDC_BUTTONMOVEUP:
+ // Move selected item in the Show window down 1 item
+ DoMoveItem(hShown, FALSE);
+ break;
+
+ case IDOK:
+ // Save users choices
+ nShown = ListView_GetItemCount(hShown);
+ nAvail = ListView_GetItemCount(hAvailable);
+ nCount = 0;
+ for (i = 0; i < nShown; i++)
+ {
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM;
+ lvi.pszText = 0;
+ lvi.iItem = i;
+ b_res = ListView_GetItem(hShown, &lvi);
+ order[nCount++] = lvi.lParam;
+ shown[lvi.lParam] = TRUE;
+ }
+ for (i = 0; i < nAvail; i++)
+ {
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM;
+ lvi.pszText = 0;
+ lvi.iItem = i;
+ b_res = ListView_GetItem(hAvailable, &lvi);
+ order[nCount++] = lvi.lParam;
+ shown[lvi.lParam] = FALSE;
+ }
+ pfnSetColumnInfo(order, shown);
+ EndDialog(hDlg, 1);
+ return TRUE;
+
+ case IDCANCEL:
+ EndDialog(hDlg, 0);
+ return TRUE;
+ }
+ }
+ break;
+ }
+ return 0;
+}
+
+static void GetColumnInfo(int *order, int *shown)
+{
+ GetColumnOrder(order);
+ GetColumnShown(shown);
+}
+
+static void SetColumnInfo(int *order, int *shown)
+{
+ SetColumnOrder(order);
+ SetColumnShown(shown);
+}
+
+INT_PTR CALLBACK ColumnDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ static int shown[COLUMN_MAX];
+ static int order[COLUMN_MAX];
+ extern const LPCTSTR column_names[COLUMN_MAX]; // from winui.c, should improve
+
+ return InternalColumnDialogProc(hDlg, Msg, wParam, lParam, COLUMN_MAX,
+ shown, order, column_names, GetRealColumnOrder, GetColumnInfo, SetColumnInfo);
+}
+
+
+
diff --git a/docs/release/src/osd/winui/columnedit.h b/docs/release/src/osd/winui/columnedit.h
new file mode 100644
index 00000000000..a3c499ed999
--- /dev/null
+++ b/docs/release/src/osd/winui/columnedit.h
@@ -0,0 +1,15 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef COLUMNEDIT_H
+#define COLUMNEDIT_H
+
+INT_PTR InternalColumnDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam,
+ int nColumnMax, int *shown, int *order,
+ const LPCTSTR *names, void (*pfnGetRealColumnOrder)(int *),
+ void (*pfnGetColumnInfo)(int *pnOrder, int *pnShown),
+ void (*pfnSetColumnInfo)(int *pnOrder, int *pnShown));
+
+INT_PTR CALLBACK ColumnDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+#endif
diff --git a/docs/release/src/osd/winui/datamap.cpp b/docs/release/src/osd/winui/datamap.cpp
new file mode 100644
index 00000000000..fa4d6e05b4d
--- /dev/null
+++ b/docs/release/src/osd/winui/datamap.cpp
@@ -0,0 +1,782 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+//============================================================
+//
+// datamap.c - Win32 dialog and options bridge code
+//
+//============================================================
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <commctrl.h>
+#include <tchar.h>
+
+// standard C headers
+#include <stdlib.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <assert.h>
+#include <math.h>
+
+// MAME/MAMEUI headers
+#include "mui_opts.h"
+#include "corestr.h"
+#include "strconv.h"
+#include "datamap.h"
+#include "winutf8.h"
+#include "emu.h"
+
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+//============================================================
+// TYPE DEFINITIONS
+//============================================================
+
+enum _control_type
+{
+ CT_UNKNOWN,
+ CT_BUTTON,
+ CT_STATIC,
+ CT_EDIT,
+ CT_COMBOBOX,
+ CT_TRACKBAR,
+ CT_LISTVIEW
+};
+
+typedef enum _control_type control_type;
+
+
+typedef struct _datamap_entry datamap_entry;
+struct _datamap_entry
+{
+ // the basics about the entry
+ int dlgitem;
+ datamap_entry_type type;
+ const char *option_name;
+
+ // callbacks
+ datamap_callback callbacks[DCT_COUNT];
+ get_option_name_callback get_option_name;
+
+ // formats
+ const char *int_format;
+ const char *float_format;
+
+ // trackbar options
+ BOOL use_trackbar_options;
+ float trackbar_min;
+ float trackbar_max;
+ float trackbar_increments;
+};
+
+
+struct _datamap
+{
+ int entry_count;
+ datamap_entry entries[256]; // 256 options entries seems enough for now...
+};
+
+typedef void (*datamap_default_callback)(datamap *map, HWND control, windows_options *opts, datamap_entry *entry, const char *option_name);
+
+
+
+//============================================================
+// PROTOTYPES
+//============================================================
+
+static datamap_entry *find_entry(datamap *map, int dlgitem);
+static control_type get_control_type(HWND control);
+static int control_operation(datamap *map, HWND dialog, windows_options *opts,
+ datamap_entry *entry, datamap_callback_type callback_type);
+static void read_control(datamap *map, HWND control, windows_options *opts,
+ datamap_entry *entry, const char *option_name);
+static void populate_control(datamap *map, HWND control, windows_options *opts,
+ datamap_entry *entry, const char *option_name);
+static char *tztrim(float float_value);
+
+
+//============================================================
+// datamap_create
+//============================================================
+
+datamap *datamap_create(void)
+{
+ datamap *map = (datamap *)malloc(sizeof(*map));
+
+ if (!map)
+ return NULL;
+
+ map->entry_count = 0;
+ return map;
+}
+
+
+
+//============================================================
+// datamap_free
+//============================================================
+
+void datamap_free(datamap *map)
+{
+ free(map);
+}
+
+
+
+//============================================================
+// datamap_add
+//============================================================
+
+void datamap_add(datamap *map, int dlgitem, datamap_entry_type type, const char *option_name)
+{
+ // sanity check for too many entries
+ assert(map->entry_count < ARRAY_LENGTH(map->entries));
+
+ // add entry to the datamap
+ memset(&map->entries[map->entry_count], 0, sizeof(map->entries[map->entry_count]));
+ map->entries[map->entry_count].dlgitem = dlgitem;
+ map->entries[map->entry_count].type = type;
+ map->entries[map->entry_count].option_name = option_name;
+ map->entry_count++;
+}
+
+
+
+//============================================================
+// datamap_set_callback
+//============================================================
+
+void datamap_set_callback(datamap *map, int dlgitem, datamap_callback_type callback_type, datamap_callback callback)
+{
+ datamap_entry *entry;
+
+ assert(callback_type >= 0);
+ assert(callback_type < DCT_COUNT);
+
+ entry = find_entry(map, dlgitem);
+ entry->callbacks[callback_type] = callback;
+}
+
+
+
+//============================================================
+// datamap_set_option_name_callback
+//============================================================
+
+void datamap_set_option_name_callback(datamap *map, int dlgitem, get_option_name_callback get_option_name)
+{
+ datamap_entry *entry;
+ entry = find_entry(map, dlgitem);
+ entry->get_option_name = get_option_name;
+}
+
+
+
+//============================================================
+// datamap_set_trackbar_range
+//============================================================
+
+void datamap_set_trackbar_range(datamap *map, int dlgitem, float min, float max, float increments)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ entry->use_trackbar_options = TRUE;
+ entry->trackbar_min = min;
+ entry->trackbar_max = max;
+ entry->trackbar_increments = increments;
+}
+
+
+
+//============================================================
+// datamap_set_int_format
+//============================================================
+
+void datamap_set_int_format(datamap *map, int dlgitem, const char *format)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ entry->int_format = format;
+}
+
+
+
+//============================================================
+// datamap_set_float_format
+//============================================================
+
+void datamap_set_float_format(datamap *map, int dlgitem, const char *format)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ entry->float_format = format;
+}
+
+
+
+//============================================================
+// datamap_read_control
+//============================================================
+
+BOOL datamap_read_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ return control_operation(map, dialog, &opts, entry, DCT_READ_CONTROL);
+}
+
+
+
+//============================================================
+// datamap_read_all_controls
+//============================================================
+
+void datamap_read_all_controls(datamap *map, HWND dialog, windows_options &opts)
+{
+ for (int i = 0; i < map->entry_count; i++)
+ control_operation(map, dialog, &opts, &map->entries[i], DCT_READ_CONTROL);
+}
+
+
+
+//============================================================
+// datamap_populate_control
+//============================================================
+
+void datamap_populate_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ control_operation(map, dialog, &opts, entry, DCT_POPULATE_CONTROL);
+}
+
+
+
+//============================================================
+// datamap_populate_all_controls
+//============================================================
+
+void datamap_populate_all_controls(datamap *map, HWND dialog, windows_options &opts)
+{
+ for (int i = 0; i < map->entry_count; i++)
+ control_operation(map, dialog, &opts, &map->entries[i], DCT_POPULATE_CONTROL);
+}
+
+
+
+//============================================================
+// datamap_update_control
+//============================================================
+
+void datamap_update_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem)
+{
+ datamap_entry *entry = find_entry(map, dlgitem);
+ control_operation(map, dialog, &opts, entry, DCT_UPDATE_STATUS);
+}
+
+
+
+//============================================================
+// datamap_update_all_controls
+//============================================================
+
+void datamap_update_all_controls(datamap *map, HWND dialog, windows_options *opts)
+{
+ for (int i = 0; i < map->entry_count; i++)
+ control_operation(map, dialog, opts, &map->entries[i], DCT_UPDATE_STATUS);
+}
+
+
+
+//============================================================
+// find_entry
+//============================================================
+
+static datamap_entry *find_entry(datamap *map, int dlgitem)
+{
+ for (int i = 0; i < map->entry_count; i++)
+ {
+ if (map->entries[i].dlgitem == dlgitem)
+ return &map->entries[i];
+ }
+
+ // should not reach here
+ assert(FALSE);
+ return NULL;
+}
+
+
+
+//============================================================
+// get_control_type
+//============================================================
+
+static control_type get_control_type(HWND control)
+{
+ control_type type;
+ TCHAR class_name[256];
+
+ GetClassName(control, class_name, ARRAY_LENGTH(class_name));
+ if (!_tcscmp(class_name, WC_BUTTON))
+ type = CT_BUTTON;
+ else if (!_tcscmp(class_name, WC_STATIC))
+ type = CT_STATIC;
+ else if (!_tcscmp(class_name, WC_EDIT))
+ type = CT_EDIT;
+ else if (!_tcscmp(class_name, WC_COMBOBOX))
+ type = CT_COMBOBOX;
+ else if (!_tcscmp(class_name, TRACKBAR_CLASS))
+ type = CT_TRACKBAR;
+ else if (!_tcscmp(class_name, WC_LISTVIEW))
+ type = CT_LISTVIEW;
+ else
+ type = CT_UNKNOWN;
+
+ assert(type != CT_UNKNOWN);
+ return type;
+}
+
+
+
+//============================================================
+// is_control_displayonly
+//============================================================
+
+static BOOL is_control_displayonly(HWND control)
+{
+ BOOL displayonly = 0;
+ switch(get_control_type(control))
+ {
+ case CT_STATIC:
+ displayonly = TRUE;
+ break;
+
+ case CT_EDIT:
+ displayonly = (GetWindowLong(control, GWL_STYLE) & ES_READONLY) ? TRUE : FALSE;
+ break;
+
+ default:
+ displayonly = FALSE;
+ break;
+ }
+
+ if (!IsWindowEnabled(control))
+ displayonly = TRUE;
+ return displayonly;
+}
+
+
+
+//============================================================
+// broadcast_changes
+//============================================================
+
+static void broadcast_changes(datamap *map, HWND dialog, windows_options *opts, datamap_entry *entry, const char *option_name)
+{
+ HWND other_control;
+ const char *that_option_name;
+ int i;
+
+ for (i = 0; i < map->entry_count; i++)
+ {
+ // search for an entry with the same option_name, but is not the exact
+ // same entry
+ that_option_name = map->entries[i].option_name;
+ if (map->entries[i].option_name && (&map->entries[i] != entry) && !strcmp(that_option_name, option_name))
+ {
+ // we've found a control sharing the same option; populate it
+ other_control = GetDlgItem(dialog, map->entries[i].dlgitem);
+ if (other_control != NULL)
+ populate_control(map, other_control, opts, &map->entries[i], that_option_name);
+ }
+ }
+}
+
+
+
+//============================================================
+// control_operation
+//============================================================
+
+static int control_operation(datamap *map, HWND dialog, windows_options *opts,
+ datamap_entry *entry, datamap_callback_type callback_type)
+{
+ static const datamap_default_callback default_callbacks[DCT_COUNT] =
+ {
+ read_control,
+ populate_control,
+ NULL
+ };
+ HWND control;
+ int result = 0;
+ const char *option_name;
+ char option_name_buffer[64];
+ char option_value[1024] = {0, };
+
+ control = GetDlgItem(dialog, entry->dlgitem);
+ if (control != NULL)
+ {
+ // don't do anything if we're reading from a display-only control
+ if ((callback_type != DCT_READ_CONTROL) || !is_control_displayonly(control))
+ {
+ // figure out the option_name
+ if (entry->get_option_name != NULL)
+ {
+ option_name_buffer[0] = '\0';
+ entry->get_option_name(map, dialog, control, option_name_buffer, ARRAY_LENGTH(option_name_buffer));
+ option_name = option_name_buffer;
+ }
+ else
+ {
+ option_name = entry->option_name;
+ }
+
+ // if reading, get the option value, solely for the purposes of comparison
+ if ((callback_type == DCT_READ_CONTROL) && (option_name != NULL))
+ snprintf(option_value, ARRAY_LENGTH(option_value), "%s", opts->value(option_name));
+
+ if (entry->callbacks[callback_type] != NULL)
+ {
+ // use custom callback
+ result = entry->callbacks[callback_type](map, dialog, control, opts, option_name);
+ }
+ else if (default_callbacks[callback_type] && (option_name != NULL))
+ {
+ // use default callback
+ default_callbacks[callback_type](map, control, opts, entry, option_name);
+ }
+
+ // the result is dependent on the type of control
+ switch(callback_type)
+ {
+ case DCT_READ_CONTROL:
+ // For callbacks that returned TRUE, do not broadcast_changes.
+ if (!result) {
+ // do a check to see if the control changed
+ result = (option_name != NULL) && (strcmp(option_value, opts->value(option_name)) != 0);
+ if (result)
+ {
+ // the value has changed; we may need to broadcast the change
+ broadcast_changes(map, dialog, opts, entry, option_name);
+ }
+ }
+ break;
+
+ default:
+ // do nothing
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+
+
+//============================================================
+// trackbar_value_from_position
+//============================================================
+
+static float trackbar_value_from_position(datamap_entry *entry, int position)
+{
+ float position_f = position;
+
+ if (entry->use_trackbar_options)
+ {
+ position_f = (position_f * entry->trackbar_increments) + entry->trackbar_min;
+ }
+ return position_f;
+}
+
+
+
+//============================================================
+// trackbar_position_from_value
+//============================================================
+
+static int trackbar_position_from_value(datamap_entry *entry, float value)
+{
+ if (entry->use_trackbar_options)
+ {
+ value = floor((value - entry->trackbar_min) / entry->trackbar_increments + 0.5);
+ }
+ return (int) value;
+}
+
+
+
+//============================================================
+// read_control
+//============================================================
+
+static void read_control(datamap *map, HWND control, windows_options *opts, datamap_entry *entry, const char *option_name)
+{
+ BOOL bool_value = 0;
+ int int_value = 0;
+ float float_value = 0;
+ const char *string_value;
+ int selected_index = 0;
+ int trackbar_pos = 0;
+ std::string error;
+ // use default read value behavior
+ switch(get_control_type(control))
+ {
+ case CT_BUTTON:
+ assert(entry->type == DM_BOOL);
+ bool_value = Button_GetCheck(control);
+ opts->set_value(option_name, bool_value, OPTION_PRIORITY_CMDLINE,error);
+ break;
+
+ case CT_COMBOBOX:
+ selected_index = ComboBox_GetCurSel(control);
+ if (selected_index >= 0)
+ {
+ switch(entry->type)
+ {
+ case DM_INT:
+ int_value = (int) ComboBox_GetItemData(control, selected_index);
+ opts->set_value(option_name, int_value, OPTION_PRIORITY_CMDLINE,error);
+ break;
+
+ case DM_STRING:
+ string_value = (const char *) ComboBox_GetItemData(control, selected_index);
+ opts->set_value(option_name, string_value ? string_value : "", OPTION_PRIORITY_CMDLINE,error);
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case CT_TRACKBAR:
+ trackbar_pos = SendMessage(control, TBM_GETPOS, 0, 0);
+ float_value = trackbar_value_from_position(entry, trackbar_pos);
+ switch(entry->type)
+ {
+ case DM_INT:
+ int_value = (int) float_value;
+ if (int_value != opts->int_value(option_name)) {
+ opts->set_value(option_name, int_value, OPTION_PRIORITY_CMDLINE,error);
+ }
+ break;
+
+ case DM_FLOAT:
+ // Use tztrim(float_value) or we get trailing zero's that break options_equal().
+ if (float_value != opts->float_value(option_name)) {
+ opts->set_value(option_name, tztrim(float_value), OPTION_PRIORITY_CMDLINE,error);
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case CT_EDIT:
+ // NYI
+ break;
+
+ case CT_STATIC:
+ case CT_LISTVIEW:
+ case CT_UNKNOWN:
+ // non applicable
+ break;
+ }
+}
+
+
+
+//============================================================
+// populate_control
+//============================================================
+
+static void populate_control(datamap *map, HWND control, windows_options *opts, datamap_entry *entry, const char *option_name)
+{
+ int i = 0;
+ BOOL bool_value = 0;
+ int int_value = 0;
+ float float_value = 0;
+ const char *string_value;
+ const char *item_string;
+ int selected_index = 0;
+ char buffer[128];
+ int trackbar_range = 0;
+ int trackbar_pos = 0;
+ double trackbar_range_d = 0;
+
+ // use default populate control value
+ switch(get_control_type(control))
+ {
+ case CT_BUTTON:
+ assert(entry->type == DM_BOOL);
+ bool_value = opts->bool_value(option_name);
+ Button_SetCheck(control, bool_value);
+ break;
+
+ case CT_EDIT:
+ case CT_STATIC:
+ switch(entry->type)
+ {
+ case DM_STRING:
+ string_value = opts->value(option_name);
+ break;
+
+ case DM_INT:
+ int_value = opts->int_value(option_name);
+ if (entry->int_format != NULL)
+ snprintf(buffer, ARRAY_LENGTH(buffer), entry->int_format, int_value);
+ else
+ snprintf(buffer, ARRAY_LENGTH(buffer), "%d", int_value);
+ string_value = buffer;
+ break;
+
+ case DM_FLOAT:
+ float_value = opts->float_value(option_name);
+ if (entry->float_format != NULL)
+ snprintf(buffer, ARRAY_LENGTH(buffer), entry->float_format, float_value);
+ else
+ snprintf(buffer, ARRAY_LENGTH(buffer), "%f", float_value);
+ string_value = buffer;
+ break;
+
+ default:
+ string_value = "";
+ break;
+ }
+ if (string_value == NULL)
+ string_value = "";
+ win_set_window_text_utf8(control, string_value);
+ break;
+
+ case CT_COMBOBOX:
+ selected_index = 0;
+ switch(entry->type)
+ {
+ case DM_INT:
+ int_value = opts->int_value(option_name);
+ for (i = 0; i < ComboBox_GetCount(control); i++)
+ {
+ if (int_value == (int) ComboBox_GetItemData(control, i))
+ {
+ selected_index = i;
+ break;
+ }
+ }
+ break;
+
+ case DM_STRING:
+ string_value = opts->value(option_name);
+ for (i = 0; i < ComboBox_GetCount(control); i++)
+ {
+ item_string = (const char *) ComboBox_GetItemData(control, i);
+ if (!core_stricmp(string_value, item_string ? item_string : ""))
+ {
+ selected_index = i;
+ break;
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ (void)ComboBox_SetCurSel(control, selected_index);
+ break;
+
+ case CT_TRACKBAR:
+ // do we need to set the trackbar options?
+/* if (!entry->use_trackbar_options)
+ {
+ switch(options_get_range_type(opts, option_name))
+ {
+ case OPTION_RANGE_NONE:
+ // do nothing
+ break;
+
+ case OPTION_RANGE_INT:
+ options_get_range_int(opts, option_name, &minval_int, &maxval_int);
+ entry->use_trackbar_options = TRUE;
+ entry->trackbar_min = minval_int;
+ entry->trackbar_max = maxval_int;
+ entry->trackbar_increments = 1;
+ break;
+
+ case OPTION_RANGE_FLOAT:
+ options_get_range_float(opts, option_name, &minval_float, &maxval_float);
+ entry->use_trackbar_options = TRUE;
+ entry->trackbar_min = minval_float;
+ entry->trackbar_max = maxval_float;
+ entry->trackbar_increments = (float)0.05;
+ break;
+ }
+ }
+ */
+
+ // do we specify default options for this control? if so, we need to specify
+ // the range
+ if (entry->use_trackbar_options)
+ {
+ trackbar_range_d = floor(((entry->trackbar_max - entry->trackbar_min)
+ / entry->trackbar_increments) + 0.5);
+ trackbar_range = (int) trackbar_range_d;
+ SendMessage(control, TBM_SETRANGEMIN, (WPARAM) FALSE, (LPARAM) 0);
+ SendMessage(control, TBM_SETRANGEMAX, (WPARAM) FALSE, (LPARAM) trackbar_range);
+ }
+
+ switch(entry->type)
+ {
+ case DM_INT:
+ int_value = opts->int_value(option_name);
+ trackbar_pos = trackbar_position_from_value(entry, int_value);
+ break;
+
+ case DM_FLOAT:
+ float_value = opts->float_value(option_name);
+ trackbar_pos = trackbar_position_from_value(entry, float_value);
+ break;
+
+ default:
+ trackbar_pos = 0;
+ break;
+ }
+ SendMessage(control, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) trackbar_pos);
+ break;
+
+ case CT_LISTVIEW:
+ case CT_UNKNOWN:
+ // non applicable
+ break;
+ }
+}
+
+// Return a string from a float value with trailing zeros removed.
+static char *tztrim(float float_value)
+{
+ static char tz_string[20];
+ char float_string[20];
+ char *ptr;
+ int i = 0;
+
+ sprintf(float_string, "%f", float_value);
+
+ ptr = float_string;
+
+ // Copy before the '.'
+ while (*ptr && *ptr != '.') {
+ tz_string[i++] = *ptr++;
+ }
+ // add the '.' and the next digit
+ if (*ptr == '.') {
+ tz_string[i++] = *ptr++;
+ tz_string[i++] = *ptr++;
+ }
+ // Keep copying until we hit a '0'
+ while (*ptr && *ptr != '0') {
+ tz_string[i++] = *ptr++;
+ }
+ // Null terminate
+ tz_string[i] = '\0';
+ return tz_string;
+}
+
diff --git a/docs/release/src/osd/winui/datamap.h b/docs/release/src/osd/winui/datamap.h
new file mode 100644
index 00000000000..045ae1245c4
--- /dev/null
+++ b/docs/release/src/osd/winui/datamap.h
@@ -0,0 +1,73 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+//============================================================
+//
+// datamap.c - Win32 dialog and options bridge code
+//
+//============================================================
+
+#ifndef _DATAMAP_H_
+#define _DATAMAP_H_
+
+#include "emu.h"
+
+
+//============================================================
+// TYPE DEFINITIONS
+//============================================================
+
+enum _datamap_entry_type
+{
+ DM_NONE = 0,
+ DM_BOOL,
+ DM_INT,
+ DM_FLOAT,
+ DM_STRING
+};
+typedef enum _datamap_entry_type datamap_entry_type;
+
+
+enum _datamap_callback_type
+{
+ DCT_READ_CONTROL,
+ DCT_POPULATE_CONTROL,
+ DCT_UPDATE_STATUS,
+
+ DCT_COUNT
+};
+
+typedef enum _datamap_callback_type datamap_callback_type;
+
+
+typedef struct _datamap datamap;
+// MSH - Callback can now return TRUE, signifying that changes have been made, but should NOT be broadcast.
+typedef BOOL (*datamap_callback)(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
+typedef void (*get_option_name_callback)(datamap *map, HWND dialog, HWND control, char *buffer, size_t buffer_size);
+
+
+//============================================================
+// PROTOTYPES
+//============================================================
+
+// datamap creation and disposal
+datamap *datamap_create(void);
+void datamap_free(datamap *map);
+
+// datamap setup
+void datamap_add(datamap *map, int dlgitem, datamap_entry_type type, const char *option_name);
+void datamap_set_callback(datamap *map, int dlgitem, datamap_callback_type callback_type, datamap_callback callback);
+void datamap_set_option_name_callback(datamap *map, int dlgitem, get_option_name_callback get_option_name);
+void datamap_set_trackbar_range(datamap *map, int dlgitem, float min, float max, float increments);
+void datamap_set_int_format(datamap *map, int dlgitem, const char *format);
+void datamap_set_float_format(datamap *map, int dlgitem, const char *format);
+
+// datamap operations
+BOOL datamap_read_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem);
+void datamap_read_all_controls(datamap *map, HWND dialog, windows_options &opts);
+void datamap_populate_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem);
+void datamap_populate_all_controls(datamap *map, HWND dialog, windows_options &opts);
+void datamap_update_control(datamap *map, HWND dialog, windows_options &opts, int dlgitem);
+void datamap_update_all_controls(datamap *map, HWND dialog, windows_options *opts);
+
+#endif // _DATAMAP_H_
diff --git a/docs/release/src/osd/winui/dialogs.cpp b/docs/release/src/osd/winui/dialogs.cpp
new file mode 100644
index 00000000000..d39fd6c7656
--- /dev/null
+++ b/docs/release/src/osd/winui/dialogs.cpp
@@ -0,0 +1,864 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ dialogs.c
+
+ Dialog box procedures go here
+
+***************************************************************************/
+
+
+#ifdef _MSC_VER
+#ifndef NONAMELESSUNION
+#define NONAMELESSUNION
+#endif
+#endif
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+#include <commdlg.h>
+
+// standard C headers
+#include <string.h>
+#include <tchar.h>
+#include <stdlib.h>
+#include <assert.h>
+
+// MAMEUI headers
+#include "bitmask.h"
+#include "treeview.h"
+#include "resource.h"
+#include "mui_opts.h"
+#include "help.h"
+#include "winui.h"
+#include "properties.h" // For GetHelpIDs
+
+// MAME headers
+#include "strconv.h"
+#include "winutf8.h"
+#include "drivenum.h"
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+
+static std::string g_FilterText;
+
+#define NUM_EXCLUSIONS 12
+
+/* Pairs of filters that exclude each other */
+static DWORD filterExclusion[NUM_EXCLUSIONS] =
+{
+ IDC_FILTER_CLONES, IDC_FILTER_ORIGINALS,
+ IDC_FILTER_NONWORKING, IDC_FILTER_WORKING,
+ IDC_FILTER_UNAVAILABLE, IDC_FILTER_AVAILABLE,
+ IDC_FILTER_RASTER, IDC_FILTER_VECTOR,
+ IDC_FILTER_HORIZONTAL, IDC_FILTER_VERTICAL,
+ IDC_FILTER_ARCADE, IDC_FILTER_MESS,
+};
+
+static void DisableFilterControls(HWND hWnd, LPCFOLDERDATA lpFilterRecord, LPCFILTER_ITEM lpFilterItem, DWORD dwFlags);
+static void EnableFilterExclusions(HWND hWnd, DWORD dwCtrlID);
+static DWORD ValidateFilters(LPCFOLDERDATA lpFilterRecord, DWORD dwFlags);
+static void OnHScroll(HWND hWnd, HWND hwndCtl, UINT code, int pos);
+
+/***************************************************************************/
+
+const char * GetFilterText(void)
+{
+ return g_FilterText.c_str();
+}
+
+INT_PTR CALLBACK ResetDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ BOOL resetFilters = FALSE;
+ BOOL resetGames = FALSE;
+ BOOL resetUI = FALSE;
+ BOOL resetDefaults = FALSE;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ return TRUE;
+
+ case WM_HELP:
+ /* User clicked the ? from the upper right on a control */
+ HelpFunction((HWND)((LPHELPINFO)lParam)->hItemHandle, MAMEUICONTEXTHELP, HH_TP_HELP_WM_HELP, GetHelpIDs());
+ break;
+
+ case WM_CONTEXTMENU:
+ HelpFunction((HWND)wParam, MAMEUICONTEXTHELP, HH_TP_HELP_CONTEXTMENU, GetHelpIDs());
+
+ break;
+
+ case WM_COMMAND :
+ switch (GET_WM_COMMAND_ID(wParam, lParam))
+ {
+ case IDOK :
+ resetFilters = Button_GetCheck(GetDlgItem(hDlg, IDC_RESET_FILTERS));
+ resetGames = Button_GetCheck(GetDlgItem(hDlg, IDC_RESET_GAMES));
+ resetDefaults = Button_GetCheck(GetDlgItem(hDlg, IDC_RESET_DEFAULT));
+ resetUI = Button_GetCheck(GetDlgItem(hDlg, IDC_RESET_UI));
+ if (resetFilters || resetGames || resetUI || resetDefaults)
+ {
+
+ TCHAR temp[400];
+ _tcscpy(temp, TEXT(MAMEUINAME));
+ _tcscat(temp, TEXT(" will now reset the following\n"));
+ _tcscat(temp, TEXT("to the default settings:\n\n"));
+
+ if (resetDefaults)
+ _tcscat(temp, TEXT("Global game options\n"));
+ if (resetGames)
+ _tcscat(temp, TEXT("Individual game options\n"));
+ if (resetFilters)
+ _tcscat(temp, TEXT("Custom folder filters\n"));
+ if (resetUI)
+ {
+ _tcscat(temp, TEXT("User interface settings\n\n"));
+ _tcscat(temp, TEXT("Resetting the User Interface options\n"));
+ _tcscat(temp, TEXT("requires exiting "));
+ _tcscat(temp, TEXT(MAMEUINAME));
+ _tcscat(temp, TEXT(".\n"));
+ }
+ _tcscat(temp, TEXT("\nDo you wish to continue?"));
+ if (MessageBox(hDlg, temp, TEXT("Restore Settings"), IDOK) == IDOK)
+ {
+ if (resetFilters)
+ ResetFilters();
+
+ if (resetGames)
+ ResetAllGameOptions();
+
+ if (resetDefaults)
+ ResetGameDefaults();
+
+ // This is the only case we need to exit and restart for.
+ if (resetUI)
+ {
+ ResetGUI();
+ EndDialog(hDlg, 1);
+ return TRUE;
+ } else {
+ EndDialog(hDlg, 0);
+ return TRUE;
+ }
+ } else {
+ // Give the user a chance to change what they want to reset.
+ break;
+ }
+ }
+ // Nothing was selected but OK, just fall through
+ case IDCANCEL :
+ EndDialog(hDlg, 0);
+ return TRUE;
+ }
+ break;
+ }
+ return 0;
+}
+
+INT_PTR CALLBACK InterfaceDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ CHOOSECOLOR cc;
+ COLORREF choice_colors[16];
+ TCHAR tmp[4];
+ int i = 0;
+ BOOL bRedrawList = FALSE;
+ int nCurSelection = 0;
+ int nHistoryTab = 0;
+ int nTabCount = 0;
+ int nPatternCount = 0;
+ int value = 0;
+ const char* snapname = NULL;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ Button_SetCheck(GetDlgItem(hDlg,IDC_START_GAME_CHECK),GetGameCheck());
+ Button_SetCheck(GetDlgItem(hDlg,IDC_JOY_GUI),GetJoyGUI());
+ Button_SetCheck(GetDlgItem(hDlg,IDC_KEY_GUI),GetKeyGUI());
+ Button_SetCheck(GetDlgItem(hDlg,IDC_HIDE_MOUSE),GetHideMouseOnStartup());
+
+ // Get the current value of the control
+ SendDlgItemMessage(hDlg, IDC_CYCLETIMESEC, TBM_SETRANGE, (WPARAM)FALSE, (LPARAM)MAKELONG(0, 60)); /* [0, 60] */
+ value = GetCycleScreenshot();
+ SendDlgItemMessage(hDlg,IDC_CYCLETIMESEC, TBM_SETPOS, TRUE, value);
+ _itot(value,tmp,10);
+ SendDlgItemMessage(hDlg,IDC_CYCLETIMESECTXT,WM_SETTEXT,0, (WPARAM)tmp);
+
+ Button_SetCheck(GetDlgItem(hDlg,IDC_STRETCH_SCREENSHOT_LARGER), GetStretchScreenShotLarger());
+ Button_SetCheck(GetDlgItem(hDlg,IDC_FILTER_INHERIT), GetFilterInherit());
+ Button_SetCheck(GetDlgItem(hDlg,IDC_NOOFFSET_CLONES), GetOffsetClones());
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Snapshot"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_SCREENSHOT);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Flyer"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_FLYER);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Cabinet"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_CABINET);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Marquee"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_MARQUEE);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Title"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_TITLE);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("Control Panel"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_CONTROL_PANEL);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("PCB"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_PCB);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("All"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_ALL);
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_HISTORY_TAB), TEXT("None"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_HISTORY_TAB), nTabCount++, TAB_NONE);
+ if (GetHistoryTab() < MAX_TAB_TYPES) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_HISTORY_TAB), GetHistoryTab());
+ }
+ else {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_HISTORY_TAB), GetHistoryTab()-TAB_SUBTRACT);
+ }
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_SNAPNAME), TEXT("Gamename"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount++, "%g");
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_SNAPNAME), TEXT("Gamename + Increment"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount++, "%g%i");
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_SNAPNAME), TEXT("Gamename/Gamename"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount++, "%g/%g");
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_SNAPNAME), TEXT("Gamename/Gamename + Increment"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount++, "%g/%g%i");
+ (void)ComboBox_AddString(GetDlgItem(hDlg, IDC_SNAPNAME), TEXT("Gamename/Increment"));
+ (void)ComboBox_SetItemData(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount, "%g/%i");
+ //Default to this setting
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), nPatternCount++);
+ snapname = GetSnapName();
+ if (core_stricmp(snapname,"%g" )==0) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), 0);
+ }
+ if (core_stricmp(snapname,"%g%i" )==0) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), 1);
+ }
+ if (core_stricmp(snapname,"%g/%g" )==0) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), 2);
+ }
+ if (core_stricmp(snapname,"%g/%g%i" )==0) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), 3);
+ }
+ if (core_stricmp(snapname,"%g/%i" )==0) {
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_SNAPNAME), 4);
+ }
+
+ SendDlgItemMessage(hDlg, IDC_SCREENSHOT_BORDERSIZE, TBM_SETRANGE,
+ (WPARAM)FALSE,
+ (LPARAM)MAKELONG(0, 100)); /* [0, 100] */
+ value = GetScreenshotBorderSize();
+ SendDlgItemMessage(hDlg,IDC_SCREENSHOT_BORDERSIZE, TBM_SETPOS, TRUE, value);
+ _itot(value,tmp,10);
+ SendDlgItemMessage(hDlg,IDC_SCREENSHOT_BORDERSIZETXT,WM_SETTEXT,0, (WPARAM)tmp);
+
+ //return TRUE;
+ break;
+
+ case WM_HELP:
+ /* User clicked the ? from the upper right on a control */
+ HelpFunction((HWND)((LPHELPINFO)lParam)->hItemHandle, MAMEUICONTEXTHELP, HH_TP_HELP_WM_HELP, GetHelpIDs());
+ break;
+
+ case WM_CONTEXTMENU:
+ HelpFunction((HWND)wParam, MAMEUICONTEXTHELP, HH_TP_HELP_CONTEXTMENU, GetHelpIDs());
+ break;
+ case WM_HSCROLL:
+ HANDLE_WM_HSCROLL(hDlg, wParam, lParam, OnHScroll);
+ break;
+ case WM_COMMAND :
+ switch (GET_WM_COMMAND_ID(wParam, lParam))
+ {
+ case IDC_SCREENSHOT_BORDERCOLOR:
+ {
+ for (i=0;i<16;i++)
+ choice_colors[i] = GetCustomColor(i);
+
+ cc.lStructSize = sizeof(CHOOSECOLOR);
+ cc.hwndOwner = hDlg;
+ cc.rgbResult = GetScreenshotBorderColor();
+ cc.lpCustColors = choice_colors;
+ cc.Flags = CC_ANYCOLOR | CC_RGBINIT | CC_SOLIDCOLOR;
+ if (!ChooseColor(&cc))
+ return TRUE;
+ for (i=0;i<16;i++)
+ SetCustomColor(i,choice_colors[i]);
+ SetScreenshotBorderColor(cc.rgbResult);
+ UpdateScreenShot();
+ return TRUE;
+ }
+ case IDOK :
+ {
+ BOOL checked = FALSE;
+
+ SetGameCheck(Button_GetCheck(GetDlgItem(hDlg, IDC_START_GAME_CHECK)));
+ SetJoyGUI(Button_GetCheck(GetDlgItem(hDlg, IDC_JOY_GUI)));
+ SetKeyGUI(Button_GetCheck(GetDlgItem(hDlg, IDC_KEY_GUI)));
+ SetHideMouseOnStartup(Button_GetCheck(GetDlgItem(hDlg,IDC_HIDE_MOUSE)));
+
+ if( Button_GetCheck(GetDlgItem(hDlg,IDC_RESET_PLAYCOUNT ) ) )
+ {
+ ResetPlayCount( -1 );
+ bRedrawList = TRUE;
+ }
+ if( Button_GetCheck(GetDlgItem(hDlg,IDC_RESET_PLAYTIME ) ) )
+ {
+ ResetPlayTime( -1 );
+ bRedrawList = TRUE;
+ }
+ value = SendDlgItemMessage(hDlg,IDC_CYCLETIMESEC, TBM_GETPOS, 0, 0);
+ if( GetCycleScreenshot() != value )
+ {
+ SetCycleScreenshot(value);
+ }
+ value = SendDlgItemMessage(hDlg,IDC_SCREENSHOT_BORDERSIZE, TBM_GETPOS, 0, 0);
+ if( GetScreenshotBorderSize() != value )
+ {
+ SetScreenshotBorderSize(value);
+ UpdateScreenShot();
+ }
+ value = SendDlgItemMessage(hDlg,IDC_HIGH_PRIORITY, TBM_GETPOS, 0, 0);
+ checked = Button_GetCheck(GetDlgItem(hDlg,IDC_STRETCH_SCREENSHOT_LARGER));
+ if (checked != GetStretchScreenShotLarger())
+ {
+ SetStretchScreenShotLarger(checked);
+ UpdateScreenShot();
+ }
+ checked = Button_GetCheck(GetDlgItem(hDlg,IDC_FILTER_INHERIT));
+ if (checked != GetFilterInherit())
+ {
+ SetFilterInherit(checked);
+ // LineUpIcons does just a ResetListView(), which is what we want here
+ PostMessage(GetMainWindow(),WM_COMMAND, MAKEWPARAM(ID_VIEW_LINEUPICONS, FALSE),(LPARAM)NULL);
+ }
+ checked = Button_GetCheck(GetDlgItem(hDlg,IDC_NOOFFSET_CLONES));
+ if (checked != GetOffsetClones())
+ {
+ SetOffsetClones(checked);
+ // LineUpIcons does just a ResetListView(), which is what we want here
+ PostMessage(GetMainWindow(),WM_COMMAND, MAKEWPARAM(ID_VIEW_LINEUPICONS, FALSE),(LPARAM)NULL);
+ }
+ nCurSelection = ComboBox_GetCurSel(GetDlgItem(hDlg,IDC_SNAPNAME));
+ if (nCurSelection != CB_ERR) {
+ const char* snapname_selection = (const char*)ComboBox_GetItemData(GetDlgItem(hDlg,IDC_SNAPNAME), nCurSelection);
+ if (snapname_selection) {
+ SetSnapName(snapname_selection);
+ }
+ }
+ EndDialog(hDlg, 0);
+
+ nCurSelection = ComboBox_GetCurSel(GetDlgItem(hDlg,IDC_HISTORY_TAB));
+ if (nCurSelection != CB_ERR)
+ nHistoryTab = ComboBox_GetItemData(GetDlgItem(hDlg,IDC_HISTORY_TAB), nCurSelection);
+ EndDialog(hDlg, 0);
+ if( GetHistoryTab() != nHistoryTab )
+ {
+ SetHistoryTab(nHistoryTab, TRUE);
+ ResizePickerControls(GetMainWindow());
+ UpdateScreenShot();
+ }
+ if( bRedrawList )
+ {
+ UpdateListView();
+ }
+ return TRUE;
+ }
+ case IDCANCEL :
+ EndDialog(hDlg, 0);
+ return TRUE;
+ }
+ break;
+ }
+ return 0;
+}
+
+INT_PTR CALLBACK FilterDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ static DWORD dwFilters;
+ static DWORD dwpFilters;
+ static LPCFOLDERDATA lpFilterRecord;
+ std::string strText;
+ int i = 0;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ {
+ LPTREEFOLDER folder = GetCurrentFolder();
+ LPTREEFOLDER lpParent = NULL;
+ LPCFILTER_ITEM g_lpFilterList = GetFilterList();
+
+ dwFilters = 0;
+
+ if (folder != NULL)
+ {
+ char tmp[80];
+
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_EDIT), g_FilterText.c_str());
+ Edit_SetSel(GetDlgItem(hDlg, IDC_FILTER_EDIT), 0, -1);
+ // Mask out non filter flags
+ dwFilters = folder->m_dwFlags & F_MASK;
+ // Display current folder name in dialog titlebar
+ snprintf(tmp,ARRAY_LENGTH(tmp),"Filters for %s Folder",folder->m_lpTitle);
+ win_set_window_text_utf8(hDlg, tmp);
+ if ( GetFilterInherit() )
+ {
+ BOOL bShowExplanation = FALSE;
+ lpParent = GetFolder( folder->m_nParent );
+ if( lpParent )
+ {
+ /* Check the Parent Filters and inherit them on child,
+ * No need to promote all games to parent folder, works as is */
+ dwpFilters = lpParent->m_dwFlags & F_MASK;
+ /*Check all possible Filters if inherited solely from parent, e.g. not being set explicitly on our folder*/
+ if( (dwpFilters & F_CLONES) && !(dwFilters & F_CLONES) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_CLONES));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_CLONES), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_NONWORKING) && !(dwFilters & F_NONWORKING) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_NONWORKING));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_NONWORKING), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_UNAVAILABLE) && !(dwFilters & F_UNAVAILABLE) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_UNAVAILABLE));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_UNAVAILABLE), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_VECTOR) && !(dwFilters & F_VECTOR) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_VECTOR));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_VECTOR), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_RASTER) && !(dwFilters & F_RASTER) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_RASTER));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_RASTER), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_ORIGINALS) && !(dwFilters & F_ORIGINALS) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_ORIGINALS));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_ORIGINALS), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_WORKING) && !(dwFilters & F_WORKING) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_WORKING));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_WORKING), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_AVAILABLE) && !(dwFilters & F_AVAILABLE) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_AVAILABLE));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_AVAILABLE), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_HORIZONTAL) && !(dwFilters & F_HORIZONTAL) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_HORIZONTAL));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_HORIZONTAL), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_VERTICAL) && !(dwFilters & F_VERTICAL) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_VERTICAL));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_VERTICAL), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_ARCADE) && !(dwFilters & F_ARCADE) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_ARCADE));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_ARCADE), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ if( (dwpFilters & F_MESS) && !(dwFilters & F_MESS) )
+ {
+ /*Add a Specifier to the Checkbox to show it was inherited from the parent*/
+ strText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_MESS));
+ strText.append(" (*)");
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_MESS), strText.c_str());
+ bShowExplanation = TRUE;
+ }
+ /*Do not or in the Values of the parent, so that the values of the folder still can be set*/
+ //dwFilters |= dwpFilters;
+ }
+ if( ! bShowExplanation )
+ {
+ ShowWindow(GetDlgItem(hDlg, IDC_INHERITED), FALSE );
+ }
+ }
+ else
+ {
+ ShowWindow(GetDlgItem(hDlg, IDC_INHERITED), FALSE );
+ }
+ // Find the matching filter record if it exists
+ lpFilterRecord = FindFilter(folder->m_nFolderId);
+
+ // initialize and disable appropriate controls
+ for (i = 0; g_lpFilterList[i].m_dwFilterType; i++)
+ {
+ DisableFilterControls(hDlg, lpFilterRecord, &g_lpFilterList[i], dwFilters);
+ }
+ }
+ SetFocus(GetDlgItem(hDlg, IDC_FILTER_EDIT));
+ return FALSE;
+ }
+ case WM_HELP:
+ // User clicked the ? from the upper right on a control
+ HelpFunction((HWND)((LPHELPINFO)lParam)->hItemHandle, MAMEUICONTEXTHELP,
+ HH_TP_HELP_WM_HELP, GetHelpIDs());
+ break;
+
+ case WM_CONTEXTMENU:
+ HelpFunction((HWND)wParam, MAMEUICONTEXTHELP, HH_TP_HELP_CONTEXTMENU, GetHelpIDs());
+ break;
+
+ case WM_COMMAND:
+ {
+ WORD wID = GET_WM_COMMAND_ID(wParam, lParam);
+ WORD wNotifyCode = GET_WM_COMMAND_CMD(wParam, lParam);
+ LPTREEFOLDER folder = GetCurrentFolder();
+ LPCFILTER_ITEM g_lpFilterList = GetFilterList();
+
+ switch (wID)
+ {
+ case IDOK:
+ dwFilters = 0;
+
+ g_FilterText = win_get_window_text_utf8(GetDlgItem(hDlg, IDC_FILTER_EDIT));
+
+ // see which buttons are checked
+ for (i = 0; g_lpFilterList[i].m_dwFilterType; i++)
+ {
+ if (Button_GetCheck(GetDlgItem(hDlg, g_lpFilterList[i].m_dwCtrlID)))
+ dwFilters |= g_lpFilterList[i].m_dwFilterType;
+ }
+
+ // Mask out invalid filters
+ dwFilters = ValidateFilters(lpFilterRecord, dwFilters);
+
+ // Keep non filter flags
+ folder->m_dwFlags &= ~F_MASK;
+
+ // put in the set filters
+ folder->m_dwFlags |= dwFilters;
+
+ EndDialog(hDlg, 1);
+ return TRUE;
+
+ case IDCANCEL:
+ EndDialog(hDlg, 0);
+ return TRUE;
+
+ default:
+ // Handle unchecking mutually exclusive filters
+ if (wNotifyCode == BN_CLICKED)
+ EnableFilterExclusions(hDlg, wID);
+ }
+ }
+ break;
+ }
+ return 0;
+}
+
+INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ {
+ HBITMAP hBmp;
+ hBmp = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_ABOUT),
+ IMAGE_BITMAP, 0, 0, LR_SHARED);
+ SendDlgItemMessage(hDlg, IDC_ABOUT, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBmp);
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_VERSION), GetVersionString());
+ }
+ return 1;
+
+ case WM_COMMAND:
+ EndDialog(hDlg, 0);
+ return 1;
+ }
+ return 0;
+}
+
+INT_PTR CALLBACK AddCustomFileDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ static LPTREEFOLDER default_selection = NULL;
+ static int driver_index = 0;
+ BOOL res = 0;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ {
+ TREEFOLDER **folders;
+ int num_folders = 0;
+ int i = 0;
+ TVINSERTSTRUCT tvis;
+ TVITEM tvi;
+ BOOL first_entry = TRUE;
+ HIMAGELIST treeview_icons = GetTreeViewIconList();
+
+ // current game passed in using DialogBoxParam()
+ driver_index = lParam;
+
+ (void)TreeView_SetImageList(GetDlgItem(hDlg,IDC_CUSTOM_TREE), treeview_icons, LVSIL_NORMAL);
+
+ GetFolders(&folders,&num_folders);
+
+ // should add "New..."
+
+ // insert custom folders into our tree view
+ for (i=0;i<num_folders;i++)
+ {
+ if (folders[i]->m_dwFlags & F_CUSTOM)
+ {
+ HTREEITEM hti;
+ int jj = 0;
+
+ if (folders[i]->m_nParent == -1)
+ {
+ memset(&tvi, '\0', sizeof(tvi));
+ tvis.hParent = TVI_ROOT;
+ tvis.hInsertAfter = TVI_SORT;
+ tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvi.pszText = folders[i]->m_lptTitle;
+ tvi.lParam = (LPARAM)folders[i];
+ tvi.iImage = GetTreeViewIconIndex(folders[i]->m_nIconId);
+ tvi.iSelectedImage = 0;
+#if !defined(NONAMELESSUNION)
+ tvis.item = tvi;
+#else
+ tvis.DUMMYUNIONNAME.item = tvi;
+#endif
+
+ hti = TreeView_InsertItem(GetDlgItem(hDlg,IDC_CUSTOM_TREE),&tvis);
+
+ /* look for children of this custom folder */
+ for (jj=0;jj<num_folders;jj++)
+ {
+ if (folders[jj]->m_nParent == i)
+ {
+ HTREEITEM hti_child;
+ tvis.hParent = hti;
+ tvis.hInsertAfter = TVI_SORT;
+ tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvi.pszText = folders[jj]->m_lptTitle;
+ tvi.lParam = (LPARAM)folders[jj];
+ tvi.iImage = GetTreeViewIconIndex(folders[jj]->m_nIconId);
+ tvi.iSelectedImage = 0;
+#if !defined(NONAMELESSUNION)
+ tvis.item = tvi;
+#else
+ tvis.DUMMYUNIONNAME.item = tvi;
+#endif
+ hti_child = TreeView_InsertItem(GetDlgItem(hDlg,IDC_CUSTOM_TREE),&tvis);
+ if (folders[jj] == default_selection)
+ res = TreeView_SelectItem(GetDlgItem(hDlg,IDC_CUSTOM_TREE),hti_child);
+ }
+ }
+
+ /*TreeView_Expand(GetDlgItem(hDlg,IDC_CUSTOM_TREE),hti,TVE_EXPAND);*/
+ if (first_entry || folders[i] == default_selection)
+ {
+ res = TreeView_SelectItem(GetDlgItem(hDlg,IDC_CUSTOM_TREE),hti);
+ first_entry = FALSE;
+ }
+ }
+ }
+ }
+
+ win_set_window_text_utf8(GetDlgItem(hDlg,IDC_CUSTOMFILE_GAME),
+ ModifyThe(driver_list::driver(driver_index).description));
+
+ res++;
+ return TRUE;
+ }
+ case WM_COMMAND:
+ switch (GET_WM_COMMAND_ID(wParam, lParam))
+ {
+ case IDOK:
+ {
+ TVITEM tvi;
+ tvi.hItem = TreeView_GetSelection(GetDlgItem(hDlg,IDC_CUSTOM_TREE));
+ tvi.mask = TVIF_PARAM;
+ if (TreeView_GetItem(GetDlgItem(hDlg,IDC_CUSTOM_TREE),&tvi) == TRUE)
+ {
+ /* should look for New... */
+
+ default_selection = (LPTREEFOLDER)tvi.lParam; /* start here next time */
+
+ AddToCustomFolder((LPTREEFOLDER)tvi.lParam,driver_index);
+ }
+
+ EndDialog(hDlg, 0);
+ return TRUE;
+ }
+ case IDCANCEL:
+ EndDialog(hDlg, 0);
+ return TRUE;
+
+ }
+ break;
+ }
+ return 0;
+}
+
+INT_PTR CALLBACK DirectXDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ HWND hEdit;
+
+ const char *directx_help = MAMEUINAME " requires DirectX version 9 or later.\r\n";
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ hEdit = GetDlgItem(hDlg, IDC_DIRECTX_HELP);
+ Edit_SetSel(hEdit, Edit_GetTextLength(hEdit), Edit_GetTextLength(hEdit));
+ Edit_ReplaceSel(hEdit, directx_help);
+ return 1;
+
+ case WM_COMMAND:
+ if (LOWORD(wParam) == IDB_WEB_PAGE)
+ ShellExecute(GetMainWindow(), NULL, TEXT("http://www.microsoft.com/directx"),
+ NULL, NULL, SW_SHOWNORMAL);
+
+ if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDB_WEB_PAGE)
+ EndDialog(hDlg, 0);
+ return 1;
+ }
+ return 0;
+}
+
+/***************************************************************************
+ private functions
+ ***************************************************************************/
+
+static void DisableFilterControls(HWND hWnd, LPCFOLDERDATA lpFilterRecord, LPCFILTER_ITEM lpFilterItem, DWORD dwFlags)
+{
+ HWND hWndCtrl = GetDlgItem(hWnd, lpFilterItem->m_dwCtrlID);
+ DWORD dwFilterType = lpFilterItem->m_dwFilterType;
+
+ /* Check the appropriate control */
+ if (dwFilterType & dwFlags)
+ Button_SetCheck(hWndCtrl, MF_CHECKED);
+
+ /* No special rules for this folder? */
+ if (!lpFilterRecord)
+ return;
+
+ /* If this is an excluded filter */
+ if (lpFilterRecord->m_dwUnset & dwFilterType)
+ {
+ /* uncheck it and disable the control */
+ Button_SetCheck(hWndCtrl, MF_UNCHECKED);
+ EnableWindow(hWndCtrl, FALSE);
+ }
+
+ /* If this is an implied filter, check it and disable the control */
+ if (lpFilterRecord->m_dwSet & dwFilterType)
+ {
+ Button_SetCheck(hWndCtrl, MF_CHECKED);
+ EnableWindow(hWndCtrl, FALSE);
+ }
+}
+
+// Handle disabling mutually exclusive controls
+static void EnableFilterExclusions(HWND hWnd, DWORD dwCtrlID)
+{
+ int i = 0;
+ DWORD id = 0;
+
+ for (i = 0; i < NUM_EXCLUSIONS; i++)
+ {
+ // is this control in the list?
+ if (filterExclusion[i] == dwCtrlID)
+ {
+ // found the control id
+ break;
+ }
+ }
+
+ // if the control was found
+ if (i < NUM_EXCLUSIONS)
+ {
+ // find the opposing control id
+ if (i % 2)
+ id = filterExclusion[i - 1];
+ else
+ id = filterExclusion[i + 1];
+
+ // Uncheck the other control
+ Button_SetCheck(GetDlgItem(hWnd, id), MF_UNCHECKED);
+ }
+}
+
+// Validate filter setting, mask out inappropriate filters for this folder
+static DWORD ValidateFilters(LPCFOLDERDATA lpFilterRecord, DWORD dwFlags)
+{
+ DWORD dwFilters = 0;
+
+ if (lpFilterRecord != (LPFOLDERDATA)0)
+ {
+ // Mask out implied and excluded filters
+ dwFilters = lpFilterRecord->m_dwSet | lpFilterRecord->m_dwUnset;
+ return dwFlags & ~dwFilters;
+ }
+
+ // No special cases - all filters apply
+ return dwFlags;
+}
+
+static void OnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos)
+{
+ int value = 0;
+ TCHAR tmp[4];
+ if (hwndCtl == GetDlgItem(hwnd, IDC_CYCLETIMESEC))
+ {
+ value = SendDlgItemMessage(hwnd,IDC_CYCLETIMESEC, TBM_GETPOS, 0, 0);
+ _itot(value,tmp,10);
+ SendDlgItemMessage(hwnd,IDC_CYCLETIMESECTXT,WM_SETTEXT,0, (WPARAM)tmp);
+ }
+ else
+ if (hwndCtl == GetDlgItem(hwnd, IDC_SCREENSHOT_BORDERSIZE))
+ {
+ value = SendDlgItemMessage(hwnd,IDC_SCREENSHOT_BORDERSIZE, TBM_GETPOS, 0, 0);
+ _itot(value,tmp,10);
+ SendDlgItemMessage(hwnd,IDC_SCREENSHOT_BORDERSIZETXT,WM_SETTEXT,0, (WPARAM)tmp);
+ }
+}
diff --git a/docs/release/src/osd/winui/dialogs.h b/docs/release/src/osd/winui/dialogs.h
new file mode 100644
index 00000000000..07bff2075e6
--- /dev/null
+++ b/docs/release/src/osd/winui/dialogs.h
@@ -0,0 +1,18 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef DIALOGS_H
+#define DIALOGS_H
+
+const char * GetFilterText(void);
+
+INT_PTR CALLBACK ResetDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK InterfaceDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK FilterDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK AddCustomFileDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK DirectXDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+
+#endif
+
diff --git a/docs/release/src/osd/winui/dijoystick.cpp b/docs/release/src/osd/winui/dijoystick.cpp
new file mode 100644
index 00000000000..1136c7f0179
--- /dev/null
+++ b/docs/release/src/osd/winui/dijoystick.cpp
@@ -0,0 +1,629 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/***************************************************************************
+
+ dijoystick.c
+
+ ***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+
+// standard C headers
+#include <stdio.h>
+#include <math.h>
+#include <tchar.h>
+
+// MAMEUI headers
+#include "winui.h"
+#include "directinput.h"
+#include "dijoystick.h"
+#include "mui_util.h" // For ErrorMsg
+#include "dxdecode.h" // for DirectXDecodeError
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+static int DIJoystick_init(void);
+static void DIJoystick_exit(void);
+static void DIJoystick_poll_joysticks(void);
+static int DIJoystick_is_joy_pressed(int joycode);
+static BOOL DIJoystick_Available(void);
+
+static BOOL CALLBACK DIJoystick_EnumDeviceProc(LPDIDEVICEINSTANCE pdidi, LPVOID pv);
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+const struct OSDJoystick DIJoystick =
+{
+ DIJoystick_init, /* init */
+ DIJoystick_exit, /* exit */
+ DIJoystick_is_joy_pressed, /* joy_pressed */
+ DIJoystick_poll_joysticks, /* poll_joysticks */
+ DIJoystick_Available, /* Available */
+};
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+#define MAX_PHYSICAL_JOYSTICKS 20
+#define MAX_AXES 20
+
+typedef struct
+{
+ GUID guid;
+ TCHAR *name;
+
+ int offset; /* offset in dijoystate */
+} axis_type;
+
+typedef struct
+{
+ BOOL use_joystick;
+
+ GUID guidDevice;
+ TCHAR *name;
+
+ BOOL is_light_gun;
+
+ LPDIRECTINPUTDEVICE2 did;
+
+ DWORD num_axes;
+ axis_type axes[MAX_AXES];
+
+ DWORD num_pov;
+ DWORD num_buttons;
+
+ DIJOYSTATE dijs;
+
+} joystick_type;
+
+struct tDIJoystick_private
+{
+ int use_count; /* the gui and game can both init/exit us, so keep track */
+ BOOL m_bCoinSlot;
+
+ DWORD num_joysticks;
+ joystick_type joysticks[MAX_PHYSICAL_JOYSTICKS]; /* actual joystick data! */
+};
+
+/* internal functions needing our declarations */
+static BOOL CALLBACK DIJoystick_EnumAxisObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef);
+static BOOL CALLBACK DIJoystick_EnumPOVObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef);
+static BOOL CALLBACK DIJoystick_EnumButtonObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef);
+static void ClearJoyState(DIJOYSTATE *pdijs);
+
+static void InitJoystick(joystick_type *joystick);
+static void ExitJoystick(joystick_type *joystick);
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+static struct tDIJoystick_private This;
+
+static const GUID guidNULL = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}};
+
+/***************************************************************************
+ External OSD functions
+ ***************************************************************************/
+/*
+ put here anything you need to do when the program is started. Return 0 if
+ initialization was successful, nonzero otherwise.
+*/
+static int DIJoystick_init(void)
+{
+ DWORD i = 0;
+ HRESULT hr;
+ LPDIRECTINPUT di = GetDirectInput();
+
+ This.use_count++;
+
+ This.num_joysticks = 0;
+
+ if (di == NULL)
+ {
+ ErrorMsg("DirectInput not initialized");
+ return 0;
+ }
+
+ /* enumerate for joystick devices */
+ hr = IDirectInput_EnumDevices(di, DIDEVTYPE_JOYSTICK,
+ (LPDIENUMDEVICESCALLBACK)DIJoystick_EnumDeviceProc,
+ NULL,
+ DIEDFL_ATTACHEDONLY );
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput EnumDevices() failed: %s", DirectXDecodeError(hr));
+ return 0;
+ }
+
+ /* create each joystick device, enumerate each joystick for axes, etc */
+ for (i = 0; i < This.num_joysticks; i++)
+ {
+ InitJoystick(&This.joysticks[i]);
+ }
+
+ /* Are there any joysticks attached? */
+ if (This.num_joysticks < 1)
+ {
+ /*ErrorMsg("DirectInput EnumDevices didn't find any joysticks");*/
+ return 0;
+ }
+
+ return 0;
+}
+
+/*
+ put here cleanup routines to be executed when the program is terminated.
+*/
+static void DIJoystick_exit(void)
+{
+ DWORD i = 0;
+
+ This.use_count--;
+
+ if (This.use_count > 0)
+ return;
+
+ for (i = 0; i < This.num_joysticks; i++)
+ ExitJoystick(&This.joysticks[i]);
+
+ This.num_joysticks = 0;
+}
+
+static void DIJoystick_poll_joysticks(void)
+{
+ HRESULT hr;
+ DWORD i = 0;
+
+ This.m_bCoinSlot = 0;
+
+ for (i = 0; i < This.num_joysticks; i++)
+ {
+ /* start by clearing the structure, then fill it in if possible */
+
+ ClearJoyState(&This.joysticks[i].dijs);
+
+ if (This.joysticks[i].did == NULL)
+ continue;
+
+ if (This.joysticks[i].use_joystick == FALSE)
+ continue;
+
+ hr = IDirectInputDevice2_Poll(This.joysticks[i].did);
+
+ hr = IDirectInputDevice2_GetDeviceState(This.joysticks[i].did,sizeof(DIJOYSTATE), &This.joysticks[i].dijs);
+ if (FAILED(hr))
+ {
+ if (hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED)
+ {
+ hr = IDirectInputDevice2_Acquire(This.joysticks[i].did);
+ }
+ continue;
+ }
+ }
+}
+
+/*
+ check if the DIJoystick is moved in the specified direction, defined in
+ osdepend.h. Return 0 if it is not pressed, nonzero otherwise.
+*/
+
+static int DIJoystick_is_joy_pressed(int joycode)
+{
+ int joy_num = 0;
+ int stick = 0;
+ int axis = 0;
+ int dir = 0;
+
+ DIJOYSTATE dijs;
+
+ int value = 0;
+ int dz = 60;
+
+ joy_num = GET_JOYCODE_JOY(joycode);
+
+ /* do we have as many sticks? */
+ if (joy_num == 0 || This.num_joysticks < joy_num)
+ return 0;
+ joy_num--;
+
+ if (This.joysticks[joy_num].use_joystick == FALSE)
+ return 0;
+
+ dijs = This.joysticks[joy_num].dijs;
+
+ stick = GET_JOYCODE_STICK(joycode);
+
+ if (stick == JOYCODE_STICK_BTN)
+ {
+ /* buttons */
+ int button;
+
+ button = GET_JOYCODE_BUTTON(joycode);
+ button--;
+
+ if (button >= This.joysticks[joy_num].num_buttons
+ || GET_JOYCODE_DIR(joycode) != JOYCODE_DIR_BTN)
+ return 0;
+
+ return dijs.rgbButtons[button] != 0;
+ }
+
+ if (stick == JOYCODE_STICK_POV)
+ {
+ /* POV */
+ int pov_value = 0;
+ int angle = 0;
+ int axis_value = 0;
+
+ int num_pov = GET_JOYCODE_BUTTON(joycode) / 4;
+ int code = GET_JOYCODE_BUTTON(joycode) % 4;
+ axis = code / 2;
+ dir = code % 2;
+
+ if (num_pov >= This.joysticks[joy_num].num_pov)
+ return 0;
+
+ pov_value = dijs.rgdwPOV[num_pov];
+ if (LOWORD(pov_value) == 0xffff)
+ return 0;
+
+ angle = (pov_value + 27000) % 36000;
+ angle = (36000 - angle) % 36000;
+ angle /= 100;
+
+ /* angle is now in degrees counterclockwise from x axis*/
+ if (axis == 1)
+ axis_value = 128 + (int)(127 * cos(2 * M_PI * angle / 360.0)); /* x */
+ else
+ axis_value = 128 + (int)(127 * sin(2 * M_PI * angle / 360.0)); /* y */
+
+ if (dir == 1)
+ return axis_value <= (128 - 128 * dz / 100);
+ else
+ return axis_value >= (128 + 128 * dz / 100);
+ }
+
+ /* sticks */
+
+ axis = GET_JOYCODE_AXIS(joycode);
+ dir = GET_JOYCODE_DIR(joycode);
+
+ if (axis == 0 || This.joysticks[joy_num].num_axes < axis)
+ return 0;
+ axis--;
+
+ value = *(int *)(((byte *)&dijs) + This.joysticks[joy_num].axes[axis].offset);
+
+ if (dir == JOYCODE_DIR_NEG)
+ return value <= (128 - 128 * dz / 100);
+ else
+ return value >= (128 + 128 * dz / 100);
+}
+
+static BOOL DIJoystick_Available(void)
+{
+ static BOOL bBeenHere = FALSE;
+ static BOOL bAvailable = FALSE;
+ HRESULT hr;
+ GUID guidDevice = guidNULL;
+ LPDIRECTINPUTDEVICE didTemp;
+ LPDIRECTINPUTDEVICE didJoystick;
+ LPDIRECTINPUT di = GetDirectInput();
+
+ if (di == NULL)
+ {
+ return FALSE;
+ }
+
+ if (bBeenHere == FALSE)
+ bBeenHere = TRUE;
+ else
+ return bAvailable;
+
+ /* enumerate for joystick devices */
+ hr = IDirectInput_EnumDevices(di, DIDEVTYPE_JOYSTICK, inputEnumDeviceProc, &guidDevice, DIEDFL_ATTACHEDONLY);
+ if (FAILED(hr))
+ {
+ return FALSE;
+ }
+
+ /* Are there any joysticks attached? */
+ if (IsEqualGUID(guidDevice, guidNULL))
+ {
+ return FALSE;
+ }
+
+ hr = IDirectInput_CreateDevice(di, guidDevice, &didTemp, NULL);
+ if (FAILED(hr))
+ {
+ return FALSE;
+ }
+
+ /* Determine if DX5 is available by a QI for a DX5 interface. */
+ hr = IDirectInputDevice_QueryInterface(didTemp, IID_IDirectInputDevice2, (void**)&didJoystick);
+ if (FAILED(hr))
+ {
+ bAvailable = FALSE;
+ }
+ else
+ {
+ bAvailable = TRUE;
+ IDirectInputDevice_Release(didJoystick);
+ }
+
+ /* dispose of the temp interface */
+ IDirectInputDevice_Release(didTemp);
+
+ return bAvailable;
+}
+
+int DIJoystick_GetNumPhysicalJoysticks()
+{
+ return This.num_joysticks;
+}
+
+TCHAR* DIJoystick_GetPhysicalJoystickName(int num_joystick)
+{
+ return This.joysticks[num_joystick].name;
+}
+
+int DIJoystick_GetNumPhysicalJoystickAxes(int num_joystick)
+{
+ return This.joysticks[num_joystick].num_axes;
+}
+
+TCHAR* DIJoystick_GetPhysicalJoystickAxisName(int num_joystick, int num_axis)
+{
+ return This.joysticks[num_joystick].axes[num_axis].name;
+}
+
+/***************************************************************************
+ Internal functions
+ ***************************************************************************/
+
+BOOL CALLBACK DIJoystick_EnumDeviceProc(LPDIDEVICEINSTANCE pdidi, LPVOID pv)
+{
+ TCHAR buffer[5000];
+
+ This.joysticks[This.num_joysticks].guidDevice = pdidi->guidInstance;
+
+ _stprintf(buffer, TEXT("%s (%s)"), pdidi->tszProductName, pdidi->tszInstanceName);
+ This.joysticks[This.num_joysticks].name = (TCHAR *)malloc((_tcslen(buffer) + 1) * sizeof(TCHAR));
+ _tcscpy(This.joysticks[This.num_joysticks].name, buffer);
+
+ This.num_joysticks++;
+
+ return DIENUM_CONTINUE;
+}
+
+static BOOL CALLBACK DIJoystick_EnumAxisObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef)
+{
+ joystick_type* joystick = (joystick_type*)pvRef;
+ DIPROPRANGE diprg;
+ HRESULT hr;
+
+ joystick->axes[joystick->num_axes].guid = lpddoi->guidType;
+
+ joystick->axes[joystick->num_axes].name = (TCHAR *)malloc((_tcslen(lpddoi->tszName) + 1) * sizeof(TCHAR));
+ _tcscpy(joystick->axes[joystick->num_axes].name, lpddoi->tszName);
+
+ joystick->axes[joystick->num_axes].offset = lpddoi->dwOfs;
+
+ /*ErrorMsg("got axis %s, offset %i",lpddoi->tszName, lpddoi->dwOfs);*/
+
+ diprg.diph.dwSize = sizeof(diprg);
+ diprg.diph.dwHeaderSize = sizeof(diprg.diph);
+ diprg.diph.dwObj = lpddoi->dwOfs;
+ diprg.diph.dwHow = DIPH_BYOFFSET;
+ diprg.lMin = 0;
+ diprg.lMax = 255;
+
+ hr = IDirectInputDevice2_SetProperty(joystick->did, DIPROP_RANGE, &diprg.diph);
+ if (FAILED(hr)) /* if this fails, don't use this axis */
+ {
+ free(joystick->axes[joystick->num_axes].name);
+ joystick->axes[joystick->num_axes].name = NULL;
+ return DIENUM_CONTINUE;
+ }
+
+#ifdef JOY_DEBUG
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput SetProperty() joystick axis %s failed - %s\n",
+ joystick->axes[joystick->num_axes].name, DirectXDecodeError(hr));
+ }
+#endif
+
+ /* Set axis dead zone to 0; we need accurate #'s for analog joystick reading. */
+
+ hr = SetDIDwordProperty(joystick->did, DIPROP_DEADZONE, lpddoi->dwOfs, DIPH_BYOFFSET, 0);
+
+#ifdef JOY_DEBUG
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput SetProperty() joystick axis %s dead zone failed - %s\n",
+ joystick->axes[joystick->num_axes].name, DirectXDecodeError(hr));
+ }
+#endif
+
+ joystick->num_axes++;
+
+ return DIENUM_CONTINUE;
+}
+
+static BOOL CALLBACK DIJoystick_EnumPOVObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef)
+{
+ joystick_type* joystick = (joystick_type*)pvRef;
+ joystick->num_pov++;
+
+ return DIENUM_CONTINUE;
+}
+
+static BOOL CALLBACK DIJoystick_EnumButtonObjectsProc(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef)
+{
+ joystick_type* joystick = (joystick_type*)pvRef;
+ joystick->num_buttons++;
+
+ return DIENUM_CONTINUE;
+}
+
+static void ClearJoyState(DIJOYSTATE *pdijs)
+{
+ memset(pdijs, 0, sizeof(DIJOYSTATE));
+ pdijs->lX = 128;
+ pdijs->lY = 128;
+ pdijs->lZ = 128;
+ pdijs->lRx = 128;
+ pdijs->lRy = 128;
+ pdijs->lRz = 128;
+ pdijs->rglSlider[0] = 128;
+ pdijs->rglSlider[1] = 128;
+ pdijs->rgdwPOV[0] = -1;
+ pdijs->rgdwPOV[1] = -1;
+ pdijs->rgdwPOV[2] = -1;
+ pdijs->rgdwPOV[3] = -1;
+}
+
+static void InitJoystick(joystick_type *joystick)
+{
+ LPDIRECTINPUTDEVICE didTemp;
+ HRESULT hr;
+ LPDIRECTINPUT di = GetDirectInput();
+
+ joystick->use_joystick = FALSE;
+
+ joystick->did = NULL;
+ joystick->num_axes = 0;
+
+ joystick->is_light_gun = (_tcscmp(joystick->name, TEXT("ACT LABS GS (ACT LABS GS)")) == 0);
+
+ /* get a did1 interface first... */
+ hr = IDirectInput_CreateDevice(di, joystick->guidDevice, &didTemp, NULL);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput CreateDevice() joystick failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+
+ /* get a did2 interface to work with polling (most) joysticks */
+ hr = IDirectInputDevice_QueryInterface(didTemp, IID_IDirectInputDevice2, (void**)&joystick->did);
+
+ /* dispose of the temp interface */
+ IDirectInputDevice_Release(didTemp);
+
+ /* check result of getting the did2 */
+ if (FAILED(hr))
+ {
+ /* no error message because this happens in dx3 */
+ /* ErrorMsg("DirectInput QueryInterface joystick failed\n"); */
+ joystick->did = NULL;
+ return;
+ }
+
+
+ hr = IDirectInputDevice2_SetCooperativeLevel(joystick->did, GetMainWindow(), DISCL_NONEXCLUSIVE | DISCL_BACKGROUND);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput SetCooperativeLevel() joystick failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+
+
+ hr = IDirectInputDevice2_SetDataFormat(joystick->did, &c_dfDIJoystick);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput SetDataFormat() joystick failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+
+ if (joystick->is_light_gun)
+ {
+ /* setup light gun to report raw screen pixel data */
+
+ DIPROPDWORD diprop;
+ memset(&diprop, 0, sizeof(diprop));
+ diprop.diph.dwSize = sizeof(DIPROPDWORD);
+ diprop.diph.dwHeaderSize = sizeof(DIPROPHEADER);
+ diprop.diph.dwObj = 0;
+ diprop.diph.dwHow = DIPH_DEVICE;
+ diprop.dwData = DIPROPCALIBRATIONMODE_RAW;
+
+ IDirectInputDevice2_SetProperty(joystick->did, DIPROP_CALIBRATIONMODE, &diprop.diph);
+ }
+ else
+ {
+ /* enumerate our axes */
+ hr = IDirectInputDevice_EnumObjects(joystick->did, DIJoystick_EnumAxisObjectsProc, joystick, DIDFT_AXIS);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput EnumObjects() Axes failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+
+ /* enumerate our POV hats */
+ joystick->num_pov = 0;
+ hr = IDirectInputDevice_EnumObjects(joystick->did, DIJoystick_EnumPOVObjectsProc, joystick, DIDFT_POV);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput EnumObjects() POVs failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+ }
+
+ /* enumerate our buttons */
+
+ joystick->num_buttons = 0;
+ hr = IDirectInputDevice_EnumObjects(joystick->did, DIJoystick_EnumButtonObjectsProc, joystick, DIDFT_BUTTON);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInput EnumObjects() Buttons failed: %s\n", DirectXDecodeError(hr));
+ return;
+ }
+
+ hr = IDirectInputDevice2_Acquire(joystick->did);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInputDevice Acquire joystick failed!\n");
+ return;
+ }
+
+ /* start by clearing the structures */
+
+ ClearJoyState(&joystick->dijs);
+
+ joystick->use_joystick = TRUE;
+}
+
+static void ExitJoystick(joystick_type *joystick)
+{
+ DWORD i = 0;
+
+ if (joystick->did != NULL)
+ {
+ IDirectInputDevice_Unacquire(joystick->did);
+ IDirectInputDevice_Release(joystick->did);
+ joystick->did = NULL;
+ }
+
+ for (i = 0; i < joystick->num_axes; i++)
+ {
+ if (joystick->axes[i].name)
+ free(joystick->axes[i].name);
+ joystick->axes[i].name = NULL;
+ }
+
+ if (joystick->name != NULL)
+ {
+ free(joystick->name);
+ joystick->name = NULL;
+ }
+}
+
diff --git a/docs/release/src/osd/winui/dijoystick.h b/docs/release/src/osd/winui/dijoystick.h
new file mode 100644
index 00000000000..560b5b8fb20
--- /dev/null
+++ b/docs/release/src/osd/winui/dijoystick.h
@@ -0,0 +1,63 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef DIJOYSTICK_H
+#define DIJOYSTICK_H
+
+/*
+ limits:
+ - 7 joysticks
+ - 15 sticks on each joystick (15?)
+ - 63 buttons on each joystick
+
+ - 256 total inputs
+
+
+ 1 1 1 1 1 1
+ 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+ +---+-----------+---------+-----+
+ |Dir|Axis/Button| Stick | Joy |
+ +---+-----------+---------+-----+
+
+ Stick: 0 for buttons 1 for axis
+ Joy: 1 for Mouse/track buttons
+
+*/
+#define JOYCODE(joy, stick, axis_or_button, dir) \
+ ((((dir) & 0x03) << 14) | \
+ (((axis_or_button) & 0x3f) << 8) | \
+ (((stick) & 0x1f) << 3) | \
+ (((joy) & 0x07) << 0))
+
+#define GET_JOYCODE_JOY(code) (((code) >> 0) & 0x07)
+#define GET_JOYCODE_STICK(code) (((code) >> 3) & 0x1f)
+#define GET_JOYCODE_AXIS(code) (((code) >> 8) & 0x3f)
+#define GET_JOYCODE_BUTTON(code) GET_JOYCODE_AXIS(code)
+#define GET_JOYCODE_DIR(code) (((code) >>14) & 0x03)
+
+#define JOYCODE_STICK_BTN 0
+#define JOYCODE_STICK_AXIS 1
+#define JOYCODE_STICK_POV 2
+
+#define JOYCODE_DIR_BTN 0
+#define JOYCODE_DIR_NEG 1
+#define JOYCODE_DIR_POS 2
+
+struct OSDJoystick
+{
+ int (*init)(void);
+ void (*exit)(void);
+ int (*is_joy_pressed)(int joycode);
+ void (*poll_joysticks)(void);
+ BOOL (*Available)(void);
+};
+
+extern const struct OSDJoystick DIJoystick;
+
+extern int DIJoystick_GetNumPhysicalJoysticks(void);
+extern TCHAR* DIJoystick_GetPhysicalJoystickName(int num_joystick);
+
+extern int DIJoystick_GetNumPhysicalJoystickAxes(int num_joystick);
+extern TCHAR* DIJoystick_GetPhysicalJoystickAxisName(int num_joystick, int num_axis);
+
+#endif
diff --git a/docs/release/src/osd/winui/directdraw.cpp b/docs/release/src/osd/winui/directdraw.cpp
new file mode 100644
index 00000000000..c85f97f8a76
--- /dev/null
+++ b/docs/release/src/osd/winui/directdraw.cpp
@@ -0,0 +1,382 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+/***************************************************************************
+
+ directdraw.c
+
+ Direct Draw routines.
+
+ ***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "winui.h"
+#include "directdraw.h"
+#include "mui_util.h" // For ErrorMsg
+#include "dxdecode.h" // For DirectXDecodeError
+
+// standard C headers
+#include <ddraw.h>
+#include <tchar.h>
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+static BOOL WINAPI DDEnumInfo(GUID FAR *lpGUID, LPTSTR lpDriverDescription,
+ LPTSTR lpDriverName, LPVOID lpContext, HMONITOR hm);
+
+static BOOL WINAPI DDEnumOldInfo(GUID FAR *lpGUID, LPTSTR lpDriverDescription,
+ LPTSTR lpDriverName, LPVOID lpContext);
+
+static void CalculateDisplayModes(void);
+static HRESULT CALLBACK EnumDisplayModesCallback(LPDDSURFACEDESC pddsd, LPVOID Context);
+static HRESULT CALLBACK EnumDisplayModesCallback2(DDSURFACEDESC2* pddsd, LPVOID Context);
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+typedef struct
+{
+ TCHAR* name;
+ GUID* lpguid;
+} display_type;
+
+typedef HRESULT (WINAPI *ddc_proc)(GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter);
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+#define MAX_DISPLAYS 100
+static int g_nNumDisplays = 0;
+static display_type g_Displays[MAX_DISPLAYS];
+
+static HANDLE g_hDLL;
+static BOOL g_bHWStretch = 0;
+static BOOL g_bRefresh = 0;
+static struct tDisplayModes g_DisplayModes;
+static IDirectDraw2* g_pDirectDraw2;
+static IDirectDraw4* g_pDirectDraw4;
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+
+/****************************************************************************
+ * DirectDrawInitialize
+ *
+ * Initialize the DirectDraw variables.
+ *
+ * This entails the following functions:
+ *
+ * DirectDrawCreate
+ *
+ ****************************************************************************/
+
+#if !defined(LPDIRECTDRAWENUMERATE)
+#if defined(UNICODE)
+
+typedef HRESULT (WINAPI* LPDIRECTDRAWENUMERATEW)(LPDDENUMCALLBACKW lpCallback, LPVOID lpContext);
+
+#define LPDIRECTDRAWENUMERATE LPDIRECTDRAWENUMERATEW
+
+#define SDirectDrawEnumerateEx "DirectDrawEnumerateExW"
+#define SDirectDrawEnumerate "DirectDrawEnumerateW"
+
+#else
+
+typedef HRESULT (WINAPI* LPDIRECTDRAWENUMERATEA)(LPDDENUMCALLBACKA lpCallback, LPVOID lpContext);
+
+#define LPDIRECTDRAWENUMERATE LPDIRECTDRAWENUMERATEA
+
+#define SDirectDrawEnumerateEx "DirectDrawEnumerateExA"
+#define SDirectDrawEnumerate "DirectDrawEnumerateA"
+
+#endif
+#endif /* LPDIRECTDRAWENUMERATE */
+
+/****************************************************************************/
+
+BOOL DirectDraw_Initialize(void)
+{
+ HRESULT hr;
+ UINT error_mode = 0;
+ ddc_proc ddc;
+ DDCAPS ddCaps;
+ DDCAPS ddHelCaps;
+ IDirectDraw* pDirectDraw1;
+ LPDIRECTDRAWENUMERATEEX pDDEnumEx;
+
+ if (g_hDLL != NULL)
+ return TRUE;
+
+ g_nNumDisplays = 0;
+ g_hDLL = NULL;
+ g_bHWStretch = FALSE;
+ g_bRefresh = FALSE;
+ g_pDirectDraw2 = NULL;
+ g_pDirectDraw4 = NULL;
+
+ /* Turn off error dialog for this call */
+ error_mode = SetErrorMode(0);
+ g_hDLL = LoadLibrary(TEXT("ddraw.dll"));
+ SetErrorMode(error_mode);
+
+ if (g_hDLL == NULL)
+ return FALSE;
+
+ ddc = (ddc_proc)GetProcAddress((HINSTANCE)g_hDLL, "DirectDrawCreate");
+ if (ddc == NULL)
+ return FALSE;
+
+ pDirectDraw1 = NULL;
+ g_pDirectDraw2 = NULL;
+ g_pDirectDraw4 = NULL;
+ hr = ddc(NULL, &pDirectDraw1, NULL);
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectDrawCreate failed: %s", DirectXDecodeError(hr));
+ return FALSE;
+ }
+
+ hr = IDirectDraw_QueryInterface(pDirectDraw1, IID_IDirectDraw4, (void**)&g_pDirectDraw4);
+ if (FAILED(hr))
+ {
+ g_pDirectDraw4 = NULL;
+ hr = IDirectDraw_QueryInterface(pDirectDraw1, IID_IDirectDraw2, (void**)&g_pDirectDraw2);
+ if (FAILED(hr))
+ {
+ ErrorMsg("Query Interface for DirectDraw 2 failed: %s", DirectXDecodeError(hr));
+ g_pDirectDraw2 = NULL;
+ IDirectDraw_Release(pDirectDraw1);
+ return FALSE;
+ }
+ }
+
+ memset(&ddCaps, 0, sizeof(DDCAPS));
+ memset(&ddHelCaps, 0, sizeof(DDCAPS));
+ ddCaps.dwSize = sizeof(DDCAPS);
+ ddHelCaps.dwSize = sizeof(DDCAPS);
+ hr = IDirectDraw_GetCaps(pDirectDraw1, &ddCaps, &ddHelCaps); /* 1 2 or 4? */
+ if (FAILED(hr))
+ {
+ ErrorMsg("Error getting DirectDraw capabilities: %s", DirectXDecodeError(hr));
+ }
+ else
+ g_bHWStretch = ((ddCaps.dwCaps & DDCAPS_BLTSTRETCH) != 0) ? TRUE : FALSE;
+
+ IDirectDraw_Release(pDirectDraw1);
+
+ /*
+ Note that you must know which version of the
+ function to retrieve (see the following text).
+ For this example, we use the ANSI version.
+ */
+ pDDEnumEx = (LPDIRECTDRAWENUMERATEEX) GetProcAddress((HINSTANCE)g_hDLL, SDirectDrawEnumerateEx);
+
+ /*
+ If the function is there, call it to enumerate all display devices
+ attached to the desktop, and any non-display DirectDraw devices.
+ */
+ if (pDDEnumEx)
+ {
+ pDDEnumEx(DDEnumInfo, NULL, DDENUM_ATTACHEDSECONDARYDEVICES | DDENUM_DETACHEDSECONDARYDEVICES);
+ }
+ else
+ {
+ LPDIRECTDRAWENUMERATE lpDDEnum;
+
+ lpDDEnum = (LPDIRECTDRAWENUMERATE) GetProcAddress((HINSTANCE)g_hDLL, SDirectDrawEnumerate);
+ /*
+ * We must be running on an old version of ddraw. Therefore,
+ * by definiton, multimon isn't supported. Fall back on
+ * DirectDrawEnumerate to enumerate standard devices on a
+ * single monitor system.
+ */
+ if (lpDDEnum)
+ {
+ lpDDEnum(DDEnumOldInfo, NULL);
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/****************************************************************************
+ *
+ * DirectDraw_Close
+ *
+ * Terminate our usage of DirectDraw.
+ *
+ ****************************************************************************/
+
+void DirectDraw_Close(void)
+{
+ int i;
+
+ for (i = 0; i < g_nNumDisplays; i++)
+ {
+ free(g_Displays[i].name);
+ g_Displays[i].name = NULL;
+ if (g_Displays[i].lpguid != NULL)
+ {
+ free(g_Displays[i].lpguid);
+ g_Displays[i].lpguid = NULL;
+ }
+
+ }
+ g_nNumDisplays = 0;
+
+ /*
+ Destroy any lingering IDirectDraw object.
+ */
+ if (g_pDirectDraw2)
+ {
+ IDirectDraw2_Release(g_pDirectDraw2);
+ g_pDirectDraw2 = NULL;
+ }
+
+ if (g_pDirectDraw4)
+ {
+ IDirectDraw4_Release(g_pDirectDraw4);
+ g_pDirectDraw4 = NULL;
+ }
+
+ if (g_hDLL)
+ {
+ FreeLibrary((HINSTANCE)g_hDLL);
+ g_hDLL = NULL;
+ }
+}
+
+/****************************************************************************/
+/*
+ Return a list of 16, 24 and 32 bit DirectDraw modes.
+*/
+struct tDisplayModes* DirectDraw_GetDisplayModes(void)
+{
+ if (g_DisplayModes.m_nNumModes == 0)
+ CalculateDisplayModes();
+
+ return &g_DisplayModes;
+}
+
+int DirectDraw_GetNumDisplays(void)
+{
+ return g_nNumDisplays;
+}
+
+BOOL DirectDraw_HasHWStretch(void)
+{
+ return g_bHWStretch;
+}
+
+BOOL DirectDraw_HasRefresh(void)
+{
+ return g_bRefresh;
+}
+
+LPCTSTR DirectDraw_GetDisplayName(int num_display)
+{
+ return g_Displays[num_display].name;
+}
+
+/****************************************************************************/
+/* internal functions */
+/****************************************************************************/
+
+static BOOL WINAPI DDEnumInfo(GUID FAR *lpGUID, LPTSTR lpDriverDescription,
+ LPTSTR lpDriverName, LPVOID lpContext, HMONITOR hm)
+{
+ g_Displays[g_nNumDisplays].name = (TCHAR*)malloc((_tcslen(lpDriverDescription) + 1) * sizeof(TCHAR));
+ _tcscpy(g_Displays[g_nNumDisplays].name, lpDriverDescription);
+
+ if (lpGUID == NULL)
+ g_Displays[g_nNumDisplays].lpguid = NULL;
+ else
+ {
+ g_Displays[g_nNumDisplays].lpguid = (LPGUID)malloc(sizeof(GUID));
+ memcpy(g_Displays[g_nNumDisplays].lpguid, lpGUID, sizeof(GUID));
+ }
+
+ g_nNumDisplays++;
+ if (g_nNumDisplays == MAX_DISPLAYS)
+ return DDENUMRET_CANCEL;
+ else
+ return DDENUMRET_OK;
+}
+
+static BOOL WINAPI DDEnumOldInfo(GUID FAR *lpGUID, LPTSTR lpDriverDescription, LPTSTR lpDriverName, LPVOID lpContext)
+{
+ return DDEnumInfo(lpGUID, lpDriverDescription, lpDriverName, lpContext, NULL);
+}
+
+static HRESULT CALLBACK EnumDisplayModesCallback(LPDDSURFACEDESC pddsd, LPVOID Context)
+{
+ DWORD dwDepth = pddsd->ddpfPixelFormat.dwRGBBitCount;
+
+ struct tDisplayModes* pDisplayModes = (struct tDisplayModes*)Context;
+ if (dwDepth == 16 || dwDepth == 24 || dwDepth == 32)
+ {
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwWidth = pddsd->dwWidth;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwHeight = pddsd->dwHeight;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwBPP = dwDepth;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwRefresh = 0;
+ pDisplayModes->m_nNumModes++;
+ }
+
+ if (pDisplayModes->m_nNumModes == MAXMODES)
+ return DDENUMRET_CANCEL;
+ else
+ return DDENUMRET_OK;
+}
+
+static HRESULT CALLBACK EnumDisplayModesCallback2(DDSURFACEDESC2* pddsd2, LPVOID Context)
+{
+ struct tDisplayModes* pDisplayModes = (struct tDisplayModes*)Context;
+
+ DWORD dwDepth = pddsd2->ddpfPixelFormat.dwRGBBitCount;
+
+ if (dwDepth == 16 || dwDepth == 24 || dwDepth == 32)
+ {
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwWidth = pddsd2->dwWidth;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwHeight = pddsd2->dwHeight;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwBPP = dwDepth;
+ pDisplayModes->m_Modes[pDisplayModes->m_nNumModes].m_dwRefresh = pddsd2->dwRefreshRate;
+ pDisplayModes->m_nNumModes++;
+
+ if (pddsd2->dwRefreshRate != 0)
+ g_bRefresh = TRUE;
+ }
+
+ if (pDisplayModes->m_nNumModes == MAXMODES)
+ return DDENUMRET_CANCEL;
+ else
+ return DDENUMRET_OK;
+}
+
+static void CalculateDisplayModes(void)
+{
+ g_DisplayModes.m_nNumModes = 0;
+
+ if (g_pDirectDraw4)
+ IDirectDraw4_EnumDisplayModes(g_pDirectDraw4, DDEDM_REFRESHRATES, NULL, &g_DisplayModes, EnumDisplayModesCallback2);
+ else
+ if (g_pDirectDraw2)
+ IDirectDraw2_EnumDisplayModes(g_pDirectDraw2, 0, NULL, &g_DisplayModes, EnumDisplayModesCallback);
+}
+
+
diff --git a/docs/release/src/osd/winui/directdraw.h b/docs/release/src/osd/winui/directdraw.h
new file mode 100644
index 00000000000..95140a54ab5
--- /dev/null
+++ b/docs/release/src/osd/winui/directdraw.h
@@ -0,0 +1,36 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef DIRECTDRAW_H
+#define DIRECTDRAW_H
+
+#include <ddraw.h>
+
+#define MAXMODES 256 /* Maximum number of DirectDraw Display modes. */
+
+/* Display mode node */
+struct tDisplayMode
+{
+ DWORD m_dwWidth;
+ DWORD m_dwHeight;
+ DWORD m_dwBPP;
+ DWORD m_dwRefresh;
+};
+
+/* EnumDisplayMode Context */
+struct tDisplayModes
+{
+ struct tDisplayMode m_Modes[MAXMODES];
+ int m_nNumModes;
+};
+
+extern BOOL DirectDraw_Initialize(void);
+extern void DirectDraw_Close(void);
+
+extern struct tDisplayModes* DirectDraw_GetDisplayModes(void);
+extern int DirectDraw_GetNumDisplays(void);
+extern BOOL DirectDraw_HasHWStretch(void);
+extern BOOL DirectDraw_HasRefresh(void);
+extern LPCTSTR DirectDraw_GetDisplayName(int num_display);
+
+#endif
diff --git a/docs/release/src/osd/winui/directinput.cpp b/docs/release/src/osd/winui/directinput.cpp
new file mode 100644
index 00000000000..5e5c554a95c
--- /dev/null
+++ b/docs/release/src/osd/winui/directinput.cpp
@@ -0,0 +1,149 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ directinput.c
+
+ Direct Input routines.
+
+ ***************************************************************************/
+// standard windows headers
+#include <windows.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "mui_util.h" // For ErrorMsg
+#include "directinput.h"
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+static LPDIRECTINPUT di = NULL;
+
+static HANDLE hDLL = NULL;
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+
+/****************************************************************************
+ * DirectInputInitialize
+ *
+ * Initialize the DirectInput variables.
+ *
+ * This entails the following functions:
+ *
+ * DirectInputCreate
+ *
+ ****************************************************************************/
+
+typedef HRESULT (WINAPI *dic_proc)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT *ppDI, LPUNKNOWN punkOuter);
+
+BOOL DirectInputInitialize()
+{
+ HRESULT hr;
+ UINT error_mode = 0;
+ dic_proc dic;
+
+ if (hDLL != NULL)
+ return TRUE;
+
+ hDLL = NULL;
+
+ /* Turn off error dialog for this call */
+ error_mode = SetErrorMode(0);
+ hDLL = LoadLibrary(TEXT("dinput.dll"));
+ SetErrorMode(error_mode);
+
+ if (hDLL == NULL)
+ return FALSE;
+
+#ifdef UNICODE
+ dic = (dic_proc)GetProcAddress((HINSTANCE)hDLL, "DirectInputCreateW");
+#else
+ dic = (dic_proc)GetProcAddress((HINSTANCE)hDLL, "DirectInputCreateA");
+#endif
+ if (dic == NULL)
+ return FALSE;
+
+ hr = dic(GetModuleHandle(NULL), 0x0700, &di, NULL); // setup DIRECT INPUT 7 for the GUI
+
+ if (FAILED(hr))
+ {
+ hr = dic(GetModuleHandle(NULL), 0x0500, &di, NULL); // if failed, try with version 5
+
+ if (FAILED(hr))
+ {
+ ErrorMsg("DirectInputCreate failed! error=%x\n", (unsigned int)hr);
+ di = NULL;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+/****************************************************************************
+ *
+ * DirectInputClose
+ *
+ * Terminate our usage of DirectInput.
+ *
+ ****************************************************************************/
+
+void DirectInputClose()
+{
+ /* Release any lingering IDirectInput object. */
+ if (di)
+ {
+ IDirectInput_Release(di);
+ di = NULL;
+ }
+}
+
+BOOL CALLBACK inputEnumDeviceProc(LPCDIDEVICEINSTANCE pdidi, LPVOID pv)
+{
+ GUID *pguidDevice;
+
+ /* report back the instance guid of the device we enumerated */
+ if (pv)
+ {
+ pguidDevice = (GUID *)pv;
+ *pguidDevice = pdidi->guidInstance;
+ }
+
+ /* BUGBUG for now, stop after the first device has been found */
+ return DIENUM_STOP;
+}
+
+HRESULT SetDIDwordProperty(LPDIRECTINPUTDEVICE2 pdev, REFGUID guidProperty, DWORD dwObject, DWORD dwHow, DWORD dwValue)
+{
+ DIPROPDWORD dipdw;
+
+ dipdw.diph.dwSize = sizeof(dipdw);
+ dipdw.diph.dwHeaderSize = sizeof(dipdw.diph);
+ dipdw.diph.dwObj = dwObject;
+ dipdw.diph.dwHow = dwHow;
+ dipdw.dwData = dwValue;
+
+ return IDirectInputDevice2_SetProperty(pdev, guidProperty, &dipdw.diph);
+}
+
+LPDIRECTINPUT GetDirectInput(void)
+{
+ return di;
+}
diff --git a/docs/release/src/osd/winui/directinput.h b/docs/release/src/osd/winui/directinput.h
new file mode 100644
index 00000000000..7af72dab981
--- /dev/null
+++ b/docs/release/src/osd/winui/directinput.h
@@ -0,0 +1,23 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef DIRECTINPUT_H
+#define DIRECTINPUT_H
+
+#undef WINNT
+#ifdef DIRECTINPUT_VERSION
+#undef DIRECTINPUT_VERSION
+#endif
+#define DIRECTINPUT_VERSION 0x0700
+#include <dinput.h>
+
+extern BOOL DirectInputInitialize(void);
+extern void DirectInputClose(void);
+
+extern BOOL CALLBACK inputEnumDeviceProc(LPCDIDEVICEINSTANCE pdidi, LPVOID pv);
+
+extern HRESULT SetDIDwordProperty(LPDIRECTINPUTDEVICE2 pdev, REFGUID guidProperty, DWORD dwObject, DWORD dwHow, DWORD dwValue);
+
+LPDIRECTINPUT GetDirectInput(void);
+
+#endif
diff --git a/docs/release/src/osd/winui/directories.cpp b/docs/release/src/osd/winui/directories.cpp
new file mode 100644
index 00000000000..25928d136be
--- /dev/null
+++ b/docs/release/src/osd/winui/directories.cpp
@@ -0,0 +1,753 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ directories.c
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+
+// standard C headers
+#include <sys/stat.h>
+#include <assert.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "winui.h"
+#include "directories.h"
+#include "resource.h"
+#include "strconv.h"
+#include "mui_util.h"
+
+// SHELL DIR header
+#include <shlobj.h>
+
+#define MAX_DIRS 256
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+typedef struct
+{
+ TCHAR m_Directories[MAX_DIRS][MAX_PATH];
+ int m_NumDirectories;
+ BOOL m_bModified;
+} tPath;
+
+typedef struct
+{
+ tPath *m_Path;
+ TCHAR *m_tDirectory;
+} tDirInfo;
+
+/***************************************************************************
+ Function prototypes
+ ***************************************************************************/
+
+static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
+BOOL BrowseForDirectory(HWND hwnd, LPCTSTR pStartDir, TCHAR* pResult);
+
+static void DirInfo_SetDir(tDirInfo *pInfo, int nType, int nItem, LPCTSTR pText);
+static TCHAR* DirInfo_Dir(tDirInfo *pInfo, int nType);
+static TCHAR* DirInfo_Path(tDirInfo *pInfo, int nType, int nItem);
+static void DirInfo_SetModified(tDirInfo *pInfo, int nType, BOOL bModified);
+static BOOL DirInfo_Modified(tDirInfo *pInfo, int nType);
+static TCHAR* FixSlash(TCHAR *s);
+
+static void UpdateDirectoryList(HWND hDlg);
+
+static void Directories_OnSelChange(HWND hDlg);
+static BOOL Directories_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam);
+static void Directories_OnDestroy(HWND hDlg);
+static void Directories_OnClose(HWND hDlg);
+static void Directories_OnOk(HWND hDlg);
+static void Directories_OnCancel(HWND hDlg);
+static void Directories_OnInsert(HWND hDlg);
+static void Directories_OnBrowse(HWND hDlg);
+static void Directories_OnDelete(HWND hDlg);
+static BOOL Directories_OnBeginLabelEdit(HWND hDlg, NMHDR* pNMHDR);
+static BOOL Directories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR);
+static void Directories_OnCommand(HWND hDlg, int id, HWND hwndCtl, UINT codeNotify);
+static BOOL Directories_OnNotify(HWND hDlg, int id, NMHDR* pNMHDR);
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+static tDirInfo *g_pDirInfo;
+
+/***************************************************************************
+ External function definitions
+ ***************************************************************************/
+
+INT_PTR CALLBACK DirectoriesDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ BOOL bReturn = FALSE;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ return (BOOL)HANDLE_WM_INITDIALOG(hDlg, wParam, lParam, Directories_OnInitDialog);
+
+ case WM_COMMAND:
+ HANDLE_WM_COMMAND(hDlg, wParam, lParam, Directories_OnCommand);
+ bReturn = TRUE;
+ break;
+
+ case WM_NOTIFY:
+ return (BOOL)HANDLE_WM_NOTIFY(hDlg, wParam, lParam, Directories_OnNotify);
+
+ case WM_CLOSE:
+ HANDLE_WM_CLOSE(hDlg, wParam, lParam, Directories_OnClose);
+ break;
+
+ case WM_DESTROY:
+ HANDLE_WM_DESTROY(hDlg, wParam, lParam, Directories_OnDestroy);
+ break;
+
+ default:
+ bReturn = FALSE;
+ }
+ return bReturn;
+}
+
+/***************************************************************************
+ Internal function definitions
+ ***************************************************************************/
+
+static BOOL IsMultiDir(int nType)
+{
+ return g_directoryInfo[nType].bMulti;
+}
+
+static void DirInfo_SetDir(tDirInfo *pInfo, int nType, int nItem, LPCTSTR pText)
+{
+ TCHAR *t_s;
+ TCHAR *t_pOldText;
+
+ if (IsMultiDir(nType))
+ {
+ assert(nItem >= 0);
+ _tcscpy(DirInfo_Path(pInfo, nType, nItem), pText);
+ DirInfo_SetModified(pInfo, nType, TRUE);
+ }
+ else
+ {
+ t_s = win_tstring_strdup(pText);
+ if (!t_s)
+ return;
+ t_pOldText = pInfo[nType].m_tDirectory;
+ if (t_pOldText)
+ free(t_pOldText);
+ pInfo[nType].m_tDirectory = t_s;
+ }
+}
+
+static TCHAR* DirInfo_Dir(tDirInfo *pInfo, int nType)
+{
+ assert(!IsMultiDir(nType));
+ TCHAR* t = pInfo[nType].m_tDirectory;
+ // if a multipath exists in a single-path-only area then truncate it
+ TCHAR* i = _tcstok(t, TEXT(";"));
+ i++;
+ return t;
+}
+
+static TCHAR* DirInfo_Path(tDirInfo *pInfo, int nType, int nItem)
+{
+ return pInfo[nType].m_Path->m_Directories[nItem];
+}
+
+static void DirInfo_SetModified(tDirInfo *pInfo, int nType, BOOL bModified)
+{
+ assert(IsMultiDir(nType));
+ pInfo[nType].m_Path->m_bModified = bModified;
+}
+
+static BOOL DirInfo_Modified(tDirInfo *pInfo, int nType)
+{
+ assert(IsMultiDir(nType));
+ return pInfo[nType].m_Path->m_bModified;
+}
+
+#define DirInfo_NumDir(pInfo, path) \
+ ((pInfo)[(path)].m_Path->m_NumDirectories)
+
+/* lop off trailing backslash if it exists */
+static TCHAR * FixSlash(TCHAR *s)
+{
+ int len = 0;
+
+ if (s)
+ len = _tcslen(s);
+
+ if (len>3 && s[len - 1] == '\\')
+ s[len - 1] = '\0';
+
+ return s;
+}
+
+static void UpdateDirectoryList(HWND hDlg)
+{
+ bool b_res = 0;
+ int i = 0;
+ int nType = 0;
+ LV_ITEM Item;
+ HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ HWND hCombo = GetDlgItem(hDlg, IDC_DIR_COMBO);
+
+ /* Remove previous */
+ b_res = ListView_DeleteAllItems(hList);
+
+ /* Update list */
+ memset(&Item, 0, sizeof(LV_ITEM));
+ Item.mask = LVIF_TEXT;
+
+ nType = ComboBox_GetCurSel(hCombo);
+ if (IsMultiDir(nType))
+ {
+ Item.pszText = (TCHAR*) TEXT(DIRLIST_NEWENTRYTEXT); // puts the < > empty entry in
+ (void)ListView_InsertItem(hList, &Item);
+ int t = DirInfo_NumDir(g_pDirInfo, nType);
+ // directories are inserted in reverse order
+ for (i = t; 0 < i; i--)
+ {
+ Item.pszText = DirInfo_Path(g_pDirInfo, nType, i-1);
+ (void)ListView_InsertItem(hList, &Item);
+ }
+ }
+ else
+ {
+ Item.pszText = DirInfo_Dir(g_pDirInfo, nType);
+ (void)ListView_InsertItem(hList, &Item);
+ }
+
+ /* select first one */
+
+ ListView_SetItemState(hList, 0, LVIS_SELECTED, LVIS_SELECTED);
+ b_res++;
+}
+
+static void Directories_OnSelChange(HWND hDlg)
+{
+ UpdateDirectoryList(hDlg);
+
+ HWND hCombo = GetDlgItem(hDlg, IDC_DIR_COMBO);
+ int nType = ComboBox_GetCurSel(hCombo);
+ if (IsMultiDir(nType))
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_DIR_DELETE), TRUE);
+ EnableWindow(GetDlgItem(hDlg, IDC_DIR_INSERT), TRUE);
+ }
+ else
+ {
+ EnableWindow(GetDlgItem(hDlg, IDC_DIR_DELETE), FALSE);
+ EnableWindow(GetDlgItem(hDlg, IDC_DIR_INSERT), FALSE);
+ }
+}
+
+static BOOL Directories_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam)
+{
+ RECT rectClient;
+ LVCOLUMN LVCol;
+ int i = 0;
+ int nDirInfoCount = 0;
+ LPCSTR s;
+ TCHAR *token;
+ TCHAR buf[MAX_PATH * MAX_DIRS];
+ TCHAR* t_s = NULL;
+ HRESULT res = 0;
+
+ /* count how many dirinfos there are */
+ nDirInfoCount = 0;
+ while(g_directoryInfo[nDirInfoCount].lpName)
+ nDirInfoCount++;
+
+ g_pDirInfo = (tDirInfo *) malloc(sizeof(tDirInfo) * nDirInfoCount);
+ if (!g_pDirInfo) /* bummer */
+ goto error;
+ memset(g_pDirInfo, 0, sizeof(tDirInfo) * nDirInfoCount);
+
+ for (i = nDirInfoCount - 1; i >= 0; i--)
+ {
+ t_s = ui_wstring_from_utf8(g_directoryInfo[i].lpName);
+ if( !t_s )
+ return FALSE;
+ (void)ComboBox_InsertString(GetDlgItem(hDlg, IDC_DIR_COMBO), 0, win_tstring_strdup(t_s));
+ free(t_s);
+ t_s = NULL;
+ }
+
+ (void)ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO), 0);
+
+ GetClientRect(GetDlgItem(hDlg, IDC_DIR_LIST), &rectClient);
+
+ memset(&LVCol, 0, sizeof(LVCOLUMN));
+ LVCol.mask = LVCF_WIDTH;
+ LVCol.cx = rectClient.right - rectClient.left - GetSystemMetrics(SM_CXHSCROLL);
+
+ res = ListView_InsertColumn(GetDlgItem(hDlg, IDC_DIR_LIST), 0, &LVCol);
+ res++;
+
+ /* Keep a temporary copy of the directory strings in g_pDirInfo. */
+ for (i = 0; i < nDirInfoCount; i++)
+ {
+ s = g_directoryInfo[i].pfnGetTheseDirs();
+ t_s = ui_wstring_from_utf8(s);
+ if( !t_s )
+ return FALSE;
+ if (IsMultiDir(i))
+ {
+ /* Copy the string to our own buffer so that we can mutilate it */
+ _tcscpy(buf, t_s);
+
+ g_pDirInfo[i].m_Path = (tPath*)malloc(sizeof(tPath));
+ if (!g_pDirInfo[i].m_Path)
+ goto error;
+
+ g_pDirInfo[i].m_Path->m_NumDirectories = 0;
+ token = _tcstok(buf, TEXT(";"));
+ while ((DirInfo_NumDir(g_pDirInfo, i) < MAX_DIRS) && token)
+ {
+ _tcscpy(DirInfo_Path(g_pDirInfo, i, DirInfo_NumDir(g_pDirInfo, i)), token);
+ DirInfo_NumDir(g_pDirInfo, i)++;
+ token = _tcstok(NULL, TEXT(";"));
+ }
+ DirInfo_SetModified(g_pDirInfo, i, FALSE);
+ }
+ else
+ {
+ DirInfo_SetDir(g_pDirInfo, i, -1, t_s);
+ }
+ free(t_s);
+ t_s = NULL;
+ }
+
+ UpdateDirectoryList(hDlg);
+ return TRUE;
+
+error:
+ if( t_s )
+ free(t_s);
+ Directories_OnDestroy(hDlg);
+ EndDialog(hDlg, -1);
+ return FALSE;
+}
+
+static void Directories_OnDestroy(HWND hDlg)
+{
+ int nDirInfoCount = 0, i = 0;
+
+ if (g_pDirInfo)
+ {
+ /* count how many dirinfos there are */
+ nDirInfoCount = 0;
+ while(g_directoryInfo[nDirInfoCount].lpName)
+ nDirInfoCount++;
+
+ for (i = 0; i < nDirInfoCount; i++)
+ {
+ if (g_pDirInfo[i].m_Path)
+ free(g_pDirInfo[i].m_Path);
+ if (g_pDirInfo[i].m_tDirectory)
+ free(g_pDirInfo[i].m_tDirectory);
+ }
+ free(g_pDirInfo);
+ g_pDirInfo = NULL;
+ }
+}
+
+static void Directories_OnClose(HWND hDlg)
+{
+ EndDialog(hDlg, IDCANCEL);
+}
+
+static int RetrieveDirList(int nDir, int nFlagResult, void (*SetTheseDirs)(const char *s))
+{
+ int i = 0;
+ int nResult = 0;
+ int nPaths = 0;
+ TCHAR buf[MAX_PATH * MAX_DIRS];
+ char* utf8_buf;
+
+ if (DirInfo_Modified(g_pDirInfo, nDir))
+ {
+ memset(buf, 0, sizeof(buf));
+ nPaths = DirInfo_NumDir(g_pDirInfo, nDir);
+ for (i = 0; i < nPaths; i++)
+ {
+ _tcscat(buf, FixSlash(DirInfo_Path(g_pDirInfo, nDir, i)));
+
+ if (i < nPaths - 1)
+ _tcscat(buf, TEXT(";"));
+ }
+ utf8_buf = ui_utf8_from_wstring(buf);
+ SetTheseDirs(utf8_buf);
+ free(utf8_buf);
+
+ nResult |= nFlagResult;
+ }
+ return nResult;
+}
+
+static void Directories_OnOk(HWND hDlg)
+{
+ int i = 0;
+ int nResult = 0;
+ LPTSTR s;
+ char* utf8_s;
+
+ for (i = 0; g_directoryInfo[i].lpName; i++)
+ {
+ if (IsMultiDir(i))
+ {
+ nResult |= RetrieveDirList(i, g_directoryInfo[i].nDirDlgFlags, g_directoryInfo[i].pfnSetTheseDirs);
+ }
+ else
+ {
+ s = FixSlash(DirInfo_Dir(g_pDirInfo, i));
+ utf8_s = ui_utf8_from_wstring(s);
+ g_directoryInfo[i].pfnSetTheseDirs(utf8_s);
+ free(utf8_s);
+ }
+ }
+ EndDialog(hDlg, nResult);
+}
+
+static void Directories_OnCancel(HWND hDlg)
+{
+ EndDialog(hDlg, IDCANCEL);
+}
+
+static void Directories_OnInsert(HWND hDlg)
+{
+ int nItem = 0;
+ TCHAR buf[MAX_PATH];
+ HWND hList = 0;
+
+ hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED);
+
+ if (BrowseForDirectory(hDlg, NULL, buf) == TRUE)
+ {
+ int i = 0;
+ int nType = 0;
+
+ /* list was empty */
+ if (nItem == -1)
+ nItem = 0;
+
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ if (IsMultiDir(nType))
+ {
+ if (MAX_DIRS <= DirInfo_NumDir(g_pDirInfo, nType))
+ return;
+
+ for (i = DirInfo_NumDir(g_pDirInfo, nType); nItem < i; i--)
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, i), DirInfo_Path(g_pDirInfo, nType, i - 1));
+
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, nItem), buf);
+ DirInfo_NumDir(g_pDirInfo, nType)++;
+ DirInfo_SetModified(g_pDirInfo, nType, TRUE);
+ }
+
+ UpdateDirectoryList(hDlg);
+
+ ListView_SetItemState(hList, nItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ }
+}
+
+static void Directories_OnBrowse(HWND hDlg)
+{
+ int nType = 0;
+ int nItem = 0;
+ TCHAR inbuf[MAX_PATH];
+ TCHAR outbuf[MAX_PATH];
+ HWND hList = 0;
+
+ hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED);
+
+ if (nItem == -1)
+ return;
+
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ if (IsMultiDir(nType))
+ {
+ /* Last item is placeholder for append */
+ if (nItem == ListView_GetItemCount(hList) - 1)
+ {
+ Directories_OnInsert(hDlg);
+ return;
+ }
+ }
+
+ ListView_GetItemText(hList, nItem, 0, inbuf, MAX_PATH);
+
+ if (BrowseForDirectory(hDlg, inbuf, outbuf) == TRUE)
+ {
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ DirInfo_SetDir(g_pDirInfo, nType, nItem, outbuf);
+ UpdateDirectoryList(hDlg);
+ }
+}
+
+static void Directories_OnDelete(HWND hDlg)
+{
+ int nType = 0;
+ int nCount = 0;
+ int nSelect = 0;
+ int i = 0;
+ int nItem = 0;
+ HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+
+ nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED | LVNI_ALL);
+
+ if (nItem == -1)
+ return;
+
+ /* Don't delete "Append" placeholder. */
+ if (nItem == ListView_GetItemCount(hList) - 1)
+ return;
+
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ if (IsMultiDir(nType))
+ {
+ for (i = nItem; i < DirInfo_NumDir(g_pDirInfo, nType) - 1; i++)
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, i),
+ DirInfo_Path(g_pDirInfo, nType, i + 1));
+
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, DirInfo_NumDir(g_pDirInfo, nType) - 1), TEXT(""));
+ DirInfo_NumDir(g_pDirInfo, nType)--;
+
+ DirInfo_SetModified(g_pDirInfo, nType, TRUE);
+ }
+
+ UpdateDirectoryList(hDlg);
+
+
+ nCount = ListView_GetItemCount(hList);
+ if (nCount <= 1)
+ return;
+
+ /* If the last item was removed, select the item above. */
+ if (nItem == nCount - 1)
+ nSelect = nCount - 2;
+ else
+ nSelect = nItem;
+
+ ListView_SetItemState(hList, nSelect, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+}
+
+static BOOL Directories_OnBeginLabelEdit(HWND hDlg, NMHDR* pNMHDR)
+{
+ int nType = 0;
+ BOOL bResult = FALSE;
+ NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
+ LVITEM* pItem = &pDispInfo->item;
+
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ if (IsMultiDir(nType))
+ {
+ /* Last item is placeholder for append */
+ if (pItem->iItem == ListView_GetItemCount(GetDlgItem(hDlg, IDC_DIR_LIST)) - 1)
+ {
+ if (MAX_DIRS <= DirInfo_NumDir(g_pDirInfo, nType))
+ return TRUE; /* don't edit */
+
+ HWND hEdit = (HWND)(LRESULT)(int)SendDlgItemMessage(hDlg, IDC_DIR_LIST, LVM_GETEDITCONTROL, 0, 0);
+ Edit_SetText(hEdit, TEXT(""));
+ }
+ }
+
+ return bResult;
+}
+
+static BOOL Directories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR)
+{
+ BOOL bResult = FALSE;
+ NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
+ LVITEM* pItem = &pDispInfo->item;
+
+ if (pItem->pszText != NULL)
+ {
+ struct _stat file_stat;
+
+ /* Don't allow empty entries. */
+ if (!_tcscmp(pItem->pszText, TEXT("")))
+ {
+ return FALSE;
+ }
+
+ /* Check validity of edited directory. */
+ if (_tstat(pItem->pszText, &file_stat) == 0
+ && (file_stat.st_mode & S_IFDIR))
+ {
+ bResult = TRUE;
+ }
+ else
+ {
+ if (MessageBox(NULL, TEXT("Directory does not exist, continue anyway?"), TEXT(MAMEUINAME), MB_OKCANCEL) == IDOK)
+ bResult = TRUE;
+ }
+ }
+
+ if (bResult == TRUE)
+ {
+ int nType = 0;
+ int i = 0;
+
+ nType = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_DIR_COMBO));
+ if (IsMultiDir(nType))
+ {
+ /* Last item is placeholder for append */
+ if (pItem->iItem == ListView_GetItemCount(GetDlgItem(hDlg, IDC_DIR_LIST)) - 1)
+ {
+ if (MAX_DIRS <= DirInfo_NumDir(g_pDirInfo, nType))
+ return FALSE;
+
+ for (i = DirInfo_NumDir(g_pDirInfo, nType); pItem->iItem < i; i--)
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, i),
+ DirInfo_Path(g_pDirInfo, nType, i - 1));
+
+ _tcscpy(DirInfo_Path(g_pDirInfo, nType, pItem->iItem), pItem->pszText);
+
+ DirInfo_SetModified(g_pDirInfo, nType, TRUE);
+ DirInfo_NumDir(g_pDirInfo, nType)++;
+ }
+ else
+ DirInfo_SetDir(g_pDirInfo, nType, pItem->iItem, pItem->pszText);
+ }
+ else
+ {
+ DirInfo_SetDir(g_pDirInfo, nType, pItem->iItem, pItem->pszText);
+ }
+
+ UpdateDirectoryList(hDlg);
+ ListView_SetItemState(GetDlgItem(hDlg, IDC_DIR_LIST), pItem->iItem,
+ LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+
+ }
+
+ return bResult;
+}
+
+static void Directories_OnCommand(HWND hDlg, int id, HWND hwndCtl, UINT codeNotify)
+{
+ switch (id)
+ {
+ case IDOK:
+ if (codeNotify == BN_CLICKED)
+ Directories_OnOk(hDlg);
+ break;
+
+ case IDCANCEL:
+ if (codeNotify == BN_CLICKED)
+ Directories_OnCancel(hDlg);
+ break;
+
+ case IDC_DIR_BROWSE:
+ if (codeNotify == BN_CLICKED)
+ Directories_OnBrowse(hDlg);
+ break;
+
+ case IDC_DIR_INSERT:
+ if (codeNotify == BN_CLICKED)
+ Directories_OnInsert(hDlg);
+ break;
+
+ case IDC_DIR_DELETE:
+ if (codeNotify == BN_CLICKED)
+ Directories_OnDelete(hDlg);
+ break;
+
+ case IDC_DIR_COMBO:
+ switch (codeNotify)
+ {
+ case CBN_SELCHANGE:
+ Directories_OnSelChange(hDlg);
+ break;
+ }
+ break;
+ }
+}
+
+static BOOL Directories_OnNotify(HWND hDlg, int id, NMHDR* pNMHDR)
+{
+ switch (id)
+ {
+ case IDC_DIR_LIST:
+ switch (pNMHDR->code)
+ {
+ case LVN_ENDLABELEDIT:
+ return Directories_OnEndLabelEdit(hDlg, pNMHDR);
+
+ case LVN_BEGINLABELEDIT:
+ return Directories_OnBeginLabelEdit(hDlg, pNMHDR);
+ }
+ }
+ return FALSE;
+}
+
+/**************************************************************************
+
+ Use the shell to select a Directory.
+
+ **************************************************************************/
+
+static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
+{
+ /*
+ Called just after the dialog is initialized
+ Select the dir passed in BROWSEINFO.lParam
+ */
+ if (uMsg == BFFM_INITIALIZED)
+ {
+ if ((const char*)lpData != NULL)
+ SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
+ }
+
+ return 0;
+}
+
+BOOL BrowseForDirectory(HWND hwnd, LPCTSTR pStartDir, TCHAR* pResult)
+{
+ BOOL bResult = FALSE;
+ BROWSEINFO Info;
+ LPITEMIDLIST pItemIDList = NULL;
+ TCHAR buf[MAX_PATH];
+
+ Info.hwndOwner = hwnd;
+ Info.pidlRoot = NULL;
+ Info.pszDisplayName = buf;
+ Info.lpszTitle = TEXT("Select a directory:");
+ Info.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
+ Info.lpfn = BrowseCallbackProc;
+ Info.lParam = (LPARAM)pStartDir;
+
+ pItemIDList = SHBrowseForFolder(&Info);
+
+ if (pItemIDList != NULL)
+ {
+ if (SHGetPathFromIDList(pItemIDList, buf) == TRUE)
+ {
+ _sntprintf(pResult, MAX_PATH, TEXT("%s"), buf);
+ bResult = TRUE;
+ }
+ }
+ else
+ bResult = FALSE;
+
+ return bResult;
+}
+
diff --git a/docs/release/src/osd/winui/directories.h b/docs/release/src/osd/winui/directories.h
new file mode 100644
index 00000000000..d38d3caa932
--- /dev/null
+++ b/docs/release/src/osd/winui/directories.h
@@ -0,0 +1,72 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+#ifndef DIRECTORIES_H
+#define DIRECTORIES_H
+
+/* Dialog return codes */
+#define DIRDLG_ROMS 0x0010
+#define DIRDLG_SAMPLES 0x0020
+#define DIRDLG_INI 0x0040
+#define DIRDLG_CFG 0x0100
+#define DIRDLG_IMG 0x0400
+#define DIRDLG_INP 0x0800
+#define DIRDLG_CTRLR 0x1000
+#define DIRDLG_SL 0x2000
+#define DIRDLG_SW 0x4000
+#define DIRDLG_CHEAT 0x8000
+
+#define DIRLIST_NEWENTRYTEXT "< >"
+
+#include "mui_opts.h"
+
+typedef struct
+{
+ LPCSTR lpName;
+ LPCSTR (*pfnGetTheseDirs)(void);
+ void (*pfnSetTheseDirs)(LPCSTR lpDirs);
+ BOOL bMulti;
+ int nDirDlgFlags;
+}
+DIRECTORYINFO;
+
+const DIRECTORYINFO g_directoryInfo[] =
+{
+ { "ROMs", GetRomDirs, SetRomDirs, TRUE, DIRDLG_ROMS },
+ { "Samples", GetSampleDirs, SetSampleDirs, TRUE, DIRDLG_SAMPLES },
+ { "Software File Base", GetSWDir, SetSWDir, FALSE, DIRDLG_SW }, // core cannot handle multiple path, even though we can.
+ { "Software List Base", GetSLDir, SetSLDir, FALSE, DIRDLG_SL },
+ { "Artwork", GetArtDir, SetArtDir, TRUE, 0 },
+ { "Cabinets", GetCabinetDir, SetCabinetDir, TRUE, 0 },
+ { "Cheats", GetCheatDir, SetCheatDir, TRUE, DIRDLG_CHEAT },
+ { "Config", GetCfgDir, SetCfgDir, FALSE, DIRDLG_CFG },
+ { "Control Panels", GetControlPanelDir, SetControlPanelDir, TRUE, 0 },
+ { "Controller Files", GetCtrlrDir, SetCtrlrDir, TRUE, DIRDLG_CTRLR },
+ { "Crosshairs", GetCrosshairDir, SetCrosshairDir, TRUE, 0 },
+ { "DAT files", GetDatsDir, SetDatsDir, FALSE, 0 },
+ { "Flyers", GetFlyerDir, SetFlyerDir, TRUE, 0 },
+ { "Folders", GetFolderDir, SetFolderDir, FALSE, 0 },
+ { "Fonts", GetFontDir, SetFontDir, TRUE, 0 },
+ { "Hash", GetHashDirs, SetHashDirs, TRUE, 0 },
+ { "Hard Drive Difference", GetDiffDir, SetDiffDir, TRUE, 0 },
+ { "Icons", GetIconsDir, SetIconsDir, FALSE, 0 },
+// { "Ini Files", GetIniDir, SetIniDir, FALSE, DIRDLG_INI }, // 2017-02-03 hardcoded to 'ini' now
+ { "Input files", GetInpDir, SetInpDir, TRUE, DIRDLG_INP },
+ { "Language", GetLangDir, SetLangDir, FALSE, 0 },
+ { "Marquees", GetMarqueeDir, SetMarqueeDir, TRUE, 0 },
+ { "NVRAM", GetNvramDir, SetNvramDir, TRUE, 0 },
+ { "PCBs", GetPcbDir, SetPcbDir, TRUE, 0 },
+ { "Plugins", GetPluginsDir, SetPluginsDir, FALSE, 0 },
+ { "Snapshots", GetImgDir, SetImgDir, TRUE, DIRDLG_IMG },
+ { "State", GetStateDir, SetStateDir, TRUE, 0 },
+ { "Titles", GetTitlesDir, SetTitlesDir, TRUE, 0 },
+ { NULL }
+};
+
+
+INT_PTR CALLBACK DirectoriesDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+#endif /* DIRECTORIES_H */
+
+
diff --git a/docs/release/src/osd/winui/dirwatch.cpp b/docs/release/src/osd/winui/dirwatch.cpp
new file mode 100644
index 00000000000..62d0ac7d7e9
--- /dev/null
+++ b/docs/release/src/osd/winui/dirwatch.cpp
@@ -0,0 +1,362 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+// standard windows headers
+#include <windows.h>
+
+// standard C headers
+#include <string.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "dirwatch.h"
+#include "emu.h"
+#include "mui_util.h"
+#include "strconv.h"
+
+typedef BOOL (WINAPI *READDIRECTORYCHANGESFUNC)(HANDLE hDirectory, LPVOID lpBuffer,
+ DWORD nBufferLength, BOOL bWatchSubtree, DWORD dwNotifyFilter,
+ LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped,
+ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
+
+
+struct DirWatcherEntry
+{
+ struct DirWatcherEntry *pNext;
+ HANDLE hDir;
+ WORD nIndex;
+ WORD nSubIndex;
+ BOOL bWatchSubtree;
+ OVERLAPPED overlapped;
+
+ union
+ {
+ FILE_NOTIFY_INFORMATION notify;
+ BYTE buffer[1024];
+ } u;
+
+ char szDirPath[1];
+};
+
+
+
+struct DirWatcher
+{
+ HMODULE hKernelModule;
+ READDIRECTORYCHANGESFUNC pfnReadDirectoryChanges;
+
+ HWND hwndTarget;
+ UINT nMessage;
+
+ HANDLE hRequestEvent;
+ HANDLE hResponseEvent;
+ HANDLE hThread;
+ CRITICAL_SECTION crit;
+ struct DirWatcherEntry *pEntries;
+
+ // These are posted externally
+ BOOL bQuit;
+ BOOL bWatchSubtree;
+ WORD nIndex;
+ LPCSTR pszPathList;
+};
+
+
+
+static void DirWatcher_SetupWatch(PDIRWATCHER pWatcher, struct DirWatcherEntry *pEntry)
+{
+ DWORD nDummy;
+
+ memset(&pEntry->u, 0, sizeof(pEntry->u));
+
+ pWatcher->pfnReadDirectoryChanges(pEntry->hDir,
+ &pEntry->u,
+ sizeof(pEntry->u),
+ pEntry->bWatchSubtree,
+ FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_SIZE,
+ &nDummy,
+ &pEntry->overlapped,
+ NULL);
+}
+
+
+
+static void DirWatcher_FreeEntry(struct DirWatcherEntry *pEntry)
+{
+ if (pEntry->hDir)
+ CloseHandle(pEntry->hDir);
+ free(pEntry);
+}
+
+
+
+static BOOL DirWatcher_WatchDirectory(PDIRWATCHER pWatcher, int nIndex, int nSubIndex,
+ LPCSTR pszPath, BOOL bWatchSubtree)
+{
+ struct DirWatcherEntry *pEntry;
+ HANDLE hDir;
+
+ pEntry = (DirWatcherEntry *)malloc(sizeof(*pEntry) + strlen(pszPath));
+ if (!pEntry)
+ goto error;
+ memset(pEntry, 0, sizeof(*pEntry));
+ strcpy(pEntry->szDirPath, pszPath);
+ pEntry->overlapped.hEvent = pWatcher->hRequestEvent;
+
+ hDir = win_create_file_utf8(pszPath, FILE_LIST_DIRECTORY,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ NULL, OPEN_EXISTING,
+ FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL);
+ if (!hDir || (hDir == INVALID_HANDLE_VALUE))
+ goto error;
+
+ // Populate the entry
+ pEntry->hDir = hDir;
+ pEntry->bWatchSubtree = bWatchSubtree;
+ pEntry->nIndex = nIndex;
+ pEntry->nSubIndex = nSubIndex;
+
+ // Link in the entry
+ pEntry->pNext = pWatcher->pEntries;
+ pWatcher->pEntries = pEntry;
+
+ DirWatcher_SetupWatch(pWatcher, pEntry);
+ return TRUE;
+
+error:
+ if (pEntry)
+ DirWatcher_FreeEntry(pEntry);
+ return FALSE;
+}
+
+
+
+static void DirWatcher_Signal(PDIRWATCHER pWatcher, struct DirWatcherEntry *pEntry)
+{
+ LPSTR pszFileName;
+ LPSTR pszFullFileName;
+ BOOL bPause = 0;
+ HANDLE hFile;
+ int nTries = 0;
+ TCHAR* t_filename;
+
+ {
+ int nLength;
+ nLength = WideCharToMultiByte(CP_ACP, 0, pEntry->u.notify.FileName, -1, NULL, 0, NULL, NULL);
+ pszFileName = (LPSTR) alloca(nLength * sizeof(*pszFileName));
+ WideCharToMultiByte(CP_ACP, 0, pEntry->u.notify.FileName, -1, pszFileName, nLength, NULL, NULL);
+ }
+
+ // get the full path to this new file
+ pszFullFileName = (LPSTR) alloca(strlen(pEntry->szDirPath) + strlen(pszFileName) + 2);
+ strcpy(pszFullFileName, pEntry->szDirPath);
+ strcat(pszFullFileName, "\\");
+ strcat(pszFullFileName, pszFileName);
+
+ // attempt to busy wait until any result other than ERROR_SHARING_VIOLATION
+ // is generated
+ nTries = 100;
+ do
+ {
+ hFile = win_create_file_utf8(pszFullFileName, GENERIC_READ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+ if (hFile != INVALID_HANDLE_VALUE)
+ CloseHandle(hFile);
+
+ bPause = (nTries--) && (hFile == INVALID_HANDLE_VALUE)
+ && (GetLastError() == ERROR_SHARING_VIOLATION);
+ if (bPause)
+ Sleep(10);
+ }
+ while(bPause);
+
+ // send the message (assuming that we have a target)
+ if (pWatcher->hwndTarget)
+ {
+ t_filename = ui_wstring_from_utf8(pszFileName);
+ if( !t_filename )
+ return;
+ SendMessage(pWatcher->hwndTarget,
+ pWatcher->nMessage,
+ (pEntry->nIndex << 16) | (pEntry->nSubIndex << 0),
+ (LPARAM)(LPCTSTR) win_tstring_strdup(t_filename));
+ free(t_filename);
+ }
+
+ DirWatcher_SetupWatch(pWatcher, pEntry);
+}
+
+
+
+static DWORD WINAPI DirWatcher_ThreadProc(LPVOID lpParameter)
+{
+ LPSTR pszPathList;
+ LPSTR s;
+ int nSubIndex = 0;
+ PDIRWATCHER pWatcher = (PDIRWATCHER) lpParameter;
+ struct DirWatcherEntry *pEntry;
+ struct DirWatcherEntry **ppEntry;
+
+ do
+ {
+ WaitForSingleObject(pWatcher->hRequestEvent, INFINITE);
+
+ if (pWatcher->pszPathList)
+ {
+ // remove any entries with the same nIndex
+ ppEntry = &pWatcher->pEntries;
+ while(*ppEntry)
+ {
+ if ((*ppEntry)->nIndex == pWatcher->nIndex)
+ {
+ pEntry = *ppEntry;
+ *ppEntry = pEntry->pNext;
+ DirWatcher_FreeEntry(pEntry);
+ }
+ else
+ {
+ ppEntry = &(*ppEntry)->pNext;
+ }
+ }
+
+ // allocate our own copy of the path list
+ pszPathList = (LPSTR) alloca(strlen(pWatcher->pszPathList) + 1);
+ strcpy(pszPathList, pWatcher->pszPathList);
+
+ nSubIndex = 0;
+ do
+ {
+ s = strchr(pszPathList, ';');
+ if (s)
+ *s = '\0';
+
+ if (*pszPathList)
+ {
+ DirWatcher_WatchDirectory(pWatcher, pWatcher->nIndex,
+ nSubIndex++, pszPathList, pWatcher->bWatchSubtree);
+ }
+
+ pszPathList = s ? s + 1 : NULL;
+ }
+ while(pszPathList);
+
+ pWatcher->pszPathList = NULL;
+ pWatcher->bWatchSubtree = FALSE;
+ }
+ else
+ {
+ // we have to go through the list and find what has been hit
+ for (pEntry = pWatcher->pEntries; pEntry; pEntry = pEntry->pNext)
+ {
+ if (pEntry->u.notify.Action != 0)
+ {
+ DirWatcher_Signal(pWatcher, pEntry);
+ }
+ }
+ }
+
+ SetEvent(pWatcher->hResponseEvent);
+ }
+ while(!pWatcher->bQuit);
+ return 0;
+}
+
+
+
+PDIRWATCHER DirWatcher_Init(HWND hwndTarget, UINT nMessage)
+{
+ struct DirWatcher *pWatcher = NULL;
+ DWORD nThreadID = 0;
+
+ // This feature does not exist on Win9x
+ if (GetVersion() >= 0x80000000)
+ goto error;
+
+ pWatcher = (DirWatcher *)malloc(sizeof(struct DirWatcher));
+ if (!pWatcher)
+ goto error;
+ memset(pWatcher, 0, sizeof(*pWatcher));
+ InitializeCriticalSection(&pWatcher->crit);
+
+ pWatcher->hKernelModule = LoadLibrary(TEXT("kernel32.dll"));
+ if (!pWatcher->hKernelModule)
+ goto error;
+
+ pWatcher->pfnReadDirectoryChanges = (READDIRECTORYCHANGESFUNC)
+ GetProcAddress(pWatcher->hKernelModule, "ReadDirectoryChangesW");
+ if (!pWatcher->pfnReadDirectoryChanges)
+ goto error;
+
+ pWatcher->hRequestEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (!pWatcher->hRequestEvent)
+ goto error;
+
+ pWatcher->hResponseEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (!pWatcher->hRequestEvent)
+ goto error;
+
+ pWatcher->hThread = CreateThread(NULL, 0, DirWatcher_ThreadProc,
+ (LPVOID) pWatcher, 0, &nThreadID);
+
+ pWatcher->hwndTarget = hwndTarget;
+ pWatcher->nMessage = nMessage;
+ return pWatcher;
+
+error:
+ if (pWatcher)
+ DirWatcher_Free(pWatcher);
+ return NULL;
+}
+
+
+
+BOOL DirWatcher_Watch(PDIRWATCHER pWatcher, WORD nIndex, LPCSTR pszPathList, BOOL bWatchSubtrees)
+{
+ EnterCriticalSection(&pWatcher->crit);
+
+ pWatcher->nIndex = nIndex;
+ pWatcher->pszPathList = pszPathList;
+ pWatcher->bWatchSubtree = bWatchSubtrees;
+ SetEvent(pWatcher->hRequestEvent);
+
+ WaitForSingleObject(pWatcher->hResponseEvent, INFINITE);
+ LeaveCriticalSection(&pWatcher->crit);
+ return TRUE;
+}
+
+
+
+void DirWatcher_Free(PDIRWATCHER pWatcher)
+{
+ struct DirWatcherEntry *pEntry;
+ struct DirWatcherEntry *pNextEntry;
+
+ if (pWatcher->hThread)
+ {
+ EnterCriticalSection(&pWatcher->crit);
+ pWatcher->bQuit = TRUE;
+ SetEvent(pWatcher->hRequestEvent);
+ WaitForSingleObject(pWatcher->hThread, 1000);
+ LeaveCriticalSection(&pWatcher->crit);
+ CloseHandle(pWatcher->hThread);
+ }
+
+ DeleteCriticalSection(&pWatcher->crit);
+
+ pEntry = pWatcher->pEntries;
+ while(pEntry)
+ {
+ pNextEntry = pEntry->pNext;
+ DirWatcher_FreeEntry(pEntry);
+ pEntry = pNextEntry;
+ }
+
+ if (pWatcher->hKernelModule)
+ FreeLibrary(pWatcher->hKernelModule);
+ if (pWatcher->hRequestEvent)
+ CloseHandle(pWatcher->hRequestEvent);
+ if (pWatcher->hResponseEvent)
+ CloseHandle(pWatcher->hResponseEvent);
+ free(pWatcher);
+}
+
diff --git a/docs/release/src/osd/winui/dirwatch.h b/docs/release/src/osd/winui/dirwatch.h
new file mode 100644
index 00000000000..1a759568c10
--- /dev/null
+++ b/docs/release/src/osd/winui/dirwatch.h
@@ -0,0 +1,13 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef DIRWATCHER_H
+#define DIRWATCHER_H
+
+typedef struct DirWatcher *PDIRWATCHER;
+
+PDIRWATCHER DirWatcher_Init(HWND hwndTarget, UINT nMessage);
+BOOL DirWatcher_Watch(PDIRWATCHER pWatcher, WORD nIndex, LPCSTR pszPathList, BOOL bWatchSubtrees);
+void DirWatcher_Free(PDIRWATCHER pWatcher);
+
+#endif
diff --git a/docs/release/src/osd/winui/dxdecode.cpp b/docs/release/src/osd/winui/dxdecode.cpp
new file mode 100644
index 00000000000..7fd82828fe8
--- /dev/null
+++ b/docs/release/src/osd/winui/dxdecode.cpp
@@ -0,0 +1,194 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+// standard windows headers
+#include <windows.h>
+#include <ddraw.h>
+
+// standard C headers
+#include <stdio.h>
+
+// MAME/MAMEUI headers
+#include "directinput.h"
+#include "dxdecode.h"
+
+/***************************************************************/
+
+typedef struct tagERRORCODE
+{
+ HRESULT hr;
+ const char *szError;
+} ERRORCODE, * LPERRORCODE;
+
+/***************************************************************/
+static const ERRORCODE g_ErrorCode[] =
+{
+ { DDERR_ALREADYINITIALIZED, "DDERR_ALREADYINITIALIZED"},
+ { DDERR_CANNOTATTACHSURFACE, "DDERR_CANNOTATTACHSURFACE"},
+ { DDERR_CANNOTDETACHSURFACE, "DDERR_CANNOTDETACHSURFACE"},
+ { DDERR_CURRENTLYNOTAVAIL, "DDERR_CURRENTLYNOTAVAIL"},
+ { DDERR_EXCEPTION, "DDERR_EXCEPTION"},
+ { DDERR_GENERIC, "DDERR_GENERIC"},
+ { DDERR_HEIGHTALIGN, "DDERR_HEIGHTALIGN"},
+ { DDERR_INCOMPATIBLEPRIMARY, "DDERR_INCOMPATIBLEPRIMARY"},
+ { DDERR_INVALIDCAPS, "DDERR_INVALIDCAPS"},
+ { DDERR_INVALIDCLIPLIST, "DDERR_INVALIDCLIPLIST"},
+ { DDERR_INVALIDMODE, "DDERR_INVALIDMODE"},
+ { DDERR_INVALIDOBJECT, "DDERR_INVALIDOBJECT"},
+ { DDERR_INVALIDPARAMS, "DDERR_INVALIDPARAMS"},
+ { DDERR_INVALIDPIXELFORMAT, "DDERR_INVALIDPIXELFORMAT"},
+ { DDERR_INVALIDRECT, "DDERR_INVALIDRECT"},
+ { DDERR_LOCKEDSURFACES, "DDERR_LOCKEDSURFACES"},
+ { DDERR_NO3D, "DDERR_NO3D"},
+ { DDERR_NOALPHAHW, "DDERR_NOALPHAHW"},
+ { DDERR_NOCLIPLIST, "DDERR_NOCLIPLIST"},
+ { DDERR_NOCOLORCONVHW, "DDERR_NOCOLORCONVHW"},
+ { DDERR_NOCOOPERATIVELEVELSET, "DDERR_NOCOOPERATIVELEVELSET"},
+ { DDERR_NOCOLORKEY, "DDERR_NOCOLORKEY"},
+ { DDERR_NOCOLORKEYHW, "DDERR_NOCOLORKEYHW"},
+ { DDERR_NODIRECTDRAWSUPPORT, "DDERR_NODIRECTDRAWSUPPORT"},
+ { DDERR_NOEXCLUSIVEMODE, "DDERR_NOEXCLUSIVEMODE"},
+ { DDERR_NOFLIPHW, "DDERR_NOFLIPHW"},
+ { DDERR_NOGDI, "DDERR_NOGDI"},
+ { DDERR_NOMIRRORHW, "DDERR_NOMIRRORHW"},
+ { DDERR_NOTFOUND, "DDERR_NOTFOUND"},
+ { DDERR_NOOVERLAYHW, "DDERR_NOOVERLAYHW"},
+ { DDERR_NORASTEROPHW, "DDERR_NORASTEROPHW"},
+ { DDERR_NOROTATIONHW, "DDERR_NOROTATIONHW"},
+ { DDERR_NOSTRETCHHW, "DDERR_NOSTRETCHHW"},
+ { DDERR_NOT4BITCOLOR, "DDERR_NOT4BITCOLOR"},
+ { DDERR_NOT4BITCOLORINDEX, "DDERR_NOT4BITCOLORINDEX"},
+ { DDERR_NOT8BITCOLOR, "DDERR_NOT8BITCOLOR"},
+ { DDERR_NOTEXTUREHW, "DDERR_NOTEXTUREHW"},
+ { DDERR_NOVSYNCHW, "DDERR_NOVSYNCHW"},
+ { DDERR_NOZBUFFERHW, "DDERR_NOZBUFFERHW"},
+ { DDERR_NOZOVERLAYHW, "DDERR_NOZOVERLAYHW"},
+ { DDERR_OUTOFCAPS, "DDERR_OUTOFCAPS"},
+ { DDERR_OUTOFMEMORY, "DDERR_OUTOFMEMORY"},
+ { DDERR_OUTOFVIDEOMEMORY, "DDERR_OUTOFVIDEOMEMORY"},
+ { DDERR_OVERLAYCANTCLIP, "DDERR_OVERLAYCANTCLIP"},
+ { DDERR_OVERLAYCOLORKEYONLYONEACTIVE, "DDERR_OVERLAYCOLORKEYONLYONEACTIVE"},
+ { DDERR_PALETTEBUSY, "DDERR_PALETTEBUSY"},
+ { DDERR_COLORKEYNOTSET, "DDERR_COLORKEYNOTSET"},
+ { DDERR_SURFACEALREADYATTACHED, "DDERR_SURFACEALREADYATTACHED"},
+ { DDERR_SURFACEALREADYDEPENDENT, "DDERR_SURFACEALREADYDEPENDENT"},
+ { DDERR_SURFACEBUSY, "DDERR_SURFACEBUSY"},
+ { DDERR_CANTLOCKSURFACE, "DDERR_CANTLOCKSURFACE"},
+ { DDERR_SURFACEISOBSCURED, "DDERR_SURFACEISOBSCURED"},
+ { DDERR_SURFACELOST, "DDERR_SURFACELOST"},
+ { DDERR_SURFACENOTATTACHED, "DDERR_SURFACENOTATTACHED"},
+ { DDERR_TOOBIGHEIGHT, "DDERR_TOOBIGHEIGHT"},
+ { DDERR_TOOBIGSIZE, "DDERR_TOOBIGSIZE"},
+ { DDERR_TOOBIGWIDTH, "DDERR_TOOBIGWIDTH"},
+ { DDERR_UNSUPPORTED, "DDERR_UNSUPPORTED"},
+ { DDERR_UNSUPPORTEDFORMAT, "DDERR_UNSUPPORTEDFORMAT"},
+ { DDERR_UNSUPPORTEDMASK, "DDERR_UNSUPPORTEDMASK"},
+ { DDERR_VERTICALBLANKINPROGRESS, "DDERR_VERTICALBLANKINPROGRESS"},
+ { DDERR_WASSTILLDRAWING, "DDERR_WASSTILLDRAWING"},
+ { DDERR_XALIGN, "DDERR_XALIGN"},
+ { DDERR_INVALIDDIRECTDRAWGUID, "DDERR_INVALIDDIRECTDRAWGUID"},
+ { DDERR_DIRECTDRAWALREADYCREATED, "DDERR_DIRECTDRAWALREADYCREATED"},
+ { DDERR_NODIRECTDRAWHW, "DDERR_NODIRECTDRAWHW"},
+ { DDERR_PRIMARYSURFACEALREADYEXISTS, "DDERR_PRIMARYSURFACEALREADYEXISTS"},
+ { DDERR_NOEMULATION, "DDERR_NOEMULATION"},
+ { DDERR_REGIONTOOSMALL, "DDERR_REGIONTOOSMALL"},
+ { DDERR_CLIPPERISUSINGHWND, "DDERR_CLIPPERISUSINGHWND"},
+ { DDERR_NOCLIPPERATTACHED, "DDERR_NOCLIPPERATTACHED"},
+ { DDERR_NOHWND, "DDERR_NOHWND"},
+ { DDERR_HWNDSUBCLASSED, "DDERR_HWNDSUBCLASSED"},
+ { DDERR_HWNDALREADYSET, "DDERR_HWNDALREADYSET"},
+ { DDERR_NOPALETTEATTACHED, "DDERR_NOPALETTEATTACHED"},
+ { DDERR_NOPALETTEHW, "DDERR_NOPALETTEHW"},
+ { DDERR_BLTFASTCANTCLIP, "DDERR_BLTFASTCANTCLIP"},
+ { DDERR_NOBLTHW, "DDERR_NOBLTHW"},
+ { DDERR_NODDROPSHW, "DDERR_NODDROPSHW"},
+ { DDERR_OVERLAYNOTVISIBLE, "DDERR_OVERLAYNOTVISIBLE"},
+ { DDERR_NOOVERLAYDEST, "DDERR_NOOVERLAYDEST"},
+ { DDERR_INVALIDPOSITION, "DDERR_INVALIDPOSITION"},
+ { DDERR_NOTAOVERLAYSURFACE, "DDERR_NOTAOVERLAYSURFACE"},
+ { DDERR_EXCLUSIVEMODEALREADYSET, "DDERR_EXCLUSIVEMODEALREADYSET"},
+ { DDERR_NOTFLIPPABLE, "DDERR_NOTFLIPPABLE"},
+ { DDERR_CANTDUPLICATE, "DDERR_CANTDUPLICATE"},
+ { DDERR_NOTLOCKED, "DDERR_NOTLOCKED"},
+ { DDERR_CANTCREATEDC, "DDERR_CANTCREATEDC"},
+ { DDERR_NODC, "DDERR_NODC"},
+ { DDERR_WRONGMODE, "DDERR_WRONGMODE"},
+ { DDERR_IMPLICITLYCREATED, "DDERR_IMPLICITLYCREATED"},
+ { DDERR_NOTPALETTIZED, "DDERR_NOTPALETTIZED"},
+ { DDERR_UNSUPPORTEDMODE, "DDERR_UNSUPPORTEDMODE"},
+ { DDERR_NOMIPMAPHW, "DDERR_NOMIPMAPHW"},
+ { DDERR_INVALIDSURFACETYPE, "DDERR_INVALIDSURFACETYPE"},
+
+ { DDERR_NOOPTIMIZEHW, "DDERR_NOOPTIMIZEHW"},
+ { DDERR_NOTLOADED, "DDERR_NOTLOADED"},
+
+ { DDERR_DCALREADYCREATED, "DDERR_DCALREADYCREATED"},
+
+ { DDERR_NONONLOCALVIDMEM, "DDERR_NONONLOCALVIDMEM"},
+ { DDERR_CANTPAGELOCK, "DDERR_CANTPAGELOCK"},
+ { DDERR_CANTPAGEUNLOCK, "DDERR_CANTPAGEUNLOCK"},
+ { DDERR_NOTPAGELOCKED, "DDERR_NOTPAGELOCKED"},
+
+ { DDERR_MOREDATA, "DDERR_MOREDATA"},
+ { DDERR_VIDEONOTACTIVE, "DDERR_VIDEONOTACTIVE"},
+ { DDERR_DEVICEDOESNTOWNSURFACE, "DDERR_DEVICEDOESNTOWNSURFACE"},
+ { DDERR_NOTINITIALIZED, "DDERR_NOTINITIALIZED"},
+
+ { DIERR_OLDDIRECTINPUTVERSION, "DIERR_OLDDIRECTINPUTVERSION" },
+ { DIERR_BETADIRECTINPUTVERSION, "DIERR_BETADIRECTINPUTVERSION" },
+ { DIERR_BADDRIVERVER, "DIERR_BADDRIVERVER" },
+ { DIERR_DEVICENOTREG, "DIERR_DEVICENOTREG" },
+ { DIERR_NOTFOUND, "DIERR_NOTFOUND" },
+ { DIERR_OBJECTNOTFOUND, "DIERR_OBJECTNOTFOUND" },
+ { DIERR_INVALIDPARAM, "DIERR_INVALIDPARAM" },
+ { DIERR_NOINTERFACE, "DIERR_NOINTERFACE" },
+ { DIERR_GENERIC, "DIERR_GENERIC" },
+ { DIERR_OUTOFMEMORY, "DIERR_OUTOFMEMORY" },
+ { DIERR_UNSUPPORTED, "DIERR_UNSUPPORTED" },
+ { DIERR_NOTINITIALIZED, "DIERR_NOTINITIALIZED" },
+ { DIERR_ALREADYINITIALIZED, "DIERR_ALREADYINITIALIZED" },
+ { DIERR_NOAGGREGATION, "DIERR_NOAGGREGATION" },
+ { DIERR_OTHERAPPHASPRIO, "DIERR_OTHERAPPHASPRIO" },
+ { DIERR_INPUTLOST, "DIERR_INPUTLOST" },
+ { DIERR_ACQUIRED, "DIERR_ACQUIRED" },
+ { DIERR_NOTACQUIRED, "DIERR_NOTACQUIRED" },
+ { DIERR_READONLY, "DIERR_READONLY" },
+ { DIERR_HANDLEEXISTS, "DIERR_HANDLEEXISTS" },
+ { E_PENDING, "E_PENDING" },
+ { (HRESULT)DIERR_INSUFFICIENTPRIVS, "DIERR_INSUFFICIENTPRIVS" },
+ { (HRESULT)DIERR_DEVICEFULL, "DIERR_DEVICEFULL" },
+ { (HRESULT)DIERR_MOREDATA, "DIERR_MOREDATA" },
+ { (HRESULT)DIERR_NOTDOWNLOADED, "DIERR_NOTDOWNLOADED" },
+ { (HRESULT)DIERR_HASEFFECTS, "DIERR_HASEFFECTS" },
+ { (HRESULT)DIERR_NOTEXCLUSIVEACQUIRED,"DIERR_NOTEXCLUSIVEACQUIRED" },
+ { (HRESULT)DIERR_INCOMPLETEEFFECT, "DIERR_INCOMPLETEEFFECT" },
+ { (HRESULT)DIERR_NOTBUFFERED, "DIERR_NOTBUFFERED" },
+ { (HRESULT)DIERR_EFFECTPLAYING, "DIERR_EFFECTPLAYING" },
+ //{ (HRESULT)DIERR_UNPLUGGED, "DIERR_UNPLUGGED" },
+
+ { E_NOINTERFACE, "E_NOINTERFACE" }
+
+};
+
+/***************************************************************/
+
+/*
+ DirectXDecodeError: Return a string description of the given DirectX
+ error code.
+*/
+
+const char * DirectXDecodeError(HRESULT errorval)
+{
+ int i;
+ static char tmp[64];
+
+ for (i = 0; i < (sizeof(g_ErrorCode) / sizeof(g_ErrorCode[0])); i++)
+ {
+ if (g_ErrorCode[i].hr == errorval)
+ {
+ return g_ErrorCode[i].szError;
+ }
+ }
+ sprintf(tmp, "UNKNOWN: 0x%x", (unsigned int)errorval);
+ return tmp;
+}
diff --git a/docs/release/src/osd/winui/dxdecode.h b/docs/release/src/osd/winui/dxdecode.h
new file mode 100644
index 00000000000..0de32e83623
--- /dev/null
+++ b/docs/release/src/osd/winui/dxdecode.h
@@ -0,0 +1,13 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/* dxdecode.h for client */
+
+/* Main header file for dxdecode.cpp */
+
+#ifndef DXDECODE_H
+#define DXDECODE_H
+
+extern const char* DirectXDecodeError(HRESULT errorval);
+
+#endif /* DXDECODE_H */
diff --git a/docs/release/src/osd/winui/game_opts.h b/docs/release/src/osd/winui/game_opts.h
new file mode 100644
index 00000000000..5f5f98d737b
--- /dev/null
+++ b/docs/release/src/osd/winui/game_opts.h
@@ -0,0 +1,166 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef __GAME_OPTS_H__
+#define __GAME_OPTS_H__
+
+class game_options
+{
+public:
+ // construction/destruction
+ game_options()
+ {
+ m_total = driver_list::total();
+ m_list.reserve(m_total);
+
+ driver_options option = { -1, -1, -1, 0, 0 };
+
+ for (int i = 0; i < m_total; i++)
+ m_list[i] = option;
+ }
+
+ int rom(int index) { assert(0 <= index && index < driver_list::total()); return m_list[index].rom; }
+ void rom(int index, int val) { assert(0 <= index && index < driver_list::total()); m_list[index].rom = val; }
+
+ int sample(int index) { assert(0 <= index && index < driver_list::total()); return m_list[index].sample; }
+ void sample(int index, int val) { assert(0 <= index && index < driver_list::total()); m_list[index].sample = val; }
+
+ int cache(int index) { assert(0 <= index && index < driver_list::total()); return m_list[index].cache; }
+ void cache(int index, int val) { assert(0 <= index && index < driver_list::total()); m_list[index].cache = val; }
+
+ int play_count(int index) { assert(0 <= index && index < driver_list::total()); return m_list[index].play_count; }
+ void play_count(int index, int val) { assert(0 <= index && index < driver_list::total()); m_list[index].play_count = val; }
+
+ int play_time(int index) { assert(0 <= index && index < driver_list::total()); return m_list[index].play_time; }
+ void play_time(int index, int val) { assert(0 <= index && index < driver_list::total()); m_list[index].play_time = val; }
+
+ void add_entries()
+ {
+ options_entry entry[2] = { { 0 }, { 0 } };
+
+ // 1:Rom, 2:Sample, 3:Cache, 4:Play Count, 5:Play Time
+ entry[0].defvalue = "-1;-1;-1";
+ entry[0].flags = OPTION_STRING;
+ entry[0].description = NULL;
+
+ for (int i = 0; i < m_total; i++)
+ {
+ entry[0].name = driver_list::driver(i).name;
+ m_info.add_entries(entry);
+ }
+ }
+
+ osd_file::error load_file(const char *filename)
+ {
+ emu_file file(OPEN_FLAG_READ);
+
+ osd_file::error filerr = file.open(filename);
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string error_string;
+ m_info.parse_ini_file(file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ }
+
+ load_settings();
+
+ return filerr;
+ }
+
+ void output_ini(std::string &buffer, const char *header = NULL)
+ {
+ std::string inibuffer = m_info.output_ini();
+
+ if (header && !inibuffer.empty())
+ {
+ buffer.append(string_format("#\n# %s\n#\n", header));
+ buffer.append(inibuffer);
+ }
+ }
+
+ void load_settings(void)
+ {
+ std::string value_str;
+
+ for (int i = 0; i < m_total; i++)
+ {
+ value_str.assign(m_info.value(driver_list::driver(i).name));
+
+ if (!value_str.empty())
+ load_settings(value_str.c_str(), i);
+ }
+ }
+
+ void load_settings(const char *str, int index)
+ {
+ path_iterator path(str);
+ std::string curpath;
+ int value_int;
+
+ for (int i = 0; i < 5; i++)
+ {
+ if ( path.next(curpath) )
+ {
+ if (!curpath.empty() && (sscanf(curpath.c_str(), "%d", &value_int) == 1))
+ {
+ switch (i)
+ {
+ case 0: m_list[index].rom = value_int; break;
+ case 1: m_list[index].sample = value_int; break;
+ case 2: m_list[index].cache = value_int; break;
+ case 3: m_list[index].play_count = value_int; break;
+ case 4: m_list[index].play_time = value_int; break;
+ }
+ }
+ }
+ else
+ break;
+ }
+ }
+
+ void save_settings(void)
+ {
+ std::string value_str;
+ std::string error_string;
+
+ for (int i = 0; i < m_total; i++)
+ {
+ value_str = string_format("%d;%d;%d;%d;%d", m_list[i].rom, m_list[i].sample, m_list[i].cache, m_list[i].play_count, m_list[i].play_time);
+ m_info.set_value(driver_list::driver(i).name, value_str.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ }
+
+ osd_file::error save_file(const char *filename)
+ {
+ osd_file::error filerr;
+ std::string inistring;
+
+ save_settings();
+
+ output_ini(inistring, "GAME STATISTICS");
+
+ emu_file file(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ filerr = file.open(filename);
+ if (filerr == osd_file::error::NONE)
+ file.puts(inistring.c_str());
+
+ return filerr;
+ }
+
+private:
+ core_options m_info;
+ int m_total;
+
+ struct driver_options
+ {
+ int rom;
+ int sample;
+ int cache;
+ int play_count;
+ int play_time;
+ };
+
+ std::vector<driver_options> m_list;
+};
+
+#endif // __GAME_OPTS_H__
+
diff --git a/docs/release/src/osd/winui/hbmame.rc b/docs/release/src/osd/winui/hbmame.rc
new file mode 100644
index 00000000000..f90e47d750c
--- /dev/null
+++ b/docs/release/src/osd/winui/hbmame.rc
@@ -0,0 +1,20 @@
+#include "windows.h"
+#include "commctrl.h"
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+//
+// Icon
+//
+
+2 ICON DISCARDABLE "res\\hbmame.ico"
+#endif // English (U.S.) resources
+
+#include "hbmameui.rc"
diff --git a/docs/release/src/osd/winui/hbmameui.rc b/docs/release/src/osd/winui/hbmameui.rc
new file mode 100644
index 00000000000..e946a5ad6a3
--- /dev/null
+++ b/docs/release/src/osd/winui/hbmameui.rc
@@ -0,0 +1,1457 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "newuires.h"
+#include "resource.h"
+
+// Generated Help ID header file
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.hm"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h"
+#include "commctrl.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (USA) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MAIN_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Exit", ID_FILE_EXIT
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&About HBMAMEUI", ID_ABOUT
+ END
+END
+
+IDR_UI_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM "P&layback Input...", ID_FILE_PLAY_BACK
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &Wave Output...", ID_FILE_PLAY_RECORD_WAVE
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &MNG Output...", ID_FILE_PLAY_RECORD_MNG
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &uncompressed AVI Output...",
+ ID_FILE_PLAY_RECORD_AVI
+ MENUITEM SEPARATOR
+ MENUITEM "Loa&d Savestate...", ID_FILE_LOADSTATE
+ MENUITEM SEPARATOR
+
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM SEPARATOR
+ MENUITEM "Audi&t existing sets", ID_FILE_AUDIT_X
+ MENUITEM "&Audit all sets", ID_FILE_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit", ID_FILE_EXIT
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "&Toolbar\tAlt+T", ID_VIEW_TOOLBARS
+ MENUITEM "&Status bar\tAlt+S", ID_VIEW_STATUS
+ MENUITEM "Fold&er List\tAlt+D", ID_VIEW_FOLDERS
+ MENUITEM "&Picture Area\tAlt+P", ID_VIEW_PICTURE_AREA
+ MENUITEM "Screenshot Ta&b\tAlt+B", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ MENUITEM "&Fullscreen\tF11", ID_VIEW_FULLSCREEN
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "L&arge Icons", ID_VIEW_LARGE_ICON
+ MENUITEM "S&mall Icons", ID_VIEW_SMALL_ICON
+ MENUITEM "&List", ID_VIEW_LIST_MENU
+ MENUITEM "&Details", ID_VIEW_DETAIL
+ MENUITEM "&Grouped", ID_VIEW_GROUPED
+ MENUITEM SEPARATOR
+ POPUP "Arrange &Icons"
+ BEGIN
+ MENUITEM "by &Name", ID_VIEW_BYGAME
+ MENUITEM "by D&irectory", ID_VIEW_BYDIRECTORY
+ MENUITEM "by &Manufacturer", ID_VIEW_BYMANUFACTURER
+ MENUITEM "by Times &Played", ID_VIEW_BYTIMESPLAYED
+ MENUITEM "by &Type", ID_VIEW_BYTYPE
+ MENUITEM "by &Date", ID_VIEW_BYYEAR
+ END
+ MENUITEM "Line &Up Icons", ID_VIEW_LINEUPICONS
+ MENUITEM SEPARATOR
+ MENUITEM "&Refresh\tF5", ID_UPDATE_GAMELIST
+ MENUITEM "&Custom Filters...\tCtrl+F", ID_CONTEXT_FILTERS
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+ POPUP "&Options"
+ BEGIN
+ MENUITEM "&Interface Options", ID_OPTIONS_INTERFACE
+ MENUITEM "Default Game &Options", ID_OPTIONS_DEFAULTS
+ MENUITEM "&Directories", ID_OPTIONS_DIR
+ MENUITEM SEPARATOR
+ MENUITEM "Game List &Font", ID_OPTIONS_FONT
+ MENUITEM "Game List &Clone Color", ID_OPTIONS_CLONE_COLOR
+ MENUITEM SEPARATOR
+
+ MENUITEM "&Background Image", ID_OPTIONS_BG
+ MENUITEM SEPARATOR
+ MENUITEM "&Reset to Default", ID_OPTIONS_RESET_DEFAULTS
+
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "What's New in MAME", ID_HELP_WHATS_NEW
+ MENUITEM "&Contents\tF1", ID_HELP_CONTENTS
+ MENUITEM "&About", ID_HELP_ABOUT
+ END
+END
+
+IDR_CONTEXT_MENU MENU
+BEGIN
+ POPUP "Context Menu"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM SEPARATOR
+ MENUITEM "&Add to Custom Folder...", ID_CONTEXT_ADD_CUSTOM
+ MENUITEM "R&emove From This Folder", ID_CONTEXT_REMOVE_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ MENUITEM "&Select Random Game", ID_CONTEXT_SELECT_RANDOM
+ MENUITEM SEPARATOR
+ MENUITEM "Rese&t Play Stats", ID_CONTEXT_RESET_PLAYSTATS
+ MENUITEM SEPARATOR
+ MENUITEM "A&udit", ID_GAME_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM "Source properties", ID_FOLDER_SOURCEPROPERTIES
+// MENUITEM "&Vector properties", ID_FOLDER_VECTORPROPERTIES
+ END
+END
+
+IDR_CONTEXT_HEADER MENU
+BEGIN
+ POPUP "Header Context Menu"
+ BEGIN
+ MENUITEM "Sort &Ascending", ID_SORT_ASCENDING
+ MENUITEM "Sort &Descending", ID_SORT_DESCENDING
+ MENUITEM SEPARATOR
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+END
+
+IDR_CONTEXT_TREE MENU
+BEGIN
+ POPUP "Context Menu Tree"
+ BEGIN
+ MENUITEM "&Rename", ID_CONTEXT_RENAME_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ POPUP "&Show Folders"
+ BEGIN
+ MENUITEM "overridden by code", ID_CONTEXT_SHOW_FOLDER_START
+
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Audit", ID_FOLDER_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "&Properties", ID_FOLDER_PROPERTIES
+ END
+END
+
+IDR_CONTEXT_SCREENSHOT MENU
+BEGIN
+ POPUP "Context Screen Shot"
+ BEGIN
+ MENUITEM "Show Tab &Control", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Snapshot", ID_VIEW_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_VIEW_TAB_FLYER
+ MENUITEM "&Cabinet", ID_VIEW_TAB_CABINET
+ MENUITEM "&Marquee", ID_VIEW_TAB_MARQUEE
+ MENUITEM "&Title", ID_VIEW_TAB_TITLE
+ MENUITEM "Control &Panel", ID_VIEW_TAB_CONTROL_PANEL
+ MENUITEM "PC&B", ID_VIEW_TAB_PCB
+ MENUITEM "&History", ID_VIEW_TAB_HISTORY
+ END
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_RUNTIME_MENU MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Load State...", ID_FILE_LOADSTATE_NEWUI, GRAYED
+ MENUITEM "&Save State", ID_FILE_SAVESTATE, GRAYED
+ MENUITEM "S&ave State As...", ID_FILE_SAVESTATE_AS, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "Save Sc&reenshot", ID_FILE_SAVESCREENSHOT
+ MENUITEM SEPARATOR
+ MENUITEM "&Hide Menubar", ID_FILE_TOGGLEMENUBAR
+ MENUITEM "&Full Screen\tAlt+Enter", ID_FILE_FULLSCREEN
+ MENUITEM "Partial Keyboard Emulation", ID_FILE_UIACTIVE
+ MENUITEM "Show Tab Menu", ID_FILE_OLDUI
+ MENUITEM SEPARATOR
+ MENUITEM "&Exit", ID_FILE_EXIT_NEWUI
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "Paste", ID_EDIT_PASTE
+ END
+ POPUP "&Options"
+ BEGIN
+ MENUITEM "&Pause", ID_OPTIONS_PAUSE, GRAYED
+ MENUITEM "Soft &Reset", ID_OPTIONS_SOFTRESET
+ MENUITEM "Ha&rd Reset", ID_OPTIONS_HARDRESET
+ MENUITEM SEPARATOR
+ POPUP "&Keyboard"
+ BEGIN
+ MENUITEM "Emulated", ID_KEYBOARD_EMULATED
+ MENUITEM "Natural", ID_KEYBOARD_NATURAL
+ MENUITEM SEPARATOR
+ MENUITEM "Customise Emulated Keyboard...", ID_KEYBOARD_CUSTOMIZE
+ END
+ MENUITEM "&Joysticks", ID_OPTIONS_JOYSTICKS, GRAYED
+ POPUP "&Video"
+ BEGIN
+ MENUITEM SEPARATOR
+ MENUITEM "Rotate 0 degrees", ID_VIDEO_ROTATE_0
+ MENUITEM "Rotate 90 degrees", ID_VIDEO_ROTATE_90
+ MENUITEM "Rotate 180 degrees", ID_VIDEO_ROTATE_180
+ MENUITEM "Rotate 270 degrees", ID_VIDEO_ROTATE_270
+ END
+ MENUITEM "&Configuration...", ID_OPTIONS_CONFIGURATION
+ MENUITEM "&DIP Switches...", ID_OPTIONS_DIPSWITCHES
+ MENUITEM "&Miscellaneous Inputs...", ID_OPTIONS_MISCINPUT
+ MENUITEM "&Analog Controls...", ID_OPTIONS_ANALOGCONTROLS
+ MENUITEM SEPARATOR
+ POPUP "&Frameskip"
+ BEGIN
+ MENUITEM "Auto", ID_FRAMESKIP_AUTO
+ END
+ POPUP "Maximum &Speed"
+ BEGIN
+ MENUITEM "50%", ID_THROTTLE_50
+ MENUITEM "100%", ID_THROTTLE_100
+ MENUITEM "200%", ID_THROTTLE_200
+ MENUITEM "500%", ID_THROTTLE_500
+ MENUITEM "1000%", ID_THROTTLE_1000
+ MENUITEM "Unlimited", ID_THROTTLE_UNTHROTTLED
+ END
+ MENUITEM "Show &FPS", ID_OPTIONS_TOGGLEFPS
+ END
+ POPUP "&Media"
+ BEGIN
+ MENUITEM SEPARATOR
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "About This System...", ID_HELP_ABOUTSYSTEM
+ MENUITEM "&About HBMAME...", ID_HELP_ABOUT_NEWUI
+ END
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "resource.h\\r\n"
+ "newuires.h\0"
+END
+
+2 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#define NOWINRES\r\n"
+ "#include ""windows.h""\r\n"
+ "#include ""commctrl.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#include ""hbmamevers.rc"" // Version block\r\n"
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_MAMEUI_ICON ICON "res\\hbmameui.ico"
+IDI_WIN_ROMS ICON "res\\win_roms.ico"
+IDI_WIN_NOROMS ICON "res\\win_noro.ico"
+IDI_WIN_UNKNOWN ICON "res\\win_unkn.ico"
+IDI_WIN_CLONE ICON "res\\win_clone.ico"
+IDI_WIN_REDX ICON "res\\win_redx.ico"
+IDI_FOLDER_AVAILABLE ICON "res\\foldavail.ico"
+IDI_FOLDER ICON "res\\folder.ico"
+IDI_FOLDER_MANUFACTURER ICON "res\\foldmanu.ico"
+IDI_FOLDER_OPEN ICON "res\\foldopen.ico"
+IDI_FOLDER_UNAVAILABLE ICON "res\\foldunav.ico"
+IDI_FOLDER_HORIZONTAL ICON "res\\horz.ico"
+IDI_FOLDER_VERTICAL ICON "res\\vert.ico"
+IDI_MANUFACTURER ICON "res\\manufact.ico"
+IDI_FOLDER_YEAR ICON "res\\foldyear.ico"
+IDI_FOLDER_SOURCE ICON "res\\foldsrc.ico"
+IDI_WORKING ICON "res\\working.ico"
+IDI_NONWORKING ICON "res\\nonwork.ico"
+IDI_YEAR ICON "res\\year.ico"
+IDI_KEYBOARD ICON "res\\keyboard.ico"
+IDI_JOYSTICK ICON "res\\joystick.ico"
+IDI_CPU ICON "res\\cpu.ico"
+IDI_SOUND ICON "res\\samples.ico"
+IDI_SOUNDTAB ICON "res\\sound.ico"
+IDI_SOURCE ICON "res\\source.ico"
+IDI_HARDDISK ICON "res\\harddisk.ico"
+IDI_DISPLAY ICON "res\\display.ico"
+IDI_CHECKMARK ICON "res\\checkmark.ico"
+IDI_HEADER_UP ICON "res\\header_up.ico"
+IDI_HEADER_DOWN ICON "res\\header_down.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUT DIALOG DISCARDABLE 0, 0, 296, 129
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About HBMAMEUI"
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "&OK",IDOK,200,109,50,14,WS_GROUP
+ CTEXT "HomeBrew MAME",IDC_STATIC,147,7,142,
+ 11,NOT WS_GROUP
+ CTEXT "Version 0",IDC_VERSION,147,18,142,11,NOT WS_GROUP
+ CTEXT "Copyright (C) 1997-2017 The HBMAME Team",IDC_STATIC,147,
+ 29,142,10,NOT WS_GROUP
+ CTEXT "MAMEUI version by",IDC_STATIC,147,51,142,10,NOT
+ WS_GROUP
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,147,44,142,1
+ CTEXT "Christopher Kirmse and the MAMEUI team",IDC_STATIC,147,
+ 62,142,9,NOT WS_GROUP
+ CTEXT "Additional MAMEUI code by",IDC_STATIC,147,74,142,9
+ CTEXT "Mike Haaland, Andrew Kirmse, Jeff Miller",IDC_STATIC,
+ 147,85,142,9
+ CTEXT "John Hardy IV and Michael Soderstrom",IDC_STATIC,147,96,
+ 142,9
+ CONTROL "",IDC_ABOUT,"Static",SS_BITMAP | SS_SUNKEN,7,7,16,14
+END
+
+IDD_DIRECTX DIALOG DISCARDABLE 0, 0, 236, 69
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "MAMEUI"
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "Go to Microsoft's DirectX Web Page",IDB_WEB_PAGE,48,52,
+ 140,14
+ EDITTEXT IDC_DIRECTX_HELP,7,0,222,48,ES_MULTILINE |
+ ES_AUTOHSCROLL | ES_READONLY
+END
+
+IDD_AUDIT DIALOG DISCARDABLE 0, 0, 283, 188
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "File Audit"
+FONT 8, "Tahoma"
+BEGIN
+ PUSHBUTTON "&Pause",IDPAUSE,98,168,40,14
+ PUSHBUTTON "&Cancel",IDCANCEL,144,168,40,14
+ GROUPBOX "ROMs",IDC_STATIC,6,4,132,65
+ LTEXT "Correct:",IDC_STATIC,51,28,32,8
+ CONTROL "Progress1",IDC_ROMS_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,14,16,116,8
+ LTEXT "Incorrect:",IDC_STATIC,51,42,32,8
+ LTEXT "Total:",IDC_STATIC,51,56,32,8
+ LTEXT "0",IDC_ROMS_CORRECT,87,28,20,8
+ LTEXT "0",IDC_ROMS_INCORRECT,87,42,20,8
+ LTEXT "0",IDC_ROMS_TOTAL,87,56,20,8
+ GROUPBOX "Samples",IDC_STATIC,145,4,132,65
+ CONTROL "Progress1",IDC_SAMPLES_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,153,16,116,8
+ LTEXT "Correct:",IDC_STATIC,191,28,33,8
+ LTEXT "Incorrect:",IDC_STATIC,191,42,33,8
+ LTEXT "Total:",IDC_STATIC,191,56,33,8
+ LTEXT "0",IDC_SAMPLES_CORRECT,227,28,20,8
+ LTEXT "0",IDC_SAMPLES_INCORRECT,227,42,20,8
+ LTEXT "0",IDC_SAMPLES_TOTAL,227,56,20,8
+ GROUPBOX "Details",IDC_STATIC,6,72,271,90
+ EDITTEXT IDC_AUDIT_DETAILS,12,82,259,74,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_DIRECTORIES DIALOG DISCARDABLE 0, 0, 230, 107
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Directories"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "Show directories for:",IDC_STATIC,6,6,67,10
+ COMBOBOX IDC_DIR_COMBO,6,18,160,79,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Directories:",IDC_STATIC,6,38,38,10
+ CONTROL "List1",IDC_DIR_LIST,"SysListView32",LVS_REPORT |
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_EDITLABELS |
+ LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | WS_BORDER |
+ WS_TABSTOP,6,50,160,51
+ DEFPUSHBUTTON "OK",IDOK,173,8,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,173,26,50,14
+ PUSHBUTTON "Browse...",IDC_DIR_BROWSE,173,50,50,14
+ PUSHBUTTON "Insert",IDC_DIR_INSERT,173,68,50,14
+ PUSHBUTTON "Delete",IDC_DIR_DELETE,173,87,50,14
+END
+
+IDD_COLUMNS DIALOG DISCARDABLE 0, 0, 302, 145
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Customize Fields"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "Available fields:",IDC_STATIC,6,6,80,10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTAVAILABLECOLUMNS,"SysListView32",
+ LVS_LIST | LVS_SINGLESEL | LVS_NOCOLUMNHEADER |
+ LVS_NOSORTHEADER | WS_BORDER | WS_HSCROLL | WS_TABSTOP,6,
+ 18,90,100
+ PUSHBUTTON "Add ->",IDC_BUTTONADD,102,18,46,14,WS_DISABLED
+ PUSHBUTTON "<- Remove",IDC_BUTTONREMOVE,102,36,46,14,WS_DISABLED
+ LTEXT "Show these fields in this order:",IDC_STATIC,154,6,96,
+ 10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTSHOWCOLUMNS,"SysListView32",LVS_LIST |
+ LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER |
+ WS_BORDER | WS_HSCROLL | WS_TABSTOP,154,18,90,100
+ PUSHBUTTON "Move Up",IDC_BUTTONMOVEUP,250,18,46,14,WS_DISABLED
+ PUSHBUTTON "Move Down",IDC_BUTTONMOVEDOWN,250,36,46,14,WS_DISABLED
+ DEFPUSHBUTTON "OK",IDOK,105,124,44,14
+ PUSHBUTTON "Cancel",IDCANCEL,155,124,44,14
+END
+
+IDD_PROP_CONTROLLER DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "Controller Mapping"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ GROUPBOX "Paddle device",IDC_STATIC,4,40,102,28
+ COMBOBOX IDC_PADDLE,10,50,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PADDLE
+ GROUPBOX "ADStick device",IDC_STATIC,4,71,102,28
+ COMBOBOX IDC_ADSTICK,10,80,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_ADSTICK
+ GROUPBOX "Pedal device",IDC_STATIC,4,102,102,28
+ COMBOBOX IDC_PEDAL,10,112,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PEDAL
+ GROUPBOX "Mouse device",IDC_STATIC,4,133,102,28
+ COMBOBOX IDC_MOUSE,10,142,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_MOUSE
+ GROUPBOX "Dial device",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DIAL,119,50,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_DIAL
+ GROUPBOX "Trackball device",IDC_STATIC,113,71,102,28
+ COMBOBOX IDC_TRACKBALL,119,80,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_TRACKBALL
+ GROUPBOX "Lightgun device",IDC_STATIC,113,102,102,28
+ COMBOBOX IDC_LIGHTGUNDEVICE,119,112,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_LIGHTGUNDEVICE
+ GROUPBOX "Positional device",IDC_STATIC,113,133,102,28
+ COMBOBOX IDC_POSITIONAL,119,142,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_POSITIONAL
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SCREEN DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Screen"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ GROUPBOX "Number of screens",IDC_STATIC,4,40,103,24
+ CONTROL "GammaSlider",IDC_NUMSCREENS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,50,75,10,0,HIDC_NUMSCREENS
+ RTEXT "1",IDC_NUMSCREENSDISP,84,49,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Screen",IDC_STATIC,4,66,103,29
+ COMBOBOX IDC_SCREEN,10,76,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREEN
+
+ GROUPBOX "",IDC_STATIC,4,97,103,28
+ CONTROL "Autoselect aspect",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,97,73,10,0,HIDC_ASPECT
+ LTEXT "Aspect ratio",IDC_ASPECTRATIOTEXT,17,108,40,11,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATION,60,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATION
+ LTEXT ":",IDC_STATIC,76,108,8,10,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATIOD,80,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATIOD
+
+ GROUPBOX "View",IDC_STATIC,4,128,103,28
+ COMBOBOX IDC_VIEW,10,137,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIEW
+
+ GROUPBOX "Screennumber",IDC_SCREENSELECTTEXT,113,40,102,28
+ COMBOBOX IDC_SCREENSELECT,119,50,90,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREENSELECT
+
+ GROUPBOX "Resolution",IDC_STATIC,113,71,102,76,WS_GROUP
+ GROUPBOX "Size",IDC_STATIC,119,81,90,28,WS_GROUP
+ COMBOBOX IDC_SIZES,126,91,77,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SIZES
+
+ GROUPBOX "Refresh",IDC_REFRESHTEXT,119,112,90,28,WS_GROUP
+ COMBOBOX IDC_REFRESH,126,121,77,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_REFRESH
+ CONTROL "Switch resolutions to fit",IDC_SWITCHRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,151,93,10,0,HIDC_SWITCHRES
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_GAME DIALOG DISCARDABLE 0, 0, 220, 276
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "General"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_GAME_ICON,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,38,178,1
+ LTEXT "Manufactured:",IDC_STATIC,18,43,47,8
+ LTEXT "Static",IDC_PROP_MANUFACTURED,65,43,155,9,SS_NOPREFIX
+ LTEXT "Status:",IDC_STATIC,18,52,47,8
+ LTEXT "Static",IDC_PROP_STATUS,65,52,155,32
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,85,178,1
+ LTEXT "CPU:",IDC_STATIC,18,90,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_CPU,65,90,155,40
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,130,178,1
+ LTEXT "Sound:",IDC_STATIC,18,135,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_SOUND,65,135,155,45
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,181,178,1
+ LTEXT "Screen:",IDC_STATIC,18,186,47,8
+ LTEXT "Static\nStatic\nStatic",IDC_PROP_SCREEN,65,186,155,27
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,218,178,1
+ LTEXT "Source:",IDC_STATIC,16,223,47,8
+ LTEXT "Static",IDC_PROP_SOURCE,65,223,139,8
+ LTEXT "Clone of:",IDC_PROP_CLONEOF_TEXT,16,232,50,8
+ LTEXT "Static",IDC_PROP_CLONEOF,65,232,130,33
+END
+
+IDD_PROP_AUDIT DIALOG DISCARDABLE 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Audit"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_CHECKMARK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ LTEXT "ROM check:",IDC_STATIC,10,40,50,8
+ LTEXT "Checking...",IDC_PROP_ROMS,66,40,139,8
+ LTEXT "Sample check:",IDC_STATIC,10,52,50,8
+ LTEXT "Checking...",IDC_PROP_SAMPLES,66,52,139,8
+ GROUPBOX "Details",IDC_STATIC,4,64,211,171
+ EDITTEXT IDC_AUDIT_DETAILS_PROP,10,74,199,155,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_PROP_DISPLAY DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Display"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,169,25,SS_NOPREFIX
+
+ CONTROL "Run in a window",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,69,10,0,HIDC_WINDOWED
+ CONTROL "Start out maximized",IDC_MAXIMIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,74,10,0,HIDC_MAXIMIZE
+ CONTROL "Enforce aspect ratio",IDC_KEEPASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,77,10,0,HIDC_KEEPASPECT
+ CONTROL "Throttle",IDC_THROTTLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,39,10,0,HIDC_THROTTLE
+
+ GROUPBOX "Bitmap prescaling",IDC_PRESCALETEXT,4,89,103,24
+ CONTROL "GammaSlider",IDC_PRESCALE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,99,71,10,0,HIDC_PRESCALE
+ RTEXT "1.00",IDC_PRESCALEDISP,84,98,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Gamma Correction",IDC_STATIC,4,115,103,24
+ CONTROL "GammaSlider",IDC_GAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,125,71,10,0,HIDC_GAMMA
+ RTEXT "2.00",IDC_GAMMADISP,84,124,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Brightness Correction",IDC_STATIC,4,141,103,24
+ CONTROL "GammaSlider",IDC_BRIGHTCORRECT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,151,71,10,0,HIDC_BRIGHTCORRECT
+ RTEXT "1.00",IDC_BRIGHTCORRECTDISP,84,150,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Contrast Correction",IDC_STATIC,4,167,103,24
+ CONTROL "GammaSlider",IDC_CONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,176,71,10,0,HIDC_CONTRAST
+ RTEXT "1.00",IDC_CONTRASTDISP,84,175,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Pause Brightness",IDC_STATIC,4,193,103,24
+ CONTROL "Slider1",IDC_PAUSEBRIGHT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,203,71,10,0,HIDC_PAUSEBRIGHT
+ RTEXT "0.65",IDC_PAUSEBRIGHTDISP,84,202,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Videomode",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_VIDEO_MODE,119,50,90,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIDEO_MODE
+
+ GROUPBOX "Rotation",IDC_STATIC,113,71,102,55
+ COMBOBOX IDC_ROTATE,119,81,90,57,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_ROTATE
+ CONTROL "Flip screen upside-down",IDC_FLIPY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,98,91,10,0,HIDC_FLIPY
+ CONTROL "Flip screen left-right",IDC_FLIPX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,110,77,10,0,HIDC_FLIPX
+
+ GROUPBOX "Direct3D",IDC_STATIC,113,128,102,57
+ CONTROL "Use Bilinear filtering",IDC_D3D_FILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,138,85,10,0,HIDC_D3D_FILTER
+
+// GROUPBOX "Version",IDC_STATIC,119,150,90,28
+// COMBOBOX IDC_D3D_VERSION,125,160,78,95,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_D3D_VERSION
+
+// GROUPBOX "DirectDraw",IDC_STATIC,113,187,102,26
+// CONTROL "Stretch using hardware",IDC_HWSTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,197,85,10,0,HIDC_HWSTRETCH
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SOUND DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Sound"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_SOUNDTAB,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ GROUPBOX "",IDC_STATIC,4,40,211,155
+
+ GROUPBOX "Soundmode",IDC_STATIC,60,50,100,28
+ COMBOBOX IDC_SOUND_MODE,66,60,88,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIDEO_MODE
+
+ CONTROL "Use samples",IDC_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,84,55,10,0,HIDC_SAMPLES
+
+ GROUPBOX "Sample rate",IDC_RATETEXT,60,96,100,28
+ COMBOBOX IDC_SAMPLERATE,66,106,88,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SAMPLERATE
+
+ GROUPBOX "Volume attenuation",IDC_VOLUMETEXT,60,127,100,28
+ CONTROL "Slider1",IDC_VOLUME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,66,139,68,10,0,HIDC_VOLUME
+ RTEXT "0dB",IDC_VOLUMEDISP,132,138,20,11,SS_CENTERIMAGE
+
+ GROUPBOX "Audio latency",IDC_AUDIO_LATENCY_TEXT,60,158,100,28
+ CONTROL "Slider1",IDC_AUDIO_LATENCY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,66,170,68,10,0,HIDC_AUDIO_LATENCY
+ RTEXT "1/5",IDC_AUDIO_LATENCY_DISP,132,169,20,11,SS_CENTERIMAGE
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_ADVANCED DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Advanced"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Triple buffering",IDC_TRIPLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,93,10,0,HIDC_TRIPLE_BUFFER
+ CONTROL "Sync to monitor refresh",IDC_SYNCREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_SYNCREFRESH
+ CONTROL "Wait for vertical sync",IDC_WAITVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,93,10,0,HIDC_WAITVSYNC
+ CONTROL "Refresh speed",IDC_REFRESHSPEED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,93,10,0,HIDC_REFRESHSPEED
+
+ GROUPBOX "Frame skipping",IDC_STATIC,4,104,103,42
+ CONTROL "Automatic",IDC_AUTOFRAMESKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,114,77,10,0,HIDC_AUTOFRAMESKIP
+ COMBOBOX IDC_FRAMESKIP,10,127,91,88,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_FRAMESKIP
+
+ GROUPBOX "Full screen gamma",IDC_FSGAMMATEXT,113,40,102,24
+ CONTROL "Slider1",IDC_FSGAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,50,71,10,0,HIDC_FSGAMMA
+ RTEXT "2.00",IDC_FSGAMMADISP,193,49,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen brightness",IDC_FSBRIGHTNESSTEXT,113,67,102,24
+ CONTROL "Slider1",IDC_FSBRIGHTNESS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,77,71,10,0,HIDC_FSBRIGHTNESS
+ RTEXT "2.00",IDC_FSBRIGHTNESSDISP,193,76,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen contrast",IDC_FSCONTRASTTEXT,113,94,102,24
+ CONTROL "Slider1",IDC_FSCONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,104,71,10,0,HIDC_FSCONTRAST
+ RTEXT "2.00",IDC_FSCONTRASTDISP,193,103,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Seconds to run",IDC_SECONDSTORUNTEXT,113,122,102,24
+ CONTROL "",IDC_SECONDSTORUN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,132,71,10,0,HIDC_SECONDSTORUN
+ RTEXT "60",IDC_SECONDSTORUNDISP,193,130,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Emulation speed",IDC_SPEEDTEXT,4,155,211,24
+ CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,12,165,180,10,0,HIDC_SPEED
+ RTEXT "1.00",IDC_SPEEDDISP,191,164,20,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Effect",IDC_STATIC,4,182,211,50
+ EDITTEXT IDC_EFFECT,12,192,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Effect",IDC_SELECT_EFFECT,12,211,60,14,0,0,HIDC_SELECT_EFFECT
+ PUSHBUTTON "Reset Effect",IDC_RESET_EFFECT,152,211,60,14,0,0,HIDC_RESET_EFFECT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_DEBUG DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Debug"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MANUFACTURER,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Output log to Windows Debugger",IDC_OSLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,124,10,0,HIDC_OSLOG
+ CONTROL "Output log to Logfile",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_LOG
+ CONTROL "Output diagnostic information",IDC_VERBOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,111,10,0,HIDC_VERBOSE
+ CONTROL "Update Main window during paused emulation",IDC_UPDATEINPAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,171,10,0,HIDC_UPDATEINPAUSE
+ CONTROL "Activate Integrated Debugger",IDC_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,118,10,0,HIDC_DEBUG
+
+ GROUPBOX "Debugscript",IDC_STATIC,6,104,211,50
+ EDITTEXT IDC_DEBUGSCRIPT,14,114,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Debugscript",IDC_SELECT_DEBUGSCRIPT,14,133,67,14,0,0,HIDC_SELECT_DEBUGSCRIPT
+ PUSHBUTTON "Reset Debugscript",IDC_RESET_DEBUGSCRIPT,149,133,65,14,0,0,HIDC_RESET_DEBUGSCRIPT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_INPUT DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Controllers"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable mouse input",IDC_USE_MOUSE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,40,86,10,0,
+ HIDC_USE_MOUSE
+ CONTROL "Enable steadykey support",IDC_STEADYKEY,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,52,95,10,0,
+ HIDC_STEADYKEY
+ GROUPBOX "",IDC_STATIC,4,64,103,74
+ CONTROL "Enable joystick input",IDC_JOYSTICK,"Button",
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,10,64,78,10,0,
+ HIDC_JOYSTICK
+ GROUPBOX "Joystick deadzone",IDC_JDZTEXT,10,76,91,28
+ CONTROL "IntensitySlider",IDC_JDZ,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,15,88,60,10,0,HIDC_JDZ
+ RTEXT "0.3",IDC_JDZDISP,76,87,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ GROUPBOX "Default input layout",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DEFAULT_INPUT,119,50,90,53,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_DEFAULT_INPUT
+ GROUPBOX "",IDC_STATIC,113,71,102,66
+ CONTROL "Enable lightgun input",IDC_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,71,80,10,0,
+ HIDC_LIGHTGUN
+ CONTROL "Offscreen shots reload",IDC_RELOAD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,83,86,10,0,HIDC_RELOAD
+ CONTROL "Dual lightguns",IDC_DUAL_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,96,86,10,0,
+ HIDC_DUAL_LIGHTGUN
+ CONTROL "Multiple keyboards",IDC_MULTIKEYBOARD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,109,75,10,0,
+ HIDC_MULTIKEYBOARD
+ CONTROL "Multiple mice",IDC_MULTIMOUSE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,122,56,10,0,HIDC_MULTIMOUSE
+ GROUPBOX "Joystick saturation",IDC_JSATTEXT,10,106,91,28
+ CONTROL "IntensitySlider",IDC_JSAT,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,16,118,60,10,0,HIDC_JSAT
+ RTEXT "0.85",IDC_JSATDISP,76,116,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+ GROUPBOX "Joystickmap",IDC_STATIC,4,143,211,50
+ EDITTEXT IDC_JOYSTICKMAP,12,153,200,14,ES_AUTOHSCROLL |
+ WS_DISABLED
+ PUSHBUTTON "Select Joystickmap",IDC_SELECT_JOYSTICKMAP,12,172,67,14,
+ 0,0,HIDC_SELECT_JOYSTICKMAP
+ PUSHBUTTON "Reset Joystickmap",IDC_RESET_JOYSTICKMAP,147,172,65,14,
+ 0,0,HIDC_RESET_JOYSTICKMAP
+END
+
+IDD_PROP_MISC DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Miscellaneous"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable cheats",IDC_CHEAT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,40,86,10,0,HIDC_CHEAT
+ CONTROL "Sleep when possible",IDC_SLEEP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,52,86,10,0,HIDC_SLEEP
+
+ CONTROL "Skip game info",IDC_SKIP_GAME_INFO,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,64,96,10,0,
+ HIDC_SKIP_GAME_INFO
+ CONTROL "Save game state on exit",IDC_ENABLE_AUTOSAVE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,76,96,10,0,
+ HIDC_ENABLE_AUTOSAVE
+ CONTROL "Coin lockout",IDC_COINLOCKOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,100,96,10,0,HIDC_COINLOCKOUT
+ GROUPBOX "Thread Priority",IDC_HIGH_PRIORITY_TEXT,7,112,103,34
+ CONTROL "Slider1",IDC_HIGH_PRIORITY,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,13,122,75,10,0,
+ HIDC_HIGH_PRIORITY
+ LTEXT "idle",IDC_STATIC,17,132,12,8
+ RTEXT "-15",IDC_HIGH_PRIORITYTXT,87,122,14,10,SS_CENTERIMAGE
+ RTEXT "real-time",IDC_STATIC,57,134,28,8
+ GROUPBOX "Snapshot view",IDC_STATIC,7,148,103,28
+ COMBOBOX IDC_SNAPVIEW,13,158,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPVIEW
+ GROUPBOX "Artwork options",IDC_STATIC,113,40,102,85
+ CONTROL "Backdrops",IDC_BACKDROPS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,50,86,10,0,HIDC_BACKDROPS
+ CONTROL "Bezels",IDC_BEZELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,62,86,10,0,HIDC_BEZELS
+ CONTROL "Overlays",IDC_OVERLAYS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,74,84,10,0,HIDC_OVERLAYS
+ CONTROL "CPanels",IDC_CPANELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,86,84,10,0
+ CONTROL "Marquees",IDC_MARQUEES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,98,84,10,0
+ CONTROL "Crop artwork",IDC_ARTWORK_CROP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,110,53,10,0,HIDC_ARTWORK_CROP
+ GROUPBOX "BIOS",IDC_STATIC,113,128,102,28
+ COMBOBOX IDC_BIOS,119,138,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_BIOS
+ GROUPBOX "",IDC_STATIC,7,178,208,28
+ CONTROL "Autoselect snapshot size",IDC_SNAPSIZE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,178,95,10,0,
+ HIDC_SNAPSIZE
+ LTEXT "Snapshotsize",IDC_SNAPSIZETEXT,11,189,44,11,
+ SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_SNAPSIZEWIDTH,122,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEWIDTH
+ EDITTEXT IDC_SNAPSIZEHEIGHT,172,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEHEIGHT
+ LTEXT "x",IDC_SNAPSIZEX,162,189,8,8
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+// CONTROL "Show Menu",IDC_SHOW_MENU,"Button",
+// BS_AUTOCHECKBOX | WS_TABSTOP,119,160,86,10,0
+END
+
+IDD_PROP_VECTOR DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Vector"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+// CONTROL "Draw antialiased vectors",IDC_ANTIALIAS,"Button",
+// BS_AUTOCHECKBOX | WS_TABSTOP,10,40,92,10,0,
+// HIDC_ANTIALIAS
+ GROUPBOX "Beam width",IDC_BEAMTEXT,60,53,100,28
+ CONTROL "BeamSlider",IDC_BEAM,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,65,64,10,0,HIDC_BEAM
+ RTEXT "16.00",IDC_BEAMDISP,132,64,20,11,SS_CENTERIMAGE
+ GROUPBOX "Flicker",IDC_FLICKERTEXT,60,84,100,28
+ CONTROL "FlickerSlider",IDC_FLICKER,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,96,64,10,0,HIDC_FLICKER
+ RTEXT "100.00",IDC_FLICKERDISP,128,95,24,11,SS_CENTERIMAGE |
+ NOT WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_MAIN DIALOGEX 0, 0, 364, 206
+STYLE DS_3DLOOK | DS_NOFAILCREATE | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | DS_SETFONT
+EXSTYLE WS_EX_CONTROLPARENT
+CAPTION "MAMEUI - overwritten at runtime"
+CLASS "MainClass"
+FONT 8, "Verdana"
+BEGIN
+ CONTROL "",IDC_DIVIDER,"Static",SS_ETCHEDHORZ,0,5,304,1
+ CONTROL "Tree1",IDC_TREE,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS |
+ TVS_SHOWSELALWAYS | TVS_FULLROWSELECT | WS_BORDER | WS_TABSTOP,5,28,48,172
+ CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE |
+ LVS_SHAREIMAGELISTS | LVS_OWNERDRAWFIXED | WS_BORDER | WS_TABSTOP,65,28,42,172
+ GROUPBOX "",IDC_SPLITTER,55,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ GROUPBOX "",IDC_SPLITTER2,109,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ CONTROL "",IDC_SSFRAME,"Static",SS_ETCHEDFRAME | SS_NOTIFY,121,11,181,194
+ CONTROL "",IDC_SSTAB,"SysTabControl32",TCS_HOTTRACK,121,0,181,18
+ CONTROL "",IDC_SSPICTURE,"Static",SS_BITMAP | NOT WS_VISIBLE,141,18,141,127
+ EDITTEXT IDC_HISTORY,129,150,167,49,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL | NOT WS_TABSTOP,0, HIDC_HISTORY
+END
+
+IDD_FILTERS DIALOGEX 0, 0, 190, 196
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION |
+ WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Game Filters"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Game filters",IDC_STATIC,6,4,178,99
+ CONTROL "&Vector Graphics",IDC_FILTER_VECTOR,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,16,70,10,0,
+ HIDC_FILTER_VECTOR
+ CONTROL "C&lones",IDC_FILTER_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,30,41,10,0,HIDC_FILTER_CLONES
+ CONTROL "Non-Wor&king",IDC_FILTER_NONWORKING,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,44,61,10,0,
+ HIDC_FILTER_NONWORKING
+ CONTROL "&Horizontal",IDC_FILTER_HORIZONTAL,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,57,10,0,
+ HIDC_FILTER_HORIZONTAL
+ CONTROL "&Unavailable",IDC_FILTER_UNAVAILABLE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,72,57,10,0,
+ HIDC_FILTER_UNAVAILABLE
+ CONTROL "Arcade",IDC_FILTER_ARCADE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,86,57,10,0
+ CONTROL "&Raster Graphics",IDC_FILTER_RASTER,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,16,70,10,0,
+ HIDC_FILTER_RASTER
+ CONTROL "Ori&ginals",IDC_FILTER_ORIGINALS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,30,47,10,0,
+ HIDC_FILTER_ORIGINALS
+ CONTROL "&Working",IDC_FILTER_WORKING,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,44,47,10,0,HIDC_FILTER_WORKING
+ CONTROL "&Vertical",IDC_FILTER_VERTICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,58,47,10,0,HIDC_FILTER_VERTICAL
+ CONTROL "&Mechanical",IDC_FILTER_MECHANICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,72,58,10,0,HIDC_FILTER_MECHANICAL
+ CONTROL "MESS",IDC_FILTER_MESS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,86,58,10,0,HIDC_FILTER_MECHANICAL
+ LTEXT "(*) = inherited from parent folder",IDC_INHERITED,14,72,
+ 99,10
+ CTEXT "Game filters allow customizing the games that are displayed in each folder by hiding games that match the filters applied.",
+ IDC_STATIC,6,108,178,27
+ GROUPBOX "&Description filter",IDC_STATIC,6,136,178,33
+ EDITTEXT IDC_FILTER_EDIT,14,148,162,13,ES_AUTOHSCROLL,0,
+ HIDC_FILTER_EDIT
+ DEFPUSHBUTTON "&OK",IDOK,42,175,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,175,50,14
+END
+
+IDD_RESET DIALOGEX 0, 0, 190, 122
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Reset Options"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Categories",IDC_STATIC,6,4,178,70
+ CONTROL "&User Interface (Fonts, Colors, Sizes)",IDC_RESET_UI,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,146,10,0,
+ HIDC_RESET_UI
+ CONTROL "&Default game options",IDC_RESET_DEFAULT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,30,146,10,0,
+ HIDC_RESET_DEFAULT
+ CONTROL "&All games to use default options",IDC_RESET_GAMES,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,146,10,0,
+ HIDC_RESET_GAMES
+ CONTROL "&Folder 'filters'",IDC_RESET_FILTERS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,146,10,0,
+ HIDC_RESET_FILTERS
+ CTEXT "Select the options to be restored to the default settings.",
+ IDC_STATIC,6,79,178,20
+ DEFPUSHBUTTON "&OK",IDOK,42,101,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,101,50,14
+END
+
+
+IDD_INTERFACE_OPTIONS DIALOGEX 0, 0, 378, 225
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Interface Options"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Game Selection",IDC_STATIC,6,4,189,194
+ CONTROL "&Search for new games on start",IDC_START_GAME_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,111,10,0,
+ HIDC_START_GAME_CHECK
+ CONTROL "Allow game selection by a &joystick (requires restart)",
+ IDC_JOY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,30,
+ 174,10,0,HIDC_JOY_GUI
+ CONTROL "Allow game selection by custom &key sequences",
+ IDC_KEY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,
+ 166,10
+ CONTROL "Hide &mouse cursor (requires restart)",IDC_HIDE_MOUSE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,86,126,10,0,
+ HIDC_HIDE_MOUSE
+ CONTROL "Inheritable Filters",IDC_FILTER_INHERIT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,100,68,10
+ CONTROL "No offset for clones missing parent in view",
+ IDC_NOOFFSET_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,114,148,10
+ GROUPBOX "Show History on Tab",IDC_STATIC,14,128,173,28
+ COMBOBOX IDC_HISTORY_TAB,57,138,88,50,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Snapshot Pattern",IDC_STATIC,202,4,170,28
+ GROUPBOX "Bookkeeping",IDC_STATIC,202,36,170,43
+ CONTROL "Reset all Playcounts",IDC_RESET_PLAYCOUNT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,48,80,10
+ CONTROL "Reset all Play Times",IDC_RESET_PLAYTIME,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,62,79,10
+ GROUPBOX "Screenshot Area",IDC_STATIC,202,83,170,115
+ CONTROL "S&tretch screenshot larger than natural size",
+ IDC_STRETCH_SCREENSHOT_LARGER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,210,95,148,10,0,
+ HIDC_STRETCH_SCREENSHOT_LARGER
+ GROUPBOX "Screenshot Cycletime in Seconds",IDC_STATIC,210,109,154,
+ 28
+ CONTROL "Slider1",IDC_CYCLETIMESEC,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,218,121,120,10,0,
+ HIDC_CYCLETIMESEC
+ RTEXT "60",IDC_CYCLETIMESECTXT,340,120,13,10,SS_CENTERIMAGE
+ GROUPBOX "Screenshot Bordersize",IDC_STATIC,210,141,154,28
+ CONTROL "Slider1",IDC_SCREENSHOT_BORDERSIZE,"msctls_trackbar32",
+ TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,218,153,120,10
+ RTEXT "100",IDC_SCREENSHOT_BORDERSIZETXT,340,152,13,10,
+ SS_CENTERIMAGE
+ PUSHBUTTON "Set Screenshot Border Color",IDC_SCREENSHOT_BORDERCOLOR,
+ 210,176,154,14
+ DEFPUSHBUTTON "&OK",IDOK,136,204,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,192,204,50,14
+ COMBOBOX IDC_SNAPNAME,209,14,155,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPNAME
+END
+
+IDD_CUSTOM_FILE DIALOG DISCARDABLE 0, 0, 190, 135
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Add Game To Custom Folder"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "",IDC_CUSTOMFILE_GAME,6,6,175,10,SS_NOPREFIX |
+ SS_CENTERIMAGE
+ CONTROL "CustomTree",IDC_CUSTOM_TREE,"SysTreeView32",
+ TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
+ TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS |
+ TVS_FULLROWSELECT | WS_BORDER | WS_TABSTOP,6,18,178,90
+ DEFPUSHBUTTON "OK",IDOK,42,114,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,98,114,50,14
+END
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDA_TAB_KEYS ACCELERATORS MOVEABLE PURE
+BEGIN
+ "1", ID_VIEW_TAB_SCREENSHOT, VIRTKEY, ALT, NOINVERT
+ "2", ID_VIEW_TAB_FLYER, VIRTKEY, ALT, NOINVERT
+ "3", ID_VIEW_TAB_CABINET, VIRTKEY, ALT, NOINVERT
+ "4", ID_VIEW_TAB_MARQUEE, VIRTKEY, ALT, NOINVERT
+ "5", ID_VIEW_TAB_TITLE, VIRTKEY, ALT, NOINVERT
+ "6", ID_VIEW_TAB_CONTROL_PANEL, VIRTKEY, ALT, NOINVERT
+ "7", ID_VIEW_TAB_PCB, VIRTKEY, ALT, NOINVERT
+ "8", ID_VIEW_TAB_HISTORY, VIRTKEY, ALT, NOINVERT
+ "A", ID_GAME_AUDIT, VIRTKEY, ALT, NOINVERT
+ "B", ID_VIEW_PAGETAB, VIRTKEY, ALT, NOINVERT
+ "D", ID_VIEW_FOLDERS, VIRTKEY, ALT, NOINVERT
+ "E", ID_TOOLBAR_EDIT, VIRTKEY, CONTROL, NOINVERT
+ "F", ID_CONTEXT_FILTERS, VIRTKEY, CONTROL, NOINVERT
+ "U", ID_FOLDER_AUDIT, VIRTKEY, ALT, NOINVERT
+ "P", ID_VIEW_PICTURE_AREA, VIRTKEY, ALT, NOINVERT
+ "R", ID_CONTEXT_SELECT_RANDOM, VIRTKEY, CONTROL, NOINVERT
+ "S", ID_VIEW_STATUS, VIRTKEY, ALT, NOINVERT
+ "T", ID_VIEW_TOOLBARS, VIRTKEY, ALT, NOINVERT
+ VK_F1, ID_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F11, ID_VIEW_FULLSCREEN, VIRTKEY, NOINVERT
+ VK_F5, ID_UPDATE_GAMELIST, VIRTKEY, NOINVERT
+ VK_NEXT, ID_UI_HISTORY_DOWN, VIRTKEY, CONTROL, NOINVERT
+ VK_PRIOR, ID_UI_HISTORY_UP, VIRTKEY, CONTROL, NOINVERT
+ VK_RETURN, ID_GAME_PROPERTIES, VIRTKEY, ALT, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO MOVEABLE PURE
+BEGIN
+ IDD_ABOUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 289
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 123
+ END
+
+ IDD_DIRECTX, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 229
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 62
+ END
+
+ IDD_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 280
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 187
+ HORZGUIDE, 19
+ END
+
+ IDD_DIRECTORIES, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 224
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 98
+ END
+
+ IDD_COLUMNS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 301
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 143
+ END
+
+ IDD_PROP_CONTROLLER, DIALOG
+ BEGIN
+ RIGHTMARGIN, 210
+ BOTTOMMARGIN, 154
+ END
+
+ IDD_PROP_SCREEN, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ BOTTOMMARGIN, 199
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_GAME, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 19
+ VERTGUIDE, 66
+ VERTGUIDE, 74
+ VERTGUIDE, 201
+ BOTTOMMARGIN, 268
+ END
+
+ IDD_PROP_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 12
+ VERTGUIDE, 208
+ BOTTOMMARGIN, 198
+ HORZGUIDE, 38
+ END
+
+ IDD_PROP_DISPLAY, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_SOUND, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_PROP_ADVANCED, DIALOG
+ BEGIN
+ LEFTMARGIN, 10
+ BOTTOMMARGIN, 240
+ END
+
+ IDD_PROP_INPUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ RIGHTMARGIN, 215
+ VERTGUIDE, 50
+ VERTGUIDE, 170
+ END
+
+ IDD_PROP_MISC, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 25
+ VERTGUIDE, 40
+ VERTGUIDE, 104
+ VERTGUIDE, 114
+ VERTGUIDE, 204
+ BOTTOMMARGIN, 236
+ END
+
+ IDD_PROP_VECTOR, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_FILTERS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 178
+ END
+
+ IDD_RESET, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 175
+ VERTGUIDE, 18
+ VERTGUIDE, 164
+ TOPMARGIN, 7
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+
+
+
+IDB_ABOUT BITMAP "res\\about.bmp"
+IDB_TOOLBAR BITMAP "res\\toolbar.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Cursor
+//
+
+IDC_CURSOR_HSPLIT CURSOR "res\\splith.cur"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// RT_MANIFEST
+//
+
+1 RT_MANIFEST "res\\mameui.manifest"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_FILE "Contains commands for working with the selected items"
+ IDS_UI_VIEW "Contains commands for manipulating the view"
+ IDS_UI_OPTIONS "Contains commands for user interface options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_HELP "Contains commands for displaying help"
+ IDS_VIEW_TOOLBAR "Show or hide the toolbar"
+ IDS_VIEW_STATUSBAR "Show or hide the status bar"
+ IDS_VIEW_FOLDERLIST "Show or hide the folder list"
+ IDS_VIEW_SCREENSHOT "Show or hide the screen shot"
+ IDS_VIEW_PICTURETABS "Show or hide tabs in the picture area"
+ IDS_VIEW_SPACER1 "Spacer"
+ IDS_VIEW_FULLSCREEN "Toggle full screen mode"
+ IDS_VIEW_SPACER2 "Spacer"
+ IDS_VIEW_SHOWPICTURES "Contains commands to select tabs shown in the picture area"
+ IDS_VIEW_SPACER3 "Spacer"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_VIEW_LARGEICONS "Display items by using large icons."
+ IDS_VIEW_SMALLICONS "Display items by using small icons."
+ IDS_VIEW_LIST "Displays items in a list."
+ IDS_VIEW_DETAILS "Displays detailed information about each item in the window."
+ IDS_VIEW_GROUPED "Displays items grouped by parent game"
+ IDS_VIEW_SPACER4 "Spacer"
+ IDS_VIEW_ARRANGE "Contains commands for sorting by various columns"
+ IDS_VIEW_LINEUPICONS "Arranges icons in a grid"
+ IDS_VIEW_SPACER5 "Spacer"
+ IDS_VIEW_REFRESH "Refresh game list"
+ IDS_VIEW_CONTEXTFILTERS "Allows filtering out games from a folder"
+ IDS_VIEW_CUSTOMIZEFIELDS
+ "Customize which columns are used in the game list"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FILE_EXIT "Exit the application"
+ ID_FILE_PLAY "Play currently selected game"
+ ID_HELP_ABOUT "Displays program and copyright information"
+ ID_VIEW_LARGE_ICON "Display items by using large icons."
+ ID_VIEW_SMALL_ICON "Display items by using small icons."
+ ID_VIEW_LIST_MENU "Displays items in a list."
+ ID_VIEW_DETAIL "Displays detailed information about each item in the window."
+ ID_VIEW_GROUPED "Show items grouped by parent game"
+ ID_OPTIONS_FONT "Set game list and folder list font"
+ ID_OPTIONS_CLONE_COLOR "Set the clone font color"
+ ID_OPTIONS_DIR "Set directory configuration"
+ ID_OPTIONS_DEFAULTS "Set default game options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_OPTIONS_RESET_DEFAULTS "Allow restoring options to 'sane' values."
+ ID_OPTIONS_INTERFACE "Customize interface options."
+ ID_FILE_AUDIT "Audit ROM and samples sets"
+ ID_FILE_PLAY_RECORD "Record a game for later playback"
+ ID_FILE_PLAY_BACK "Playback a recorded game"
+ ID_FILE_PLAY_RECORD_WAVE "Record the audio output of a game"
+ ID_FILE_PLAY_RECORD_MNG "Record the video output of a game"
+ ID_FILE_PLAY_RECORD_AVI "Record the complete output of a game"
+ ID_VIEW_PICTURE_AREA "Show or hide the picture area"
+ ID_HELP_CONTENTS "Display help contents"
+ ID_HELP_WHATS_NEWUI "New game changes"
+ ID_HELP_TROUBLE "Troubleshooting Documentation"
+ ID_HELP_RELEASE "MAME release notes"
+ ID_HELP_WHATS_NEW "What's new in MAME"
+ ID_HELP_CHEATS "How cheats work"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CONTEXT_RESET_PLAYSTATS "Reset play stats for selected item"
+ ID_FOLDER_PROPERTIES "Display folder properties"
+ ID_FOLDER_AUDIT "Audit items in this folder"
+ ID_FILE_LOADSTATE "Play a game starting with the given savestate"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_TAB_CABINET "Select Cabinet tab"
+ ID_VIEW_TAB_MARQUEE "Select Marquee tab"
+ ID_VIEW_TAB_TITLE "Select Title tab"
+ ID_VIEW_TAB_CONTROL_PANEL "Select Control panel tab"
+ ID_VIEW_TAB_PCB "Select PCB tab"
+ ID_VIEW_TAB_HISTORY "Select History tab"
+ ID_OPTIONS_BG "Set the background image"
+ ID_TOGGLE_TAB_SCREENSHOT "Enable the screenshot tab"
+ ID_TOGGLE_TAB_FLYER "Enable the flyer tab"
+ ID_TOGGLE_TAB_CABINET "Enable the cabinet tab"
+ ID_TOGGLE_TAB_MARQUEE "Enable the marquee tab"
+ ID_TOGGLE_TAB_TITLE "Enable the title tab"
+ ID_TOGGLE_TAB_CONTROL_PANEL "Enable the control panel tab"
+ ID_TOGGLE_TAB_PCB "Enable the PCB tab"
+ ID_TOGGLE_TAB_HISTORY "Enable the history tab"
+ ID_VIEW_FULLSCREEN "Toggle Fullscreen mode"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CUSTOMIZE_FIELDS "Customize which columns are used in the game list"
+ ID_GAME_PROPERTIES "Display the properties of the selected item"
+ ID_VIEW_PAGETAB "Show or hide the tabs in the picture area"
+ ID_VIEW_FOLDERS "Show or hide the folder list"
+ ID_VIEW_TOOLBARS "Show or hide the toolbar"
+ ID_VIEW_STATUS "Show or hide the status bar"
+ ID_CONTEXT_FILTERS "Allows filtering out games from a folder"
+ ID_CONTEXT_RENAME_CUSTOM "Rename this folder"
+ ID_CONTEXT_ADD_CUSTOM "Add selected item to custom folder"
+ ID_CONTEXT_REMOVE_CUSTOM "Remove selected item from this folder"
+ ID_GAME_AUDIT "Audit the selected item"
+ ID_CONTEXT_SELECT_RANDOM "Randomly select a game."
+ ID_VIEW_TAB_SCREENSHOT "Select Snapshot tab"
+ ID_VIEW_TAB_FLYER "Select Flyer tab"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_BYGAME "Sort items by game description"
+ ID_VIEW_BYDIRECTORY "Sort items by name"
+ ID_VIEW_BYMANUFACTURER "Sort items by manufacturer"
+ ID_VIEW_BYYEAR "Sort items by year"
+ ID_VIEW_BYTYPE "Sort items by type"
+ ID_VIEW_BYTIMESPLAYED "Sort by number of plays"
+ ID_VIEW_LINEUPICONS "Arranges icons in a grid"
+ ID_UPDATE_GAMELIST "Refresh game list"
+ ID_SORT_ASCENDING "Sort column in ascending (A-Z) order"
+ ID_SORT_DESCENDING "Sort column in descending (Z-A) order"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FOLDER_SOURCEPROPERTIES
+ "Display properties for all games in this source file"
+ ID_FOLDER_VECTORPROPERTIES "Display properties for all vector based games"
+ ID_OPTIONS_HISTORY "Set the History file to use"
+ ID_OPTIONS_MAMEINFO "Set the Mameinfo file to use"
+END
+
+#endif // English (USA) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#include "hbmamevers.rc" // Version block
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/docs/release/src/osd/winui/help.cpp b/docs/release/src/osd/winui/help.cpp
new file mode 100644
index 00000000000..971c369bd86
--- /dev/null
+++ b/docs/release/src/osd/winui/help.cpp
@@ -0,0 +1,107 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/***************************************************************************
+
+ help.c
+
+ Help wrapper code.
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+
+// MAME/MAMEUI headers
+#include "help.h"
+
+typedef HWND (WINAPI *HtmlHelpProc)(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData);
+
+/***************************************************************************
+ Internal structures
+***************************************************************************/
+
+/***************************************************************************
+ function prototypes
+***************************************************************************/
+
+static void Help_Load(void);
+
+/***************************************************************************
+ External function prototypes
+***************************************************************************/
+
+/***************************************************************************
+ External variables
+***************************************************************************/
+
+/***************************************************************************
+ Internal variables
+***************************************************************************/
+
+static HtmlHelpProc g_pHtmlHelp;
+static HMODULE g_hHelpLib;
+static DWORD g_dwCookie = 0;
+
+/**************************************************************************
+ External functions
+***************************************************************************/
+
+int HelpInit(void)
+{
+ g_pHtmlHelp = NULL;
+ g_hHelpLib = NULL;
+
+ g_dwCookie = 0;
+ HelpFunction(NULL, NULL, HH_INITIALIZE, (DWORD_PTR)&g_dwCookie);
+ return 0;
+}
+
+void HelpExit(void)
+{
+ HelpFunction(NULL, NULL, HH_CLOSE_ALL, 0);
+ HelpFunction(NULL, NULL, HH_UNINITIALIZE, (DWORD_PTR)&g_dwCookie);
+
+ g_dwCookie = 0;
+ g_pHtmlHelp = NULL;
+
+ if (g_hHelpLib)
+ {
+ FreeLibrary(g_hHelpLib);
+ g_hHelpLib = NULL;
+ }
+}
+
+HWND HelpFunction(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData)
+{
+ if (g_pHtmlHelp == NULL)
+ Help_Load();
+
+ if (g_pHtmlHelp)
+ return g_pHtmlHelp(hwndCaller, pszFile, uCommand, dwData);
+ else
+ return NULL;
+}
+
+/***************************************************************************
+ Internal functions
+***************************************************************************/
+
+static void Help_Load(void)
+{
+ g_hHelpLib = LoadLibrary(TEXT("hhctrl.ocx"));
+ if (g_hHelpLib)
+ {
+ FARPROC pProc = NULL;
+ pProc = GetProcAddress(g_hHelpLib, "HtmlHelpA");
+ if (pProc)
+ {
+ g_pHtmlHelp = (HtmlHelpProc)pProc;
+ }
+ else
+ {
+ FreeLibrary(g_hHelpLib);
+ g_hHelpLib = NULL;
+ }
+ }
+}
diff --git a/docs/release/src/osd/winui/help.h b/docs/release/src/osd/winui/help.h
new file mode 100644
index 00000000000..356e62994b7
--- /dev/null
+++ b/docs/release/src/osd/winui/help.h
@@ -0,0 +1,47 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef HELP_H
+#define HELP_H
+
+#if defined(__GNUC__)
+#define HH_DISPLAY_TOPIC 0
+#define HH_TP_HELP_CONTEXTMENU 16
+#define HH_TP_HELP_WM_HELP 17
+#define HH_CLOSE_ALL 18
+#define HH_INITIALIZE 28
+#define HH_UNINITIALIZE 29
+#else
+#include <htmlhelp.h>
+#endif
+
+typedef struct
+{
+ int nMenuItem;
+ BOOL bIsHtmlHelp;
+ LPCTSTR lpFile;
+} MAMEHELPINFO;
+
+extern const MAMEHELPINFO g_helpInfo[];
+
+#if !defined(MAMEUIHELP)
+#ifdef MESS
+#define MAMEUIHELP "messui.chm"
+#else
+#define MAMEUIHELP "mameui.chm"
+#endif
+#endif
+
+#if !defined(MAMEUICONTEXTHELP)
+#ifdef MESS
+#define MAMEUICONTEXTHELP "messui.chm::/cntx_help.txt"
+#else
+#define MAMEUICONTEXTHELP "mameui.chm::/cntx_help.txt"
+#endif
+#endif
+
+extern int HelpInit(void);
+extern void HelpExit(void);
+extern HWND HelpFunction(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData);
+
+#endif
diff --git a/docs/release/src/osd/winui/help/cntx_help.txt b/docs/release/src/osd/winui/help/cntx_help.txt
new file mode 100644
index 00000000000..61e8b1db51f
--- /dev/null
+++ b/docs/release/src/osd/winui/help/cntx_help.txt
@@ -0,0 +1,220 @@
+.topic HIDC_ADSTICK
+Selects appropriate host controller for emulated controls.
+.topic HIDC_ANTIALIAS
+Enables anti-aliasing of vector lines providing a smoother look.
+.topic HIDC_ARTWORK_CROP
+Enables cropping external artwork down to selected window or resolution
+.topic HIDC_ASPECT
+Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation. Rarely used.
+.topic HIDC_ASPECTRATIOD
+Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation. Rarely used.
+.topic HIDC_ASPECTRATION
+Enables manual override of MameUI's 4:3 or 3:4 aspect ratio calculation. Rarely used.
+.topic HIDC_AUDIO_LATENCY
+Selects the level of audio latency, adjusting this can often eliminate desync of the sound and associated scratchiness.
+.topic HIDC_AUTOFRAMESKIP
+Enables automatic frame skipping during emulation attempting to keep at 100%.
+.topic HIDC_BACKDROPS
+Enables the backdrops of artwork in supported games.
+.topic HIDC_BEAM
+Selects the width of the vector lines in vector games.
+.topic HIDC_BEZELS
+Enables the bezel artwork in supported games.
+.topic HIDC_BIOS
+Selects a particular BIOS in a driver family or individual games e.g. NeoGeo.
+.topic HIDC_BRIGHTCORRECT
+Selects the brightness level of the screen [but not artwork or UI].
+.topic HIDC_BROADCAST
+Enables programmatically broadcasting the game being played to attached devices.
+.topic HIDC_CHEAT
+Enables cheat capability using the in-game [tab] menu.
+.topic HIDC_COINLOCKOUT
+Enables arcade operator coin lockout behaviour.
+.topic HIDC_CONTRAST
+Selects the contrast level of the screen [but not artwork or UI].
+.topic HIDC_CYCLETIMESEC
+.topic HIDC_D3D_FILTER
+Enables bilinear filtering during image stretch.
+.topic HIDC_D3D_VERSION
+Selects the version of Direct3D to use, 9 by default.
+.topic HIDC_DEBUG
+.topic HIDC_DEFAULT_INPUT
+Selects .\ctrlr\*.cfg files to use for custom controller mappings.
+.topic HIDC_DIAL
+Selects appropriate host controller for emulated controls.
+.topic HIDC_DUAL_LIGHTGUN
+Enables support for dual light guns.
+.topic HIDC_ENABLE_AUTOSAVE
+Enables MameUI to use the contents of the \sav directory to restart a game at last quit.
+.topic HIDC_FILTER_CLONES
+Enables filtering out clones, leaving only parent games showing.
+.topic HIDC_FILTER_EDIT
+Allows typing in text to filter, including: gamename, description, driver, and manufacturer.
+.topic HIDC_FILTER_HORIZONTAL
+Enables filtering out horizontal games, leaving only vertical games showing.
+.topic HIDC_FILTER_NONWORKING
+Enables filtering out non-working games, leaving only working games showing.
+.topic HIDC_FILTER_ORIGINALS
+Enables filtering out parent games, leaving only clones showing.
+.topic HIDC_FILTER_RASTER
+Enables filtering out raster games, leaving only vector games showing.
+.topic HIDC_FILTER_UNAVAILABLE
+Enables filtering out unavailable games, leaving only available games showing.
+.topic HIDC_FILTER_VECTOR
+Enables filtering out vector games, leaving only raster games showing.
+.topic HIDC_FILTER_VERTICAL
+Enables filtering out vertical games, leaving only horizontal games showing.
+.topic HIDC_FILTER_WORKING
+Enables filtering out working games, leaving only non-working games showing.
+.topic HIDC_FLICKER
+Selects the flicker level for vector lines.
+.topic HIDC_FLIPX
+Enables flipping the screen horizontally.
+.topic HIDC_FLIPY
+Enables flipping the screen vertically.
+.topic HIDC_FRAMESKIP
+Selects the number of frames skipped during emulation.
+.topic HIDC_FSBRIGHTNESS
+Selects the level of the full-screen brightness including artwork and UI.
+.topic HIDC_FSCONTRAST
+Selects the level of the full-screen contrast including artwork and UI.
+.topic HIDC_FSGAMMA
+Selects the level of the full-screen gamma including artwork and UI.
+.topic HIDC_GAME_CAPTION
+Attempts to remove the titlebar from a windowed game.
+.topic HIDC_GAMMA
+Selects the gamma level of the screen [but not artwork or UI].
+.topic HIDC_HIDE_MOUSE
+Enables hiding the mouse cursor on launch, useful for fullscreen UI w/ keyboard controlled cabinets, etc.
+.topic HIDC_HIGH_PRIORITY
+Selects MameUI's thread priority, default is 0. Running at real-time 1 is not recommended for potential control lag and sound desync.
+.topic HIDC_HISTORY
+Enables display of the history.dat file if present in the root directory.
+.topic HIDC_HWSTRETCH
+Enables hardware stretch for DirectDraw.
+.topic HIDC_JDZ
+Selects the level for an analogue joystick's deadzone.
+.topic HIDC_JOY_GUI
+Enables controlling the MameUI GUI with a gamepad.
+.topic HIDC_JOYSTICK
+Enables gamepad control within games.
+.topic HIDC_JSAT
+Selects the level for an analogue joystick's saturation.
+.topic HIDC_KEEPASPECT
+Enables creating windows for games that are way out of proportion e.g. thick, or tall.
+.topic HIDC_LANGUAGECHECK
+.topic HIDC_LANGUAGEEDIT
+.topic HIDC_LIGHTGUN
+Enables lightgun devices.
+.topic HIDC_LIGHTGUNDEVICE
+Selects appropriate host controller for emulated controls.
+.topic HIDC_LOG
+Enables programmatic logging as a game is played, saved out to file.
+.topic HIDC_MAXIMIZE
+Enables maximizing the game window or creating a very small window.
+.topic HIDC_MOUSE
+Enables mouse support within games.
+.topic HIDC_MULTITHREAD_RENDERING
+Enables handing off the final video blit to a second thread. Still experimental [.118] and may cause issues.
+.topic HIDC_NUMSCREENS
+Selects number of screens for MameUI to produce, windowed or multi-head physical monitors.
+.topic HIDC_OVERLAYS
+Enables art overlays in supported games.
+.topic HIDC_PADDLE
+Selects appropriate host controller for emulated controls.
+.topic HIDC_PAUSEBRIGHT
+Selects level of brightness for screen when paused.
+.topic HIDC_PEDAL
+Selects appropriate host controller for emulated controls.
+.topic HIDC_POSITIONAL
+Selects appropriate host controller for emulated controls.
+.topic HIDC_PRESCALE
+Selects level of prescaling, the higher the number, the sharper the stretched filtered image.
+.topic HIDC_PROP_RESET
+Enables resetting recent changes to the open tab.
+.topic HIDC_RANDOM_BG
+Enables random GUI background selection on restart, *.png files in \bkground directory.
+.topic HIDC_REFRESH
+Selects host monitor refresh rate.
+.topic HIDC_REFRESHSPEED
+Enables altering the speed of gameplay to keep the refresh rate lower than the screen.
+.topic HIDC_RELOAD
+Enables reload functionality for second button on lightguns.
+.topic HIDC_RESET_DEFAULT
+Enables resetting of games to default settings.
+.topic HIDC_RESET_EFFECT
+Enables resetting and clearing out the *.png effect chosen.
+.topic HIDC_RESET_FILTERS
+Enables resetting and clearing filters applied to folders.
+.topic HIDC_RESET_GAMES
+Enables resetting games to use default options.
+.topic HIDC_RESET_UI
+Enables resetting the options to fresh MameUI install settings.
+.topic HIDC_ROTATE
+Selects rotation setting for game display. Use the Auto options for pivot LCDs.
+.topic HIDC_SAMPLERATE
+Selects the output samplerate for games.
+.topic HIDC_SAMPLES
+Enables the use of external samples.
+.topic HIDC_SCREEN
+Selects screenX depends on the number of screens setting. Allows different settings for each screen.
+.topic HIDC_SCREENSELECT
+Selects the physical monitor to display window or full-screen multi-head output.
+.topic HIDC_SELECT_EFFECT
+Selects a *.png file in the \artwork directory for creating monitor-like effects.
+.topic HIDC_SIZES
+Selects from DirectX interrogated resolutions.
+.topic HIDC_SKIP_GAME_INFO
+Enables skipping game info screen when games started.
+.topic HIDC_SPEED
+Selects the speed of gameplay, relative to realtime; smaller numbers are slower.
+.topic HIDC_SLEEP
+Enables giving more timeslices back to the system, allowing MameUI to 'play nicer' with other apps.
+.topic HIDC_START_GAME_CHECK
+Enables running a mini-audit on application launch.
+.topic HIDC_STEADYKEY
+Enables the steadykey hack.
+.topic HIDC_STRETCH_SCREENSHOT_LARGER
+Enables increasing the size of the art pane items if the window is expanded.
+.topic HIDC_SWITCHRES
+Enables the switching of resolutions in fullscreen gaming.
+.topic HIDC_SYNCREFRESH
+Enables syncing the game internal speed to the host monitor.
+.topic HIDC_THROTTLE
+Enables throttling games to run at 100%.
+.topic HIDC_TRACKBALL
+Selects appropriate host controller for emulated controls.
+.topic HIDC_TRIPLE_BUFFER
+Enables the use of triple buffering during fullscreen gaming.
+.topic HIDC_USE_DEFAULT
+Enables reseting to default.
+.topic HIDC_USE_MOUSE
+Selects appropriate host controller for emulated controls.
+.topic HIDC_USE_SOUND
+Enables sound within games.
+.topic HIDC_VIDEO_MODE
+Selects the default rendering method.
+.topic HIDC_VIEW
+Selects the view in use in games.
+.topic HIDC_VOLUME
+Selects the volume level in games.
+.topic HIDC_WAITVSYNC
+Enables waiting for vertical sync.
+.topic HIDC_WINDOWED
+Enables running games in a window.
+.topic HIDC_HLSL_ALPHA
+Adjusts the alpha.
+.topic HIDC_HLSL_CURV
+Adjusts the curvature.
+.topic HIDC_HLSL_SAT
+Adjusts the saturation.
+.topic HIDC_HLSL_SHADOW
+Adjusts the effect of the shadowmask on the picture.
+.topic HIDC_HLSL_PIN
+Adjusts the pincushion distortion.
+.topic HIDC_HLSL_FLOOR
+.topic HIDC_HLSL_SCALE
+.topic HIDC_HLSL_POWER
+.topic HIDC_HLSL_PLIFE
+.topic HIDC_HLSL_ON
+Enables HLSL video enhancements.
diff --git a/docs/release/src/osd/winui/help/docs/Command Line Settings.htm b/docs/release/src/osd/winui/help/docs/Command Line Settings.htm
new file mode 100644
index 00000000000..8752595f429
--- /dev/null
+++ b/docs/release/src/osd/winui/help/docs/Command Line Settings.htm
@@ -0,0 +1,1377 @@
+
+<head>
+<style type="text/css">
+.style1 {
+ font-family: Arial, Helvetica, sans-serif;
+}
+.style2 {
+ font-size: x-small;
+}
+</style>
+</head>
+
+<body style="background-image: url('../images/bkground.gif')">
+
+<span class="style1"><span class="style2"><strong>This file describes general usage
+information about MAME. It is intended<br>
+to cover aspects of using and configuring the program that are common<br>
+across operating systems. For additional OS-specific options, please see<br>
+the separate documentation for your particular version of MAME.</strong></strong><br>
+<br>
+<br>
+Using the program<br>
+-----------------<br>
+<br>
+The usual way to run MAME is by telling it to run a particular game:<br>
+<br>
+mame &lt;gamename&gt; [options]<br>
+<br>
+For example:<br>
+<br>
+mame robby -nosound<br>
+<br>
+...will run Robby Roto without sound. There are many, many options<br>
+available. All commonly supported options are listed below. Options that<br>
+are specific to one operating system or version of MAME will be listed<br>
+in a separate document.<br>
+<br>
+An alternative way to run MAME is to give it a command:<br>
+<br>
+mame &lt;command&gt; [parameters]<br>
+<br>
+For example:<br>
+<br>
+mame -listsource gridlee<br>
+<br>
+...will print the name of the source file where the gridlee driver lives<br>
+to the screen. There are just a handful of these commands in MAME. They<br>
+are all listed below, just before the options list.<br>
+<br>
+<br>
+<br>
+Default Keys<br>
+------------<br>
+<br>
+All the keys below are fully configurable in the user interface. This list<br>
+shows the standard keyboard configuration.<br>
+<br>
+Tab Toggles the configuration menu.<br>
+<br>
+~ Toggles the On Screen Display. When the on-screen display is<br>
+visible, you can use the following keys to control it:<br>
+<br>
+Up - select previous parameter to modify<br>
+Down - select next parameter to modify<br>
+Enter - reset parameter value to its default<br>
+<br>
+Left - decrease the value of the selected parameter<br>
+Control+Left - decrease the value by 10x<br>
+Shift+Left - decrease the value by 0.1x<br>
+Alt+Left - decrease the value by the smallest amount<br>
+<br>
+Right - increase the value of the selected parameter<br>
+Control+Right - increase the value by 10x<br>
+Shift+Right - increase the value by 0.1x<br>
+Alt+Right - increase the value by the smallest amount<br>
+<br>
+P Pauses the game.<br>
+<br>
+Shift+P While paused, advances to next frame.<br>
+<br>
+F2 Service Mode for games that support it.<br>
+<br>
+F3 Resets the game.<br>
+<br>
+Shift+F3 Performs a &quot;hard reset&quot;, which tears everything down and re-<br>
+creates it from scratch. This is a more thorough and complete<br>
+reset than an F3.<br>
+<br>
+F4 Shows the game palette, decoded GFX, and any tilemaps. Use the<br>
+Enter key to switch between the three modes (palette, graphics,<br>
+and tilemaps). Press F4 again to turn off the display. The key<br>
+controls in each mode vary slightly:<br>
+<br>
+* Palette/colortable mode:<br>
+[ ] - switch between palette and colortable modes<br>
+Up/Down - scroll up/down one line at a time<br>
+Page Up/Page Down - scroll up/down one page at a time<br>
+Home/End - move to top/bottom of list<br>
+-/+ - increase/decrease the number of colors per row<br>
+Enter - switch to graphics viewer<br>
+<br>
+* Graphics mode:<br>
+[ ] - switch between different graphics sets<br>
+Up/Down - scroll up/down one line at a time<br>
+Page Up/Page Down - scroll up/down one page at a time<br>
+Home/End - move to top/bottom of list<br>
+Left/Right - change color displayed<br>
+R - rotate tiles 90 degrees clockwise<br>
+-/+ - increase/decrease the number of tiles per row<br>
+Enter - switch to tilemap viewer<br>
+<br>
+* Tilemap mode:<br>
+[ ] - switch between different tilemaps<br>
+Up/Down/Left/Right - scroll 8 pixels at a time<br>
+Shift+Up/Down/Left/Right - scroll 1 pixel at a time<br>
+Control+Up/Down/Left/Right - scroll 64 pixels at a time<br>
+R - rotate tilemap view 90 degrees clockwise<br>
+-/+ - increase/decrease the zoom factor<br>
+Enter - switch to palette/colortable mode<br>
+<br>
+Note: Not all games have decoded graphics and/or tilemaps.<br>
+<br>
+F6 Toggle cheat mode (if started with &quot;-cheat&quot;).<br>
+<br>
+F7 Load a save state. You will be requested to press a key to<br>
+determine which save state you wish to load. Note that the save<br>
+state feature is not supported for a large number of drivers. If<br>
+support is not enabled for a given driver, you will receive a<br>
+warning when attempting to save or load.<br>
+<br>
+Shift+F7 Create a save state. Requires an additional keypress to identify<br>
+the state, similar to the load option above.<br>
+<br>
+F8 Decrease frame skip on the fly.<br>
+<br>
+F9 Increase frame skip on the fly.<br>
+<br>
+F10 Toggle speed throttling.<br>
+<br>
+F11 Toggles speed display.<br>
+<br>
+Shift+F11 Toggles internal profiler display (if compiled in).<br>
+<br>
+F12 Saves a screen snapshot.<br>
+<br>
+Insert Fast forward. While held, runs the game with throttling disabled<br>
+and with the maximum frameskip.<br>
+<br>
+Escape Exits emulator.<br>
+<br>
+<br>
+<br>
+<br>
+Core commands<br>
+-------------<br>
+<br>
+-help / -h / -?<br>
+<br>
+Displays current MAME version and copyright notice.<br>
+<br>
+-validate / -valid<br>
+<br>
+Performs internal validation on every driver in the system. Run this<br>
+before submitting changes to ensure that you haven't violated any of<br>
+the core system rules.<br>
+<br>
+<br>
+<br>
+Configuration commands<br>
+----------------------<br>
+<br>
+-createconfig / -cc<br>
+<br>
+Creates the default mame.ini file. All the configuration options<br>
+(not commands) described below can be permanently changed by editing<br>
+this configuration file.<br>
+<br>
+-showconfig / -sc<br>
+<br>
+Displays the current configuration settings. If you route this to a<br>
+file, you can use it as an INI file. For example, the command:<br>
+<br>
+mame -showconfig &gt;mame.ini<br>
+<br>
+is equivalent to -createconfig.<br>
+<br>
+-showusage / -su<br>
+<br>
+Displays a summary of all the command line options. For options that<br>
+are not mentioned here, the short summary given by &quot;mame -showusage&quot;<br>
+is usually sufficient.<br>
+<br>
+<br>
+<br>
+Frontend commands<br>
+-----------------<br>
+<br>
+Note: By default, all the '-list' commands below write info to the screen.<br>
+If you wish to write the info to a textfile instead, add this to the end<br>
+of your command:<br>
+<br>
+&gt; filename<br>
+<br>
+...where 'filename' is the textfile's path and name<br>
+(e.g., c:\mame\list.txt).<br>
+<br>
+-listxml / -lx [&lt;gamename|wildcard&gt;]<br>
+<br>
+List comprehensive details for all of the supported games. The output<br>
+is quite long, so it is usually better to redirect this into a file.<br>
+The output is in XML format. By default all games are listed; however,<br>
+you can limit this list by specifying a driver name or wildcard after<br>
+the -listxml command.<br>
+<br>
+-listfull / -ll [&lt;gamename|wildcard&gt;]<br>
+<br>
+Displays a list of game driver names and descriptions. By default all<br>
+games are listed; however, you can limit this list by specifying a<br>
+driver name or wildcard after the -listfull command.<br>
+<br>
+-listsource / -ls [&lt;gamename|wildcard&gt;]<br>
+<br>
+Displays a list of drivers and the names of the source files their<br>
+game drivers live in. Useful for finding which driver a game runs on<br>
+in order to fix bugs. By default all games are listed; however, you<br>
+can limit this list by specifying a driver name or wildcard after<br>
+the -listsource command.<br>
+<br>
+-listclones / -lc [&lt;gamename|wildcard&gt;]<br>
+<br>
+Displays a list of clones. By default all clones are listed; however,<br>
+you can limit this list by specifying a driver name or wildcard after<br>
+the -listsource command.<br>
+<br>
+-listcrc<br>
+<br>
+Displays a full list of CRCs of all ROM images referenced by all<br>
+drivers within MAME.<br>
+<br>
+-listroms &lt;gamename&gt;<br>
+<br>
+Displays a list of ROM images referenced by the specified game.<br>
+<br>
+-listsamples &lt;gamename&gt;<br>
+<br>
+Displays a list of samples referenced by the specified game.<br>
+<br>
+-verifyroms [&lt;gamename|wildcard&gt;]<br>
+<br>
+Checks for invalid or missing ROM images. By default all drivers that<br>
+have valid ZIP files or directories in the rompath are verified;<br>
+however, you can limit this list by specifying a driver name or<br>
+wildcard after the -verifyroms command.<br>
+<br>
+-verifysamples [&lt;gamename|wildcard&gt;]<br>
+<br>
+Checks for invalid or missing samples. By default all drivers that<br>
+have valid ZIP files or directories in the samplepath are verified;<br>
+however, you can limit this list by specifying a driver name or<br>
+wildcard after the -verifyroms command.<br>
+<br>
+-romident<br>
+<br>
+Attempts to identify ROM files, if they are known to MAME, in the<br>
+specified .zip file or directory. This command can be used to try and<br>
+identify ROM sets taken from unknown boards. On exit, the errorlevel<br>
+is returned as one of the following:<br>
+<br>
+0: means all files were identified<br>
+7: means all files were identified except for 1 or more &quot;non-ROM&quot;<br>
+files<br>
+8: means some files were identified<br>
+9: means no files were identified<br>
+<br>
+<br>
+<br>
+Configuration options<br>
+---------------------<br>
+<br>
+-[no]readconfig / -[no]rc<br>
+<br>
+Enables or disables the reading of the config files. When enabled<br>
+(which is the default), MAME reads the following config files in order:<br>
+<br>
+- mame.ini<br>
+- &lt;mymame&gt;.ini (i.e. if MAME was renamed mame060.exe, MAME<br>
+parses mame060.ini here)<br>
+- debug.ini (if the debugger is enabled)<br>
+- vector.ini (for vector games only)<br>
+- &lt;driver&gt;.ini (based on the source filename of the driver)<br>
+- &lt;parent&gt;.ini (for clones only, may be called recursively)<br>
+- &lt;gamename&gt;.ini<br>
+<br>
+The settings in the later ini's override those in the earlier ini's.<br>
+So, for example, if you wanted to disable overlay effects in the<br>
+vector games, you can create a vector.ini with the &quot;effect none&quot; line<br>
+in it, and it will override whatever effect value you have in your<br>
+mame.ini. The default is ON (-readconfig).<br>
+<br>
+<br>
+<br>
+Core search path options<br>
+------------------------<br>
+<br>
+-rompath / -rp &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find ROM or hard disk images.<br>
+Multiple paths can be specified by separating them with semicolons.<br>
+The default is 'roms' (that is, a directory &quot;roms&quot; in the same directory<br>
+as the MAME executable).<br>
+<br>
+-samplepath / -sp &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find sample files. Multiple<br>
+paths can be specified by separating them with semicolons. The default<br>
+is 'samples' (that is, a directory &quot;samples&quot; in the same directory as<br>
+the MAME executable).<br>
+<br>
+-artpath / -artwork_directory &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find artwork files. Multiple<br>
+paths can be specified by separating them with semicolons. The default<br>
+is 'artwork' (that is, a directory &quot;artwork&quot; in the same directory as<br>
+the MAME executable).<br>
+<br>
+-ctrlrpath / -ctrlr_directory &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find controller-specific<br>
+configuration files. Multiple paths can be specified by separating<br>
+them with semicolons. The default is 'ctrlr' (that is, a directory<br>
+&quot;ctrlr&quot; in the same directory as the MAME executable).<br>
+<br>
+-inipath &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find .INI files. Multiple<br>
+paths can be specified by separating them with semicolons. The default<br>
+is '.;ini' (that is, search in the current directory first, and then<br>
+in the directory &quot;ini&quot; in the same directory as the MAME executable).<br>
+<br>
+-fontpath &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find .BDF font files. Multiple<br>
+paths can be specified by separating them with semicolons. The default<br>
+is '.' (that is, search in the same directory as the MAME executable).<br>
+<br>
+-crosshairpath &lt;path&gt;<br>
+<br>
+Specifies a list of paths within which to find crosshair files. Multiple<br>
+paths can be specified by separating them with semicolons. The default<br>
+is 'crsshair' (that is, a directory &quot;crsshair&quot; in the same directory as<br>
+the MAME executable). If the Crosshair is set to default in the menu,<br>
+MAME will look for gamename\cross#.png and then cross#.png in the<br>
+specified crsshairpath, where # is the player number. Failing that,<br>
+MAME will use built-in default crosshairs.<br>
+<br>
+<br>
+Core Output Directory Options<br>
+-----------------------------<br>
+<br>
+-cfg_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where configuration files are stored.<br>
+Configuration files store user configurable settings that are read at<br>
+startup and written when MAME exits. The default is 'cfg' (that is,<br>
+a directory &quot;cfg&quot; in the same directory as the MAME executable). If<br>
+this directory does not exist, it will be automatically created.<br>
+<br>
+-nvram_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where NVRAM files are stored. NVRAM files<br>
+store the contents of EEPROM and non-volatile RAM (NVRAM) for games<br>
+which used this type of hardware. This data is read at startup and<br>
+written when MAME exits. The default is 'nvram' (that is, a directory<br>
+&quot;nvram&quot; in the same directory as the MAME executable). If this<br>
+directory does not exist, it will be automatically created.<br>
+<br>
+-memcard_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where memory card files are stored.<br>
+Memory card files store the contents of removable memory cards for<br>
+games which used this type of hardware. This data is read and written<br>
+under control of the user via the &quot;Memory Card&quot; menu in the user<br>
+interface. The default is 'memcard' (that is, a directory &quot;memcard&quot;<br>
+in the same directory as the MAME executable). If this directory does<br>
+not exist, it will be automatically created.<br>
+<br>
+-input_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where input recording files are stored.<br>
+Input recordings are created via the -record option and played back<br>
+via the -playback option. The default is 'inp' (that is, a directory<br>
+&quot;inp&quot; in the same directory as the MAME executable). If this directory<br>
+does not exist, it will be automatically created.<br>
+<br>
+-state_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where save state files are stored. Save<br>
+state files are read and written either upon user request, or when<br>
+using the -autosave option. The default is 'sta' (that is, a directory<br>
+&quot;sta&quot; in the same directory as the MAME executable). If this directory<br>
+does not exist, it will be automatically created.<br>
+<br>
+-snapshot_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where screen snapshots are stored, when<br>
+requested by the user. The default is 'snap' (that is, a directory<br>
+&quot;snap&quot; in the same directory as the MAME executable). If this<br>
+directory does not exist, it will be automatically created.<br>
+<br>
+-diff_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where hard drive differencing files are<br>
+stored. Hard drive differencing files store any data that is written<br>
+back to a hard disk image, in order to preserve the original image.<br>
+The differencing files are created at startup when a game with a hard<br>
+disk image. The default is 'diff' (that is, a directory &quot;diff&quot; in the<br>
+same directory as the MAME executable). If this directory does not<br>
+exist, it will be automatically created.<br>
+<br>
+-comment_directory &lt;path&gt;<br>
+<br>
+Specifies a single directory where debugger comment files are stored.<br>
+Debugger comment files are written by the debugger when comments are<br>
+added to the disassembly for a game. The default is 'comments' (that<br>
+is, a directory &quot;comments&quot; in the same directory as the MAME<br>
+executable). If this directory does not exist, it will be<br>
+automatically created.<br>
+<br>
+<br>
+<br>
+Core Filename Options<br>
+---------------------<br>
+<br>
+-cheat_file &lt;filename&gt;<br>
+<br>
+Specifies the name of the cheat database file. The default is<br>
+'cheat.dat'.<br>
+<br>
+<br>
+<br>
+Core state/playback options<br>
+---------------------------<br>
+<br>
+-state &lt;slot&gt;<br>
+<br>
+Immediately after starting the specified game, will cause the save<br>
+state in the specified &lt;slot&gt; to be loaded.<br>
+<br>
+-[no]autosave<br>
+<br>
+When enabled, automatically creates a save state file when exiting<br>
+MAME and automatically attempts to reload it when later starting MAME<br>
+with the same game. This only works for games that have explicitly<br>
+enabled save state support in their driver. The default is OFF<br>
+(-noautosave).<br>
+<br>
+-playback / -pb &lt;filename&gt;<br>
+<br>
+Specifies a file from which to play back a series of game inputs. This<br>
+feature does not work reliably for all games, but can be used to watch<br>
+a previously recorded game session from start to finish. In order to<br>
+make things consistent, you should only record and playback with all<br>
+configuration (.cfg), NVRAM (.nv), and memory card files deleted. The<br>
+default is NULL (no playback).<br>
+<br>
+-record / -rec &lt;filename&gt;<br>
+<br>
+Specifies a file to record all input from a game session. This can be<br>
+used to record a game session for later playback. This feature does<br>
+not work reliably for all games, but can be used to watch a previously<br>
+recorded game session from start to finish. In order to make things<br>
+consistent, you should only record and playback with all configuration<br>
+(.cfg), NVRAM (.nv), and memory card files deleted. The default is<br>
+NULL (no recording).<br>
+<br>
+-snapname &lt;name&gt;<br>
+<br>
+Describes how MAME should name files for snapshots. &lt;name&gt; is a string<br>
+that provides a template that is used to generate a filename. Three<br>
+simple substitutions are provided: the / character represents the<br>
+path separator on any target platform (even Windows); the string %g<br>
+represents the driver name of the current game; and the string %i<br>
+represents an incrementing index. If %i is omitted, then each<br>
+snapshot taken will overwrite the previous one; otherwise, MAME will<br>
+find the next empty value for %i and use that for a filename. The<br>
+default is %g/%i, which creates a separate folder for each game,<br>
+and names the snapshots under it starting with 0000 and increasing<br>
+from there.<br>
+<br>
+-snapsize &lt;width&gt;x&lt;height&gt;<br>
+<br>
+Hard-codes the size for snapshots and movie recording. By default,<br>
+MAME will create snapshots at the game's current resolution in raw<br>
+pixels, and will create movies at the game's starting resolution in<br>
+raw pixels. If you specify this option, then MAME will create both<br>
+snapshots and movies at the size specified, and will bilinear filter<br>
+the result. Note that this size does not automatically rotate if the<br>
+game is vertically oriented. The default is 'auto'.<br>
+<br>
+-snapview &lt;viewname&gt;<br>
+<br>
+Specifies the view to use when rendering snapshots and movies. By<br>
+default, both use a special 'internal' view, which renders a separate<br>
+snapshot per screen or renders movies only of the first screen. By<br>
+specifying this option, you can override this default behavior and<br>
+select a single view that will apply to all snapshots and movies.<br>
+Note that &lt;viewname&gt; does not need to be a perfect match; rather, it<br>
+will select the first view whose name matches all the characters<br>
+specified by &lt;viewname&gt;. For example, -snapview native will match the<br>
+&quot;Native (15:14)&quot; view even though it is not a perfect match.<br>
+&lt;viewname&gt; can also be 'auto', which selects the first view with all<br>
+screens present. The default value is 'internal'.<br>
+<br>
+-mngwrite &lt;filename&gt;<br>
+<br>
+Writes each video frame to the given &lt;filename&gt; in MNG format,<br>
+producing an animation of the game session. Note that -mngwrite only<br>
+writes video frames; it does not save any audio data. Use -wavwrite<br>
+for that, and reassemble the audio/video using offline tools. The<br>
+default is NULL (no recording).<br>
+<br>
+-aviwrite &lt;filename&gt;<br>
+<br>
+Stream video and sound data to the given &lt;filename&gt; in AVI format,<br>
+producing an animation of the game session complete with sound. The<br>
+default is NULL (no recording).<br>
+<br>
+-wavwrite &lt;filename&gt;<br>
+<br>
+Writes the final mixer output to the given &lt;filename&gt; in WAV format,<br>
+producing an audio recording of the game session. The default is<br>
+NULL (no recording).<br>
+<br>
+-[no]burnin<br>
+<br>
+Tracks brightness of the screen during play and at the end of <br>
+emulation generates a PNG that can be used to simulate burn-in<br>
+effects on other games. The resulting PNG is created such that the<br>
+least used-areas of the screen are fully white (since burned-in areas <br>
+are darker, all other areas of the screen must be lightened a touch).<br>
+The intention is that this PNG can be loaded via an artwork file with<br>
+a low alpha (e.g, 0.1-0.2 seems to work well) and blended over the<br>
+entire screen. The PNG files are saved in the snap directory under <br>
+the gamename/burnin-&lt;screen.name&gt;.png. The default is OFF (-noburnin).<br>
+<br>
+<br>
+<br>
+Core performance options<br>
+------------------------<br>
+<br>
+-[no]autoframeskip / -[no]afs<br>
+<br>
+Automatically determines the frameskip level while you're playing the<br>
+game, adjusting it constantly in a frantic attempt to keep the game<br>
+running at full speed. Turning this on overrides the value you have<br>
+set for -frameskip below. The default is OFF (-noautoframeskip).<br>
+<br>
+-frameskip / -fs &lt;level&gt;<br>
+<br>
+Specifies the frameskip value. This is the number of frames out of<br>
+every 12 to drop when running. For example, if you say -frameskip 2,<br>
+then MAME will display 10 out of every 12 frames. By skipping those<br>
+frames, you may be able to get full speed in a game that requires more<br>
+horsepower than your computer has. The default value is -frameskip 0,<br>
+which skips no frames.<br>
+<br>
+-seconds_to_run / -str &lt;seconds&gt;<br>
+<br>
+This option can be used for benchmarking and automated testing. It tells<br>
+MAME to stop execution after a fixed number of seconds. By combining<br>
+this with a fixed set of other command line options, you can set up a<br>
+consistent environment for benchmarking MAME performance. In addition,<br>
+upon exit, the -str option will write a screenshot called final.png<br>
+to the game's snapshot directory.<br>
+<br>
+-[no]throttle<br>
+<br>
+Configures the default thottling setting. When throttling is on, MAME<br>
+attempts to keep the game running at the game's intended speed. When<br>
+throttling is off, MAME runs the game as fast as it can. Note that the<br>
+fastest speed is more often than not limited by your graphics card,<br>
+especially for older games. The default is ON (-throttle).<br>
+<br>
+-[no]sleep<br>
+<br>
+Allows MAME to give time back to the system when running with -throttle.<br>
+This allows other programs to have some CPU time, assuming that the<br>
+game isn't taxing 100% of your CPU resources. This option can<br>
+potentially cause hiccups in performance if other demanding programs<br>
+are running. The default is ON (-sleep).<br>
+<br>
+-speed &lt;factor&gt;<br>
+<br>
+Changes the way MAME throttles gameplay such that the game runs at some<br>
+multiplier of the original speed. A &lt;factor&gt; of 1.0 means to run the<br>
+game at its normal speed. A &lt;factor&gt; of 0.5 means run at half speed,<br>
+and a &lt;factor&gt; of 2.0 means run at 2x speed. Note that changing this<br>
+value affects sound playback as well, which will scale in pitch<br>
+accordingly. The internal resolution of the fraction is two decimal<br>
+places, so a value of 1.002 is the same as 1.0. The default is 1.0.<br>
+<br>
+-[no]refreshspeed / -[no]rs<br>
+<br>
+Allows MAME to dynamically adjust the gameplay speed such that it does<br>
+not exceed the slowest refresh rate for any targeted monitors in your<br>
+system. Thus, if you have a 60Hz monitor and run a game that is<br>
+actually designed to run at 60.6Hz, MAME will dynamically change the<br>
+speed down to 99% in order to prevent sound hiccups or other<br>
+undesirable side effects of running at a slower refresh rate. The<br>
+default is OFF (-norefreshspeed).<br>
+<br>
+<br>
+<br>
+Core rotation options<br>
+---------------------<br>
+<br>
+-[no]rotate<br>
+<br>
+Rotate the game to match its normal state (horizontal/vertical). This<br>
+ensures that both vertically and horizontally oriented games show up<br>
+correctly without the need to rotate your monitor. If you want to keep<br>
+the game displaying 'raw' on the screen the way it would have in the<br>
+arcade, turn this option OFF. The default is ON (-rotate).<br>
+<br>
+-[no]ror<br>
+-[no]rol<br>
+<br>
+Rotate the game screen to the right (clockwise) or left (counter-<br>
+clockwise) relative to either its normal state (if -rotate is<br>
+specified) or its native state (if -norotate is specified). The<br>
+default for both of these options is OFF (-noror -norol).<br>
+<br>
+-[no]flipx<br>
+-[no]flipy<br>
+<br>
+Flip (mirror) the game screen either horizontally (-flipx) or<br>
+vertically (-flipy). The flips are applied after the -rotate and<br>
+-ror/-rol options are applied. The default for both of these options<br>
+is OFF (-noflipx -noflipy).<br>
+<br>
+-[no]autoror<br>
+-[no]autorol<br>
+<br>
+These options are designed for use with pivoting screens that only<br>
+pivot in a single direction. If your screen only pivots clockwise,<br>
+use -autorol to ensure that the game will fill the screen either<br>
+horizontally or vertically in one of the directions you can handle.<br>
+If your screen only pivots counter-clockwise, use -autoror.<br>
+<br>
+<br>
+<br>
+Core artwork options<br>
+--------------------<br>
+<br>
+-[no]artwork_crop / -[no]artcrop<br>
+<br>
+Enable cropping of artwork to the game screen area only. This works<br>
+best with -video gdi or -video d3d, and means that vertically oriented<br>
+games running full screen can display their artwork to the left and<br>
+right sides of the screen. This does not work with -video ddraw<br>
+because of the way the game screens are rendered and scaled after the<br>
+fact. This option can also be controlled via the Video Options menu in<br>
+the user interface. The default is OFF (-noartwork_crop).<br>
+<br>
+-[no]use_backdrops / -[no]backdrop<br>
+<br>
+Enables/disables the display of backdrops. The default is ON<br>
+(-use_backdrops).<br>
+<br>
+-[no]use_overlays / -[no]overlay<br>
+<br>
+Enables/disables the display of overlays. The default is ON<br>
+(-use_overlays).<br>
+<br>
+-[no]use_bezels / -[no]bezel<br>
+<br>
+Enables/disables the display of bezels. The default is ON<br>
+(-use_bezels).<br>
+<br>
+<br>
+<br>
+Core screen options<br>
+-------------------<br>
+<br>
+-brightness &lt;value&gt;<br>
+<br>
+Controls the default brightness, or black level, of the game screens.<br>
+This option does not affect the artwork or other parts of the display.<br>
+Using the MAME UI, you can individually set the brightness for each<br>
+game screen; this option controls the initial value for all visible<br>
+game screens. The standard value is 1.0. Selecting lower values (down<br>
+to 0.1) will produce a darkened display, while selecting higher values<br>
+(up to 2.0) will give a brighter display. The default is 1.0.<br>
+<br>
+-contrast &lt;value&gt;<br>
+<br>
+Controls the contrast, or white level, of the game screens. This<br>
+option does not affect the artwork or other parts of the display.<br>
+Using the MAME UI, you can individually set the contrast for each<br>
+game screen; this option controls the initial value for all visible<br>
+game screens. The standard value is 1.0. Selecting lower values (down<br>
+to 0.1) will produce a dimmer display, while selecting higher values<br>
+(up to 2.0) will give a more saturated display. The default is 1.0.<br>
+<br>
+-gamma &lt;value&gt;<br>
+<br>
+Controls the gamma, which produces a potentially nonlinear black to<br>
+white ramp, for the game screens. This option does not affect the<br>
+artwork or other parts of the display. Using the MAME UI, you can<br>
+individually set the gamma for each game screen; this option controls<br>
+the initial value for all visible game screens. The standard value is<br>
+1.0, which gives a linear ramp from black to white. Selecting lower<br>
+values (down to 0.1) will increase the nonlinearity toward black,<br>
+while selecting higher values (up to 3.0) will push the nonlinearity<br>
+toward white. The default is 1.0.<br>
+<br>
+-pause_brightness &lt;value&gt;<br>
+<br>
+This controls the brightness level when MAME is paused. The default<br>
+value is 0.65.<br>
+<br>
+<br>
+<br>
+Core vector options<br>
+-------------------<br>
+<br>
+-[no]antialias / -[no]aa<br>
+<br>
+Enables antialiased line rendering for vector games. The default is ON<br>
+(-antialias).<br>
+<br>
+-beam &lt;width&gt;<br>
+<br>
+Sets the width of the vectors. This is a scaling factor against the<br>
+standard vector width. A value of 1.0 will keep the default vector<br>
+line width. Smaller values will reduce the width, and larger values<br>
+will increase the width. The default is 1.0.<br>
+<br>
+-flicker &lt;value&gt;<br>
+<br>
+Simulates a vector &quot;flicker&quot; effect, similar to a vector monitor that<br>
+needs adjustment. This option requires a float argument in the range<br>
+of 0.00 - 100.00 (0=none, 100=maximum). The default is 0.<br>
+<br>
+<br>
+<br>
+Core sound options<br>
+------------------<br>
+<br>
+-[no]sound<br>
+<br>
+Enable or disable sound altogether. The default is ON (-sound).<br>
+<br>
+-samplerate &lt;value&gt; / -sr &lt;value&gt;<br>
+<br>
+Sets the audio sample rate. Smaller values (e.g. 11025) cause lower<br>
+audio quality but faster emulation speed. Higher values (e.g. 48000)<br>
+cause higher audio quality but slower emulation speed. The default is<br>
+48000.<br>
+<br>
+-[no]samples<br>
+<br>
+Use samples if available. The default is ON (-samples).<br>
+<br>
+-volume / -vol &lt;value&gt;<br>
+<br>
+Sets the startup volume. It can later be changed with the user<br>
+interface (see Keys section). The volume is an attenuation in dB:<br>
+e.g., &quot;-volume -12&quot; will start with -12dB attenuation. The default<br>
+is 0.<br>
+<br>
+<br>
+<br>
+Core input options<br>
+------------------<br>
+<br>
+-[no]coin_lockout / -[no]coinlock<br>
+<br>
+Enables simulation of the &quot;coin lockout&quot; feature that is implmeneted<br>
+on a number of game PCBs. It was up to the operator whether or not<br>
+the coin lockout outputs were actually connected to the coin<br>
+mechanisms. If this feature is enabled, then attempts to enter a coin<br>
+while the lockout is active will fail and will display a popup message<br>
+in the user interface. If this feature is disabled, the coin lockout<br>
+signal will be ignored. The default is ON (-coin_lockout).<br>
+<br>
+-ctrlr &lt;controller&gt;<br>
+<br>
+Enables support for special controllers. Configuration files are<br>
+loaded from the ctrlrpath. They are in the same format as the .cfg<br>
+files that are saved, but only control configuration data is read<br>
+from the file. The default is NULL (no controller file).<br>
+<br>
+-[no]mouse<br>
+<br>
+Controls whether or not MAME makes use of mouse controllers. When<br>
+this is enabled, you will likely be unable to use your mouse for other<br>
+purposes until you exit or pause the game. The default is OFF<br>
+(-nomouse).<br>
+<br>
+-[no]joystick / -[no]joy<br>
+<br>
+Controls whether or not MAME makes use of joystick/gamepad controllers.<br>
+When this is enabled, MAME will ask DirectInput about which<br>
+controllers are connected. The default is OFF (-nojoystick).<br>
+<br>
+-[no]lightgun / -[no]gun<br>
+<br>
+Controls whether or not MAME makes use of lightgun controllers.<br>
+Note that most lightguns map to the mouse, so using -lightgun and<br>
+-mouse together may produce strange results. The default is OFF<br>
+(-nolightgun).<br>
+<br>
+-[no]multikeyboard / -[no]multikey<br>
+<br>
+Determines whether MAME differentiates between multiple keyboards.<br>
+Some systems may report more than one keyboard; by default, the data<br>
+from all of these keyboards is combined so that it looks like a single<br>
+keyboard. Turning this option on will enable MAME to report keypresses<br>
+on different keyboards independently. The default is OFF<br>
+(-nomultikeyboard).<br>
+<br>
+-[no]multimouse<br>
+<br>
+Determines whether MAME differentiates between multiple mice. Some<br>
+systems may report more than one mouse device; by default, the data<br>
+from all of these mice is combined so that it looks like a single<br>
+mouse. Turning this option on will enable MAME to report mouse<br>
+movement and button presses on different mice independently. The<br>
+default is OFF (-nomultimouse).<br>
+<br>
+-[no]steadykey / -[no]steady<br>
+<br>
+Some games require two or more buttons to be pressed at exactly the<br>
+same time to make special moves. Due to limitations in the keyboard<br>
+hardware, it can be difficult or even impossible to accomplish that<br>
+using the standard keyboard handling. This option selects a different<br>
+handling that makes it easier to register simultaneous button presses,<br>
+but has the disadvantage of making controls less responsive. The<br>
+default is OFF (-nosteadykey)<br>
+<br>
+-[no]offscreen_reload / -[no]reload<br>
+<br>
+Controls whether or not MAME treats a second button input from a<br>
+lightgun as a reload signal. In this case, MAME will report the gun's<br>
+position as (0,MAX) with the trigger held, which is equivalent to an<br>
+offscreen reload. This is only needed for games that required you to<br>
+shoot offscreen to reload, and then only if your gun does not support<br>
+off screen reloads. The default is OFF (-nooffscreen_reload).<br>
+<br>
+-joystick_map &lt;map&gt; / -joymap &lt;map&gt;<br>
+<br>
+Controls how joystick values map to digital joystick controls. MAME<br>
+accepts all joystick input from the system as analog data. For true<br>
+analog joysticks, this needs to be mapped down to the usual 4-way or<br>
+8-way digital joystick values. To do this, MAME divides the analog<br>
+range into a 9x9 grid. It then takes the joystick axis position (for<br>
+X and Y axes only), maps it to this grid, and then looks up a<br>
+translation from a joystick map. This parameter allows you to specify<br>
+the map. The default is 'auto', which means that a standard 8-way,<br>
+4-way, or 4-way diagonal map is selected automatically based on the<br>
+input port configuration of the current game.<br>
+<br>
+Maps are defined as a string of numbers and characters. Since the grid<br>
+is 9x9, there are a total of 81 characters necessary to define a<br>
+complete map. Below is an example map for an 8-way joystick:<br>
+<br>
+777888999 Note that the numeric digits correspond to the keys<br>
+777888999 on a numeric keypad. So '7' maps to up+left, '4' maps<br>
+777888999 to left, '5' maps to neutral, etc. In addition to the<br>
+444555666 numeric values, you can specify the character 's',<br>
+444555666 which means &quot;sticky&quot;. In this case, the value of the<br>
+444555666 map is the same as it was the last time a non-sticky<br>
+111222333 value was read.<br>
+111222333<br>
+111222333<br>
+<br>
+To specify the map for this parameter, you can specify a string of<br>
+rows separated by a '.' (which indicates the end of a row), like so:<br>
+<br>
+777888999.777888999.777888999.444555666.444555666.444555666.<br>
+111222333.111222333.111222333<br>
+<br>
+However, this can be reduced using several shorthands supported by the<br>
+&lt;map&gt; parameter. If information about a row is missing, then it is<br>
+assumed that any missing data in columns 5-9 are left/right symmetric<br>
+with data in columns 0-4; and any missing data in colums 0-4 is<br>
+assumed to be copies of the previous data. The same logic applies to<br>
+missing rows, except that up/down symmetry is assumed.<br>
+<br>
+By using these shorthands, the 81 character map can be simply<br>
+specified by this 11 character string: 7778...4445<br>
+<br>
+Looking at the first row, 7778 is only 4 characters long. The 5th<br>
+entry can't use symmetry, so it is assumed to be equal to the previous<br>
+character '8'. The 6th character is left/right symmetric with the 4th<br>
+character, giving an '8'. The 7th character is left/right symmetric<br>
+with the 3rd character, giving a '9' (which is '7' with left/right<br>
+flipped). Eventually this gives the full 777888999 string of the row.<br>
+<br>
+The second and third rows are missing, so they are assumed to be<br>
+identical to the first row. The fourth row decodes similarly to the<br>
+first row, producing 444555666. The fifth row is missing so it is<br>
+assumed to be the same as the fourth.<br>
+<br>
+The remaining three rows are also missing, so they are assumed to be<br>
+the up/down mirrors of the first three rows, giving three final rows<br>
+of 111222333.<br>
+<br>
+-joystick_deadzone &lt;value&gt; / -joy_deadzone &lt;value&gt; / -jdz &lt;value&gt;<br>
+<br>
+If you play with an analog joystick, the center can drift a little.<br>
+joystick_deadzone tells how far along an axis you must move before the<br>
+axis starts to change. This option expects a float in the range of<br>
+0.0 to 1.0. Where 0 is the center of the joystick and 1 is the outer<br>
+limit. The default is 0.3.<br>
+<br>
+-joystick_saturation &lt;value&gt; / joy_saturation &lt;value&gt; / -jsat &lt;value&gt;<br>
+<br>
+If you play with an analog joystick, the ends can drift a little,<br>
+and may not match in the +/- directions. joystick_saturation tells how<br>
+far along an axis movement change will be accepted before it reaches<br>
+the maximum range. This option expects a float in the range of 0.0 to<br>
+1.0, where 0 is the center of the joystick and 1 is the outer limit.<br>
+The default is 0.85.<br>
+<br>
+<br>
+<br>
+Core input automatic enable options<br>
+-----------------------------------<br>
+<br>
+-paddle_device &lt;keyboard|mouse|joystick|lightgun|none&gt; / -paddle<br>
+-adstick_device &lt;keyboard|mouse|joystick|lightgun|none&gt; / -adstick<br>
+-pedal_device &lt;keyboard|mouse|joystick|lightgun|none&gt; / -pedal<br>
+-dial_device &lt;keyboard|mouse|joystick|lightgun|none&gt; / -dial<br>
+-trackball_device &lt;keyboard|mouse|joystick|lightgun|none&gt; / -trackball<br>
+-lightgun_device &lt;keyboard|mouse|joystick|lightgun|none&gt;<br>
+-positional_device &lt;keyboard|mouse|joystick|lightgun|none&gt;<br>
+<br>
+Each of these options controls autoenabling the mouse, joystick, or<br>
+lightgun depending on the presence of a particular class of analog<br>
+control for a particular game. For example, if you specify the option<br>
+-paddle mouse, then any game that has a paddle control will<br>
+automatically enable mouse controls just as if you had explicitly<br>
+specified -mouse. Note that these controls override the values of<br>
+-[no]mouse, -[no]joystick, etc.<br>
+<br>
+<br>
+<br>
+Debugging options<br>
+-----------------<br>
+<br>
+-[no]log<br>
+<br>
+Creates a file called error.log which contains all of the internal<br>
+log messages generated by the MAME core and game drivers. The default<br>
+is OFF (-nolog).<br>
+<br>
+-[no]verbose / -[no]v<br>
+<br>
+Displays internal diagnostic information. This information is very<br>
+useful for debugging problems with your configuration. IMPORTANT: when<br>
+reporting bugs, please run with mame -verbose and include the<br>
+resulting information. The default is OFF (-noverbose).<br>
+<br>
+-[no]update_in_pause<br>
+<br>
+Enables updating of the main screen bitmap while the game is paused.<br>
+This means that the VIDEO_UPDATE callback will be called repeatedly<br>
+during pause, which can be useful for debugging. The default is OFF<br>
+(-noupdate_in_pause).<br>
+<br>
+-[no]debug<br>
+<br>
+Activates the integrated debugger. By default, the debugger is entered<br>
+by pressing the tilde (~) key during emulation. It is also entered<br>
+immediately at startup. The default is OFF (-nodebug).<br>
+<br>
+-debugscript &lt;filename&gt;<br>
+<br>
+Specifies a file that contains a list of debugger commands to execute<br>
+immediately upon startup. The default is NULL (no commands).<br>
+<br>
+<br>
+<br>
+Core misc options<br>
+-----------------<br>
+<br>
+-bios &lt;biosname&gt;<br>
+<br>
+Specifies the specific BIOS to use with the current game, for game<br>
+systems that make use of a BIOS. The -listxml output will list all of<br>
+the possible BIOS names for a game. The default is 'default'.<br>
+<br>
+-[no]cheat / -[no]c<br>
+<br>
+Enables the reading of the cheat database, if present, and the Cheat<br>
+menu in the user interface. The default is OFF (-nocheat).<br>
+<br>
+-[no]skip_gameinfo<br>
+<br>
+Forces MAME to skip displaying the game info screen. The default is<br>
+OFF (-noskip_gameinfo).<br>
+<br>
+</span></span><span class="style2"><strong>This file describes Windows-specific
+usage information about MAME. It is<br>
+intended to cover aspects of using and configuring the program that are<br>
+specific to running MAME from the command line on a Windows-based system.<br>
+For common options that apply to all systems, please see config.txt.</strong><br>
+<br>
+<br>
+<br>
+Default Keys<br>
+------------<br>
+<br>
+In addition to the keys described in config.txt, the following additional<br>
+keys are defined for Windows versions of MAME:<br>
+<br>
+<br>
+Alt+Enter Toggles between full-screen and windowed mode.<br>
+<br>
+<br>
+<br>
+Windows debugging options<br>
+-------------------------<br>
+<br>
+-[no]oslog<br>
+<br>
+Outputs the error.log data to the Windows debugger. This can be used at<br>
+the same time as -log to output the log data to both targets as well.<br>
+Default is OFF (-nooslog).<br>
+<br>
+<br>
+<br>
+Windows performance options<br>
+---------------------------<br>
+<br>
+-priority &lt;priority&gt;<br>
+<br>
+Sets the thread priority for the MAME threads. By default the priority<br>
+is left alone to guarantee proper cooperation with other applications.<br>
+The valid range is -15 to 1, with 1 being the highest priority. The<br>
+default is 0 (NORMAL priority).<br>
+<br>
+-[no]multithreading / -[no]mt<br>
+<br>
+Enables multithreading within MAME. At the moment, this causes the<br>
+window and all DirectDraw/Direct3D code to execute on a second thread,<br>
+which can improve performance on hyperthreaded and multicore systems.<br>
+The default is OFF (-nomultithreading).<br>
+<br>
+-numprocessors &lt;auto|value&gt;<br>
+Specify the number of processors to use for work queues. Specifying<br>
+&quot;auto&quot; will use the value reported by the system or environment <br>
+variable OSDPROCESSORS. To avoid abuse, this value is internally limited<br>
+to 4 times the number of processors reported by the system. <br>
+The default is &quot;auto&quot;.<br>
+<br>
+<br>
+Windows video options<br>
+---------------------<br>
+<br>
+-video &lt;gdi|ddraw|d3d|none&gt;<br>
+<br>
+Specifies which video subsystem to use for drawing. By specifying 'gdi'<br>
+here, you tell MAME to render video using standard Windows graphics<br>
+drawing calls. This is the slowest but most compatible option.<br>
+Specifying 'ddraw' instructs MAME to use DirectDraw for rendering.<br>
+This causes MAME to render everything at a lower resolution and then<br>
+upscale the results at the end. This produces high performance,<br>
+especially on older or low-power video cards, but has a noticeably<br>
+lower output quality. Specifying 'd3d' tells MAME to use Direct3D for<br>
+rendering. This produces the highest quality output and enables all<br>
+rendering options. It is recommended if you have a recent (2002+)<br>
+video card. The final option 'none' displays no windows and does no<br>
+drawing. This is primarily present for doing CPU benchmarks without<br>
+the overhead of the video system. The default is d3d.<br>
+<br>
+-numscreens &lt;count&gt;<br>
+<br>
+Tells MAME how many output windows to create. For most games, a single<br>
+output window is all you need, but some games originally used multiple<br>
+screens. Each screen (up to 4) has its own independent settings for<br>
+physical monitor, aspect ratio, resolution, and view, which can be<br>
+set using the options below. The default is 1.<br>
+<br>
+-[no]window<br>
+<br>
+Run MAME in either a window or full screen. The default is OFF<br>
+(-nowindow).<br>
+<br>
+-[no]maximize / -[no]max<br>
+<br>
+Controls initial window size in windowed mode. If it is set on, the<br>
+window will initially be set to the maximum supported size when you<br>
+start MAME. If it is turned off, the window will start out at the<br>
+smallest supported size. This option only has an effect when the<br>
+-window option is used. The default is ON (-maximize).<br>
+<br>
+-[no]keepaspect / -[no]ka<br>
+<br>
+Enables aspect ratio enforcement. When this option is on, the game's<br>
+proper aspect ratio (generally 4:3 or 3:4) is enforced, so you get the<br>
+game looking like it should. When running in a window with this option<br>
+on, you can only resize the window to the proper aspect ratio, unless<br>
+you are holding down the CONTROL key. By turning the option off, the<br>
+aspect ratio is allowed to float. In full screen mode, this means that<br>
+all games will stretch to the full screen size (even vertical games).<br>
+In window mode, it means that you can freely resize the window without<br>
+any constraints. The default is ON (-keepaspect).<br>
+<br>
+-prescale &lt;amount&gt;<br>
+<br>
+Controls the size of the screen images when they are passed off to the<br>
+graphics system for scaling. At the minimum setting of 1, the screen<br>
+is rendered at its original resolution before being scaled. At higher<br>
+settings, the screen is expanded by a factor of &lt;amount&gt; before being<br>
+scaled. With -video ddraw or -video d3d, this produces a less blurry<br>
+image at the expense of some speed. In -video ddraw mode, this also<br>
+increases the effective resolution of non-screen elements such as<br>
+artwork and fonts. The default is 1.<br>
+<br>
+-effect &lt;filename&gt;<br>
+<br>
+Specifies a single PNG file that is used as an overlay over any game<br>
+screens in the video display. This PNG file is assumed to live in the<br>
+root of one of the artpath directories. The pattern in the PNG file is<br>
+repeated both horizontally and vertically to cover the entire game<br>
+screen areas (but not any external artwork), and is rendered at<br>
+the target resolution of the game image. For -video gdi and -video d3d<br>
+modes, this means that one pixel in the PNG will map to one pixel on<br>
+your output display. For -video ddraw, this means that one pixel in the<br>
+PNG will map to one pixel in the prescaled game screen. If you wish to<br>
+use an effect that requires mapping n PNG pixels to each game screen<br>
+pixel with -video ddraw, you need to specify a -prescale factor of n as<br>
+well. The RGB values of each pixel in the PNG are multiplied against the<br>
+RGB values of the target screen. The default is 'none', meaning no<br>
+effect.<br>
+<br>
+-[no]waitvsync<br>
+<br>
+Waits for the refresh period on your computer's monitor to finish<br>
+before starting to draw video to your screen. If this option is off,<br>
+MAME will just draw to the screen at any old time, even in the middle<br>
+of a refresh cycle. This can cause &quot;tearing&quot; artifacts, where the top<br>
+portion of the screen is out of sync with the bottom portion. Tearing<br>
+is not noticeable on all games, and some people hate it more than<br>
+others. However, if you turn this option on, you will waste more of<br>
+your CPU cycles waiting for the proper time to draw, so you will see a<br>
+performance hit. You should only need to turn this on in windowed mode.<br>
+In full screen mode, it is only needed if -triplebuffer does not<br>
+remove the tearing, in which case you should use -notriplebuffer<br>
+-waitvsync. Note that this option does not work with -video gdi mode.<br>
+The default is OFF (-nowaitvsync).<br>
+<br>
+-[no]syncrefresh<br>
+<br>
+Enables speed throttling only to the refresh of your monitor. This<br>
+means that the game's actual refresh rate is ignored; however, the<br>
+sound code still attempts to keep up with the game's original refresh<br>
+rate, so you may encounter sound problems. This option is intended<br>
+mainly for those who have tweaked their video card's settings to<br>
+provide carefully matched refresh rate options. Note that this option<br>
+does not work with -video gdi mode.The default is OFF (-nosyncrefresh).<br>
+<br>
+<br>
+<br>
+DirectDraw-specific options<br>
+---------------------------<br>
+<br>
+-[no]hwstretch / -[no]hws<br>
+<br>
+When enabled, MAME uses the hardware stretching abilities of your<br>
+video card to scale the game image and associated artwork to the<br>
+target resolution. Depending on the quality of your graphic card and<br>
+its drivers, this may be a fractional, antialiased scaling (nice) or<br>
+an integer, blocky scaling (not so nice), in which case you might want<br>
+to disable this option. In addition, if you have configured specific<br>
+arcade-like video modes for MAME and don't want MAME to perform any<br>
+non-integral scaling of the image, you should also disable this option.<br>
+The default is ON (-hwstretch).<br>
+<br>
+<br>
+<br>
+Direct3D-specific options<br>
+-------------------------<br>
+<br>
+-d3dversion &lt;version&gt;<br>
+<br>
+MAME supports both Direct3D 9 and Direct3D 8 for maximum compatibility.<br>
+By default, it will automatically detect which one it can use and use<br>
+that version exclusively. You can override MAME's selection with this<br>
+option. It is primarily intended as a means for the MAME developers to<br>
+test compatibility with older hardware; for the most part, there is no<br>
+reason to alter this setting. The default is 9.<br>
+<br>
+-[no]filter / -[no]d3dfilter / -[no]flt<br>
+<br>
+Enable bilinear filtering on the game screen graphics. When disabled,<br>
+point filtering is applied, which is crisper but leads to scaling<br>
+artifacts. If you don't like the filtered look, you are probably better<br>
+off increasing the -prescale value rather than turning off filtering<br>
+altogether. The default is ON (-filter).<br>
+<br>
+<br>
+<br>
+Per-window options<br>
+------------------<br>
+<br>
+-screen &lt;display&gt;<br>
+-screen0 &lt;display&gt;<br>
+-screen1 &lt;display&gt;<br>
+-screen2 &lt;display&gt;<br>
+-screen3 &lt;display&gt;<br>
+<br>
+Specifies which physical monitor on your system you wish to have each<br>
+window use by default. In order to use multiple windows, you must have<br>
+increased the value of the -numscreens option. The name of each<br>
+display in your system can be determined by running MAME with the<br>
+-verbose option. The display names are typically in the format of:<br>
+\\.\DISPLAYn, where 'n' is a number from 1 to the number of connected<br>
+monitors. The default value for these options is 'auto', which means<br>
+that the first window is placed on the first display, the second<br>
+window on the second display, etc.<br>
+<br>
+The -screen0, -screen1, -screen2, -screen3 parameters apply to the<br>
+specific window. The -screen parameter applies to all windows. The<br>
+window-specific options override values from the all window option.<br>
+<br>
+-aspect &lt;width:height&gt; / -screen_aspect &lt;num:den&gt;<br>
+-aspect0 &lt;width:height&gt;<br>
+-aspect1 &lt;width:height&gt;<br>
+-aspect2 &lt;width:height&gt;<br>
+-aspect3 &lt;width:height&gt;<br>
+<br>
+Specifies the physical aspect ratio of the physical monitor for each<br>
+window. In order to use multiple windows, you must have increased the<br>
+value of the -numscreens option. The physical aspect ratio can be<br>
+determined by measuring the width and height of the visible screen<br>
+image and specifying them separated by a colon. The default value for<br>
+these options is 'auto', which means that MAME assumes the aspect<br>
+ratio is proportional to the number of pixels in the desktop video<br>
+mode for each monitor.<br>
+<br>
+The -aspect0, -aspect1, -aspect2, -aspect3 parameters apply to the<br>
+specific window. The -aspect parameter applies to all windows. The<br>
+window-specific options override values from the all window option.<br>
+<br>
+-resolution &lt;widthxheight[@refresh]&gt; / -r &lt;widthxheight[@refresh]&gt;<br>
+-resolution0 &lt;widthxheight[@refresh]&gt; / -r0 &lt;widthxheight[@refresh]&gt;<br>
+-resolution1 &lt;widthxheight[@refresh]&gt; / -r1 &lt;widthxheight[@refresh]&gt;<br>
+-resolution2 &lt;widthxheight[@refresh]&gt; / -r2 &lt;widthxheight[@refresh]&gt;<br>
+-resolution3 &lt;widthxheight[@refresh]&gt; / -r3 &lt;widthxheight[@refresh]&gt;<br>
+<br>
+Specifies an exact resolution to run in. In full screen mode, MAME<br>
+will try to use the specific resolution you request. The width and<br>
+height are required; the refresh rate is optional. If omitted or<br>
+set to 0, MAME will determine the mode auomatically. For example,<br>
+-resolution 640x480 will force 640x480 resolution, but MAME is free to<br>
+choose the refresh rate. Similarly, -resolution 0x0@60 will force a<br>
+60Hz refresh rate, but allows MAME to choose the resolution. The<br>
+string &quot;auto&quot; is also supported, and is equivalent to 0x0@0. In window<br>
+mode, this resolution is used as a maximum size for the window. This<br>
+option requires the -switchres option as well in order to actually<br>
+enable resolution switching with -video ddraw or -video d3d. The<br>
+default value for these options is 'auto'.<br>
+<br>
+The -resolution0, -resolution1, -resolution2, -resolution3 parameters<br>
+apply to the specific window. The -resolution parameter applies to all<br>
+windows. The window-specific options override values from the all<br>
+window option.<br>
+<br>
+-view &lt;viewname&gt;<br>
+-view0 &lt;viewname&gt;<br>
+-view1 &lt;viewname&gt;<br>
+-view2 &lt;viewname&gt;<br>
+-view3 &lt;viewname&gt;<br>
+<br>
+Specifies the initial view setting for each window. The &lt;viewname&gt;<br>
+does not need to be a perfect match; rather, it will select the first<br>
+view whose name matches all the characters specified by &lt;viewname&gt;.<br>
+For example, -view native will match the &quot;Native (15:14)&quot; view even<br>
+though it is not a perfect match. The value 'auto' is also supported,<br>
+and requests that MAME perform a default selection. The default value<br>
+for these options is 'auto'.<br>
+<br>
+The -view0, -view1, -view2, -view3 parameters apply to the<br>
+specific window. The -view parameter applies to all windows. The<br>
+window-specific options override values from the all window option.<br>
+<br>
+<br>
+<br>
+Full screen options<br>
+-------------------<br>
+<br>
+-[no]triplebuffer / -[no]tb<br>
+<br>
+Enables or disables &quot;triple buffering&quot;. Normally, MAME just draws<br>
+directly to the screen, without any fancy buffering. But with this<br>
+option enabled, MAME creates three buffers to draw to, and cycles<br>
+between them in order. It attempts to keep things flowing such that one<br>
+buffer is currently displayed, the second buffer is waiting to be<br>
+displayed, and the third buffer is being drawn to. -triplebuffer will<br>
+override -waitvsync, if the buffer is sucessfully created. This option<br>
+does not work with -video gdi. The default is OFF (-notriplebuffer).<br>
+<br>
+-[no]switchres<br>
+<br>
+Enables resolution switching. This option is required for the<br>
+-resolution* options to switch resolutions in full screen mode. On<br>
+modern video cards, there is little reason to switch resolutions unless<br>
+you are trying to achieve the &quot;exact&quot; pixel resolutions of the original<br>
+games, which requires significant tweaking. This option is also useful<br>
+on LCD displays, since they run with a fixed resolution and switching<br>
+resolutions on them is just silly. This option does not work with<br>
+-video gdi. The default is OFF (-noswitchres).<br>
+<br>
+-full_screen_brightness / -fsb &lt;value&gt;<br>
+<br>
+Controls the brightness, or black level, of the entire display. The<br>
+standard value is 1.0. Selecting lower values (down to 0.1) will produce<br>
+a darkened display, while selecting higher values (up to 2.0) will<br>
+give a brighter display. Note that not all video cards have hardware to<br>
+support this option. This option does not work with -video gdi. The<br>
+default is 1.0.<br>
+<br>
+-full_screen_contrast / -fsc &lt;value&gt;<br>
+<br>
+Controls the contrast, or white level, of the entire display. The<br>
+standard value is 1.0. Selecting lower values (down to 0.1) will produce<br>
+a dimmer display, while selecting higher values (up to 2.0) will<br>
+give a more saturated display. Note that not all video cards have<br>
+hardware to support this option. This option does not work with<br>
+-video gdi. The default is 1.0.<br>
+<br>
+-full_screen_gamma / -fsg &lt;value&gt;<br>
+<br>
+Controls the gamma, which produces a potentially nonlinear black to<br>
+white ramp, for the entire display. The standard value is 1.0, which<br>
+gives a linear ramp from black to white. Selecting lower values (down<br>
+to 0.1) will increase the nonlinearity toward black, while selecting<br>
+higher values (up to 3.0) will push the nonlinearity toward white. Note<br>
+that not all video cards have hardware to support this option. This<br>
+option does not work with -video gdi. The default is 1.0.<br>
+<br>
+<br>
+<br>
+Windows sound options<br>
+---------------------<br>
+<br>
+-audio_latency &lt;value&gt;<br>
+<br>
+This controls the amount of latency built into the audio streaming. By<br>
+default MAME tries to keep the DirectSound audio buffer between 1/5 and<br>
+2/5 full. On some systems, this is pushing it too close to the edge,<br>
+and you get poor sound sometimes. The latency parameter controls the<br>
+lower threshold. The default is 1 (meaning lower=1/5 and upper=2/5).<br>
+Set it to 2 (-audio_latency 2) to keep the sound buffer between 2/5 and<br>
+3/5 full. If you crank it up to 4, you can definitely notice the lag.<br>
+<br>
+<br>
+<br>
+Input device options<br>
+--------------------<br>
+<br>
+-[no]dual_lightgun / -[no]dual<br>
+<br>
+Controls whether or not MAME attempts to track two lightguns connected<br>
+at the same time. This option requires -lightgun. This option is a hack<br>
+for supporting older dual lightgun setups. If you have multiple<br>
+lightguns connected, you will probably just need to enable -mouse and<br>
+configure each lightgun independently. The default is OFF<br>
+(-nodual_lightgun).<br>
+</span>
+
+
+</html>
diff --git a/docs/release/src/osd/winui/help/docs/Mame License.htm b/docs/release/src/osd/winui/help/docs/Mame License.htm
new file mode 100644
index 00000000000..23c0accfef4
--- /dev/null
+++ b/docs/release/src/osd/winui/help/docs/Mame License.htm
@@ -0,0 +1,57 @@
+
+<head>
+<style type="text/css">
+.style1 {
+ font-family: Arial;
+ font-size: x-small;
+}
+</style>
+</head>
+
+<body background="../images/bkground.gif">
+
+<div id="outer">
+ <div id="center">
+ <div class="content">
+ <font face="Arial"><b>Copyright © 1997-2010, Nicola Salmoria
+ and the MAME team<br>
+ All rights reserved.</b></font><font face="Arial" size="2"> </font>
+ <p><span class="style1">Unless otherwise explicitly stated, all code
+ in MAME is released under the<br>
+ following license:</span></p>
+ <p><font face="Arial" size="2">Redistribution and use of this code
+ or any derivative works are permitted provided that the following
+ conditions are met: </font></p>
+ <ul>
+ <li><font face="Arial" size="2">Redistributions may not be sold,
+ nor may they be used in a commercial product or activity. </font>
+ </li>
+ <li><font face="Arial" size="2">Redistributions that are
+ modified from the original source must include the complete
+ source code, including the source code for all components used
+ by a binary built from the modified sources. However, as a
+ special exception, the source code distributed need not include
+ anything that is normally distributed (in either source or
+ binary form) with the major components (compiler, kernel, and so
+ on) of the operating system on which the executable runs, unless
+ that component itself accompanies the executable. </font></li>
+ <li><font face="Arial" size="2">Redistributions must reproduce
+ the above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other materials
+ provided with the distribution. </font></li>
+ </ul>
+ <p><font face="Arial" size="2">THIS SOFTWARE IS PROVIDED BY THE
+ COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE. </font></div>
+ </div>
+</div>
diff --git a/docs/release/src/osd/winui/help/docs/Mame Statement of Purpose.htm b/docs/release/src/osd/winui/help/docs/Mame Statement of Purpose.htm
new file mode 100644
index 00000000000..95312c7012b
--- /dev/null
+++ b/docs/release/src/osd/winui/help/docs/Mame Statement of Purpose.htm
@@ -0,0 +1,79 @@
+<body background="../images/bkground.gif">
+
+<div id="outer">
+ <div id="center">
+ <div class="content">
+ <b>
+ <font face="Arial">MAME, the Multiple Arcade Machine
+ Emulator<br>
+ Copyright © 1997-2010 by Nicola Salmoria and the MAME team </font>
+ </b>
+ <h2><font face="Arial" size="3">I. Purpose</font></h2>
+ <p><font face="Arial" size="2">MAME is strictly a non-profit
+ project. Its main purpose is to be a reference to the inner workings
+ of the emulated arcade machines. This is done both for educational
+ purposes and for preservation purposes, in order to prevent many
+ historical games from disappearing forever once the hardware they
+ run on stops working. Of course, in order to preserve the games and
+ demonstrate that the emulated behavior matches the original, you
+ must also be able to actually play the games. This is considered a
+ nice side effect, and is not MAME's primary focus. </font></p>
+ <p><font face="Arial" size="2">It is not our intention to infringe
+ on any copyrights or patents on the original games. All of MAME's
+ source code is either our own or freely available. To operate, the
+ emulator requires images of the original ROMs, CDs, or hard disks
+ from the arcade machines, which must be provided by the user. No
+ portions of the original game code are included in the executable.
+ </font></p>
+ <h2><font face="Arial" size="3">II. Cost</font></h2>
+ <p><font face="Arial" size="2">MAME is free. Its source code is
+ free. Selling either is not allowed. </font></p>
+ <h2><font face="Arial" size="3">III. Image Files</font></h2>
+ <p><font face="Arial" size="2">ROM, CD, and hard disk images are all
+ copyrighted material. They cannot be distributed without the
+ explicit permission of the copyright owner. They are not &quot;abandonware&quot;,
+ nor have any of the games supported by MAME passed out of copyright.
+ </font></p>
+ <p><font face="Arial" size="2">MAME is not intended to be used as a
+ tool for mass copyright infringement. Therefore, it is strongly
+ against the authors' wishes to sell, advertise, or link to resources
+ that provide illegal copies of ROM, CD, or hard disk images. </font>
+ </p>
+ <h2><font face="Arial" size="3">IV. Derivative Works</font></h2>
+ <p><font face="Arial" size="2">Derivative works are allowed under
+ the MAME license. However, you are discouraged from providing
+ specific functionality that goes against the philosophy of the MAME
+ team. Specifically: </font></p>
+ <ul>
+ <li><font face="Arial" size="2">Do not add games which are more
+ recent than 3 years old, or which are still being sold new by
+ the company that produced them. MAME is not intended to be a
+ platform that competes with arcade games that are still being
+ actively sold. </font></li>
+ <li><font face="Arial" size="2">Do not provide a means of
+ generating a list of games that specifically identifies those
+ games for which the user does not have image files. This only
+ encourages users to seek out sources for illegal ROM, CD, and
+ hard disk images in order to &quot;complete&quot; their collection. </font>
+ </li>
+ <li><font face="Arial" size="2">Do not remove the startup screen
+ that contains information about why certain non-working games
+ don't work. This only serves to generate a bunch of useless
+ email traffic to the developers asking why the games don't work.
+ </font></li>
+ </ul>
+ <p><font face="Arial" size="2">Because the name MAME is trademarked,
+ you must abide by the rules of the trademark usage if you wish to
+ use &quot;MAME&quot; as part of the name your derivative work. In general,
+ this means you must request permission, which requires that you
+ follow the guidelines above. </font></p>
+ <p><font face="Arial" size="2">The version number of any derivative
+ work should reflect the version number of the MAME release it was
+ derived from. </font></p>
+ <h2><font face="Arial" size="3">V. Official Contact Information</font></h2>
+ <p><font face="Arial" size="2">For questions regarding the MAME
+ license, trademark, or other usage, go to
+ <a href="http://www.mamedev.com/contact.html?legal">
+ http://www.mamedev.com/</a>.</font></div>
+ </div>
+</div>
diff --git a/docs/release/src/osd/winui/help/docs/whatsnew.txt b/docs/release/src/osd/winui/help/docs/whatsnew.txt
new file mode 100644
index 00000000000..9b7e00c31ef
--- /dev/null
+++ b/docs/release/src/osd/winui/help/docs/whatsnew.txt
@@ -0,0 +1,511 @@
+0.152
+-------
+
+
+MAMETesters Bugs Fixed
+----------------------
+- 04424: [Graphics] (seta.c) thunderlbl: [debug] Severe
+ graphic issues (Osso)
+- 05357: [Crash/Freeze] (taitogn.c) nightrai: fails to boot
+ into the game (smf)
+- 05236: [Graphics] multiple monitor support doesn't work with d3d
+- 05391: [Misc.] (cave.c) ppsatan: manufacturer info for ppsatan
+- 05383: [Graphics] (twin16.c) hpuncher: Screen is split and
+ graphics are offset (Alex Jackson)
+- 00785: [Sound] (omegrace.c) omegrace: Corrupted music after
+ completing first several levels. (hap)
+- 05214: [Color/Palette] vector games: Vector games with color overlay
+ show in b&w on Windows D3D render when HLSL is disabled. (hap)
+- 05384: [DIP/Input] (lethal.c) lethaleneab, lethaleneae: Language DIP
+ Switch not changing the language (Tafoid)
+- 05355: [DIP/Input] (cps1.c) sf2m3 ; sf2m8: Kick inputs are not working
+ LK MK HK (Osso)
+- 05375: [Documentation] (sderby.c) sderby, sderby2: 1 set name and 1
+ full name need changed
+- 05373: [Crash/Freeze] (capbowl.c) capbowl3, capbowl4: Black screen
+ after starting game (Phil Bennett)
+- 05366: [Core] (harddriv.c) harddriv and clones, racedriv and clones: RTC
+ Day and Month error and fails to start
+- 05365: [Documentation] (namcos21.c) driveyes: The correct description
+ is "Driver's Eyes (Japan)"
+- 05364: [Compiling] Error when compiling with NO_USE_QTDEBUG
+- 05356: [Color/Palette] (midvunit.c) offroadc: Off Road Challenge and
+ clones have wrong color in some textures (Phil Bennett)
+- 05207: [Graphics] All vector games: In the vector games, graphics
+ remains imprinted even when exit the game. (hap)
+- 04947: [Graphics] (midvunit.c) offroadc: Missing selection indicator
+ within service mode. (Phil Bennett)
+
+Source Changes
+--------------
+-vsnes.c: Verified second half roms for vs baseball usa e-1 set, fix
+ one mislabeled rom [Dead_Body]
+
+-midvunit.c - Fixed polygon pixel color selection [Phil Bennett]
+
+-peplus.c: Corrected a couple of color CAP sizes. Added the CG graphics
+ roms for Ace$ Bonus Poker. [BrianT]
+
+-scsi: Fixed hard disk images with 256-byte sectors. [Curt Coder]
+
+-Added a simple DC blocker filter to the speaker toggle device [R. Belmont]
+
+-konendev.c: Corrected CPU type (PPC403) and added some hardware notes [Phil Bennett]
+
+-sf.c: update prom names for Street Fighter (World, Analog buttons) set.[Porchy]
+
+-exidy440.c: Replaced prom dump for all games in driver located at 3K.
+ It is unique to all the other proms and different in size. [Joe Magiera, Tafoid]
+
+-nss.c: update bios rom locations and update inst rom label for smw;
+ marked nss v3 bios as possible hack [Kiddcade, Porchy]
+
+-CPS-1 update [Artemio Urbina]:
+ * Redumped CDU_22A.7F in dinou to match real pcb, verified on two
+ different sources
+
+-Tweaks to the idehd timing, which are still based on complete fiction. [smf]
+
+-Added a new macro MCFG_DEVICE_CARD_DEFAULT_BIOS, which can be used in
+ the machine config to set the default BIOS for a slot card device.
+ [Curt Coder]
+
+-SDL: fix non-Qt non-Windows build (MT #5364) [R. Belmont]
+
+-Added SCSI status code & set it in all command handlers. It is sent
+ over the bus when in status phase. In case of an error further
+ information should be set in m_sense_key/m_sense_asc/m_sense_ascq &
+ m_sense_information so that it can be returned by executing a request
+ sense command [smf]
+
+-Set the error bit in the IDE status register if the command causes a
+ check condition [smf]
+
+-vsnes.c: update labels of vs. Super Mario Bros roms to match physical
+ chips exactly. [Dead_Body]
+
+-z80dma: Implemented Auto Restart. [Curt Coder]
+
+-TMS57002 fixes and improvements: [Phil Bennett]
+ * Moved CA/ID post-increment outside of execution. Fixes case where
+ dual instructions post-increment, also reduces number of generated
+ instructions.
+ * Fixed data ordering of external memory accesses.
+ * Don't generate redundant instructions for undefined rounding modes;
+ remap them in decode.
+ * Set XOA to 0 on reset.
+ * Use [READ|WRITE]LINE_MEMBER for I/O lines.
+ * Added PC0 line.
+ * Added registers to debugger state.
+
+-wd_fdc: Fixed ready interrupt polarity. Added a soft_reset() function
+ which resets only the FDC and not the floppy image devices, thus
+ preserving the correct ready states. [Curt Coder]
+
+-Rewrote Konami 056800 (MIRAC): [Phil Bennett]
+ * Implemented as an 8-bit device
+ * Fixed address mapping
+ * Removed bogus timer interrupt
+ * Fixed interrupt handling
+
+-054539.c: Fixed input clock rate and implemented programmable timer
+ based on hardware measurements [Phil Bennett, Stefan Lindberg]
+
+-lethal.c, mystwarr,c, tmnt.c: Hooked up 054539 timer interrupt. Fixes
+ music tempo in some games [Phil Bennett]
+
+-qdrmfgp.c: Hooked up 054539 timer interrupt for qdrmfgp, fixed IRQ
+ acknowledge handling [Phil Bennett]
+
+-plygonet.c: Hooked up 054539 timer interrupt, removed non-existent
+ second 054539 and fixed EEPROM regression [Phil Bennett]
+
+-hornet.c, gticlub.c: Implemented sound interrupt timer [Phil Bennett]
+
+-konamigx.c improvements: [Phil Bennett]
+ * Hooked up 056800 device
+ * Hooked up 054539 timer interrupt
+ * Removed sound hacks
+ * All DSP RAM tests now pass, winspike sound now works
+
+-konamigq.c improvements: [Phil Bennett]
+ * Hooked up 056800 device
+ * Hooked up 054539 timer interrupt
+ * Added TMS57002 DASP
+
+-ultrsprt.c improvements: [Phil Bennett]
+ * Hooked up 054539 timer interrupt
+ * Implemented VRAM double buffering
+ * Improved trackball inputs
+ * Fixed sound
+
+-zr107.c improvements: [Phil Bennett]
+ * Hooked up 054539 timer interrupt
+ * Fixed sound in all games
+
+-rungun.c improvements: [Phil Bennett]
+ * Hooked up 054539 timer interrupt. Fixes music tempo
+ * Implemented sound CPU NMI control
+ * Fixed 054539 #2 regression
+
+-Saves the race driving DSK zram [smf]
+
+-Added all the available beatmania IIDX hard drives and Video CD's/DVD's,
+ updated the hard drive labels from pictures online. [smf]
+
+-mcs96: Misc. fixes [O. Galibert]
+
+-diserial: Remove defines, cleanup clocks/timers, add sync support [O. Galibert]
+
+-verified The Gladiator internal ROM on an Overseas cart [Artemio Urbina]
+
+-wd_fdc: Set CRC error bit if CRC error found during Read Address
+ command. Tiki 100 determines whether the disk is in FM or MFM format
+ by checking this. [Curt Coder]
+
+-CPS-1 update:
+ * Dumped and added IOB2.11D to sf2ee and sf2ue [Porchy], S9263B.1A to
+ sf2ce and sf2hf sets and clones [Porchy], CP1B9KA.9K to pang3
+ [Zabanitu]
+
+-snk6502.c: Adjusted Nibbler board clock rate to use actual known
+ master clock and a logical divisor. [Tafoid]
+
+-jedutil.c: [Kevin Eshbach]
+ * Corrected the output of the PAL20X4, PAL20X8, PAL20X10 to show the
+ XOR on the relevant sum of products.
+ * When viewing a device the size of the JED file is verified to match
+ the size of the device.
+ * Replaced hard-coded symbol strings with constants.
+ * Started experimental work for supporting RICOH PAL’s. (Currently
+ ifdef'ed out.)
+ * Added support for viewing the following devices and the
+ corresponding regression test data. (PALCE16V8, PAL10P8, PAL12P6,
+ PAL14P4, PAL16P2, PAL16P8, PAL16RP4, PAL16RP6, PAL16RP8, PAL6L16,
+ PAL8L14, PAL12H10, PAL12L10, PAL14H8, PAL14L8, PAL16H6, PAL16L6,
+ PAL18H4, PAL18L4, PAL20C1 and PAL20L2)
+
+-Added flip screen support to Royal Mahjong and brothers [Angelo Salese]
+
+ V9958: Added preliminary screen modes 10/11/12, used by Puzzle
+ Star/Sexy Boom [Angelo Salese, Wilbert Pol]
+
+-vsnes.c: Corrected rom labels and fixed set description for vspinbal
+ set [Dead_Body]
+
+-cinemat.c: Correct dipswitches for Vectorbeam's Warrior. [Timothy Shiels]
+
+-vsnes.c: More updated ROM labels, for vs top gun and vs gradius [Dead_Body]
+
+-i386: Fixed P6 CMOVcc instructions, and added CMOV feature flag to
+ Pentium Pro and Pentium II CPUs. Added MMX feature flag to Pentium
+ MMX. [Barry Rodewald]
+
+-Fixed a complement by two bug in V9958 YJK table, fixes for good
+ colors in Puzzle Star / Sexy Boom / some MSX2+ games. [Angelo Salese]
+
+-Kludged Puzzle Star (Sang Ho Soft) hang at title screen [Angelo Salese]
+
+-Added the SHA1 for System 573 700B01 now that we have a dump. It
+ currently expects a different response from the H8 at bootup than the
+ other BIOS versions, so the data is stored in a fake rom until it's
+ HLE'd better of we get a dump of the H8 internal rom
+ [smf, innocent2k, anthonyoftga]
+
+-document that ketsui roms exist with different fill in the unused
+ areas [Artemio Urbina]
+
+-upd765: Fixed sense drive status command, and allow floppy connectors
+ without drives. [Curt Coder]
+
+-fixed scudsp & ssp1601 entries [Vito]
+
+-Reduce smearing on hlsl prescale [MooglyGuy]
+
+-Corrected 7486 description in head file [MASH]
+
+-various PGM protection cleanups / fixes (orlegend, olds, svgpcb) [iq_132]
+
+-finished modernising i2cmem [smf]
+
+-remodernised x76f041/x76f100 & zs01 so that logging becomes easy again
+ & uses READ_LINE_MEMBER/WRITE_LINE_MEMBER so the pins can be bound to
+ directly. Hooked up x76f041 to the early beatmania IIDX games. They
+ all pass the security check eventually but it takes a long time as it
+ repeatedly reads the first byte, it's possible that the contents
+ aren't correct as the game says the security is OK even when the data
+ returned is not what it's checking for. [smf]
+
+-Added a work round so that CR589 firmware updating works again, either
+ from the separate CD's or as part of the game install (for example DDR
+ MAX). [smf]
+
+-playch10: update Playchoice-10 BIOS ROM names to match exact chip
+ labels and types [Dead_Body]
+
+-naomi/dc: Sanitize screen format, fixes MT5349 [O. Galibert]
+
+-redumped some System 573 CD's [Guru]
+
+-CPS-1 update: Added S222B.1A PAL to ffightj and clones.
+ [Charles MacDonald, Porchy, Smitdogg, The Dumping Union]
+
+-Created DS1204 device & switched megatouch to use it instead of it's
+ own local version (driver could do with some more tidying up as not
+ all games use a key but currently it is hooked up to all games).
+ Default data comes from a region instead of coded in driver, commands
+ & security match are now compared, data is clocked on the correct
+ edge, key can be written to and is saved to nvram. [smf]
+
+-redumped bad roms for First Funky Fighter [Yohji, Smitdogg, The Dumping Union]
+
+-Merged othldrby.c with toaplan2.c driver [Angelo Salese]
+
+-Converted Toaplan 2 to use SCREEN_RAW_PARAMS [Angelo Salese]
+
+-Added a core for uPD4992 RTC, used by Othello Derby and Power Kick [Angelo Salese]
+
+-Hooked up ds1204, but haven't found what it checks for yet. Change
+ PATCH_PROTECTION to 0 in tmaster.c and VERBOSE_LEVEL to 2 in ds1204.c
+ then look for "-> command" in error.log to find the subsequent read
+ from the dq pin for reading the identification and secure memory. For
+ tm4k the first two bytes of the nvram need to be  0x00, 0xa0. From
+ scratch you'll need to play a game before it will complain about the
+ protection, but after that it will complain on every boot. It tries
+ five different contents for the compare register at various points
+ during the bootup, this may be for obfuscation as the real chip will
+ return random results if the key is wrong. If the keys are available
+ it might be easier to dump them than figure out exactly what it wants.
+ [smf]
+
+-svgpcb: added igs027a rom, runs intro, dies trying to go in game, not
+ sure why yet [rtw, David Haywood]
+
+-Created a skeleton for the Konami 573 Multi Session Unit, renamed
+ digital io board source file to match and moved pcb layout from
+ driver. [smf]
+
+-Added skeleton for konami 573 memory card reader and network pcb unit
+ devices [smf]
+
+-redumped keyboard mania 3 [Guru]
+
+-Updated konam80s atapi dma kludge so that Guitar Freaks 7th Mix (and
+ alot of others) load again [smf]
+
+-Mambo A GO-GO CD redump in raw mode + raw subcode. [any]
+
+-Improved Sega Bloxeed dipswitches. [Zaphod]
+
+-Added basic 3d FIFO understanding and hooked up FIFO irq processed to
+ Hyper Neo Geo 64, meaning a far better 3d display in all games
+ [Angelo Salese]
+
+-mc2661: Added various transmission and reception logic to help make
+ the above possible [Barry Rodewald]
+
+-twin16.c: [Alex Jackson]
+ * Use the correct gfx ROMs for all the vulcan/gradius2 sets
+ * Load gfx ROMs using standard macros instead of custom postprocessing
+ * Replace custom read/write handlers with AM_REGION, AM_SHARE, or banks as appropriate
+ * Fix Extra Life dipswitches in vulcana and vulcanb
+ * Fix cuebrick NVRAM size
+ * Fix audio cpu RAM size
+ * Use XTALs for clocks
+
+-Windows: Fixed D3D multimonitor support. [GroovyMAME]
+
+-Slot options can now be configured inline without creating an array.
+ Legacy support for old configuration uses MCFG_FRAGMENT_ADD, which
+ required changing so the current device could be updated by the
+ fragment. [smf]
+
+-converted cassette, pccard1 & pccard2 slots to use new MCFG macros [smf]
+
+-Uses MCFG_SLOT_DEFAULT_OPTION instead of MCFG_DEVICE_SLOT_INTERFACE
+ where only the default option is changed. [smf]
+
+-m68k: add ability for externally-thrown bus errors to have proper
+ details [R. Belmont]
+
+-uses device_mconfig_additions() to add ata slots, which allows you to
+ just add the device and configure it rather than using the
+ MCFG_ATA_INTERFACE_ADD #define. [smf]
+
+-allow building with ICL on Windows if you have it installed into MSVC [Dean London]
+ The ICL compiler on Windows installs over MSVC and piggybacks onto the
+ build tools Microsoft provide. To enable compilation use USE_ICL=1
+ when compiling with MSVC_BUILD=1 (from the ICL enabled command prompt)
+ + gives a more stable build than the MSVC compiler + more informative
+ compile errors when using ICL compared to MSVC compiler + can still
+ use MSVC debugging tools (better than GCC) + can use additional intel
+ tools etc.
+ build is still slower than GCC one
+
+-aristmk4.c: [Lord-Data]
+ * Option to raise outputs for physical meters to be used
+ * Option to disable making sound effects for emulated meters
+ * Option to disable virtual emulation of hopper/coin release system
+
+-k005289.c: refactored, removed redundant state variables and
+ unneccessary floating point math, added savestate support
+ [Alex Jackson]
+
+-Removed support for static config from slots and converted the two
+ devices using it to machine config fragments [smf]
+
+-Pong update: [couriersud]
+ * based on feedback from IRC hopefully fixed issues like "jumping"
+ * adjusted VR1 and VR2 to 50%
+ * disabled all printf output.
+
+-converted serial & rs232 devices to devcb2 [smf]
+
+-diimage: Added load_software_region() function that loads a software
+ list region into a shared_ptr. [Curt Coder]
+
+-Added preliminary sound to ghosteo.c by borrowing code from vegaeo.c. [Osso]
+
+-z8.c: Modernized cpu core. [Wilbert Pol]
+
+-midyunit.c [Andy Welsh]
+ Fixed inputs and DIP Switches for hiimpact,
+ shimpact and clones which were all imported from TROG and mostly
+ incorrect.
+
+-Added Signetics 8X300 microcontroller core, updated Wicat driver to
+ use it. [Barry Rodewald]
+
+-replaced read rx/cts/dcd callbacks in ACIA6850 write write handlers,
+ which allows multiple chips to be connected together without using
+ glue methods. [smf]
+
+-Changed Guitar Freaks 7m onwards to use a 32mb PCMCIA card [smf]
+
+-Redumped some beatmania IIDX CD's [Guru]
+
+-Redumped several Konami GV CD's [Guru]
+
+-Redumped several Konami M2 CD's [Guru]
+
+-Redumped various System 573 CD's [Guru]
+
+-i8089: implement remaining instructions and support execution from
+ "io" space. [Carl]
+
+-replaced read callbacks in I8251/Z80DART (and clones)/MC2661/
+ MC68901/IM6402/MOS6551/Z80STI/MC6852/MC6854/ZX8302 with
+ write handlers, which allows multiple chips to be connected
+ together without using glue methods. [smf]
+
+-Removed a load of unused code from MC68901, probably left
+ over when it was converted to use diserial. [smf]
+
+-Removed dependency clutter in c64 expansion port, c128 driver,
+ ecbbus & econet [smf]
+
+-nemesis.c: added PORT_TOGGLE and PORT_NAMEs to Konami GT.
+ [baritonomarchetto]
+
+-Rom locations added for Battles (Xevious bootleg), G.I. Joe,
+ Ghosts'n Goblins (US), Victory Road and Guerilla War (Version
+ 1) as well as nvram location to The Simpsons. [Kevin Eshbach]
+
+-Added readmes for gijoe, moo, xexex, lethal, mystwarr also
+ updating simpsons. [Guru]
+
+
+New games added or promoted from NOT_WORKING status
+---------------------------------------------------
+Long Beach [any, hap]
+The Gladiator / Road of the Sword / Shen Jian [David Haywood, rtw]
+Blastaball (Arcadia, V 2.1) [Unigame]
+Pharaohs Match (Arcadia) [Unigame]
+Delta Command (Arcadia) [Unigame]
+Wave shark/Jet Wave [Phil Bennett]
+Puzzle Star (Sang Ho Soft) [Angelo Salese, Wilbert Pol]
+Dancing Stage - Internet Ranking Ver (GC845 VER. EBA) [smf, skype]
+Player's Edge Plus (XM00007P+XMP00006) Multi-Poker [BrianT, Ken]
+Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots [BrianT, Kevin]
+Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots [BrianT, Kevin]
+Player's Edge Plus (X001087S+XS000006) Double Double Diamond Slots [BrianT, Kevin]
+Player's Edge Plus (IP0079) Standard Draw Poker - French [BrianT, Ken]
+Player's Edge Plus (X002420P+XP000064) Deuces Wild Bonus Poker - French [BrianT, Ken]
+Power Kick [bodger319, Yohji, Smitdogg, The Dumping Union, Angelo Salese]
+S.V.G. - Spectral vs Generation (M68k label V100JP)
+ (ARM label V100JP ROM 05/12/05 S.V.G V100) (Japan, JAMMA PCB) [rtw, David Haywood]
+
+
+New clones added
+----------------
+Scramble (Recreativos Franco, Spanish bootleg) [Basilio Garcia]
+The Gladiator / Road of the Sword / Shen Jian (M68k label V100)
+ (ARM label V101, ROM 03/13/03 SHEN JIAN) [Artemio Urbina]
+Super Chase - Criminal Termination (1992/10/26 20:24:29 CHASE 3 VER 1.1, prototype) [Unigame]
+Brick Zone (v1.1) [Unigame]
+Cadash (World, prototype) [Unigame]
+1942 (prototype?) [Unigame]
+4 En Raya (set 2) [Unigame]
+Gallop Racer (English Ver 10.17.K) [Arzeno Fabrice, The Dumping Union]
+Chase Bombers (prototype) [Unigame]
+The First Funky Fighter (set 2) [Unigame]
+Cobra Command (Data East LD, set 2) [Unigame] (not working)
+Spy Hunter (prototype) [Unigame] (not working, needs more work)
+U.N. Defense Force: Earth Joker (Japan, prototype?) [Unigame]
+Syvalion (World, prototype) [Unigame]
+Donkey Kong Junior (P kit) [Chris Psaros]
+Who Dunit (version 9.0) [Joe Magiera]
+Commando (US set 2) [Kevin Eshbach]
+Bucky O'Hare (ver EA) [caius]
+Player's Edge Plus (PP0055) Deuces Wild Poker (set 2) [BrianT]
+Player's Edge Plus (PP0171) Joker Poker [BrianT]
+Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker [BrianT]
+Player's Edge Plus (PP0002) Standard Draw Poker [BrianT, Ken]
+Player's Edge Plus (PP0045) 10's or Better [BrianT, Ken]
+Player's Edge Plus (PP0455) Joker Poker [BrianT, Ken]
+Player's Edge Plus (PP0458) Joker Poker [BrianT, Ken]
+Player's Edge Plus (PP0536) Joker Poker [BrianT, Ken]
+Player's Edge Plus (PP0726) Double Bonus Poker [BrianT, Ken]
+Player's Edge Plus (IP0074) Joker Poker - French [BrianT, Ken]
+Player's Edge Plus (X000045P+XP000038) 10's or Better [BrianT, Ken]
+Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2426) [BrianT, Ken]
+Player's Edge Plus (PP0417) Deuces Wild Poker (set 2) [BrianT, Kevin]
+Player's Edge Plus (PP0002) Standard Draw Poker (set 2) [BrianT, Ken]
+Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2352) [BrianT, Ken]
+Player's Edge Plus (PP0046) 10's or Better [BrianT, Ken]
+Player's Edge Plus (X000002P+XP000038) Standard Draw Poker [BrianT, Ken]
+Player's Edge Plus (X000060P+XP000038) Standard Draw Poker [BrianT, Ken]
+Player's Edge Plus (X000171P+XP000038) Joker Poker [BrianT, Ken]
+Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker [BrianT, Ken]
+Player's Edge Plus (X000459P+XP000038) Joker Poker [BrianT, Ken]
+Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker [BrianT, Ken]
+Player's Edge Plus (X002066P+XP000038) Double Double Bonus Poker [BrianT, Ken]
+Player's Edge Plus (X002121P+XP000037) Standard Draw Poker [BrianT, Ken]
+Player's Edge Plus (X002150P+XP000038) 4 of a Kind Bonus Poker [BrianT, Ken]
+Player's Edge Plus (X002180P+XP000038) Double Bonus Poker [BrianT, Ken]
+Touchmaster 4000 (v6.03 New Jersey) [Brian Troha, The Dumping Union]
+Touchmaster 4000 (v6.01 Minnesota) [Brian Troha, The Dumping Union]
+Touchmaster 5000 (v7.10 Minnesota) [Brian Troha, The Dumping Union]
+Touchmaster 7000 (v8.05 New Jersey) [Brian Troha, The Dumping Union]
+Touchmaster 7000 (v8.04 Minnesota) [Brian Troha, The Dumping Union]
+Touchmaster 7000 (v8.00 Minnesota) [Brian Troha, The Dumping Union]
+World Kicks (WK3 Ver. A) [Guru]
+Wivern Wings [Brian Troha, Tormod, Smitdogg, The Dumping Union]
+Invasion - The Abductors (version 3.0) [Brian Troha, Smitdogg, The Dumping Union]
+Street Fighter III: New Generation (Euro 970204) [Layne, Smitdogg, The Dumping Union]
+
+
+New games marked as GAME_NOT_WORKING
+------------------------------------
+beatmania IIDX Substream (983 JAA) [smf]
+beatmania IIDX 5th style (GCA17 JA) [smf]
+beatmania IIDX (863 JAB) [Guru]
+beatmania IIDX 3rd style (GC992 JAC) [smf]
+beatmania IIDX 6th style (GCB4U JAB) [smf]
+Tokimeki Memorial Oshiete Your Heart (GQ673 JAA) [Guru]
+Total Vice (ver AAB) [Guru]
+Super Six Plus II English Mark Darts [Jim Stolis]
+Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA) [Guru]
+Submarine (Midway) [John Robertson, hap]
+Mambo A Go-Go e-Amusement (GQA40 VER. JRB) [smf]
+Touch de Uno! [R. Belmont, bodger319, gamerfan, f205v, Yohji, Smitdogg, rtw, The Dumping Union]
diff --git a/docs/release/src/osd/winui/help/html/mameui_art.htm b/docs/release/src/osd/winui/help/html/mameui_art.htm
new file mode 100644
index 00000000000..bb2dc16d8de
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_art.htm
@@ -0,0 +1,139 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Art &amp; Support Files</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+div.Section1
+ {page:Section1;}
+.style1 {
+ font-weight: bold;
+}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>Art &amp; Support Files</h2>
+<p class="MsoNormal">MameUI's flexible GUI framework allows for some beautiful
+customization; including font color, icons, screenshot art, and background images.&nbsp;
+The official site for the snaps and icons is <b>
+<a target="_blank" href="http://mameui.info/">MameUI</a></b>.&nbsp; The following files are used for this customization.</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a style="color: blue; text-decoration: underline; text-underline: single" target="_blank" href="http://mameui.info/">Icons.zip</a></b>
+: This file contains icons for every game in MameUI and the folder view on the
+far left.&nbsp; Place it in the \MameUI\icons folder, it can remain zipped to
+save slack HD space but the zip file must be named icons.zip.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a style="color: blue; text-decoration: underline; text-underline: single" target="_blank" href="http://mameui.info/">Snap.zip</a></b> : These are a series of files that contain in-game screenshots
+of every parent game in MameUI.&nbsp; Download the packs and extract their
+contents into the \MameUI\snap directory or combine their *.png contents into
+one large snap.zip file.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+Titles.zip</b> : This file can provide support for screenshots showing the
+titles of the game in MameUI, place in \titles directory.&nbsp; </p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Marquees.zip</b> : This file can provide support for the
+marquee images that appear on the top of arcade machines, place in \marquees
+directory..</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style:normal; font-variant:normal; font-weight:700">Cpanel</span><b>.zip</b> : This file can provide support for the
+images of arcade control panels, place in \cpanel directory..</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style: normal; font-variant: normal; line-height: normal;" class="style1">
+PCB</span><b>.zip</b> : This file can provide support for the
+images of arcade printed circuit boards, place in \pcb directory..</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+Bkground.zip</b> : This file contains numerous images that are used as the
+background for the MameUI GUI [beneath the game list, behind the
+screenshot/folder areas]. Download this file and extract its contents into the
+\MameUI\bkground directory. Choose a background
+image in the Options menu.&nbsp; To have it rotated randomly on MameUI launch,
+toggle the checkbox in the Options • Interface Options menu.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a target="_blank" href="http://www.arcadeflyers.net">Flyers.zip</a></b> : This file can provide support for the original flyers sent to
+arcade operators, exhorting them to buy the games, place in \flyers directory.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+Cabinets.zip</b> : These are a series of files that contain images of the
+actual physical arcade machines themselves.&nbsp; Download the packs and extract their contents into the \MameUI\cabinets
+directory or combine their *.png contents into one large cabinets.zip.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a style="color: blue; text-decoration: underline; text-underline: single" target="_blank" href="http://www.arcade-history.com">History.dat</a></b> : This file contains the original game’s designer’s names,
+and assorted trivia.&nbsp; Place this file in the \MameUI folder alongside
+MameUI.exe. It will display if the history art tab is toggled, or if the history
+tab is not selected, it will display beneath snapshots.</p>
+
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-12 02:05 PM -0800<!--webbot bot="Timestamp" endspan i-checksum="37923" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_changes.txt b/docs/release/src/osd/winui/help/html/mameui_changes.txt
new file mode 100644
index 00000000000..c995ab92847
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_changes.txt
@@ -0,0 +1,2132 @@
+ -|ad5u1337 "unknown Scorpion '39211337' (Mazooma) (Scorpion 5, Adder 5)"
+ -|altbeastj2 "Juuouki (set 5, Japan, FD1094 317-0069)"
+ -|circusse "Circus (Sub-Electro bootleg)"
+ -|gt5 "Trivia (Version 5.06)"
+ -|sc4pacmnc "Pac Man (PR7072) (Mazooma) (Scorpion 4) (set 4)"
+ -|sc4pacmnd "Pac Man (PR7072) (Mazooma) (Scorpion 4) (set 5)"
+ -|sc4pacmne "Pac Man (PR7072) (Mazooma) (Scorpion 4) (set 6)"
+ -|sfiii3a "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)"
+ -|sfiii3an "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)"
+ -|sfiii3au "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)"
+ -|spacefbu "Space Firebird (Nintendo, set 2)"
+ -|suprpkr1 "Super Poker (Version 10.15S)"
+ +|1941r1 "1941: Counter Attack (World)"
+ +|a51site4a "Area 51: Site 4 (September 11, 1998)"
+ +|arknoid2b "Arkanoid - Revenge of DOH (Japan bootleg)"
+ +|batlgr2a "Battle Gear 2 (v2.01J)"
+ +|bgareggabl "1945 Part-2 (Chinese hack of Battle Garegga)"
+ +|bigstrkba "Big Striker (bootleg w/Italian teams)"
+ +|bikkuric "Bikkuri Card (Japan)"
+ +|boblbobl2 "Bobble Bobble (set 2)"
+ +|casbjack "Casino Black Jack (color, Standard 00-05)"
+ +|caspoker "Casino Poker (Ver PM86LO-35-5, German)"
+ +|chamburger "Hamburger (DECO Cassette, Japan)"
+ +|chance32 "Chance Thirty Two"
+ +|cninjaa "Caveman Ninja (alternate)"
+ +|cninjabl2 "Caveman Ninja (bootleg, alt)"
+ +|congoa "Congo Bongo (Rev C, 3 board stack)"
+ +|coozumou "Oozumou - The Grand Sumo (DECO Cassette, Japan)"
+ +|cskater "Skater (DECO Cassette, Japan)"
+ +|csplayh1 "Super CD Dai8dan Mahjong Hanafuda Cosplay Tengoku (Japan)"
+ +|drgninjab "Dragonninja (bootleg)"
+ +|driblingbr "Dribbling (bootleg, Brazil)"
+ +|drivfrct "Top Racer (bootleg of Driving Force)"
+ +|dtfamily "Diet Family"
+ +|dwpc "Dragon World Pretty Chance (V101, Japan)"
+ +|dynablstb2 "Dynablaster / Bomber Man (bootleg, alt)"
+ +|ertictaca "Erotictac/Tactic (ver 01)"
+ +|eyesb "Eyes (bootleg set 1)"
+ +|fantastc "Fantastic"
+ +|ffighta "Final Fight (World, set 2)"
+ +|fsoccerba "Fighting Soccer (Joystick hack bootleg, alt)"
+ +|funcube5 "Funcube 5 (v1.0)"
+ +|funriverd1 "Fun River (Version 1.3R CGA)"
+ +|galemp "Galaxy Empire (bootleg?)"
+ +|gldarrow "Golden Arrow (Standard G8-03)"
+ +|gtsers10a "Trivia (Questions Series 10 Alt Question Rom)"
+ +|gtsers11a "Trivia (Questions Series 11 Alt Question Rom)"
+ +|gtsers12 "Trivia (Questions Series 12)"
+ +|gtsers14 "Trivia (Questions Series 14)"
+ +|gtsers15 "Trivia (Questions Series 15)"
+ +|haunthig "Haunted House (IGS)"
+ +|hndlchmp "Handle Champ (GQ710 VER. JAB)"
+ +|hotmindff "Hot Mind (Fit of Fighting hardware)"
+ +|hypbbc2p "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA)"
+ +|hypbbc2pk "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA)"
+ +|initdv3e "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)"
+ +|intrepidb "Intrepid (bootleg)"
+ +|invadpt2br "Space Invaders Part II (Brazil)"
+ +|jankenmn "Janken Man Kattara Ageru"
+ +|jzth "Jue Zhan Tian Huang"
+ +|kong "Kong (Brazil)"
+ +|kovshxas "Knights of Valour: Aoshi Sanguo / Sangoku Senki: Aoshi Sanguo (ver. 202CN)"
+ +|luckboom "Lucky Boom"
+ +|manohman "Mann, oh-Mann"
+ +|mazan "Mazan: Flash of the Blade (MAZ1 Ver. A)"
+ +|megat2caa "Pit Boss Megatouch II (9255-10-06 ROE, California version)"
+ +|megat4c "Megatouch IV (9255-40-01 RO, Standard version)"
+ +|mooncrstuku "Moon Cresta (Nichibutsu UK, unencrypted)"
+ +|nflclsfb "NFL Classic Football (NCF3 Ver.A.)"
+ +|nibblerp "Nibbler (Pioneer Balloon conversion)"
+ +|ninjaslt "Ninja Assault (NJA3 Ver. A)"
+ +|orunnersj "OutRunners (Japan)"
+ +|pclb2elk "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)"
+ +|polarisbr "Polaris (Brazil)"
+ +|potgoldu "Pot O' Gold (U.S. Games, v400x?)"
+ +|pr_qksht "Quickshot (Maygay) (PROCONN)"
+ +|pwrshovl "Power Shovel ni Norou!! - Power Shovel Simulator"
+ +|pyson "Konami Pyson BIOS"
+ +|quizshow "Quiz Show"
+ +|rfjett "Raiden Fighters Jet (Taiwan)"
+ +|sc2luvv1 "Luvvly Jubbly (set 2, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)"
+ +|sc2luvv1p "Luvvly Jubbly (set 2, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ +|sc2luvv2 "Luvvly Jubbly (set 3, UK, Multisite) (Scorpion 2/3)"
+ +|sc2luvv2p "Luvvly Jubbly (set 3, UK, Multisite, Protocol) (Scorpion 2/3)"
+ +|sc2luvv3 "Luvvly Jubbly (set 4, UK, Arcade) (Scorpion 2/3)"
+ +|sc2luvv4 "Luvvly Jubbly (set 5, UK, Arcade) (Scorpion 2/3)"
+ +|sc2luvv5p "Luvvly Jubbly (set 6, UK, Protocol) (Scorpion 2/3)"
+ +|sc2luvv6p "Luvvly Jubbly (set 7, UK, Protocol) (Scorpion 2/3)"
+ +|sc2luvv7p "Luvvly Jubbly (set 8, UK, Protocol) (Scorpion 2/3)"
+ +|sc4boomb "Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)"
+ +|sc4boomba "Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)"
+ +|sc4bwow "Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)"
+ +|sc4bwowa "Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)"
+ +|sc4cckeyl "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)"
+ +|sc4cckeym "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)"
+ +|sc4cckeyn "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)"
+ +|sc4cckeyo "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)"
+ +|sc4cclimq "Crazy Climber (Bellfruit) (Scorpion 4) (set 18)"
+ +|sc4cclimr "Crazy Climber (Bellfruit) (Scorpion 4) (set 19)"
+ +|sc4cclims "Crazy Climber (Bellfruit) (Scorpion 4) (set 20)"
+ +|sc4cclimt "Crazy Climber (Bellfruit) (Scorpion 4) (set 21)"
+ +|sc4cclimu "Crazy Climber (Bellfruit) (Scorpion 4) (set 22)"
+ +|sc4clbmn "Club Moneybags (Bellfruit) (Scorpion 4) (set 1)"
+ +|sc4clbmna "Club Moneybags (Bellfruit) (Scorpion 4) (set 2)"
+ +|sc4clbmnb "Club Moneybags (Bellfruit) (Scorpion 4) (set 3)"
+ +|sc4clbmnc "Club Moneybags (Bellfruit) (Scorpion 4) (set 4)"
+ +|sc4crcpi "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)"
+ +|sc4crcpj "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)"
+ +|sc4crzkyt "Crazy Keys Casino (Bellfruit) (Scorpion 4) (set 13)"
+ +|sc4crzkyu "Crazy Keys Casino (Bellfruit) (Scorpion 4) (set 14)"
+ +|sc4crzkyv "Crazy Keys Casino Arcade (Bellfruit) (Scorpion 4) (set 9)"
+ +|sc4crzkyw "Crazy Keys Casino Arcade (Bellfruit) (Scorpion 4) (set 10)"
+ +|sc4fguyd "Family Guy (Bellfruit) (Scorpion 4) (set 5)"
+ +|sc4fguye "Family Guy (Bellfruit) (Scorpion 4) (set 6)"
+ +|sc4ggtb "Golden Game (Mazooma) (PR2056, Top Box) (Scorpion 4) (set 1)"
+ +|sc4ggtba "Golden Game (Mazooma) (PR2056, Top Box) (Scorpion 4) (set 2)"
+ +|sc4ggtbb "Golden Game (Mazooma) (PR2056, Top Box) (Scorpion 4) (set 3)"
+ +|sc4hntcsp "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)"
+ +|sc4hntcsq "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)"
+ +|sc4hntcsr "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)"
+ +|sc4hntcss "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)"
+ +|sc4ijobl "Italian Job (Mazooma) (Scorpion 4) (set 13)"
+ +|sc4ijobm "Italian Job (Mazooma) (Scorpion 4) (set 14)"
+ +|sc4luckb1 "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)"
+ +|sc4luckb2 "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)"
+ +|sc4luckb3 "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)"
+ +|sc4luckb4 "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)"
+ +|sc4mgrj "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)"
+ +|sc4mgrk "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)"
+ +|sc4mgrl "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)"
+ +|sc4mgrm "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)"
+ +|sc4mhpl "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)"
+ +|sc4mhpm "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)"
+ +|sc4mhpn "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)"
+ +|sc4mwwtb "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)"
+ +|sc4mwwtba "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)"
+ +|sc4mwwtbb "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)"
+ +|sc4mwwtbc "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)"
+ +|sc4mwwtbd "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)"
+ +|sc4pacqp "Pac Man (PR7072) (QPS) (Scorpion 4) (set 1)"
+ +|sc4pacqpa "Pac Man (PR7072) (QPS) (Scorpion 4) (set 2)"
+ +|sc4pacqpb "Pac Man (PR7072) (QPS) (Scorpion 4) (set 3)"
+ +|sc4pogbld "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)"
+ +|sc4pogble "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)"
+ +|sc4pogh "Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)"
+ +|sc4pogi "Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)"
+ +|sc4popeyd "Popeye (Mazooma) (Scorpion 4) (set 5)"
+ +|sc4popeye "Popeye (Mazooma) (Scorpion 4) (set 6)"
+ +|sc4showtf "Showtime (Bellfruit) (Scorpion 4) (set 7)"
+ +|sc4wldbnn "Wild Bunch (Bellfruit) (Scorpion 4) (set 11)"
+ +|sc4wldbno "Wild Bunch (Bellfruit) (Scorpion 4) (set 12)"
+ +|sc4wldbnp "Wild Bunch (Bellfruit) (Scorpion 4) (set 13)"
+ +|sc4wldbnq "Wild Bunch (Bellfruit) (Scorpion 4) (set 14)"
+ +|sfex2ph "Street Fighter EX2 Plus (Hispanic 990611)"
+ +|sfiii3nr1 "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)"
+ +|sfiii3r1 "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)"
+ +|sfiii3ur1 "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)"
+ +|silvmil "Silver Millennium"
+ +|soulclb3a "Soul Calibur III (SC31002-NA-A)"
+ +|soulsurf "Soul Surfer (Rev A)"
+ +|spikes91a "1991 Spikes (Italian bootleg, set 2)"
+ +|springbd "Springboard (bootleg of Circus)"
+ +|ssf2xjr "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)"
+ +|sshooter17 "Sharpshooter (Rev 1.7)"
+ +|superchsj "Super Chase - Criminal Termination (Japan)"
+ +|suprpokra "Super Poker (Version 10.15S)"
+ +|suprpokrb "Super Poker (Version 10.10)"
+ +|suprstar "Super Stars"
+ +|tbowlp "Tecmo Bowl (World, prototype?)"
+ +|tekken4c "Tekken 4 (TEF1 Ver. C)"
+ +|touryuu "Touryuumon (V1.1)?"
+ +|tvlegaxe "Makyo Densetsu - The Legenary Axe (Tourvision PCE bootleg)"
+ +|tvsvball "Super Volley ball (Tourvision PCE bootleg)"
+ +|vcopa "Virtua Cop (Revision A)"
+ +|vhuntjr1s "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)"
+ +|voyager "Star Trek: Voyager"
+ +|wboy5 "Wonder Boy (set 5, bootleg)"
+ +|wboyub "Wonder Boy (US bootleg)"
+ +|winrungp "Winning Run Suzuka Grand Prix (Japan)"
+ +|wstrike "Witch Strike (Export, 6T/12T ver 1.01A)"
+ +|wstrikea "Witch Strike (Export, 6T/12T ver 1.01B)"
+ +|wswe "World Soccer Winning Eleven Arcade Game Style"
+ +|wswe2k3 "World Soccer Winning Eleven Arcade Game 2003"
+ +|wtchjack "Witch Jack (Export, 6T/12T ver 0.87-89)"
+ +|wtchjacka "Witch Jackpot (Export, 6T/12T ver 0.25)"
+ +|wtchjackb "Witch Jack (Export, 6T/12T ver 0.40)"
+ +|wtchjackc "Witch Jack (Export, 6T/12T ver 0.40T)"
+ +|wtchjackd "Witch Jack (Export, 6T/12T ver 0.62)"
+ +|wtchjacke "Witch Jack (Export, 6T/12T ver 0.64)"
+ +|wtchjackf "Witch Jack (Export, 6T/12T ver 0.65)"
+ +|wtchjackg "Witch Jack (Export, 6T/12T ver 0.70S)"
+ +|wtchjackh "Witch Jack (Export, 6T/12T ver 0.70P)"
+ +|wtchjacki "Witch Jack (Export, 6T/12T ver 0.87)"
+ +|wtchjackj "Witch Jack (Export, 6T/12T ver 0.87-88)"
+ +|wupndown "Witch Up & Down (Export, 6T/12T ver 1.02)"
+ +|wupndowna "Witch Up & Down (Export, 6T/12T ver 0.99, set 1)"
+ +|wupndownb "Witch Up & Down (Export, 6T/12T ver 0.99, set 2)"
+ +|wupndownc "Witch Up & Down (Export, 6T/12T ver 0.99, set 3)"
+ +|wupndownd "Witch Up & Down (Export, 6T/12T ver 0.99T)"
+ +|yosimotm "Mahjong Yoshimoto Gekijou [BET] (Japan)"
+ +|zekepeak "Zeke's Peak"
+ +|zerotm2k "Zero Team 2000"
+ +|zokumahj "Zoku Mahjong Housoukyoku (Japan)"
+ C|1941 "1941: Counter Attack (World 900227)"
+ c|1941 "1941: Counter Attack (World)"
+ C|99lstwar "'99: The Last War (set 1)"
+ c|99lstwar "'99: The Last War"
+ c|99lstwara "'99: The Last War (alternate)"
+ C|99lstwara "'99: The Last War (set 2)"
+ C|altbeast5 "Altered Beast (set 5, FD1094 317-0069)"
+ c|altbeast5 "Altered Beast (set 6, 8751 317-0076)"
+ C|altbeast6 "Altered Beast (set 6, 8751 317-0076)"
+ C|am_mg3a "Multi Game III (V.Ger 3.64)"
+ c|am_uslot "Amatic Unknown Slots Game"
+ C|andromep "Andromeda (set 1)"
+ c|andromep "Andromeda"
+ c|andromepa "Andromeda (alternate set)"
+ C|andromepa "Andromeda (set 2)"
+ C|antar "Antar (set 1)"
+ c|antar "Antar"
+ c|antar2 "Antar (alternate set)"
+ C|antar2 "Antar (set 2)"
+ C|babypac "Baby Pac-Man (set 1)"
+ c|babypac "Baby Pacman (Video/Pinball Combo)"
+ C|babypac2 "Baby Pac-Man (set 2)"
+ C|baluba "Baluba-louk no Densetsu (Japan)"
+ c|baluba "Baluba-louk no Densetsu"
+ C|bmcpokr "unknown BMC poker game"
+ c|bmcpokr "Unknown BMC Poker Game"
+ c|brooklyn "Brooklyn (Bingo)"
+ C|brooklyn "Brooklyn (set 1) (Bingo)"
+ c|brooklyna "Brooklyn (alternate set)(Bingo)"
+ C|brooklyna "Brooklyn (set 2) (Bingo)"
+ c|bucky "Bucky O'Hare (ver EA)"
+ C|bucky "Bucky O'Hare (ver EAB)"
+ c|buckyaa "Bucky O'Hare (ver AA)"
+ C|buckyaab "Bucky O'Hare (ver AAB)"
+ c|buckyua "Bucky O'Hare (ver UA)"
+ C|buckyuab "Bucky O'Hare (ver UAB)"
+ C|bushido "Bushido (set 1)"
+ c|bushido "Bushido"
+ c|bushidoa "Bushido (alternate set)"
+ C|bushidoa "Bushido (set 2)"
+ c|castfant "Astro Fantasia (Cassette)"
+ C|castfant "Astro Fantasia (DECO Cassette)"
+ c|caveman "Caveman (Pinball/Video Combo)"
+ C|caveman "Caveman (Pinball/Video Combo, set 1)"
+ c|cbdash "Boulder Dash (Cassette)"
+ C|cbdash "Boulder Dash (DECO Cassette)"
+ c|cbnj "Bump 'n' Jump (Cassette)"
+ C|cbnj "Bump 'n' Jump (DECO Cassette)"
+ c|cbtime "Burger Time (Cassette)"
+ C|cbtime "Burger Time (DECO Cassette)"
+ c|cburnrub "Burnin' Rubber (Cassette, set 1)"
+ C|cburnrub "Burnin' Rubber (DECO Cassette, set 1)"
+ c|cburnrub2 "Burnin' Rubber (Cassette, set 2)"
+ C|cburnrub2 "Burnin' Rubber (DECO Cassette, set 2)"
+ c|cdiscon1 "Disco No.1 (Cassette)"
+ C|cdiscon1 "Disco No.1 (DECO Cassette)"
+ C|cdsteljn "DS Telejan (DECO Cassette, Japan)"
+ c|cexplore "Explorer (Cassette)"
+ C|cexplore "Explorer (DECO Cassette)"
+ c|cfghtice "Fighting Ice Hockey (Cassette)"
+ C|cfghtice "Fighting Ice Hockey (DECO Cassette)"
+ c|cflyball "Flying Ball (Cassette)"
+ C|cflyball "Flying Ball (DECO Cassette)"
+ c|cgraplop "Cluster Buster / Graplop (Cassette, set 1)"
+ C|cgraplop "Cluster Buster / Graplop (DECO Cassette, set 1)"
+ c|cgraplop2 "Cluster Buster / Graplop (Cassette, set 2)"
+ C|cgraplop2 "Cluster Buster / Graplop (DECO Cassette, set 2)"
+ C|chkun "Chance Kun (Japan)"
+ c|chkun "Chance Kun"
+ c|chwy "Highway Chase (Cassette)"
+ C|chwy "Highway Chase (DECO Cassette)"
+ c|clapapa "Rootin' Tootin' / La-Pa-Pa (Cassette)"
+ C|clapapa "Rootin' Tootin' / La-Pa-Pa (DECO Cassette)"
+ c|clapapa2 "Rootin' Tootin' (Cassette)"
+ C|clapapa2 "Rootin' Tootin' (DECO Cassette)"
+ C|cliffhgr "Cliff Hanger (set 1)"
+ c|cliffhgr "Cliff Hanger"
+ c|cliffhgra "Cliff Hanger (Alt)"
+ C|cliffhgra "Cliff Hanger (set 2)"
+ c|clocknch "Lock'n'Chase (Cassette)"
+ C|clocknch "Lock'n'Chase (DECO Cassette)"
+ c|cluckypo "Lucky Poker (Cassette)"
+ C|cluckypo "Lucky Poker (DECO Cassette)"
+ c|cmissnx "Mission-X (Cassette)"
+ C|cmissnx "Mission-X (DECO Cassette)"
+ c|cnightst "Night Star (Cassette, set 1)"
+ C|cnightst "Night Star (DECO Cassette, set 1)"
+ c|cnightst2 "Night Star (Cassette, set 2)"
+ C|cnightst2 "Night Star (DECO Cassette, set 2)"
+ C|congo "Congo Bongo (Rev C, 2 board stack)"
+ c|congo "Congo Bongo"
+ c|cppicf "Peter Pepper's Ice Cream Factory (Cassette, set 1)"
+ C|cppicf "Peter Pepper's Ice Cream Factory (DECO Cassette, set 1)"
+ c|cppicf2 "Peter Pepper's Ice Cream Factory (Cassette, set 2)"
+ C|cppicf2 "Peter Pepper's Ice Cream Factory (DECO Cassette, set 2)"
+ c|cprobowl "Pro Bowling (Cassette)"
+ C|cprobowl "Pro Bowling (DECO Cassette)"
+ c|cprogolf "Tournament Pro Golf (Cassette)"
+ C|cprogolf "Tournament Pro Golf (DECO Cassette)"
+ C|cprogolfj "Tournament Pro Golf (DECO Cassette, Japan)"
+ c|cpsoccer "Pro Soccer (Cassette)"
+ C|cpsoccer "Pro Soccer (DECO Cassette)"
+ c|cpsoccerj "Pro Soccer (Cassette, Japan)"
+ C|cpsoccerj "Pro Soccer (DECO Cassette, Japan)"
+ c|cptennis "Pro Tennis (Cassette)"
+ C|cptennis "Pro Tennis (DECO Cassette)"
+ c|cscrtry "Scrum Try (Cassette, set 1)"
+ C|cscrtry "Scrum Try (DECO Cassette, set 1)"
+ c|cscrtry2 "Scrum Try (Cassette, set 2)"
+ C|cscrtry2 "Scrum Try (DECO Cassette, set 2)"
+ C|csdtenis "Super Doubles Tennis (DECO Cassette, Japan)"
+ c|csuperas "Super Astro Fighter (Cassette)"
+ C|csuperas "Super Astro Fighter (DECO Cassette)"
+ c|csweetht "Sweet Heart (Cassette)"
+ C|csweetht "Sweet Heart (DECO Cassette)"
+ c|cterrani "Terranean (Cassette)"
+ C|cterrani "Terranean (DECO Cassette)"
+ c|ctisland "Treasure Island (Cassette, set 1)"
+ C|ctisland "Treasure Island (DECO Cassette, set 1)"
+ c|ctisland2 "Treasure Island (Cassette, set 2)"
+ C|ctisland2 "Treasure Island (DECO Cassette, set 2)"
+ c|ctisland3 "Treasure Island (Cassette, set 3)"
+ C|ctisland3 "Treasure Island (DECO Cassette, set 3)"
+ c|ctornado "Tornado (Cassette)"
+ C|ctornado "Tornado (DECO Cassette)"
+ c|ctsttape "Test Tape (Cassette)"
+ C|ctsttape "Test Tape (DECO Cassette)"
+ c|czeroize "Zeroize (Cassette)"
+ C|czeroize "Zeroize (DECO Cassette)"
+ C|darksealj "Dark Seal (Japan revision 4)"
+ c|darksealj "Dark Seal (Japan)"
+ c|ddp2 "Bee Storm - DoDonPachi II (ver. 102)"
+ C|ddp2 "DoDonPachi II - Bee Storm (Japan, ver. 102)"
+ c|ddp2100 "Bee Storm - DoDonPachi II (ver. 100)"
+ C|ddp2100 "DoDonPachi II - Bee Storm (Japan, ver. 100)"
+ c|ddp2101 "Bee Storm - DoDonPachi II (ver. 101)"
+ C|ddp2101 "DoDonPachi II - Bee Storm (Japan, ver. 101)"
+ c|deerhuntc "Deer Hunting USA V2"
+ C|deerhuntc "Deer Hunting USA V3"
+ C|deerhuntd "Deer Hunting USA V2"
+ c|dirtdvls "Dirt Devils (Revision A)"
+ C|dirtdvls "Dirt Devils (set 1) (Revision A)"
+ c|dirtdvlsa "Dirt Devils (alt) (Revision A)"
+ C|dirtdvlsa "Dirt Devils (set 2) (Revision A)"
+ c|disco_l1 "Disco Fever (L-1"
+ C|disco_l1 "Disco Fever (L-1)"
+ C|dmnfrnt "Demon Front (68k label V105, ROM M105XX 08/05/02) (ARM label V105, ROM 08/05/02 S105XX)"
+ c|dmnfrnt "Demon Front (ver. 102)"
+ C|dmnfrnta "Demon Front (68k label V102, ROM M102XX 06/19/02) (ARM label V102, ROM 05/24/02 S101XX)"
+ c|dmnfrnta "Demon Front (ver. 105)"
+ C|dmnfrntpcb "Demon Front (68k label V107KR, ROM M107KR 11/03/03) (ARM label V106KR, ROM 10/16/03 S106KR) (JAMMA PCB)"
+ c|doncdoon "Donchan no Hanabi de Doon"
+ C|doncdoon "Hanabi de Doon! - Don-chan Puzzle"
+ c|dynabb "Dynamite Baseball '97 (Revision A)"
+ C|dynabb "Dynamite Baseball"
+ C|dynabb97 "Dynamite Baseball 97 (Revision A)"
+ c|ec_laby "Labyrinth (Electrocoin) (?)"
+ C|ec_laby "Labyrinth (v8) (Electrocoin)"
+ c|ec_penni "Pennies From Heaven (Electrocoin) (?)"
+ C|ec_penni "Pennies From Heaven (v1) (Electrocoin)"
+ c|ec_pyram "Pyramid (Electrocoin) (?)"
+ C|ec_pyram "Pyramid (v6) (Electrocoin)"
+ c|ec_secrt "Secret Castle (Electrocoin) (?)"
+ C|ec_secrt "Secret Castle (v1) (Electrocoin)"
+ c|ec_sphin "Sphinx (Electrocoin) (?)"
+ C|ec_sphin "Sphinx (v1) (Electrocoin)"
+ c|ec_unkt "Unknown 'T' (MAB PCB?) (Concept Games Ltd) (?)"
+ C|ec_unkt "unknown 'T' (MAB PCB?) (Concept Games Ltd) (?)"
+ c|ep_beavr "Beaver Las Vegas (Global) (EPOCH, set 1)"
+ C|ep_beavr "Casino Beaver Las Vegas (Global) (EPOCH, set 1)"
+ c|ep_beavra "Beaver Las Vegas (Global) (EPOCH, set 2)"
+ C|ep_beavra "Casino Beaver Las Vegas (Global) (EPOCH, set 2)"
+ c|ep_milhr "Who Wants To Be A Millionhare (Global) (EPOCH)"
+ C|ep_milhr "Who Wants To Be A Millionhare? (Global) (EPOCH)"
+ c|ep_pkni "Phoenix Knights (Global) (EPOCH)"
+ C|ep_pkni "The Phoenix Knights (Global) (EPOCH)"
+ C|exctsccrj "Exciting Soccer (Japan set 1)"
+ c|exctsccrj "Exciting Soccer (Japan)"
+ C|eyeszacb "Eyes (bootleg set 2, decrypted)"
+ c|eyeszacb "Eyes (bootleg)"
+ c|falcnwlda "Falcons Wild - World Wide Poker (Video Klein)"
+ C|falcnwlda "Falcons Wild - World Wide Poker (Video Klein, set 1)"
+ c|falcnwldb "Falcons Wild - World Wide Poker (Falcon original)"
+ C|falcnwldb "Falcons Wild - World Wide Poker (Video Klein, set 2)"
+ C|falcnwldc "Falcons Wild - World Wide Poker (Falcon original)"
+ C|fashiong "Fashion Gambler (set 1)"
+ c|fashiong "Fashion Gambler"
+ C|fashiong2 "Fashion Gambler (set 2)"
+ c|fashiong2 "Fashion Gambler (Set 2)"
+ c|ffight "Final Fight (World)"
+ C|ffight "Final Fight (World, set 1)"
+ c|forgottnu "Forgotten Worlds (USA, B-Board 88621B-2)"
+ C|forgottnu "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)"
+ C|forgottnu1 "Forgotten Worlds (USA, B-Board 88618B-2, Rev. C)"
+ c|forgottnua "Forgotten Worlds (USA, B-Board 88618B-2)"
+ C|forgottnua "Forgotten Worlds (USA, B-Board 88618B-2, Rev. A)"
+ C|garou "Garou - Mark of the Wolves (NGM-2530)"
+ c|garou "Garou - Mark of the Wolves (set 1)"
+ C|garouh "Garou - Mark of the Wolves (NGM-2530)(NGH-2530)"
+ c|garouo "Garou - Mark of the Wolves (set 2)"
+ c|ggate "Golden Gate (Bingo)"
+ C|ggate "Golden Gate (set 1) (Bingo)"
+ c|ggatea "Golden Gate (alternate set)(Bingo)"
+ C|ggatea "Golden Gate (set 2) (Bingo)"
+ c|gl_coc "Carry On Clubbin' (Global) (Stealth)"
+ C|gl_coc "Carry On Clubbin' (Global) (v3.0) (Stealth)"
+ C|gl_coc29 "Carry On Clubbin' (Global) (v2.9) (Stealth)"
+ C|gl_coc29p "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)"
+ C|gl_cocp "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)"
+ c|gl_dow "Deals On Wheels (Global) (Stealth)"
+ C|gl_dow "Deals On Wheels (Global) (v1.4) (Stealth)"
+ c|gl_dowcl "Deals On Wheels Club (Global) (Stealth)"
+ C|gl_dowcl "Deals On Wheels Club (Global) (v1.6) (Stealth)"
+ C|gl_dowclp "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)"
+ C|gl_dowp "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)"
+ c|gl_hbh "Heartbreak Hotel (Global) (Stealth)"
+ C|gl_hbh "Heartbreak Hotel (Global) (v1.0) (Stealth)"
+ c|gl_hbhcl "Heartbreak Hotel Club (Global) (Stealth)"
+ C|gl_hbhcl "Heartbreak Hotel Club (Global) (v1.9) (Stealth)"
+ C|gl_hbhcla "Heartbreak Hotel Club (Global) (Set 2) (Stealth)"
+ C|gl_hbhclp "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)"
+ c|gl_uyr "Up Yer Riggin Club (Global) (Stealth)"
+ C|gl_uyr "Up Yer Riggin Club (Global) (v2.8) (Stealth)"
+ C|gl_uyrp "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)"
+ c|gl_wywh "Wish You Were Here Club (Global) (Stealth)"
+ C|gl_wywh "Wish You Were Here Club (Global) (v2.9) (Stealth)"
+ C|gl_wywh24 "Wish You Were Here Club (Global) (v2.4) (Stealth)"
+ C|gl_wywh24p "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)"
+ C|gl_wywhp "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)"
+ C|goldball "Gold Ball (set 1)"
+ c|goldball "Gold Ball"
+ c|goldballn "Gold Ball (alternate set)"
+ C|goldballn "Gold Ball (set 2)"
+ C|goldmedl "Gold Medalist (set 1)"
+ c|goldmedl "Gold Medalist"
+ c|goldmedla "Gold Medalist (alt)"
+ C|goldmedla "Gold Medalist (set 2)"
+ c|granny "Granny and the Gators (Video/Pinball Combo)"
+ C|granny "Granny and the Gators"
+ C|gt103a1 "Trivia (Unsorted question roms)"
+ c|gt103a1 "Trivia (Version 1.03a) (alt 1)"
+ c|gt103a2 "Trivia (Version 1.03a) (alt 2)"
+ c|gt103a3 "Trivia (Version 1.03a) (alt 3)"
+ C|gt103aa "Trivia (Version 1.03a Alt questions 1)"
+ c|gt103aa "Trivia (Version 1.03a Alt questions)"
+ C|gt103ab "Trivia (Version 1.03a Alt questions 2)"
+ C|gulfstrm "Gulf Storm (set 1)"
+ c|gulfstrm "Gulf Storm"
+ C|gulfstrma "Gulf Storm (set 2)"
+ C|gundealrt "Gun Dealer (Japan)"
+ c|gundealrt "Gun Dealer (Korea)"
+ C|gunsur2 "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. A)"
+ c|gunsur2 "Gun Survivor 2 Biohazard Code: Veronica"
+ c|hb_mrmon "Mr Money (Qps)"
+ C|hb_mrmon "Mr. Money (Qps)"
+ C|hb_ydd "Yabba-Dabba-Dough (Qps)"
+ c|hb_ydd "Yabba Dabba Dough (Qps)"
+ C|hyhoo "Hayaoshi Taisen Quiz Hyhoo (Japan)"
+ c|hyhoo "Taisen Quiz HYHOO (Japan)"
+ C|hyhoo2 "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)"
+ c|hyhoo2 "Taisen Quiz HYHOO 2 (Japan)"
+ C|hyperbbc "Hyper Bishi Bashi Champ (GQ876 VER. EAA)"
+ c|hyperbbc "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. JAA)"
+ C|hyperbbca "Hyper Bishi Bashi Champ (GQ876 VER. AAA)"
+ c|hyperbbck "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. KAA)"
+ c|j6cpal "Caesar's Palace (Whitbread / Crystal) (IMPACT, set 1)"
+ C|j6cpal "Caesars Palace (Whitbread / Crystal) (IMPACT, set 1)"
+ c|j6cpala "Caesar's Palace (Whitbread / Crystal) (IMPACT, set 2)"
+ C|j6cpala "Caesars Palace (Whitbread / Crystal) (IMPACT, set 2)"
+ c|j6cpalb "Caesar's Palace (Whitbread / Ace) (IMPACT)"
+ C|j6cpalb "Caesars Palace (Whitbread / Ace) (IMPACT)"
+ c|j6kapang "Kapang (Crystal) (IMPACT)"
+ C|j6kapang "Kapang! (Crystal) (IMPACT)"
+ c|jojo "JoJo's Venture (USA 990108)"
+ C|jojo "JoJo's Venture (USA 990128)"
+ c|jojoa "JoJo's Venture (USA 981202)"
+ c|jojoaj "JoJo no Kimyouna Bouken (Japan 981202)"
+ c|jojoan "JoJo's Venture (Asia 981202, NO CD)"
+ c|jojoba "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990913)"
+ C|jojoba "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990927)"
+ c|jojoban "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990913, NO CD)"
+ C|jojoban "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990927, NO CD)"
+ c|jojobane "JoJo's Bizarre Adventure (Euro 990913, NO CD)"
+ C|jojobane "JoJo's Bizarre Adventure (Euro 990927, NO CD)"
+ C|jojobaner1 "JoJo's Bizarre Adventure (Euro 990913, NO CD)"
+ C|jojobanr1 "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990913, NO CD)"
+ C|jojobar1 "JoJo no Kimyouna Bouken: Miraie no Isan (Japan 990913)"
+ c|jojoj "JoJo no Kimyouna Bouken (Japan 990108)"
+ C|jojoj "JoJo no Kimyouna Bouken (Japan 990128)"
+ C|jojojr1 "JoJo no Kimyouna Bouken (Japan 990108)"
+ C|jojojr2 "JoJo no Kimyouna Bouken (Japan 981202)"
+ c|jojon "JoJo's Venture (Asia 990108, NO CD)"
+ C|jojon "JoJo's Venture (Asia 990128, NO CD)"
+ C|jojonr1 "JoJo's Venture (Asia 990108, NO CD)"
+ C|jojonr2 "JoJo's Venture (Asia 981202, NO CD)"
+ C|jojor1 "JoJo's Venture (USA 990108)"
+ C|jojor2 "JoJo's Venture (USA 981202)"
+ C|jokpokera "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)"
+ c|jokpokera "Joker Poker (Version 16.03BI)"
+ C|kof99 "The King of Fighters '99 - Millennium Battle (NGM-2510)"
+ c|kof99 "The King of Fighters '99 - Millennium Battle (set 1)"
+ C|kof99h "The King of Fighters '99 - Millennium Battle (NGH-2510)"
+ c|kof99h "The King of Fighters '99 - Millennium Battle (set 2)"
+ c|kovlsjb "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN)"
+ C|kovlsjb "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN, set 1)"
+ c|kovlsjba "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (alt ver. 200CN)"
+ C|kovlsjba "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN, set 2)"
+ c|kovplus "Knights of Valour Plus / Sangoku Senki Plus (ver. 119)"
+ C|kovplus "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 1)"
+ c|kovplusa "Knights of Valour Plus / Sangoku Senki Plus (alt ver. 119)"
+ C|kovplusa "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 2)"
+ C|kungfur "Kung-Fu Roushi"
+ c|kungfur "Kung Fu Roushi"
+ C|kungfut "Kung-Fu Taikun (set 1)"
+ c|kungfut "Kung-Fu Taikun"
+ c|kungfuta "Kung-Fu Taikun (alt)"
+ C|kungfuta "Kung-Fu Taikun (set 2)"
+ c|lhzb2a "Mahjong Long Hu Zheng Ba 2 (set 2)"
+ C|lhzb2a "Mahjong Long Hu Zheng Ba 2 (VS221M)"
+ c|m1corocb "Coronation Street Club (Maygay) (M1A/B)"
+ C|m1corocb "Coronation Street Club (Maygay) v2.1 (M1A/B)"
+ C|m1corocb1 "Coronation Street Club (Maygay) v1.1 (M1A/B)"
+ C|m1corocb1p "Coronation Street Club (Maygay) v1.1 (Protocol)(M1A/B)"
+ C|m1corocbp "Coronation Street Club (Maygay) v2.1 (Protocol) (M1A/B)"
+ c|m1cororr "Coronation Street - Rovers Return (Maygay) (M1A/B)"
+ C|m1cororr "Coronation Street - Rovers Return (Maygay) (set 1) (M1A/B)"
+ C|m1cororra "Coronation Street - Rovers Return (Maygay) (set 1) (Alternate) (M1A/B)"
+ C|m1cororrb "Coronation Street - Rovers Return (Maygay) (set 2) (M1A/B)"
+ C|m1cororrb1 "Coronation Street - Rovers Return (Maygay) (set 2) (Alternate) (M1A/B)"
+ C|m1cororrbh "Coronation Street - Rovers Return (Maygay) (set 2) (Hack) (M1A/B)"
+ C|m1cororrbp "Coronation Street - Rovers Return (Maygay) (set 2) (Protocol) (M1A/B)"
+ C|m1cororrc "Coronation Street - Rovers Return (Maygay) (set 3) (M1A/B)"
+ C|m1cororrc1 "Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 1) (M1A/B)"
+ C|m1cororrc2 "Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 2) (M1A/B)"
+ C|m1cororrd "Coronation Street - Rovers Return (Maygay) (set 4) (M1A/B)"
+ C|m1cororrdp "Coronation Street - Rovers Return (Maygay) (set 4) (Protocol) (M1A/B)"
+ C|m1cororre "Coronation Street - Rovers Return (Maygay) (set 5) (M1A/B)"
+ C|m1cororrf "Coronation Street - Rovers Return (Maygay) (set 6) (BW) (M1A/B)"
+ C|m1cororrfp "Coronation Street - Rovers Return (Maygay) (set 6) (BW) (Protocol) (M1A/B)"
+ C|m1cororrg "Coronation Street - Rovers Return (Maygay) (set 7) (M1A/B)"
+ C|m1cororrgp "Coronation Street - Rovers Return (Maygay) (set 7) (Protocol) (M1A/B)"
+ C|m1cororrh "Coronation Street - Rovers Return (Maygay) (set 8) (M1A/B)"
+ C|m1cororri "Coronation Street - Rovers Return (Maygay) (set 9) (M1A/B)"
+ C|m1cororrip "Coronation Street - Rovers Return (Maygay) (set 9) (Protocol) (M1A/B)"
+ C|m1cororrj "Coronation Street - Rovers Return (Maygay) (set 10) (M1A/B)"
+ C|m1cororrjp "Coronation Street - Rovers Return (Maygay) (set 10) (Protocol) (M1A/B)"
+ C|m1cororrk "Coronation Street - Rovers Return (Maygay) (set 11) (M1A/B)"
+ C|m1cororrl "Coronation Street - Rovers Return (Maygay) (set 12) (M1A/B)"
+ C|m1cororrlp "Coronation Street - Rovers Return (Maygay) (set 12) (Protocol) (M1A/B)"
+ C|m1cororrp "Coronation Street - Rovers Return (Maygay) (set 1) (Protocol) (M1A/B)"
+ c|m1corosh "Coronation Street Showcase (Maygay) (M1A/B)"
+ C|m1corosh "Coronation Street Showcase (Maygay) v1.1 (M1A/B)"
+ C|m1coroshp "Coronation Street Showcase (Maygay) v1.1 (Protocol)(M1A/B)"
+ C|m1criss "Criss Cross Club (Maygay) (Dutch) (M1A/B)"
+ c|m1criss "Criss Cross Club (Maygay) (M1A/B)"
+ c|m1dkong "Donkey Kong (Maygay) (M1A/B)"
+ C|m1dkong "Donkey Kong (Maygay) v9.2 (M1A/B)"
+ C|m1dkong11 "Donkey Kong (Maygay) v1.1 (M1A/B)"
+ C|m1dkong11p "Donkey Kong (Maygay) v1.1 (M1A/B) (Protocol?)"
+ C|m1dkong21 "Donkey Kong (Maygay) v2.1 (Older) (M1A/B)"
+ C|m1dkong21n "Donkey Kong (Maygay) v2.1 (M1A/B)"
+ C|m1dkong21p "Donkey Kong (Maygay) v2.1 (Older) (Protocol) (M1A/B)"
+ C|m1dkong31 "Donkey Kong (Maygay) v3.1 (M1A/B)"
+ C|m1dkong31p "Donkey Kong (Maygay) v3.1 (Protocol) (M1A/B)"
+ C|m1dkong41 "Donkey Kong (Maygay) v4.1 (M1A/B)"
+ C|m1dkong41p "Donkey Kong (Maygay) v4.1 (Protocol) (M1A/B)"
+ C|m1dkong51 "Donkey Kong (Maygay) v5.1 (M1A/B)"
+ C|m1dkong51p "Donkey Kong (Maygay) v5.1 (Protocol) (M1A/B)"
+ C|m1dkong81 "Donkey Kong (Maygay) v8.1 (Older) (M1A/B)"
+ C|m1dkong81n "Donkey Kong (Maygay) v8.1 (M1A/B)"
+ C|m1dkong81na "Donkey Kong (Maygay) v8.1 (Alternate) (M1A/B)"
+ C|m1dkong81np "Donkey Kong (Maygay) v8.1 (Protocol) (M1A/B)"
+ C|m1dkong81p "Donkey Kong (Maygay) v8.1 (Older) (Protocol) (M1A/B)"
+ C|m1dkong91 "Donkey Kong (Maygay) v9.1 (Older) (M1A/B)"
+ C|m1dkong91a "Donkey Kong (Maygay) v9.1 (Older) (Alternate) (M1A/B)"
+ C|m1dkong91h1 "Donkey Kong (Maygay) v9.1 (Older) (Hack 1) (M1A/B)"
+ C|m1dkong91h2 "Donkey Kong (Maygay) v9.1 (Older) (Hack 2) (M1A/B)"
+ C|m1dkong91n "Donkey Kong (Maygay) v9.1 (M1A/B)"
+ C|m1dkong91na "Donkey Kong (Maygay) v9.1 (Alternate) (M1A/B)"
+ C|m1dkong91np "Donkey Kong (Maygay) v9.1 (Protocol) (M1A/B)"
+ C|m1dkong91p "Donkey Kong (Maygay) v9.1 (Older) (Protocol) (M1A/B)"
+ C|m1dkonga "Donkey Kong (Maygay) v9.2 (Alternate) (M1A/B)"
+ C|m1dkongp "Donkey Kong (Maygay) v9.2 (Protocol) (M1A/B)"
+ c|m1dm4ev "Diamonds Are Forever Club (Maygay) (M1A/B)"
+ C|m1dm4ev "Diamonds Are Forever Club (Maygay) v5.1 (M1A/B)"
+ C|m1dm4ev11 "Diamonds Are Forever Club (Maygay) v1.1 (M1A/B)"
+ C|m1dm4evp "Diamonds Are Forever Club (Maygay) v5.1 (Protocol) n(M1A/B)"
+ c|m1dxmono "Deluxe Monopoly (Maygay) (M1A/B)"
+ C|m1dxmono "Deluxe Monopoly (Maygay) v5.1 (M1A/B)"
+ C|m1dxmono11 "Deluxe Monopoly (Maygay) v1.1 (M1A/B)"
+ C|m1dxmono11m "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)"
+ C|m1dxmono11mb "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)"
+ C|m1dxmono11o "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)"
+ C|m1dxmono11p "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)"
+ C|m1dxmono12 "Deluxe Monopoly (Maygay) v1.2 (M1A/B)"
+ C|m1dxmono12a "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)"
+ C|m1dxmono12n "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)"
+ C|m1dxmono12p "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)"
+ C|m1dxmono21p "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)"
+ C|m1dxmono30h "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)"
+ C|m1dxmono31b "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)"
+ C|m1dxmono31h "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)"
+ C|m1dxmono31h2 "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)"
+ C|m1dxmono31p "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)"
+ C|m1dxmono51 "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)"
+ C|m1dxmono51o "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)"
+ C|m1dxmono51p "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)"
+ C|m1dxmonop "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)"
+ C|m1liveam "Living In America (Maygay) (Alternate 1) (M1A/B)"
+ c|m1liveam "Living In America (Maygay) (M1A/B)"
+ C|m1liveama "Living In America (Maygay) (Alternate 2)(M1A/B)"
+ C|m1liveamp "Living In America (Maygay) (Protocol) (M1A/B)"
+ c|m1luxor "Luxor Casino (Gemini) (M1A/B)"
+ C|m1luxor "Luxor Casino (Gemini) v4.0 (M1A/B)"
+ C|m1luxor21 "Luxor Casino (Gemini) v2.1 (M1A/B)"
+ C|m1luxor32 "Luxor Casino (Gemini) v3.2 (M1A/B)"
+ C|m1luxor33 "Luxor Casino (Gemini) v3.3 (M1A/B)"
+ C|m5addams "Addams Family (Barcrest) (MPU5) (v0.5, set 1)"
+ c|m5addams "Addams Family (Barcrest) (MPU5)"
+ C|m5addamsa "Addams Family (Barcrest) (MPU5) (v0.5, set 2)"
+ C|m5addamsb "Addams Family (Barcrest) (MPU5) (v0.5, set 3)"
+ C|m5addamsc "Addams Family (Barcrest) (MPU5) (v0.5, set 4)"
+ C|m5addamsd "Addams Family (Barcrest) (MPU5) (v0.5, set 5)"
+ C|m5addamse "Addams Family (Barcrest) (MPU5) (v0.5, set 6)"
+ C|m5addamsf "Addams Family (Barcrest) (MPU5) (v0.5, set 7)"
+ C|m5addamsg "Addams Family (Barcrest) (MPU5) (v0.5, set 8)"
+ C|m5addamsh "Addams Family (Barcrest) (MPU5) (v0.2, set 1)"
+ C|m5addamsi "Addams Family (Barcrest) (MPU5) (v0.2, set 2)"
+ C|m5addamsj "Addams Family (Barcrest) (MPU5) (v0.2, set 3)"
+ C|m5addamsk "Addams Family (Barcrest) (MPU5) (v0.3, set 1)"
+ C|m5addamsl "Addams Family (Barcrest) (MPU5) (v0.3, set 2)"
+ C|m5addamsm "Addams Family (Barcrest) (MPU5) (v0.3, set 3)"
+ C|m5addamsn "Addams Family (Barcrest) (MPU5) (v0.3, set 4)"
+ C|m5addamso "Addams Family (Barcrest) (MPU5) (v0.3, set 5)"
+ C|m5addamsp "Addams Family (Barcrest) (MPU5) (v0.3, set 6)"
+ C|m5addamsq "Addams Family (Barcrest) (MPU5) (v0.3, set 7)"
+ C|m5addamsr "Addams Family (Barcrest) (MPU5) (v0.3, set 8)"
+ C|m5addamss "Addams Family (Barcrest) (MPU5) (v0.3, set 9)"
+ c|m5addlad "Adders & Ladders (Barcrest) (MPU5, set 1)"
+ C|m5addlad "Adders & Ladders (Barcrest) (MPU5, v0.6, set 1)"
+ c|m5addlada "Adders & Ladders (Barcrest) (MPU5, set 2)"
+ C|m5addlada "Adders & Ladders (Barcrest) (MPU5, v0.6, set 2)"
+ c|m5addladb "Adders & Ladders (Barcrest) (MPU5, set 3)"
+ C|m5addladb "Adders & Ladders (Barcrest) (MPU5, v0.6, set 3)"
+ C|m5addladc "Adders & Ladders (Barcrest) (MPU5, v0.6, set 4)"
+ C|m5addladd "Adders & Ladders (Barcrest) (MPU5, v0.6, set 5)"
+ C|m5addlade "Adders & Ladders (Barcrest) (MPU5, v0.6, set 6)"
+ C|m5addladf "Adders & Ladders (Barcrest) (MPU5, v0.6, set 7)"
+ C|m5addladg "Adders & Ladders (Barcrest) (MPU5, v0.6, set 8)"
+ C|m5addladh "Adders & Ladders (Barcrest) (MPU5, v0.6, set 9)"
+ C|m5addladi "Adders & Ladders (Barcrest) (MPU5, v0.6, set 10)"
+ C|m5addladj "Adders & Ladders (Barcrest) (MPU5, v0.1, set 1)"
+ C|m5addladk "Adders & Ladders (Barcrest) (MPU5, v0.1, set 2)"
+ C|m5addladl "Adders & Ladders (Barcrest) (MPU5, v0.1, set 3)"
+ C|m5addladm "Adders & Ladders (Barcrest) (MPU5, v0.1, set 4)"
+ C|m5addladn "Adders & Ladders (Barcrest) (MPU5, v0.1, set 5)"
+ C|m5addlado "Adders & Ladders (Barcrest) (MPU5, v0.1, set 6)"
+ C|m5addladp "Adders & Ladders (Barcrest) (MPU5, v0.1, set 7)"
+ C|m5addladq "Adders & Ladders (Barcrest) (MPU5, v0.4, set 1)"
+ C|m5addladr "Adders & Ladders (Barcrest) (MPU5, v0.4, set 2)"
+ C|m5addlads "Adders & Ladders (Barcrest) (MPU5, v?.?)"
+ C|m5all41a "All 4 One (Vivid) (MPU5, set 2)"
+ C|m5all41b "All 4 One (Vivid) (MPU5, set 3)"
+ C|m5all41c "All 4 One (Vivid) (MPU5, set 4)"
+ C|m5all41d "All 4 One (Vivid) (MPU5, set 5)"
+ C|m5all41e "All 4 One (Vivid) (MPU5, set 6)"
+ C|m5all41f "All 4 One (Vivid) (MPU5, set 7)"
+ C|m5all41g "All 4 One (Vivid) (MPU5, set 8)"
+ C|m5all41h "All 4 One (Vivid) (MPU5, set 9)"
+ C|m5all41i "All 4 One (Vivid) (MPU5, set 10)"
+ C|m5all41j "All 4 One (Vivid) (MPU5, set 11)"
+ C|m5all41k "All 4 One (Vivid) (MPU5, set 12)"
+ c|m5all41l "All 4 One (Lowen) (MPU5)"
+ C|m5all41l "All 4 One (Vivid) (MPU5, set 13)"
+ C|m5all41low "All 4 One (Lowen) (MPU5)"
+ C|m5all41m "All 4 One (Vivid) (MPU5, set 14)"
+ c|m5all41v "All 4 One (Vivid) (MPU5, set 2)"
+ c|m5ashock "Aftershock (Barcrest - Red Gaming) (MPU5)"
+ C|m5ashock "Aftershock (Barcrest - Red Gaming) (MPU5, v1.2)"
+ C|m5ashocka "Aftershock (Barcrest - Red Gaming) (MPU5, v1.3)"
+ c|m5atlan "Atlantic (Vivid) (MPU5)"
+ C|m5atlan "Atlantic (Vivid) (MPU5, v1.4)"
+ C|m5atlana "Atlantic (Vivid) (MPU5, v1.2)"
+ c|m5cockdd "Cock A Doodle Dough (Empire) (MPU5)"
+ C|m5cockdd "Cock A Doodle Dough! (Empire) (MPU5)"
+ C|m5doshpk "Do$h 'n' Pecks (Barcrest) (MPU5)"
+ c|m5doshpk "Do$h & Pecks (Barcrest) (MPU5)"
+ C|m5fewmor "A Few Dollars More (Empire) (MPU5) (v0.2, set 1)"
+ c|m5fewmor "A Few Dollars More (Empire) (MPU5)"
+ C|m5fewmora "A Few Dollars More (Empire) (MPU5) (v0.2, set 2)"
+ C|m5fewmorb "A Few Dollars More (Empire) (MPU5) (v0.3, set 1)"
+ C|m5fewmorc "A Few Dollars More (Empire) (MPU5) (v0.3, set 2)"
+ c|m5fmonty "Full Monty (Empire) (MPU5)"
+ C|m5fmonty "The Full Monty (Empire) (MPU5)"
+ c|m5sixsht "6 Shooter (Vivid) (MPU5)"
+ C|m5sixsht "Six Shooter (Vivid) (MPU5) (v1.1, set 1)"
+ C|m5sixshta "Six Shooter (Vivid) (MPU5) (v1.1, set 2)"
+ c|m5sixshta "Six Shooter (Vivid) (MPU5)"
+ C|m5sixshtb "Six Shooter (Vivid) (MPU5) (v2.0, set 1)"
+ C|m5sixshtc "Six Shooter (Vivid) (MPU5) (v2.0, set 2)"
+ C|m5sixshtd "Six Shooter (Vivid) (MPU5) (v2.0, set 3)"
+ C|m5sixshte "Six Shooter (Vivid) (MPU5) (v2.0, set 4)"
+ C|m5sixshtf "Six Shooter (Vivid) (MPU5) (v2.0, set 5)"
+ C|m5sixshtg "Six Shooter (Vivid) (MPU5) (v2.0, set 6)"
+ C|m5sixshth "Six Shooter (Vivid) (MPU5) (v2.0, set 7)"
+ C|m5sixshti "Six Shooter (Vivid) (MPU5) (v2.1, set 1)"
+ C|m5sixshtj "Six Shooter (Vivid) (MPU5) (v2.1, set 2)"
+ C|m5sixshtk "Six Shooter (Vivid) (MPU5) (v2.1, set 3)"
+ C|m5sixshtl "Six Shooter (Vivid) (MPU5) (v2.1, set 4)"
+ C|m5sixshtm "Six Shooter (Vivid) (MPU5) (v2.1, set 5)"
+ C|m5sixshtn "Six Shooter (Vivid) (MPU5) (v2.1, set 6)"
+ C|mdrawpkr "Draw Poker - Joker's Wild (Standard)"
+ c|mdrawpkr "Draw Poker Joker's Wild (Standard)"
+ C|mdrawpkra "Draw Poker - Joker's Wild (02-11)"
+ c|mdrawpkra "Draw Poker Joker's Wild (02-11)"
+ C|mirax "Mirax (set 1)"
+ c|mirax "Mirax"
+ c|mkyawdim "Mortal Kombat (Yawdim bootleg)"
+ C|mkyawdim "Mortal Kombat (Yawdim bootleg, set 1)"
+ C|mkyawdim2 "Mortal Kombat (Yawdim bootleg, set 2)"
+ C|mkyturboe "Mortal Kombat (Turbo 3.0 08/31/92, hack)"
+ c|mladyhtr "Mahjong THE LADY HUNTER (Japan 900509)"
+ C|mladyhtr "Mahjong The Lady Hunter (Japan 900509)"
+ c|mmatrixd "Mars Matrix: Hyper Solid Shooting (Japan 000412 Phoenix Edition) (bootleg)"
+ C|mmatrixd "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)"
+ c|moomesa "Wild West C.O.W.-Boys of Moo Mesa (ver EA)"
+ C|moomesa "Wild West C.O.W.-Boys of Moo Mesa (ver EAB)"
+ c|moomesaa "Wild West C.O.W.-Boys of Moo Mesa (ver AA)"
+ C|moomesaaab "Wild West C.O.W.-Boys of Moo Mesa (ver AAB)"
+ c|moomesabl "Wild West C.O.W.-Boys of Moo Mesa (bootleg ver AA)"
+ C|moomesabl "Wild West C.O.W.-Boys of Moo Mesa (bootleg)"
+ c|moomesau "Wild West C.O.W.-Boys of Moo Mesa (ver UA, set 1)"
+ c|moomesaua "Wild West C.O.W.-Boys of Moo Mesa (ver UA, set 2)"
+ C|moomesauab "Wild West C.O.W.-Boys of Moo Mesa (ver UAB)"
+ C|moomesauac "Wild West C.O.W.-Boys of Moo Mesa (ver UAC)"
+ C|motrshow "Motor Show (set 1)"
+ c|motrshow "Motor Show"
+ c|motrshowa "Motor Show (alternate set)"
+ C|motrshowa "Motor Show (set 2)"
+ C|mshuttle "Moon Shuttle (US? set 1)"
+ c|mshuttle "Moon Shuttle (US?)"
+ C|mshuttlej "Moon Shuttle (Japan set 1)"
+ c|mshuttlej "Moon Shuttle (Japan)"
+ C|mslug2 "Metal Slug 2 - Super Vehicle-001/II (NGM-2410)(NGH-2410)"
+ c|mslug2 "Metal Slug 2 - Super Vehicle-001/II"
+ C|mslugx "Metal Slug X - Super Vehicle-001 (NGM-2500)(NGH-2500)"
+ c|mslugx "Metal Slug X - Super Vehicle-001"
+ C|mspacii "Ms. Pac-Man II (Orca bootleg set 1)"
+ C|mspacii2 "Ms. Pac-Man II (Orca bootleg set 2)"
+ c|nzerotea "New Zero Team"
+ C|nzeroteam "New Zero Team"
+ c|olds100 "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 100)"
+ C|olds100 "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 100, set 1)"
+ c|olds100a "Oriental Legend Special / Xi You Shi E Zhuan Super (alt ver. 100)"
+ C|olds100a "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 100, set 2)"
+ C|prosport "Pro Sports - Bowling, Tennis, and Golf (set 1)"
+ c|prosport "Pro Sports - Bowling, Tennis, and Golf"
+ c|prosporta "Pro Sports - Bowling, Tennis, and Golf (alternate)"
+ C|prosporta "Pro Sports - Bowling, Tennis, and Golf (set 2)"
+ c|pzloop2j "Puzz Loop 2 (Japan 010205)"
+ C|pzloop2j "Puzz Loop 2 (Japan 010226)"
+ C|pzloop2jr1 "Puzz Loop 2 (Japan 010205)"
+ C|quasar "Quasar (set 1)"
+ c|quasar "Quasar"
+ c|quasara "Quasar (Alternate)"
+ C|quasara "Quasar (set 2)"
+ C|rastan "Rastan (World Rev 1)"
+ c|rastan "Rastan (World)"
+ C|rastana "Rastan (World)"
+ C|rastanu "Rastan (US Rev 1)"
+ c|rastanu "Rastan (US, set 1)"
+ c|rastanu2 "Rastan (US, set 2)"
+ C|rastanua "Rastan (US)"
+ C|rastanub "Rastan (US, Earlier code base)"
+ C|rastsaga "Rastan Saga (Japan Rev 1)"
+ c|rastsaga "Rastan Saga (Japan)"
+ c|rastsaga1 "Rastan Saga (Japan Rev 1)"
+ C|rastsagaa "Rastan Saga (Japan)"
+ C|rdft2j "Raiden Fighters 2 (Japan set 1, SPI)"
+ c|rdft2j "Raiden Fighters 2 (Japan, SPI)"
+ c|redeartha "Red Earth (Euro 961023)"
+ C|redearthr1 "Red Earth (Euro 961023)"
+ C|redfoxwp2 "Red Fox War Planes II (China)"
+ c|samsh5sph "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored)"
+ C|samsh5sph "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored)"
+ C|samsh5spho "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored)"
+ c|samsh5spn "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored)"
+ c|sc1barcd "Barcode (Bellfruit) (Scorpion 1)"
+ C|sc1barcd "Barcode (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1barcda "Barcode (Bellfruit) (set 2) (Scorpion 1)"
+ c|sc1btclk "Beat The Clock (Mdm) (Scorpion 2/3)"
+ C|sc1btclk "Beat The Clock (Mdm) (set 1) (Scorpion 2/3?)"
+ C|sc1btclka "Beat The Clock (Mdm) (set 2) (Scorpion 2/3?)"
+ C|sc1btclkb "Beat The Clock (Mdm) (set 3) (Scorpion 2/3?)"
+ c|sc1ccroc "Crazy Crocs (Mdm) (Scorpion 2/3)"
+ C|sc1ccroc "Crazy Crocs (Mdm) (set 1) (Scorpion 2/3?)"
+ C|sc1ccroca "Crazy Crocs (Mdm) (set 2) (Scorpion 2/3?)"
+ C|sc1ccrocb "Crazy Crocs (Mdm) (set 3) (Scorpion 2/3?)"
+ C|sc1ccrocc "Crazy Crocs (Mdm) (set 4) (Scorpion 2/3?)"
+ c|sc1cdm "Club Diamond (Crystal) (Scorpion 1)"
+ C|sc1cdm "Club Diamond (Crystal) (set 1) (Scorpion 1)"
+ C|sc1cdmp "Club Diamond (Crystal) (set 1, Protocol) (Scorpion 1)"
+ C|sc1cexpd "Cash Explosion (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1cexpd "Cash Explosion (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1cexpl "Cash Explosion (Bellfruit) (Scorpion 1)"
+ C|sc1cexpl "Cash Explosion (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1cexpla "Cash Explosion (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1cexplb "Cash Explosion (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1cexplc "Cash Explosion (Bellfruit) (set 4) (Scorpion 1)"
+ C|sc1cexpld "Cash Explosion (Bellfruit) (set 5) (Scorpion 1)"
+ c|sc1chain "Chain Reaction (Bellfruit) (Scorpion 1)"
+ C|sc1chain "Chain Reaction (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1chaina "Chain Reaction (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1chainp "Chain Reaction (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ c|sc1china "China Town Club (Bellfruit) (Scorpion 1)"
+ C|sc1china "China Town Club (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1chinaa "China Town Club (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1chinaap "China Town Club (Bellfruit) (set 2, Protocol) (Scorpion 1)"
+ C|sc1chinab "China Town Club (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1chinabp "China Town Club (Bellfruit) (set 3, Protocol) (Scorpion 1)"
+ C|sc1chinap "China Town Club (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ C|sc1cl2k1 "Club 2001 (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1cl2k1 "Club 2001 (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1cl65 "Club 65 Special (Bellfruit) (Scorpion 1)"
+ C|sc1cl65 "Club 65 Special (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1cl65a "Club 65 Special (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1cl65ap "Club 65 Special (Bellfruit) (set 2, Protocol) (Scorpion 1)"
+ C|sc1cl65b "Club 65 Special (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1cl65bp "Club 65 Special (Bellfruit) (set 3, Protocol) (Scorpion 1)"
+ C|sc1cl65c "Club 65 Special (Bellfruit) (set 4) (Scorpion 1)"
+ C|sc1cl65d "Club 65 Special (Bellfruit) (set 5) (Scorpion 1)"
+ C|sc1cl65dp "Club 65 Special (Bellfruit) (set 5, Protocol) (Scorpion 1)"
+ C|sc1class "Classic (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1class "Classic (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1clbtm "Club Temptation (Bellfruit) (Scorpion 1)"
+ C|sc1clbtm "Club Temptation (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1clbtma "Club Temptation (Bellfruit) (set 2) (Scorpion 1)"
+ c|sc1clbw "Club Wise (Bellfruit) (Scorpion 1)"
+ C|sc1clbw "Club Wise (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1clbwa "Club Wise (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1clbwb "Club Wise (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1copdd "Cops 'n' Robbers Deluxe (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1copdd "Cops 'n' Robbers Deluxe (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1count "Count Cash Club (Bellfruit) (Scorpion 1)"
+ C|sc1count "Count Cash Club (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1counta "Count Cash Club (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1countap "Count Cash Club (Bellfruit) (set 2, Protocol) (Scorpion 1)"
+ C|sc1countb "Count Cash Club (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1countp "Count Cash Club (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ c|sc1crocr "Croc And Roll (Mdm) (Scorpion 2/3)"
+ C|sc1crocr "Croc And Roll (Mdm) (Scorpion 2/3?)"
+ C|sc1cscl "Cash Classic (Global) (set 1)"
+ c|sc1cscl "Cash Classic (Global)"
+ C|sc1cscla "Cash Classic (Global) (set 2)"
+ C|sc1csclb "Cash Classic (Maygay/Global?) (set 3)"
+ C|sc1csclc "Cash Classic (Maygay/Global?) (set 4)"
+ c|sc1cshat "Cash Attraction (Bellfruit) (Scorpion 1)"
+ C|sc1cshat "Cash Attraction (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1cshata "Cash Attraction (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1cshatb "Cash Attraction (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1cshatc "Cash Attraction (Bellfruit) (set 4) (Scorpion 1)"
+ c|sc1cshcda "Cash Card (Bellfruit) (Scorpion 1, set 1)"
+ C|sc1cshcda "Cash Card (Bellfruit) (set 1) (Scorpion 1)"
+ c|sc1cshcdb "Cash Card (Bellfruit) (Scorpion 1, set 2)"
+ C|sc1cshcdb "Cash Card (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1cshin "Cashino (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1cshin "Cashino (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1cshwz "Cash Wise (Bellfruit) (Scorpion 1)"
+ C|sc1cshwz "Cash Wise (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1cshwza "Cash Wise (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1cshwzb "Cash Wise (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1cshwzc "Cash Wise (Bellfruit) (set 4) (Scorpion 1)"
+ C|sc1dago "Dagobert's Vault (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1dago "Dagobert's Vault (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1days "All In A Days Work (Global) (set 1)"
+ c|sc1days "All In A Days Work (Global)"
+ C|sc1daysa "All In A Days Work (Global) (set 2)"
+ c|sc1dblch "Double Chance (Bellfruit) (Scorpion 1)"
+ C|sc1dblch "Double Chance (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1dblcha "Double Chance (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1disc "Discovey (Bellfruit) (Dutch) (set 1) (Scorpion 1)"
+ c|sc1disc "Discovey (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1disca "Discovey (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1driv "Driving School (Global) (set 1)"
+ c|sc1driv "Driving School (Global)"
+ C|sc1driva "Driving School (Global) (set 2)"
+ C|sc1drivb "Driving School (Global) (set 3)"
+ C|sc1drivc "Driving School (Global) (set 4)"
+ C|sc1flash "Flash (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1flash "Flash (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1frpus "Fruit Pursuit (Bellfruit) (Scorpion 1?)"
+ C|sc1frpus "Fruit Pursuit (Bellfruit) (set 1) (Scorpion 1?)"
+ C|sc1frpusa "Fruit Pursuit (Bellfruit) (set 2) (Scorpion 1?)"
+ c|sc1frtln "Fruit Lines (Bellfruit) (Scorpion 1, set 2)"
+ C|sc1frtln "Fruit Lines (Bellfruit) (set 2) (Scorpion 1)"
+ c|sc1fruit "Fruit Lines (Bellfruit) (Scorpion 1, set 1)"
+ C|sc1fruit "Fruit Lines (Bellfruit) (set 1) (Scorpion 1)"
+ c|sc1funh "Fun House Club (Bellfruit) (Scorpion 1)"
+ C|sc1funh "Fun House Club (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1funha "Fun House Club (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1funhb "Fun House Club (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1funhp "Fun House Club (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ C|sc1gprix "Grand Prix (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1gprix "Grand Prix (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1gslam "Grand Slam (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1gslam "Grand Slam (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1hfcc "Hi Flyer Club (Crystal) (Scorpion 1)"
+ C|sc1hfcc "Hi Flyer Club (Crystal) (set 1) (Scorpion 1)"
+ C|sc1hfccp "Hi Flyer Club (Crystal) (set 1, Protocol) (Scorpion 1)"
+ C|sc1impc "Impact (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1impc "Impact (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1kings "Kings Club (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1kings "Kings Club (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1linx "Linx (Bellfruit) (Scorpion 1)"
+ C|sc1linx "Linx (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1linxa "Linx (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1linxp "Linx (Bellfruit) (set 3, Protocol) (Scorpion 1)"
+ C|sc1lotus "Lotus SE (Dutch) (set 1)"
+ c|sc1lotus "Lotus SE (Dutch)"
+ C|sc1lotusa "Lotus SE (Dutch) (set 2)"
+ C|sc1magc "Magic Circle (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1magc "Magic Circle (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1manha "Manhattan (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1manha "Manhattan (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1mist "Mistral (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1mist "Mistral (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1olym "Olympia (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1olym "Olympia (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1orac "Oracle (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1orac "Oracle (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1pwrl "Power Lines (Bellfruit) (Scorpion 1)"
+ C|sc1pwrl "Power Lines (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1pwrla "Power Lines (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1quat "Quatro (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1quat "Quatro (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1rain "Rainbow (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1rain "Rainbow (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1re "Reel Cash (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1re "Reel Cash (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1rese "Reel Cash SE (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1rese "Reel Cash SE (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1revo "Revolution (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1revo "Revolution (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1rose "Rose 'n' Crown (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1rose "Rose 'n' Crown (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1sant "Santana (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1sant "Santana (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1sat "Satellite (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1sat "Satellite (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1shan "Shanghai (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1shan "Shanghai (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1sir "Strike It Rich (Bellfruit) (Scorpion 1)"
+ C|sc1sir "Strike It Rich (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1sira "Strike It Rich (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1sirb "Strike It Rich (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1sirc "Strike It Rich (Bellfruit) (set 4) (Scorpion 1)"
+ c|sc1smoke "Smokey Vs The Bandit (Mdm) (Scorpion 2/3)"
+ C|sc1smoke "Smokey Vs The Bandit (Mdm) (set 1) (Scorpion 2/3?)"
+ C|sc1smokea "Smokey Vs The Bandit (Mdm) (set 2) (Scorpion 2/3?)"
+ c|sc1spct "Spectre (Bellfruit) (Scorpion 1)"
+ C|sc1spct "Spectre (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1spcta "Spectre (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1ster "Sterling (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1ster "Sterling (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1str4 "Strike 4 (Bellfruit) (Scorpion 1, set 1)"
+ C|sc1str4 "Strike 4 (Bellfruit) (set 1) (Scorpion 1)"
+ c|sc1str4a "Strike 4 (Bellfruit) (Scorpion 1, set 2)"
+ C|sc1str4a "Strike 4 (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1sups "Superstar (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1sups "Superstar (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1torn "Tornado (Bellfruit) (Dutch) (set 1) (Scorpion 1)"
+ c|sc1torn "Tornado (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1torna "Tornado (Bellfruit) (Dutch) (set 2) (Scorpion 1)"
+ c|sc1tri "Tri Star (Bellfruit) (Scorpion 1)"
+ C|sc1tri "Tri Star (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1tria "Tri Star (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1triap "Tri Star (Bellfruit) (set 2, Protocol) (Scorpion 1)"
+ C|sc1trib "Tri Star (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1tribp "Tri Star (Bellfruit) (set 3, Protocol) (Scorpion 1)"
+ c|sc1typ "Typhoon Club (Bellfruit) (Scorpion 1)"
+ C|sc1typ "Typhoon Club (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1typp "Typhoon Club (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ C|sc1vent "Ventura (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1vent "Ventura (Bellfruit) [Dutch] (Scorpion 1)"
+ C|sc1vict "Victory (Bellfruit) (Dutch) (Scorpion 1)"
+ c|sc1vict "Victory (Bellfruit) [Dutch] (Scorpion 1)"
+ c|sc1voy "Voyager (Bellfruit) (Scorpion 1, set 1)"
+ C|sc1voy "Voyager (Bellfruit) (set 1) (Scorpion 1)"
+ c|sc1voya "Voyager (Bellfruit) (Scorpion 1, set 2)"
+ C|sc1voya "Voyager (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1winfl "Winfalls (Dutch) (Bellfruit) (Scorpion 1)"
+ c|sc1winfl "Winfalls [Dutch] (Bellfruit) (Scorpion 1)"
+ c|sc1winst "Winning Streak (Bellfruit) (Scorpion 1)"
+ C|sc1winst "Winning Streak (Bellfruit) (set 1) (Scorpion 1)"
+ C|sc1winsta "Winning Streak (Bellfruit) (set 2) (Scorpion 1)"
+ C|sc1winstb "Winning Streak (Bellfruit) (set 3) (Scorpion 1)"
+ C|sc1winstbp "Winning Streak (Bellfruit) (set 3, Protocol) (Scorpion 1)"
+ C|sc1winstc "Winning Streak (Bellfruit) (set 4) (Scorpion 1)"
+ C|sc1winstcp "Winning Streak (Bellfruit) (set 4, Protocol) (Scorpion 1)"
+ C|sc1winstd "Winning Streak (Bellfruit) (set 5) (Scorpion 1)"
+ C|sc1winstdp "Winning Streak (Bellfruit) (set 5, Protocol) (Scorpion 1)"
+ C|sc1winste "Winning Streak (Bellfruit) (set 6) (Scorpion 1)"
+ C|sc1winstep "Winning Streak (Bellfruit) (set 6, Protocol) (Scorpion 1)"
+ C|sc1winstf "Winning Streak (Bellfruit) (set 7) (Scorpion 1)"
+ C|sc1winstfp "Winning Streak (Bellfruit) (set 7, Protocol) (Scorpion 1)"
+ C|sc1winstg "Winning Streak (Bellfruit) (set 8) (Scorpion 1)"
+ C|sc1winstp "Winning Streak (Bellfruit) (set 1, Protocol) (Scorpion 1)"
+ C|sc2brkfs1 "The Big Breakfast (set 2 UK, Single Site) (Scorpion 2/3)"
+ c|sc2brkfs1 "The Big Breakfast (set 2) (Scorpion 2/3)"
+ C|sc2brkfs1p "The Big Breakfast (set 2 UK, Single Site, Protocol) (Scorpion 2/3)"
+ C|sc2brkfs2 "The Big Breakfast (set 3 UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)"
+ c|sc2brkfs2 "The Big Breakfast (set 3) (Scorpion 2/3)"
+ C|sc2brkfs3 "The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)"
+ c|sc2brkfs3 "The Big Breakfast (set 4) (Scorpion 2/3)"
+ C|sc2brkfs3p "The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2brkfs4 "The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)"
+ c|sc2brkfs4 "The Big Breakfast (set 5) (Scorpion 2/3)"
+ C|sc2brkfs4p "The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2brkfs5 "The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)"
+ c|sc2brkfs5 "The Big Breakfast (set 6) (Scorpion 2/3)"
+ C|sc2brkfs5p "The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2brkfsm "The Big Breakfast Casino (Scorpion 2/3)"
+ C|sc2brkfsm "The Big Breakfast Casino (set 1) (Scorpion 2/3)"
+ C|sc2brkfsm1 "The Big Breakfast Casino (set 2) (Scorpion 2/3)"
+ C|sc2brkfsm2 "The Big Breakfast Casino (set 3) (Scorpion 2/3)"
+ C|sc2brkfsp "The Big Breakfast (set 1, Protocol) (Scorpion 2/3)"
+ c|sc2call "It's Your Call (Global) (Scorpion 2/3)"
+ C|sc2call "It's Your Call (Global) (v2.7) (Scorpion 2/3)"
+ C|sc2callc "It's Your Call (Club?) (Global) (v1.6) (Scorpion 2/3)"
+ C|sc2callcp "It's Your Call (Club?) (Global) (v1.6 Protocol) (Scorpion 2/3)"
+ C|sc2callp "It's Your Call (Global) (v2.7 Protocol) (Scorpion 2/3)"
+ c|sc2casr "Casino Royale (Bellfruit) (Scorpion 2/3)"
+ C|sc2casr "Casino Royale (Bellfruit) (set 1, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)"
+ C|sc2casr1 "Casino Royale (Bellfruit) (set 2, UK, 3rd Triennial) (Scorpion 2/3)"
+ C|sc2casr1p "Casino Royale (Bellfruit) (set 2, UK, 3rd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2casr2 "Casino Royale (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2casr2p "Casino Royale (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2casr3 "Casino Royale (Bellfruit) (set 4, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2casr3p "Casino Royale (Bellfruit) (set 4, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2casr4 "Casino Royale (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2casr4p "Casino Royale (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2casrp "Casino Royale (Bellfruit) (set 1, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2catms1 "Cat & Mouse (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2catms1p "Cat & Mouse (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2catms2 "Cat & Mouse (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2catms2p "Cat & Mouse (Bellfruit) (set 3, Protocol) (Scorpion 2/3)"
+ C|sc2catms3 "Cat & Mouse (Bellfruit) (set 4) (Scorpion 2/3)"
+ C|sc2catms4 "Cat & Mouse (Bellfruit) (set 5) (Scorpion 2/3)"
+ c|sc2cb7 "Casino Bar 7 (Bellfruit) (Scorpion 2/3)"
+ C|sc2cb7 "Casino Bar 7 (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2cb71 "Casino Bar 7 (Bellfruit) (set 2, UK, All Cash) (Scorpion 2/3)"
+ C|sc2cb72 "Casino Bar 7 (Bellfruit) (set 3, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cb72p "Casino Bar 7 (Bellfruit) (set 3, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2cb7p "Casino Bar 7 (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2cgcas "Club Grand Casino (Bellfruit) (Scorpion 2/3)"
+ C|sc2cgcas "Club Grand Casino (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2cgcas1 "Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cgcas1p "Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2cgcasp "Club Grand Casino (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2cmbt "Cat & Mouse & Bonzo Too (Bellfruit) (Scorpion 2/3)"
+ C|sc2cmbt "Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2cmbtp "Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2cnile "Cash On The Nile Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2cnile "Cash On The Nile Club (Bellfruit) (set 1 UK, 150GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cnile1 "Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cnile2 "Cash On The Nile Club (Bellfruit) (set 2 UK, 200GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cnile2p "Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2cnile3p "Cash On The Nile Club (Bellfruit) (set 3 UK, 150GBP Jackpot) (Scorpion 2/3)"
+ c|sc2copcl "Cops 'n' Robbers Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2copcl "Cops 'n' Robbers Club (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copcl1 "Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copcl10 "Cops 'n' Robbers Club (Bellfruit) (set 11, UK) (Scorpion 2/3)"
+ C|sc2copcl11 "Cops 'n' Robbers Club (Bellfruit) (set 12, UK) (Scorpion 2/3)"
+ C|sc2copcl11p "Cops 'n' Robbers Club (Bellfruit) (set 12, UK, Protocol) (Scorpion 2/3)"
+ C|sc2copcl1p "Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2copcl2 "Cops 'n' Robbers Club (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2copcl3 "Cops 'n' Robbers Club (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2copcl3p "Cops 'n' Robbers Club (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2copcl4 "Cops 'n' Robbers Club (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2copcl5 "Cops 'n' Robbers Club (Bellfruit) (set 6, UK) (Scorpion 2/3)"
+ C|sc2copcl6 "Cops 'n' Robbers Club (Bellfruit) (set 7, UK) (Scorpion 2/3)"
+ C|sc2copcl6p "Cops 'n' Robbers Club (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3)"
+ C|sc2copcl7 "Cops 'n' Robbers Club (Bellfruit) (set 8, UK) (Scorpion 2/3)"
+ C|sc2copcl8 "Cops 'n' Robbers Club (Bellfruit) (set 9, UK) (Scorpion 2/3)"
+ C|sc2copcl8p "Cops 'n' Robbers Club (Bellfruit) (set 9, UK, Protocol) (Scorpion 2/3)"
+ C|sc2copcl9 "Cops 'n' Robbers Club (Bellfruit) (set 10, UK) (Scorpion 2/3)"
+ C|sc2copcl9p "Cops 'n' Robbers Club (Bellfruit) (set 10, UK, Protocol) (Scorpion 2/3)"
+ C|sc2copclp "Cops 'n' Robbers Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2copdc "Cops 'n' Robbers Club Deluxe (Bellfruit) (Scorpion 2/3)"
+ C|sc2copdc "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copdc1 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copdc1p "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2copdc2 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copdc2p "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2copdc3 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copdc3p "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2copdc4 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 200GBP Jackpot?) (Scorpion 2/3)"
+ C|sc2copdc4p "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 200GBP Jackpot?, Protocol) (Scorpion 2/3)"
+ C|sc2copdc5 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 200GBP Jackpot) (Scorpion 2/3)"
+ C|sc2copdc5p "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 200GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2copdc6 "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK) (Scorpion 2/3)"
+ C|sc2copdcp "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2cops "Cops 'n' Robbers (Bellfruit) (Scorpion 2/3)"
+ C|sc2cops "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2cops1 "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2cops1p "Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2cops2 "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2cops3 "Cops 'n' Robbers (Bellfruit) (set 4) (Scorpion 2/3)"
+ C|sc2cops3p "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)"
+ C|sc2cops4 "Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3)"
+ C|sc2cops5 "Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3)"
+ C|sc2copsc "Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2copsc1 "Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2copsc1p "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2copsc2 "Casino Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2copscp "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)"
+ C|sc2copsp "Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)"
+ C|sc2cpe1 "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)"
+ C|sc2cpe1p "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2cpe2 "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)"
+ C|sc2cpe2p "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2cpe3p "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2cpe4 "Club Public Enemy No.1 (set 6, UK) (Scorpion 2/3)"
+ C|sc2cpe5p "Club Public Enemy No.1 (set 7, UK, Protocol) (Scorpion 2/3)"
+ C|sc2cpep "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)"
+ c|sc2cpg "Pharaoh's Gold Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2cpg "Pharaoh's Gold Club (Bellfruit) (set 1, UK, 250GBP Jackpot)(Scorpion 2/3)"
+ C|sc2cpg1 "Pharaoh's Gold Club (Bellfruit) (set 2, UK, p65)(Scorpion 2/3)"
+ C|sc2cpg1p "Pharaoh's Gold Club (Bellfruit) (set 2, UK, p65, Protocol)(Scorpion 2/3)"
+ C|sc2cpg2 "Pharaoh's Gold Club (Bellfruit) (set 3, UK)(Scorpion 2/3)"
+ C|sc2cpg2p "Pharaoh's Gold Club (Bellfruit) (set 3, UK, Protocol)(Scorpion 2/3)"
+ C|sc2cpgp "Pharaoh's Gold Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol)(Scorpion 2/3)"
+ c|sc2cshcl "Cashino Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2cshcl "Cashino Club (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2cshcl1 "Cashino Club (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2cshcl1p "Cashino Club (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2cshclp "Cashino Club (Bellfruit) (set 1, Protocol) (Scorpion 2/3)"
+ C|sc2ctms2 "Cat & Mouse (Mark 2) (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2ctms21 "Cat & Mouse (Mark 2) (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2ctms21p "Cat & Mouse (Mark 2) (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2ctms22 "Cat & Mouse (Mark 2) (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2ctms22p "Cat & Mouse (Mark 2) (Bellfruit) (set 3, Protocol) (Scorpion 2/3)"
+ C|sc2ctms23 "Cat & Mouse (Mark 2) (Bellfruit) (set 4) (Scorpion 2/3)"
+ C|sc2ctms23p "Cat & Mouse (Mark 2) (Bellfruit) (set 4, Protocol) (Scorpion 2/3)"
+ C|sc2ctms24p "Cat & Mouse (Mark 2) (Bellfruit) (set 5, Protocol) (Scorpion 2/3)"
+ C|sc2ctms25 "Cat & Mouse (Mark 2) (Bellfruit) (set 6) (Scorpion 2/3)"
+ c|sc2cvega "Cash Vegas (Bellfruit) (Scorpion 2/3)"
+ C|sc2cvega "Cash Vegas (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2cvega1 "Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)"
+ C|sc2cvega1p "Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2cvega2 "Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cvega2p "Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2cvega3 "Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2cvega3p "Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2cvega4p "Cash Vegas (Bellfruit) (set 5, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2dbl "Double Diamond (Bellfruit) (Scorpion 2/3)"
+ C|sc2dbl "Double Diamond (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2dbl1 "Double Diamond (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2dbl1p "Double Diamond (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2dblp "Double Diamond (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2dels "Del's Millions (Bellfruit) (Scorpion 2/3)"
+ C|sc2dels "Del's Millions (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2dels1 "Del's Millions (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2dels1p "Del's Millions (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2dels2 "Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2dels2p "Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2dels3 "Del's Millions (Bellfruit) (set 4, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2dels3p "Del's Millions (Bellfruit) (set 4, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2dels4 "Del's Millions (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2dels4p "Del's Millions (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2dels5 "Del's Millions (Bellfruit) (set 6, UK) (Scorpion 2/3)"
+ C|sc2dels6 "Del's Millions (Bellfruit) (set 7, UK) (Scorpion 2/3)"
+ C|sc2dels7 "Del's Millions (Bellfruit) (set 8, UK) (Scorpion 2/3)"
+ C|sc2dels8 "Del's Millions (Bellfruit) (set 9, UK) (Scorpion 2/3)"
+ C|sc2dels9 "Del's Millions (Bellfruit) (set 10, UK) (Scorpion 2/3)"
+ C|sc2delsd "Del's Millions (Bellfruit) ('Deluxe', UK) (Scorpion 2/3)"
+ C|sc2delsm "Del's Millions (Bellfruit/Mazooma) (set 1, UK) (Scorpion 2/3)"
+ C|sc2delsm1 "Del's Millions (Bellfruit/Mazooma) (set 2, UK) (Scorpion 2/3)"
+ C|sc2delsm1p "Del's Millions (Bellfruit/Mazooma) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2delsm2 "Del's Millions (Bellfruit/Mazooma) (set 3, UK) (Scorpion 2/3)"
+ C|sc2delsm2p "Del's Millions (Bellfruit/Mazooma) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2delsm3 "Del's Millions (Bellfruit/Mazooma) (set 4, UK) (Scorpion 2/3)"
+ C|sc2delsm3p "Del's Millions (Bellfruit/Mazooma) (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2delsmp "Del's Millions (Bellfruit/Mazooma) (set 1, UK, Protocol) (Scorpion 2/3)"
+ C|sc2delsp "Del's Millions (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2dick "Spotted Dick (Global) (Scorpion 2/3)"
+ C|sc2dick "Spotted Dick (Global) (v3.1) (Scorpion 2/3)"
+ C|sc2dick1 "Spotted Dick (Global) (v2.2) (Scorpion 2/3)"
+ C|sc2dick2 "Spotted Dick (Global) (v1.5) (Scorpion 2/3)"
+ C|sc2dick2e "Spotted Dick (Global) (v?.? Euro) (Scorpion 2/3)"
+ C|sc2dick2eu "Spotted Dick (Global) (v?.? Euro unencrypted) (Scorpion 2/3)"
+ C|sc2dick2p "Spotted Dick (Global) (v1.5 Protocol ) (Scorpion 2/3)"
+ C|sc2dickp "Spotted Dick (Global) (v3.1 Protocol) (Scorpion 2/3)"
+ c|sc2downt "Down Town (Bellfruit) (Scorpion 2/3)"
+ C|sc2downt "Down Town (Bellfruit) (set 1, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt1 "Down Town (Bellfruit) (set 2, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt1p "Down Town (Bellfruit) (set 2, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt2 "Down Town (Bellfruit) (set 3, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt2p "Down Town (Bellfruit) (set 3, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt3 "Down Town (Bellfruit) (set 4, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt3a "Down Town (Bellfruit) (set 4, UK, 16RM motor) (Scorpion 2/3)"
+ C|sc2downt3ap "Down Town (Bellfruit) (set 4, UK, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt3p "Down Town (Bellfruit) (set 4, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt4 "Down Town (Bellfruit) (set 5, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt4a "Down Town (Bellfruit) (set 5, UK, 16RM motor) (Scorpion 2/3)"
+ C|sc2downt4ap "Down Town (Bellfruit) (set 5, UK, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt4p "Down Town (Bellfruit) (set 5, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downt5 "Down Town (Bellfruit) (set 6, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt6 "Down Town (Bellfruit) (set 7, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt7 "Down Town (Bellfruit) (set 8, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2downt8a "Down Town (Bellfruit) (set 9, UK, 16RM motor) (Scorpion 2/3)"
+ C|sc2downt8ap "Down Town (Bellfruit) (set 9, UK, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2downtp "Down Town (Bellfruit) (set 1, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ c|sc2drwho "Dr.Who The Timelord (set 1, UK, Game Card 95-750-288) (Scorpion 2/3)"
+ C|sc2drwho "Dr.Who The Timelord (set 1, UK, Single Site, Game Card 95-750-288) (Scorpion 2/3)"
+ c|sc2drwho10 "Dr.Who The Timelord (set 11) (Scorpion 2/3)"
+ C|sc2drwho10 "Dr.Who The Timelord (set 11, UK, Arcade, Protocol) (Scorpion 2/3)"
+ c|sc2drwho11 "Dr.Who The Timelord (set 12) (Scorpion 2/3)"
+ C|sc2drwho11 "Dr.Who The Timelord (set 12, UK, no Jackpot spin, Protocol) (Scorpion 2/3)"
+ c|sc2drwho12 "Dr.Who The Timelord (set 13) (Scorpion 2/3)"
+ C|sc2drwho12 "Dr.Who The Timelord (set 13, UK) (Scorpion 2/3)"
+ c|sc2drwho13 "Dr.Who The Timelord (set 14) (Scorpion 2/3)"
+ C|sc2drwho13 "Dr.Who The Timelord (set 14, UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)"
+ c|sc2drwho14 "Dr.Who The Timelord (set 15) (Scorpion 2/3)"
+ C|sc2drwho14 "Dr.Who The Timelord (set 15, UK, Arcade) (Scorpion 2/3)"
+ c|sc2drwho15 "Dr.Who The Timelord (set 16) (Scorpion 2/3)"
+ C|sc2drwho15 "Dr.Who The Timelord (set 16, UK, Arcade) (Scorpion 2/3)"
+ c|sc2drwho2 "Dr.Who The Timelord (set 3) (Scorpion 2/3)"
+ C|sc2drwho2 "Dr.Who The Timelord (set 3, UK, Arcade, Protocol) (Scorpion 2/3)"
+ c|sc2drwho3 "Dr.Who The Timelord (set 4) (Scorpion 2/3)"
+ C|sc2drwho3 "Dr.Who The Timelord (set 4, UK Single Site, Protocol) (Scorpion 2/3)"
+ c|sc2drwho4 "Dr.Who The Timelord (set 5) (Scorpion 2/3)"
+ C|sc2drwho4 "Dr.Who The Timelord (set 5, UK, Arcade) (Scorpion 2/3)"
+ c|sc2drwho5 "Dr.Who The Timelord (set 6) (Scorpion 2/3)"
+ C|sc2drwho5 "Dr.Who The Timelord (set 6, UK) (Scorpion 2/3)"
+ c|sc2drwho6 "Dr.Who The Timelord (set 7) (Scorpion 2/3)"
+ C|sc2drwho6 "Dr.Who The Timelord (set 7, UK, Protocol) (Scorpion 2/3)"
+ c|sc2drwho7 "Dr.Who The Timelord (set 8) (Scorpion 2/3)"
+ C|sc2drwho7 "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2drwho8 "Dr.Who The Timelord (set 9) (Scorpion 2/3)"
+ C|sc2drwho8 "Dr.Who The Timelord (set 9, UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2drwho9 "Dr.Who The Timelord (set 10) (Scorpion 2/3)"
+ C|sc2drwho9 "Dr.Who The Timelord (set 10, UK, Arcade, Protocol) (Scorpion 2/3)"
+ c|sc2easy "Easy Money (Bellfruit) (Scorpion 2/3)"
+ C|sc2easy "Easy Money (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2easy1 "Easy Money (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2easy1p "Easy Money (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2easy2 "Easy Money (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2easy2p "Easy Money (Bellfruit) (set 3, Protocol) (Scorpion 2/3)"
+ C|sc2easyp "Easy Money (Bellfruit) (set 1, Protocol) (Scorpion 2/3)"
+ c|sc2eggs "Eggs On Legs Tour (Bellfruit) (Scorpion 2/3)"
+ C|sc2eggs "Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2eggs1 "Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot?) (Scorpion 2/3)"
+ C|sc2eggs1p "Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2eggsp "Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2flaca "Flash Cash (Bellfruit) (Scorpion 2/3)"
+ C|sc2flaca "Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)"
+ C|sc2flaca1 "Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3)"
+ C|sc2flaca1p "Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2flaca2 "Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3)"
+ C|sc2flaca2p "Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2flacap "Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)"
+ c|sc2foot "Football Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2foot "Football Club (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2foot1 "Football Club (Bellfruit) (set 2, UK, 100GBP Jackpot) (Scorpion 2/3)"
+ C|sc2foot1p "Football Club (Bellfruit) (set 2, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2foot2 "Football Club (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2foot2p "Football Club (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2footp "Football Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2gcclb "Golden Casino Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2gcclb "Golden Casino Club (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2gcclb1 "Golden Casino Club (Bellfruit) (set 2, UK, 100GBP Jackpot) (Scorpion 2/3)"
+ C|sc2gcclb1p "Golden Casino Club (Bellfruit) (set 2, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2gcclb2 "Golden Casino Club (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2gcclb2p "Golden Casino Club (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2gcclb3 "Golden Casino Club (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2gcclbp "Golden Casino Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2goldr "Gold Reserve (Mdm) (Scorpion 2/3)"
+ C|sc2goldr "Gold Reserve (Mdm) (v1.3) (Scorpion 2/3)"
+ C|sc2goldr1 "Gold Reserve (Mdm) (set 2) (Scorpion 2/3)"
+ C|sc2goldrp "Gold Reserve (Mdm) (v1.3 Protocol) (Scorpion 2/3)"
+ c|sc2groul "Golden Roulette (Bellfruit) (Scorpion 2/3)"
+ C|sc2groul "Golden Roulette (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2groulp "Golden Roulette (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ c|sc2gsclb "The Game Show Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2gsclb "The Game Show Club (Bellfruit) (set 1, UK, Arcade, p65)(Scorpion 2/3)"
+ C|sc2gsclb1 "The Game Show Club (Bellfruit) (set 2, UK, Arcade, 250GBP Jackpot, p65)(Scorpion 2/3)"
+ C|sc2gsclb1p "The Game Show Club (Bellfruit) (set 2, UK, Arcade, 250GBP Jackpot, p65, Protocol)(Scorpion 2/3)"
+ C|sc2gsclb2 "The Game Show Club (Bellfruit) (set 3, UK, Arcade)(Scorpion 2/3)"
+ C|sc2gsclb2p "The Game Show Club (Bellfruit) (set 3, UK, Arcade, Protocol)(Scorpion 2/3)"
+ C|sc2gsclb3 "The Game Show Club (Bellfruit) (set 4, UK, Arcade)(Scorpion 2/3)"
+ C|sc2gsclb3p "The Game Show Club (Bellfruit) (set 4, UK, Arcade, Protocol)(Scorpion 2/3)"
+ C|sc2gsclb4 "The Game Show Club (Bellfruit) (set 5, UK, Arcade)(Scorpion 2/3)"
+ C|sc2gsclb4p "The Game Show Club (Bellfruit) (set 5, UK, Arcade, Protocol)(Scorpion 2/3)"
+ C|sc2gsclb5 "The Game Show Club (Bellfruit) (set 6, UK)(Scorpion 2/3)"
+ C|sc2gsclb6 "The Game Show Club (Bellfruit) (set 7, UK)(Scorpion 2/3)"
+ C|sc2gsclb7p "The Game Show Club (Bellfruit) (set 8, UK, Protocol)(Scorpion 2/3)"
+ C|sc2gsclbp "The Game Show Club (Bellfruit) (set 1, UK, Arcade, p65, Protocol)(Scorpion 2/3)"
+ c|sc2gslam "Grandslam Club (UK, Game Card 95-750-843) (Scorpion 2/3)"
+ C|sc2gslam "Grandslam Club (UK, set 1, Game Card 95-750-843) (Scorpion 2/3)"
+ C|sc2gslam1 "Grandslam Club (UK, set 2) (Scorpion 2/3)"
+ C|sc2gslam1p "Grandslam Club (UK, set 2, Arcade, Protocol) (Scorpion 2/3)"
+ C|sc2gslam2 "Grandslam Club (UK, set 3) (Scorpion 2/3)"
+ C|sc2gslamp "Grandslam Club (UK, set 1, Protocol) (Scorpion 2/3)"
+ c|sc2heypr "Hey Presto (Bellfruit) (Scorpion 2/3)"
+ C|sc2heypr "Hey Presto (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2heyprp "Hey Presto (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2hifly "High Flyer (Mdm) (Scorpion 2/3)"
+ C|sc2hifly "High Flyer (Mdm) (v4.1) (Scorpion 2/3)"
+ C|sc2hifly2 "High Flyer (Mdm) (v3.1) (Scorpion 2/3)"
+ C|sc2hifly3 "High Flyer (Mdm) (v2.1) (Scorpion 2/3)"
+ C|sc2hifly4 "High Flyer (Mdm) (v?.?) (Scorpion 2/3)"
+ c|sc2hypr "Hyperactive (Bellfruit) (Scorpion 2/3)"
+ C|sc2hypr "Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2hypr1 "Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2hypr1p "Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2hyprp "Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2inst "Instant Jackpot (Bellfruit) (Scorpion 2/3)"
+ C|sc2inst "Instant Jackpot (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2inst1 "Instant Jackpot (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2inst1p "Instant Jackpot (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2inst2 "Instant Jackpot (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2inst2p "Instant Jackpot (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2inst3 "Instant Jackpot (Bellfruit) (set 4, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2inst3p "Instant Jackpot (Bellfruit) (set 4, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2inst4 "Instant Jackpot (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2inst4p "Instant Jackpot (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2inst5 "Instant Jackpot (Bellfruit) (set 6, UK) (Scorpion 2/3)"
+ C|sc2inst6 "Instant Jackpot (Bellfruit) (set 7, UK) (Scorpion 2/3)"
+ C|sc2instp "Instant Jackpot (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2kcclb "King Cash Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2kcclb "King Cash Club (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2kcclb1 "King Cash Club (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2kcclb1p "King Cash Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2kcclbp "King Cash Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2mam "Make A Million (Bellfruit) (Scorpion 2/3)"
+ C|sc2mam "Make A Million (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2mam1 "Make A Million (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2mam1p "Make A Million (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2mam2 "Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2mam2p "Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2mam3 "Make A Million (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2mam3p "Make A Million (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2mam4 "Make A Million (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2mam4p "Make A Million (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2mam5 "Make A Million (Bellfruit) (set 6, UK) (Scorpion 2/3)"
+ c|sc2mamcl "Make A Million Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2mamcl "Make A Million Club (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2mamcl1 "Make A Million Club (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2mamcl1p "Make A Million Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2mamcl2 "Make A Million Club (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2mamcl2p "Make A Million Club (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2mamcl3 "Make A Million Club (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2mamclp "Make A Million Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2mamp "Make A Million (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2motd "Match Of The Day (Bellfruit) (Scorpion 2/3)"
+ C|sc2motd "Match Of The Day (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2motd1 "Match Of The Day (Bellfruit) (set 2, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3)"
+ C|sc2motd10p "Match Of The Day (Bellfruit) (set 11, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2motd1p "Match Of The Day (Bellfruit) (set 2, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2motd2 "Match Of The Day (Bellfruit) (set 3, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2motd2p "Match Of The Day (Bellfruit) (set 3, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2motd3 "Match Of The Day (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2motd3p "Match Of The Day (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2motd4 "Match Of The Day (Bellfruit) (set 5, UK, Arcade) (Scorpion 2/3)"
+ C|sc2motd4p "Match Of The Day (Bellfruit) (set 5, UK, Arcade, Protocol) (Scorpion 2/3)"
+ C|sc2motd5 "Match Of The Day (Bellfruit) (set 6, UK, Single Site) (Scorpion 2/3)"
+ C|sc2motd5p "Match Of The Day (Bellfruit) (set 6, UK, Single Site, Protocol) (Scorpion 2/3)"
+ C|sc2motd6 "Match Of The Day (Bellfruit) (set 7, UK, 8GBP Jackpot) (Scorpion 2/3)"
+ C|sc2motd6p "Match Of The Day (Bellfruit) (set 7, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2motd7 "Match Of The Day (Bellfruit) (set 8, UK) (Scorpion 2/3)"
+ C|sc2motd7p "Match Of The Day (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3)"
+ C|sc2motd8 "Match Of The Day (Bellfruit) (set 9, UK) (Scorpion 2/3)"
+ C|sc2motd8p "Match Of The Day (Bellfruit) (set 9, UK, Protocol) (Scorpion 2/3)"
+ C|sc2motd9 "Match Of The Day (Bellfruit) (set 10, UK, 6GBP Jackpot) (Scorpion 2/3)"
+ C|sc2motdp "Match Of The Day (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2ofool "Only Fools & Horses (Bellfruit) (Scorpion 2/3)"
+ C|sc2ofool "Only Fools & Horses (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2ofool1 "Only Fools & Horses (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2ofool2 "Only Fools & Horses (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2ofool3 "Only Fools & Horses (Bellfruit) (set 4) (Scorpion 2/3)"
+ C|sc2ofool4 "Only Fools & Horses (Bellfruit) (set 5) (Scorpion 2/3)"
+ c|sc2olgld "Olympic Gold (Bellfruit) (Scorpion 2/3)"
+ C|sc2olgld "Olympic Gold (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2olgld1 "Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)"
+ C|sc2olgld1p "Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)"
+ C|sc2olgldp "Olympic Gold (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2pick "Pick Of The Bunch (Global) (Scorpion 2/3)"
+ C|sc2pick "Pick Of The Bunch (Global) (v2.3) (Scorpion 2/3)"
+ C|sc2pickc "Pick Of The Bunch (Club?) (Global) (v1.9) (Scorpion 2/3)"
+ C|sc2pickcp "Pick Of The Bunch (Club?) (Global) (v1.9 Protocol) (Scorpion 2/3)"
+ C|sc2pickp "Pick Of The Bunch (Global) (v2.3 Protocol) (Scorpion 2/3)"
+ c|sc2prem "Premier Club Manager (Bellfruit) (Scorpion 2/3)"
+ C|sc2prem "Premier Club Manager (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2prem1 "Premier Club Manager (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2prem1p "Premier Club Manager (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2prem2 "Premier Club Manager (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2premp "Premier Club Manager (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc2ptytm "Party Time (Bellfruit) (Scorpion 2/3)"
+ C|sc2ptytm "Party Time (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2ptytm1 "Party Time (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2ptytm1p "Party Time (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ c|sc2relgm "Reel Gems (Bellfruit) (Scorpion 2/3)"
+ C|sc2relgm "Reel Gems (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2relgm1p "Reel Gems (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2relgmp "Reel Gems (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2rock "How Big's Your Rock (Global) (Scorpion 2/3)"
+ C|sc2rock "How Big's Your Rock? (Global) (v1.5) (Scorpion 2/3)"
+ C|sc2rock1 "How Big's Your Rock? (Global) (v1.4) (Scorpion 2/3)"
+ C|sc2rock1p "How Big's Your Rock? (Global) (v1.4 Protocol) (Scorpion 2/3)"
+ C|sc2rocke "How Big's Your Rock? (Global) (v?.? Euro) (Scorpion 2/3)"
+ C|sc2rockp "How Big's Your Rock? (Global) (v1.5 Protocol) (Scorpion 2/3)"
+ c|sc2scc "Safe Cracker Club (Mdm) (Scorpion 2/3)"
+ C|sc2scc "Safe Cracker Club (Mdm) (v4.4) (Scorpion 2/3)"
+ c|sc2showt "Showtime Spectacular (Bellfruit) (Scorpion 2/3)"
+ C|sc2showt "Showtime Spectacular (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2showt1 "Showtime Spectacular (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2showt1p "Showtime Spectacular (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2showt2 "Showtime Spectacular (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2showt2p "Showtime Spectacular (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2showt3 "Showtime Spectacular (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2showt3p "Showtime Spectacular (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)"
+ C|sc2showt4 "Showtime Spectacular (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2showt4p "Showtime Spectacular (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2showtp "Showtime Spectacular (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)"
+ c|sc2sstar "Superstar (Bellfruit) (Scorpion 2/3)"
+ C|sc2sstar "Superstar (Bellfruit) (set 1, UK, 3rd Triennial) (Scorpion 2/3)"
+ C|sc2sstar1 "Superstar (Bellfruit) (set 2, UK, 2nd Triennial) (Scorpion 2/3)"
+ C|sc2sstar1p "Superstar (Bellfruit) (set 2, UK, 2nd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2sstar2 "Superstar (Bellfruit) (set 3, UK, 2nd Triennial) (Scorpion 2/3)"
+ C|sc2sstar2p "Superstar (Bellfruit) (set 3, UK, 2nd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2sstar3 "Superstar (Bellfruit) (set 4, UK, 2nd Triennial) (Scorpion 2/3)"
+ C|sc2sstar3p "Superstar (Bellfruit) (set 4, UK, 2nd Triennial, Protocol) (Scorpion 2/3)"
+ C|sc2sstar4 "Superstar (Bellfruit) (set 5, UK) (Scorpion 2/3)"
+ C|sc2sstarp "Superstar (Bellfruit) (set 1, UK, 3rd Triennial, Protocol) (Scorpion 2/3)"
+ c|sc2suprz "Surprise Surprize (Bellfruit) (Scorpion 2/3)"
+ C|sc2suprz "Surprise Surprize (Bellfruit) (set 1, UK) (Scorpion 2/3)"
+ C|sc2suprz1 "Surprise Surprize (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2suprz1p "Surprise Surprize (Bellfruit) (set 2, UK, Protocol)(Scorpion 2/3)"
+ C|sc2suprz2 "Surprise Surprize (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2suprz2p "Surprise Surprize (Bellfruit) (set 3, UK, Protocol)(Scorpion 2/3)"
+ C|sc2suprz3 "Surprise Surprize (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2suprzp "Surprise Surprize (Bellfruit) (set 1, UK, Protocol)(Scorpion 2/3)"
+ c|sc2topwk "Top Wack (Bellfruit) (Scorpion 2/3)"
+ C|sc2topwk "Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3)"
+ C|sc2topwkp "Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3)"
+ c|sc2town "Round The Town (Bellfruit) (Scorpion 2/3)"
+ C|sc2town "Round The Town (Bellfruit) (set 1) (Scorpion 2/3)"
+ C|sc2town1 "Round The Town (Bellfruit) (set 2) (Scorpion 2/3)"
+ C|sc2town1p "Round The Town (Bellfruit) (set 2, Protocol) (Scorpion 2/3)"
+ C|sc2town2 "Round The Town (Bellfruit) (set 3) (Scorpion 2/3)"
+ C|sc2town3 "Round The Town (Bellfruit) (set 4) (Scorpion 2/3)"
+ C|sc2town3p "Round The Town (Bellfruit) (set 4, Protocol) (Scorpion 2/3)"
+ C|sc2town4 "Round The Town (Bellfruit) (set 5) (Scorpion 2/3)"
+ C|sc2town5 "Round The Town (Bellfruit) (set 6) (Scorpion 2/3)"
+ C|sc2townp "Round The Town (Bellfruit) (set 1, Protocol) (Scorpion 2/3)"
+ c|sc2wembl "Road To Wembley (Bellfruit) (Scorpion 2/3)"
+ C|sc2wembl "Road To Wembley (Bellfruit) (set 1, UK, 10GBP Jackpot, 15RM motor) (Scorpion 2/3)"
+ C|sc2wembl1 "Road To Wembley (Bellfruit) (set 2, UK, 15RM motor) (Scorpion 2/3)"
+ C|sc2wembl10 "Road To Wembley (Bellfruit) (set 11, UK) (Scorpion 2/3)"
+ C|sc2wembl1p "Road To Wembley (Bellfruit) (set 2, UK, 15RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2wembl2 "Road To Wembley (Bellfruit) (set 3, UK) (Scorpion 2/3)"
+ C|sc2wembl2p "Road To Wembley (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)"
+ C|sc2wembl3 "Road To Wembley (Bellfruit) (set 4, UK) (Scorpion 2/3)"
+ C|sc2wembl4p "Road To Wembley (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)"
+ C|sc2wembl5a "Road To Wembley (Bellfruit) (set 6, UK, 16RM motor) (Scorpion 2/3)"
+ C|sc2wembl5ap "Road To Wembley (Bellfruit) (set 6, UK, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2wembl6ap "Road To Wembley (Bellfruit) (set 7, UK, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2wembl7a "Road To Wembley (Bellfruit) (set 8, UK, 8GBP Jackpot, 16RM motor) (Scorpion 2/3)"
+ C|sc2wembl7ap "Road To Wembley (Bellfruit) (set 8, UK, 8GBP Jackpot, 16RM motor, Protocol) (Scorpion 2/3)"
+ C|sc2wembl8 "Road To Wembley (Bellfruit) (set 9, UK) (Scorpion 2/3)"
+ C|sc2wembl9 "Road To Wembley (Bellfruit) (set 10, UK) (Scorpion 2/3)"
+ C|sc2wemblp "Road To Wembley (Bellfruit) (set 1, UK, 10GBP Jackpot, 15RM motor, Protocol) (Scorpion 2/3)"
+ c|sc2wwcl "Wild West Club (Bellfruit) (Scorpion 2/3)"
+ C|sc2wwcl "Wild West Club (Bellfruit) (set 1, UK, 250GBP Jackpot) (Scorpion 2/3)"
+ C|sc2wwcl1 "Wild West Club (Bellfruit) (set 2, UK) (Scorpion 2/3)"
+ C|sc2wwcl1p "Wild West Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)"
+ C|sc2wwclp "Wild West Club (Bellfruit) (set 1, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)"
+ c|sc4cblas "Cash Blast (Bellfruit) (Scorpion 4)"
+ C|sc4cblas "Cash Blast (Voodoo Games) (Scorpion 4) (set 1)"
+ C|sc4cblasa "Cash Blast (Voodoo Games) (Scorpion 4) (set 2)"
+ C|sc4cfcas "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 1)"
+ c|sc4cfcas "Crazy Fruits Casino (Bellfruit) (Scorpion 4)"
+ C|sc4cfcasa "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4cfcasb "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4cfcasc "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4cfcasd "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4cfcase "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4cfcasf "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4cfcasg "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4cfcash "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4cfcasi "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4cfcasj "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 11)"
+ C|sc4cfcask "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 12)"
+ C|sc4cfcasl "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 13)"
+ C|sc4cfcasm "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 14)"
+ C|sc4cfcasn "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 15)"
+ C|sc4cfcaso "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 16)"
+ C|sc4cfcasp "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 17)"
+ C|sc4cfcasq "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 18)"
+ C|sc4cfcasr "Crazy Fruits Casino (Bellfruit) (Scorpion 4) (set 19)"
+ c|sc4crzgn "Crazy Gang (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4crzgn "Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)"
+ c|sc4crzgnb "Crazy Gang (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4crzgnb "Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)"
+ c|sc4crzgng "Crazy Gang (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4crzgng "Crazy Gang (Bellfruit) (Scorpion 4) (set 8, Top Box)"
+ c|sc4crzgnj "Crazy Gang (Bellfruit) (Scorpion 4) (set 11)"
+ C|sc4crzgnj "Crazy Gang (Bellfruit) (Scorpion 4) (set 11, Top Box)"
+ C|sc4dhh "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)"
+ c|sc4dhh "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dhha "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)"
+ c|sc4dhha "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dhhb "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)"
+ c|sc4dhhb "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dhhc "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)"
+ c|sc4dhhc "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dhhd "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)"
+ c|sc4dhhd "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dhhe "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)"
+ c|sc4dhhe "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dnd "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)"
+ c|sc4dnd "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dnda "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)"
+ c|sc4dnda "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndb "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)"
+ c|sc4dndb "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndbb "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)"
+ c|sc4dndbb "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndbba "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)"
+ c|sc4dndbba "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndbbb "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)"
+ c|sc4dndbbb "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndbbc "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)"
+ c|sc4dndbbc "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndbbd "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)"
+ c|sc4dndbbd "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndbbe "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)"
+ c|sc4dndbbe "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndbbf "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)"
+ c|sc4dndbbf "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndbbg "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)"
+ c|sc4dndbbg "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndbbh "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)"
+ c|sc4dndbbh "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4dndbbi "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)"
+ c|sc4dndbbi "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4dndbc "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)"
+ c|sc4dndbc "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndbca "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)"
+ c|sc4dndbca "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndbd "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)"
+ c|sc4dndbd "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndbda "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)"
+ c|sc4dndbda "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndbdb "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)"
+ c|sc4dndbdb "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndbdc "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)"
+ c|sc4dndbdc "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndbdd "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)"
+ c|sc4dndbdd "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndbde "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)"
+ c|sc4dndbde "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndbe "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)"
+ c|sc4dndbe "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndbeb "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)"
+ c|sc4dndbeb "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndbec "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)"
+ c|sc4dndbec "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndbed "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)"
+ c|sc4dndbed "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndbee "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)"
+ c|sc4dndbee "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndbef "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)"
+ c|sc4dndbef "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndbeg "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)"
+ c|sc4dndbeg "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndbeh "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)"
+ c|sc4dndbeh "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndbei "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)"
+ c|sc4dndbei "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4dndbej "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)"
+ c|sc4dndbej "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4dndbek "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)"
+ c|sc4dndbek "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 11)"
+ C|sc4dndbel "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)"
+ c|sc4dndbel "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 12)"
+ C|sc4dndbem "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)"
+ c|sc4dndbem "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 13)"
+ C|sc4dndben "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)"
+ c|sc4dndben "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (set 14)"
+ C|sc4dndbr "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)"
+ c|sc4dndbr "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndbra "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)"
+ c|sc4dndbra "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndbrb "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)"
+ c|sc4dndbrb "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndbrc "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)"
+ c|sc4dndbrc "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndbrd "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)"
+ c|sc4dndbrd "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndbre "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)"
+ c|sc4dndbre "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndbrf "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)"
+ c|sc4dndbrf "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndbrg "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)"
+ c|sc4dndbrg "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndc "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)"
+ c|sc4dndc "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndcc "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)"
+ c|sc4dndcc "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndcca "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)"
+ c|sc4dndcca "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndccb "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)"
+ c|sc4dndccb "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndccc "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)"
+ c|sc4dndccc "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndccd "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)"
+ c|sc4dndccd "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndcce "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)"
+ c|sc4dndcce "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndccf "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)"
+ c|sc4dndccf "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndcl "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)"
+ c|sc4dndcl "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndcla "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)"
+ c|sc4dndcla "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndclb "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)"
+ c|sc4dndclb "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndclc "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)"
+ c|sc4dndclc "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndcld "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)"
+ c|sc4dndcld "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndcle "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)"
+ c|sc4dndcle "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndclf "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)"
+ c|sc4dndclf "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndclg "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)"
+ c|sc4dndclg "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndcs "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)"
+ c|sc4dndcs "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndcsa "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)"
+ c|sc4dndcsa "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndcsb "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)"
+ c|sc4dndcsb "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndcsc "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)"
+ c|sc4dndcsc "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndcsd "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)"
+ C|sc4dndcse "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)"
+ C|sc4dndcw "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)"
+ c|sc4dndcw "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndcwa "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)"
+ c|sc4dndcwa "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndcwb "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)"
+ c|sc4dndcwb "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndcwc "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)"
+ c|sc4dndcwc "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndd "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)"
+ c|sc4dndd "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dnddd "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)"
+ c|sc4dnddd "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dnddda "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)"
+ c|sc4dnddda "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndddb "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)"
+ c|sc4dndddb "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndddc "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)"
+ c|sc4dndddc "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndddd "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)"
+ c|sc4dndddd "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dnddde "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)"
+ c|sc4dnddde "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndddf "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)"
+ c|sc4dndddf "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndddg "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)"
+ c|sc4dndddg "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (set 8)"
+ c|sc4dnddf "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dnddf "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)"
+ c|sc4dnddfa "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dnddfa "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)"
+ c|sc4dnddfb "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dnddfb "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)"
+ c|sc4dnddfc "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dnddfc "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)"
+ c|sc4dnddfd "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dnddfd "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)"
+ c|sc4dnddfe "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dnddfe "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)"
+ C|sc4dnddw "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)"
+ c|sc4dnddw "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dnddwa "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)"
+ c|sc4dnddwa "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dnddwb "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)"
+ c|sc4dnddwb "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dnddwc "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)"
+ c|sc4dnddwc "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dnddwd "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)"
+ c|sc4dnddwd "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dnddwe "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)"
+ c|sc4dnddwe "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dnddwf "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)"
+ c|sc4dnddwf "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dnddwg "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)"
+ c|sc4dnddwg "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dnde "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)"
+ c|sc4dnde "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndf "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)"
+ c|sc4dndf "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndg "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)"
+ c|sc4dndg "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndh "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)"
+ c|sc4dndh "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4dndhf "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)"
+ c|sc4dndhf "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndhfa "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)"
+ c|sc4dndhfa "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndhfb "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)"
+ c|sc4dndhfb "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndhfc "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)"
+ c|sc4dndhfc "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndhfd "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)"
+ c|sc4dndhfd "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndhfe "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)"
+ c|sc4dndhfe "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndhff "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)"
+ c|sc4dndhff "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndhfg "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)"
+ c|sc4dndhfg "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndhfh "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)"
+ c|sc4dndhfh "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4dndhfi "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)"
+ c|sc4dndhfi "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4dndhfj "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)"
+ C|sc4dndhfk "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)"
+ C|sc4dndhfl "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)"
+ C|sc4dndi "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)"
+ c|sc4dndi "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4dndj "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)"
+ c|sc4dndj "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 11)"
+ C|sc4dndk "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)"
+ c|sc4dndk "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 12)"
+ C|sc4dndl "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)"
+ c|sc4dndl "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 13)"
+ C|sc4dndlp "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)"
+ c|sc4dndlp "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndlpa "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)"
+ c|sc4dndlpa "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndlpb "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)"
+ c|sc4dndlpb "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndlpc "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)"
+ c|sc4dndlpc "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndlpd "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)"
+ c|sc4dndlpd "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndlpe "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)"
+ c|sc4dndlpe "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndm "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)"
+ c|sc4dndm "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 14)"
+ C|sc4dndn "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)"
+ c|sc4dndn "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 15)"
+ C|sc4dndo "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)"
+ c|sc4dndo "Deal Or No Deal (Bellfruit) (Scorpion 4) (set 16)"
+ c|sc4dndpg "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndpg "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)"
+ c|sc4dndpga "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndpga "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)"
+ c|sc4dndpgb "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndpgb "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)"
+ c|sc4dndpgc "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndpgc "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)"
+ c|sc4dndpgd "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndpgd "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)"
+ c|sc4dndpge "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndpge "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)"
+ C|sc4dndra "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)"
+ c|sc4dndra "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndraa "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)"
+ c|sc4dndraa "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndrab "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)"
+ c|sc4dndrab "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndrac "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)"
+ c|sc4dndrac "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndrad "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)"
+ c|sc4dndrad "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndrae "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)"
+ c|sc4dndrae "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (set 6)"
+ c|sc4dndtp "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndtp "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)"
+ c|sc4dndtpa "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndtpa "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)"
+ c|sc4dndtpb "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndtpb "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)"
+ c|sc4dndtpc "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndtpc "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)"
+ c|sc4dndtpd "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndtpd "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)"
+ c|sc4dndtpe "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndtpe "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)"
+ c|sc4dndtpf "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndtpf "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)"
+ c|sc4dndtpg "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndtpg "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)"
+ c|sc4dndtph "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 9)"
+ C|sc4dndtph "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)"
+ c|sc4dndtpi "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 10)"
+ C|sc4dndtpi "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)"
+ c|sc4dndtpj "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 11)"
+ C|sc4dndtpj "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)"
+ c|sc4dndtpk "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 12)"
+ C|sc4dndtpk "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)"
+ c|sc4dndtpl "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 13)"
+ C|sc4dndtpl "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)"
+ c|sc4dndtpm "Deal Or No Deal The Power (Bellfruit) (Scorpion 4) (set 14)"
+ C|sc4dndtpm "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)"
+ c|sc4dndtr "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndtr "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)"
+ c|sc4dndtra "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndtra "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)"
+ c|sc4dndwb "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndwb "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)"
+ c|sc4dndwba "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndwba "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)"
+ c|sc4dndwbb "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndwbb "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)"
+ c|sc4dndwbc "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndwbc "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)"
+ c|sc4dndwbd "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndwbd "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)"
+ c|sc4dndwbe "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndwbe "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)"
+ c|sc4dndwbf "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 7)"
+ C|sc4dndwbf "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)"
+ c|sc4dndwbg "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (set 8)"
+ C|sc4dndwbg "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)"
+ c|sc4dndww "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndww "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)"
+ c|sc4dndwwa "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndwwa "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)"
+ c|sc4dndwwb "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndwwb "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)"
+ c|sc4dndwwc "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 4)"
+ C|sc4dndwwc "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)"
+ c|sc4dndwwd "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 5)"
+ C|sc4dndwwd "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)"
+ c|sc4dndwwe "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (set 6)"
+ C|sc4dndwwe "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)"
+ C|sc4dndys "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)"
+ c|sc4dndys "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (set 1)"
+ C|sc4dndysa "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)"
+ c|sc4dndysa "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (set 2)"
+ C|sc4dndysb "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)"
+ c|sc4dndysb "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (set 3)"
+ C|sc4dndysc "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)"
+ C|sc4ggame "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)"
+ c|sc4ggame "Golden Game (Mazooma) (Scorpion 4) (set 1)"
+ C|sc4ggame0 "Golden Game (Mazooma) (PR2056) (Scorpion 4) (set 2)"
+ c|sc4ggame0 "Golden Game (Mazooma) (Scorpion 4) (set 28)"
+ C|sc4ggame1 "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)"
+ c|sc4ggame1 "Golden Game (Mazooma) (Scorpion 4) (set 29)"
+ C|sc4ggame2 "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)"
+ c|sc4ggame2 "Golden Game (Mazooma) (Scorpion 4) (set 30)"
+ C|sc4ggame3 "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)"
+ c|sc4ggame3 "Golden Game (Mazooma) (Scorpion 4) (set 31)"
+ C|sc4ggame4 "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)"
+ c|sc4ggame4 "Golden Game (Mazooma) (Scorpion 4) (set 32)"
+ C|sc4ggame5 "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)"
+ c|sc4ggame5 "Golden Game (Mazooma) (Scorpion 4) (set 33)"
+ C|sc4ggame6 "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)"
+ c|sc4ggame6 "Golden Game (Mazooma) (Scorpion 4) (set 34)"
+ C|sc4ggame7 "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)"
+ c|sc4ggame7 "Golden Game (Mazooma) (Scorpion 4) (set 35)"
+ C|sc4ggame8 "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)"
+ c|sc4ggame8 "Golden Game (Mazooma) (Scorpion 4) (set 36)"
+ C|sc4ggame9 "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)"
+ c|sc4ggame9 "Golden Game (Mazooma) (Scorpion 4) (set 37)"
+ C|sc4ggamea "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)"
+ c|sc4ggamea "Golden Game (Mazooma) (Scorpion 4) (set 2)"
+ C|sc4ggameaa "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)"
+ c|sc4ggameaa "Golden Game (Mazooma) (Scorpion 4) (set 38)"
+ C|sc4ggameab "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)"
+ c|sc4ggameab "Golden Game (Mazooma) (Scorpion 4) (set 39)"
+ C|sc4ggameac "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)"
+ c|sc4ggameac "Golden Game (Mazooma) (Scorpion 4) (set 40)"
+ C|sc4ggamead "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)"
+ c|sc4ggamead "Golden Game (Mazooma) (Scorpion 4) (set 41)"
+ C|sc4ggameae "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)"
+ c|sc4ggameae "Golden Game (Mazooma) (Scorpion 4) (set 42)"
+ C|sc4ggameb "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)"
+ c|sc4ggameb "Golden Game (Mazooma) (Scorpion 4) (set 3)"
+ C|sc4ggamec "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)"
+ c|sc4ggamec "Golden Game (Mazooma) (Scorpion 4) (set 4)"
+ C|sc4ggamed "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)"
+ c|sc4ggamed "Golden Game (Mazooma) (Scorpion 4) (set 5)"
+ c|sc4ggamee "Golden Game (Mazooma) (Scorpion 4) (set 6)"
+ C|sc4ggamef "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)"
+ c|sc4ggamef "Golden Game (Mazooma) (Scorpion 4) (set 7)"
+ C|sc4ggameg "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)"
+ c|sc4ggameg "Golden Game (Mazooma) (Scorpion 4) (set 8)"
+ c|sc4ggameh "Golden Game (Mazooma) (Scorpion 4) (set 9)"
+ C|sc4ggamei "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)"
+ c|sc4ggamei "Golden Game (Mazooma) (Scorpion 4) (set 10)"
+ C|sc4ggamej "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)"
+ c|sc4ggamej "Golden Game (Mazooma) (Scorpion 4) (set 11)"
+ C|sc4ggamek "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)"
+ c|sc4ggamek "Golden Game (Mazooma) (Scorpion 4) (set 12)"
+ C|sc4ggamel "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)"
+ c|sc4ggamel "Golden Game (Mazooma) (Scorpion 4) (set 13)"
+ C|sc4ggamem "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)"
+ c|sc4ggamem "Golden Game (Mazooma) (Scorpion 4) (set 14)"
+ C|sc4ggamen "Golden Game (Mazooma) (PR2056) (Scorpion 4) (set 1)"
+ c|sc4ggamen "Golden Game (Mazooma) (Scorpion 4) (set 15)"
+ c|sc4ggameo "Golden Game (Mazooma) (Scorpion 4) (set 16)"
+ C|sc4ggamep "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)"
+ c|sc4ggamep "Golden Game (Mazooma) (Scorpion 4) (set 17)"
+ C|sc4ggameq "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)"
+ c|sc4ggameq "Golden Game (Mazooma) (Scorpion 4) (set 18)"
+ C|sc4ggamer "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)"
+ c|sc4ggamer "Golden Game (Mazooma) (Scorpion 4) (set 19)"
+ C|sc4ggames "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)"
+ c|sc4ggames "Golden Game (Mazooma) (Scorpion 4) (set 20)"
+ C|sc4ggamet "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)"
+ c|sc4ggamet "Golden Game (Mazooma) (Scorpion 4) (set 21)"
+ C|sc4ggameu "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)"
+ c|sc4ggameu "Golden Game (Mazooma) (Scorpion 4) (set 22)"
+ C|sc4ggamev "Golden Game (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)"
+ c|sc4ggamev "Golden Game (Mazooma) (Scorpion 4) (set 23)"
+ C|sc4ggamew "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)"
+ c|sc4ggamew "Golden Game (Mazooma) (Scorpion 4) (set 24)"
+ C|sc4ggamex "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)"
+ c|sc4ggamex "Golden Game (Mazooma) (Scorpion 4) (set 25)"
+ C|sc4ggamey "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)"
+ c|sc4ggamey "Golden Game (Mazooma) (Scorpion 4) (set 26)"
+ C|sc4ggamez "Golden Game (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)"
+ c|sc4ggamez "Golden Game (Mazooma) (Scorpion 4) (set 27)"
+ C|sc4ggdlx "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 1)"
+ c|sc4ggdlx "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 1)"
+ C|sc4ggdlxa "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 2)"
+ c|sc4ggdlxa "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 2)"
+ C|sc4ggdlxb "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 3)"
+ c|sc4ggdlxb "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 3)"
+ C|sc4ggdlxc "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 4)"
+ c|sc4ggdlxc "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 4)"
+ C|sc4ggdlxd "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 5)"
+ c|sc4ggdlxd "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 5)"
+ C|sc4ggdlxe "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 6)"
+ c|sc4ggdlxe "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 6)"
+ C|sc4ggdlxf "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 7)"
+ c|sc4ggdlxf "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 7)"
+ C|sc4ggdlxg "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (set 8)"
+ c|sc4ggdlxg "Golden Game Deluxe (Mazooma) (Scorpion 4) (set 8)"
+ C|sc4ggg "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)"
+ c|sc4ggg "Grand Golden Game (Mazooma) (Scorpion 4) (set 1)"
+ c|sc4ggga "Grand Golden Game (Mazooma) (Scorpion 4) (set 2)"
+ C|sc4gggb "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)"
+ c|sc4gggb "Grand Golden Game (Mazooma) (Scorpion 4) (set 3)"
+ C|sc4gggc "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)"
+ c|sc4gggc "Grand Golden Game (Mazooma) (Scorpion 4) (set 4)"
+ C|sc4gggd "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)"
+ c|sc4gggd "Grand Golden Game (Mazooma) (Scorpion 4) (set 5)"
+ C|sc4ggge "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)"
+ c|sc4ggge "Grand Golden Game (Mazooma) (Scorpion 4) (set 6)"
+ C|sc4gggf "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)"
+ c|sc4gggf "Grand Golden Game (Mazooma) (Scorpion 4) (set 7)"
+ C|sc4gggg "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)"
+ c|sc4gggg "Grand Golden Game (Mazooma) (Scorpion 4) (set 8)"
+ C|sc4gggh "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)"
+ c|sc4gggh "Grand Golden Game (Mazooma) (Scorpion 4) (set 9)"
+ C|sc4gggi "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)"
+ c|sc4gggi "Grand Golden Game (Mazooma) (Scorpion 4) (set 10)"
+ c|sc4gggj "Grand Golden Game (Mazooma) (Scorpion 4) (set 11)"
+ C|sc4gggk "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)"
+ c|sc4gggk "Grand Golden Game (Mazooma) (Scorpion 4) (set 12)"
+ C|sc4gggl "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)"
+ c|sc4gggl "Grand Golden Game (Mazooma) (Scorpion 4) (set 13)"
+ C|sc4gggm "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)"
+ c|sc4gggm "Grand Golden Game (Mazooma) (Scorpion 4) (set 14)"
+ C|sc4gggn "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)"
+ c|sc4gggn "Grand Golden Game (Mazooma) (Scorpion 4) (set 15)"
+ C|sc4gggo "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)"
+ c|sc4gggo "Grand Golden Game (Mazooma) (Scorpion 4) (set 16)"
+ C|sc4gggp "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)"
+ c|sc4gggp "Grand Golden Game (Mazooma) (Scorpion 4) (set 17)"
+ C|sc4gggq "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)"
+ c|sc4gggq "Grand Golden Game (Mazooma) (Scorpion 4) (set 18)"
+ C|sc4gggr "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)"
+ c|sc4gggr "Grand Golden Game (Mazooma) (Scorpion 4) (set 19)"
+ C|sc4gggs "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)"
+ c|sc4gggs "Grand Golden Game (Mazooma) (Scorpion 4) (set 20)"
+ C|sc4gggtb "Grand Golden Game (Mazooma) (PR2056, Top Box) (Scorpion 4) (GGGT, set 1)"
+ C|sc4gggtba "Grand Golden Game (Mazooma) (PR2056, Top Box) (Scorpion 4) (GGGT, set 2)"
+ C|sc4mowow "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)"
+ c|sc4mowow "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 1)"
+ C|sc4mowowa "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)"
+ c|sc4mowowa "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 2)"
+ C|sc4mowowb "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)"
+ c|sc4mowowb "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 3)"
+ C|sc4mowowc "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)"
+ c|sc4mowowc "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 4)"
+ c|sc4mowowd "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 5)"
+ c|sc4mowowe "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 6)"
+ c|sc4mowowf "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 7)"
+ c|sc4mowowg "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 8)"
+ c|sc4mowowh "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 9)"
+ c|sc4mowowi "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 10)"
+ c|sc4mowowj "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 4) (set 11)"
+ C|sc4qmodo "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)"
+ c|sc4qmodo "Quazzi Mo Dough (Qps) (Scorpion 4) (set 1)"
+ C|sc4qmodoa "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)"
+ c|sc4qmodoa "Quazzi Mo Dough (Qps) (Scorpion 4) (set 2)"
+ C|sc4qmodob "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)"
+ c|sc4qmodob "Quazzi Mo Dough (Qps) (Scorpion 4) (set 3)"
+ C|sc4qmodoc "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)"
+ c|sc4qmodoc "Quazzi Mo Dough (Qps) (Scorpion 4) (set 4)"
+ C|sc4qmodod "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)"
+ c|sc4qmodod "Quazzi Mo Dough (Qps) (Scorpion 4) (set 5)"
+ c|sc4srrmz "Shake Rattle Roll (Mazooma) (Scorpion 4) (set 1)"
+ C|sc4srrmz "Shake Rattle Roll (Mazooma) (Scorpion 4) (set 1, Top Box)"
+ C|sc4tbox "Gold X Triple Top Box (Mazooma) (Scorpion 4)"
+ c|sc4tbox "Top Box (Mazooma) (Scorpion 4)"
+ c|sc5potog "Pot Of Gold (Bellfruit) (Scorpion 5) (set 1)"
+ C|sc5potog "Pot Of Gold (QPS) (Scorpion 5) (set 1)"
+ c|sc5potoga "Pot Of Gold (Bellfruit) (Scorpion 5) (set 2)"
+ C|sc5potoga "Pot Of Gold (QPS) (Scorpion 5) (set 2)"
+ c|sc5potogb "Pot Of Gold (Bellfruit) (Scorpion 5) (set 3)"
+ C|sc5potogb "Pot Of Gold (QPS) (Scorpion 5) (set 3)"
+ c|sc5potogc "Pot Of Gold (Bellfruit) (Scorpion 5) (set 4)"
+ C|sc5potogc "Pot Of Gold (QPS) (Scorpion 5) (set 4)"
+ c|sc5potogd "Pot Of Gold (Bellfruit) (Scorpion 5) (set 5)"
+ C|sc5potogd "Pot Of Gold (QPS) (Scorpion 5) (set 5)"
+ c|sc5potoge "Pot Of Gold (Bellfruit) (Scorpion 5) (set 6)"
+ C|sc5potoge "Pot Of Gold (QPS) (Scorpion 5) (set 6)"
+ c|sc5potogf "Pot Of Gold (Bellfruit) (Scorpion 5) (set 7)"
+ C|sc5potogf "Pot Of Gold (QPS) (Scorpion 5) (set 7)"
+ c|sc5potogg "Pot Of Gold (Bellfruit) (Scorpion 5) (set 8)"
+ C|sc5potogg "Pot Of Gold (QPS) (Scorpion 5) (set 8)"
+ C|schamp "Sonic Championship (USA)"
+ c|schamp "Sonic Championship"
+ c|sf2cej "Street Fighter II': Champion Edition (Japan 920513)"
+ C|sf2ceja "Street Fighter II': Champion Edition (Japan 920322)"
+ C|sf2cejb "Street Fighter II': Champion Edition (Japan 920513)"
+ C|sf2cejc "Street Fighter II': Champion Edition (Japan 920803)"
+ C|sf2ug "Street Fighter II: The World Warrior (USA 910522, Rev. G)"
+ c|sf2ui "Street Fighter II: The World Warrior (USA 910522)"
+ C|sf2ui "Street Fighter II: The World Warrior (USA 910522, Rev. I)"
+ C|sfight "Sonic the Fighters (Japan)"
+ c|sfight "Sonic The Fighters"
+ c|sfight2 "Street Fighter 2"
+ C|sfight2 "Street Fighter II"
+ c|sfight2a "Street Fighter 2 (rev.1)"
+ C|sfight2a "Street Fighter II (rev.1)"
+ c|sfight2b "Street Fighter 2 (rev.2)"
+ C|sfight2b "Street Fighter II (rev.2)"
+ C|slqz2 "Mahjong Shuang Long Qiang Zhu 2 (VS203J)"
+ c|slqz2 "Mahjong Shuang Long Qiang Zhu 2"
+ c|spacefb "Space Firebird (Nintendo, set 1)"
+ C|spacefb "Space Firebird (rev. 04-u)"
+ C|spacefba "Space Firebird (rev. 02-a)"
+ c|spacefbe "Space Firebird (Nintendo, set 3)"
+ C|spacefbe "Space Firebird (rev. 03-e set 1)"
+ C|spacefbe2 "Space Firebird (rev. 03-e set 2)"
+ c|sshooter "Sharpshooter (Rev 1.7)"
+ C|sshooter "Sharpshooter (Rev 1.9)"
+ c|starforce "Star Force (encrypted)"
+ C|starforce "Star Force (encrypted, set 1)"
+ C|svg "S.V.G. - Spectral vs Generation (M68k label V200) (ARM label V200, ROM 10/11/05 S.V.G V201)"
+ c|svg "S.V.G. - Spectral vs Generation (ver. 200)"
+ C|svgpcb "S.V.G. - Spectral vs Generation (M68k label V100JP) (ARM label V100JP ROM 05/12/05 S.V.G V100) (JAMMA PCB)"
+ C|theglad "The Gladiator - Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 01/16/03 SHEN JIAN)"
+ c|theglad "The Gladiator (ver. 100)"
+ C|theglada "The Gladiator - Road of the Sword / Shen Jian (M68k label V101) (ARM label V107, ROM 06/06/03 SHEN JIAN V107)"
+ c|theglada "The Gladiator (ver. 101)"
+ C|thegladpcb "The Gladiator - Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 02/25/03 SHEN JIAN) (JAMMA PCB)"
+ C|tiptop "Tip Top (3 board stack)"
+ c|tiptop "Tip Top"
+ C|toukon4 "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)"
+ c|toukon4 "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition"
+ C|tsamurai "Samurai Nihon-Ichi (set 1)"
+ c|tsamurai "Samurai Nihon-ichi (set 1)"
+ C|tsamurai2 "Samurai Nihon-Ichi (set 2)"
+ c|tsamurai2 "Samurai Nihon-ichi (set 2)"
+ C|tsamuraih "Samurai Nihon-Ichi (bootleg, harder)"
+ c|tsamuraih "Samurai Nihon-ichi (bootleg, harder)"
+ C|unkhorse "unknown Japanese horse gambling game"
+ c|unkmeyco "unknown Meyco game"
+ C|vhunt2d "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)"
+ c|vhunt2d "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929 Phoenix Edition) (bootleg)"
+ C|von "Cyber Troopers Virtual-On (USA, Revision B)"
+ c|von "Virtual On Cyber Troopers (US, Revision B)"
+ C|vonj "Cyber Troopers Virtual-On (Japan, Revision B)"
+ c|vonj "Virtual On Cyber Troopers (Japan, Revision B)"
+ c|warzarda "Warzard (Japan 961023)"
+ C|warzardr1 "Warzard (Japan 961023)"
+ C|wfortune "Wheel Of Fortune (set 1)"
+ c|wfortune "Wheel Of Fortune"
+ c|wfortunea "Wheel Of Fortune (alternate)"
+ C|wfortunea "Wheel Of Fortune (set 2)"
+ c|winrun "Winning Run Suzuka Grand Prix (Japan)"
+ C|winrun "Winning Run"
+ C|wldarrow "Wild Arrow (color, Standard V4.8)"
+ c|wldarrow "Wild Arrow (Standard V4.8)"
+ C|wldkicks "World Kicks (WK1 Ver. A)"
+ c|wldkicks "World Kicks"
+ c|wldwitch "Wild Witch (Export, 6T/12T ver 1.74A)"
+ C|wldwitch "Wild Witch (Export, 6T/12T ver 1.84A)"
+ C|wldwitcha "Wild Witch (Export, 6T/12T ver 1.57-SP)"
+ C|wldwitchb "Wild Witch (Export, 6T/12T ver 1.57-TE)"
+ C|wldwitchc "Wild Witch (Export, 6T/12T ver 1.62A)"
+ C|wldwitchd "Wild Witch (Export, 6T/12T ver 1.62B)"
+ C|wldwitche "Wild Witch (Export, 6T/12T ver 1.62A-F)"
+ C|wldwitchf "Wild Witch (Export, 6T/12T ver 1.62A alt)"
+ C|wldwitchg "Wild Witch (Export, 6T/12T ver 1.62B alt)"
+ C|wldwitchh "Wild Witch (Export, 6T/12T ver 1.65A)"
+ C|wldwitchi "Wild Witch (Export, 6T/12T ver 1.65A-S)"
+ C|wldwitchj "Wild Witch (Export, 6T/12T ver 1.65A-S alt)"
+ C|wldwitchk "Wild Witch (Export, 6T/12T ver 1.65A-N)"
+ C|wldwitchl "Wild Witch (Export, 6T/12T ver 1.70A beta)"
+ C|wldwitchm "Wild Witch (Export, 6T/12T ver 1.70A)"
+ C|wldwitchn "Wild Witch (Export, 6T/12T ver 1.70A alt)"
+ C|wldwitcho "Wild Witch (Export, 6T/12T ver 1.74A-SP-BELG)"
+ C|wldwitchp "Wild Witch (Export, 6T/12T ver 1.74A)"
+ C|wldwitchq "Wild Witch (Export, 6T/12T ver 1.74A alt)"
+ C|wldwitchr "Wild Witch (Export, 6B/12B ver 1.75A-E English)"
+ C|wldwitchs "Wild Witch (Export, 6T/12T ver 1.76A)"
+ C|wldwitcht "Wild Witch (Export, 6T/12T ver 1.77A)"
+ C|wldwitchu "Wild Witch (Export, 6T/12T ver 1.79A)"
+ C|wldwitchv "Wild Witch (Export, 6T/12T ver 1.83A)"
+ C|wyvernwg "Wyvern Wings (set 1)"
+ c|wyvernwg "Wyvern Wings"
+ C|wyvernwga "Wyvern Wings (set 2)"
+ c|yumefuda "(Medal) Yumefuda [BET]"
+ C|yumefuda "Yumefuda [BET]"
diff --git a/docs/release/src/osd/winui/help/html/mameui_credits.htm b/docs/release/src/osd/winui/help/html/mameui_credits.htm
new file mode 100644
index 00000000000..3dbe2393f22
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_credits.htm
@@ -0,0 +1,141 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Credits</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+ div.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<h1>MameUI Credits &amp; Resources</h1>
+<h2><b>Credits</b></h2>
+<p class="MsoNormal">The current MameUI DEV team:</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Chris Kirmse</b></p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Mike Haaland</b></p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>René Single</b></p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a href="http://mameui.info/">John L. Hardy IV</a></b></p>
+<p class="MsoNormal" style="margin-left:.75in">&nbsp;</p>
+<p class="MsoNormal">Special thanks to Michael Soderstrom for project
+co-ordination and source maintenance from 1997-2001.</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">Additional appreciated code contributions by : Jeff
+Miller, Dan Miller, Andrew Kirmse, Mohammad Rezaei, <font face="Arial" size="2">
+René Single, </font>John Zissopoulos, Nathan
+Woods, Robert Schlabbach, Sword, Emuman, BUT, <font face="Arial" size="2">'Mamesick', </font>
+Sauro Puccini,<b> </b><font face="Arial" size="2">Tor
+Arne Vestbø, </font>R. J. Sheppard, Visk, K&amp;K,
+Patrick Jones, and ‘Ren Höek’.</p>
+<p class="MsoNormal">&nbsp;</p>
+<h2><b>Resources</b></h2>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a target="_blank" href="http://mameui.info/">The
+MameUI Homepage</a> </b>:<b> </b>Home to the MameUI binary/source,
+icons, screenshots, testing, work in progress updates, bug
+reporting/tracking, message board, and benchmarking.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a target="_blank" href="http://www.mameworld.info/ubbthreads/postlist.php?Cat=&amp;Board=mameui">The
+MameUI
+Message Board</a> </b>:<b> </b>Forum for discussion of MameUI related issues.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a target="_blank" href="http://mameui.info//MameUI_Bugs.xls">MameUI
+Defect Tracking and Bug Reports</a> </b>: Excel spreadsheet which displays
+information about current MameUI feature requests and issues.&nbsp; Check before
+reporting potential bugs.</p>
+<p class="MsoNormal"><b>&nbsp;</b></p>
+<div class="MsoNormal" align="center" style="text-align:center">
+ <span style="font-family: Courier New">
+ <hr size="2" width="100%" align="center"></span>
+</div>
+<p class="MsoNormal"><b>&nbsp;</b></p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b><a href="http://www.mamedev.org">MameDEV.org</a> </b>:<b> </b>Home of
+baseline MAME.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>
+<a target="_blank" href="http://www.mametesters.org">MameTesters.org</a> </b>:<b> </b>
+Reporting and tracking baseline Mamebugs.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">&nbsp;</p>
+<p class="MsoNormal" style="margin-left: 0" align="left">MameUI ©
+2007 C. Kirmse, M. Haaland, &amp; the MameUI team</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">&nbsp;</p>
+<p class="MsoNormal" style="margin-left: 0" align="left">this help
+file authored by john iv</p>
+
+<p class="MsoNormal" style="margin-left: 0" align="left">
+<font size="1">
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y-%m-%d %I:%M %p %Z" startspan -->2008-10-28 06:48 PM -0700<!--webbot bot="Timestamp" endspan i-checksum="38520" --></font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_download.htm b/docs/release/src/osd/winui/help/html/mameui_download.htm
new file mode 100644
index 00000000000..0063701ef36
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_download.htm
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Download Locations</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>Download Locations</h2>
+<p class="MsoNormal">The official site for MameUI downloads:</p>
+<p class="MsoNormal">
+<a target="_blank" href="http://mameui.info/">
+<span style="font-weight: 700; color: #0000FF; text-decoration: underline">The
+MameUI Homepage</span></a></p>
+
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal"><font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-12 02:03 PM -0800<!--webbot bot="Timestamp" endspan i-checksum="37667" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_filemenu.htm b/docs/release/src/osd/winui/help/html/mameui_filemenu.htm
new file mode 100644
index 00000000000..12f2915538c
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_filemenu.htm
@@ -0,0 +1,625 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 12">
+<meta name=Originator content="Microsoft Word 12">
+<link rel=File-List href="mameui_filemenu_files/filelist.xml">
+<link rel=Edit-Time-Data href="mameui_filemenu_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>MameUI File Menu</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>john4</o:Author>
+ <o:LastAuthor>john4</o:LastAuthor>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>2</o:TotalTime>
+ <o:Created>2008-04-11T22:37:00Z</o:Created>
+ <o:LastSaved>2008-04-11T22:39:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>438</o:Words>
+ <o:Characters>2503</o:Characters>
+ <o:Lines>20</o:Lines>
+ <o:Paragraphs>5</o:Paragraphs>
+ <o:CharactersWithSpaces>2936</o:CharactersWithSpaces>
+ <o:Version>12.00</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]-->
+<link rel=themeData href="mameui_filemenu_files/themedata.thmx">
+<link rel=colorSchemeMapping href="mameui_filemenu_files/colorschememapping.xml">
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackMoves>false</w:TrackMoves>
+ <w:TrackFormatting/>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:DoNotPromoteQF/>
+ <w:LidThemeOther>EN-US</w:LidThemeOther>
+ <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ <w:Compatibility>
+ <w:BreakWrappedTables/>
+ <w:SnapToGridInCell/>
+ <w:WrapTextWithPunct/>
+ <w:UseAsianBreakRules/>
+ <w:DontGrowAutofit/>
+ <w:SplitPgBreakAndParaMark/>
+ <w:DontVertAlignCellWithSp/>
+ <w:DontBreakConstrainedForcedTables/>
+ <w:DontVertAlignInTxbx/>
+ <w:Word11KerningPairs/>
+ <w:CachedColBalance/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="&#45;-"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
+ DefSemiHidden="true" DefQFormat="false" DefPriority="99"
+ LatentStyleCount="267">
+ <w:LsdException Locked="false" Priority="0" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 2"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
+ <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
+ <w:LsdException Locked="false" Priority="10" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Title"/>
+ <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
+ <w:LsdException Locked="false" Priority="11" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
+ <w:LsdException Locked="false" Priority="22" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
+ <w:LsdException Locked="false" Priority="20" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
+ <w:LsdException Locked="false" Priority="59" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Table Grid"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
+ <w:LsdException Locked="false" Priority="1" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 1"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
+ <w:LsdException Locked="false" Priority="34" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
+ <w:LsdException Locked="false" Priority="29" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
+ <w:LsdException Locked="false" Priority="30" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 1"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 2"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 2"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 3"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 3"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 4"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 4"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 5"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 5"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 6"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 6"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="19" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
+ <w:LsdException Locked="false" Priority="21" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
+ <w:LsdException Locked="false" Priority="31" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
+ <w:LsdException Locked="false" Priority="32" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
+ <w:LsdException Locked="false" Priority="33" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
+ <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
+ <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:variable;
+ mso-font-signature:0 0 0 0 0 0;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:-520082689 -1073717157 41 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+h1
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 1 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:1;
+ font-size:16.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;}
+h2
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 2 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:2;
+ font-size:14.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;
+ font-style:italic;}
+p
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:black;}
+p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-link:"Balloon Text Char";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 1";
+ mso-ansi-font-size:14.0pt;
+ mso-bidi-font-size:14.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#365F91;
+ mso-themecolor:accent1;
+ mso-themeshade:191;
+ font-weight:bold;}
+span.Heading2Char
+ {mso-style-name:"Heading 2 Char";
+ mso-style-noshow:yes;
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 2";
+ mso-ansi-font-size:13.0pt;
+ mso-bidi-font-size:13.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#4F81BD;
+ mso-themecolor:accent1;
+ font-weight:bold;}
+span.BalloonTextChar
+ {mso-style-name:"Balloon Text Char";
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Balloon Text";
+ mso-ansi-font-size:8.0pt;
+ mso-bidi-font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-ascii-font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ mso-hansi-font-family:Tahoma;
+ mso-bidi-font-family:Tahoma;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ mso-default-props:yes;
+ font-size:10.0pt;
+ mso-ansi-font-size:10.0pt;
+ mso-bidi-font-size:10.0pt;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.0in 1.0in 1.0in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman","serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white background="../images/bkground.gif" lang=EN-US link=blue
+vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h2><span style='mso-fareast-font-family:"Times New Roman"'>File Menu<o:p></o:p></span></h2>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1035" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Play Game</b> : Selecting this option from the file menu will launch
+the highlighted game.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1034" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Play and Record Input</b> : Selecting this option from the file menu
+will allow for the creation of an *.inp file which will allow MameUI to record
+keystrokes in the game being played for playback later.&nbsp; Similar to a VCR.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1033" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Playback Input</b> : Selecting this option from the file menu will
+allow the loading and playing of a previously recorded *.inp file.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1032" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Play and Record Wave Output</b> : Selecting this option from the file
+menu will allow the recording of a sound file while playing a game.&nbsp; The
+*.wav file is placed in the \inp directory by default.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1031" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Play and Record MNG Output</b> : Selecting this option from the file
+menu will allow the recording of a MNG video file while playing a game.&nbsp;
+The *.mng file is placed in the \inp directory by default.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1030" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Load Savestate</b> : Selecting this option from the file menu will
+allow the loading and playing of a previously saved machine state, the state
+being loaded must match the highlighted game.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1029" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Select Random Game</b> : Selecting this option from the file menu
+will cause MameUI to randomly highlight a game in the game list shortcut key is
+<b>Ctrl-R</b>.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1028" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><a href="mameui_properties.htm">Properties</a></b> : Selecting this
+option from the file menu will display the highlighted game’s individual
+settings, these settings over-ride those made to all games in the Options •
+Default Options menu item.&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1027" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Audit All Games</b> : Selecting this option from the file menu will
+initiate an exhaustive check on the available games, verifying them to MameUI’s
+expected results.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1026" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Exit</b> : Selecting this option from the file menu will exit the
+program.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-10 01:41 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37617" --><span
+style='font-size:7.5pt'>/ john iv</span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/docs/release/src/osd/winui/help/html/mameui_help.htm b/docs/release/src/osd/winui/help/html/mameui_help.htm
new file mode 100644
index 00000000000..303f409014e
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_help.htm
@@ -0,0 +1,86 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Help Menu</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>Help Menu</h2>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Help Topics</b> :&nbsp; Selecting this option from the help menu
+will launch the MameUI help file.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Troubleshooting</b> :&nbsp; Selecting this option from the help menu
+will display the troubleshooting topic in the help file.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>New Game Changes</b> :&nbsp; Selecting this option from the help menu
+will display added, removed, changed games.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style:normal; font-variant:normal; font-weight:700">Mame </span>
+<span style="font-weight: 700">Whatsnew.txt</span> :&nbsp; Selecting this option from the help menu
+will display the baseline Mame whatsnew.txt file which contains information
+about source changes, games added, driver improvements, etc.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>About </b>: Selecting this option from the help menu will
+display information about the version of
+MameUI and its contributors.</p>
+
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">&nbsp;</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-10 01:41 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37617" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_installprocedures.htm b/docs/release/src/osd/winui/help/html/mameui_installprocedures.htm
new file mode 100644
index 00000000000..9fd78ce0494
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_installprocedures.htm
@@ -0,0 +1,176 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Installation Procedures</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>Install Procedures</h2>
+
+<h3><font face="Arial">To Install MameUI Manually</font></h3>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style: normal; font-variant: normal; font-weight: normal; color:windowtext">
+Download the latest MameUI binary distribution [not the source] self-extracting archive
+available at
+</span>
+<span style="font-style: normal; font-variant: normal; font-weight: 700; color:windowtext">
+<a target="_blank" href="http://mameui.info/">MameUI</a></span><span style="font-style: normal; font-variant: normal; font-weight: normal; color:windowtext">.</span></p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Double-click the self-extracting archive .exe, and point the
+directory install location to the root of the c:\ drive, or just type in the box
+&quot;c:\&quot; [no quotes].&nbsp; This will create
+a c:\MameUI directory with the program and all its support files within it.</p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>MameUI requires ROMs to play games; if attempting to play a game
+the ROMs of which are not present it will fail and list the files missing.&nbsp; Download the freely available public domain ROMs
+[Robby Roto, Gridlee, Alien Arena, and others] from <b>
+<a style="color: blue; text-decoration: underline; text-underline: single" target="_blank" href="http://www.mamedev.org/roms/">Mamedev.org</a></b>.&nbsp; Place these files
+<i><b>still zipped</b></i>, into the
+\MameUI\ROMs folder.&nbsp; <b>Again, do not unzip them</b>.</p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Double-click the MameUI icon to launch the program.&nbsp; MameUI
+will go through its initial diagnostics and search for available games in the
+c:\MameUI\ROMs directory, and then display the GUI.&nbsp; If the games do not
+appear on the available game list, hit F5 to force a game search or do a File
+menu / Audit.</p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>To activate mouse control or attached gamepads to use within
+games, it is necessary to toggle those options on in the Options • Default
+Options • Controllers tab.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Once a game has been selected and double-clicked, MameUI will
+produce two information screens and then it will run the game.&nbsp; Since
+MameUI is
+emulating the original hardware, the software thinks it’s still in an arcade and
+is starting up for the first time in the morning.&nbsp; Initial diagnostic screens
+are run through, as well as possibly some accounting information presented to
+the arcade owner.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>The game should now be running its demo/attract mode.&nbsp; Insert a
+coin with the [<b>5</b>] key on the keyboard, the mappings for coin inserts are:
+player 1 [<b>5</b>], player 2 [<b>6</b>], player 3 [<b>7</b>], player 4 [<b>8</b>].&nbsp;
+Now that a coin has been inserted, start the game with the [<b>1</b>] key on the
+keyboard.&nbsp; Game start mappings are player 1 [<b>1</b>], player 2 [<b>2</b>],
+player 3 [<b>3</b>], player 4 [<b>4</b>].</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>MameUI’s default control scheme is to use the inverted T arrow
+keys on the keyboard for directional controls, and the left [<b>CTRL</b>] key as the
+primary action button.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>While in a game within MameUI, the internal configuration menu
+system can be activated by pressing the [<b>TAB</b>] key.&nbsp; This will bring up
+the control options.&nbsp; These options allow remapping MameUI controls to whatever
+keyboard keys or gamepad buttons are desired.&nbsp; The Input (general) area controls the global settings, and
+the Input (this game) are the controls for the game selected.&nbsp; To change the
+mapping, select the control to change by arrowing down to it, hit the [<b>ENTER</b>]
+key and then the new desired control.&nbsp; Hit the [<b>ESC</b>] key to exit the [<b>TAB</b>]
+menu back to the game. Note: If there are multiple mouse devices attached to the
+system they can be individually configured by selecting their control in the [<strong>TAB</strong>]
+menu and moving the mouse or trackball left or right, up or down to map it.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Other keys of interest while playing a game are : </p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>TAB</b>] key to bring up the
+internal menu system.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>~ TILDE</b>] the onscreen
+display.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>Shift-p</b>] advance paused
+screen one frame at a time<br>
+[<b>p</b>] for the pause button.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F3</b>] resets the game.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F4</b>] displays the tile
+manager and the game’s
+color palette.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>Shift-F7</b>] save current
+game state [a-z, 1-0] (See save state folder view for supported games)</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F7</b>] load game state [a-z,
+1-0] (See save state folder view on left for supported games)</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F9</b>] changes the frameskip
+on the fly.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F10</b>] toggles throttling.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F11</b>] toggles the speed
+display
+display.<br>
+[<b>Shift-F12</b>] toggles MNG recording, once starts, second finishes.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F12</b>] takes a *.png
+snapshot of the game and places it in the \MameUI\snap directory.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>ESC</b>] exits from the game
+back to the MameUI GUI.</p>
+
+<p class="MsoNormal" style="margin-left:.75in">[<b>Left-Alt + Enter</b>] toggle
+from fullscreen mode to windowed mode.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<strong>Insert</strong>] fast
+forwards with full unthrottle and highest frameskip, convenient for speeding
+through slow start-up of certain games.</p>
+
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+&nbsp;</p>
+
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-12 02:02 PM -0800<!--webbot bot="Timestamp" endspan i-checksum="37539" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_optionsmenu.htm b/docs/release/src/osd/winui/help/html/mameui_optionsmenu.htm
new file mode 100644
index 00000000000..7763fd64d71
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_optionsmenu.htm
@@ -0,0 +1,639 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 12">
+<meta name=Originator content="Microsoft Word 12">
+<link rel=File-List href="mameui_optionsmenu_files/filelist.xml">
+<link rel=Edit-Time-Data href="mameui_optionsmenu_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>MameUI Options Menu</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>john4</o:Author>
+ <o:LastAuthor>john4</o:LastAuthor>
+ <o:Revision>3</o:Revision>
+ <o:TotalTime>1</o:TotalTime>
+ <o:Created>2008-04-11T22:39:00Z</o:Created>
+ <o:LastSaved>2008-04-11T22:40:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>592</o:Words>
+ <o:Characters>3375</o:Characters>
+ <o:Lines>28</o:Lines>
+ <o:Paragraphs>7</o:Paragraphs>
+ <o:CharactersWithSpaces>3960</o:CharactersWithSpaces>
+ <o:Version>12.00</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]-->
+<link rel=themeData href="mameui_optionsmenu_files/themedata.thmx">
+<link rel=colorSchemeMapping
+href="mameui_optionsmenu_files/colorschememapping.xml">
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackMoves>false</w:TrackMoves>
+ <w:TrackFormatting/>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:DoNotPromoteQF/>
+ <w:LidThemeOther>EN-US</w:LidThemeOther>
+ <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ <w:Compatibility>
+ <w:BreakWrappedTables/>
+ <w:SnapToGridInCell/>
+ <w:WrapTextWithPunct/>
+ <w:UseAsianBreakRules/>
+ <w:DontGrowAutofit/>
+ <w:SplitPgBreakAndParaMark/>
+ <w:DontVertAlignCellWithSp/>
+ <w:DontBreakConstrainedForcedTables/>
+ <w:DontVertAlignInTxbx/>
+ <w:Word11KerningPairs/>
+ <w:CachedColBalance/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="&#45;-"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
+ DefSemiHidden="true" DefQFormat="false" DefPriority="99"
+ LatentStyleCount="267">
+ <w:LsdException Locked="false" Priority="0" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 2"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
+ <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
+ <w:LsdException Locked="false" Priority="10" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Title"/>
+ <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
+ <w:LsdException Locked="false" Priority="11" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
+ <w:LsdException Locked="false" Priority="22" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
+ <w:LsdException Locked="false" Priority="20" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
+ <w:LsdException Locked="false" Priority="59" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Table Grid"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
+ <w:LsdException Locked="false" Priority="1" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 1"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
+ <w:LsdException Locked="false" Priority="34" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
+ <w:LsdException Locked="false" Priority="29" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
+ <w:LsdException Locked="false" Priority="30" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 1"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 2"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 2"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 3"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 3"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 4"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 4"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 5"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 5"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 6"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 6"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="19" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
+ <w:LsdException Locked="false" Priority="21" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
+ <w:LsdException Locked="false" Priority="31" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
+ <w:LsdException Locked="false" Priority="32" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
+ <w:LsdException Locked="false" Priority="33" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
+ <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
+ <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:variable;
+ mso-font-signature:0 0 0 0 0 0;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:-520082689 -1073717157 41 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+h1
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 1 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:1;
+ font-size:16.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;}
+h2
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 2 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:2;
+ font-size:14.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;
+ font-style:italic;}
+p
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:black;}
+p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-link:"Balloon Text Char";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 1";
+ mso-ansi-font-size:14.0pt;
+ mso-bidi-font-size:14.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#365F91;
+ mso-themecolor:accent1;
+ mso-themeshade:191;
+ font-weight:bold;}
+span.Heading2Char
+ {mso-style-name:"Heading 2 Char";
+ mso-style-noshow:yes;
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 2";
+ mso-ansi-font-size:13.0pt;
+ mso-bidi-font-size:13.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#4F81BD;
+ mso-themecolor:accent1;
+ font-weight:bold;}
+span.BalloonTextChar
+ {mso-style-name:"Balloon Text Char";
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Balloon Text";
+ mso-ansi-font-size:8.0pt;
+ mso-bidi-font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-ascii-font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ mso-hansi-font-family:Tahoma;
+ mso-bidi-font-family:Tahoma;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ mso-default-props:yes;
+ font-size:10.0pt;
+ mso-ansi-font-size:10.0pt;
+ mso-bidi-font-size:10.0pt;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.0in 1.0in 1.0in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman","serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white background="../images/bkground.gif" lang=EN-US link=blue
+vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h2><span style='mso-fareast-font-family:"Times New Roman"'>Options Menu<o:p></o:p></span></h2>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1033" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Game List Font</b> :&nbsp; Selecting this option from the options
+menu will change the font used for the GUI display.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1032" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Game List Clone Color</b> :&nbsp; Selecting this option from the options
+menu will change the font color used for the GUI display of clones in the
+'Grouped' game list view.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1031" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Directories </b>: Selecting this option from the options menu will
+allow for choosing a different directory for a number of MameUI support files
+including: ROMs, samples, config, high scores, snapshots, input files, state,
+artwork, memory card, flyers, cabinets, marquees, and nvram.&nbsp; Normally these
+directories are created under the MameUI executable’s directory.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1030" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><a href="mameui_properties.htm">Default Options</a> </b>: Selecting
+this option from the options menu will allow for the global customization of
+all games in the game list.&nbsp; These settings are overridden by altering the
+individual game settings using the File • Properties menu item.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1029" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Reset to Default </b>: Selecting this option from the options menu
+will allow for resetting various parts of MameUI to their defaults.&nbsp;
+MameUI will prompt before resetting, giving the option to cancel. </p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1028" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Interface Options </b>: Selecting this option from the options menu
+will allow: <br>
+Toggling on or off the search for new games on start.<br>
+Toggling on or off the ability to use a game pad to navigate the GUI (see mameui32.ini
+for examples).<br>
+Toggling on or off the ability to use a keyboard encoder solution to navigate
+the GUI and launch games [helpful in Mame cabs] (see mameui32.ini for
+examples).<br>
+Selecting a random image from the \bkground directory on startup.<br>
+Toggling on or off MameUI broadcasting the selected game programmatically to
+other listening applications like message clients, or an LED message bar, <br>
+The cursor to be hidden [helpful in Mame cabs].<br>
+Selecting inheritable filters, this allows parent folders to set the filters
+for their children sub-folders.<br>
+No offset for clones missing parent in view toggle will cause clones not be
+indented if the parent game is not present due to current folder view, missing
+ROMs, or filtering.<br>
+Allow history.dat file to be displayed under any, all, or none of the art
+views.<br>
+Choosing the screenshot [<strong>F12</strong>] naming convention.<br>
+Globally clear the play time and number of times played counters.<br>
+Stretch screenshot to larger size, this will enlarge the items in the art pane
+scaling them upwards depending on the size of the GUI.<br>
+Screenshot border size and color creates a user defined border around the art
+work in the art pane on the right, set to zero to remove borders completely.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p class=MsoNormal><span style='mso-no-proof:yes'><img border=0 width=500
+height=347 id="_x0000_i1027" src="../images/int.jpg"></span></p>
+
+</blockquote>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1026" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b>Background Image </b>: Selecting this option from the options menu
+allows the choosing of a background image from the \bkground directory.&nbsp;
+This image will be displayed beneath the three window panes in the GUI. </p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2008-07-16 12:04 AM -0700<!--webbot bot="Timestamp" endspan i-checksum="38077" --><span
+style='font-size:7.5pt'>/ john iv</span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/docs/release/src/osd/winui/help/html/mameui_overview.htm b/docs/release/src/osd/winui/help/html/mameui_overview.htm
new file mode 100644
index 00000000000..15ff74c884c
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_overview.htm
@@ -0,0 +1,529 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 12">
+<meta name=Originator content="Microsoft Word 12">
+<link rel=File-List href="mameui_overview_files/filelist.xml">
+<link rel=Edit-Time-Data href="mameui_overview_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>MameUI Overview &amp; History</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>john4</o:Author>
+ <o:LastAuthor>john4</o:LastAuthor>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>1</o:TotalTime>
+ <o:Created>2008-04-11T22:44:00Z</o:Created>
+ <o:LastSaved>2008-04-11T22:45:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>413</o:Words>
+ <o:Characters>2358</o:Characters>
+ <o:Lines>19</o:Lines>
+ <o:Paragraphs>5</o:Paragraphs>
+ <o:CharactersWithSpaces>2766</o:CharactersWithSpaces>
+ <o:Version>12.00</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]-->
+<link rel=themeData href="mameui_overview_files/themedata.thmx">
+<link rel=colorSchemeMapping href="mameui_overview_files/colorschememapping.xml">
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:TrackMoves>false</w:TrackMoves>
+ <w:TrackFormatting/>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:DoNotPromoteQF/>
+ <w:LidThemeOther>EN-US</w:LidThemeOther>
+ <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ <w:Compatibility>
+ <w:BreakWrappedTables/>
+ <w:SnapToGridInCell/>
+ <w:WrapTextWithPunct/>
+ <w:UseAsianBreakRules/>
+ <w:DontGrowAutofit/>
+ <w:SplitPgBreakAndParaMark/>
+ <w:DontVertAlignCellWithSp/>
+ <w:DontBreakConstrainedForcedTables/>
+ <w:DontVertAlignInTxbx/>
+ <w:Word11KerningPairs/>
+ <w:CachedColBalance/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="&#45;-"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
+ DefSemiHidden="true" DefQFormat="false" DefPriority="99"
+ LatentStyleCount="267">
+ <w:LsdException Locked="false" Priority="0" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
+ <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
+ <w:LsdException Locked="false" Priority="10" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Title"/>
+ <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
+ <w:LsdException Locked="false" Priority="11" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
+ <w:LsdException Locked="false" Priority="22" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
+ <w:LsdException Locked="false" Priority="20" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
+ <w:LsdException Locked="false" Priority="59" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Table Grid"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
+ <w:LsdException Locked="false" Priority="1" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 1"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
+ <w:LsdException Locked="false" Priority="34" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
+ <w:LsdException Locked="false" Priority="29" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
+ <w:LsdException Locked="false" Priority="30" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 1"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 2"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 2"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 3"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 3"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 4"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 4"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 5"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 5"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 6"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 6"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="19" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
+ <w:LsdException Locked="false" Priority="21" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
+ <w:LsdException Locked="false" Priority="31" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
+ <w:LsdException Locked="false" Priority="32" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
+ <w:LsdException Locked="false" Priority="33" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
+ <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
+ <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:variable;
+ mso-font-signature:0 0 0 0 0 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman","serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+h1
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 1 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:1;
+ font-size:16.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;}
+p
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:black;}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 1";
+ mso-ansi-font-size:14.0pt;
+ mso-bidi-font-size:14.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#365F91;
+ mso-themecolor:accent1;
+ mso-themeshade:191;
+ font-weight:bold;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ mso-default-props:yes;
+ font-size:10.0pt;
+ mso-ansi-font-size:10.0pt;
+ mso-bidi-font-size:10.0pt;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.0in 1.0in 1.0in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman","serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white background="../images/bkground.gif" lang=EN-US link=blue
+vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1><span style='mso-fareast-font-family:"Times New Roman"'>MameUI Overview
+&amp; History<o:p></o:p></span></h1>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'>MameUI [previously Mame32] is an emulator.&nbsp; Simply put, it allows a
+PC to mimic the internal hardware of a large number of stand-alone arcade
+machines from 1975 to 2003+.&nbsp; Combined with the original ROMs from these
+arcade machines, MameUI will display and play the games on a PC.&nbsp; The
+software thinks it’s still running on its original box.&nbsp; MameUI is the GUI
+version of Mame™, the M.ultiple A.rcade M.achine E.mulator.&nbsp; It has an
+attractive, elegant, graphical interface which allows the user to forego having
+to type command line parameters, although it can still be passed these
+arguments.&nbsp; For many, it’s easier to click the icon of the game.</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><b>1997.02.05</b> - In the beginning, Italian programmer and arcade
+preservationist, Nicola Salmoria, combined his individual game emulators into
+the DOS based multi-game emulator, Mame.&nbsp; It was released Feb. 05,
+1997.&nbsp; Since the source was also released, numerous people contributed new
+drivers to add support for more and more games.&nbsp; The number of contributors
+grew into the hundreds and has continued to increase over the years.</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><b>1997.08</b> - Mame32 was the first port of Mame to the Microsoft
+Windows platform.&nbsp; It originally came out in August of 1997, adding the
+GUI and a considerable amount of new code to transition to Win32.&nbsp; The
+original Mame32 was authored by Chris Kirmse and later integrated Michael
+Soderstrom's Win32 command-line port of Mame.&nbsp; Michael then coordinated,
+maintained the source, and produced the releases.&nbsp; Mike Haaland and John
+Hardy IV joined the project in late 1997.&nbsp; Mike would wholly revamp the
+user interface to its current state and continue collaborating on core
+development. John provided testing, WIP updates, artwork, and served as the
+external point of contact for the team.&nbsp; Mame32 releases followed the Mame
+DOS releases by a few days to a few weeks over the next four years.</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><b>2001.05.24</b> - With the inexorable phasing out of DOS, the authors of
+the DOS based Mame ported it to the Microsoft Windows platform as a command
+line application.&nbsp; Evolutionally similar to MameDOS, it is run by typing
+in arguments from a command prompt, and has no GUI. [many people try to double
+click it, which opens up the command line window briefly, displays a message,
+then closes].&nbsp;</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><b>2001.07.24</b> - Mame32 was re-positioned, with the familiar GUI
+grafted onto the new Mame Windows engine.&nbsp; Mame32 is currently maintained
+by Kirmse, Haaland, and Hardy and is now released by John IV shortly after Mame
+on the <b><a href="http://mameui.info/" target="_blank">MameUI</a></b>
+site.</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><strong><span style='font-family:"Arial","sans-serif"'>2007.11.11</span></strong>
+- Mame32 was rebranded as MameUI to avoid confusion of the 64bit build of the
+core version.&nbsp; It is compiled as MameUI32 and MameUI64 for the different
+target platforms.</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'>&nbsp;</p>
+
+<p style='margin-top:0in;margin-right:0in;margin-bottom:3.75pt;margin-left:
+0in'><!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-12 01:57 PM -0800<!--webbot bot="Timestamp" endspan i-checksum="38483" --><span
+style='font-size:7.5pt'>/ john iv</span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/docs/release/src/osd/winui/help/html/mameui_playing.htm b/docs/release/src/osd/winui/help/html/mameui_playing.htm
new file mode 100644
index 00000000000..8444676b99b
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_playing.htm
@@ -0,0 +1,136 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Playing a Game &amp; Internal Controls</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>Playing a Game &amp; Internal Controls</h2>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>To activate mouse control or attached gamepads to use within
+games, it is necessary to toggle those options on in the Options • Default
+Options • Controllers tab.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Once a game has been selected and double-clicked, MameUI will
+produce two information screens and then it will run the game.&nbsp; Since
+MameUI is
+emulating the original hardware, the software thinks it’s still in an arcade and
+is starting up for the first time in the morning.&nbsp; Initial diagnostic screens
+are run through, as well as possibly some accounting information presented to
+the arcade owner.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>The game should now be running its demo/attract mode.&nbsp; Insert a
+coin with the [<b>5</b>] key on the keyboard, the mappings for coin inserts are:
+player 1 [<b>5</b>], player 2 [<b>6</b>], player 3 [<b>7</b>], player 4 [<b>8</b>].&nbsp;
+Now that a coin has been inserted, start the game with the [<b>1</b>] key on the
+keyboard.&nbsp; Game start mappings are player 1 [<b>1</b>], player 2 [<b>2</b>],
+player 3 [<b>3</b>], player 4 [<b>4</b>].</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>MameUI’s default control scheme is to use the inverted T arrow
+keys on the keyboard for directional controls, and the left [<b>CTRL</b>] key as the
+primary action button.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>While in a game within MameUI, the internal configuration menu
+system can be activated by pressing the [<b>TAB</b>] key.&nbsp; This will bring up
+the control options.&nbsp; These options allow remapping MameUI controls to whatever
+keyboard keys or gamepad buttons are desired.&nbsp; The Input (general) area controls the global settings, and
+the Input (this game) are the controls for the game selected.&nbsp; To change the
+mapping, select the control to change by arrowing down to it, hit the [<b>ENTER</b>]
+key and then the new desired control.&nbsp; Hit the [<b>ESC</b>] key to exit the [<b>TAB</b>]
+menu back to the game. Note: If there are multiple mouse devices attached to the
+system they can be individually configured by selecting their control in the [<strong>TAB</strong>]
+menu and moving the mouse or trackball left or right, up or down to map it.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Other keys of interest while playing a game are : </p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>TAB</b>] key to bring up the
+internal menu system.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>~ TILDE</b>] the onscreen
+display.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>Shift-p</b>] advance paused
+screen one frame at a time<br>
+[<b>p</b>] for the pause button.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F3</b>] resets the game.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F4</b>] displays the tile
+manager and the game’s
+color palette.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>Shift-F7</b>] save current
+game state [a-z, 1-0] (See save state folder view for supported games)</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F7</b>] load game state [a-z,
+1-0] (See save state folder view on left for supported games)</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F9</b>] changes the frameskip
+on the fly.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F10</b>] toggles throttling.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F11</b>] toggles the speed
+display
+display.<br>
+[<b>Shift-F12</b>] toggles MNG recording, once starts, second finishes.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>F12</b>] takes a *.png
+snapshot of the game and places it in the \MameUI\snap directory.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<b>ESC</b>] exits from the game
+back to the MameUI GUI.</p>
+
+<p class="MsoNormal" style="margin-left:.75in">[<b>Left-Alt + Enter</b>] toggle
+from fullscreen mode to windowed mode.</p>
+<p class="MsoNormal" style="margin-left:.75in">[<strong>Insert</strong>] fast
+forwards with full unthrottle and highest frameskip, convenient for speeding
+through slow start-up of certain games.</p>
+
+<p class="MsoNormal" style="margin-left: .75in">&nbsp;</p>
+<p class="MsoNormal" style="margin-left: .75in"><font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-10 01:41 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37617" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_properties.htm b/docs/release/src/osd/winui/help/html/mameui_properties.htm
new file mode 100644
index 00000000000..7601b7e5b05
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_properties.htm
@@ -0,0 +1,1034 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 12">
+<meta name=Originator content="Microsoft Word 12">
+<link rel=File-List href="mameui_properties_files/filelist.xml">
+<link rel=Edit-Time-Data href="mameui_properties_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>MameUI Properties</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>john4</o:Author>
+ <o:LastAuthor>john4</o:LastAuthor>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2008-04-11T22:41:00Z</o:Created>
+ <o:LastSaved>2008-04-11T22:44:00Z</o:LastSaved>
+ <o:Pages>2</o:Pages>
+ <o:Words>3044</o:Words>
+ <o:Characters>17351</o:Characters>
+ <o:Lines>144</o:Lines>
+ <o:Paragraphs>40</o:Paragraphs>
+ <o:CharactersWithSpaces>20355</o:CharactersWithSpaces>
+ <o:Version>12.00</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]-->
+<link rel=themeData href="mameui_properties_files/themedata.thmx">
+<link rel=colorSchemeMapping
+href="mameui_properties_files/colorschememapping.xml">
+<!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackMoves>false</w:TrackMoves>
+ <w:TrackFormatting/>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:DoNotPromoteQF/>
+ <w:LidThemeOther>EN-US</w:LidThemeOther>
+ <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+ <w:Compatibility>
+ <w:BreakWrappedTables/>
+ <w:SnapToGridInCell/>
+ <w:WrapTextWithPunct/>
+ <w:UseAsianBreakRules/>
+ <w:DontGrowAutofit/>
+ <w:SplitPgBreakAndParaMark/>
+ <w:DontVertAlignCellWithSp/>
+ <w:DontBreakConstrainedForcedTables/>
+ <w:DontVertAlignInTxbx/>
+ <w:Word11KerningPairs/>
+ <w:CachedColBalance/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ <m:mathPr>
+ <m:mathFont m:val="Cambria Math"/>
+ <m:brkBin m:val="before"/>
+ <m:brkBinSub m:val="&#45;-"/>
+ <m:smallFrac m:val="off"/>
+ <m:dispDef/>
+ <m:lMargin m:val="0"/>
+ <m:rMargin m:val="0"/>
+ <m:defJc m:val="centerGroup"/>
+ <m:wrapIndent m:val="1440"/>
+ <m:intLim m:val="subSup"/>
+ <m:naryLim m:val="undOvr"/>
+ </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
+ DefSemiHidden="true" DefQFormat="false" DefPriority="99"
+ LatentStyleCount="267">
+ <w:LsdException Locked="false" Priority="0" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
+ <w:LsdException Locked="false" Priority="9" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="heading 2"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
+ <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
+ <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
+ <w:LsdException Locked="false" Priority="10" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Title"/>
+ <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
+ <w:LsdException Locked="false" Priority="11" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
+ <w:LsdException Locked="false" Priority="22" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
+ <w:LsdException Locked="false" Priority="20" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
+ <w:LsdException Locked="false" Priority="59" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Table Grid"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
+ <w:LsdException Locked="false" Priority="1" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 1"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
+ <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
+ <w:LsdException Locked="false" Priority="34" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
+ <w:LsdException Locked="false" Priority="29" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
+ <w:LsdException Locked="false" Priority="30" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 1"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 2"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 2"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 3"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 3"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 4"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 4"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 5"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 5"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
+ <w:LsdException Locked="false" Priority="60" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="61" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light List Accent 6"/>
+ <w:LsdException Locked="false" Priority="62" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="63" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="64" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="65" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="66" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="67" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
+ <w:LsdException Locked="false" Priority="68" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
+ <w:LsdException Locked="false" Priority="69" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
+ <w:LsdException Locked="false" Priority="70" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Dark List Accent 6"/>
+ <w:LsdException Locked="false" Priority="71" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
+ <w:LsdException Locked="false" Priority="72" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
+ <w:LsdException Locked="false" Priority="73" SemiHidden="false"
+ UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
+ <w:LsdException Locked="false" Priority="19" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
+ <w:LsdException Locked="false" Priority="21" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
+ <w:LsdException Locked="false" Priority="31" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
+ <w:LsdException Locked="false" Priority="32" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
+ <w:LsdException Locked="false" Priority="33" SemiHidden="false"
+ UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
+ <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
+ <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;
+ mso-font-charset:1;
+ mso-generic-font-family:roman;
+ mso-font-format:other;
+ mso-font-pitch:variable;
+ mso-font-signature:0 0 0 0 0 0;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:-520082689 -1073717157 41 0 66047 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+h1
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 1 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:1;
+ font-size:16.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;}
+h2
+ {mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-qformat:yes;
+ mso-style-link:"Heading 2 Char";
+ margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:2;
+ font-size:14.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;
+ font-weight:bold;
+ font-style:italic;}
+a:link, span.MsoHyperlink
+ {mso-style-priority:99;
+ color:blue;
+ text-decoration:underline;
+ text-underline:single;}
+p
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:black;}
+p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+ {mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-link:"Balloon Text Char";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ color:windowtext;}
+span.Heading1Char
+ {mso-style-name:"Heading 1 Char";
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 1";
+ mso-ansi-font-size:14.0pt;
+ mso-bidi-font-size:14.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#365F91;
+ mso-themecolor:accent1;
+ mso-themeshade:191;
+ font-weight:bold;}
+span.Heading2Char
+ {mso-style-name:"Heading 2 Char";
+ mso-style-noshow:yes;
+ mso-style-priority:9;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Heading 2";
+ mso-ansi-font-size:13.0pt;
+ mso-bidi-font-size:13.0pt;
+ font-family:"Cambria","serif";
+ mso-ascii-font-family:Cambria;
+ mso-ascii-theme-font:major-latin;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:major-fareast;
+ mso-hansi-font-family:Cambria;
+ mso-hansi-theme-font:major-latin;
+ mso-bidi-font-family:"Times New Roman";
+ mso-bidi-theme-font:major-bidi;
+ color:#4F81BD;
+ mso-themecolor:accent1;
+ font-weight:bold;}
+span.BalloonTextChar
+ {mso-style-name:"Balloon Text Char";
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-unhide:no;
+ mso-style-locked:yes;
+ mso-style-link:"Balloon Text";
+ mso-ansi-font-size:8.0pt;
+ mso-bidi-font-size:8.0pt;
+ font-family:"Tahoma","sans-serif";
+ mso-ascii-font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";
+ mso-fareast-theme-font:minor-fareast;
+ mso-hansi-font-family:Tahoma;
+ mso-bidi-font-family:Tahoma;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ mso-default-props:yes;
+ font-size:10.0pt;
+ mso-ansi-font-size:10.0pt;
+ mso-bidi-font-size:10.0pt;}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.0in 1.0in 1.0in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-priority:99;
+ mso-style-qformat:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman","serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white background="../images/bkground.gif" lang=EN-US link=blue
+vlink=purple style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h2><span style='mso-fareast-font-family:"Times New Roman"'>Default Options
+&amp; Game Properties<o:p></o:p></span></h2>
+
+<p class=MsoNormal>The default options and game properties tabs of MameUI are
+used to set the vast majority of game play parameters.&nbsp; The Game
+Properties dialogue box, accessible from the File • Properties menu item,
+shares all the tabs of the Default Options dialogue box, accessible from the
+Options • Default Options menu item.&nbsp; The Game Properties dialogue
+contains two additional tabs which give information on the game selected, and
+its current audited state.</p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1043" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>General Tab</span></b> : [only available
+in Game Properties dialogue] This tab provides information on the game
+selected, this information includes manufacturer name and date, driver status,
+original CPU, original sound hardware, original screen resolution and
+orientation, and number of colors.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1042" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Audit Tab</span></b> : [only available in
+the Game Properties dialogue] This tab performs a ‘mini-audit’ on the game
+selected, determining its status compared to what MameUI expects.&nbsp; Status
+will be reported and missing files with CRC information will appear in the
+details view.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1041" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Display Tab</span></b> : This tab allows
+the setting of numerous video options.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Run in a window</b> : MameUI
+will launch the game selected in a window on the desktop, the window can be
+resized by pausing the emulation and dragging the borders.&nbsp; The resolution
+of the window can also be set in the Screen tab.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Start out maximized </b>:
+Toggling this option on ensures that when windowed mode is used, the maximum
+amount of space is used.&nbsp; Toggle this option off to play the smallest
+version of the windowed game.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enforce aspect ratio </b>: This
+option is used in conjunction with windowed mode, it forces the aspect ratio to
+be maintained when the game is paused and the window is dragged and
+resized.&nbsp; Turn this off to create long, thin game windows, or short fat,
+etc.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Throttle </b>: This option
+prevents MameUI from running games as fast as the host CPU can go.&nbsp; Unless
+this is toggled on, a modern x86 processor will run Donkey Kong at a thousand
+times its original speed.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Rotation </b>: This drop down
+box allows MameUI to rotate the video output by 90 degrees in either
+direction.&nbsp; This setting is useful if used in conjunction with a pivoting
+monitor [the auto options], or playing games with a monitor on its side.&nbsp;
+Doing so allows vertical orientated games to be played full screen.&nbsp; The
+additional 'auto clockwise' and 'auto anti-clockwise' settings are particularly
+useful for rotating LCD monitors, these settings will force vertical games to
+one 90 degree angle or the other depending on which way the LCD pivots.<br>
+<b>Flip screen upside down </b>: This option mirrors the image vertically.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Flip screen left right </b>:
+This option mirrors the image horizontally.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Direct3D</b> : <b>Use Bilinear
+Filtering</b> : This option enables bilinear filtering on game screen
+graphics.&nbsp; 'Fuzziness' of image can be controlled by the bitmap prescaling
+option, increasing it sharpens the image.&nbsp; Leaving this unchecked produces
+the crispest output but does point filtering leading to scaling artifacts.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Direct3D</b> : <b>Version</b> :
+This option allows toggling between version 9 and version 8 of D3D.&nbsp; It's
+almost always preferable to stay with 9.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>DirectDraw</b> : <b>Stretch
+using hardware</b> : Used in conjunction with DDraw as the video mode, this
+toggle if turned off scales upwards the size of the games original native
+resolution at the same aspect ratio.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Bitmap prescaling</b> : This
+option works in conjunction with bilinear filtering.&nbsp; The higher up the
+slider, the sharper the screen output.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Gamma correction </b>:
+&nbsp;This option controls the gamma, which produces a potentially nonlinear
+black to white ramp, for the game screens. This option does not affect the artwork
+or other parts of the display. Using MameUI's in-game tilde menu [~], one can
+individually set the gamma for each game screen; this option controls the
+initial value for all visible game screens. The standard value is 1.0, which
+gives a linear ramp from black to white. Selecting lower values (down to 0.1)
+will increase the nonlinearity toward black,&nbsp; while selecting higher
+values (up to 3.0) will push the nonlinearity&nbsp; toward white. The default
+is 1.0.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Brightness correction </b>:
+This option controls the default brightness, or black level, of the game
+screens. This option does not affect the artwork or other parts of the
+display.&nbsp; Using MameUI's in-game tilde menu [~], one can individually set
+the brightness for each game screen; this option controls the initial value for
+all visible game screens. The standard value is 1.0. Selecting lower values
+(down to 0.1) will produce a darkened display, while selecting higher values
+(up to 2.0) will give a brighter display. The default is 1.0.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Contrast correction </b>:&nbsp;
+Controls the contrast, or white level, of the game screens. This option does
+not affect the artwork or other parts of the display. Using MameUI's in-game
+tilde menu [~], one can individually set the contrast for each game screen;
+this option controls the initial value for all visible game screens. The
+standard value is 1.0. Selecting lower values (down to 0.1) will produce a
+dimmer display, while selecting higher values (up to 2.0) will give a more
+saturated display. The default is 1.0.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Pause Brightness </b>: This
+option controls the screen brightness when a game is paused.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1040" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Advanced Tab</span></b> : This tab allows
+the setting of additional numerous video options.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Triple buffering </b>: This
+option controls how MameUI draws to the screen, if toggled on, it will draw to
+three buffers and cycle between them.&nbsp; This setting when toggled on can
+also help alleviate tearing that sometimes occurs in some scrolling games.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Sync to monitor refresh </b>:
+This option tells MameUI to ignore the original game’s refresh rate and sync it
+to the output monitor’s current rate.&nbsp; This can cause the game to run too
+fast if the output monitor is using 85Hz for example.&nbsp; This option is
+preferable if MameUI is used with authentic arcade monitor hardware and video
+card modes that are tweaked appropriately.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Wait for vertical sync </b>:
+This option tells MameUI to wait for the refresh period on the output monitor
+to finish before starting to draw video to the screen, this works functionally
+similarly to triple buffer but is better suited for running games in a window
+to alleviate tearing. </p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Refresh speed </b>: This option
+tells MameUI to alter the speed of the emulation for games that run at a higher
+speed than the host monitor.&nbsp; For example this should be checked if
+running Pac-Man on a fixed 60Hz LCD since Pac-Man runs at 60.60Hz.&nbsp; This
+alleviates sound hiccups as well in the previous situation.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Emulation speed </b>: This slider
+allows for the altering of the emulation speed, it can be dropped down or
+increased by three [or to 100 in the \ini.] </p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Frame skipping </b>: These
+settings allow MameUI to skip frames of animation when playing games, if the
+host CPU is not fast enough to run the game.&nbsp; Optimally this should be
+toggled off and 'draw every frame' selected.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Full screen gamma</b> : This
+option is similar to the gamma correction in the display tab but works on all
+graphic elements of the screen including the UI.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Full screen brightness </b>:
+This option is similar to the brightness correction in the display tab but
+works on all graphic elements of the screen including the UI.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Full screen contrast</b> : This
+option is similar to the contrast correction in the display tab but works on
+all graphic elements of the screen including the UI.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Effect</b> : Starting with
+version .107 simulated arcade monitor effects are handled by the overlay of
+*.png masks on the game.&nbsp; The *.png files reside in the \artwork directory
+and are simple patterns creatable and editable in applications like
+Photoshop.&nbsp; If scan lines are desired and a very high resolution is being
+used [1280x1024 or above] the Scanlines75x4 item is suggested.&nbsp; For games
+with artwork whose playfields are smaller on screen as the results of bezels, it's
+recommended to use Scanlines75x3 or Scanlines75x2.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1039" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Screen Tab</span></b> : This tab allows
+the alteration of the various screen output settings.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Number of screens </b>:<b> </b>This
+slider controls the number of screens MameUI will draw.&nbsp; In windowed mode up
+to four different output windows can be created of varying sizes, shapes,
+etc.&nbsp; In full screen mode the number of screens can match the physical
+number of monitors connected to the host system.&nbsp; This allows playing
+multi-monitor arcade games like Punch-Out or similar on 2 physical computer
+monitors in dual head mode.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Screen </b>: This option allows
+the choice of the physical monitor to use in conjunction with number of screens
+and screennumber.&nbsp; The drop down is populated by the \\.\DISPLAY1 and/or \\.\DISPLAY2
+and so forth.&nbsp; Leaving this toggle to Auto will have MameUI attempt to
+order the game screens as it sees fit, for Punch-Out for example it will place
+the main fighting screen on \\.\DISPLAY1 and the status/display screen on
+secondary monitor \\.\DISPLAY2. </p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Aspect Ratio </b>: Allows
+control over the physical aspect ratio of the physical monitor for each
+screen.&nbsp; If running full screen and auto aspect ratio is <b>off</b>, then
+switch resolutions to fit must be toggled on to work.&nbsp; Typically this
+should be set to autoselect unless weird shaped windows for game play are
+desired.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>View</b> : This drop down
+allows the selection of the default view of the in-game display.&nbsp; This can
+be auto which is effectively 4:3 for horizontal games or 3:4 for vertical
+games, native, which is the game's original native resolution, or cocktail
+which is duplicated view for 2 people playing the game on opposite sides of a
+cocktail cabinet.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Screennumber</b> : This drop
+down is populated based on the slider setting of number of screens to its
+left.&nbsp; Each item in the screennumber drop down can be individually
+tailored with screen, resolution, aspect ratio, and view. Thus it is possible
+to have elaborate combinations for game play, for example.&nbsp; Number of
+screens 3, run in windowed mode, have screen0 go to the secondary \\.\DISPLAY2,
+running in 320x240 resolution at a color depth of 16bpp with a refresh of 75Hz,
+screen1 go to primary display \\.\DISPLAY1, run at 640x480x32@60 and use the
+cocktail view, etc.&nbsp; Each item in the Screennumber drop down will populate
+its own settings and maintain those settings until returned to a default.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Resolution</b> : These options
+control the size and refresh rate of the screennumbers.&nbsp; In windowed mode
+only the resolution is selectable.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Switch resolutions to fit</b> :
+This toggle must be <b>on</b> if any of the resolution choices are altered away
+from auto in full screen mode.&nbsp; It does not impact windowed mode.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1038" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Sound Tab</span> </b>: This tab allows for
+setting the sound options.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable sound and sound CPUs </b>:
+This setting toggles sound on or off in games.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Use samples </b>: This setting
+allows MameUI to utilize samples for games which do not have their sound
+hardware emulated, or were using analogue circuitry.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Sample Rate </b>: This setting
+tells MameUI at what rate to output sound, the higher, the better.&nbsp;
+Lowering this setting can also result in faster performance on lower end
+machines.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Volume attenuation </b>: This
+setting allows MameUI to set the initial volume level, the default is 0dB.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Audio latency </b>: This slider
+allows the adjustment of the amount of latency built into the audio
+streaming.&nbsp; Increasing the slider to the right on faster machines can help
+alleviate some desync and scratchiness in the sound on some configurations.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1037" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Controllers Tab</span> </b>: This tab
+allows for setting the game controller options.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable joystick input </b>:
+This setting tells MameUI to utilize any currently connected joysticks.&nbsp;
+MameUI will interrogate the game controllers control panel and use ID#1 and up.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Analog joystick deadzone</b> :
+This setting controls how MameUI translates analog input to games that require
+digital input.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable lightgun input</b> :
+This setting tells MameUI to utilize a lightgun for target/shooting games that
+require analogue control, like Crossbow, Police Trainer, Rev X, etc. and will
+only be available on non-XP based systems.&nbsp; If using XP then mouse input
+should be toggled on to allow mapping of the lightgun functions in the in-game
+[<b>TAB</b>] menu.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Offscreen shots reload</b> :
+This option if checked will internally remap the second mouse button and allow
+it to be used for simulated 'reloading' in gun games that require it.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Dual lightguns</b> : This is a
+legacy switch for non-XP systems which activates code to handle internal
+mapping of the second light gun connected to the system.&nbsp; If WinXP is used
+this is not required and is grayed out, the second gun is mapped like a
+joystick or mouse in the in-game [<b>TAB</b>] menu.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable mouse input </b>: This
+setting tells MameUI to utilize the mouse in games that require analogue
+control methods.&nbsp; On XP systems the mouse toggle should be on if a
+lightgun is to be utilised.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable steadykey support </b>:
+This option tells MameUI to use a different keyboard handling routine that
+makes it easier to register simultaneous key presses for games that require it
+for special moves [Street Fighter II, etc.].&nbsp; However it can produce more
+sluggish results in other games.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Default input layout </b>: This
+drop down menu allows MameUI to choose between multiple key mappings, including
+keyboard mapping for various third-party control panels.&nbsp; It will also
+display user defined controller mappings, if created in the \ctrlr
+directory.&nbsp; Various arcade game controller companies produce custom made
+configuration files for their setups; these *.cfg files need to go in the
+\MameUI\ctrlr folder to be recognized in the MameUI controllers tab.&nbsp;
+These files are the responsibility of the controller companies themselves and
+are not included or endorsed by MameUI, they can typically be found at the
+companies’ web sites.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><strong><span style='font-family:
+"Arial","sans-serif"'>Multiple keyboards</span></strong> : Enabling this
+checkbox tells MameUI to allow mapping to different physical keyboards that may
+be attached to the host system, this allows rather esoteric options like
+multiple keyboards for games like 2 player Keyboard Mania or Typing of the Dead
+etc.&nbsp; If left off MameUI maps all keyboard controls to all keyboard
+devices.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><strong><span style='font-family:
+"Arial","sans-serif"'>Multiple mice</span></strong> : Enabling this checkbox
+tells MameUI to allow mapping to different physical mice devices.&nbsp; Useful
+for systems that have spinners, trackballs, main system mice etc.&nbsp; If left
+off MameUI maps all mice controls to all mouse devices.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1036" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Controller Mapping Tab</span> </b>: This
+tab allows choosing which analogue device connected to the system for MameUI to
+map a game's internal analogue controls to.&nbsp; These options should be used
+in lieu of the global 'mouse' setting which can conflict with attached
+joysticks/gamepads.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img width=11 height=11
+id="_x0000_i1035" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Miscellaneous Tab</span> </b>: This tab
+allows for setting additional options.</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Enable game cheats </b>: This
+setting if toggled on allows MameUI to use external cheat.dat files.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Error log (for developers) </b>:
+This setting if toggled on produces an error log of illegal memory accesses.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Sleep when possible </b>: This
+setting if toggled on allows MameUI to be more multitasking friendly in that it
+does not use as much processor time.&nbsp; If this setting is toggled off
+MameUI will utilize 100% of the CPU for playing games.&nbsp; Some machines slow
+down dramatically if this setting is toggled on, particularly laptops.&nbsp;
+This maps to the -sleep option in Mame.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Skip game info</b> : If this
+options is on, MameUI will immediately launch a game without information
+screens.&nbsp; However screens regarding problems in the drivers will still be
+shown [missing sound, unemulated protection, problems with video etc.].</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Save game state on exit</b> : This
+toggle will allow MameUI to automatically save the current machine state when
+the game is exited with the ESC key.&nbsp; As a result when the game is
+re-launched it's like the machine was never turned off.&nbsp; This feature
+allows older games to maintain their hi-scores indefinitely where it wasn't
+originally supported.&nbsp; The files are stored in the MameUI\sta
+directory.&nbsp; The list of games that support save states is present in the
+left hand folder view pane of the UI as 'Save State'.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Thread Priority slider</b> :
+Increasing the Windows thread priority for MameUI giving it more CPU and
+resources slices, can negatively impact other running processes.&nbsp; Using
+setting 1 sets it to real-time which interferes with keyboard and joystick
+controls as well as other running apps.&nbsp; Setting 1 is not recommended as a
+result.&nbsp; Some Dells and other laptop computers may require setting slider
+to -15 to get keyboard control working properly.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Multi-threaded rendering </b>:
+This toggle allows multi-core or multi-chip or HyperThreaded machines to pass
+the final video blit off to a second thread.&nbsp; This can lead up to a 40%
+increase in unthrottled FPS using D3D in GPU limited games.&nbsp; However it
+does not have a real world effect on games that are CPU bound, like the heavy
+seattle.c, or vegas.c games.&nbsp; Unless in possession of one of these types
+of machines, this should be toggled off to avoid potential slowdowns.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Use additional game artwork </b>:
+This setting if toggled on allows MameUI to utilize the external artwork
+packages available at <a href="http://www.mameworld.net/mrdo" target="_blank">Mr.
+Do’s site</a> for display in games like Armor Attack, Discs of Tron, Lunar
+Lander, Warrior, etc.&nbsp;The artwork packages are placed in the \artwork
+directory.&nbsp; Each element of the artwork package can be toggled: bezel,
+overlay, and background.&nbsp; </p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Crop Artwork</b> : Selecting
+the crop artwork toggle will shrink the scene down to the games original
+dimensions, cropping any available art pieces.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>BIOS</b> : This drop down
+allows the use of a variety of different supported NeoGeo or Sega BIOS
+files.&nbsp; The option will only be available when altering the driver family
+via the source folder view on the left pane, or individual games in the driver
+family.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'><span
+style='font-family:Symbol;mso-no-proof:yes'><img border=0 width=11 height=11
+id="_x0000_i1034" src="../images/mame321.gif" alt="*"></span><span
+style='font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span><b><span style='color:maroon'>Vector Tab</span> </b>: This tab allows
+for setting additional options for games that originally utilized a vector
+monitor instead of a raster monitor. [Asteroids, Battlezone, Armor Attack,
+etc.]</p>
+
+<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in'>&nbsp;</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Draw antialiased vectors </b>:
+This setting if toggled on tells MameUI to draw vector lines with an additional
+pleasing antialiased look.</p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Beam width</b> : This slider
+allows MameUI to set the beam width on the vector lines drawn, increasing it
+creates wider vectors. </p>
+
+<p class=MsoNormal style='margin-left:.75in'><b>Flicker</b> : This slider tells
+MameUI to artificially create a flicker effect on the vector lines.</p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal><span style='mso-no-proof:yes'><img border=0 width=250
+height=344 id="_x0000_i1033" src="../images/1.jpg"></span><span
+style='mso-no-proof:yes'><img border=0 width=250 height=344 id="_x0000_i1032"
+src="../images/2.jpg"></span><span style='mso-no-proof:yes'><img border=0
+width=250 height=344 id="_x0000_i1031" src="../images/3.jpg"></span><span
+style='mso-no-proof:yes'><img border=0 width=250 height=344 id="_x0000_i1030"
+src="../images/4.jpg"></span><span style='mso-no-proof:yes'><img border=0
+width=250 height=344 id="_x0000_i1029" src="../images/5.jpg"></span><span
+style='mso-no-proof:yes'><img border=0 width=250 height=344 id="_x0000_i1028"
+src="../images/6.jpg"></span><span style='mso-no-proof:yes'><img border=0
+width=250 height=344 id="_x0000_i1027" src="../images/7.jpg"></span><span
+style='mso-no-proof:yes'><img border=0 width=250 height=344 id="_x0000_i1026"
+src="../images/8.jpg"></span></p>
+
+<p class=MsoNormal style='margin-left:.75in'>&nbsp;</p>
+
+<p class=MsoNormal><!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-10 01:41 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37617" --><span
+style='font-size:7.5pt'>/ john iv</span></p>
+
+</div>
+
+</body>
+
+</html>
diff --git a/docs/release/src/osd/winui/help/html/mameui_settings.htm b/docs/release/src/osd/winui/help/html/mameui_settings.htm
new file mode 100644
index 00000000000..0224c694af2
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_settings.htm
@@ -0,0 +1,96 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Settings</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>MameUI Settings</h2>
+
+<h3><font face="Arial">Suggested MameUI Default Settings</font></h3>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style: normal; font-variant: normal; font-weight: normal; color:windowtext">
+Advanced / Triple Buffering ensures there should be no 'tearing' of screen
+images if the frame rate doesn't exactly match the monitor screen refresh in
+full-screen mode.&nbsp;
+</span>Particularly evident in vertical scrolling games.&nbsp; This however can
+lead to sound stuttering on games that are above 60Hz [early Namco games like
+Pac-Man, etc.] if the user's monitor is
+not capable of being driven at a higher refresh rate, like modern LCDs.&nbsp; If
+a modern LCD fixed at 60Hz is in use, toggle on the Advanced • Refresh game
+speed. </p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>
+<span style="font-style: normal; font-variant: normal; font-weight: normal; color:windowtext">
+Simulated monitor effects are now handled via *.png files in the \artwork
+directory.&nbsp; They are accessed in Advanced / Select Effect.&nbsp;
+Scanlines75x4 provides a 75% black line every four pixel rows.</span></p>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<span style="font-family: Symbol; color: windowtext">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span>Bitmap prescaling in Display is the new control for determining
+how fuzzy or sharp the bilinear filtering of D3D is.&nbsp; Increasing this
+number sharpens the game pixels.</p>
+<h3>
+<img border="0" src="../images/1.jpg"><img border="0" src="../images/2.jpg"><img border="0" src="../images/3.jpg"><img border="0" src="../images/4.jpg"><img border="0" src="../images/5.jpg"><img border="0" src="../images/6.jpg"><img border="0" src="../images/7.jpg"><img border="0" src="../images/8.jpg"></h3>
+<h3>
+<img border="0" src="../images/int.jpg" width="500" height="347"></h3>
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+</p>
+
+<p style="text-indent: -.25in; margin-left: .75in; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+&nbsp;</p>
+
+<p style="margin-left: 0; margin-right: 0in; margin-top: 0in; margin-bottom: 3.75pt">
+<font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-10 01:41 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37617" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_support.htm b/docs/release/src/osd/winui/help/html/mameui_support.htm
new file mode 100644
index 00000000000..0049b964cb2
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_support.htm
@@ -0,0 +1,739 @@
+<html xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
+
+<head>
+<style type="text/css">
+div.Section1
+ {page:Section1;}
+ h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:"Arial","sans-serif";
+ color:windowtext;
+ font-weight:bold;
+}
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:"Arial","sans-serif";
+ color:black;
+}
+a:link
+ {color:blue;
+ text-decoration:underline;
+ text-underline:single;
+}
+</style>
+</head>
+
+<body style="background-image: url('../images/bkground.gif')">
+
+<div class="Section1">
+ <h1 style="mso-margin-bottom-alt: auto"><span style="COLOR: black">MameUI
+ Troubleshooting [&amp; Tips]<o:p></o:p></span></h1>
+ <p style="MARGIN-TOP: 0in">MameUI [previously Mame32] has been in development since 1997.<span style="mso-spacerun: yes">&nbsp;
+ </span>It is mature, complex, and robust.&nbsp; However, since the Mame
+ project itself is a documentation effort, and development is continuous,
+ there will be times when changes to the core program effect MameUI.&nbsp;
+ When problems do occur with a specific game in a specific version of MameUI,
+ a previous version of MameUI may be used.&nbsp; </p>
+ <p style="MARGIN-TOP: 0in">MameUI is now an integrated GUI front end which
+ passes user input from the GUI to the
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.mamedev.org/">
+ <span style="COLOR: black">Mame</span></a></b> engine/core.<span style="mso-spacerun: yes">&nbsp;
+ </span>Thus, any problems that occur in the
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.mamedev.org">
+ <span style="COLOR: black">Mame</span></a></b> engine will be inherited by
+ MameUI.&nbsp; Prior to <b>
+ <a href="http://www.mameworld.info/ubbthreads/postlist.php?Cat=&amp;Board=mameui">
+ <span style="COLOR: black">reporting problems</span></a> </b>
+ <span style="mso-bidi-font-weight: bold">against MameUI</span>, verify that
+ the issue is not a known, core defect in
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.mamedev.org/">
+ <span style="COLOR: black">Mame</span></a></b>.&nbsp; The <b>
+ <a target="_blank" href="http://mametesters.org/mantis/my_view_page.php">
+ <span style="COLOR: black">Mametesters.org</span></a></b> site is designed
+ to track and report bugs in the baseline
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.mamedev.org/">
+ <span style="COLOR: black">Mame</span></a></b> version.&nbsp; To find if a
+ problem plagues the game in question, do an
+ <b style="mso-bidi-font-weight: normal">alt-enter</b> on the game and note
+ its driver/source name at the bottom of the general properties tab; then
+ search the Mametesters’ bug database.<span style="mso-spacerun: yes">&nbsp;
+ </span>The current list of known MameUI specific issues and defect tracking
+ is available at <b>
+ <a target="_blank" href="http://mameui.info//MameUI_Bugs.xls">
+ <span style="COLOR: black">MameUI</span></a></b>.&nbsp; &nbsp;</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">ROMs and
+ CHDs Related Topics</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Utilization of an external ROMs management utility like
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.clrmame.com/">
+ <span style="COLOR: black">Clrmame</span></a></b> is recommended for repair
+ and identification of damaged or incomplete sets.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If receiving missing ROMs error messages when
+ attempting to run a game, secondary click on the game in the list and choose
+ properties, do an audit on that game [or use <b>Alt-A</b>].<span style="mso-spacerun: yes">&nbsp;
+ </span>The audit will determine which files are missing from the ROMset
+ currently being played.<span style="mso-spacerun: yes">&nbsp; </span>MameUI
+ will not run a game which fails its internal audit.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Mame is an ongoing documentation project. Sometimes old
+ ROM sets are found to have miss-dumped, missing, or damaged ROMs, which need
+ to be replaced.&nbsp; As new versions of Mame are released, the Mame
+ developers add support for these new iterations of ROMs, supplanting or
+ renaming the old supported versions.<span style="mso-spacerun: yes">&nbsp;
+ </span>Thus, often, older versions of ROMs which did work in older versions
+ of MameUI, will <u>not</u> work with newer versions of MameUI because they
+ are now read as incomplete or wrong.<span style="mso-spacerun: yes">&nbsp;
+ </span>MameUI will not play the game in question until the updated ROMs are
+ utilized.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI utilizes the idea of a parent / clone
+ relationship for its games.&nbsp; If trying to play a clone or a bootleg of
+ a game, MameUI will need the ROMs for the clone game, <b>and</b> the parent
+ set.&nbsp; MameUI indicates the parent set of a clone at the bottom of the
+ game’s properties tab, or more easily in grouped view, View \ Grouped.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI utilizes the idea of having single zip files to
+ house the BIOS files for a large number of similar games.<span style="mso-spacerun: yes">&nbsp;
+ </span>The NeoGeo games for example, share upwards of ten BIOS files in
+ every game.&nbsp; Mame will look to neogeo.zip as the BIOS zip, if this file
+ is freestanding along with the other NeoGeo games, it will use it.
+ Otherwise, MameUI expects all the BIOS files in every NeoGeo game’s zip
+ file. DECO cassette, PGM, and Playchoice are some examples of other BIOS
+ games.&nbsp; An error message will occur if the BIOS files are not present
+ and those games are run.<span style="mso-spacerun: yes">&nbsp; </span>
+ Occasionally, new ROMs will need to be added to the BIOS packages
+ themselves, this occurred recently with the ‘ng-lo.rom’ and then 6 new
+ regional BIOSes in the neogeo.zip. MameUI will not audit a game as correct
+ without all the BIOS files with the correct CRC, while it may however be
+ possible to play the game after an error message.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Games that support .CHD [compressed hunks of data]
+ images [Max Force, Killer Instinct I &amp; II, Area 51, Vicious Circle, War
+ Gods, beatmania games, and items in the CHD folder view on the left pane]
+ have to have their ROMs and .CHD files in a very specific directory
+ structure. The <b style="mso-bidi-font-weight: normal">single</b> large .CHD
+ file needs to go in the \ROMs\gamename\ directory, and have the *.CHD
+ extension, e.g. \ROMs\area51\area51.chd.<span style="mso-spacerun: yes">&nbsp;
+ </span>These games also have ROMs, these go one level up in the \ROMs folder
+ proper like any other game.<span style="mso-spacerun: yes">&nbsp; </span>So
+ in the end two files should exist for these games one *.zip in the \ROMs
+ folder and the *.chd in a sub-directory named for the game.<span style="mso-spacerun: yes">&nbsp;
+ </span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span><b>F5 </b>/ View • Refresh in the GUI. (Do this anytime
+ ROMs are altered, renaming, etc.)</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If games are not displaying in the game list, ensure
+ the appropriate folder view on the far left is toggled, i.e. 'all games' and
+ it doesn't have filtering on it to stop the display of the game being
+ searched for.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Use the Options • Reset to default menu choice and
+ check all of the items, restart MameUI.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l5 level1 lfo2; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Final option, manually delete the MameUI32/64.ini and the
+ Mame.ini file in the \ini directory.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Crash
+ Related Topics</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Delete the \cfg\*.CFG, \diff\*.DIF, \ini\*.INI, or
+ \nv\*.NV files for the game that's crashing.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Check to see that the zip file is valid and that it's
+ not corrupt or read-only.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Verify the presence of the \ini directory under
+ MameUI.exe’s location.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If versions of MameUI prior to .66 had been installed
+ on the system, verify that the old registry key has been deleted with
+ regedit.exe. HKEY_CURRENT_USER/Software/Freeware/Mame32</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If crashing during an audit or an [<b>F5</b>] refresh,
+ it could be a corrupt .zip file. &nbsp;Extract it and re-zip. Pkunzip -t *.zip.
+ Note the file that dies during the audit and concentrate on that one. Also
+ verify that if zip files are not used, that the folder is not empty, or
+ contains partial or damaged ROMs.<span style="mso-spacerun: yes">&nbsp;
+ </span>Utilization of an external ROMs management utility like
+ <b style="mso-bidi-font-weight: normal"><a href="http://www.clrmame.com/">
+ <span style="COLOR: black">Clrmame</span></a></b> is recommended for repair
+ and identification of damaged sets.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If seeing crashes or weird screen coloration, try
+ disabling running background apps [in Win98, use msconfig.exe], Norton
+ Crashguard, PnP programs like Kaaza, eDonkey, LimeWire, popup killers,
+ viruscans, MS Office Fast Find, the Microsoft Office Bar, Intellimouse, even
+ IE subscription updates, etc. Try moving MameUI away from compressed
+ [DriveSpace, DoubleSpace, stacker] drives.&nbsp; IntelliMouse and Office
+ Toolbars have been known to cause conflicts.<span style="mso-spacerun: yes">&nbsp;
+ </span>Also disable items in the system tray, like the CD player, etc.&nbsp;
+ It may also be necessary to download and install the latest version of
+ DirectX from Microsoft to prevent some errors.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If MameUI crashes with an access violation it may be
+ the DEP (Data Execution Prevention) setting on that machine.<span style="mso-spacerun: yes">&nbsp;
+ </span>Add MameUI to the exception list in Control Panel / System / Advanced
+ / DEP.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>In some instances games may fail to start if the
+ installed directory path contains a large number of characters and spaces,
+ to alleviate this, install MameUI and its support directory structure into a
+ shorter path name, i.e. c:\MameUI\.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI may fail to launch its games in situations where
+ an errant, non-DX compliant, or badly written gamepad USB adapter
+ driver/software is used.<span style="mso-spacerun: yes">&nbsp; </span>This
+ includes some cheap Playstation, SNES, U64 converters.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Games may fail to start if a video cards DirectX driver
+ is flakey, utilise an earlier one to test or re-install DirectX.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Some recent viruses which attach to .exes will cause
+ page faults and access violations in MameUI when it's run.&nbsp; Use an
+ anti-virus check and verify MameUI is not infected.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Odd behaviour may be exhibited in NT based systems if
+ attempting to run games while security/permissions settings do not allow it
+ or the user is not an administrator or member of the administrator’s group.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Some anti-virus packages may slow down navigation
+ within the MameUI directory.<span style="mso-spacerun: yes">&nbsp; </span>
+ These are false positives and the anti-virus vendors should update their
+ virus dat signatures.<span style="mso-spacerun: yes">&nbsp; </span>It may
+ also be possible to exclude the MameUI.exe from real-time scanning as a
+ workaround.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>In the event of MameUI not launching a game and just
+ sitting there, try placing the entire MameUI directory and its
+ sub-directories including \ROMs into a more simple path, like c:\MameUI
+ instead of &quot;c:\Games for Fun\MameUI Goes Here\&quot;.<span style="mso-spacerun: yes">&nbsp;
+ </span>Simplify the path.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>On rare occasions malformed or damaged *.dat files
+ [history.dat, mameinfo.dat, cheat.dat] can cause MameUI to error on startup
+ when it tries to read them.<span style="mso-spacerun: yes">&nbsp; </span>
+ Remove those files individually to check for the one causing the crash.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>With the move to XML based Controller *.cfg files in
+ the .8x era it is necessary to remove the old \Ctrlr\*.ini files and use
+ their new *.cfg counterparts, otherwise MameUI may launch games then
+ immediately return to the GUI.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Use the Options • Reset to default menu choice and
+ check all of the items, restart MameUI.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Final option, manually delete the MameUI32/64.ini and the
+ Mame.ini file in the \ini directory.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Performance
+ Related Topics [incl. sound scratchiness and stuttering]</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI will start to crackle, scratch, or echo if the
+ game running is too taxing for the processor in use. This can be visually
+ confirmed by turning on FPS display with [<b>F11</b>], and frame skip to
+ auto with [<b>F8</b>].&nbsp; If the FPS dips anywhere or frame skipping
+ rises anywhere during the game play, the game is maxing out the CPU and
+ sound breakup could occur.<span style="mso-spacerun: yes">&nbsp; It is also
+ possible to determine if the host CPU can run the game at 100% by
+ unthrottling the emulation with the [F10] key, if the CPU can do it, it will
+ run the game faster than 100%.&nbsp; </span>If
+ upgrading machine components, provide MameUI with as much hardware as
+ possible; a faster CPU makes the most difference, followed by video card,
+ and RAM.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI will start to 'skip' sound on games that run
+ slightly over the host monitor refresh rate in full-screen mode with
+ triplebuffer.&nbsp; For example, Pac-Man and other early Namco games run at
+ 60.60Hz and if they are run on a fixed 60Hz LCD monitor using triplebuffer
+ they will skip since the emulation is outpacing the monitor. In this
+ instance it is necessary to toggle on the 'Refresh Speed' switch in the
+ Options • Default Options • Advanced tab.&nbsp; This issue can also be
+ overcome by running the game in windowed mode.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>As Mame has continued development, infrastructure and
+ accuracy has improved.<span style="mso-spacerun: yes">&nbsp; </span>As such,
+ the optimization point of the games has shifted so that older games may be
+ slower unthrottled overall than when run on earlier versions.<span style="mso-spacerun: yes">&nbsp;
+ </span>For example, in version .36 Donkey Kong may have run unthrottled at
+ 1900 FPS, but in .77 it runs 1500 FPS.<span style="mso-spacerun: yes">&nbsp;
+ Thus older machines [P3 and prior] will continue to have trouble playing the
+ same games as earlier versions of Mame.&nbsp; M</span>odern machines should have no problem running these
+ early 80's games at their intended ~60 FPS rate.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Periodically, speed-up hacks in the core code will be
+ removed to provide more accurate emulation of the games.<span style="mso-spacerun: yes">&nbsp;
+ </span>This can result in a drop in FPS for that particular family of games,
+ but can be offset by upgrading the machine MameUI is used on.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>On certain system setups (older), DirectDraw may be a
+ faster option than the D3D settings.<span style="mso-spacerun: yes">&nbsp;
+ </span>Choose Ddraw as the video mode in Default Options • Display. </p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>With the advent of MameUI .120 some historically
+ host CPU punishing games become playable on high end overclocked [3.6Ghz+]
+ Intel Core2Duo and Quad Cores.&nbsp; These processors combined with 64bit
+ operating systems and native 64bit MameUI provide almost 100% playability in
+ namcos21.c / namcos22.c / seattle.c and midvunit.c games.&nbsp; MameUI64 +
+ Vista64 + C2D chips is the best current combination for MameUI gaming on the
+ Windows platform.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Some of the largest games supported by MameUI [NeoGeo
+ mainly] can run into the hundreds of megabyte range when they are
+ uncompressed into memory, this combined with MameUI in memory, plus OS
+ overhead can lead to very slow performance as Windows swaps the information
+ out to disk if there is not enough physical memory.&nbsp; 512M to 1G of
+ memory is recommended for all current games [.118].</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>AMD’s Cool ‘n Quiet technology on certain setups has
+ been known to cause slowdowns and lags while working in the MameUI GUI as
+ well as causing some in-game sound and graphic stuttering.<span style="mso-spacerun: yes">&nbsp;
+ </span>Disable the feature in the BIOS to verify.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If seeing a severe slowdown in games that previously
+ didn't, toggle the 'Sleep when possible' menu item in Options •
+ Default Options • Miscellaneous.&nbsp; This happens to laptop users
+ particularly.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Certain games in MameUI perform better on machines that
+ cannot handle them 100% if auto-frame skipping is turned <b>off</b>.&nbsp;
+ </p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Certain games if run with D3D settings will perform
+ better if Triplebuffering is set to <b style="mso-bidi-font-weight: normal">
+ off</b>.<span style="mso-spacerun: yes">&nbsp; </span>D3D will double buffer
+ if triple is turned off.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>There may be certain sound anomalies in games if the
+ *.cfg files have become damaged, delete all the files in \cfg to remedy.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If games are running too <b>fast</b>, verify in the
+ Options • Default Game Options menu that the throttle option is turned <b>on</b>,
+ that sync to monitor refresh is turned <b>off </b>and Wait for Vertical Sync
+ is turned <b>off</b> in the Options • Default Game Options • Advanced menu.<span style="mso-spacerun: yes">&nbsp;
+ </span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI video performance can be greatly enhanced if
+ running in 32bpp mode by ensuring AGP Fast Writes are toggled on in the
+ motherboard BIOS.<span style="mso-spacerun: yes">&nbsp; </span>The videocard
+ drivers also need to support this setting, the switch for this may be in the
+ advanced tab of the Windows display control panel applet.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>There are some soundcards like early PCI
+ <span class="SpellE">SoundBlaster</span> 128 that will cause scratchiness
+ if their hardware acceleration is turned up too high.&nbsp; Move the slider
+ down various steps to troubleshoot in Control Panel • Sound • Advanced
+ Audio.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>There are some older video card/video driver
+ combinations that <b>can</b> do hardware stretching, but are slower than
+ running with hardware stretch <b>off</b>. If games are too sluggish with the
+ hw stretch on, toggle it off if possible.&nbsp; Some old PCI graphic cards have
+ been seen to have this problem.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo6; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If a large number of icons are being used in the GUI,
+ it is typically quicker to unzip them into the \icons folder instead of
+ leaving them zipped as icons.zip.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Joysticks /
+ Mice / Gamepad / Lightgun Related Topics</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l6 level1 lfo8; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Gamepads and mouse are disabled by default on first
+ MameUI launch, enable them by toggling their check boxes on in Options •
+ Default Options • Controllers.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l6 level1 lfo8; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI relies on DirectX’s DirectInput for joystick
+ support, ensure the game pad is seen as present and active in the game
+ controller control panel: start menu • settings • control panel • game
+ controllers.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l6 level1 lfo8; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If seeing keys ‘stick’ while playing, verify that the
+ operating systems’ accessibility options and their shortcut keys are turned
+ off, things like ‘sticky keys’, and verify that Popup killers or other
+ resident programs are not mapped to the sticking key.<span style="mso-spacerun: yes">&nbsp;
+ </span>Also keys can stick on some KVM switch boxes if their hotkey switches
+ are set to [<b style="mso-bidi-font-weight: normal">Ctrl</b>] etc.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l6 level1 lfo8; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Daisy chained gameport Microsoft Sidewinders [original]
+ in Win2k or XP do not work very well.&nbsp; Use USB gamepads instead. Single
+ Sidewinders may also cause odd behavior like ghost button presses.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l6 level1 lfo8; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Lightguns and mice are treated like mappable joysticks
+ in current versions of MameUI.<span style="mso-spacerun: yes">&nbsp; </span>If
+ multiple mice are in use it is necessary to enter the in-game [<b style="mso-bidi-font-weight: normal">TAB</b>]
+ menu and map their axes in the ‘Input General’ section.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Settings
+ Topics</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>With the advent of version 0.66 MameUI no longer stores
+ its configuration information in the Windows registry, it stores it in
+ \MameUI32/64.ini and \ini\Mame.ini.<span style="mso-spacerun: yes">&nbsp;
+ </span>To remove vestiges of the old versions, run regedit.exe and delete
+ the following key: HKEY_CURRENT_USER\Software\Freeware\MameUI.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If having trouble saving keyboard mappings and
+ configuration, verify that the *.cfg files are not read-only and that a
+ \MameUI\cfg directory is present.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If GUI settings and/or audit results aren’t being
+ maintained, verify the existence of a writeable MameUI32/64.ini and that the
+ \ini directory is present and writeable [not read only] under the MameUI.exe
+ location.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If baseline Mame settings like directories and game
+ options are not being maintained, verify the existence of a writeable
+ Mame.ini [not read-only] in the \ini directory and that the \ini directory
+ itself is writeable.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If experiencing odd behavior with MameUI saving files
+ or not appearing to clear its settings, verify that there are not multiple
+ shortcuts pointing to different versions, that an .exe is not being used by
+ itself instead of a shortcut to the .exe, or a shortcut pointing to an old
+ version of the .exe.<span style="mso-spacerun: yes">&nbsp; </span>Also
+ verify that there are not multiple versions of MameUI running in memory as
+ the last one out will save the settings.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If seeing MameUI folders being created on the desktop,
+ verify that the .exe itself is not sitting on the desktop and being launched
+ which is not correct. Verify that a short-cut to the original is being
+ properly utilised.<span style="mso-spacerun: yes">&nbsp; </span>This means
+ setting the properties on the shortcut to ‘start in’ the appropriate
+ directory that the original .exe resides in.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If the in-game [<b>TAB</b>] menu is no longer working
+ or can’t be accessed, it has been mapped to another key; delete the
+ default.cfg file in the \MameUI\cfg directory.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If in-game [<b style="mso-bidi-font-weight: normal">TAB</b>]
+ settings need to be completely reset due to bad mappings, delete the
+ default.cfg file in the \MameUI\cfg directory.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>To remove the mappings on an individual game from the [<b style="mso-bidi-font-weight: normal">TAB</b>]
+ menu, delete its *.cfg file in the \MameUI\cfg directory, i.e. dkong.cfg,
+ asteroid.cfg.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If having trouble mapping keys with the [<b style="mso-bidi-font-weight: normal">TAB</b>]
+ menu, verify the game is not paused while mapping.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI inherits a limit from baseline Mame on the
+ amount of characters that can be used for the ROM paths.<span style="mso-spacerun: yes">&nbsp;
+ </span>If directory settings are not being maintained, pare down the number
+ and names of the directories being added or simply use a single \ROMs
+ directory which MameUI expects.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If having trouble getting games to display in the
+ proper orientation [they will not rotate] verify that rotation is set to
+ default, and that there are no video-card specific hot-keys set in Windows’
+ advanced display settings tab that could impact rotation, ATI and NVIDIA
+ both now include the ability to rotate the Windows screen to portrait
+ orientation.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If games are appearing sideways regardless of rotation
+ settings, an onboard Intel graphic chipset or similar may be in use.<span style="mso-spacerun: yes">&nbsp;
+ </span>Disable the auto rotation capabilities of the Intel graphic chip.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI now supports the core’s –<span class="SpellE">mt</span>
+ switch.<span style="mso-spacerun: yes">&nbsp; </span>This allows
+ multi-threading of the final video blit during games. Dual core chips [X2,
+ C2D, etc.] can take advantage of this feature to offload the work to the
+ second thread and make MameUI more efficient.<span style="mso-spacerun: yes">&nbsp;
+ </span>Speed gains are seen on the unthrottled GPU bound games like dkong,
+ invaders, etc.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo10; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI now stores its settings in external *.ini files
+ instead of the registry.<span style="mso-spacerun: yes">&nbsp; </span>If it
+ is necessary to return MameUI to baseline, simply delete the MameUI32/64.ini
+ file and the Mame.ini file in the \ini directory.<span style="mso-spacerun: yes">&nbsp;
+ </span>The next time MameUI runs it will recreate those files with the
+ default settings.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">GUI Related
+ Topics &amp; Miscellaneous Tips</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI will read freestanding icons in the \icons
+ directory first, then icons in the icons.zip file.&nbsp; </p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>If seeing icon palette corruption in the GUI when
+ returning from a full screen game, try increasing the desktop color depth to
+ 24bpp or 32bpp.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Sometimes icons in large icon view may appear to be
+ missing their white color or have portions transparent, this is the result
+ of having white chosen as the windows desktop window setting in Control
+ Panel / Display.&nbsp; Change the window setting to slightly off-white or
+ another color to return the icons to their appropriate look.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>To toggle the MameUI UI fullscreen [no Windows titlebar
+ and potentially no toolbar or status bar] and back use the [<b style="mso-bidi-font-weight: normal">F11</b>]
+ key.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>The GUI text may disappear from the folder view if the
+ GUI font color chosen is very close to the Windows system background color
+ scheme or if it is a large enough font [or bold] to anti-alias. </p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>MameUI no longer supports *.bmp format and may show a
+ blank or empty background if a *.bmp is erroneously renamed and used for
+ bkground.png, or if the bkground directory is marked as read only and MameUI
+ cannot create the bkground.png file when run.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>To return to a blank gray background in the GUI, delete
+ the bkground.png file in the \MameUI\bkground directory.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Quickly navigate through games in the details view by
+ simply typing the first few letters in the name of the game, the highlight
+ will jump to that game and become more granular as the name is typed out.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Select a random game with [<b>Ctrl-R</b>].</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Audit an individual game with [<b>Alt-A</b>].</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Various arcade game controller companies produce custom
+ made configuration files for their setups; these *.cfg files need to go in
+ the \MameUI\ctrlr folder to be recognized in the MameUI controllers tab.<span style="mso-spacerun: yes">&nbsp;
+ </span>These files are the responsibility of the controller companies
+ themselves and are not included or endorsed by MameUI, they can typically be
+ found at the companies’ web sites.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>In grouped view, clones are indented regardless of
+ whether their parents are visible; in a non-All Games folder this means that
+ there is not a direct relationship of a clone to the game item above it if
+ that games’ parent is not shown.&nbsp; This behaviour can be changed by the
+ setting Interface Options • No offset for clones missing parent in view.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>Certain items in the GUI may be missing if MameUI is
+ run on a Win2K/XP box and the user is not an admin or member of the admin
+ group.</p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo12; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span>The unavailable folder and the available filter are
+ disabled in MameUI due to a direct request from Nicola.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Keyboard
+ Shortcuts</span></strong><span style="FONT-SIZE: 12pt"><o:p></o:p></span></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo14; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span><b style="mso-bidi-font-weight: normal">Type letters of
+ game name</b> to jump directly to its first instance.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Alt-1 through Alt-7</b>:
+ Toggle art views.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">Alt-A</b>: Audit selected game.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Alt-B</b>: Toggle art tabs.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Alt-D</b>: Toggle folder
+ pane.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">Alt-P</b>: Toggle screenshot area.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Alt-S</b>: Toggle status bar.
+ <b style="mso-bidi-font-weight: normal">Alt-T</b>: Toggle toolbar.
+ <b style="mso-bidi-font-weight: normal">Alt-U</b>: Audit selected folder.
+ <b style="mso-bidi-font-weight: normal">Alt-Enter</b>: Show games’
+ properties.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">Ctrl-F</b>: Text filter.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Ctrl-R</b>: Choose random
+ game from GUI. <b style="mso-bidi-font-weight: normal">Ctrl-Page Up</b>:
+ Scroll up in history.dat text window.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">Ctrl-Page Down</b>: Scroll
+ down in history.dat text window. <b style="mso-bidi-font-weight: normal">F11</b>:
+ Fullscreen mode toggle.</p>
+ <p style="BACKGROUND: white; MARGIN: 0in 0in 5pt 0.25in"><strong>
+ <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial','sans-serif'">Refresh
+ Restart Instructions<o:p></o:p></span></strong></p>
+ <p style="MARGIN: 0in 0in 5pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo14; tab-stops: list .5in">
+ <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
+ <span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span></span></span><b style="mso-bidi-font-weight: normal">a.</b>
+ Re-download the binary dist package from
+ <a href="http://mameui.info/">
+ <span style="COLOR: black">MameUI</span></a>.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">b.</b> Disable running
+ anti-virus packages before extracting the files.
+ <b style="mso-bidi-font-weight: normal">c.</b> Double-click the
+ self-extracting archive. <span style="mso-spacerun: yes">&nbsp;</span><b style="mso-bidi-font-weight: normal">d.</b>
+ When prompted, enter “c:\” [no quotes] as the destination folder.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">e.</b> Launch MameUI by
+ double-clicking its .exe, allow the audit/refresh to finish, it should go
+ quick as there are no ROMs.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">f.</b> Put a couple of zipped ROMs
+ from <a href="http://www.mamedev.org/roms"><span style="COLOR: black">
+ mamedev.org</span></a> in the c:\MameUI\ROMs directory.<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">g.</b> Launch MameUI, audit
+ the two games individually with [<b style="mso-bidi-font-weight: normal">Alt-A</b>].<span style="mso-spacerun: yes">&nbsp;
+ </span><b style="mso-bidi-font-weight: normal">h.</b> Launch Robby or
+ Gridlee.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">i.</b> Quit the game, then quit
+ MameUI.<span style="mso-spacerun: yes">&nbsp; </span>
+ <b style="mso-bidi-font-weight: normal">j.</b> Add more ROMs and try again.<br style="mso-special-character: line-break">
+ <br style="mso-special-character: line-break">
+ </p>
+ <p style="MARGIN: 0in 0in 5pt 0.25in"><span style="FONT-SIZE: 8pt">
+ <span style="mso-no-proof: yes">8/17/2007 1:17:01 AM</span> / john iv<o:p></o:p></span></p>
+</div>
+
+
+</html>
diff --git a/docs/release/src/osd/winui/help/html/mameui_systemreq.htm b/docs/release/src/osd/winui/help/html/mameui_systemreq.htm
new file mode 100644
index 00000000000..65871f6a806
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_systemreq.htm
@@ -0,0 +1,82 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI System Requirements</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+<base target="_blank">
+</head>
+
+<body background="../images/bkground.gif">
+
+<p class="MsoNormal" style="page-break-after: avoid; margin-left: 0in; margin-right: 0in; margin-top: 12.0pt; margin-bottom: 3.0pt">
+<b><i><span style="font-size: 14.0pt">System Requirements</span></i></b></p>
+<p class="MsoNormal">MameUI runs on Microsoft Windows 98SE, Windows
+ME, Windows 2000, Windows XP, Windows 2003 Server, Windows Vista, and Windows 7.</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">Because of the wide range of arcade hardware supported by
+MameUI, system requirements vary considerably.&nbsp; The
+more complex the original arcade hardware, the more CPU power is needed to
+emulate it.&nbsp; Mame strives for accuracy in its emulation; as such, over
+time, the performance point shifts as the underlying engine has been reworked
+and refined.&nbsp; Early games now require a bit more PC processing power to run
+than they did in earlier versions of Mame.&nbsp; This is typically not a great
+concern as modern PCs can run these early games easily at thousands of times
+their original speed.&nbsp; More recent games can often take upwards of 512M of memory, and
+Phenom / Core2 chips to emulate at 100% speed with effects.&nbsp; For those
+wishing to upgrade their systems; <b>MameUI benefits most from adding more CPU
+power, using a 64bit build on a 64bit OS</b>, and then memory and upgraded video card.</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">Currently there are some games supported in MameUI which are not
+playable at full frame rate on today's PC hardware.&nbsp; Many of these are
+mid to late 90's and beyond advanced 3D games which MameUI renders in software for accuracy sake.&nbsp;
+Recent developments in Mame [.120] have allowed some of these games to get close
+to 100% playable on high-end overclocked [3.6Ghz+] Intel Core2Duo and Quad Core
+cpus.&nbsp; Additionally the fastest combination for MameUI is one of the
+previously mentioned CPUs plus the 64bit version of MameUI combined with a 64bit
+Operating System like Windows 7 x64.</p>
+
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal"><font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2009-12-24 12:33 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37922" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_viewmenu.htm b/docs/release/src/osd/winui/help/html/mameui_viewmenu.htm
new file mode 100644
index 00000000000..6e897d4a85d
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_viewmenu.htm
@@ -0,0 +1,160 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI View Menu</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>View Menu</h2>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Toolbar</b> : Selecting this option from the view menu will
+toggle the toolbar on or off.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Status Bar</b> : Selecting this option from the view menu will
+toggle the status bar on or off.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Folder List</b> : Selecting this option from the view menu will
+toggle the folder list view on or off.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Screenshot</b> : Selecting this option from the view menu will
+toggle the screenshot area on or off.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Screenshot Tab</b> : Selecting this option from the view menu will
+toggle the screenshot area tabs, allowing to choose between the multiple
+different art types.&nbsp; Note that history.dat information is only displayed
+in the snapshot view.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Fullscreen</b> : Selecting this option from the view menu will
+
+switch the GUI into full screen mode.&nbsp; This will expand to fill the current
+desktop resolution, it will hide the menu bar, and it will hide the windows
+taskbar.&nbsp; Toggle in and out of it with F11, other alt shortcut keys are
+still active.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Show Pictures</b> : Selecting this option from the view menu will
+allow toggling the display of the individual art tabs in the screenshot area.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Large Icons</b> : Selecting this option from the view menu will
+display large icons in the gamelist area.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Small Icons</b> : Selecting this option from the view menu will
+display small icons in a different grid pattern in the gamelist area.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>List</b> : Selecting this option from the view menu will
+display small icons in the gamelist area.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Details</b> : Selecting this option from the view menu will
+display small icons along with full game name and any other fields chosen with
+the View • Customize Fields option.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Grouped</b> : Selecting this option from the view menu will
+display small icons along with full game name and any other fields chosen with
+the View • Customize Fields option, however the clone games will be displayed
+indented and alphabetized under their parents..</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Arrange Icons </b>: Selecting this option from the view menu
+will order the gamelist area by the choice made; game, directory, manufacturer,
+times played, type, or year.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Line Up Icons </b>: Selecting this option from the view menu
+will re-align the icons in views where it does not automatically happen.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Refresh </b>: Selecting this option from the view menu will
+initiate an update of the gamelist while MameUI searches for the existence of
+zip files that match game directory names.&nbsp; This is not as exhaustive as the
+audit function on the File menu.</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Custom Filters </b>: Selecting this option from the view menu
+will allow for the selective hiding of certain types of games.&nbsp; Manually typing
+in a phrase in the filter text box will only display games that have that text
+in their names [note valid input for the description filter are, game name,
+driver name e.g. 'cps2.c', and manufacturer].</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<span style="font-family: Symbol">
+<img width="11" height="11" src="../images/mame321.gif" alt="*"><span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><b>Customize Fields </b>: Selecting this option from the view menu
+will allow choosing which fields are displayed in columnar mode in the game list
+details view, selectable from the View • Details.&nbsp; The columns can also be
+ordered by moving them up and down the right hand side of the well.&nbsp; The game
+name field is always the first item and cannot be changed. </p>
+
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">&nbsp;</p>
+<p class="MsoNormal" style="text-indent: -.25in; margin-left: .75in">
+<font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2007-11-11 01:11 AM -0800<!--webbot bot="Timestamp" endspan i-checksum="37427" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_visual_elements.htm b/docs/release/src/osd/winui/help/html/mameui_visual_elements.htm
new file mode 100644
index 00000000000..c25e916cf8d
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_visual_elements.htm
@@ -0,0 +1,155 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>MameUI Toolbar / Status Bar / Windows</title>
+<style>
+<!--
+p
+ {margin-right:0in;
+ margin-left:0in;
+ font-size:10.0pt;
+ font-family:Arial;
+ color:black}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:16.0pt;
+ font-family:Arial;
+ color:windowtext;
+ font-weight:bold}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ page-break-after:avoid;
+ font-size:14.0pt;
+ font-family:Arial;
+ font-style:italic}
+ p.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:Arial;
+ margin-left:0in; margin-right:0in; margin-top:0in}
+-->
+</style>
+</head>
+
+<body background="../images/bkground.gif">
+
+<h2>MameUI Toolbar / Status Bar / Windows</h2>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">The MameUI <b>toolbar</b> extends the width of the application
+at the top and
+can be toggled on by using the View • Toolbar menu item, or the <b>Alt-T </b>keyboard
+shortcut.&nbsp; The buttons on the toolbar from left to right are : toggle folder
+list, toggle screenshot, large icons view, small icons view, list view, details
+view, help about, and help file.&nbsp; Click the items to toggle them on or off.&nbsp;
+The toolbar also contains the game search box, typing into this text box will
+filter out games.&nbsp; It is similar in function to the <strong>Ctrl-F</strong> filter but only
+filters on game descriptive name, it is also accessible with the <strong>Ctrl-E</strong>
+shortcut.</p>
+<p class="MsoNormal">
+<img border="0" src="../images/toolbar.gif" width="632" height="28"></p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">The MameUI <b>status bar</b> extends the width of the application
+at the bottom and can be toggled on by using the View • Status Bar menu item, or
+the <b>Alt-S</b> keyboard shortcut.&nbsp; The status bar indicates the full name of the game
+highlighted, and gives its internal status flag as to whether it’s working or if
+there are some issues with the emulation.&nbsp; The status bar also indicates the
+game count for the particular view used.</p>
+<p class="MsoNormal">
+<img border="0" src="../images/statusbar.gif" width="632" height="20"></p>
+<p class="MsoNormal">
+&nbsp;</p>
+<p class="MsoNormal"><b>MameUI can be divided into three windowed sections:</b></p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">The first section on the far left is the <b>folder view</b>,
+toggled on by using the View • Folder List menu item, or the Alt-D keyboard
+shortcut.&nbsp; This contains a tree style list that expands for certain items like
+year, manufacturer, and custom.&nbsp; By selecting one of these items, MameUI will
+display the games that meet that criterion.&nbsp; For example: selecting year / 1978,
+MameUI will
+display all the supported games manufactured in 1978.&nbsp; </p>
+<ul>
+ <li>
+<p class="MsoNormal">MameUI will display user
+created folders based on *.ini files located in the \MameUI\folders directory.&nbsp;
+See files in that location for examples.&nbsp; This location also houses the
+favorites.ini, where favorite games can be added to the text file and easily
+moved to other computers.<br>
+&nbsp; </p>
+ </li>
+ <li>
+<p class="MsoNormal">MameUI supports dragging and dropping games from the middle
+section game list into a custom folder in the left pane.&nbsp; MameUI supports
+the same procedure by secondary clicking on the game in the game list and
+choosing the 'add to custom folder' option.<br>
+&nbsp;</p>
+ </li>
+ <li>
+<p class="MsoNormal">MameUI also supports secondary clicking on a custom folder
+and renaming it, editing the custom folder name can also be accomplished by
+clicking the name of the folder three times quickly.<br>
+&nbsp;</p>
+ </li>
+ <li>
+<p class="MsoNormal">Secondary clicking on any of the folders also allows
+selectively displaying or hiding them in the tree.<br>
+&nbsp;</p>
+ </li>
+ <li>
+<p class="MsoNormal">Secondary clicking the vector folders and the \source\gamedriver
+folder allows for customizing
+away from default the games in that folder.<font face="Arial" size="2">&nbsp;
+Secondary click on the vector folder • properties in the folder pane to set
+options for that group of games.&nbsp; To alter global settings for game
+families select the properties for it, e.g. dkong.c for the Donkey Kong family
+of games&nbsp; This will change options for
+all games based on that driver.&nbsp; Thus there is the possibility to have
+four levels of alterations when a game's individual properties are viewed
+in All Games or any folder.&nbsp; The changes can be backed out of
+hierarchically with reset to default on each respective properties, or by
+deleting the .ini files in the \ini directory.</font></p>
+ </li>
+</ul>
+<p class="MsoNormal">The second, middle section of MameUI is the <b>game list</b>,
+always toggled on. &nbsp;This is where MameUI lists all of the games chosen
+in the left folder view.&nbsp; MameUI has the option to display the games as large
+icons, small icons, a list icons view, or details.&nbsp; Choosing details allows
+MameUI to display, in columnar mode, the game name as well as additional
+informational fields, chosen in the View • Customize Fields menu item.</p>
+<p class="MsoNormal">&nbsp;</p>
+<p class="MsoNormal">The third section, on the far right, is the <b>screenshot/art
+area</b>, toggled on by using the View • Screenshot menu item, or the <b>Alt-P</b> keyboard
+shortcut.&nbsp; This area of the GUI will display the optional artwork for each game
+selected, the artwork modes are toggled through by clicking on the picture area.&nbsp; The
+modes are: screenshot, flyer, cabinet, marquees, title shots, control panels,
+and history.&nbsp; <b>Alt-B</b>
+will toggle the screenshot tabs which give a visual selection method besides
+clicking the artwork area.&nbsp; Secondary clicking on the screenshot area will
+also bring up a shortcut dialogue with the file types available and allow
+toggling on or off individual tabs.&nbsp; The area under the screenshot mode
+will also display the history.dat information if that file is present [it will
+not display in the screenshot area if the history tab is enabled].&nbsp; Each of
+the tabs can be navigated to by their accelerator keys, <b>Alt-1</b>, <b>Alt-2</b>,
+<b>Alt-3</b>, etc. Further
+information about these files is in
+<a style="color: blue; text-decoration: underline; text-underline: single" href="mameui_art.htm">Art and Support Files</a>.</p>
+
+<p class="MsoNormal">&nbsp;</p>
+
+<p class="MsoNormal"><font size="1">
+<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y-%m-%d %I:%M %p %Z" startspan -->2008-07-16 12:03 AM -0700<!--webbot bot="Timestamp" endspan i-checksum="37949" -->
+/ john iv</font></p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/html/mameui_whatsnew32.htm b/docs/release/src/osd/winui/help/html/mameui_whatsnew32.htm
new file mode 100644
index 00000000000..f686d1c627c
--- /dev/null
+++ b/docs/release/src/osd/winui/help/html/mameui_whatsnew32.htm
@@ -0,0 +1,2058 @@
+</style>
+
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
+
+<title>MameUI Whatsnew</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>john4</o:Author>
+ <o:Template>Normal</o:Template>
+ <o:LastAuthor>john4</o:LastAuthor>
+ <o:Revision>100</o:Revision>
+ <o:TotalTime>113</o:TotalTime>
+ <o:Created>2003-11-03T04:49:00Z</o:Created>
+ <o:LastSaved>2004-08-30T18:21:00Z</o:LastSaved>
+ <o:Pages>6</o:Pages>
+ <o:Words>3470</o:Words>
+ <o:Characters>19785</o:Characters>
+ <o:Lines>164</o:Lines>
+ <o:Paragraphs>46</o:Paragraphs>
+ <o:CharactersWithSpaces>23209</o:CharactersWithSpaces>
+ <o:Version>11.6360</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:DisplayBackgroundShape/>
+ <w:ActiveWritingStyle Lang="EN-US" VendorID="64" DLLVersion="131078"
+ NLCheck="1">1</w:ActiveWritingStyle>
+ <w:SpellingState>Clean</w:SpellingState>
+ <w:GrammarState>Clean</w:GrammarState>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:Wingdings;
+ panose-1:5 0 0 0 0 0 0 0 0 0;
+ mso-font-charset:2;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+ {font-family:SimSun;
+ panose-1:2 1 6 0 3 1 1 1 1 1;
+ mso-font-alt:\5B8B\4F53;
+ mso-font-charset:134;
+ mso-generic-font-family:auto;
+ mso-font-format:other;
+ mso-font-pitch:variable;
+ mso-font-signature:1 135135232 16 0 262144 0;}
+@font-face
+ {font-family:"\@SimSun";
+ mso-font-charset:134;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:3 135135232 16 0 262145 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:Arial;
+ mso-fareast-font-family:"Times New Roman";
+ color:windowtext; margin-left:0in; margin-right:0in; margin-top:0in}
+h1
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:1;
+ font-size:16.0pt;
+ font-family:Arial;
+ mso-fareast-font-family:SimSun;
+ color:windowtext;
+ font-weight:bold;}
+h2
+ {margin-top:12.0pt;
+ margin-right:0in;
+ margin-bottom:3.0pt;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ page-break-after:avoid;
+ mso-outline-level:2;
+ font-size:14.0pt;
+ font-family:Arial;
+ mso-fareast-font-family:SimSun;
+ color:windowtext;
+ font-weight:bold;
+ font-style:italic;}
+p
+ {mso-margin-top-alt:auto;
+ margin-right:0in;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:Arial;
+ mso-fareast-font-family:"Times New Roman";
+ color:black;}
+span.GramE
+ {mso-style-name:"";
+ mso-gram-e:yes}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:8872955;
+ mso-list-template-ids:-1360482768;}
+@list l0:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l0:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1
+ {mso-list-id:45884847;
+ mso-list-template-ids:-1235059890;}
+@list l1:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l1:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l1:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2
+ {mso-list-id:439879227;
+ mso-list-template-ids:1518119328;}
+@list l2:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l2:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l2:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3
+ {mso-list-id:489293858;
+ mso-list-template-ids:1845671390;}
+@list l3:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l3:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l3:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4
+ {mso-list-id:619726884;
+ mso-list-template-ids:-1537423390;}
+@list l4:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l4:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l4:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5
+ {mso-list-id:621153244;
+ mso-list-template-ids:995154020;}
+@list l5:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l5:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l5:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6
+ {mso-list-id:730887387;
+ mso-list-template-ids:-2040104406;}
+@list l6:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l6:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l6:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7
+ {mso-list-id:1220288851;
+ mso-list-template-ids:880986230;}
+@list l7:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l7:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l7:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8
+ {mso-list-id:1275020199;
+ mso-list-template-ids:551206706;}
+@list l8:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l8:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l8:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9
+ {mso-list-id:1357196694;
+ mso-list-template-ids:795358278;}
+@list l9:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l9:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l9:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10
+ {mso-list-id:1503541588;
+ mso-list-template-ids:823551726;}
+@list l10:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l10:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l10:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11
+ {mso-list-id:1535195385;
+ mso-list-template-ids:-778014484;}
+@list l11:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l11:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l11:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12
+ {mso-list-id:1924140378;
+ mso-list-template-ids:-893489372;}
+@list l12:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l12:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l12:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13
+ {mso-list-id:1983192207;
+ mso-list-template-ids:-1719795094;}
+@list l13:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l13:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l13:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14
+ {mso-list-id:1997802346;
+ mso-list-template-ids:325871162;}
+@list l14:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l14:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l14:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15
+ {mso-list-id:2000308197;
+ mso-list-template-ids:-1152595466;}
+@list l15:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l15:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l15:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16
+ {mso-list-id:2035185965;
+ mso-list-template-ids:57055450;}
+@list l16:level1
+ {mso-level-number-format:bullet;
+ mso-level-text:\F0A7;
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;
+ mso-ansi-font-size:10.0pt;
+ font-family:Wingdings;}
+@list l16:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l16:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:"Table Normal";
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0in 5.4pt 0in 5.4pt;
+ mso-para-margin:0in;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="1026"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body bgcolor=white background="../images/bkground.gif" lang=EN-US
+style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1>Changes to MameUI</h1>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">127.5</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fixed issue w/ BIOS games not
+ being passed properly to core or stored in *.ini files. [<strong>Curt Coder</strong>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fixed sorting on source column
+ in gamelist. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">126.1</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Moved search bar over to the
+ flush right on the toolbar, made it take the UI font, and also made it
+ accessible with Ctrl-E like any search in Vista, Firefox, or IE.&nbsp;Added
+ a new debug tab to the options and loaded it w/ the missing items from the core. [<b style='mso-bidi-font-weight:
+ normal'>René Single / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">122.1</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fixed long standing issue
+ where icons would corrupt and return to their defaults if scrolled through
+ entire game list&nbsp; [<b style='mso-bidi-font-weight:
+ normal'>René Single / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">120.2</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Rebranded Mame32 to MameUI32
+ and MameUI64 to avoid confusion with the baseline builds that are now being
+ released as 64bit native apps.&nbsp; [<b style='mso-bidi-font-weight:
+ normal'>Mike Haaland / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">120.2</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added support for a
+ 'nonworking.png' which will appear for non-working games in the art panes if
+ the specific game *.png doesn't exist <strong>and</strong> the game is
+ flagged as non-working in the core.<font face="Arial" size="2"> </font>[<b style='mso-bidi-font-weight:
+ normal'>Mike Haaland / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">118.6</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added game search/filter to
+ the toolbar.&nbsp; Works similarly to the Ctrl-F filter but doesn't search
+ on manufacturer, driver name, or shortname.<font face="Arial" size="2">&nbsp;
+ Added PCB art pane view. </font>[<b style='mso-bidi-font-weight:
+ normal'>René Single / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">118.5</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Per MameDEV request; removed
+ the ROMs view customization item, and reworked auditing to not show an icon
+ change state for unavailable sets in all games folder view.&nbsp; This was
+ to bring MameUI into compliance w/ the section of the Mame terms of usage
+ which states '<font face="Arial" size="2">Do not provide a means of
+ generating a list of games that specifically identifies those games for
+ which the user does not have image files'.&nbsp; Audit functionality and
+ game search on start is still present to populate the 'Available' folder
+ view. </font>[<b style='mso-bidi-font-weight:
+ normal'>Mike Haaland</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Promoted screen orientation
+ folder view to 'horizontal' and 'vertical' top level views and added them to
+ the Ctrl-F filter dialogue. [<b style='mso-bidi-font-weight:
+ normal'>Mike Haaland</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">118.2</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fixed all recent options
+ related bugs as well as expanding the functionality of the audit control so
+ it doesn't cut off anymore. [<b style='mso-bidi-font-weight:
+ normal'>Mike Haaland</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">110.2</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Re-arranged UI elements in
+ Options menus. [<b style='mso-bidi-font-weight:
+ normal'>Radius</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">107.1</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Updated the help file to
+ include the new UI support for the core's latest video changes.&nbsp;[<b style='mso-bidi-font-weight:
+ normal'>John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">107</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added UI support for the large
+ amount of core changes made by Aaron Giles for the new video renderer.&nbsp;[<b style='mso-bidi-font-weight:
+ normal'>René Single / John IV</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Created the new scanline *.png
+ files in \artwork for use with the new -effect switch. [<b>John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">105.2</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added BIOS folder view on the
+ left pane.&nbsp; This folder lists all the BIOSes supported by MameUI and
+ allows launching them as if turning on a machine without a cartridge etc. in
+ it, like the Neo-Geo.&nbsp; [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">104.7</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added properties for driver.c
+ and vector on secondary click shortcut menu.&nbsp; This is the same as
+ altering the properties on the vector folder and the \source\driver folder
+ on the left pane.&nbsp; [<b style='mso-bidi-font-weight:
+ normal'>René Single / John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">104.4</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added support for priority
+ switch, now a slider.&nbsp; Note: there may be system related issues going
+ to setting 1 (lagging keyboard, joystick controls), default is 0. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Removed multi-screen folder
+ view on left pane as that flag has been removed in the core. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added mngwrite option to
+ launch a game and immediately begin recording a MNG movie file. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">101.1</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added support for savestate
+ game folder view on left.&nbsp; Added switch for autosave.
+ [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.</span><font size="3">100</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>New Galaxian homage about.bmp.
+ [<b style='mso-bidi-font-weight:
+ normal'>John IV</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.99.</span><font size="3">3</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Re-implemented history.dat for
+ MameUI which had its support removed from core. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.98.</span><font size="3">3</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>UI dialogues realignment. [<b>Radius</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added ability to type in Mame
+ shortname in the Ctrl-F text filter, i.e. 'ddonpach'. [<b>John IV / Mash</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.96.4</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>First pass at adding support
+ for the analogue and digital controller section of the core. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.95.</span><font size="3">5</font></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added core's -screen switch to
+ UI to allow playing games on secondary/tertiary monitors in multi-head
+ setups. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.90.3</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>More UI dialogues realignment. [<b style='mso-bidi-font-weight:
+ normal'>Radius</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.89.3</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Re-aligned UI elements in
+ Options menus and added some XP-style icons. [<b style='mso-bidi-font-weight:
+ normal'>Radius</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.88.1<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added switch to toggle
+ validity checking in the binary. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.87.1<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Increased start up speed via
+ driver info caching. [<b>Sauro Puccini / Chris Kirmse</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.86.1<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Reworked MameUI folder
+ properties and their initial memory allocation.<span
+ style='mso-spacerun:yes'>  </span>Results in halving MameUI’s memory
+ footprint on most systems. [<b style='mso-bidi-font-weight:normal'>René
+ Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.86<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Reworked MameUI multisession
+ behaviour.<span style='mso-spacerun:yes'>  </span>When launching a game,
+ MameUI
+ will now dynamically resize itself in memory rather than spawning a
+ separate core process, saving some memory (this new feature impacts the
+ icons on windowed mode playing and the show caption option). [<b
+ style='mso-bidi-font-weight:normal'>Chris Kirmse</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Re-added support for custom
+ controller selection again in the controller tab. [<b style='mso-bidi-font-weight:
+ normal'>Chris Kirmse</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.84.5<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Cleaned up the Options •
+ Interface Options menu, adding sliders. [<b style='mso-bidi-font-weight:
+ normal'>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Internal clean-ups to provide
+ support for the new core changes. [<b style='mso-bidi-font-weight:normal'>Chris
+ Kirmse</b> / <b style='mso-bidi-font-weight:normal'>Nathan Woods</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.84.2<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added feature request to
+ place a border around the artwork in the art pane, user selectable size
+ and color (0=no border). [<b>René Single</b><b style='mso-bidi-font-weight:
+ normal'> / John IV</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added dump status folder
+ view, an easy reference for un-dumped and badly dumped ROMs for folks who
+ may be in a position to update them. [<b>René Single</b><span
+ style='mso-bidi-font-weight:bold'>]</span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-weight:
+ bold'>Expanded game list font control to go beyond the original 16 color
+ choices allowing access to a greater UI customization (see last color on
+ drop down list ‘custom’). [<b>René Single</b>]</span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-weight:
+ bold'>Added wave output option to match the core.<span
+ style='mso-spacerun:yes'>  </span>File menu / Play and Record Wave output.
+ [<b>Chris Kirmse</b>]</span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.84<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Various internal treeview
+ fixes [year / manufacturer] and cleanups. [<b style='mso-bidi-font-weight:
+ normal'>Nathan Woods / <span style='mso-bidi-font-weight:bold'>René Single</span>
+ / Mamesick / Chris Kirmse</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Factored out list view
+ handling into its own module, picker.c.<span style='mso-spacerun:yes'> 
+ </span>Auto_malloc() now used and appears to result in a speed up of the
+ GUI game list scrolling, however at the moment it does cause slight pauses
+ moving from one ‘view’ to another. [<b style='mso-bidi-font-weight:normal'>Nathan
+ Woods</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added ability to display
+ games in windowed mode without their titlebar caption. Not fully
+ functioning w/ GCC compile. [<b>René Single / John IV</b><span
+ style='mso-bidi-font-weight:bold'>]</span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.82<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Brought game ‘not working’
+ status messages in-line with core [status bar, general properties, etc.]
+ and rearranged status area on properties tab.<span
+ style='mso-spacerun:yes'>  </span>[<b style='mso-bidi-font-weight:normal'>Mamesick</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added sample folder view. [<b
+ style='mso-bidi-font-weight:normal'>Mamesick</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Renamed Hard Disk folder view
+ to CHD due to newly supported CD CHDs. [<b style='mso-bidi-font-weight:
+ normal'>John IV / Nathan Woods</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.81<o:p></o:p></span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Moved placement of
+ bkground.png to \bkground folder instead of \snap folder. [<b>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fixed erroneous behaviour for
+ Imperfect folder view. [<b>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Corrected audio latency
+ slider movement and setting past notch 4. [<b>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added customizable quit key
+ [default Alt-Q] for the mappable keyboard solution option. [<b>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added new History.dat option
+ to allow display under any or all of the art views in Options • Interface
+ Options. [<b>René Single</b>]</li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.79</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added an ‘Imperfect’ folder
+ view on the left pane, this categorizes the various problems flagged in
+ games. [<b>René Single</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Reworked handling of the BIOS
+ option, now that there are multiple drivers that support different BIOSes
+ [neogeo.c, stv.c] the global setting is not appropriate.<span
+ style='mso-spacerun:yes'>  </span>Select the driver from the source folder
+ view on the left pane and change its BIOS settings, this will alter it for
+ all games in that driver.<span style='mso-spacerun:yes'>  </span>The
+ functionality remains the same for altering individual games settings in
+ all games view or anywhere else. [<b>René Single</b>]</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added the ability to control
+ the MameUI GUI via mappable keyboard solutions.<span
+ style='mso-spacerun:yes'>  </span>This feature is intended to compliment
+ the GUI control via joystick option first offered in version .70
+ below.<span style='mso-spacerun:yes'>  </span>It is designed to allow
+ users of Mame cabinets with keyboard encoders the same functionality and
+ is controlled in the mameUI32/64.ini file [mapping the enter key to button 1
+ to launch a game for example], using the same syntax as the \ctrlr files.
+ [<b style='mso-bidi-font-weight:normal'>Jarek Burczynski / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added support for the new
+ core switches for lightgun modifications; reload to allow mapping reload
+ to keys, and dual gun setups. [<b style='mso-bidi-font-weight:normal'>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added accelerator key for
+ folder level ‘mini-audits’, Alt-U [<b>René Single</b><b style='mso-bidi-font-weight:
+ normal'> / John IV</b>].<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added accelerator key support
+ for scrolling up and down through history.dat text window. CTRL-Page Up /
+ CTRL-Page Down.<b style='mso-bidi-font-weight:normal'> </b>[<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added toggle in Grouped view
+ to allow clones missing a parent to display non-indented. [<b>René Single</b><span
+ style='mso-bidi-font-weight:bold'>]</span><span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-weight:
+ bold'>Added support for the core’s new save state loading on game
+ start.<span style='mso-spacerun:yes'>  </span>[<b>René Single</b>]</span><span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-weight:
+ bold'>Added support for the core’s new keyboard LED choices, USB or PS/2.
+ [<b>René Single</b>]</span><span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.78</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added the ability to do ‘mini-audits’
+ on each of the folders on the left pane.<span style='mso-spacerun:yes'> 
+ </span>Secondary click on the folders to see audit as a choice. [<b>René
+ Single</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Changed behaviour of MameUI
+ when displaying games that have the protection not emulated flag,
+ previously it would flag these games as non-working and display the
+ warning.ico.<span style='mso-spacerun:yes'>  </span>Now warning.ico and
+ non-working status will only occur if the game has the non-working flag
+ attached in the driver. [<b>René Single / </b><b style='mso-bidi-font-weight:
+ normal'>Mamesick / John IV / Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Increased CPU and sound area
+ on games’ properties page to accommodate 5 lines now that tceptor and tmnt
+ utilise it. [<b>René Single / Chris Kirmse</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Altered behaviour of
+ properties titlebar on driver.ini to show the driver name instead of
+ ‘folder’ properties. [<b>René Single / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>No longer UPX compressing the
+ MameUI .exe.<span style='mso-spacerun:yes'>  </span>This saves 20 Megs
+ when MameUI is loaded into memory, will allow for better dynamic loading,
+ and won’t trip off virus detectors that have trouble w/ UPX compression.<span
+ style='mso-spacerun:yes'>  </span>As a result, MameUI.exe is now 20 Megs
+ in size on the hard drive.<span style='mso-spacerun:yes'>  </span>The
+ distribution package is also being changed and compressed with 7-Zip as a
+ self-extracting archive, this actually makes the distribution package
+ about 1 Meg smaller than previous releases. [<b style='mso-bidi-font-weight:
+ normal'>John IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Switched default settings in
+ MameUI to disable auto frameskipping and to use draw every frame per
+ discussion on MameDEV list. [<b style='mso-bidi-font-weight:normal'>John
+ IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Added 48000 as a sample rate
+ option, works well with modern soundcards and chips. [<b style='mso-bidi-font-weight:
+ normal'>John IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.77</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l8 level1 lfo1;tab-stops:list .5in'>Fulfilling the longstanding
+ feature req. added the ability to globally alter vector.ini and driver.ini
+ to match the core.&nbsp; Secondary click on the vector folder • properties
+ in the folder pane to set options for that group of games.&nbsp; To alter
+ global settings for game families, drill down into the source folder in
+ the folder pane, and secondary click on a driver's properties i.e.
+ 1942.c.&nbsp; This will change options for all games based on that
+ driver.&nbsp; The different levels of alteration are color coded,
+ vector.ini changes are red, driver.ini changes are green, and individual
+ game settings are blue.&nbsp; Thus there is the possibility to have four
+ color/levels of alterations when a game's individual properties are viewed
+ in All Games or any folder.&nbsp; The changes can be backed out of
+ hierarchically with reset to default on each respective properties, the
+ reset to default global option, or by deleting the .ini files in the \ini
+ directory.<span style='mso-spacerun:yes'>  </span><b style='mso-bidi-font-weight:
+ normal'>Note</b>: Currently the color alterations do not display properly
+ with XP in themed mode, but the functionality works [bug 462].<span
+ style='mso-spacerun:yes'>  </span>Coded solutions to this issue via DIFF
+ are welcomed. [<b>René Single / Chris Kirmse / John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.76</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Added programmatically
+ populated lightgun and multi-monitor folders. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Added reset play count and
+ play time for individual games, and globally. [Secondary click on game,
+ &amp; Options • Interface Options. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Allowed filter propagation
+ downward from parent folders, toggle this feature in Options • Interface
+ Options. [<b>René Single</b>]<span style='font-size:12.0pt;font-family:
+ "Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Changed behavior of vertical
+ scrollbar in history pane, will not show if there is less text than
+ available room. [<b>René Single</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Extended game not working
+ status support to show more flags in status bar and game properties. [<b>René
+ Single</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Added tool tip text to status
+ bar if longer than displayable name is selected. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Increased history.dat buffer
+ to prevent cut-off and overflow. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l7 level1 lfo2;tab-stops:list .5in'>Re-implemented ability to
+ show game's icon on title bar in windowed mode. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.72</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l0 level1 lfo3;tab-stops:list .5in'>Added the ability to scale
+ the right side art pane contents upwards as the window size increases,
+ toggle on Options • Interface Options. [<b>René Single / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l0 level1 lfo3;tab-stops:list .5in'>Expanded the reach of the
+ CTRL-F text filter, it can now act on name, driver name e.g. 'cps2.c', and
+ manufacturer.&nbsp; This is a quick method for immediately seeing a driver
+ family instead of drilling down through the source folder on the left. [<b>René
+ Single / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.71</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Added the ability to
+ selectively disable built in folder views on the left pane, secondary
+ click in the window area for the dialogue box. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Added control panel art tab.
+ [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Fixed audit control overflow
+ issue. [<b>René Single</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Designed art tab state
+ toggles to be more readable in MameUI32/64.ini. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Added the ability to have
+ MameUI automatically cycle the selected art views at an interval, in
+ seconds.&nbsp; Accessible in Options • Interface Options. [<b>René Single
+ / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Added the ability to track
+ the amount of time spent playing each game in minutes and seconds.&nbsp;
+ Displays in details or grouped view.&nbsp; Add the column in View • Customize
+ fields. [<b>René Single / Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l1 level1 lfo4;tab-stops:list .5in'>Added the ability to view
+ game's icon on title bar in windowed mode. [<b>René Single / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.70.1</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l12 level1 lfo5;tab-stops:list .5in'>Removed saturate slider from
+ D3D tab. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:
+ "Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l12 level1 lfo5;tab-stops:list .5in'>Fixed cleanstretch and
+ prescale settings not holding. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l12 level1 lfo5;tab-stops:list .5in'>Implemented BIOS selection
+ on per game basis [only Neo Geo games currently] and allowed temporary
+ global settings for BIOS via number. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.70</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added art tab with only
+ history.dat.&nbsp; If this tab is enabled and history.dat is present
+ history text will no longer appear beneath the screenshot. [<b>Tor Arne
+ Vestbø / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added option to hide the
+ mouse cursor on launch in full screen on Options • Interface Options. [<b>Tor
+ Arne Vestbø</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Addressed some long standing
+ bugs dealing with icon decimation and windows title bar size, and
+ details/grouped view not holding the column size on return from large icon
+ view post-session restart. [<b>René Single</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added option to expand MameUI
+ to full screen kiosk mode without any windows controls [F11]. [<b>Tor Arne
+ Vestbø / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Created new Berzerk homage about.bmp. [<b>John IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Reworked drop down for D3D
+ prescale effect, now allowing various levels of sharpness to be used. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Updated win32ui.c to pull
+ certain information more appropriately out of layout.c. [<b>Nathan
+ Woods/MESS32</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Removed obsoleted version
+ mismatch toggle. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added a built in orientation
+ folder view for displaying vertical and horizontal games. [<b>René Single</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added support for the new
+ cleanstretch options. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l3 level1 lfo6;tab-stops:list .5in'>Added ability to map joystick
+ actions in MameUI32/64.ini to control GUI navigation instead of being hard
+ coded:<br>
+ <b>Format</b>: joystick_number, stick_type, axis_or_button, direction<br>
+ <br>
+ #define JOYCODE_STICK_BTN 0<br>
+ #define JOYCODE_STICK_AXIS 1<br>
+ #define JOYCODE_STICK_POV 2<br>
+ #define JOYCODE_DIR_BTN 0<br>
+ #define JOYCODE_DIR_NEG 1<br>
+ #define JOYCODE_DIR_POS 2<span style='font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<p style='margin-left:.5in'>So, pressing button 3 on joystick one would be:
+1,0,3,0<br>
+<br>
+ui_joy_up 1,1,2,1<br>
+ui_joy_down 1,1,2,2<br>
+ui_joy_left 1,1,1,1<br>
+ui_joy_right 1,1,1,2<br>
+ui_joy_start 1,0,1,0<br>
+ui_joy_pgup 2,1,2,1<br>
+ui_joy_pgdwn 2,1,2,2<br>
+ui_joy_home 0,0,0,0<br>
+ui_joy_end 0,0,0,0<br>
+ui_joy_ss_change 2,0,3,0<br>
+ui_joy_history_up 2,0,4,0<br>
+ui_joy_history_down 2,0,1,0<br>
+ui_joy_exec 0,0,0,0</p>
+
+<p style='margin-left:.5in'>For stick type POV there are no directions, only
+four axes (0-3) [<b>Tor Arne Vestbø</b>]</p>
+
+<h2><span style='font-size:12.0pt'>v.69</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l11 level1 lfo7;tab-stops:list .5in'>Added support for the new
+ D3D filter and effects options in Options • Default Game Options •
+ Direct3D, see help menu contents for further descriptions of the new
+ features. [<b>John IV / Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l11 level1 lfo7;tab-stops:list .5in'>Added support for the new
+ core toggle -bios to allow selection of the various supported Neo Geo
+ BIOSes. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:
+ "Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.68</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l9 level1 lfo8;tab-stops:list .5in'>Added code to allow clicking
+ anywhere in the screenshot window to toggle the art views.&nbsp; No longer
+ necessary to click directly on the default image. [<b>K&amp;K</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l9 level1 lfo8;tab-stops:list .5in'>Added code to allow disabling
+ / toggling individual art views on the view menu and the context menu of
+ the art window. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l9 level1 lfo8;tab-stops:list .5in'>Added support for the new
+ core D3D items, accessible on the Options • Default Game Options • Direct3D.
+ [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l9 level1 lfo8;tab-stops:list .5in'>Added support for the new
+ core audio latency settings. [<b>Chris Kirmse</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.67</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l14 level1 lfo9;tab-stops:list .5in'>Re-worked the rotation
+ options to a drop down, and included the new switches for auto-clockwise /
+ auto-anti-clockwise for pivot monitors. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.66</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l4 level1 lfo10;tab-stops:list .5in'>Moved towards an *.ini based
+ settings storage scheme to more closely match the Mame.exe core,
+ individual game *.inis whose settings are altered are stored in the \ini
+ directory. The MameUI GUI settings are stored in MameUI32/64.ini in the root
+ w/ MameUI.exe, and MameUI.ini is stored in the \ini directory and should
+ be interchangeable with a regular Mame.ini.&nbsp; Purge these two items to
+ return to baseline, the registry is no longer used for MameUI. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l4 level1 lfo10;tab-stops:list .5in'>Provided an additional 'migration'
+ version of MameUI which will copy the contents of the registry key and
+ write it out to the new *.ini scheme when exiting.&nbsp; Useful for people
+ who have a large number of individual game customizations. [<b>John IV /
+ Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l4 level1 lfo10;tab-stops:list .5in'>Added toggle for high thread
+ priority in Options • Interface Options to match the core's new
+ -high_priority switch.&nbsp; This will devote more system resources and
+ time to MameUI at the expense of other already running programs. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.65</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l10 level1 lfo11;tab-stops:list .5in'>Updated columnedit.c to
+ allow for MESS32 usage in software view. [<b>Nathan Woods/MESS32</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l10 level1 lfo11;tab-stops:list .5in'>Reworked F5/refresh
+ routines to utilise more audit code and logic. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l10 level1 lfo11;tab-stops:list .5in'>Reworked -lightgun
+ handling, enabling independently selectable mouse control for those games.
+ [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l10 level1 lfo11;tab-stops:list .5in'>Custom icons are included
+ in the distribution \icons directory to show what the control/tree icons
+ are without having to go through the source. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.63.1</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Fixed analogue dead-zone not
+ being maintained, and pre-0.63 timing not being maintained. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Added folder view for hard
+ drive based games. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Addressed missing/blank
+ custom icon display indexing issue on F5/refresh. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Sped up MameUI launch /
+ folder reading routine. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Fixed screenshot area
+ decimation when resizing images larger than the viewable area. [<b>John IV
+ / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l5 level1 lfo12;tab-stops:list .5in'>Added additional help topic
+ IDs and tool tips. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.63</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added code to ROM loading
+ dialogue to visually indicate user intervention when the game being
+ launched may not work due to 'no good dump' this will match the baseline
+ Mame [press ok to continue].&nbsp; Examples include the game Astyanax,
+ 64th Street etc. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Return to baseline non-I686
+ compile as it prevented MameUI working on a variety of machines. [<b>John
+ IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Made numerous code changes
+ to allow MameUI to be compiled with the new MinGW 2.0 package. [<b>Chris
+ Kirmse / Mike Haaland</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Distribution compiles are
+ now done using above mentioned MinGW 2.0 package. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added code to allow for a
+ tool tip to appear showing the full name of a game whose description is
+ cut-off by column width in details/grouped view.&nbsp; Hover cursor over
+ game to activate. [<b>Andrew Kirmse / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>The default
+ \folders\Favorites.ini has been cleaned out.&nbsp; Now that it is easy to
+ drag and drop or secondary click to add games from the main list to the
+ custom folders, it no longer needs to serve as an example using personal
+ favorites. Be sure to backup existing \folders\Favorites.ini if using the
+ built in installer version of the MameUI distribution. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Tweaked code for drag &amp;
+ drop of games into custom folders.&nbsp; In a custom folder to drag an
+ item out for deletion, it must go out of the game list pane either left,
+ right, up, or down beneath the last item in the pane or further out of the
+ GUI. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Reworked internal file
+ handling code to interface with Aaron's substantial core updates. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Submitted code suggestion
+ to allow for more granular sorting and display of items in the Manufacturers
+ view, so companies will no longer be grouped with others incorrectly. [<b>René
+ Single</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Created new main icon and
+ about.bmp 'Ladybug Homage'. [<b>John IV</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Fixed ascending/descending
+ toggle via View • Arrange Icons for columns other than Game.&nbsp; Added
+ some logic to the -listsourcefile column display. Prevented color depth
+ and refresh rate settings from being displayed if games are played in
+ windowed mode. [<b>René Single / Chris Kirmse</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Made Misc. art option gray
+ properly when its parent control was deselected. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Submitted code to clean up
+ some issues with the list and small icons view and icons squishing in
+ details view upon return from another view like large icons. [<b>René
+ Single / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Upgraded MameUI to utilize
+ the new common controls from Windows XP, allowing the proper look of an XP
+ application without the need for an external manifest file. [<b>Chris
+ Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added ability to rename
+ custom folders from the tree view, secondary click on them and choose
+ rename folder from the context menu, or click the name of the folder three
+ times quickly. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added the 'Source' folder
+ view, this will display all the driver.c files and all the games within
+ each family. [<b>Mike Haaland</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Removed the
+ \folders\BIOS.ini as it is now obviated by the built-in Source folder
+ view. [<b>John IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added -sourcefileinfo
+ information to the general tab for each <span class=GramE>games'</span>
+ properties, to easily and quickly see what driver family a game belongs
+ to. [<b>Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added the long requested
+ clone offset aka 'Grouped' view.&nbsp; This will display the parent games
+ flush left, with all their clones alphabetized beneath them indented
+ inward. Excellent for grouping the clones whose names may be considerably
+ different than their <span class=GramE>parents,</span> and allowing typing
+ the name of the game to go to the parent set immediately.&nbsp; [<b>John
+ IV / Chris Kirmse</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Reworked the Startup
+ Options to now be Interface Options, and added checkboxes to support
+ Aaron's new disclaimer / info screen toggle. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l16 level1 lfo13;tab-stops:list .5in'>Added new switches -rdtsc /
+ -pause_brightness to match the core. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.62</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Internalized the code for
+ rotate.exe, MameUI can now choose its background images from Options •
+ Background Image, and choose a random one on startup.&nbsp; Options •
+ Startup Options • Select Random Background Image. [<b>K&amp;K</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Added tabs for the
+ screenshot art <span class=GramE>area,</span> toggle with Alt-b. [<b>K&amp;K</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Added code to increase speed
+ of audit. [<b>K&amp;K</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Added secondary click menu
+ pop-up for screenshot area. [<b>Sword</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Allowed bkground.png to be displayed
+ in history.dat area under screenshot, font color changed to match GUI font
+ color. [<b>K&amp;K</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Created new icons for the
+ various tabs in Default Options / Game Properties dialogue boxes. [<b>John
+ IV</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Updated the ColumnEdit and
+ Properties code to make them both more extensible. [<b>Nathan Woods/MESS32</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Included index fixes to
+ speed load time in treeview.c, particularly with extra \folders *.inis. [<b>Jeff
+ Miller</b>] <span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Fixed an issue where the
+ startup focus in the details list would jump to the top of the list before
+ returning to the prior selection. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Main distribution now
+ compiled with I686=1 for Pentium Pro optimization.&nbsp; Doesn't impact
+ high end AMD chips at all but provides speed increases to lower range PII,
+ P3 machines. [<b>John IV</b>]<span style='font-size:12.0pt;font-family:
+ "Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Created new *.ini files for
+ the \folders directory.&nbsp; Replace the old ones with these (<span
+ class=GramE>except</span> any user-modified of course). [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Created a new MameUI MSI
+ installer package.&nbsp; This should be easier for beginners. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Added the ability to drag and
+ drop games into the custom *.ini folders. [<b>Chris Kirmse</b>] <span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l6 level1 lfo14;tab-stops:list .5in'>Added the ability to
+ secondary click on a game to add or remove it from an *.ini file in the
+ \folders directory. [<b>Patrick Jones / Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.61</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Fixed a nasty crasher where
+ MameUI would hang if loading a game that required user intervention in
+ Mame[w] <span class=GramE>like</span> 'The Astyanax', and there was no
+ joystick connected to the system. [<b>Sword</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Fixed a couple of fringe
+ case crashers when Windows is shut down beneath MameUI, i.e. a cabinet
+ setting. [<b>Robert John Sheppard</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Removed -dirty / -nodirty
+ options to match Aaron's core changes. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added dialogue box support
+ for new artwork switches, added -ini support to Options • Directories. [<b>Mike
+ Haaland</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added dialogue box support
+ for LED disablement, artwork resolution. [<b>Mike Haaland</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added brightness slider,
+ removed -bpp per Aaron's changes. [<b>Mike Haaland</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added sound chip and CPU
+ information to the folder views.&nbsp; Added the long requested feature to
+ create user defined folder views, see \folders files for examples. [<b>Sword,
+ BUT, Emuman / Mike Haaland</b>] <span style='font-size:12.0pt;font-family:
+ "Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Created Artwork, BIOS, and
+ Custom folder views. [<b>John IV</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added support for displaying
+ -listsourcefile [source] field to the View • Customize Fields.&nbsp; Handy
+ for sorting to test global driver changes across all its <span
+ class=GramE>games.,</span> or using to report game problems to
+ MameTesters.com. [<b>Mike Haaland</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Created new Version and
+ Classification folder views. [<b>John IV</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added support for the new
+ -lightgun switch. [<b>John IV</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Removed 'add to favorites'
+ from context menus and file menu since it is now possible/preferable to
+ have favorites stored in the portable, user-defined, external text file
+ [\folders]. <span class=GramE>Which also of course would survive a
+ registry key purge.</span> <span class=GramE>Times played is</span> still
+ accessible as a column in details view. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Updated help file with new
+ settings, added baseline Mame[w] documents to help file. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Added \titles directory
+ support to allow for title screenshots viewing. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l2 level1 lfo15;tab-stops:list .5in'>Created new MameUI icon and <span
+ class=GramE>About</span> graphic. [<b>John IV</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.60</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Created and added the new
+ MameUI HTML Help File. [<b>John IV</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Updated context sensitive
+ help support to MameUI, all controls should be mapped to pop-up help. [<b>Mike
+ Haaland</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Added 'Use less CPU if
+ possible' check box in Options • Default Options • Miscellaneous.&nbsp;
+ This toggles the new baseline Mame[w] sleep / -nosleep switch.&nbsp; If
+ toggled on, it will return more time slices to the processor and be more
+ amenable to multi-tasking with other applications.&nbsp; If toggled off,
+ MameUI will continue to take 100% of the CPU time as it has historically.&nbsp;
+ It should be toggled 'off' for people experiencing severe slowdowns,
+ particularly laptop users. [<b>John IV / Mike Haaland</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Added option to set the
+ directory for hard drive image diff files to match Mame[w] in Options •
+ Directories. Fixed screenshot area decimation when image sized too large
+ for area.&nbsp; Scales properly now and looks great.&nbsp; Fixed flip
+ options. [<b>Sword</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Added option to set the
+ directory for icons in Options • Directories. [<b>John IV</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l13 level1 lfo16;tab-stops:list .5in'>Added support for new
+ external controller mapping. This adds support for common arcade
+ controllers and provides the ability to create user defined mappings for
+ home built solutions.&nbsp; See Options • Default Options • Controllers.
+ Also see the controller mapping document in the Mame Documents help
+ section. [<b>Ron Fries</b>]<span style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<h2><span style='font-size:12.0pt'>v.59</span></h2>
+
+<ul type=square>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l15 level1 lfo17;tab-stops:list .5in'>Added 'Allow game selection
+ by joystick' check box to Startup Options.&nbsp; Allows navigation and
+ game launch via controller<span class=GramE>:</span><br>
+ joystick 1 up = up arrow<br>
+ joystick 1 down = down arrow<br>
+ joystick 1 left = left arrow<br>
+ joystick 1 right = right arrow<br>
+ joystick 1 button 1 = play game<br>
+ joystick 1 button 2 = page up<br>
+ joystick 1 button 5 = page down<br>
+ joystick 1 button 3 = end<br>
+ joystick 1 button 6 = home. [<b>Chris Kirmse</b>]<span style='font-size:
+ 12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l15 level1 lfo17;tab-stops:list .5in'>Fixed a few files to allow
+ a MinGW compile without errors. [<b>Sword</b>]<span style='font-size:12.0pt;
+ font-family:"Times New Roman"'><o:p></o:p></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+ mso-list:l15 level1 lfo17;tab-stops:list .5in'>Added 'Broadcast selected game
+ to all windows' check box in Startup Options, this allows third party
+ applications to be programmatically told what game is being played in
+ MameUI.&nbsp; It can be used to hook into applications like LED reader
+ boards, or instant message clients, etc. [<b>Chris Kirmse</b>]<span
+ style='font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></li>
+</ul>
+
+<p><font size="1">
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%Y-%m-%d %I:%M %p %Z" startspan -->2008-09-23 09:01 PM -0700<!--webbot bot="Timestamp" endspan i-checksum="37950" -->/ <span class=GramE>john</span> iv</font></p>
+
+</div>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/docs/release/src/osd/winui/help/images/1.jpg b/docs/release/src/osd/winui/help/images/1.jpg
new file mode 100644
index 00000000000..0ea95f36b2c
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/1.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/2.jpg b/docs/release/src/osd/winui/help/images/2.jpg
new file mode 100644
index 00000000000..645f70feab9
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/2.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/3.jpg b/docs/release/src/osd/winui/help/images/3.jpg
new file mode 100644
index 00000000000..4eb620fd2fe
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/3.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/4.jpg b/docs/release/src/osd/winui/help/images/4.jpg
new file mode 100644
index 00000000000..76b3c7c1176
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/4.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/5.jpg b/docs/release/src/osd/winui/help/images/5.jpg
new file mode 100644
index 00000000000..ee797a92b1b
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/5.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/6.jpg b/docs/release/src/osd/winui/help/images/6.jpg
new file mode 100644
index 00000000000..c2d6e48d904
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/6.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/7.jpg b/docs/release/src/osd/winui/help/images/7.jpg
new file mode 100644
index 00000000000..1635cfe0ccd
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/7.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/8.jpg b/docs/release/src/osd/winui/help/images/8.jpg
new file mode 100644
index 00000000000..8c18f298077
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/8.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/bkground.gif b/docs/release/src/osd/winui/help/images/bkground.gif
new file mode 100644
index 00000000000..3fc4ac0a81a
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/bkground.gif
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/folder.gif b/docs/release/src/osd/winui/help/images/folder.gif
new file mode 100644
index 00000000000..e28e6f4033c
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/folder.gif
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/int.jpg b/docs/release/src/osd/winui/help/images/int.jpg
new file mode 100644
index 00000000000..cab16e39c26
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/int.jpg
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/mame321.gif b/docs/release/src/osd/winui/help/images/mame321.gif
new file mode 100644
index 00000000000..4260dc3848a
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/mame321.gif
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/statusbar.gif b/docs/release/src/osd/winui/help/images/statusbar.gif
new file mode 100644
index 00000000000..8619a6f618d
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/statusbar.gif
Binary files differ
diff --git a/docs/release/src/osd/winui/help/images/toolbar.gif b/docs/release/src/osd/winui/help/images/toolbar.gif
new file mode 100644
index 00000000000..3a1d1ad5ed3
--- /dev/null
+++ b/docs/release/src/osd/winui/help/images/toolbar.gif
Binary files differ
diff --git a/docs/release/src/osd/winui/help/mameui.hhc b/docs/release/src/osd/winui/help/mameui.hhc
new file mode 100644
index 00000000000..e989d217a60
--- /dev/null
+++ b/docs/release/src/osd/winui/help/mameui.hhc
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="Window Styles" value="0x800625">
+ <param name="ImageType" value="Folder">
+<param name="Font" value="Tahoma,8,0">
+</OBJECT>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Overview &amp; History">
+ <param name="Local" value="html\mameui_overview.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Changes">
+ <param name="Local" value="html\mameui_whatsnew32.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Installation">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="System Requirements">
+ <param name="Local" value="html\mameui_systemreq.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Download Locations">
+ <param name="Local" value="html\mameUI_download.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Installation Procedures">
+ <param name="Local" value="html\mameUI_installprocedures.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Art and Support Files">
+ <param name="Local" value="html\mameUI_art.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Usage">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Suggested Settings">
+ <param name="Local" value="html\mameui_settings.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Playing a Game &amp; Internal Controls">
+ <param name="Local" value="html\mameui_playing.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Toolbar, Status Bar, &amp; Windows">
+ <param name="Local" value="html\mameui_visual_elements.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="File Menu">
+ <param name="Local" value="html\mameui_filemenu.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Game Properties">
+ <param name="Local" value="html\mameui_properties.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="View Menu">
+ <param name="Local" value="html\mameui_viewmenu.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Options Menu">
+ <param name="Local" value="html\mameui_optionsmenu.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Game Properties">
+ <param name="Local" value="html\mameui_properties.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Help Menu">
+ <param name="Local" value="html\mameui_help.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Troubleshooting">
+ <param name="Local" value="html\mameui_support.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="MameUI Credits &amp; Resources">
+ <param name="Local" value="html\mameui_credits.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Game Changes">
+ <param name="Local" value="html\mameui_changes.txt">
+ <param name="New" value="1">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Mame Documents">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Mame License">
+ <param name="Local" value="docs\Mame License.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Mame Terms of Use">
+ <param name="Local" value="docs\Mame Statement of Purpose.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Mame Release Notes">
+ <param name="Local" value="docs\whatsnew.txt">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Mame Configuration &amp; Usage">
+ <param name="Local" value="docs\Command Line Settings.htm">
+ </OBJECT>
+ </UL>
+</UL>
+</BODY></HTML>
diff --git a/docs/release/src/osd/winui/help/mameui.hhk b/docs/release/src/osd/winui/help/mameui.hhk
new file mode 100644
index 00000000000..c0ba08a9ac4
--- /dev/null
+++ b/docs/release/src/osd/winui/help/mameui.hhk
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+</UL>
+</BODY></HTML>
diff --git a/docs/release/src/osd/winui/help/mameui.hhp b/docs/release/src/osd/winui/help/mameui.hhp
new file mode 100644
index 00000000000..c0e4e40c160
--- /dev/null
+++ b/docs/release/src/osd/winui/help/mameui.hhp
@@ -0,0 +1,24 @@
+[OPTIONS]
+Binary Index=No
+Compatibility=1.1 or later
+Compiled file=MameUI.chm
+Contents file=mameui.hhc
+Default Window=Baseline
+Default topic=.\html\mameUI_changes.txt
+Display compile progress=No
+Full text search stop list file=stoplist.stp
+Full-text search=Yes
+Index file=mameui.hhk
+Language=0x409 English (United States)
+Title=MameUI Help
+
+[WINDOWS]
+Baseline="MameUI Help","mameUI.hhc",,"html\mameUI_changes.txt",,,,,,0x22520,260,0x300c,[100,100,974,615],,,,,,,0
+
+
+[TEXT POPUPS]
+cntx_help.txt
+reshelp.h
+
+[INFOTYPES]
+
diff --git a/docs/release/src/osd/winui/help/mameui.hm b/docs/release/src/osd/winui/help/mameui.hm
new file mode 100644
index 00000000000..a1f1e82f2ea
--- /dev/null
+++ b/docs/release/src/osd/winui/help/mameui.hm
@@ -0,0 +1,135 @@
+// MAKEHELP.BAT generated Help Map file. Used by MAME32.HHP.
+
+// Commands (ID_* and IDM_*)
+HID_TOOLBAR_EDIT 0x1005C
+HID_CONTEXT_SHOW_FOLDER_START 0x19858
+HID_CONTEXT_SHOW_FOLDER_END 0x19920
+HID_FILE_EXIT 0x19C41
+HID_ABOUT 0x19C43
+HID_FILE_PLAY 0x19C44
+HID_HELP_ABOUT 0x19C46
+HID_VIEW_LARGE_ICON 0x19C47
+HID_VIEW_SMALL_ICON 0x19C48
+HID_VIEW_LIST_MENU 0x19C49
+HID_VIEW_DETAIL 0x19C4A
+HID_VIEW_GROUPED 0x19C4B
+HID_OPTIONS_FONT 0x19C4C
+HID_OPTIONS_CLONE_COLOR 0x19C4D
+HID_OPTIONS_DIR 0x19C4E
+HID_OPTIONS_DEFAULTS 0x19C4F
+HID_OPTIONS_RESET_DEFAULTS 0x19C50
+HID_OPTIONS_INTERFACE 0x19C51
+HID_FILE_AUDIT 0x19C52
+HID_FILE_PLAY_RECORD 0x19C53
+HID_FILE_PLAY_BACK 0x19C54
+HID_FILE_PLAY_RECORD_WAVE 0x19C55
+HID_FILE_PLAY_RECORD_MNG 0x19C56
+HID_VIEW_PICTURE_AREA 0x19C57
+HID_FILE_PLAY_RECORD_AVI 0x19C58
+HID_HELP_CONTENTS 0x19C59
+HID_HELP_WHATS_NEW32 0x19C5A
+HID_HELP_TROUBLE 0x19C5B
+HID_HELP_RELEASE 0x19C5C
+HID_HELP_WHATS_NEW 0x19C5D
+HID_HELP_CHEATS 0x19C5E
+HID_VIEW_BYGAME 0x19C62
+HID_VIEW_BYDIRECTORY 0x19C63
+HID_VIEW_BYMANUFACTURER 0x19C64
+HID_VIEW_BYYEAR 0x19C65
+HID_VIEW_BYTYPE 0x19C66
+HID_VIEW_BYTIMESPLAYED 0x19C67
+HID_VIEW_LINEUPICONS 0x19C68
+HID_UPDATE_GAMELIST 0x19C6A
+HID_SORT_ASCENDING 0x19C6D
+HID_SORT_DESCENDING 0x19C6E
+HID_CUSTOMIZE_FIELDS 0x19C70
+HID_GAME_PROPERTIES 0x19C71
+HID_VIEW_PAGETAB 0x19C72
+HID_VIEW_FOLDERS 0x19C73
+HID_VIEW_TOOLBARS 0x19C74
+HID_VIEW_STATUS 0x19C75
+HID_CONTEXT_FILTERS 0x19C76
+HID_CONTEXT_RENAME_CUSTOM 0x19C77
+HID_CONTEXT_ADD_CUSTOM 0x19C79
+HID_CONTEXT_REMOVE_CUSTOM 0x19C7A
+HID_GAME_AUDIT 0x19C7B
+HID_CONTEXT_SELECT_RANDOM 0x19C7C
+HID_OPTIONS_LANGUAGE 0x19C7D
+HID_VIEW_TAB_SCREENSHOT 0x19C7E
+HID_VIEW_TAB_FLYER 0x19C7F
+HID_VIEW_TAB_CABINET 0x19C80
+HID_VIEW_TAB_MARQUEE 0x19C81
+HID_VIEW_TAB_TITLE 0x19C82
+HID_VIEW_TAB_CONTROL_PANEL 0x19C83
+HID_VIEW_TAB_PCB 0x19C84
+HID_VIEW_TAB_HISTORY 0x19C85
+HID_OPTIONS_BG 0x19C86
+HID_TOGGLE_TAB_SCREENSHOT 0x19C87
+HID_TOGGLE_TAB_FLYER 0x19C88
+HID_TOGGLE_TAB_CABINET 0x19C89
+HID_TOGGLE_TAB_MARQUEE 0x19C8A
+HID_TOGGLE_TAB_TITLE 0x19C8B
+HID_TOGGLE_TAB_CONTROL_PANEL 0x19C8C
+HID_TOGGLE_TAB_PCB 0x19C8D
+HID_TOGGLE_TAB_HISTORY 0x19C8E
+HID_VIEW_FULLSCREEN 0x19C8F
+HID_CONTEXT_RESET_PLAYTIME 0x19C90
+HID_CONTEXT_RESET_PLAYCOUNT 0x19C91
+HID_FOLDER_PROPERTIES 0x19C92
+HID_FOLDER_AUDIT 0x19C93
+HID_UI_UP 0x19C94
+HID_UI_DOWN 0x19C95
+HID_UI_LEFT 0x19C96
+HID_UI_RIGHT 0x19C97
+HID_UI_START 0x19C98
+HID_UI_PGUP 0x19C99
+HID_UI_PGDOWN 0x19C9A
+HID_UI_HOME 0x19C9B
+HID_UI_END 0x19C9C
+HID_UI_HISTORY_UP 0x19C9D
+HID_UI_HISTORY_DOWN 0x19C9E
+HID_FILE_LOADSTATE 0x19C9F
+HID_FOLDER_SOURCEPROPERTIES 0x19CA0
+HID_FOLDER_VECTORPROPERTIES 0x19CA1
+HID_ARRANGE_ICONS 0x19CA2
+
+// Prompts (IDP_*)
+
+// Resources (IDR_*)
+HIDR_MAIN_MENU 0x2006D
+HIDR_UI_MENU 0x2006E
+HIDR_CONTEXT_MENU 0x20076
+HIDR_CONTEXT_HEADER 0x20097
+HIDR_CONTEXT_TREE 0x200A8
+HIDR_CONTEXT_SCREENSHOT 0x200B5
+
+// Dialogs (IDD_*)
+HIDD_MAIN 0x20065
+HIDD_ABOUT 0x2006C
+HIDD_DIRECTX 0x20072
+HIDD_AUDIT 0x20073
+HIDD_DIRECTORIES 0x20074
+HIDD_CUSTOM_FILE 0x20075
+HIDD_PROP_GAME 0x20098
+HIDD_PROP_AUDIT 0x20099
+HIDD_PROP_DISPLAY 0x2009A
+HIDD_PROP_SOUND 0x2009B
+HIDD_PROP_ADVANCED 0x2009C
+HIDD_PROP_INPUT 0x2009D
+HIDD_PROP_MISC 0x2009E
+HIDD_PROP_VECTOR 0x2009F
+HIDD_COLUMNS 0x200A0
+HIDD_FILTERS 0x200A9
+HIDD_RESET 0x200AA
+HIDD_LOAD_PROGRESS 0x200AB
+HIDD_INTERFACE_OPTIONS 0x200AD
+HIDD_PROP_HISTORY 0x200B0
+HIDD_ROM_ERROR 0x200B1
+HIDD_LANGUAGE 0x200B2
+HIDD_ERROR 0x200B3
+HIDD_PROP_DIRECT3D 0x200B8
+HIDD_PROP_CONTROLLER 0x200B9
+HIDD_PROP_SCREEN 0x200BB
+
+// Frame Controls (IDW_*)
+HIDW_STATUS 0x50070
diff --git a/docs/release/src/osd/winui/help/reshelp.h b/docs/release/src/osd/winui/help/reshelp.h
new file mode 100644
index 00000000000..709a8058cb1
--- /dev/null
+++ b/docs/release/src/osd/winui/help/reshelp.h
@@ -0,0 +1,4 @@
+// Include the Microsoft Developer Studio generated Help ID include file.
+//
+#include "..\resource.hm"
+#include "mame32.hm"
diff --git a/docs/release/src/osd/winui/help/stoplist.stp b/docs/release/src/osd/winui/help/stoplist.stp
new file mode 100644
index 00000000000..11255546e24
--- /dev/null
+++ b/docs/release/src/osd/winui/help/stoplist.stp
@@ -0,0 +1,88 @@
+a
+about
+after
+against
+all
+also
+among
+an
+and
+are
+as
+at
+be
+became
+because
+been
+between
+but
+by
+can
+come
+do
+during
+each
+early
+for
+form
+found
+from
+had
+has
+have
+he
+mame32
+his
+however
+in
+include
+into
+is
+it
+its
+late
+later
+me
+med
+made
+many
+may
+more
+most
+near
+no
+non
+not
+of
+on
+only
+or
+other
+over
+several
+she
+some
+such
+than
+that
+the
+their
+then
+there
+these
+they
+this
+through
+to
+under
+until
+use
+was
+we
+were
+when
+where
+which
+who
+with
+you \ No newline at end of file
diff --git a/docs/release/src/osd/winui/helpids.cpp b/docs/release/src/osd/winui/helpids.cpp
new file mode 100644
index 00000000000..31e5e15ffc4
--- /dev/null
+++ b/docs/release/src/osd/winui/helpids.cpp
@@ -0,0 +1,125 @@
+/*
+ * Help ID array - Generated by mkhelp
+ */
+
+#include <windows.h>
+#include "resource.h"
+#include "resource.hm"
+
+extern const DWORD dwHelpIDs[] =
+{
+ IDC_ADSTICK ,HIDC_ADSTICK,
+ IDC_ARTWORK_CROP ,HIDC_ARTWORK_CROP,
+ IDC_ASPECT ,HIDC_ASPECT,
+ IDC_ASPECTRATIOD ,HIDC_ASPECTRATIOD,
+ IDC_ASPECTRATION ,HIDC_ASPECTRATION,
+ IDC_AUDIO_LATENCY ,HIDC_AUDIO_LATENCY,
+ IDC_AUTOFRAMESKIP ,HIDC_AUTOFRAMESKIP,
+ IDC_BACKDROPS ,HIDC_BACKDROPS,
+ IDC_BEAM ,HIDC_BEAM,
+ IDC_BEZELS ,HIDC_BEZELS,
+ IDC_BIOS ,HIDC_BIOS,
+ IDC_BRIGHTCORRECT ,HIDC_BRIGHTCORRECT,
+ IDC_CHEAT ,HIDC_CHEAT,
+ IDC_COINLOCKOUT ,HIDC_COINLOCKOUT,
+ IDC_CONTRAST ,HIDC_CONTRAST,
+ IDC_CYCLETIMESEC ,HIDC_CYCLETIMESEC,
+ IDC_D3D_FILTER ,HIDC_D3D_FILTER,
+ IDC_DEBUG ,HIDC_DEBUG,
+ IDC_DEFAULT_INPUT ,HIDC_DEFAULT_INPUT,
+ IDC_DIAL ,HIDC_DIAL,
+ IDC_DUAL_LIGHTGUN ,HIDC_DUAL_LIGHTGUN,
+ IDC_ENABLE_AUTOSAVE ,HIDC_ENABLE_AUTOSAVE,
+ IDC_FILTER_CLONES ,HIDC_FILTER_CLONES,
+ IDC_FILTER_EDIT ,HIDC_FILTER_EDIT,
+ IDC_FILTER_HORIZONTAL ,HIDC_FILTER_HORIZONTAL,
+ IDC_FILTER_MECHANICAL ,HIDC_FILTER_MECHANICAL,
+ IDC_FILTER_NONWORKING ,HIDC_FILTER_NONWORKING,
+ IDC_FILTER_ORIGINALS ,HIDC_FILTER_ORIGINALS,
+ IDC_FILTER_RASTER ,HIDC_FILTER_RASTER,
+ IDC_FILTER_UNAVAILABLE ,HIDC_FILTER_UNAVAILABLE,
+ IDC_FILTER_VECTOR ,HIDC_FILTER_VECTOR,
+ IDC_FILTER_VERTICAL ,HIDC_FILTER_VERTICAL,
+ IDC_FILTER_WORKING ,HIDC_FILTER_WORKING,
+ IDC_FLICKER ,HIDC_FLICKER,
+ IDC_FLIPX ,HIDC_FLIPX,
+ IDC_FLIPY ,HIDC_FLIPY,
+ IDC_FRAMESKIP ,HIDC_FRAMESKIP,
+ IDC_FSBRIGHTNESS ,HIDC_FSBRIGHTNESS,
+ IDC_FSCONTRAST ,HIDC_FSCONTRAST,
+ IDC_FSGAMMA ,HIDC_FSGAMMA,
+ IDC_GAMMA ,HIDC_GAMMA,
+ IDC_HIDE_MOUSE ,HIDC_HIDE_MOUSE,
+ IDC_HIGH_PRIORITY ,HIDC_HIGH_PRIORITY,
+ IDC_HISTORY ,HIDC_HISTORY,
+ IDC_HWSTRETCH ,HIDC_HWSTRETCH,
+ IDC_JDZ ,HIDC_JDZ,
+ IDC_JOY_GUI ,HIDC_JOY_GUI,
+ IDC_JOYSTICK ,HIDC_JOYSTICK,
+ IDC_JSAT ,HIDC_JSAT,
+ IDC_KEEPASPECT ,HIDC_KEEPASPECT,
+ IDC_LIGHTGUN ,HIDC_LIGHTGUN,
+ IDC_LIGHTGUNDEVICE ,HIDC_LIGHTGUNDEVICE,
+ IDC_LOG ,HIDC_LOG,
+ IDC_MAXIMIZE ,HIDC_MAXIMIZE,
+ IDC_MOUSE ,HIDC_MOUSE,
+ IDC_MULTIKEYBOARD ,HIDC_MULTIKEYBOARD,
+ IDC_MULTIMOUSE ,HIDC_MULTIMOUSE,
+ IDC_MULTITHREAD_RENDERING ,HIDC_MULTITHREAD_RENDERING,
+ IDC_NUMSCREENS ,HIDC_NUMSCREENS,
+ IDC_OSLOG ,HIDC_OSLOG,
+ IDC_OVERLAYS ,HIDC_OVERLAYS,
+ IDC_PADDLE ,HIDC_PADDLE,
+ IDC_PAUSEBRIGHT ,HIDC_PAUSEBRIGHT,
+ IDC_PEDAL ,HIDC_PEDAL,
+ IDC_POSITIONAL ,HIDC_POSITIONAL,
+ IDC_PRESCALE ,HIDC_PRESCALE,
+ IDC_PROP_RESET ,HIDC_PROP_RESET,
+ IDC_REFRESH ,HIDC_REFRESH,
+ IDC_REFRESHSPEED ,HIDC_REFRESHSPEED,
+ IDC_RELOAD ,HIDC_RELOAD,
+ IDC_RESET_DEBUGSCRIPT ,HIDC_RESET_DEBUGSCRIPT,
+ IDC_RESET_DEFAULT ,HIDC_RESET_DEFAULT,
+ IDC_RESET_EFFECT ,HIDC_RESET_EFFECT,
+ IDC_RESET_FILTERS ,HIDC_RESET_FILTERS,
+ IDC_RESET_GAMES ,HIDC_RESET_GAMES,
+ IDC_RESET_JOYSTICKMAP ,HIDC_RESET_JOYSTICKMAP,
+ IDC_RESET_UI ,HIDC_RESET_UI,
+ IDC_ROTATE ,HIDC_ROTATE,
+ IDC_SAMPLERATE ,HIDC_SAMPLERATE,
+ IDC_SAMPLES ,HIDC_SAMPLES,
+ IDC_SCREEN ,HIDC_SCREEN,
+ IDC_SCREENSELECT ,HIDC_SCREENSELECT,
+ IDC_SECONDSTORUN ,HIDC_SECONDSTORUN,
+ IDC_SELECT_DEBUGSCRIPT ,HIDC_SELECT_DEBUGSCRIPT,
+ IDC_SELECT_EFFECT ,HIDC_SELECT_EFFECT,
+ IDC_SELECT_JOYSTICKMAP ,HIDC_SELECT_JOYSTICKMAP,
+ IDC_SIZES ,HIDC_SIZES,
+ IDC_SKIP_GAME_INFO ,HIDC_SKIP_GAME_INFO,
+ IDC_SLEEP ,HIDC_SLEEP,
+ IDC_SNAPNAME ,HIDC_SNAPNAME,
+ IDC_SNAPSIZE ,HIDC_SNAPSIZE,
+ IDC_SNAPSIZEHEIGHT ,HIDC_SNAPSIZEHEIGHT,
+ IDC_SNAPSIZEWIDTH ,HIDC_SNAPSIZEWIDTH,
+ IDC_SNAPVIEW ,HIDC_SNAPVIEW,
+ IDC_SPEED ,HIDC_SPEED,
+ IDC_START_GAME_CHECK ,HIDC_START_GAME_CHECK,
+ IDC_STEADYKEY ,HIDC_STEADYKEY,
+ IDC_STRETCH_SCREENSHOT_LARGER ,HIDC_STRETCH_SCREENSHOT_LARGER,
+ IDC_SWITCHRES ,HIDC_SWITCHRES,
+ IDC_SYNCREFRESH ,HIDC_SYNCREFRESH,
+ IDC_THROTTLE ,HIDC_THROTTLE,
+ IDC_TRACKBALL ,HIDC_TRACKBALL,
+ IDC_TRIPLE_BUFFER ,HIDC_TRIPLE_BUFFER,
+ IDC_UPDATEINPAUSE ,HIDC_UPDATEINPAUSE,
+ IDC_USE_DEFAULT ,HIDC_USE_DEFAULT,
+ IDC_USE_MOUSE ,HIDC_USE_MOUSE,
+ IDC_VERBOSE ,HIDC_VERBOSE,
+ IDC_VIDEO_MODE ,HIDC_VIDEO_MODE,
+ IDC_VIEW ,HIDC_VIEW,
+ IDC_VOLUME ,HIDC_VOLUME,
+ IDC_WAITVSYNC ,HIDC_WAITVSYNC,
+ IDC_WINDOWED ,HIDC_WINDOWED,
+ 0 ,0
+
+};
diff --git a/docs/release/src/osd/winui/history.cpp b/docs/release/src/osd/winui/history.cpp
new file mode 100644
index 00000000000..fb96346f307
--- /dev/null
+++ b/docs/release/src/osd/winui/history.cpp
@@ -0,0 +1,982 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+/***************************************************************************
+
+ history.cpp
+
+ * history functions.
+ * History database engine
+ * Collect all information on the selected driver, and return it as
+ * a string. Called by winui.cpp
+ *
+ * Token parsing by Neil Bradley
+ * Modifications and higher-level functions by John Butler
+
+ * Further work by Mamesick and Robbbert
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "screen.h"
+#include "speaker.h"
+#include "drivenum.h"
+#include "mui_util.h"
+#include "mui_opts.h"
+#include "sound/samples.h"
+
+#define MAX_TOKEN_LENGTH 256
+#define DATAFILE_TAG '$'
+
+/****************************************************************************
+ * datafile constants
+ ****************************************************************************/
+static const char *DATAFILE_TAG_KEY = "$info";
+static const char *DATAFILE_TAG_BIO = "$bio";
+static const char *DATAFILE_TAG_MAME = "$mame";
+static const char *DATAFILE_TAG_DRIV = "$drv";
+static const char *DATAFILE_TAG_CMD = "$cmd";
+static const char *DATAFILE_TAG_SCORE = "$story";
+static const char *DATAFILE_TAG_END = "$end";
+
+/****************************************************************************
+ * private data for parsing functions
+ ****************************************************************************/
+static FILE *fp = nullptr; /* Our file pointer */
+static UINT64 dwFilePos = 0; /* file position */
+static char filename[MAX_PATH]; /* datafile name */
+
+struct tDatafileIndex
+{
+ long offset;
+ const game_driver *driver;
+};
+
+static struct tDatafileIndex *gameinit_idx = nullptr;
+static struct tDatafileIndex *hist_idx = nullptr;
+static struct tDatafileIndex *mame_idx = nullptr;
+static struct tDatafileIndex *driv_idx = nullptr;
+static struct tDatafileIndex *sysinfo_idx = nullptr;
+static struct tDatafileIndex *mess_idx = nullptr;
+static struct tDatafileIndex *messdriv_idx = nullptr;
+static struct tDatafileIndex *cmd_idx = nullptr;
+static struct tDatafileIndex *score_idx = nullptr;
+
+/****************************************************************************
+* Create an array with sorted sourcedrivers for the function
+* index_datafile_drivinfo to speed up the datafile access
+****************************************************************************/
+
+typedef struct
+{
+ const char *srcdriver;
+ int index;
+} srcdriver_data_type;
+
+static srcdriver_data_type *sorted_srcdrivers = nullptr;
+
+static int SrcDriverDataCompareFunc(const void *arg1, const void *arg2)
+{
+ return strcmp(((srcdriver_data_type *)arg1)->srcdriver, ((srcdriver_data_type *)arg2)->srcdriver);
+}
+
+static int GetSrcDriverIndex(const char *srcdriver)
+{
+ srcdriver_data_type *srcdriver_index_info;
+ srcdriver_data_type key;
+ key.srcdriver = srcdriver;
+ int num_games = driver_list::total();
+
+ if (sorted_srcdrivers == NULL)
+ {
+ /* initialize array of game names/indices */
+ sorted_srcdrivers = (srcdriver_data_type *)malloc(sizeof(srcdriver_data_type) * num_games);
+ for (int i = 0; i < num_games; i++)
+ {
+ sorted_srcdrivers[i].srcdriver = driver_list::driver(i).source_file+32;
+ sorted_srcdrivers[i].index = i;
+ }
+ qsort(sorted_srcdrivers,num_games,sizeof(srcdriver_data_type),SrcDriverDataCompareFunc);
+ }
+
+ srcdriver_index_info = (srcdriver_data_type *)bsearch(&key, sorted_srcdrivers, num_games, sizeof(srcdriver_data_type), SrcDriverDataCompareFunc);
+
+ if (srcdriver_index_info)
+ return srcdriver_index_info->index;
+ else
+ return -1;
+}
+
+/****************************************************************************
+ * ParseClose - Closes the existing opened file (if any)
+ ****************************************************************************/
+static void ParseClose(void)
+{
+ /* If the file is open, time for fclose. */
+ if (fp)
+ fclose(fp);
+}
+
+/****************************************************************************
+ * ParseOpen - Open up file for reading
+ ****************************************************************************/
+static BOOL ParseOpen(const char *pszFilename)
+{
+ /* MAME core file parsing functions fail in recognizing UNICODE chars in UTF-8 without BOM,
+ so it's better and faster use standard C fileio functions */
+ fp = fopen(pszFilename, "r");
+
+ if (fp == NULL)
+ return FALSE;
+
+ /* Otherwise, prepare! */
+ dwFilePos = 0;
+ /* identify text file type first */
+ fgetc(fp);
+ fseek(fp, dwFilePos, SEEK_SET);
+ return TRUE;
+}
+
+/****************************************************************************
+ * ParseSeek - Move the file position indicator
+ ****************************************************************************/
+static UINT8 ParseSeek(UINT64 offset, int whence)
+{
+ int result = fseek(fp, offset, whence);
+
+ if (result == 0)
+ dwFilePos = ftell(fp);
+
+ return (UINT8)result;
+}
+
+/**************************************************************************
+ **************************************************************************
+ *
+ * Datafile functions
+ *
+ **************************************************************************
+ **************************************************************************/
+
+ /**************************************************************************
+ * index_datafile
+ * Create an index for the records in the currently open datafile.
+ *
+ * Returns 0 on error, or the number of index entries created.
+ **************************************************************************/
+static int index_datafile(struct tDatafileIndex **_index, int source)
+{
+ struct tDatafileIndex *idx;
+ int count = 0;
+ char readbuf[512];
+ char name[40];
+ int num_games = driver_list::total();
+
+ /* rewind file */
+ if (ParseSeek (0L, SEEK_SET))
+ return 0;
+
+ /* allocate index */
+ idx = *_index = global_alloc_array(tDatafileIndex, (num_games + 1) * sizeof (struct tDatafileIndex));
+
+ if (!idx)
+ return 0;
+
+ while (fgets(readbuf, 512, fp))
+ {
+ /* DATAFILE_TAG_KEY identifies the driver */
+ if (!core_strnicmp(DATAFILE_TAG_KEY, readbuf, strlen(DATAFILE_TAG_KEY)))
+ {
+ int game_index = 0;
+ char *curpoint = &readbuf[strlen(DATAFILE_TAG_KEY) + 1];
+ char *pch = NULL;
+ char *ends = &readbuf[strlen(readbuf) - 1];
+
+ while (curpoint < ends)
+ {
+ // search for comma
+ pch = strpbrk(curpoint, ",");
+
+ // found it
+ if (pch)
+ {
+ // copy data and validate driver
+ int len = pch - curpoint;
+ strncpy(name, curpoint, len);
+ name[len] = '\0';
+
+ if (!source)
+ game_index = GetGameNameIndex(name);
+ else
+ game_index = GetSrcDriverIndex(name);
+
+ if (game_index >= 0)
+ {
+ idx->driver = &driver_list::driver(game_index);
+ idx->offset = ftell(fp);
+ idx++;
+ count++;
+ }
+
+ // update current point
+ curpoint = pch + 1;
+ }
+ // if comma not found, copy data while until reach the end of string
+ else if (!pch && curpoint < ends)
+ {
+ int len = ends - curpoint;
+ strncpy(name, curpoint, len);
+ name[len] = '\0';
+
+ if (!source)
+ game_index = GetGameNameIndex(name);
+ else
+ game_index = GetSrcDriverIndex(name);
+
+ if (game_index >= 0)
+ {
+ idx->driver = &driver_list::driver(game_index);
+ idx->offset = ftell(fp);
+ idx++;
+ count++;
+ }
+
+ // update current point
+ curpoint = ends;
+ }
+ }
+ }
+ }
+
+ /* mark end of index */
+ idx->offset = 0L;
+ idx->driver = 0;
+ return count;
+}
+
+/**************************************************************************
+ * load_datafile_text
+ *
+ * Loads text field for a driver into the buffer specified. Specify the
+ * driver, a pointer to the buffer, the buffer size, the index created by
+ * index_datafile(), and the desired text field (e.g., DATAFILE_TAG_BIO).
+ *
+ * Returns 0 if successful.
+ **************************************************************************/
+static int load_datafile_text(const game_driver *drv, char *buffer, int bufsize, struct tDatafileIndex *idx, const char *tag, int source_file, int mameinfo)
+{
+ char readbuf[16384];
+
+ *buffer = '\0';
+
+ if (!source_file)
+ {
+ /* find driver in datafile index */
+ while (idx->driver)
+ {
+ if (idx->driver == drv)
+ break;
+
+ idx++;
+ }
+ }
+ else
+ {
+ /* find source file in datafile index */
+ while (idx->driver)
+ {
+ if (idx->driver->source_file == drv->source_file)
+ break;
+
+ idx++;
+ }
+ }
+
+ if (idx->driver == 0)
+ return 1; /* driver not found in index */
+
+ /* seek to correct point in datafile */
+ if (ParseSeek (idx->offset, SEEK_SET))
+ return 1;
+
+ /* read text until buffer is full or end of entry is encountered */
+ while (fgets(readbuf, 16384, fp))
+ {
+ if (!core_strnicmp(DATAFILE_TAG_END, readbuf, strlen(DATAFILE_TAG_END)))
+ break;
+
+ if (!core_strnicmp(tag, readbuf, strlen(tag)))
+ continue;
+
+ if (strlen(buffer) + strlen(readbuf) > bufsize)
+ break;
+
+ if (mameinfo)
+ {
+ char *temp = strtok(readbuf, "\r\n\r\n");
+ if (temp != nullptr)
+ strcat(buffer, temp);
+ else
+ strcat(buffer, readbuf);
+ }
+ else
+ strcat(buffer, readbuf);
+ }
+
+ return 0;
+}
+
+/**************************************************************************
+ * load_driver_history
+ * Load history text for the specified driver into the specified buffer.
+ * Combines $bio field of HISTORY.DAT with $mame field of MAMEINFO.DAT.
+ *
+ * Returns 0 if successful.
+ *
+ * NOTE: For efficiency the indices are never freed (intentional leak).
+ **************************************************************************/
+static int load_driver_history(const game_driver *drv, char *buffer, int bufsize, int filenum)
+{
+ int history = 0;
+
+ *buffer = 0;
+
+ if (filenum)
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\sysinfo.dat", GetDatsDir());
+ else
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\history.dat", GetDatsDir());
+
+ /* try to open history datafile */
+ if (filenum)
+ {
+ if (ParseOpen(filename))
+ {
+ /* create index if necessary */
+ if (sysinfo_idx)
+ history = 1;
+ else
+ history = (index_datafile (&sysinfo_idx, 0) != 0);
+
+ /* load history text (append)*/
+ if (sysinfo_idx)
+ {
+ strcat(buffer, "\n**** SYSINFO: ****\n\n");
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, sysinfo_idx, DATAFILE_TAG_BIO, 0, 0);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ history = 0;
+ }
+
+ ParseClose();
+ }
+ }
+ else
+ {
+ if (ParseOpen(filename))
+ {
+ /* create index if necessary */
+ if (hist_idx)
+ history = 1;
+ else
+ history = (index_datafile (&hist_idx, 0) != 0);
+
+ /* load history text (append)*/
+ if (hist_idx)
+ {
+ strcat(buffer, "\n**** HISTORY: ****\n\n");
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, hist_idx, DATAFILE_TAG_BIO, 0, 0);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ history = 0;
+ }
+
+ ParseClose();
+ }
+ }
+
+ strcat(buffer, "\n");
+ return (history == 0);
+}
+
+static int load_driver_mameinfo(const game_driver *drv, char *buffer, int bufsize, int filenum)
+{
+ machine_config config(*drv, MameUIGlobal());
+ const game_driver *parent = NULL;
+ char name[512];
+ int mameinfo = 0;
+ int is_bios = 0;
+
+ *buffer = 0;
+
+ switch (filenum)
+ {
+ case 0:
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\mameinfo.dat", GetDatsDir());
+ strcat(buffer, "\n**** MAMEINFO: ****\n\n");
+ break;
+ case 1:
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\messinfo.dat", GetDatsDir());
+ strcat(buffer, "\n**** MESSINFO: ****\n\n");
+ break;
+ case 2:
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\gameinit.dat", GetDatsDir());
+ strcat(buffer, "\n**** GAMEINIT: ****\n\n");
+ break;
+ default:
+ break;
+ }
+
+ if (filenum < 2)
+ {
+ /* List the game info 'flags' */
+ if (drv->flags & MACHINE_NOT_WORKING)
+ strcat(buffer, "THIS GAME DOESN'T WORK PROPERLY\n");
+
+ if (drv->flags & MACHINE_UNEMULATED_PROTECTION)
+ strcat(buffer, "The game has protection which isn't fully emulated.\n");
+
+ if (drv->flags & MACHINE_IMPERFECT_GRAPHICS)
+ strcat(buffer, "The video emulation isn't 100% accurate.\n");
+
+ if (drv->flags & MACHINE_WRONG_COLORS)
+ strcat(buffer, "The colors are completely wrong.\n");
+
+ if (drv->flags & MACHINE_IMPERFECT_COLORS)
+ strcat(buffer, "The colors aren't 100% accurate.\n");
+
+ if (drv->flags & MACHINE_NO_SOUND)
+ strcat(buffer, "The game lacks sound.\n");
+
+ if (drv->flags & MACHINE_IMPERFECT_SOUND)
+ strcat(buffer, "The sound emulation isn't 100% accurate.\n");
+
+ if (drv->flags & MACHINE_SUPPORTS_SAVE)
+ strcat(buffer, "Save state support.\n");
+
+ if (drv->flags & MACHINE_MECHANICAL)
+ strcat(buffer, "The game contains mechanical parts.\n");
+
+ strcat(buffer, "\n");
+
+ if (drv->flags & MACHINE_IS_BIOS_ROOT)
+ is_bios = 1;
+ }
+
+ /* try to open mameinfo datafile */
+ if (ParseOpen(filename))
+ {
+ if (filenum == 2)
+ {
+ /* create index if necessary */
+ if (gameinit_idx)
+ mameinfo = 1;
+ else
+ mameinfo = (index_datafile (&gameinit_idx, 0) != 0);
+
+ /* load informational text (append) */
+ if (gameinit_idx)
+ {
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, gameinit_idx, DATAFILE_TAG_MAME, 0, 1);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ mameinfo = 0;
+ }
+ }
+ else
+ if (filenum == 1)
+ {
+ /* create index if necessary */
+ if (mess_idx)
+ mameinfo = 1;
+ else
+ mameinfo = (index_datafile (&mess_idx, 0) != 0);
+
+ /* load informational text (append) */
+ if (mess_idx)
+ {
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, mess_idx, DATAFILE_TAG_MAME, 0, 1);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ mameinfo = 0;
+ }
+ }
+ else
+ if (filenum == 0)
+ {
+ /* create index if necessary */
+ if (mame_idx)
+ mameinfo = 1;
+ else
+ mameinfo = (index_datafile (&mame_idx, 0) != 0);
+
+ /* load informational text (append) */
+ if (mame_idx)
+ {
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, mame_idx, DATAFILE_TAG_MAME, 0, 1);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ mameinfo = 0;
+ }
+ }
+
+ ParseClose();
+ }
+
+ if (filenum > 1)
+ return (mameinfo == 0);
+
+ /* GAME INFORMATIONS */
+ snprintf(name, ARRAY_LENGTH(name), "\nGAME: %s\n", drv->name);
+ strcat(buffer, name);
+ snprintf(name, ARRAY_LENGTH(name), "%s", drv->description);
+ strcat(buffer, name);
+ snprintf(name, ARRAY_LENGTH(name), " (%s %s)\n\nCPU:\n", drv->manufacturer, drv->year);
+ strcat(buffer, name);
+ /* iterate over CPUs */
+ for (device_execute_interface &cpu : execute_interface_iterator(config.root_device()))
+ {
+ if (cpu.device().clock() >= 1000000)
+ snprintf(name, ARRAY_LENGTH(name), "%s %d.%06d MHz\n", cpu.device().name(), cpu.device().clock() / 1000000, cpu.device().clock() % 1000000);
+ else
+ snprintf(name, ARRAY_LENGTH(name), "%s %d.%03d kHz\n", cpu.device().name(), cpu.device().clock() / 1000, cpu.device().clock() % 1000);
+
+ strcat(buffer, name);
+ }
+
+ strcat(buffer, "\nSOUND:\n");
+ int has_sound = 0;
+ /* iterate over sound chips */
+
+ for (device_sound_interface &sound : sound_interface_iterator(config.root_device()))
+ {
+ char tmpname[1024];
+
+ snprintf(tmpname, ARRAY_LENGTH(tmpname), "%s", sound.device().name());
+ int clock = sound.device().clock();
+ has_sound = 1;
+
+ strcat(buffer, tmpname);
+
+ if (clock)
+ {
+ if (clock >= 1000000)
+ snprintf(name, ARRAY_LENGTH(name), " %d.%06d MHz", clock / 1000000, clock % 1000000);
+ else
+ snprintf(name, ARRAY_LENGTH(name), " %d.%03d kHz", clock / 1000, clock % 1000);
+
+ strcat(buffer, name);
+ }
+
+ strcat(buffer, "\n");
+ }
+
+ if (has_sound)
+ {
+ speaker_device_iterator iter(config.root_device());
+ int channels = iter.count();
+
+ if(channels == 1)
+ snprintf(name, ARRAY_LENGTH(name), "%d Channel\n",channels);
+ else
+ snprintf(name, ARRAY_LENGTH(name), "%dx Channels\n",channels);
+
+ strcat(buffer, name);
+ }
+
+ strcat(buffer, "\nVIDEO:\n");
+ screen_device_iterator screeniter(config.root_device());
+ const screen_device *screen1 = screeniter.first();
+
+ if (screen1 == nullptr)
+ strcat(buffer, "Screenless\n");
+ else if (screen1->screen_type() == SCREEN_TYPE_VECTOR)
+ strcat(buffer,"Vector\n");
+ else
+ {
+ for (screen_device &screen : screen_device_iterator(config.root_device()))
+ {
+ if (drv->flags & ORIENTATION_SWAP_XY)
+ snprintf(name, ARRAY_LENGTH(name), "%d x %d (V)", screen.visible_area().height(), screen.visible_area().width());
+ else
+ snprintf(name, ARRAY_LENGTH(name), "%d x %d (H)", screen.visible_area().width(), screen.visible_area().height());
+
+ strcat(buffer, name);
+ snprintf(name, ARRAY_LENGTH(name), " %f Hz", ATTOSECONDS_TO_HZ(screen.refresh_attoseconds()));
+ strcat(buffer, name);
+ strcat(buffer, "\n");
+ }
+ }
+
+ strcat(buffer, "\nROM REGION:\n");
+ int g = driver_list::clone(*drv);
+
+ if (g != -1)
+ parent = &driver_list::driver(g);
+
+ for (device_t &device : device_iterator(config.root_device()))
+ {
+ for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region))
+ {
+ for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+
+ if (g != -1)
+ {
+ machine_config pconfig(*parent, MameUIGlobal());
+ device_iterator deviter(pconfig.root_device());
+
+ for (device_t &device : device_iterator(pconfig.root_device()))
+ for (const rom_entry *pregion = rom_first_region(device); pregion; pregion = rom_next_region(pregion))
+ for (const rom_entry *prom = rom_first_file(pregion); prom; prom = rom_next_file(prom))
+ {
+ util::hash_collection phashes(ROM_GETHASHDATA(prom));
+
+ if (hashes == phashes)
+ break;
+ }
+ }
+
+ snprintf(name, ARRAY_LENGTH(name), "%-16s \t", ROM_GETNAME(rom));
+ strcat(buffer, name);
+ snprintf(name, ARRAY_LENGTH(name), "%09d \t", rom_file_size(rom));
+ strcat(buffer, name);
+ snprintf(name, ARRAY_LENGTH(name), "%-10s", ROMREGION_GETTAG(region));
+ strcat(buffer, name);
+ strcat(buffer, "\n");
+ }
+ }
+ }
+
+ for (samples_device &device : samples_device_iterator(config.root_device()))
+ {
+ samples_iterator sampiter(device);
+
+ if (sampiter.altbasename() )
+ {
+ snprintf(name, ARRAY_LENGTH(name), "\nSAMPLES (%s):\n", sampiter.altbasename());
+ strcat(buffer, name);
+ }
+
+ std::unordered_set<std::string> already_printed;
+
+ for (const char *samplename = sampiter.first(); samplename; samplename = sampiter.next())
+ {
+ // filter out duplicates
+ if (!already_printed.insert(samplename).second)
+ continue;
+
+ // output the sample name
+ snprintf(name, ARRAY_LENGTH(name), "%s.wav\n", samplename);
+ strcat(buffer, name);
+ }
+ }
+
+ if (!is_bios)
+ {
+ int g = driver_list::clone(*drv);
+
+ if (g != -1)
+ drv = &driver_list::driver(g);
+
+ strcat(buffer, "\nORIGINAL:\n");
+ strcat(buffer, drv->description);
+ strcat(buffer, "\n\nCLONES:\n");
+
+ for (int i = 0; i < driver_list::total(); i++)
+ {
+ if (!strcmp (drv->name, driver_list::driver(i).parent))
+ {
+ strcat(buffer, driver_list::driver(i).description);
+ strcat(buffer, "\n");
+ }
+ }
+ }
+
+ strcat(buffer, "\n");
+ return (mameinfo == 0);
+}
+
+static int load_driver_driverinfo(const game_driver *drv, char *buffer, int bufsize, int filenum)
+{
+ int drivinfo = 0;
+ char source_file[40];
+ char tmp[100];
+ std::string temp = core_filename_extract_base(drv->source_file);
+ strcpy(source_file, temp.c_str());
+
+ *buffer = 0;
+
+ if (filenum)
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\messinfo.dat", GetDatsDir());
+ else
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\mameinfo.dat", GetDatsDir());
+
+ /* Print source code file */
+ snprintf(tmp, ARRAY_LENGTH(tmp), "\n\nSOURCE: %s\n\n", source_file);
+ strcat(buffer, tmp);
+
+ /* Try to open mameinfo datafile - driver section*/
+ if (ParseOpen(filename))
+ {
+ if (filenum)
+ {
+ /* create index if necessary */
+ if (messdriv_idx)
+ drivinfo = 1;
+ else
+ drivinfo = (index_datafile (&messdriv_idx, 1) != 0);
+
+ /* load informational text (append) */
+ if (messdriv_idx)
+ {
+ int len = strlen(buffer);
+ int err = load_datafile_text(drv, buffer + len, bufsize - len, messdriv_idx, DATAFILE_TAG_DRIV, 1, 1);
+
+ if (err)
+ drivinfo = 0;
+ }
+ }
+ else
+ {
+ /* create index if necessary */
+ if (driv_idx)
+ drivinfo = 1;
+ else
+ drivinfo = (index_datafile (&driv_idx, 1) != 0);
+
+ /* load informational text (append) */
+ if (driv_idx)
+ {
+ int len = strlen(buffer);
+ int err = load_datafile_text(drv, buffer + len, bufsize - len, driv_idx, DATAFILE_TAG_DRIV, 1, 1);
+
+ if (err)
+ drivinfo = 0;
+ }
+ }
+ ParseClose();
+ }
+
+ strcat(buffer, "\nGAMES SUPPORTED:\n");
+
+ for (int i = 0; i < driver_list::total(); i++)
+ {
+ if (!strcmp(source_file, GetDriverFilename(i)) && !(DriverIsBios(i)))
+ {
+ strcat(buffer, driver_list::driver(i).description);
+ strcat(buffer,"\n");
+ }
+ }
+
+ strcat(buffer, "\n\n");
+ return (drivinfo == 0);
+}
+
+static int load_driver_command(const game_driver *drv, char *buffer, int bufsize)
+{
+ int command = 0;
+
+ *buffer = 0;
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\command.dat", GetDatsDir());
+ strcat(buffer, "\n**** COMMAND: ****\n\n");
+
+ /* try to open command datafile */
+ if (ParseOpen(filename))
+ {
+ /* create index if necessary */
+ if (cmd_idx)
+ command = 1;
+ else
+ command = (index_datafile (&cmd_idx, 0) != 0);
+
+ /* load informational text (append) */
+ if (cmd_idx)
+ {
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, cmd_idx, DATAFILE_TAG_CMD, 0, 0);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ command = 0;
+ }
+
+ ParseClose();
+ }
+
+ strcat(buffer, "\n\n");
+ return (command == 0);
+}
+
+static int load_driver_scoreinfo(const game_driver *drv, char *buffer, int bufsize)
+{
+ int scoreinfo = 0;
+
+ *buffer = 0;
+ snprintf(filename, ARRAY_LENGTH(filename), "%s\\story.dat", GetDatsDir());
+
+ /* try to open story datafile */
+ if (ParseOpen(filename))
+ {
+ /* create index if necessary */
+ if (score_idx)
+ scoreinfo = 1;
+ else
+ scoreinfo = (index_datafile (&score_idx, 0) != 0);
+
+ /* load informational text (append) */
+ if (score_idx)
+ {
+ int len = strlen(buffer);
+ int err = 0;
+ const game_driver *gdrv;
+ gdrv = drv;
+
+ do
+ {
+ err = load_datafile_text(gdrv, buffer + len, bufsize - len, score_idx, DATAFILE_TAG_SCORE, 0, 0);
+ int g = driver_list::clone(*gdrv);
+
+ if (g!=-1)
+ gdrv = &driver_list::driver(g);
+ else
+ gdrv = NULL;
+ } while (err && gdrv);
+
+ if (err)
+ scoreinfo = 0;
+ }
+
+ ParseClose();
+ }
+
+ return (scoreinfo == 0);
+}
+/**************************************************************
+ * functions
+ **************************************************************/
+
+// Load indexes from history.dat if found
+char * GetGameHistory(int driver_index)
+{
+ static char dataBuf[2048 * 2048];
+ static char buffer[2048 * 2048];
+
+ memset(&buffer, 0, sizeof(buffer));
+ memset(&dataBuf, 0, sizeof(dataBuf));
+
+ if (load_driver_mameinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 2) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_history(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 0) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_history(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 1) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_mameinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 0) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_driverinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 0) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_mameinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 1) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_driverinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer), 1) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_command(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer)) == 0)
+ strcat(dataBuf, buffer);
+
+ if (load_driver_scoreinfo(&driver_list::driver(driver_index), buffer, ARRAY_LENGTH(buffer)) == 0)
+ strcat(dataBuf, buffer);
+
+ return ConvertToWindowsNewlines(dataBuf);
+}
diff --git a/docs/release/src/osd/winui/history.h b/docs/release/src/osd/winui/history.h
new file mode 100644
index 00000000000..1bf846d94fd
--- /dev/null
+++ b/docs/release/src/osd/winui/history.h
@@ -0,0 +1,12 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+#pragma once
+
+#ifndef HISTORY_H
+#define HISTORY_H
+
+char * GetGameHistory(int driver_index);
+
+#endif
diff --git a/docs/release/src/osd/winui/layout.cpp b/docs/release/src/osd/winui/layout.cpp
new file mode 100644
index 00000000000..a4ced439c48
--- /dev/null
+++ b/docs/release/src/osd/winui/layout.cpp
@@ -0,0 +1,265 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ layout.c
+
+ MAME specific TreeView definitions (and maybe more in the future)
+
+***************************************************************************/
+// standard windows headers
+#include <windows.h>
+#include <commctrl.h>
+
+// MAME/MAMEUI headers
+#include "bitmask.h"
+#include "treeview.h"
+#include "emu.h"
+#include "mui_util.h"
+#include "resource.h"
+#include "mui_opts.h"
+#include "splitters.h"
+#include "help.h"
+#include "mui_audit.h"
+#include "properties.h"
+//#define MESS
+
+static BOOL FilterAvailable(int driver_index);
+
+#ifdef MESS
+#include "drivenum.h"
+
+static BOOL DriverIsComputer(int driver_index)
+{
+ return (driver_list::driver(driver_index).flags & MACHINE_TYPE_COMPUTER) != 0;
+}
+
+static BOOL DriverIsConsole(int driver_index)
+{
+ return (driver_list::driver(driver_index).flags & MACHINE_TYPE_CONSOLE) != 0;
+}
+
+static BOOL DriverIsModified(int driver_index)
+{
+ return (driver_list::driver(driver_index).flags & MACHINE_UNOFFICIAL) != 0;
+}
+
+extern const FOLDERDATA g_folderData[] =
+{
+ {"All Systems", "allgames", FOLDER_ALLGAMES, IDI_FOLDER, 0, 0, NULL, NULL, TRUE },
+ {"Available", "available", FOLDER_AVAILABLE, IDI_FOLDER_AVAILABLE, F_AVAILABLE, 0, NULL, FilterAvailable, TRUE },
+ {"Unavailable", "unavailable", FOLDER_UNAVAILABLE, IDI_FOLDER_UNAVAILABLE, 0, F_AVAILABLE, NULL, FilterAvailable, FALSE },
+ {"Console", "console", FOLDER_CONSOLE, IDI_FOLDER, F_CONSOLE, F_COMPUTER, NULL, DriverIsConsole, TRUE },
+ {"Computer", "computer", FOLDER_COMPUTER, IDI_FOLDER, F_COMPUTER, F_CONSOLE, NULL, DriverIsComputer, TRUE },
+ {"Modified/Hacked", "modified", FOLDER_MODIFIED, IDI_FOLDER, 0, 0, NULL, DriverIsModified, TRUE },
+ {"Manufacturer", "manufacturer", FOLDER_MANUFACTURER, IDI_FOLDER_MANUFACTURER, 0, 0, CreateManufacturerFolders },
+ {"Year", "year", FOLDER_YEAR, IDI_FOLDER_YEAR, 0, 0, CreateYearFolders },
+ {"Source", "source", FOLDER_SOURCE, IDI_FOLDER_SOURCE, 0, 0, CreateSourceFolders },
+// {"CPU", "cpu", FOLDER_CPU, IDI_FOLDER, 0, 0, CreateCPUFolders },
+// {"Sound", "sound", FOLDER_SND, IDI_FOLDER, 0, 0, CreateSoundFolders },
+ {"Imperfect", "imperfect", FOLDER_DEFICIENCY, IDI_FOLDER, 0, 0, CreateDeficiencyFolders },
+// {"Dumping Status", "dumping", FOLDER_DUMPING, IDI_FOLDER, 0, 0, CreateDumpingFolders },
+// {"BIOS", "bios", FOLDER_BIOS, IDI_FOLDER, 0, 0, CreateBIOSFolders, DriverIsBios, TRUE },
+ {"CHD", "harddisk", FOLDER_HARDDISK, IDI_HARDDISK, 0, 0, NULL, DriverIsHarddisk, TRUE },
+ {"Samples", "samples", FOLDER_SAMPLES, IDI_FOLDER, 0, 0, NULL, DriverUsesSamples, TRUE },
+ {"Working", "working", FOLDER_WORKING, IDI_WORKING, F_WORKING, F_NONWORKING, NULL, DriverIsBroken, FALSE },
+ {"Not Working", "nonworking", FOLDER_NONWORKING, IDI_NONWORKING, F_NONWORKING, F_WORKING, NULL, DriverIsBroken, TRUE },
+ {"Originals", "originals", FOLDER_ORIGINAL, IDI_FOLDER, F_ORIGINALS, F_CLONES, NULL, DriverIsClone, FALSE },
+ {"Clones", "clones", FOLDER_CLONES, IDI_FOLDER, F_CLONES, F_ORIGINALS, NULL, DriverIsClone, TRUE },
+ {"Screens", "screens", FOLDER_SCREENS, IDI_FOLDER, 0, 0, CreateScreenFolders },
+ {"Raster", "raster", FOLDER_RASTER, IDI_FOLDER, F_RASTER, F_VECTOR, NULL, DriverIsVector, FALSE },
+ {"Horizontal", "horizontal", FOLDER_HORIZONTAL, IDI_FOLDER_HORIZONTAL, F_HORIZONTAL, F_VERTICAL, NULL, DriverIsVertical, FALSE },
+ {"Vertical", "vertical", FOLDER_VERTICAL, IDI_FOLDER_VERTICAL, F_VERTICAL, F_HORIZONTAL, NULL, DriverIsVertical, TRUE },
+ {"Vector", "vector", FOLDER_VECTOR, IDI_FOLDER, F_VECTOR, F_RASTER, NULL, DriverIsVector, TRUE },
+ {"Mouse", "mouse", FOLDER_MOUSE, IDI_FOLDER, 0, 0, NULL, DriverUsesMouse, TRUE },
+ {"Trackball", "trackball", FOLDER_TRACKBALL, IDI_FOLDER, 0, 0, NULL, DriverUsesTrackball, TRUE },
+ {"Lightgun", "Lightgun", FOLDER_LIGHTGUN, IDI_FOLDER, 0, 0, NULL, DriverUsesLightGun, TRUE },
+ {"Stereo", "stereo", FOLDER_STEREO, IDI_SOUND, 0, 0, NULL, DriverIsStereo, TRUE },
+ {"Save State", "savestate", FOLDER_SAVESTATE, IDI_FOLDER, 0, 0, NULL, DriverSupportsSaveState, TRUE },
+ {"Mechanical", "mechanical", FOLDER_MECHANICAL, IDI_FOLDER, 0, 0, NULL, DriverIsMechanical, TRUE },
+ {"Non Mechanical", "nonmechanical", FOLDER_NONMECHANICAL,IDI_FOLDER, 0, 0, NULL, DriverIsMechanical, FALSE },
+ { NULL }
+};
+#else
+extern const FOLDERDATA g_folderData[] =
+{
+ {"All Games", "allgames", FOLDER_ALLGAMES, IDI_FOLDER, 0, 0, NULL, NULL, TRUE },
+ {"Available", "available", FOLDER_AVAILABLE, IDI_FOLDER_AVAILABLE, F_AVAILABLE, 0, NULL, FilterAvailable, TRUE },
+ {"Unavailable", "unavailable", FOLDER_UNAVAILABLE, IDI_FOLDER_UNAVAILABLE, 0, F_AVAILABLE, NULL, FilterAvailable, FALSE },
+ {"Manufacturer", "manufacturer", FOLDER_MANUFACTURER, IDI_FOLDER_MANUFACTURER, 0, 0, CreateManufacturerFolders },
+ {"Year", "year", FOLDER_YEAR, IDI_FOLDER_YEAR, 0, 0, CreateYearFolders },
+ {"Source", "source", FOLDER_SOURCE, IDI_FOLDER_SOURCE, 0, 0, CreateSourceFolders },
+// These 3 work, but cause MAMEUI to take a long time to start (approx 2 secs each)
+// {"CPU", "cpu", FOLDER_CPU, IDI_CPU, 0, 0, CreateCPUFolders },
+// {"Sound", "sound", FOLDER_SND, IDI_SOUND, 0, 0, CreateSoundFolders },
+// {"Dumping Status", "dumping", FOLDER_DUMPING, IDI_FOLDER, 0, 0, CreateDumpingFolders },
+ {"BIOS", "bios", FOLDER_BIOS, IDI_FOLDER, 0, 0, CreateBIOSFolders, DriverIsBios, TRUE },
+ {"CHD", "harddisk", FOLDER_HARDDISK, IDI_HARDDISK, 0, 0, NULL, DriverIsHarddisk, TRUE },
+ {"Samples", "samples", FOLDER_SAMPLES, IDI_FOLDER, 0, 0, NULL, DriverUsesSamples, TRUE },
+ {"Working", "working", FOLDER_WORKING, IDI_WORKING, F_WORKING, F_NONWORKING, NULL, DriverIsBroken, FALSE },
+ {"Imperfect", "imperfect", FOLDER_DEFICIENCY, IDI_FOLDER, 0, 0, CreateDeficiencyFolders },
+ {"Not Working", "nonworking", FOLDER_NONWORKING, IDI_NONWORKING, F_NONWORKING, F_WORKING, NULL, DriverIsBroken, TRUE },
+ {"Originals", "originals", FOLDER_ORIGINAL, IDI_FOLDER, F_ORIGINALS, F_CLONES, NULL, DriverIsClone, FALSE },
+ {"Clones", "clones", FOLDER_CLONES, IDI_FOLDER, F_CLONES, F_ORIGINALS, NULL, DriverIsClone, TRUE },
+ {"Screens", "screens", FOLDER_SCREENS, IDI_FOLDER, 0, 0, CreateScreenFolders },
+// These 2 stop MAMEUI from starting
+// {"Resolution", "resolution", FOLDER_RESOLUTION, IDI_FOLDER, 0, 0, CreateResolutionFolders },
+// {"FPS", "fps", FOLDER_FPS, IDI_FOLDER, 0, 0, CreateFPSFolders },
+ {"Horizontal", "horizontal", FOLDER_HORIZONTAL, IDI_FOLDER_HORIZONTAL, F_HORIZONTAL, F_VERTICAL, NULL, DriverIsVertical, FALSE },
+ {"Vertical", "vertical", FOLDER_VERTICAL, IDI_FOLDER_VERTICAL, F_VERTICAL, F_HORIZONTAL, NULL, DriverIsVertical, TRUE },
+ {"Raster", "raster", FOLDER_RASTER, IDI_FOLDER, F_RASTER, F_VECTOR, NULL, DriverIsVector, FALSE },
+ {"Vector", "vector", FOLDER_VECTOR, IDI_FOLDER, F_VECTOR, F_RASTER, NULL, DriverIsVector, TRUE },
+ {"Trackball", "trackball", FOLDER_TRACKBALL, IDI_FOLDER, 0, 0, NULL, DriverUsesTrackball, TRUE },
+ {"Lightgun", "Lightgun", FOLDER_LIGHTGUN, IDI_FOLDER, 0, 0, NULL, DriverUsesLightGun, TRUE },
+ {"Stereo", "stereo", FOLDER_STEREO, IDI_FOLDER, 0, 0, NULL, DriverIsStereo, TRUE },
+ {"Save State", "savestate", FOLDER_SAVESTATE, IDI_FOLDER, 0, 0, NULL, DriverSupportsSaveState, TRUE },
+ {"Mechanical", "mechanical", FOLDER_MECHANICAL, IDI_FOLDER, 0, 0, NULL, DriverIsMechanical, TRUE },
+ {"Non Mechanical", "nonmechanical", FOLDER_NONMECHANICAL,IDI_FOLDER, 0, 0, NULL, DriverIsMechanical, FALSE },
+ { NULL }
+};
+#endif
+
+/* list of filter/control Id pairs */
+#ifdef MESS
+extern const FILTER_ITEM g_filterList[] =
+{
+ { F_VECTOR, IDC_FILTER_VECTOR, DriverIsVector, TRUE },
+ { F_RASTER, IDC_FILTER_RASTER, DriverIsVector, FALSE },
+ { F_CLONES, IDC_FILTER_CLONES, DriverIsClone, TRUE },
+ { F_ORIGINALS, IDC_FILTER_ORIGINALS, DriverIsClone, FALSE },
+ { F_NONWORKING, IDC_FILTER_NONWORKING, DriverIsBroken, TRUE },
+ { F_WORKING, IDC_FILTER_WORKING, DriverIsBroken, FALSE },
+ { F_HORIZONTAL, IDC_FILTER_HORIZONTAL, DriverIsVertical, FALSE },
+ { F_VERTICAL, IDC_FILTER_VERTICAL, DriverIsVertical, TRUE },
+ { F_COMPUTER, IDC_FILTER_COMPUTER, DriverIsComputer, TRUE },
+ { F_CONSOLE, IDC_FILTER_CONSOLE, DriverIsConsole, TRUE },
+ { F_UNAVAILABLE, IDC_FILTER_UNAVAILABLE, FilterAvailable, FALSE },
+ { F_MECHANICAL, IDC_FILTER_MECHANICAL, DriverIsMechanical, TRUE },
+ { F_ARCADE, IDC_FILTER_ARCADE, DriverIsArcade, TRUE },
+ { F_MESS, IDC_FILTER_MESS, DriverIsArcade, FALSE },
+// { F_MODIFIED, IDC_FILTER_MODIFIED, DriverIsModified, TRUE },
+// { F_AVAILABLE, IDC_FILTER_AVAILABLE, FilterAvailable, TRUE },
+ { 0 }
+};
+#else
+extern const FILTER_ITEM g_filterList[] =
+{
+ { F_CLONES, IDC_FILTER_CLONES, DriverIsClone, TRUE },
+ { F_NONWORKING, IDC_FILTER_NONWORKING, DriverIsBroken, TRUE },
+ { F_UNAVAILABLE, IDC_FILTER_UNAVAILABLE, FilterAvailable, FALSE },
+ { F_RASTER, IDC_FILTER_RASTER, DriverIsVector, FALSE },
+ { F_VECTOR, IDC_FILTER_VECTOR, DriverIsVector, TRUE },
+ { F_ORIGINALS, IDC_FILTER_ORIGINALS, DriverIsClone, FALSE },
+ { F_WORKING, IDC_FILTER_WORKING, DriverIsBroken, FALSE },
+ { F_AVAILABLE, IDC_FILTER_AVAILABLE, FilterAvailable, TRUE },
+ { F_HORIZONTAL, IDC_FILTER_HORIZONTAL, DriverIsVertical, FALSE },
+ { F_VERTICAL, IDC_FILTER_VERTICAL, DriverIsVertical, TRUE },
+ { F_MECHANICAL, IDC_FILTER_MECHANICAL, DriverIsMechanical, TRUE },
+ { F_ARCADE, IDC_FILTER_ARCADE, DriverIsArcade, TRUE },
+ { F_MESS, IDC_FILTER_MESS, DriverIsArcade, FALSE },
+ { 0 }
+};
+#endif
+
+#ifdef MESS
+extern const MAMEHELPINFO g_helpInfo[] =
+{
+ //{ ID_HELP_CONTENTS, TRUE, TEXT(MAMEUIHELP"::/windows/main.htm") },
+ { ID_HELP_CONTENTS, TRUE, TEXT(MAMEUIHELP) }, // 0 - call up CHM file
+ //{ ID_HELP_RELEASE, TRUE, TEXT(MAMEUIHELP) },
+ //{ ID_HELP_WHATS_NEW, TRUE, TEXT(MAMEUIHELP"::/messnew.txt") },
+ { ID_HELP_WHATS_NEW, TRUE, TEXT("") }, // 1 - call up whatsnew at mamedev.org
+ { -1 }
+};
+#else
+extern const MAMEHELPINFO g_helpInfo[] =
+{
+ { ID_HELP_CONTENTS, TRUE, TEXT(MAMEUIHELP) },
+ //{ ID_HELP_WHATS_NEWUI, TRUE, TEXT(MAMEUIHELP"::/html/mameui_changes.txt") },
+ //{ ID_HELP_TROUBLE, TRUE, TEXT(MAMEUIHELP"::/html/mameui_support.htm") },
+ //{ ID_HELP_RELEASE, FALSE, TEXT("windows.txt") },
+ { ID_HELP_WHATS_NEW, TRUE, TEXT(MAMEUIHELP"::/docs/whatsnew.txt") },
+ { -1 }
+};
+#endif
+
+#ifdef MESS
+extern const PROPERTYSHEETINFO g_propSheets[] =
+{
+ { FALSE, NULL, IDD_PROP_GAME, GamePropertiesDialogProc },
+ { FALSE, NULL, IDD_PROP_AUDIT, GameAuditDialogProc },
+ { TRUE, NULL, IDD_PROP_DISPLAY, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_ADVANCED, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_SCREEN, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_SOUND, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_INPUT, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_CONTROLLER, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_DEBUG, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_MISC, GameOptionsProc },
+ { FALSE, NULL, IDD_PROP_SOFTWARE, GameMessOptionsProc },
+ { FALSE, DriverHasRam, IDD_PROP_CONFIGURATION, GameMessOptionsProc }, // PropSheetFilter_Config not needed
+ { TRUE, DriverIsVector, IDD_PROP_VECTOR, GameOptionsProc }, // PropSheetFilter_Vector not needed
+ { FALSE }
+};
+#else
+extern const PROPERTYSHEETINFO g_propSheets[] =
+{
+ { FALSE, NULL, IDD_PROP_GAME, GamePropertiesDialogProc },
+ { FALSE, NULL, IDD_PROP_AUDIT, GameAuditDialogProc },
+ { TRUE, NULL, IDD_PROP_DISPLAY, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_ADVANCED, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_SCREEN, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_SOUND, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_INPUT, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_CONTROLLER, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_MISC, GameOptionsProc },
+ { TRUE, NULL, IDD_PROP_DEBUG, GameOptionsProc },
+ { TRUE, DriverIsVector, IDD_PROP_VECTOR, GameOptionsProc },
+ { FALSE }
+};
+#endif
+
+#ifdef MESS
+extern const ICONDATA g_iconData[] =
+{
+ { IDI_WIN_NOROMS, "noroms" },
+ { IDI_WIN_ROMS, "roms" },
+ { IDI_WIN_UNKNOWN, "unknown" },
+ { IDI_WIN_CLONE, "clone" },
+ { IDI_WIN_REDX, "warning" },
+ { IDI_WIN_NOROMSNEEDED, "noromsneeded" },
+ { IDI_WIN_MISSINGOPTROM, "missingoptrom" },
+ { IDI_WIN_FLOP, "floppy" },
+ { IDI_WIN_CASS, "cassette" },
+ { IDI_WIN_SERL, "serial" },
+ { IDI_WIN_SNAP, "snapshot" },
+ { IDI_WIN_PRIN, "printer" },
+ { IDI_WIN_HARD, "hard" },
+ { 0 }
+};
+#else
+extern const ICONDATA g_iconData[] =
+{
+ { IDI_WIN_NOROMS, "noroms" },
+ { IDI_WIN_ROMS, "roms" },
+ { IDI_WIN_UNKNOWN, "unknown" },
+ { IDI_WIN_CLONE, "clone" },
+ { IDI_WIN_REDX, "warning" },
+ { 0 }
+};
+#endif
+
+#ifdef MESS
+extern const TCHAR g_szPlayGameString[] = TEXT("&Run %s");
+extern const char g_szGameCountString[] = "%d systems";
+#else
+extern const TCHAR g_szPlayGameString[] = TEXT("&Play %s");
+extern const char g_szGameCountString[] = "%d games";
+#endif
+
+static BOOL FilterAvailable(int driver_index)
+{
+ return !DriverUsesRoms(driver_index) || IsAuditResultYes(GetRomAuditResults(driver_index));
+}
diff --git a/docs/release/src/osd/winui/mameui.rc b/docs/release/src/osd/winui/mameui.rc
new file mode 100644
index 00000000000..a51eda11202
--- /dev/null
+++ b/docs/release/src/osd/winui/mameui.rc
@@ -0,0 +1,1467 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "newuires.h"
+#include "resource.h"
+
+// Generated Help ID header file
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.hm"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h"
+#include "commctrl.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (USA) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MAIN_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Exit", ID_FILE_EXIT
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&About MAMEUI", ID_ABOUT
+ END
+END
+
+IDR_UI_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM "P&layback Input...", ID_FILE_PLAY_BACK
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &Wave Output...", ID_FILE_PLAY_RECORD_WAVE
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &MNG Output...", ID_FILE_PLAY_RECORD_MNG
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &uncompressed AVI Output...",
+ ID_FILE_PLAY_RECORD_AVI
+ MENUITEM SEPARATOR
+ MENUITEM "Loa&d Savestate...", ID_FILE_LOADSTATE
+ MENUITEM SEPARATOR
+
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM SEPARATOR
+ MENUITEM "Audi&t existing sets", ID_FILE_AUDIT_X
+ MENUITEM "&Audit all sets", ID_FILE_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit", ID_FILE_EXIT
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "&Toolbar\tAlt+T", ID_VIEW_TOOLBARS
+ MENUITEM "&Status bar\tAlt+S", ID_VIEW_STATUS
+ MENUITEM "Fold&er List\tAlt+D", ID_VIEW_FOLDERS
+ MENUITEM "&Picture Area\tAlt+P", ID_VIEW_PICTURE_AREA
+ MENUITEM "Screenshot Ta&b\tAlt+B", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ MENUITEM "&Fullscreen\tF11", ID_VIEW_FULLSCREEN
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "L&arge Icons", ID_VIEW_LARGE_ICON
+ MENUITEM "S&mall Icons", ID_VIEW_SMALL_ICON
+ MENUITEM "&List", ID_VIEW_LIST_MENU
+ MENUITEM "&Details", ID_VIEW_DETAIL
+ MENUITEM "&Grouped", ID_VIEW_GROUPED
+ MENUITEM SEPARATOR
+ POPUP "Arrange &Icons"
+ BEGIN
+ MENUITEM "by &Name", ID_VIEW_BYGAME
+ MENUITEM "by D&irectory", ID_VIEW_BYDIRECTORY
+ MENUITEM "by &Manufacturer", ID_VIEW_BYMANUFACTURER
+ MENUITEM "by Times &Played", ID_VIEW_BYTIMESPLAYED
+ MENUITEM "by &Type", ID_VIEW_BYTYPE
+ MENUITEM "by &Date", ID_VIEW_BYYEAR
+ END
+ MENUITEM "Line &Up Icons", ID_VIEW_LINEUPICONS
+ MENUITEM SEPARATOR
+ MENUITEM "&Refresh\tF5", ID_UPDATE_GAMELIST
+ MENUITEM "&Custom Filters...\tCtrl+F", ID_CONTEXT_FILTERS
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+ POPUP "&Options"
+ BEGIN
+ MENUITEM "&Interface Options", ID_OPTIONS_INTERFACE
+ MENUITEM "Default Game &Options", ID_OPTIONS_DEFAULTS
+ MENUITEM "&Directories", ID_OPTIONS_DIR
+ MENUITEM SEPARATOR
+ MENUITEM "Game List &Font", ID_OPTIONS_FONT
+ MENUITEM "Game List &Clone Color", ID_OPTIONS_CLONE_COLOR
+ MENUITEM SEPARATOR
+
+ MENUITEM "&Background Image", ID_OPTIONS_BG
+ MENUITEM SEPARATOR
+ MENUITEM "&Reset to Default", ID_OPTIONS_RESET_DEFAULTS
+
+ END
+ POPUP "&Help"
+ BEGIN
+// MENUITEM "&Contents\tF1", ID_HELP_CONTENTS
+// MENUITEM "&Troubleshooting", ID_HELP_TROUBLE
+// MENUITEM SEPARATOR
+// MENUITEM "&New Game Changes", ID_HELP_WHATS_NEWUI
+// MENUITEM "&Mame Release Notes", ID_HELP_WHATS_NEW
+// MENUITEM SEPARATOR
+// MENUITEM "&About", ID_HELP_ABOUT
+// MENUITEM "&Mess Release Notes", ID_HELP_RELEASE
+ MENUITEM "What's New in MAME", ID_HELP_WHATS_NEW
+ MENUITEM "&Contents\tF1", ID_HELP_CONTENTS
+// MENUITEM "&Troubleshooting", ID_HELP_TROUBLE
+ MENUITEM "&About", ID_HELP_ABOUT
+ END
+END
+
+IDR_CONTEXT_MENU MENU
+BEGIN
+ POPUP "Context Menu"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM SEPARATOR
+ MENUITEM "&Add to Custom Folder...", ID_CONTEXT_ADD_CUSTOM
+ MENUITEM "R&emove From This Folder", ID_CONTEXT_REMOVE_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ MENUITEM "&Select Random Game", ID_CONTEXT_SELECT_RANDOM
+ MENUITEM SEPARATOR
+ MENUITEM "Rese&t Playcount", ID_CONTEXT_RESET_PLAYCOUNT
+ MENUITEM "Reset Pla&y Time", ID_CONTEXT_RESET_PLAYTIME
+ MENUITEM SEPARATOR
+ MENUITEM "A&udit", ID_GAME_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM "Source propert&ies", ID_FOLDER_SOURCEPROPERTIES
+ MENUITEM "&Vector properties", ID_FOLDER_VECTORPROPERTIES
+ END
+END
+
+IDR_CONTEXT_HEADER MENU
+BEGIN
+ POPUP "Header Context Menu"
+ BEGIN
+ MENUITEM "Sort &Ascending", ID_SORT_ASCENDING
+ MENUITEM "Sort &Descending", ID_SORT_DESCENDING
+ MENUITEM SEPARATOR
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+END
+
+IDR_CONTEXT_TREE MENU
+BEGIN
+ POPUP "Context Menu Tree"
+ BEGIN
+ MENUITEM "&Rename", ID_CONTEXT_RENAME_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ POPUP "&Show Folders"
+ BEGIN
+ MENUITEM "overridden by code", ID_CONTEXT_SHOW_FOLDER_START
+
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Audit", ID_FOLDER_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "&Properties", ID_FOLDER_PROPERTIES
+ END
+END
+
+IDR_CONTEXT_SCREENSHOT MENU
+BEGIN
+ POPUP "Context Screen Shot"
+ BEGIN
+ MENUITEM "Show Tab &Control", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Snapshot", ID_VIEW_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_VIEW_TAB_FLYER
+ MENUITEM "&Cabinet", ID_VIEW_TAB_CABINET
+ MENUITEM "&Marquee", ID_VIEW_TAB_MARQUEE
+ MENUITEM "&Title", ID_VIEW_TAB_TITLE
+ MENUITEM "Control &Panel", ID_VIEW_TAB_CONTROL_PANEL
+ MENUITEM "PC&B", ID_VIEW_TAB_PCB
+ MENUITEM "&History", ID_VIEW_TAB_HISTORY
+ END
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_RUNTIME_MENU MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Load State...", ID_FILE_LOADSTATE_NEWUI, GRAYED
+ MENUITEM "&Save State", ID_FILE_SAVESTATE, GRAYED
+ MENUITEM "S&ave State As...", ID_FILE_SAVESTATE_AS, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "Save Sc&reenshot", ID_FILE_SAVESCREENSHOT
+ MENUITEM SEPARATOR
+ MENUITEM "&Hide Menubar", ID_FILE_TOGGLEMENUBAR
+ MENUITEM "&Full Screen\tAlt+Enter", ID_FILE_FULLSCREEN
+ MENUITEM "Partial Keyboard Emulation", ID_FILE_UIACTIVE
+ MENUITEM "Show Tab Menu", ID_FILE_OLDUI
+ MENUITEM SEPARATOR
+ MENUITEM "&Exit", ID_FILE_EXIT_NEWUI
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "Paste", ID_EDIT_PASTE
+ END
+ POPUP "&Options"
+ BEGIN
+ MENUITEM "&Pause", ID_OPTIONS_PAUSE, GRAYED
+ MENUITEM "Soft &Reset", ID_OPTIONS_SOFTRESET
+ MENUITEM "Ha&rd Reset", ID_OPTIONS_HARDRESET
+ MENUITEM SEPARATOR
+ POPUP "&Keyboard"
+ BEGIN
+ MENUITEM "Emulated", ID_KEYBOARD_EMULATED
+ MENUITEM "Natural", ID_KEYBOARD_NATURAL
+ MENUITEM SEPARATOR
+ MENUITEM "Customise Emulated Keyboard...", ID_KEYBOARD_CUSTOMIZE
+ END
+ MENUITEM "&Joysticks", ID_OPTIONS_JOYSTICKS, GRAYED
+ POPUP "&Video"
+ BEGIN
+ MENUITEM SEPARATOR
+ MENUITEM "Rotate 0 degrees", ID_VIDEO_ROTATE_0
+ MENUITEM "Rotate 90 degrees", ID_VIDEO_ROTATE_90
+ MENUITEM "Rotate 180 degrees", ID_VIDEO_ROTATE_180
+ MENUITEM "Rotate 270 degrees", ID_VIDEO_ROTATE_270
+ END
+ MENUITEM "&Configuration...", ID_OPTIONS_CONFIGURATION
+ MENUITEM "&DIP Switches...", ID_OPTIONS_DIPSWITCHES
+ MENUITEM "&Miscellaneous Inputs...", ID_OPTIONS_MISCINPUT
+ MENUITEM "&Analog Controls...", ID_OPTIONS_ANALOGCONTROLS
+ MENUITEM SEPARATOR
+ POPUP "&Frameskip"
+ BEGIN
+ MENUITEM "Auto", ID_FRAMESKIP_AUTO
+ END
+ POPUP "Maximum &Speed"
+ BEGIN
+ MENUITEM "50%", ID_THROTTLE_50
+ MENUITEM "100%", ID_THROTTLE_100
+ MENUITEM "200%", ID_THROTTLE_200
+ MENUITEM "500%", ID_THROTTLE_500
+ MENUITEM "1000%", ID_THROTTLE_1000
+ MENUITEM "Unlimited", ID_THROTTLE_UNTHROTTLED
+ END
+ MENUITEM "Show &FPS", ID_OPTIONS_TOGGLEFPS
+ END
+ POPUP "&Media"
+ BEGIN
+ MENUITEM SEPARATOR
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "About This System...", ID_HELP_ABOUTSYSTEM
+ MENUITEM "&About MAME...", ID_HELP_ABOUT_NEWUI
+ END
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "resource.h\\r\n"
+ "newuires.h\0"
+END
+
+2 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#define NOWINRES\r\n"
+ "#include ""windows.h""\r\n"
+ "#include ""commctrl.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#include ""mamevers.rc"" // Version block\r\n"
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_MAMEUI_ICON ICON "res\\mameui.ico"
+IDI_WIN_ROMS ICON "res\\win_roms.ico"
+IDI_WIN_NOROMS ICON "res\\win_noro.ico"
+IDI_WIN_UNKNOWN ICON "res\\win_unkn.ico"
+IDI_WIN_CLONE ICON "res\\win_clone.ico"
+IDI_WIN_REDX ICON "res\\win_redx.ico"
+IDI_FOLDER_AVAILABLE ICON "res\\foldavail.ico"
+IDI_FOLDER ICON "res\\folder.ico"
+IDI_FOLDER_MANUFACTURER ICON "res\\foldmanu.ico"
+IDI_FOLDER_OPEN ICON "res\\foldopen.ico"
+IDI_FOLDER_UNAVAILABLE ICON "res\\foldunav.ico"
+IDI_FOLDER_HORIZONTAL ICON "res\\horz.ico"
+IDI_FOLDER_VERTICAL ICON "res\\vert.ico"
+IDI_MANUFACTURER ICON "res\\manufact.ico"
+IDI_FOLDER_YEAR ICON "res\\foldyear.ico"
+IDI_FOLDER_SOURCE ICON "res\\foldsrc.ico"
+IDI_WORKING ICON "res\\working.ico"
+IDI_NONWORKING ICON "res\\nonwork.ico"
+IDI_YEAR ICON "res\\year.ico"
+IDI_KEYBOARD ICON "res\\keyboard.ico"
+IDI_JOYSTICK ICON "res\\joystick.ico"
+IDI_CPU ICON "res\\cpu.ico"
+IDI_SOUND ICON "res\\samples.ico"
+IDI_SOUNDTAB ICON "res\\sound.ico"
+IDI_SOURCE ICON "res\\source.ico"
+IDI_HARDDISK ICON "res\\harddisk.ico"
+IDI_DISPLAY ICON "res\\display.ico"
+IDI_CHECKMARK ICON "res\\checkmark.ico"
+IDI_HEADER_UP ICON "res\\header_up.ico"
+IDI_HEADER_DOWN ICON "res\\header_down.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUT DIALOG DISCARDABLE 0, 0, 296, 129
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About MAMEUI"
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "&OK",IDOK,200,109,50,14,WS_GROUP
+ CTEXT "HomeBrew MAME",IDC_STATIC,147,7,142,
+ 11,NOT WS_GROUP
+ CTEXT "Version 0",IDC_VERSION,147,18,142,11,NOT WS_GROUP
+ CTEXT "Copyright (C) 1997-2017 The HBMAME Team",IDC_STATIC,147,
+ 29,142,10,NOT WS_GROUP
+ CTEXT "MAMEUI version by",IDC_STATIC,147,51,142,10,NOT
+ WS_GROUP
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,147,44,142,1
+ CTEXT "Christopher Kirmse and the MAMEUI team",IDC_STATIC,147,
+ 62,142,9,NOT WS_GROUP
+ CTEXT "Additional MAMEUI code by",IDC_STATIC,147,74,142,9
+ CTEXT "Mike Haaland, Andrew Kirmse, Jeff Miller",IDC_STATIC,
+ 147,85,142,9
+ CTEXT "John Hardy IV and Michael Soderstrom",IDC_STATIC,147,96,
+ 142,9
+ CONTROL "",IDC_ABOUT,"Static",SS_BITMAP | SS_SUNKEN,7,7,16,14
+END
+
+IDD_DIRECTX DIALOG DISCARDABLE 0, 0, 236, 69
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "MAMEUI"
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "Go to Microsoft's DirectX Web Page",IDB_WEB_PAGE,48,52,
+ 140,14
+ EDITTEXT IDC_DIRECTX_HELP,7,0,222,48,ES_MULTILINE |
+ ES_AUTOHSCROLL | ES_READONLY
+END
+
+IDD_AUDIT DIALOG DISCARDABLE 0, 0, 283, 188
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "File Audit"
+FONT 8, "Tahoma"
+BEGIN
+ PUSHBUTTON "&Pause",IDPAUSE,98,168,40,14
+ PUSHBUTTON "&Cancel",IDCANCEL,144,168,40,14
+ GROUPBOX "ROMs",IDC_STATIC,6,4,132,65
+ LTEXT "Correct:",IDC_STATIC,51,28,32,8
+ CONTROL "Progress1",IDC_ROMS_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,14,16,116,8
+ LTEXT "Incorrect:",IDC_STATIC,51,42,32,8
+ LTEXT "Total:",IDC_STATIC,51,56,32,8
+ LTEXT "0",IDC_ROMS_CORRECT,87,28,20,8
+ LTEXT "0",IDC_ROMS_INCORRECT,87,42,20,8
+ LTEXT "0",IDC_ROMS_TOTAL,87,56,20,8
+ GROUPBOX "Samples",IDC_STATIC,145,4,132,65
+ CONTROL "Progress1",IDC_SAMPLES_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,153,16,116,8
+ LTEXT "Correct:",IDC_STATIC,191,28,33,8
+ LTEXT "Incorrect:",IDC_STATIC,191,42,33,8
+ LTEXT "Total:",IDC_STATIC,191,56,33,8
+ LTEXT "0",IDC_SAMPLES_CORRECT,227,28,20,8
+ LTEXT "0",IDC_SAMPLES_INCORRECT,227,42,20,8
+ LTEXT "0",IDC_SAMPLES_TOTAL,227,56,20,8
+ GROUPBOX "Details",IDC_STATIC,6,72,271,90
+ EDITTEXT IDC_AUDIT_DETAILS,12,82,259,74,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_DIRECTORIES DIALOG DISCARDABLE 0, 0, 230, 107
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Directories"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "Show directories for:",IDC_STATIC,6,6,67,10
+ COMBOBOX IDC_DIR_COMBO,6,18,160,79,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Directories:",IDC_STATIC,6,38,38,10
+ CONTROL "List1",IDC_DIR_LIST,"SysListView32",LVS_REPORT |
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_EDITLABELS |
+ LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | WS_BORDER |
+ WS_TABSTOP,6,50,160,51
+ DEFPUSHBUTTON "OK",IDOK,173,8,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,173,26,50,14
+ PUSHBUTTON "Browse...",IDC_DIR_BROWSE,173,50,50,14
+ PUSHBUTTON "Insert",IDC_DIR_INSERT,173,68,50,14
+ PUSHBUTTON "Delete",IDC_DIR_DELETE,173,87,50,14
+END
+
+IDD_COLUMNS DIALOG DISCARDABLE 0, 0, 302, 145
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Customize Fields"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "Available fields:",IDC_STATIC,6,6,80,10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTAVAILABLECOLUMNS,"SysListView32",
+ LVS_LIST | LVS_SINGLESEL | LVS_NOCOLUMNHEADER |
+ LVS_NOSORTHEADER | WS_BORDER | WS_HSCROLL | WS_TABSTOP,6,
+ 18,90,100
+ PUSHBUTTON "Add ->",IDC_BUTTONADD,102,18,46,14,WS_DISABLED
+ PUSHBUTTON "<- Remove",IDC_BUTTONREMOVE,102,36,46,14,WS_DISABLED
+ LTEXT "Show these fields in this order:",IDC_STATIC,154,6,96,
+ 10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTSHOWCOLUMNS,"SysListView32",LVS_LIST |
+ LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER |
+ WS_BORDER | WS_HSCROLL | WS_TABSTOP,154,18,90,100
+ PUSHBUTTON "Move Up",IDC_BUTTONMOVEUP,250,18,46,14,WS_DISABLED
+ PUSHBUTTON "Move Down",IDC_BUTTONMOVEDOWN,250,36,46,14,WS_DISABLED
+ DEFPUSHBUTTON "OK",IDOK,105,124,44,14
+ PUSHBUTTON "Cancel",IDCANCEL,155,124,44,14
+END
+
+IDD_PROP_CONTROLLER DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "Controller Mapping"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ GROUPBOX "Paddle device",IDC_STATIC,4,40,102,28
+ COMBOBOX IDC_PADDLE,10,50,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PADDLE
+ GROUPBOX "ADStick device",IDC_STATIC,4,71,102,28
+ COMBOBOX IDC_ADSTICK,10,80,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_ADSTICK
+ GROUPBOX "Pedal device",IDC_STATIC,4,102,102,28
+ COMBOBOX IDC_PEDAL,10,112,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PEDAL
+ GROUPBOX "Mouse device",IDC_STATIC,4,133,102,28
+ COMBOBOX IDC_MOUSE,10,142,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_MOUSE
+ GROUPBOX "Dial device",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DIAL,119,50,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_DIAL
+ GROUPBOX "Trackball device",IDC_STATIC,113,71,102,28
+ COMBOBOX IDC_TRACKBALL,119,80,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_TRACKBALL
+ GROUPBOX "Lightgun device",IDC_STATIC,113,102,102,28
+ COMBOBOX IDC_LIGHTGUNDEVICE,119,112,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_LIGHTGUNDEVICE
+ GROUPBOX "Positional device",IDC_STATIC,113,133,102,28
+ COMBOBOX IDC_POSITIONAL,119,142,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_POSITIONAL
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SCREEN DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Screen"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ GROUPBOX "Number of screens",IDC_STATIC,4,40,103,24
+ CONTROL "GammaSlider",IDC_NUMSCREENS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,50,75,10,0,HIDC_NUMSCREENS
+ RTEXT "1",IDC_NUMSCREENSDISP,84,49,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Screen",IDC_STATIC,4,66,103,29
+ COMBOBOX IDC_SCREEN,10,76,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREEN
+
+ GROUPBOX "",IDC_STATIC,4,97,103,28
+ CONTROL "Autoselect aspect",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,97,73,10,0,HIDC_ASPECT
+ LTEXT "Aspect ratio",IDC_ASPECTRATIOTEXT,17,108,40,11,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATION,60,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATION
+ LTEXT ":",IDC_STATIC,76,108,8,10,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATIOD,80,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATIOD
+
+ GROUPBOX "View",IDC_STATIC,4,128,103,28
+ COMBOBOX IDC_VIEW,10,137,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIEW
+
+ GROUPBOX "Screennumber",IDC_SCREENSELECTTEXT,113,40,102,28
+ COMBOBOX IDC_SCREENSELECT,119,50,90,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREENSELECT
+
+ GROUPBOX "Resolution",IDC_STATIC,113,71,102,76,WS_GROUP
+ GROUPBOX "Size",IDC_STATIC,119,81,90,28,WS_GROUP
+ COMBOBOX IDC_SIZES,126,91,77,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SIZES
+
+ GROUPBOX "Refresh",IDC_REFRESHTEXT,119,112,90,28,WS_GROUP
+ COMBOBOX IDC_REFRESH,126,121,77,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_REFRESH
+ CONTROL "Switch resolutions to fit",IDC_SWITCHRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,151,93,10,0,HIDC_SWITCHRES
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_GAME DIALOG DISCARDABLE 0, 0, 220, 276
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "General"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_GAME_ICON,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,38,178,1
+ LTEXT "Manufactured:",IDC_STATIC,18,43,47,8
+ LTEXT "Static",IDC_PROP_MANUFACTURED,65,43,155,9,SS_NOPREFIX
+ LTEXT "Status:",IDC_STATIC,18,52,47,8
+ LTEXT "Static",IDC_PROP_STATUS,65,52,155,32
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,85,178,1
+ LTEXT "CPU:",IDC_STATIC,18,90,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_CPU,65,90,155,40
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,130,178,1
+ LTEXT "Sound:",IDC_STATIC,18,135,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_SOUND,65,135,155,45
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,181,178,1
+ LTEXT "Screen:",IDC_STATIC,18,186,47,8
+ LTEXT "Static\nStatic\nStatic",IDC_PROP_SCREEN,65,186,155,27
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,218,178,1
+ LTEXT "Source:",IDC_STATIC,16,223,47,8
+ LTEXT "Static",IDC_PROP_SOURCE,65,223,139,8
+ LTEXT "Clone of:",IDC_PROP_CLONEOF_TEXT,16,232,50,8
+ LTEXT "Static",IDC_PROP_CLONEOF,65,232,130,33
+END
+
+IDD_PROP_AUDIT DIALOG DISCARDABLE 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Audit"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_CHECKMARK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ LTEXT "ROM check:",IDC_STATIC,10,40,50,8
+ LTEXT "Checking...",IDC_PROP_ROMS,66,40,139,8
+ LTEXT "Sample check:",IDC_STATIC,10,52,50,8
+ LTEXT "Checking...",IDC_PROP_SAMPLES,66,52,139,8
+ GROUPBOX "Details",IDC_STATIC,4,64,211,171
+ EDITTEXT IDC_AUDIT_DETAILS_PROP,10,74,199,155,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_PROP_DISPLAY DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Display"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,169,25,SS_NOPREFIX
+
+ CONTROL "Run in a window",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,69,10,0,HIDC_WINDOWED
+ CONTROL "Start out maximized",IDC_MAXIMIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,74,10,0,HIDC_MAXIMIZE
+ CONTROL "Enforce aspect ratio",IDC_KEEPASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,77,10,0,HIDC_KEEPASPECT
+ CONTROL "Throttle",IDC_THROTTLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,39,10,0,HIDC_THROTTLE
+
+ GROUPBOX "Bitmap prescaling",IDC_PRESCALETEXT,4,89,103,24
+ CONTROL "GammaSlider",IDC_PRESCALE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,99,71,10,0,HIDC_PRESCALE
+ RTEXT "1.00",IDC_PRESCALEDISP,84,98,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Gamma Correction",IDC_STATIC,4,115,103,24
+ CONTROL "GammaSlider",IDC_GAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,125,71,10,0,HIDC_GAMMA
+ RTEXT "2.00",IDC_GAMMADISP,84,124,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Brightness Correction",IDC_STATIC,4,141,103,24
+ CONTROL "GammaSlider",IDC_BRIGHTCORRECT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,151,71,10,0,HIDC_BRIGHTCORRECT
+ RTEXT "1.00",IDC_BRIGHTCORRECTDISP,84,150,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Contrast Correction",IDC_STATIC,4,167,103,24
+ CONTROL "GammaSlider",IDC_CONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,176,71,10,0,HIDC_CONTRAST
+ RTEXT "1.00",IDC_CONTRASTDISP,84,175,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Pause Brightness",IDC_STATIC,4,193,103,24
+ CONTROL "Slider1",IDC_PAUSEBRIGHT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,203,71,10,0,HIDC_PAUSEBRIGHT
+ RTEXT "0.65",IDC_PAUSEBRIGHTDISP,84,202,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Video mode",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_VIDEO_MODE,119,50,90,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIDEO_MODE
+
+ GROUPBOX "Rotation",IDC_STATIC,113,71,102,55
+ COMBOBOX IDC_ROTATE,119,81,90,57,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_ROTATE
+ CONTROL "Flip screen upside-down",IDC_FLIPY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,98,91,10,0,HIDC_FLIPY
+ CONTROL "Flip screen left-right",IDC_FLIPX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,110,77,10,0,HIDC_FLIPX
+
+ GROUPBOX "Direct3D",IDC_STATIC,113,128,102,57
+ CONTROL "Use Bilinear filtering",IDC_D3D_FILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,138,85,10,0,HIDC_D3D_FILTER
+
+// GROUPBOX "Version",IDC_STATIC,119,150,90,28
+// COMBOBOX IDC_D3D_VERSION,125,160,78,95,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_D3D_VERSION
+
+// GROUPBOX "DirectDraw",IDC_STATIC,113,187,102,26
+// CONTROL "Stretch using hardware",IDC_HWSTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,197,85,10,0,HIDC_HWSTRETCH
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SOUND DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Sound"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_SOUNDTAB,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ GROUPBOX "",IDC_STATIC,4,40,211,155
+
+ GROUPBOX "Soundmode",IDC_STATIC,60,50,100,28
+ COMBOBOX IDC_SOUND_MODE,66,60,88,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIDEO_MODE
+
+ CONTROL "Use samples",IDC_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,84,55,10,0,HIDC_SAMPLES
+
+ GROUPBOX "Sample rate",IDC_RATETEXT,60,96,100,28
+ COMBOBOX IDC_SAMPLERATE,66,106,88,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SAMPLERATE
+
+ GROUPBOX "Volume attenuation",IDC_VOLUMETEXT,60,127,100,28
+ CONTROL "Slider1",IDC_VOLUME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,66,139,68,10,0,HIDC_VOLUME
+ RTEXT "0dB",IDC_VOLUMEDISP,132,138,20,11,SS_CENTERIMAGE
+
+ GROUPBOX "Audio latency",IDC_AUDIO_LATENCY_TEXT,60,158,100,28
+ CONTROL "Slider1",IDC_AUDIO_LATENCY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,66,170,68,10,0,HIDC_AUDIO_LATENCY
+ RTEXT "1/5",IDC_AUDIO_LATENCY_DISP,132,169,20,11,SS_CENTERIMAGE
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_ADVANCED DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Advanced"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Triple buffering",IDC_TRIPLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,93,10,0,HIDC_TRIPLE_BUFFER
+ CONTROL "Sync to monitor refresh",IDC_SYNCREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_SYNCREFRESH
+ CONTROL "Wait for vertical sync",IDC_WAITVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,93,10,0,HIDC_WAITVSYNC
+ CONTROL "Refresh speed",IDC_REFRESHSPEED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,93,10,0,HIDC_REFRESHSPEED
+
+ GROUPBOX "Frame skipping",IDC_STATIC,4,104,103,42
+ CONTROL "Automatic",IDC_AUTOFRAMESKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,114,77,10,0,HIDC_AUTOFRAMESKIP
+ COMBOBOX IDC_FRAMESKIP,10,127,91,88,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_FRAMESKIP
+
+ GROUPBOX "Full screen gamma",IDC_FSGAMMATEXT,113,40,102,24
+ CONTROL "Slider1",IDC_FSGAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,50,71,10,0,HIDC_FSGAMMA
+ RTEXT "2.00",IDC_FSGAMMADISP,193,49,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen brightness",IDC_FSBRIGHTNESSTEXT,113,67,102,24
+ CONTROL "Slider1",IDC_FSBRIGHTNESS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,77,71,10,0,HIDC_FSBRIGHTNESS
+ RTEXT "2.00",IDC_FSBRIGHTNESSDISP,193,76,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen contrast",IDC_FSCONTRASTTEXT,113,94,102,24
+ CONTROL "Slider1",IDC_FSCONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,104,71,10,0,HIDC_FSCONTRAST
+ RTEXT "2.00",IDC_FSCONTRASTDISP,193,103,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Seconds to run",IDC_SECONDSTORUNTEXT,113,122,102,24
+ CONTROL "",IDC_SECONDSTORUN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,132,71,10,0,HIDC_SECONDSTORUN
+ RTEXT "60",IDC_SECONDSTORUNDISP,193,130,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Emulation speed",IDC_SPEEDTEXT,4,155,211,24
+ CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,12,165,180,10,0,HIDC_SPEED
+ RTEXT "1.00",IDC_SPEEDDISP,191,164,20,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Effect",IDC_STATIC,4,182,211,50
+ EDITTEXT IDC_EFFECT,12,192,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Effect",IDC_SELECT_EFFECT,12,211,60,14,0,0,HIDC_SELECT_EFFECT
+ PUSHBUTTON "Reset Effect",IDC_RESET_EFFECT,152,211,60,14,0,0,HIDC_RESET_EFFECT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_DEBUG DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Debug"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MANUFACTURER,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Output log to Windows Debugger",IDC_OSLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,124,10,0,HIDC_OSLOG
+ CONTROL "Output log to Logfile",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_LOG
+ CONTROL "Output diagnostic information",IDC_VERBOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,111,10,0,HIDC_VERBOSE
+ CONTROL "Update Main window during paused emulation",IDC_UPDATEINPAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,171,10,0,HIDC_UPDATEINPAUSE
+ CONTROL "Activate Integrated Debugger",IDC_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,118,10,0,HIDC_DEBUG
+
+ GROUPBOX "Debugscript",IDC_STATIC,6,104,211,50
+ EDITTEXT IDC_DEBUGSCRIPT,14,114,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Debugscript",IDC_SELECT_DEBUGSCRIPT,14,133,67,14,0,0,HIDC_SELECT_DEBUGSCRIPT
+ PUSHBUTTON "Reset Debugscript",IDC_RESET_DEBUGSCRIPT,149,133,65,14,0,0,HIDC_RESET_DEBUGSCRIPT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_INPUT DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Controllers"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable mouse input",IDC_USE_MOUSE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,40,86,10,0,
+ HIDC_USE_MOUSE
+ CONTROL "Enable steadykey support",IDC_STEADYKEY,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,52,95,10,0,
+ HIDC_STEADYKEY
+ GROUPBOX "",IDC_STATIC,4,64,103,74
+ CONTROL "Enable joystick input",IDC_JOYSTICK,"Button",
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,10,64,78,10,0,
+ HIDC_JOYSTICK
+ GROUPBOX "Joystick deadzone",IDC_JDZTEXT,10,76,91,28
+ CONTROL "IntensitySlider",IDC_JDZ,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,15,88,60,10,0,HIDC_JDZ
+ RTEXT "0.3",IDC_JDZDISP,76,87,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ GROUPBOX "Default input layout",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DEFAULT_INPUT,119,50,90,53,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_DEFAULT_INPUT
+ GROUPBOX "",IDC_STATIC,113,71,102,66
+ CONTROL "Enable lightgun input",IDC_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,71,80,10,0,
+ HIDC_LIGHTGUN
+ CONTROL "Offscreen shots reload",IDC_RELOAD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,83,86,10,0,HIDC_RELOAD
+ CONTROL "Dual lightguns",IDC_DUAL_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,96,86,10,0,
+ HIDC_DUAL_LIGHTGUN
+ CONTROL "Multiple keyboards",IDC_MULTIKEYBOARD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,109,75,10,0,
+ HIDC_MULTIKEYBOARD
+ CONTROL "Multiple mice",IDC_MULTIMOUSE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,122,56,10,0,HIDC_MULTIMOUSE
+ GROUPBOX "Joystick saturation",IDC_JSATTEXT,10,106,91,28
+ CONTROL "IntensitySlider",IDC_JSAT,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,16,118,60,10,0,HIDC_JSAT
+ RTEXT "0.85",IDC_JSATDISP,76,116,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+ GROUPBOX "Joystickmap",IDC_STATIC,4,143,211,50
+ EDITTEXT IDC_JOYSTICKMAP,12,153,200,14,ES_AUTOHSCROLL |
+ WS_DISABLED
+ PUSHBUTTON "Select Joystickmap",IDC_SELECT_JOYSTICKMAP,12,172,67,14,
+ 0,0,HIDC_SELECT_JOYSTICKMAP
+ PUSHBUTTON "Reset Joystickmap",IDC_RESET_JOYSTICKMAP,147,172,65,14,
+ 0,0,HIDC_RESET_JOYSTICKMAP
+END
+
+IDD_PROP_MISC DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Miscellaneous"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable cheats",IDC_CHEAT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,40,86,10,0,HIDC_CHEAT
+ CONTROL "Sleep when possible",IDC_SLEEP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,52,86,10,0,HIDC_SLEEP
+ CONTROL "Skip game info",IDC_SKIP_GAME_INFO,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,64,96,10,0,
+ HIDC_SKIP_GAME_INFO
+ CONTROL "Save game state on exit",IDC_ENABLE_AUTOSAVE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,76,96,10,0,
+ HIDC_ENABLE_AUTOSAVE
+ CONTROL "Coin lockout",IDC_COINLOCKOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,100,96,10,0,HIDC_COINLOCKOUT
+ GROUPBOX "Thread Priority",IDC_HIGH_PRIORITY_TEXT,7,112,103,34
+ CONTROL "Slider1",IDC_HIGH_PRIORITY,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,13,122,75,10,0,
+ HIDC_HIGH_PRIORITY
+ LTEXT "idle",IDC_STATIC,17,132,12,8
+ RTEXT "-15",IDC_HIGH_PRIORITYTXT,87,122,14,10,SS_CENTERIMAGE
+ RTEXT "real-time",IDC_STATIC,57,134,28,8
+ GROUPBOX "Snapshot view",IDC_STATIC,7,148,103,28
+ COMBOBOX IDC_SNAPVIEW,13,158,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPVIEW
+ GROUPBOX "Artwork options",IDC_STATIC,113,40,102,85
+ CONTROL "Backdrops",IDC_BACKDROPS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,50,86,10,0,HIDC_BACKDROPS
+ CONTROL "Bezels",IDC_BEZELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,62,86,10,0,HIDC_BEZELS
+ CONTROL "Overlays",IDC_OVERLAYS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,74,84,10,0,HIDC_OVERLAYS
+ CONTROL "CPanels",IDC_CPANELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,86,84,10,0
+ CONTROL "Marquees",IDC_MARQUEES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,98,84,10,0
+ CONTROL "Crop artwork",IDC_ARTWORK_CROP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,110,53,10,0,HIDC_ARTWORK_CROP
+ GROUPBOX "BIOS",IDC_STATIC,113,128,102,28
+ COMBOBOX IDC_BIOS,119,138,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_BIOS
+ GROUPBOX "",IDC_STATIC,7,178,208,28
+ CONTROL "Autoselect snapshot size",IDC_SNAPSIZE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,178,95,10,0,
+ HIDC_SNAPSIZE
+ LTEXT "Snapshotsize",IDC_SNAPSIZETEXT,11,189,44,11,
+ SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_SNAPSIZEWIDTH,122,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEWIDTH
+ EDITTEXT IDC_SNAPSIZEHEIGHT,172,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEHEIGHT
+ LTEXT "x",IDC_SNAPSIZEX,162,189,8,8
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+ CONTROL "Show Menu",IDC_SHOW_MENU,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,160,86,10,0
+END
+
+IDD_PROP_VECTOR DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Vector"
+FONT 8, "Tahoma"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+// CONTROL "Draw antialiased vectors",IDC_ANTIALIAS,"Button",
+// BS_AUTOCHECKBOX | WS_TABSTOP,10,40,92,10,0,
+// HIDC_ANTIALIAS
+ GROUPBOX "Beam width",IDC_BEAMTEXT,60,53,100,28
+ CONTROL "BeamSlider",IDC_BEAM,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,65,64,10,0,HIDC_BEAM
+ RTEXT "16.00",IDC_BEAMDISP,132,64,20,11,SS_CENTERIMAGE
+ GROUPBOX "Flicker",IDC_FLICKERTEXT,60,84,100,28
+ CONTROL "FlickerSlider",IDC_FLICKER,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,96,64,10,0,HIDC_FLICKER
+ RTEXT "100.00",IDC_FLICKERDISP,128,95,24,11,SS_CENTERIMAGE |
+ NOT WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_MAIN DIALOGEX 0, 0, 364, 206
+STYLE DS_3DLOOK | DS_NOFAILCREATE | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | DS_SETFONT
+EXSTYLE WS_EX_CONTROLPARENT
+CAPTION "MAMEUI - overwritten at runtime"
+CLASS "MainClass"
+FONT 8, "Verdana"
+BEGIN
+ CONTROL "",IDC_DIVIDER,"Static",SS_ETCHEDHORZ,0,5,304,1
+ CONTROL "Tree1",IDC_TREE,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS |
+ TVS_SHOWSELALWAYS | TVS_FULLROWSELECT | WS_BORDER | WS_TABSTOP,5,28,48,172
+ CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE |
+ LVS_SHAREIMAGELISTS | LVS_OWNERDRAWFIXED | WS_BORDER | WS_TABSTOP,65,28,42,172
+ GROUPBOX "",IDC_SPLITTER,55,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ GROUPBOX "",IDC_SPLITTER2,109,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ CONTROL "",IDC_SSFRAME,"Static",SS_ETCHEDFRAME | SS_NOTIFY,121,11,181,194
+ CONTROL "",IDC_SSTAB,"SysTabControl32",TCS_HOTTRACK,121,0,181,18
+ CONTROL "",IDC_SSPICTURE,"Static",SS_BITMAP | NOT WS_VISIBLE,141,18,141,127
+ EDITTEXT IDC_HISTORY,129,150,167,49,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL | NOT WS_TABSTOP,0,HIDC_HISTORY
+END
+
+IDD_FILTERS DIALOGEX 0, 0, 190, 196
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION |
+ WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Game Filters"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Game filters",IDC_STATIC,6,4,178,99
+ CONTROL "&Vector Graphics",IDC_FILTER_VECTOR,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,16,70,10,0,
+ HIDC_FILTER_VECTOR
+ CONTROL "C&lones",IDC_FILTER_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,30,41,10,0,HIDC_FILTER_CLONES
+ CONTROL "Non-Wor&king",IDC_FILTER_NONWORKING,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,44,61,10,0,
+ HIDC_FILTER_NONWORKING
+ CONTROL "&Horizontal",IDC_FILTER_HORIZONTAL,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,57,10,0,
+ HIDC_FILTER_HORIZONTAL
+ CONTROL "&Unavailable",IDC_FILTER_UNAVAILABLE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,72,57,10,0,
+ HIDC_FILTER_UNAVAILABLE
+ CONTROL "Arcade",IDC_FILTER_ARCADE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,86,57,10,0
+ CONTROL "&Raster Graphics",IDC_FILTER_RASTER,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,16,70,10,0,
+ HIDC_FILTER_RASTER
+ CONTROL "Ori&ginals",IDC_FILTER_ORIGINALS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,30,47,10,0,
+ HIDC_FILTER_ORIGINALS
+ CONTROL "&Working",IDC_FILTER_WORKING,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,44,47,10,0,HIDC_FILTER_WORKING
+ CONTROL "&Vertical",IDC_FILTER_VERTICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,58,47,10,0,HIDC_FILTER_VERTICAL
+ CONTROL "&Mechanical",IDC_FILTER_MECHANICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,72,58,10,0,HIDC_FILTER_MECHANICAL
+ CONTROL "MESS",IDC_FILTER_MESS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,86,58,10,0,HIDC_FILTER_MECHANICAL
+ LTEXT "(*) = inherited from parent folder",IDC_INHERITED,14,72,
+ 99,10
+ CTEXT "Game filters allow customizing the games that are displayed in each folder by hiding games that match the filters applied.",
+ IDC_STATIC,6,108,178,27
+ GROUPBOX "&Description filter",IDC_STATIC,6,136,178,33
+ EDITTEXT IDC_FILTER_EDIT,14,148,162,13,ES_AUTOHSCROLL,0,
+ HIDC_FILTER_EDIT
+ DEFPUSHBUTTON "&OK",IDOK,42,175,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,175,50,14
+END
+
+IDD_RESET DIALOGEX 0, 0, 190, 122
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Reset Options"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Categories",IDC_STATIC,6,4,178,70
+ CONTROL "&User Interface (Fonts, Colors, Sizes)",IDC_RESET_UI,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,146,10,0,
+ HIDC_RESET_UI
+ CONTROL "&Default game options",IDC_RESET_DEFAULT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,30,146,10,0,
+ HIDC_RESET_DEFAULT
+ CONTROL "&All games to use default options",IDC_RESET_GAMES,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,146,10,0,
+ HIDC_RESET_GAMES
+ CONTROL "&Folder 'filters'",IDC_RESET_FILTERS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,146,10,0,
+ HIDC_RESET_FILTERS
+ CTEXT "Select the options to be restored to the default settings.",
+ IDC_STATIC,6,79,178,20
+ DEFPUSHBUTTON "&OK",IDOK,42,101,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,101,50,14
+END
+
+
+IDD_INTERFACE_OPTIONS DIALOGEX 0, 0, 378, 225
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Interface Options"
+FONT 8, "Tahoma"
+BEGIN
+ GROUPBOX "Game Selection",IDC_STATIC,6,4,189,194
+ CONTROL "&Search for new games on start",IDC_START_GAME_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,111,10,0,
+ HIDC_START_GAME_CHECK
+ CONTROL "Allow game selection by a &joystick (requires restart)",
+ IDC_JOY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,30,
+ 174,10,0,HIDC_JOY_GUI
+ CONTROL "Allow game selection by custom &key sequences",
+ IDC_KEY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,
+ 166,10
+ CONTROL "Hide &mouse cursor (requires restart)",IDC_HIDE_MOUSE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,86,126,10,0,
+ HIDC_HIDE_MOUSE
+ CONTROL "Inheritable Filters",IDC_FILTER_INHERIT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,100,68,10
+ CONTROL "No offset for clones missing parent in view",
+ IDC_NOOFFSET_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,114,148,10
+ GROUPBOX "Show History on Tab",IDC_STATIC,14,128,173,28
+ COMBOBOX IDC_HISTORY_TAB,57,138,88,50,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Snapshot Pattern",IDC_STATIC,202,4,170,28
+ GROUPBOX "Bookkeeping",IDC_STATIC,202,36,170,43
+ CONTROL "Reset all Playcounts",IDC_RESET_PLAYCOUNT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,48,80,10
+ CONTROL "Reset all Play Times",IDC_RESET_PLAYTIME,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,62,79,10
+ GROUPBOX "Screenshot Area",IDC_STATIC,202,83,170,115
+ CONTROL "S&tretch screenshot larger than natural size",
+ IDC_STRETCH_SCREENSHOT_LARGER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,210,95,148,10,0,
+ HIDC_STRETCH_SCREENSHOT_LARGER
+ GROUPBOX "Screenshot Cycletime in Seconds",IDC_STATIC,210,109,154,
+ 28
+ CONTROL "Slider1",IDC_CYCLETIMESEC,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,218,121,120,10,0,
+ HIDC_CYCLETIMESEC
+ RTEXT "60",IDC_CYCLETIMESECTXT,340,120,13,10,SS_CENTERIMAGE
+ GROUPBOX "Screenshot Bordersize",IDC_STATIC,210,141,154,28
+ CONTROL "Slider1",IDC_SCREENSHOT_BORDERSIZE,"msctls_trackbar32",
+ TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,218,153,120,10
+ RTEXT "100",IDC_SCREENSHOT_BORDERSIZETXT,340,152,13,10,
+ SS_CENTERIMAGE
+ PUSHBUTTON "Set Screenshot Border Color",IDC_SCREENSHOT_BORDERCOLOR,
+ 210,176,154,14
+ DEFPUSHBUTTON "&OK",IDOK,136,204,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,192,204,50,14
+ COMBOBOX IDC_SNAPNAME,209,14,155,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPNAME
+END
+
+IDD_CUSTOM_FILE DIALOG DISCARDABLE 0, 0, 190, 135
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Add Game To Custom Folder"
+FONT 8, "Tahoma"
+BEGIN
+ LTEXT "",IDC_CUSTOMFILE_GAME,6,6,175,10,SS_NOPREFIX |
+ SS_CENTERIMAGE
+ CONTROL "CustomTree",IDC_CUSTOM_TREE,"SysTreeView32",
+ TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
+ TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS |
+ TVS_FULLROWSELECT | WS_BORDER | WS_TABSTOP,6,18,178,90
+ DEFPUSHBUTTON "OK",IDOK,42,114,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,98,114,50,14
+END
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDA_TAB_KEYS ACCELERATORS MOVEABLE PURE
+BEGIN
+ "1", ID_VIEW_TAB_SCREENSHOT, VIRTKEY, ALT, NOINVERT
+ "2", ID_VIEW_TAB_FLYER, VIRTKEY, ALT, NOINVERT
+ "3", ID_VIEW_TAB_CABINET, VIRTKEY, ALT, NOINVERT
+ "4", ID_VIEW_TAB_MARQUEE, VIRTKEY, ALT, NOINVERT
+ "5", ID_VIEW_TAB_TITLE, VIRTKEY, ALT, NOINVERT
+ "6", ID_VIEW_TAB_CONTROL_PANEL, VIRTKEY, ALT, NOINVERT
+ "7", ID_VIEW_TAB_PCB, VIRTKEY, ALT, NOINVERT
+ "8", ID_VIEW_TAB_HISTORY, VIRTKEY, ALT, NOINVERT
+ "A", ID_GAME_AUDIT, VIRTKEY, ALT, NOINVERT
+ "B", ID_VIEW_PAGETAB, VIRTKEY, ALT, NOINVERT
+ "D", ID_VIEW_FOLDERS, VIRTKEY, ALT, NOINVERT
+ "E", ID_TOOLBAR_EDIT, VIRTKEY, CONTROL, NOINVERT
+ "F", ID_CONTEXT_FILTERS, VIRTKEY, CONTROL, NOINVERT
+ "U", ID_FOLDER_AUDIT, VIRTKEY, ALT, NOINVERT
+ "P", ID_VIEW_PICTURE_AREA, VIRTKEY, ALT, NOINVERT
+ "R", ID_CONTEXT_SELECT_RANDOM, VIRTKEY, CONTROL, NOINVERT
+ "S", ID_VIEW_STATUS, VIRTKEY, ALT, NOINVERT
+ "T", ID_VIEW_TOOLBARS, VIRTKEY, ALT, NOINVERT
+ VK_F1, ID_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F11, ID_VIEW_FULLSCREEN, VIRTKEY, NOINVERT
+ VK_F5, ID_UPDATE_GAMELIST, VIRTKEY, NOINVERT
+ VK_NEXT, ID_UI_HISTORY_DOWN, VIRTKEY, CONTROL, NOINVERT
+ VK_PRIOR, ID_UI_HISTORY_UP, VIRTKEY, CONTROL, NOINVERT
+ VK_RETURN, ID_GAME_PROPERTIES, VIRTKEY, ALT, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO MOVEABLE PURE
+BEGIN
+ IDD_ABOUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 289
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 123
+ END
+
+ IDD_DIRECTX, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 229
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 62
+ END
+
+ IDD_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 280
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 187
+ HORZGUIDE, 19
+ END
+
+ IDD_DIRECTORIES, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 224
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 98
+ END
+
+ IDD_COLUMNS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 301
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 143
+ END
+
+ IDD_PROP_CONTROLLER, DIALOG
+ BEGIN
+ RIGHTMARGIN, 210
+ BOTTOMMARGIN, 154
+ END
+
+ IDD_PROP_SCREEN, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ BOTTOMMARGIN, 199
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_GAME, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 19
+ VERTGUIDE, 66
+ VERTGUIDE, 74
+ VERTGUIDE, 201
+ BOTTOMMARGIN, 268
+ END
+
+ IDD_PROP_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 12
+ VERTGUIDE, 208
+ BOTTOMMARGIN, 198
+ HORZGUIDE, 38
+ END
+
+ IDD_PROP_DISPLAY, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_SOUND, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_PROP_ADVANCED, DIALOG
+ BEGIN
+ LEFTMARGIN, 10
+ BOTTOMMARGIN, 240
+ END
+
+ IDD_PROP_INPUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ RIGHTMARGIN, 215
+ VERTGUIDE, 50
+ VERTGUIDE, 170
+ END
+
+ IDD_PROP_MISC, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 25
+ VERTGUIDE, 40
+ VERTGUIDE, 104
+ VERTGUIDE, 114
+ VERTGUIDE, 204
+ BOTTOMMARGIN, 236
+ END
+
+ IDD_PROP_VECTOR, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_FILTERS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 178
+ END
+
+ IDD_RESET, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 175
+ VERTGUIDE, 18
+ VERTGUIDE, 164
+ TOPMARGIN, 7
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+
+
+
+IDB_ABOUT BITMAP "res\\about.bmp"
+IDB_TOOLBAR BITMAP "res\\toolbar.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Cursor
+//
+
+IDC_CURSOR_HSPLIT CURSOR "res\\splith.cur"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// RT_MANIFEST
+//
+
+1 RT_MANIFEST "res\\mameui.manifest"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_FILE "Contains commands for working with the selected items"
+ IDS_UI_VIEW "Contains commands for manipulating the view"
+ IDS_UI_OPTIONS "Contains commands for user interface options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_HELP "Contains commands for displaying help"
+ IDS_VIEW_TOOLBAR "Show or hide the toolbar"
+ IDS_VIEW_STATUSBAR "Show or hide the status bar"
+ IDS_VIEW_FOLDERLIST "Show or hide the folder list"
+ IDS_VIEW_SCREENSHOT "Show or hide the screen shot"
+ IDS_VIEW_PICTURETABS "Show or hide tabs in the picture area"
+ IDS_VIEW_SPACER1 "Spacer"
+ IDS_VIEW_FULLSCREEN "Toggle full screen mode"
+ IDS_VIEW_SPACER2 "Spacer"
+ IDS_VIEW_SHOWPICTURES "Contains commands to select tabs shown in the picture area"
+ IDS_VIEW_SPACER3 "Spacer"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_VIEW_LARGEICONS "Display items by using large icons."
+ IDS_VIEW_SMALLICONS "Display items by using small icons."
+ IDS_VIEW_LIST "Displays items in a list."
+ IDS_VIEW_DETAILS "Displays detailed information about each item in the window."
+ IDS_VIEW_GROUPED "Displays items grouped by parent game"
+ IDS_VIEW_SPACER4 "Spacer"
+ IDS_VIEW_ARRANGE "Contains commands for sorting by various columns"
+ IDS_VIEW_LINEUPICONS "Arranges icons in a grid"
+ IDS_VIEW_SPACER5 "Spacer"
+ IDS_VIEW_REFRESH "Refresh game list"
+ IDS_VIEW_CONTEXTFILTERS "Allows filtering out games from a folder"
+ IDS_VIEW_CUSTOMIZEFIELDS
+ "Customize which columns are used in the game list"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FILE_EXIT "Exit the application"
+ ID_FILE_PLAY "Play currently selected game"
+ ID_HELP_ABOUT "Displays program and copyright information"
+ ID_VIEW_LARGE_ICON "Display items by using large icons."
+ ID_VIEW_SMALL_ICON "Display items by using small icons."
+ ID_VIEW_LIST_MENU "Displays items in a list."
+ ID_VIEW_DETAIL "Displays detailed information about each item in the window."
+ ID_VIEW_GROUPED "Show items grouped by parent game"
+ ID_OPTIONS_FONT "Set game list and folder list font"
+ ID_OPTIONS_CLONE_COLOR "Set the clone font color"
+ ID_OPTIONS_DIR "Set directory configuration"
+ ID_OPTIONS_DEFAULTS "Set default game options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_OPTIONS_RESET_DEFAULTS "Allow restoring options to 'sane' values."
+ ID_OPTIONS_INTERFACE "Customize interface options."
+ ID_FILE_AUDIT "Audit ROM and samples sets"
+ ID_FILE_PLAY_RECORD "Record a game for later playback"
+ ID_FILE_PLAY_BACK "Playback a recorded game"
+ ID_FILE_PLAY_RECORD_WAVE "Record the audio output of a game"
+ ID_FILE_PLAY_RECORD_MNG "Record the video output of a game"
+ ID_FILE_PLAY_RECORD_AVI "Record the complete output of a game"
+ ID_VIEW_PICTURE_AREA "Show or hide the picture area"
+ ID_HELP_CONTENTS "Display help contents"
+ ID_HELP_WHATS_NEWUI "New game changes"
+ ID_HELP_TROUBLE "Troubleshooting Documentation"
+ ID_HELP_RELEASE "MAME release notes"
+ ID_HELP_WHATS_NEW "What's new in MAME"
+ ID_HELP_CHEATS "How cheats work"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CONTEXT_RESET_PLAYTIME "Reset time played for selected item"
+ ID_CONTEXT_RESET_PLAYCOUNT "Reset number of plays for selected item"
+ ID_FOLDER_PROPERTIES "Display folder properties"
+ ID_FOLDER_AUDIT "Audit items in this folder"
+ ID_FILE_LOADSTATE "Play a game starting with the given savestate"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_TAB_CABINET "Select Cabinet tab"
+ ID_VIEW_TAB_MARQUEE "Select Marquee tab"
+ ID_VIEW_TAB_TITLE "Select Title tab"
+ ID_VIEW_TAB_CONTROL_PANEL "Select Control panel tab"
+ ID_VIEW_TAB_PCB "Select PCB tab"
+ ID_VIEW_TAB_HISTORY "Select History tab"
+ ID_OPTIONS_BG "Set the background image"
+ ID_TOGGLE_TAB_SCREENSHOT "Enable the screenshot tab"
+ ID_TOGGLE_TAB_FLYER "Enable the flyer tab"
+ ID_TOGGLE_TAB_CABINET "Enable the cabinet tab"
+ ID_TOGGLE_TAB_MARQUEE "Enable the marquee tab"
+ ID_TOGGLE_TAB_TITLE "Enable the title tab"
+ ID_TOGGLE_TAB_CONTROL_PANEL "Enable the control panel tab"
+ ID_TOGGLE_TAB_PCB "Enable the PCB tab"
+ ID_TOGGLE_TAB_HISTORY "Enable the history tab"
+ ID_VIEW_FULLSCREEN "Toggle Fullscreen mode"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CUSTOMIZE_FIELDS "Customize which columns are used in the game list"
+ ID_GAME_PROPERTIES "Display the properties of the selected item"
+ ID_VIEW_PAGETAB "Show or hide the tabs in the picture area"
+ ID_VIEW_FOLDERS "Show or hide the folder list"
+ ID_VIEW_TOOLBARS "Show or hide the toolbar"
+ ID_VIEW_STATUS "Show or hide the status bar"
+ ID_CONTEXT_FILTERS "Allows filtering out games from a folder"
+ ID_CONTEXT_RENAME_CUSTOM "Rename this folder"
+ ID_CONTEXT_ADD_CUSTOM "Add selected item to custom folder"
+ ID_CONTEXT_REMOVE_CUSTOM "Remove selected item from this folder"
+ ID_GAME_AUDIT "Audit the selected item"
+ ID_CONTEXT_SELECT_RANDOM "Randomly select a game."
+ ID_VIEW_TAB_SCREENSHOT "Select Snapshot tab"
+ ID_VIEW_TAB_FLYER "Select Flyer tab"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_BYGAME "Sort items by game description"
+ ID_VIEW_BYDIRECTORY "Sort items by name"
+ ID_VIEW_BYMANUFACTURER "Sort items by manufacturer"
+ ID_VIEW_BYYEAR "Sort items by year"
+ ID_VIEW_BYTYPE "Sort items by type"
+ ID_VIEW_BYTIMESPLAYED "Sort by number of plays"
+ ID_VIEW_LINEUPICONS "Arranges icons in a grid"
+ ID_UPDATE_GAMELIST "Refresh game list"
+ ID_SORT_ASCENDING "Sort column in ascending (A-Z) order"
+ ID_SORT_DESCENDING "Sort column in descending (Z-A) order"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FOLDER_SOURCEPROPERTIES
+ "Display properties for all games in this source file"
+ ID_FOLDER_VECTORPROPERTIES "Display properties for all vector based games"
+ ID_OPTIONS_HISTORY "Set the History file to use"
+ ID_OPTIONS_MAMEINFO "Set the Mameinfo file to use"
+END
+
+#endif // English (USA) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#include "mamevers.rc" // Version block
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/docs/release/src/osd/winui/messui.rc b/docs/release/src/osd/winui/messui.rc
new file mode 100644
index 00000000000..1c9157a4777
--- /dev/null
+++ b/docs/release/src/osd/winui/messui.rc
@@ -0,0 +1,1394 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+// Generated Help ID header file
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "resource.hm"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h"
+#include "commctrl.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Englisch (USA) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MAIN_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Exit", ID_FILE_EXIT
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&About MAMEUI", ID_ABOUT
+ END
+END
+
+IDR_UI_MENU MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM "P&layback Input...", ID_FILE_PLAY_BACK
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &Wave Output...", ID_FILE_PLAY_RECORD_WAVE
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &MNG Output...", ID_FILE_PLAY_RECORD_MNG
+ MENUITEM SEPARATOR
+ MENUITEM "Play and Record &uncompressed AVI Output...",
+ ID_FILE_PLAY_RECORD_AVI
+ MENUITEM SEPARATOR
+ MENUITEM "Loa&d Savestate...", ID_FILE_LOADSTATE
+ MENUITEM SEPARATOR
+
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM SEPARATOR
+ MENUITEM "&Audit all games", ID_FILE_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit", ID_FILE_EXIT
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "&Toolbar\tAlt+T", ID_VIEW_TOOLBARS
+ MENUITEM "&Status bar\tAlt+S", ID_VIEW_STATUS
+ MENUITEM "Fold&er List\tAlt+D", ID_VIEW_FOLDERS
+ MENUITEM "&Picture Area\tAlt+P", ID_VIEW_PICTURE_AREA
+ MENUITEM "Screenshot Ta&b\tAlt+B", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ MENUITEM "&Fullscreen\tF11", ID_VIEW_FULLSCREEN
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "L&arge Icons", ID_VIEW_LARGE_ICON
+ MENUITEM "S&mall Icons", ID_VIEW_SMALL_ICON
+ MENUITEM "&List", ID_VIEW_LIST_MENU
+ MENUITEM "&Details", ID_VIEW_DETAIL
+ MENUITEM "&Grouped", ID_VIEW_GROUPED
+ MENUITEM SEPARATOR
+ POPUP "Arrange &Icons"
+ BEGIN
+ MENUITEM "by &Name", ID_VIEW_BYGAME
+ MENUITEM "by D&irectory", ID_VIEW_BYDIRECTORY
+ MENUITEM "by &Manufacturer", ID_VIEW_BYMANUFACTURER
+ MENUITEM "by Times &Played", ID_VIEW_BYTIMESPLAYED
+ MENUITEM "by &Type", ID_VIEW_BYTYPE
+ MENUITEM "by &Date", ID_VIEW_BYYEAR
+ END
+ MENUITEM "Line &Up Icons", ID_VIEW_LINEUPICONS
+ MENUITEM SEPARATOR
+ MENUITEM "&Refresh\tF5", ID_UPDATE_GAMELIST
+ MENUITEM "&Custom Filters...\tCtrl+F", ID_CONTEXT_FILTERS
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+ POPUP "&Options"
+ BEGIN
+ MENUITEM "&Interface Options", ID_OPTIONS_INTERFACE
+ MENUITEM "Default Game &Options", ID_OPTIONS_DEFAULTS
+ MENUITEM "&Directories", ID_OPTIONS_DIR
+ MENUITEM SEPARATOR
+ MENUITEM "Game List &Font", ID_OPTIONS_FONT
+ MENUITEM "Game List &Clone Color", ID_OPTIONS_CLONE_COLOR
+ MENUITEM SEPARATOR
+
+ MENUITEM "&Background Image", ID_OPTIONS_BG
+ MENUITEM "&History File", ID_OPTIONS_HISTORY
+ MENUITEM "&Mameinfo File", ID_OPTIONS_MAMEINFO
+ MENUITEM SEPARATOR
+ MENUITEM "&Reset to Default", ID_OPTIONS_RESET_DEFAULTS
+
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Contents\tF1", ID_HELP_CONTENTS
+ MENUITEM "&Troubleshooting", ID_HELP_TROUBLE
+ MENUITEM SEPARATOR
+ MENUITEM "&New Game Changes", ID_HELP_WHATS_NEWUI
+ MENUITEM "&Mame Release Notes", ID_HELP_WHATS_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "&About", ID_HELP_ABOUT
+ END
+END
+
+IDR_CONTEXT_MENU MENU
+BEGIN
+ POPUP "Context Menu"
+ BEGIN
+ MENUITEM "&Play", ID_FILE_PLAY
+ MENUITEM SEPARATOR
+ MENUITEM "Play and &Record Input...", ID_FILE_PLAY_RECORD
+ MENUITEM SEPARATOR
+ MENUITEM "&Add to Custom Folder...", ID_CONTEXT_ADD_CUSTOM
+ MENUITEM "R&emove From This Folder", ID_CONTEXT_REMOVE_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ MENUITEM "&Select Random Game", ID_CONTEXT_SELECT_RANDOM
+ MENUITEM SEPARATOR
+ MENUITEM "Rese&t Playcount", ID_CONTEXT_RESET_PLAYCOUNT
+ MENUITEM "Reset Pla&y Time", ID_CONTEXT_RESET_PLAYTIME
+ MENUITEM SEPARATOR
+ MENUITEM "A&udit", ID_GAME_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "Pr&operties", ID_GAME_PROPERTIES
+ MENUITEM "Source propert&ies", ID_FOLDER_SOURCEPROPERTIES
+ MENUITEM "&Vector properties", ID_FOLDER_VECTORPROPERTIES
+ END
+END
+
+IDR_CONTEXT_HEADER MENU
+BEGIN
+ POPUP "Header Context Menu"
+ BEGIN
+ MENUITEM "Sort &Ascending", ID_SORT_ASCENDING
+ MENUITEM "Sort &Descending", ID_SORT_DESCENDING
+ MENUITEM SEPARATOR
+ MENUITEM "Customi&ze Fields...", ID_CUSTOMIZE_FIELDS
+ END
+END
+
+IDR_CONTEXT_TREE MENU
+BEGIN
+ POPUP "Context Menu Tree"
+ BEGIN
+ MENUITEM "&Rename", ID_CONTEXT_RENAME_CUSTOM
+ MENUITEM "&Custom Filters...", ID_CONTEXT_FILTERS
+ MENUITEM SEPARATOR
+ POPUP "&Show Folders"
+ BEGIN
+ MENUITEM "overridden by code", ID_CONTEXT_SHOW_FOLDER_START
+
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Audit", ID_FOLDER_AUDIT
+ MENUITEM SEPARATOR
+ MENUITEM "&Properties", ID_FOLDER_PROPERTIES
+ END
+END
+
+IDR_CONTEXT_SCREENSHOT MENU
+BEGIN
+ POPUP "Context Screen Shot"
+ BEGIN
+ MENUITEM "Show Tab &Control", ID_VIEW_PAGETAB
+ MENUITEM SEPARATOR
+ POPUP "S&how Pictures"
+ BEGIN
+ MENUITEM "&Snapshot", ID_TOGGLE_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_TOGGLE_TAB_FLYER
+ MENUITEM "&Cabinet", ID_TOGGLE_TAB_CABINET
+ MENUITEM "&Marquee", ID_TOGGLE_TAB_MARQUEE
+ MENUITEM "&Title", ID_TOGGLE_TAB_TITLE
+ MENUITEM "Control &Panel", ID_TOGGLE_TAB_CONTROL_PANEL
+
+ MENUITEM "PC&B", ID_TOGGLE_TAB_PCB
+ MENUITEM "&History", ID_TOGGLE_TAB_HISTORY
+ END
+ MENUITEM SEPARATOR
+ MENUITEM "&Snapshot", ID_VIEW_TAB_SCREENSHOT
+ MENUITEM "&Flyer", ID_VIEW_TAB_FLYER
+ MENUITEM "&Cabinet", ID_VIEW_TAB_CABINET
+ MENUITEM "&Marquee", ID_VIEW_TAB_MARQUEE
+ MENUITEM "&Title", ID_VIEW_TAB_TITLE
+ MENUITEM "Control &Panel", ID_VIEW_TAB_CONTROL_PANEL
+ MENUITEM "PC&B", ID_VIEW_TAB_PCB
+ MENUITEM "&History", ID_VIEW_TAB_HISTORY
+ END
+END
+
+
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#define NOWINRES\r\n"
+ "#include ""windows.h""\r\n"
+ "#include ""commctrl.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE MOVEABLE PURE
+BEGIN
+ "#include ""messvers.rc"" // Version block\r\n"
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_MAMEUI_ICON ICON "res\\messui.ico"
+IDI_WIN_ROMS ICON "res\\win_roms.ico"
+IDI_WIN_NOROMS ICON "res\\win_noro.ico"
+IDI_WIN_UNKNOWN ICON "res\\win_unkn.ico"
+IDI_WIN_CLONE ICON "res\\win_clone.ico"
+IDI_WIN_REDX ICON "res\\win_redx.ico"
+IDI_FOLDER_AVAILABLE ICON "res\\foldavail.ico"
+IDI_FOLDER ICON "res\\folder.ico"
+IDI_FOLDER_MANUFACTURER ICON "res\\foldmanu.ico"
+IDI_FOLDER_OPEN ICON "res\\foldopen.ico"
+IDI_FOLDER_UNAVAILABLE ICON "res\\foldunav.ico"
+IDI_FOLDER_HORIZONTAL ICON "res\\horz.ico"
+IDI_FOLDER_VERTICAL ICON "res\\vert.ico"
+IDI_MANUFACTURER ICON "res\\manufact.ico"
+IDI_FOLDER_YEAR ICON "res\\foldyear.ico"
+IDI_FOLDER_SOURCE ICON "res\\foldsrc.ico"
+IDI_WORKING ICON "res\\working.ico"
+IDI_NONWORKING ICON "res\\nonwork.ico"
+IDI_YEAR ICON "res\\year.ico"
+IDI_KEYBOARD ICON "res\\keyboard.ico"
+IDI_JOYSTICK ICON "res\\joystick.ico"
+IDI_CPU ICON "res\\cpu.ico"
+IDI_SOUND ICON "res\\samples.ico"
+IDI_SOUNDTAB ICON "res\\sound.ico"
+IDI_SOURCE ICON "res\\source.ico"
+IDI_HARDDISK ICON "res\\harddisk.ico"
+IDI_DISPLAY ICON "res\\display.ico"
+IDI_CHECKMARK ICON "res\\checkmark.ico"
+IDI_HEADER_UP ICON "res\\header_up.ico"
+IDI_HEADER_DOWN ICON "res\\header_down.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUT DIALOG DISCARDABLE 0, 0, 296, 129
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About MAMEUI"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ DEFPUSHBUTTON "&OK",IDOK,200,109,50,14,WS_GROUP
+ CTEXT "Multiple Arcade Machine Emulator",IDC_STATIC,147,7,142,
+ 11,NOT WS_GROUP
+ CTEXT "Version 0",IDC_VERSION,147,18,142,11,NOT WS_GROUP
+ CTEXT "Copyright (C) 1997-2015 The MAME Team",IDC_STATIC,147,
+ 29,142,10,NOT WS_GROUP
+ CTEXT "MAMEUI version by",IDC_STATIC,147,51,142,10,NOT
+ WS_GROUP
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,147,44,142,1
+ CTEXT "Christopher Kirmse and the MAMEUI team",IDC_STATIC,147,
+ 62,142,9,NOT WS_GROUP
+ CTEXT "Additional MAMEUI code by",IDC_STATIC,147,74,142,9
+ CTEXT "Mike Haaland, Andrew Kirmse, Jeff Miller",IDC_STATIC,
+ 147,85,142,9
+ CTEXT "John Hardy IV and Michael Soderstrom",IDC_STATIC,147,96,
+ 142,9
+ CONTROL "",IDC_ABOUT,"Static",SS_BITMAP | SS_SUNKEN,7,7,16,14
+END
+
+IDD_DIRECTX DIALOG DISCARDABLE 0, 0, 236, 69
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "MAMEUI"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ DEFPUSHBUTTON "Go to Microsoft's DirectX Web Page",IDB_WEB_PAGE,48,52,
+ 140,14
+ EDITTEXT IDC_DIRECTX_HELP,7,0,222,48,ES_MULTILINE |
+ ES_AUTOHSCROLL | ES_READONLY
+END
+
+IDD_AUDIT DIALOG DISCARDABLE 0, 0, 283, 188
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "File Audit"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Pause",IDPAUSE,98,168,40,14
+ PUSHBUTTON "&Cancel",IDCANCEL,144,168,40,14
+ GROUPBOX "ROMs",IDC_STATIC,6,4,132,65
+ LTEXT "Correct:",IDC_STATIC,51,28,32,8
+ CONTROL "Progress1",IDC_ROMS_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,14,16,116,8
+ LTEXT "Incorrect:",IDC_STATIC,51,42,32,8
+ LTEXT "Total:",IDC_STATIC,51,56,32,8
+ LTEXT "0",IDC_ROMS_CORRECT,87,28,20,8
+ LTEXT "0",IDC_ROMS_INCORRECT,87,42,20,8
+ LTEXT "0",IDC_ROMS_TOTAL,87,56,20,8
+ GROUPBOX "Samples",IDC_STATIC,145,4,132,65
+ CONTROL "Progress1",IDC_SAMPLES_PROGRESS,"msctls_progress32",
+ PBS_SMOOTH | WS_BORDER,153,16,116,8
+ LTEXT "Correct:",IDC_STATIC,191,28,33,8
+ LTEXT "Incorrect:",IDC_STATIC,191,42,33,8
+ LTEXT "Total:",IDC_STATIC,191,56,33,8
+ LTEXT "0",IDC_SAMPLES_CORRECT,227,28,20,8
+ LTEXT "0",IDC_SAMPLES_INCORRECT,227,42,20,8
+ LTEXT "0",IDC_SAMPLES_TOTAL,227,56,20,8
+ GROUPBOX "Details",IDC_STATIC,6,72,271,90
+ EDITTEXT IDC_AUDIT_DETAILS,12,82,259,74,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_DIRECTORIES DIALOG DISCARDABLE 0, 0, 230, 107
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Directories"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Show directories for:",IDC_STATIC,6,6,67,10
+ COMBOBOX IDC_DIR_COMBO,6,18,160,79,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Directories:",IDC_STATIC,6,38,38,10
+ CONTROL "List1",IDC_DIR_LIST,"SysListView32",LVS_REPORT |
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_EDITLABELS |
+ LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | WS_BORDER |
+ WS_TABSTOP,6,50,160,51
+ DEFPUSHBUTTON "OK",IDOK,173,8,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,173,26,50,14
+ PUSHBUTTON "Browse...",IDC_DIR_BROWSE,173,50,50,14
+ PUSHBUTTON "Insert",IDC_DIR_INSERT,173,68,50,14
+ PUSHBUTTON "Delete",IDC_DIR_DELETE,173,87,50,14
+END
+
+IDD_COLUMNS DIALOG DISCARDABLE 0, 0, 302, 145
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Customize Fields"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Available fields:",IDC_STATIC,6,6,80,10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTAVAILABLECOLUMNS,"SysListView32",
+ LVS_LIST | LVS_SINGLESEL | LVS_NOCOLUMNHEADER |
+ LVS_NOSORTHEADER | WS_BORDER | WS_HSCROLL | WS_TABSTOP,6,
+ 18,90,100
+ PUSHBUTTON "Add ->",IDC_BUTTONADD,102,18,46,14,WS_DISABLED
+ PUSHBUTTON "<- Remove",IDC_BUTTONREMOVE,102,36,46,14,WS_DISABLED
+ LTEXT "Show these fields in this order:",IDC_STATIC,154,6,96,
+ 10,SS_CENTERIMAGE
+ CONTROL "List1",IDC_LISTSHOWCOLUMNS,"SysListView32",LVS_LIST |
+ LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER |
+ WS_BORDER | WS_HSCROLL | WS_TABSTOP,154,18,90,100
+ PUSHBUTTON "Move Up",IDC_BUTTONMOVEUP,250,18,46,14,WS_DISABLED
+ PUSHBUTTON "Move Down",IDC_BUTTONMOVEDOWN,250,36,46,14,WS_DISABLED
+ DEFPUSHBUTTON "OK",IDOK,105,124,44,14
+ PUSHBUTTON "Cancel",IDCANCEL,155,124,44,14
+END
+
+IDD_PROP_CONTROLLER DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "Controller Mapping"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ GROUPBOX "Paddle device",IDC_STATIC,4,40,102,28
+ COMBOBOX IDC_PADDLE,10,50,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PADDLE
+ GROUPBOX "ADStick device",IDC_STATIC,4,71,102,28
+ COMBOBOX IDC_ADSTICK,10,80,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_ADSTICK
+ GROUPBOX "Pedal device",IDC_STATIC,4,102,102,28
+ COMBOBOX IDC_PEDAL,10,112,91,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_PEDAL
+ GROUPBOX "Mouse device",IDC_STATIC,4,133,102,28
+ COMBOBOX IDC_MOUSE,10,142,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_MOUSE
+ GROUPBOX "Dial device",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DIAL,119,50,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_DIAL
+ GROUPBOX "Trackball device",IDC_STATIC,113,71,102,28
+ COMBOBOX IDC_TRACKBALL,119,80,90,62,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_TRACKBALL
+ GROUPBOX "Lightgun device",IDC_STATIC,113,102,102,28
+ COMBOBOX IDC_LIGHTGUNDEVICE,119,112,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_LIGHTGUNDEVICE
+ GROUPBOX "Positional device",IDC_STATIC,113,133,102,28
+ COMBOBOX IDC_POSITIONAL,119,142,90,62,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_POSITIONAL
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SCREEN DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Screen"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ GROUPBOX "Number of screens",IDC_STATIC,4,40,103,24
+ CONTROL "GammaSlider",IDC_NUMSCREENS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,50,75,10,0,HIDC_NUMSCREENS
+ RTEXT "1",IDC_NUMSCREENSDISP,84,49,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Screen",IDC_STATIC,4,66,103,29
+ COMBOBOX IDC_SCREEN,10,76,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREEN
+
+ GROUPBOX "",IDC_STATIC,4,97,103,28
+ CONTROL "Autoselect aspect",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,97,73,10,0,HIDC_ASPECT
+ LTEXT "Aspect ratio",IDC_ASPECTRATIOTEXT,17,108,40,11,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATION,60,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATION
+ LTEXT ":",IDC_STATIC,76,108,8,10,SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_ASPECTRATIOD,80,108,14,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_ASPECTRATIOD
+
+ GROUPBOX "View",IDC_STATIC,4,128,103,28
+ COMBOBOX IDC_VIEW,10,137,91,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIEW
+
+ GROUPBOX "Screennumber",IDC_SCREENSELECTTEXT,113,40,102,28
+ COMBOBOX IDC_SCREENSELECT,119,50,90,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SCREENSELECT
+
+ GROUPBOX "Resolution",IDC_STATIC,113,71,102,76,WS_GROUP
+ GROUPBOX "Size",IDC_STATIC,119,81,90,28,WS_GROUP
+ COMBOBOX IDC_SIZES,126,91,77,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SIZES
+
+ GROUPBOX "Refresh",IDC_REFRESHTEXT,119,112,90,28,WS_GROUP
+ COMBOBOX IDC_REFRESH,126,121,77,76,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_REFRESH
+ CONTROL "Switch resolutions to fit",IDC_SWITCHRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,151,93,10,0,HIDC_SWITCHRES
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_GAME DIALOG DISCARDABLE 0, 0, 220, 276
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "General"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_GAME_ICON,20,10,21,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,38,178,1
+ LTEXT "Manufactured:",IDC_STATIC,18,43,47,8
+ LTEXT "Static",IDC_PROP_MANUFACTURED,65,43,155,9,SS_NOPREFIX
+ LTEXT "Status:",IDC_STATIC,18,52,47,8
+ LTEXT "Static",IDC_PROP_STATUS,65,52,155,32
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,85,178,1
+ LTEXT "CPU:",IDC_STATIC,18,90,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_CPU,65,90,155,40
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,130,178,1
+ LTEXT "Sound:",IDC_STATIC,18,135,47,8
+ LTEXT "Static\nStatic\nStatic\nStatic\nStatic",IDC_PROP_SOUND,65,135,155,45
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,181,178,1
+ LTEXT "Screen:",IDC_STATIC,18,186,47,8
+ LTEXT "Static\nStatic\nStatic",IDC_PROP_SCREEN,65,186,155,27
+ LTEXT "Colors:",IDC_STATIC,18,223,47,8
+ LTEXT "Static",IDC_PROP_COLORS,65,223,155,8
+ LTEXT "Clone of:",IDC_PROP_CLONEOF_TEXT,18,243,50,8
+ LTEXT "Static",IDC_PROP_CLONEOF,65,243,155,28
+ LTEXT "Source:",IDC_STATIC,18,233,47,8
+ LTEXT "Static",IDC_PROP_SOURCE,65,233,155,8
+ CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,18,218,178,1
+END
+
+IDD_PROP_AUDIT DIALOG DISCARDABLE 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Audit"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_CHECKMARK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ LTEXT "ROM check:",IDC_STATIC,10,40,50,8
+ LTEXT "Checking...",IDC_PROP_ROMS,66,40,139,8
+ LTEXT "Sample check:",IDC_STATIC,10,52,50,8
+ LTEXT "Checking...",IDC_PROP_SAMPLES,66,52,139,8
+ GROUPBOX "Details",IDC_STATIC,4,64,211,171
+ EDITTEXT IDC_AUDIT_DETAILS_PROP,10,74,199,155,ES_MULTILINE |
+ ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL |
+ NOT WS_TABSTOP
+END
+
+IDD_PROP_DISPLAY DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Display"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,169,25,SS_NOPREFIX
+
+ CONTROL "Run in a window",IDC_WINDOWED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,69,10,0,HIDC_WINDOWED
+ CONTROL "Start out maximized",IDC_MAXIMIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,74,10,0,HIDC_MAXIMIZE
+ CONTROL "Enforce aspect ratio",IDC_KEEPASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,77,10,0,HIDC_KEEPASPECT
+ CONTROL "Throttle",IDC_THROTTLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,39,10,0,HIDC_THROTTLE
+
+ GROUPBOX "Bitmap prescaling",IDC_PRESCALETEXT,4,89,103,24
+ CONTROL "GammaSlider",IDC_PRESCALE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,99,71,10,0,HIDC_PRESCALE
+ RTEXT "1.00",IDC_PRESCALEDISP,84,98,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Gamma Correction",IDC_STATIC,4,115,103,24
+ CONTROL "GammaSlider",IDC_GAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,125,71,10,0,HIDC_GAMMA
+ RTEXT "2.00",IDC_GAMMADISP,84,124,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Brightness Correction",IDC_STATIC,4,141,103,24
+ CONTROL "GammaSlider",IDC_BRIGHTCORRECT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,151,71,10,0,HIDC_BRIGHTCORRECT
+ RTEXT "1.00",IDC_BRIGHTCORRECTDISP,84,150,14,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Contrast Correction",IDC_STATIC,4,167,103,24
+ CONTROL "GammaSlider",IDC_CONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,176,71,10,0,HIDC_CONTRAST
+ RTEXT "1.00",IDC_CONTRASTDISP,84,175,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Pause Brightness",IDC_STATIC,4,193,103,24
+ CONTROL "Slider1",IDC_PAUSEBRIGHT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,203,71,10,0,HIDC_PAUSEBRIGHT
+ RTEXT "0.65",IDC_PAUSEBRIGHTDISP,84,202,14,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Video mode",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_VIDEO_MODE,119,50,90,50,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,HIDC_VIDEO_MODE
+
+ GROUPBOX "Rotation",IDC_STATIC,113,71,102,55
+ COMBOBOX IDC_ROTATE,119,81,90,57,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_ROTATE
+ CONTROL "Flip screen upside-down",IDC_FLIPY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,98,91,10,0,HIDC_FLIPY
+ CONTROL "Flip screen left-right",IDC_FLIPX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,110,77,10,0,HIDC_FLIPX
+
+ GROUPBOX "Direct3D",IDC_STATIC,113,128,102,57
+ CONTROL "Use Bilinear filtering",IDC_D3D_FILTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,138,85,10,0,HIDC_D3D_FILTER
+
+ GROUPBOX "DirectDraw",IDC_STATIC,113,187,102,26
+ CONTROL "Stretch using hardware",IDC_HWSTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,197,85,10,0,HIDC_HWSTRETCH
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_SOUND DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Sound"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_SOUNDTAB,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Use samples",IDC_SAMPLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,55,10,0,HIDC_SAMPLES
+
+ GROUPBOX "Sound mode",IDC_SOUNDTEXT,4,53,100,28
+ COMBOBOX IDC_SOUND_MODE,10,63,88,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0
+
+ GROUPBOX "Sample rate",IDC_RATETEXT,4,84,100,28
+ COMBOBOX IDC_SAMPLERATE,10,94,88,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_SAMPLERATE
+
+ GROUPBOX "Volume attenuation",IDC_STATIC,4,115,100,28
+ CONTROL "Slider1",IDC_VOLUME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,127,68,10,0,HIDC_VOLUME
+ RTEXT "0dB",IDC_VOLUMEDISP,76,125,20,10,SS_CENTERIMAGE
+
+ GROUPBOX "Audio latency",IDC_AUDIO_LATENCY_TEXT,4,146,100,28
+ CONTROL "Slider1",IDC_AUDIO_LATENCY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,10,158,68,10,0,HIDC_AUDIO_LATENCY
+ RTEXT "1/5",IDC_AUDIO_LATENCY_DISP,76,156,20,10,SS_CENTERIMAGE
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_ADVANCED DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Advanced"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_DISPLAY,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Triple buffering",IDC_TRIPLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,93,10,0,HIDC_TRIPLE_BUFFER
+ CONTROL "Sync to monitor refresh",IDC_SYNCREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_SYNCREFRESH
+ CONTROL "Wait for vertical sync",IDC_WAITVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,93,10,0,HIDC_WAITVSYNC
+ CONTROL "Refresh speed",IDC_REFRESHSPEED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,93,10,0,HIDC_REFRESHSPEED
+
+ GROUPBOX "Frame skipping",IDC_STATIC,4,104,103,42
+ CONTROL "Automatic",IDC_AUTOFRAMESKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,114,77,10,0,HIDC_AUTOFRAMESKIP
+ COMBOBOX IDC_FRAMESKIP,10,127,91,88,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,0,HIDC_FRAMESKIP
+
+ GROUPBOX "Full screen gamma",IDC_FSGAMMATEXT,113,40,102,24
+ CONTROL "Slider1",IDC_FSGAMMA,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,50,71,10,0,HIDC_FSGAMMA
+ RTEXT "2.00",IDC_FSGAMMADISP,193,49,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen brightness",IDC_FSBRIGHTNESSTEXT,113,67,102,24
+ CONTROL "Slider1",IDC_FSBRIGHTNESS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,77,71,10,0,HIDC_FSBRIGHTNESS
+ RTEXT "2.00",IDC_FSBRIGHTNESSDISP,193,76,16,10,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Full screen contrast",IDC_FSCONTRASTTEXT,113,94,102,24
+ CONTROL "Slider1",IDC_FSCONTRAST,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,104,71,10,0,HIDC_FSCONTRAST
+ RTEXT "2.00",IDC_FSCONTRASTDISP,193,103,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Seconds to run",IDC_SECONDSTORUNTEXT,113,122,102,24
+ CONTROL "",IDC_SECONDSTORUN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,119,132,71,10,0,HIDC_SECONDSTORUN
+ RTEXT "60",IDC_SECONDSTORUNDISP,193,130,16,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Emulation speed",IDC_SPEEDTEXT,4,155,211,24
+ CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,12,165,180,10,0,HIDC_SPEED
+ RTEXT "1.00",IDC_SPEEDDISP,191,164,20,11,SS_CENTERIMAGE | NOT WS_GROUP
+
+ GROUPBOX "Effect",IDC_STATIC,4,182,211,50
+ EDITTEXT IDC_EFFECT,12,192,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Effect",IDC_SELECT_EFFECT,12,211,60,14,0,0,HIDC_SELECT_EFFECT
+ PUSHBUTTON "Reset Effect",IDC_RESET_EFFECT,152,211,60,14,0,0,HIDC_RESET_EFFECT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_DEBUG DIALOGEX 0, 0, 220, 255
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Debug"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_MANUFACTURER,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,SS_NOPREFIX
+
+ CONTROL "Output log to Windows Debugger",IDC_OSLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,124,10,0,HIDC_OSLOG
+ CONTROL "Output log to Logfile",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_LOG
+ CONTROL "Output diagnostic information",IDC_VERBOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,111,10,0,HIDC_VERBOSE
+ CONTROL "Update Main window during paused emulation",IDC_UPDATEINPAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,171,10,0,HIDC_UPDATEINPAUSE
+ CONTROL "Activate Integrated Debugger",IDC_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,118,10,0,HIDC_DEBUG
+
+ GROUPBOX "Debugscript",IDC_STATIC,6,104,211,50
+ EDITTEXT IDC_DEBUGSCRIPT,14,114,200,14,ES_AUTOHSCROLL | WS_DISABLED
+ PUSHBUTTON "Select Debugscript",IDC_SELECT_DEBUGSCRIPT,14,133,67,14,0,0,HIDC_SELECT_DEBUGSCRIPT
+ PUSHBUTTON "Reset Debugscript",IDC_RESET_DEBUGSCRIPT,149,133,65,14,0,0,HIDC_RESET_DEBUGSCRIPT
+
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,238,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,120,238,97,14,0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_INPUT DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Controllers"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_JOYSTICK,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable mouse input",IDC_USE_MOUSE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,40,86,10,0,
+ HIDC_USE_MOUSE
+ CONTROL "Enable steadykey support",IDC_STEADYKEY,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,52,95,10,0,
+ HIDC_STEADYKEY
+ GROUPBOX "",IDC_STATIC,4,64,103,74
+ CONTROL "Enable joystick input",IDC_JOYSTICK,"Button",
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,10,64,78,10,0,
+ HIDC_JOYSTICK
+ GROUPBOX "Joystick deadzone",IDC_JDZTEXT,10,76,91,28
+ CONTROL "IntensitySlider",IDC_JDZ,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,15,88,60,10,0,HIDC_JDZ
+ RTEXT "0.3",IDC_JDZDISP,76,87,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ GROUPBOX "Default input layout",IDC_STATIC,113,40,102,28
+ COMBOBOX IDC_DEFAULT_INPUT,119,50,90,53,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP,0,HIDC_DEFAULT_INPUT
+ GROUPBOX "",IDC_STATIC,113,71,102,66
+ CONTROL "Enable lightgun input",IDC_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,71,80,10,0,
+ HIDC_LIGHTGUN
+ CONTROL "Offscreen shots reload",IDC_RELOAD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,83,86,10,0,HIDC_RELOAD
+ CONTROL "Dual lightguns",IDC_DUAL_LIGHTGUN,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,96,86,10,0,
+ HIDC_DUAL_LIGHTGUN
+ CONTROL "Multiple keyboards",IDC_MULTIKEYBOARD,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,119,109,75,10,0,
+ HIDC_MULTIKEYBOARD
+ CONTROL "Multiple mice",IDC_MULTIMOUSE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,122,56,10,0,HIDC_MULTIMOUSE
+ GROUPBOX "Joystick saturation",IDC_JSATTEXT,10,106,91,28
+ CONTROL "IntensitySlider",IDC_JSAT,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,16,118,60,10,0,HIDC_JSAT
+ RTEXT "0.85",IDC_JSATDISP,76,116,16,11,SS_CENTERIMAGE | NOT
+ WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+ GROUPBOX "Joystickmap",IDC_STATIC,4,143,211,50
+ EDITTEXT IDC_JOYSTICKMAP,12,153,200,14,ES_AUTOHSCROLL |
+ WS_DISABLED
+ PUSHBUTTON "Select Joystickmap",IDC_SELECT_JOYSTICKMAP,12,172,67,14,
+ 0,0,HIDC_SELECT_JOYSTICKMAP
+ PUSHBUTTON "Reset Joystickmap",IDC_RESET_JOYSTICKMAP,147,172,65,14,
+ 0,0,HIDC_RESET_JOYSTICKMAP
+END
+
+IDD_PROP_MISC DIALOGEX 0, 0, 220, 240
+STYLE DS_FIXEDSYS | WS_CHILD | WS_CAPTION
+CAPTION "Miscellaneous"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+ CONTROL "Enable cheats",IDC_CHEAT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,40,86,10,0,HIDC_CHEAT
+ CONTROL "Sleep when possible",IDC_SLEEP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,52,86,10,0,HIDC_SLEEP
+
+ CONTROL "Skip game info",IDC_SKIP_GAME_INFO,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,64,96,10,0,
+ HIDC_SKIP_GAME_INFO
+ CONTROL "Save game state on exit",IDC_ENABLE_AUTOSAVE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,76,96,10,0,
+ HIDC_ENABLE_AUTOSAVE
+// CONTROL "Multi-threaded rendering",IDC_MULTITHREAD_RENDERING,
+// "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,96,10,0,
+// HIDC_MULTITHREAD_RENDERING
+ CONTROL "Coin lockout",IDC_COINLOCKOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,10,100,96,10,0,HIDC_COINLOCKOUT
+ GROUPBOX "Thread Priority",IDC_HIGH_PRIORITY_TEXT,7,112,103,34
+ CONTROL "Slider1",IDC_HIGH_PRIORITY,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,13,122,75,10,0,
+ HIDC_HIGH_PRIORITY
+ LTEXT "idle",IDC_STATIC,17,132,12,8
+ RTEXT "-15",IDC_HIGH_PRIORITYTXT,87,122,14,10,SS_CENTERIMAGE
+ RTEXT "real-time",IDC_STATIC,57,134,28,8
+ GROUPBOX "Snapshot view",IDC_STATIC,7,148,103,28
+ COMBOBOX IDC_SNAPVIEW,13,158,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPVIEW
+ GROUPBOX "Artwork options",IDC_STATIC,113,40,102,85
+ CONTROL "Backdrops",IDC_BACKDROPS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,50,86,10,0,HIDC_BACKDROPS
+ CONTROL "Bezels",IDC_BEZELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,62,86,10,0,HIDC_BEZELS
+ CONTROL "Overlays",IDC_OVERLAYS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,74,84,10,0,HIDC_OVERLAYS
+ CONTROL "CPanels",IDC_CPANELS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,86,84,10,0
+ CONTROL "Marquees",IDC_MARQUEES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,98,84,10,0
+ CONTROL "Crop artwork",IDC_ARTWORK_CROP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,119,110,53,10,0,HIDC_ARTWORK_CROP
+ GROUPBOX "BIOS",IDC_STATIC,113,128,102,28
+ COMBOBOX IDC_BIOS,119,138,90,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_BIOS
+ GROUPBOX "",IDC_STATIC,7,178,208,28
+ CONTROL "Autoselect snapshot size",IDC_SNAPSIZE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,178,95,10,0,
+ HIDC_SNAPSIZE
+ LTEXT "Snapshotsize",IDC_SNAPSIZETEXT,11,189,44,11,
+ SS_CENTERIMAGE | NOT WS_GROUP
+ EDITTEXT IDC_SNAPSIZEWIDTH,122,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEWIDTH
+ EDITTEXT IDC_SNAPSIZEHEIGHT,172,187,32,12,ES_RIGHT |
+ ES_AUTOHSCROLL | ES_NUMBER,0,HIDC_SNAPSIZEHEIGHT
+ LTEXT "x",IDC_SNAPSIZEX,162,189,8,8
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_PROP_VECTOR DIALOGEX 0, 0, 220, 240
+STYLE WS_CHILD | WS_CAPTION
+CAPTION "Vector"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON IDI_MAMEUI_ICON,IDC_STATIC,20,10,20,20
+ LTEXT "Title\nDirectory\nExtra",IDC_PROP_TITLE,52,9,161,25,
+ SS_NOPREFIX
+// CONTROL "Draw antialiased vectors",IDC_ANTIALIAS,"Button",
+// BS_AUTOCHECKBOX | WS_TABSTOP,10,40,92,10,0,
+// HIDC_ANTIALIAS
+ GROUPBOX "Beam width",IDC_BEAMTEXT,60,53,100,28
+ CONTROL "BeamSlider",IDC_BEAM,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,65,64,10,0,HIDC_BEAM
+ RTEXT "16.00",IDC_BEAMDISP,132,64,20,11,SS_CENTERIMAGE
+ GROUPBOX "Flicker",IDC_FLICKERTEXT,60,84,100,28
+ CONTROL "FlickerSlider",IDC_FLICKER,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,66,96,64,10,0,HIDC_FLICKER
+ RTEXT "100.00",IDC_FLICKERDISP,128,95,24,11,SS_CENTERIMAGE |
+ NOT WS_GROUP
+ PUSHBUTTON "Reset",IDC_PROP_RESET,4,222,97,14,0,0,HIDC_PROP_RESET
+ PUSHBUTTON "Restore Default Settings",IDC_USE_DEFAULT,118,222,97,14,
+ 0,0,HIDC_USE_DEFAULT
+END
+
+IDD_MAIN DIALOGEX 0, 0, 364, 206
+STYLE DS_3DLOOK | DS_NOFAILCREATE | WS_MINIMIZEBOX | WS_MAXIMIZEBOX |
+ WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+EXSTYLE WS_EX_CONTROLPARENT
+CAPTION "MAMEUI - overwritten at runtime"
+CLASS "MainClass"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "",IDC_DIVIDER,"Static",SS_ETCHEDHORZ,0,5,304,1
+ CONTROL "Tree1",IDC_TREE,"SysTreeView32",TVS_HASBUTTONS |
+ TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS |
+ TVS_SHOWSELALWAYS | TVS_FULLROWSELECT | WS_BORDER |
+ WS_TABSTOP,5,28,48,172
+ CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT |
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE |
+ LVS_SHAREIMAGELISTS |
+ LVS_OWNERDRAWFIXED | WS_BORDER | WS_TABSTOP,65,28,42,172
+ GROUPBOX "",IDC_SPLITTER,55,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ GROUPBOX "",IDC_SPLITTER2,109,28,8,172,BS_NOTIFY | NOT WS_VISIBLE
+ CONTROL "",IDC_SSFRAME,"Static",SS_ETCHEDFRAME | SS_NOTIFY,121,
+ 11,181,194
+ CONTROL "",IDC_SSTAB,"SysTabControl32",TCS_HOTTRACK,121,0,181,18
+ CONTROL "",IDC_SSPICTURE,"Static",SS_BITMAP | NOT WS_VISIBLE,141,
+ 18,141,127
+ EDITTEXT IDC_HISTORY,129,150,167,49,ES_MULTILINE | ES_READONLY | ES_OEMCONVERT |
+ NOT WS_BORDER | WS_VSCROLL | NOT WS_TABSTOP,0,
+ HIDC_HISTORY
+END
+
+IDD_FILTERS DIALOGEX 0, 0, 190, 182
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION |
+ WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Game Filters"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Game filters",IDC_STATIC,6,4,178,85
+ CONTROL "&Vector Graphics",IDC_FILTER_VECTOR,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,16,70,10,0,
+ HIDC_FILTER_VECTOR
+ CONTROL "C&lones",IDC_FILTER_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,30,41,10,0,HIDC_FILTER_CLONES
+ CONTROL "Non-Wor&king",IDC_FILTER_NONWORKING,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,44,61,10,0,
+ HIDC_FILTER_NONWORKING
+ CONTROL "&Horizontal",IDC_FILTER_HORIZONTAL,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,57,10,0,
+ HIDC_FILTER_HORIZONTAL
+ CONTROL "&Unavailable",IDC_FILTER_UNAVAILABLE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,72,57,10,0,
+ HIDC_FILTER_UNAVAILABLE
+ CONTROL "&Raster Graphics",IDC_FILTER_RASTER,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,16,70,10,0,
+ HIDC_FILTER_RASTER
+ CONTROL "Ori&ginals",IDC_FILTER_ORIGINALS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,100,30,47,10,0,
+ HIDC_FILTER_ORIGINALS
+ CONTROL "&Working",IDC_FILTER_WORKING,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,44,47,10,0,HIDC_FILTER_WORKING
+ CONTROL "&Vertical",IDC_FILTER_VERTICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,58,47,10,0,HIDC_FILTER_VERTICAL
+ CONTROL "&Mechanical",IDC_FILTER_MECHANICAL,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,100,72,47,10,0,HIDC_FILTER_MECHANICAL
+ LTEXT "(*) = inherited from parent folder",IDC_INHERITED,14,72,
+ 99,10
+ CTEXT "Game filters allow customizing the games that are displayed in each folder by hiding games that match the filters applied.",
+ IDC_STATIC,6,94,178,27
+ GROUPBOX "&Description filter",IDC_STATIC,6,122,178,33
+ EDITTEXT IDC_FILTER_EDIT,14,134,162,13,ES_AUTOHSCROLL,0,
+ HIDC_FILTER_EDIT
+ DEFPUSHBUTTON "&OK",IDOK,42,161,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,161,50,14
+END
+
+IDD_RESET DIALOGEX 0, 0, 190, 122
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Reset Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Categories",IDC_STATIC,6,4,178,70
+ CONTROL "&User Interface (Fonts, Colors, Sizes)",IDC_RESET_UI,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,146,10,0,
+ HIDC_RESET_UI
+ CONTROL "&Default game options",IDC_RESET_DEFAULT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,30,146,10,0,
+ HIDC_RESET_DEFAULT
+ CONTROL "&All games to use default options",IDC_RESET_GAMES,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,146,10,0,
+ HIDC_RESET_GAMES
+ CONTROL "&Folder 'filters'",IDC_RESET_FILTERS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,146,10,0,
+ HIDC_RESET_FILTERS
+ CTEXT "Select the options to be restored to the default settings.",
+ IDC_STATIC,6,79,178,20
+ DEFPUSHBUTTON "&OK",IDOK,42,101,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,101,50,14
+END
+
+
+IDD_INTERFACE_OPTIONS DIALOGEX 0, 0, 378, 225
+STYLE DS_MODALFRAME | DS_CENTER | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Interface Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Game Selection",IDC_STATIC,6,4,189,194
+ CONTROL "&Search for new games on start",IDC_START_GAME_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,16,111,10,0,
+ HIDC_START_GAME_CHECK
+ CONTROL "Allow game selection by a &joystick (requires restart)",
+ IDC_JOY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,30,
+ 174,10,0,HIDC_JOY_GUI
+ CONTROL "Allow game selection by custom &key sequences",
+ IDC_KEY_GUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,44,
+ 166,10
+ CONTROL "Select &random background image",IDC_RANDOM_BG,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,58,122,10,0,
+ HIDC_RANDOM_BG
+ CONTROL "&Broadcast selected game to all windows",IDC_BROADCAST,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,72,141,10,0,
+ HIDC_BROADCAST
+ CONTROL "Hide &mouse cursor (requires restart)",IDC_HIDE_MOUSE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,86,126,10,0,
+ HIDC_HIDE_MOUSE
+ CONTROL "Inheritable Filters",IDC_FILTER_INHERIT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,14,100,68,10
+ CONTROL "No offset for clones missing parent in view",
+ IDC_NOOFFSET_CLONES,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,14,114,148,10
+ GROUPBOX "Show History on Tab",IDC_STATIC,14,128,173,28
+ COMBOBOX IDC_HISTORY_TAB,57,138,88,50,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Snapshot Pattern",IDC_STATIC,202,4,170,28
+ GROUPBOX "Bookkeeping",IDC_STATIC,202,36,170,43
+ CONTROL "Reset all Playcounts",IDC_RESET_PLAYCOUNT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,48,80,10
+ CONTROL "Reset all Play Times",IDC_RESET_PLAYTIME,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,210,62,79,10
+ GROUPBOX "Screenshot Area",IDC_STATIC,202,83,170,115
+ CONTROL "S&tretch screenshot larger than natural size",
+ IDC_STRETCH_SCREENSHOT_LARGER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,210,95,148,10,0,
+ HIDC_STRETCH_SCREENSHOT_LARGER
+ GROUPBOX "Screenshot Cycletime in Seconds",IDC_STATIC,210,109,154,
+ 28
+ CONTROL "Slider1",IDC_CYCLETIMESEC,"msctls_trackbar32",TBS_BOTH |
+ TBS_NOTICKS | WS_TABSTOP,218,121,120,10,0,
+ HIDC_CYCLETIMESEC
+ RTEXT "60",IDC_CYCLETIMESECTXT,340,120,13,10,SS_CENTERIMAGE
+ GROUPBOX "Screenshot Bordersize",IDC_STATIC,210,141,154,28
+ CONTROL "Slider1",IDC_SCREENSHOT_BORDERSIZE,"msctls_trackbar32",
+ TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,218,153,120,10
+ RTEXT "100",IDC_SCREENSHOT_BORDERSIZETXT,340,152,13,10,
+ SS_CENTERIMAGE
+ PUSHBUTTON "Set Screenshot Border Color",IDC_SCREENSHOT_BORDERCOLOR,
+ 210,176,154,14
+ DEFPUSHBUTTON "&OK",IDOK,136,204,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,192,204,50,14
+ COMBOBOX IDC_SNAPNAME,209,14,155,60,CBS_DROPDOWNLIST | WS_VSCROLL |
+ WS_TABSTOP,0,HIDC_SNAPNAME
+END
+
+IDD_CUSTOM_FILE DIALOG DISCARDABLE 0, 0, 190, 135
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Add Game To Custom Folder"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "",IDC_CUSTOMFILE_GAME,6,6,175,10,SS_NOPREFIX |
+ SS_CENTERIMAGE
+ CONTROL "CustomTree",IDC_CUSTOM_TREE,"SysTreeView32",
+ TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
+ TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS |
+ TVS_FULLROWSELECT | WS_BORDER | WS_TABSTOP,6,18,178,90
+ DEFPUSHBUTTON "OK",IDOK,42,114,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,98,114,50,14
+END
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDA_TAB_KEYS ACCELERATORS MOVEABLE PURE
+BEGIN
+ "1", ID_VIEW_TAB_SCREENSHOT, VIRTKEY, ALT, NOINVERT
+ "2", ID_VIEW_TAB_FLYER, VIRTKEY, ALT, NOINVERT
+ "3", ID_VIEW_TAB_CABINET, VIRTKEY, ALT, NOINVERT
+ "4", ID_VIEW_TAB_MARQUEE, VIRTKEY, ALT, NOINVERT
+ "5", ID_VIEW_TAB_TITLE, VIRTKEY, ALT, NOINVERT
+ "6", ID_VIEW_TAB_CONTROL_PANEL, VIRTKEY, ALT, NOINVERT
+ "7", ID_VIEW_TAB_PCB, VIRTKEY, ALT, NOINVERT
+ "8", ID_VIEW_TAB_HISTORY, VIRTKEY, ALT, NOINVERT
+ "A", ID_GAME_AUDIT, VIRTKEY, ALT, NOINVERT
+ "B", ID_VIEW_PAGETAB, VIRTKEY, ALT, NOINVERT
+ "D", ID_VIEW_FOLDERS, VIRTKEY, ALT, NOINVERT
+ "E", ID_TOOLBAR_EDIT, VIRTKEY, CONTROL, NOINVERT
+ "F", ID_CONTEXT_FILTERS, VIRTKEY, CONTROL, NOINVERT
+ "U", ID_FOLDER_AUDIT, VIRTKEY, ALT, NOINVERT
+ "P", ID_VIEW_PICTURE_AREA, VIRTKEY, ALT, NOINVERT
+ "R", ID_CONTEXT_SELECT_RANDOM, VIRTKEY, CONTROL, NOINVERT
+ "S", ID_VIEW_STATUS, VIRTKEY, ALT, NOINVERT
+ "T", ID_VIEW_TOOLBARS, VIRTKEY, ALT, NOINVERT
+ VK_F1, ID_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F11, ID_VIEW_FULLSCREEN, VIRTKEY, NOINVERT
+ VK_F5, ID_UPDATE_GAMELIST, VIRTKEY, NOINVERT
+ VK_NEXT, ID_UI_HISTORY_DOWN, VIRTKEY, CONTROL, NOINVERT
+ VK_PRIOR, ID_UI_HISTORY_UP, VIRTKEY, CONTROL, NOINVERT
+ VK_RETURN, ID_GAME_PROPERTIES, VIRTKEY, ALT, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO MOVEABLE PURE
+BEGIN
+ IDD_ABOUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 289
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 123
+ END
+
+ IDD_DIRECTX, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 229
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 62
+ END
+
+ IDD_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 280
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 187
+ HORZGUIDE, 19
+ END
+
+ IDD_DIRECTORIES, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 224
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 98
+ END
+
+ IDD_COLUMNS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 301
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 143
+ END
+
+ IDD_PROP_CONTROLLER, DIALOG
+ BEGIN
+ RIGHTMARGIN, 210
+ BOTTOMMARGIN, 154
+ END
+
+ IDD_PROP_SCREEN, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ BOTTOMMARGIN, 199
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_GAME, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 19
+ VERTGUIDE, 66
+ VERTGUIDE, 74
+ VERTGUIDE, 201
+ BOTTOMMARGIN, 268
+ END
+
+ IDD_PROP_AUDIT, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 12
+ VERTGUIDE, 208
+ BOTTOMMARGIN, 198
+ HORZGUIDE, 38
+ END
+
+ IDD_PROP_DISPLAY, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ VERTGUIDE, 7
+ VERTGUIDE, 123
+ HORZGUIDE, 179
+ END
+
+ IDD_PROP_SOUND, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_PROP_ADVANCED, DIALOG
+ BEGIN
+ LEFTMARGIN, 10
+ BOTTOMMARGIN, 240
+ END
+
+ IDD_PROP_INPUT, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ RIGHTMARGIN, 215
+ VERTGUIDE, 50
+ VERTGUIDE, 170
+ END
+
+ IDD_PROP_MISC, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 25
+ VERTGUIDE, 40
+ VERTGUIDE, 104
+ VERTGUIDE, 114
+ VERTGUIDE, 204
+ BOTTOMMARGIN, 236
+ END
+
+ IDD_PROP_VECTOR, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 213
+ VERTGUIDE, 50
+ BOTTOMMARGIN, 198
+ END
+
+ IDD_FILTERS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 178
+ END
+
+ IDD_RESET, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 175
+ VERTGUIDE, 18
+ VERTGUIDE, 164
+ TOPMARGIN, 7
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+
+
+
+IDB_ABOUT BITMAP "res\\about.bmp"
+IDB_TOOLBAR BITMAP "res\\toolbar.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Cursor
+//
+
+IDC_CURSOR_HSPLIT CURSOR "res\\splith.cur"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// RT_MANIFEST
+//
+
+1 RT_MANIFEST "res\\mameui.manifest"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_FILE "Contains commands for working with the selected items"
+ IDS_UI_VIEW "Contains commands for manipulating the view"
+ IDS_UI_OPTIONS "Contains commands for user interface options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_UI_HELP "Contains commands for displaying help"
+ IDS_VIEW_TOOLBAR "Show or hide the toolbar"
+ IDS_VIEW_STATUSBAR "Show or hide the status bar"
+ IDS_VIEW_FOLDERLIST "Show or hide the folder list"
+ IDS_VIEW_SCREENSHOT "Show or hide the screen shot"
+ IDS_VIEW_PICTURETABS "Show or hide tabs in the picture area"
+ IDS_VIEW_SPACER1 "Spacer"
+ IDS_VIEW_FULLSCREEN "Toggle full screen mode"
+ IDS_VIEW_SPACER2 "Spacer"
+ IDS_VIEW_SHOWPICTURES "Contains commands to select tabs shown in the picture area"
+ IDS_VIEW_SPACER3 "Spacer"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_VIEW_LARGEICONS "Display items by using large icons."
+ IDS_VIEW_SMALLICONS "Display items by using small icons."
+ IDS_VIEW_LIST "Displays items in a list."
+ IDS_VIEW_DETAILS "Displays detailed information about each item in the window."
+ IDS_VIEW_GROUPED "Displays items grouped by parent game"
+ IDS_VIEW_SPACER4 "Spacer"
+ IDS_VIEW_ARRANGE "Contains commands for sorting by various columns"
+ IDS_VIEW_LINEUPICONS "Arranges icons in a grid"
+ IDS_VIEW_SPACER5 "Spacer"
+ IDS_VIEW_REFRESH "Refresh game list"
+ IDS_VIEW_CONTEXTFILTERS "Allows filtering out games from a folder"
+ IDS_VIEW_CUSTOMIZEFIELDS
+ "Customize which columns are used in the game list"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FILE_EXIT "Exit the application"
+ ID_FILE_PLAY "Play currently selected game"
+ ID_HELP_ABOUT "Displays program and copyright information"
+ ID_VIEW_LARGE_ICON "Display items by using large icons."
+ ID_VIEW_SMALL_ICON "Display items by using small icons."
+ ID_VIEW_LIST_MENU "Displays items in a list."
+ ID_VIEW_DETAIL "Displays detailed information about each item in the window."
+ ID_VIEW_GROUPED "Show items grouped by parent game"
+ ID_OPTIONS_FONT "Set game list and folder list font"
+ ID_OPTIONS_CLONE_COLOR "Set the clone font color"
+ ID_OPTIONS_DIR "Set directory configuration"
+ ID_OPTIONS_DEFAULTS "Set default game options"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_OPTIONS_RESET_DEFAULTS "Allow restoring options to 'sane' values."
+ ID_OPTIONS_INTERFACE "Customize interface options."
+ ID_FILE_AUDIT "Audit ROM and samples sets"
+ ID_FILE_PLAY_RECORD "Record a game for later playback"
+ ID_FILE_PLAY_BACK "Playback a recorded game"
+ ID_FILE_PLAY_RECORD_WAVE "Record the audio output of a game"
+ ID_FILE_PLAY_RECORD_MNG "Record the video output of a game"
+ ID_FILE_PLAY_RECORD_AVI "Record the complete output of a game"
+ ID_VIEW_PICTURE_AREA "Show or hide the picture area"
+ ID_HELP_CONTENTS "Display help contents"
+ ID_HELP_WHATS_NEWUI "New game changes"
+ ID_HELP_TROUBLE "Troubleshooting Documentation"
+ ID_HELP_RELEASE "MAME release notes"
+ ID_HELP_WHATS_NEW "What's new in MAME"
+ ID_HELP_CHEATS "How cheats work"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CONTEXT_RESET_PLAYTIME "Reset time played for selected item"
+ ID_CONTEXT_RESET_PLAYCOUNT "Reset number of plays for selected item"
+ ID_FOLDER_PROPERTIES "Display folder properties"
+ ID_FOLDER_AUDIT "Audit items in this folder"
+ ID_FILE_LOADSTATE "Play a game starting with the given savestate"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_TAB_CABINET "Select Cabinet tab"
+ ID_VIEW_TAB_MARQUEE "Select Marquee tab"
+ ID_VIEW_TAB_TITLE "Select Title tab"
+ ID_VIEW_TAB_CONTROL_PANEL "Select Control panel tab"
+ ID_VIEW_TAB_PCB "Select PCB tab"
+ ID_VIEW_TAB_HISTORY "Select History tab"
+ ID_OPTIONS_BG "Set the background image"
+ ID_TOGGLE_TAB_SCREENSHOT "Enable the screenshot tab"
+ ID_TOGGLE_TAB_FLYER "Enable the flyer tab"
+ ID_TOGGLE_TAB_CABINET "Enable the cabinet tab"
+ ID_TOGGLE_TAB_MARQUEE "Enable the marquee tab"
+ ID_TOGGLE_TAB_TITLE "Enable the title tab"
+ ID_TOGGLE_TAB_CONTROL_PANEL "Enable the control panel tab"
+ ID_TOGGLE_TAB_PCB "Enable the PCB tab"
+ ID_TOGGLE_TAB_HISTORY "Enable the history tab"
+ ID_VIEW_FULLSCREEN "Toggle Fullscreen mode"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_CUSTOMIZE_FIELDS "Customize which columns are used in the game list"
+ ID_GAME_PROPERTIES "Display the properties of the selected item"
+ ID_VIEW_PAGETAB "Show or hide the tabs in the picture area"
+ ID_VIEW_FOLDERS "Show or hide the folder list"
+ ID_VIEW_TOOLBARS "Show or hide the toolbar"
+ ID_VIEW_STATUS "Show or hide the status bar"
+ ID_CONTEXT_FILTERS "Allows filtering out games from a folder"
+ ID_CONTEXT_RENAME_CUSTOM "Rename this folder"
+ ID_CONTEXT_ADD_CUSTOM "Add selected item to custom folder"
+ ID_CONTEXT_REMOVE_CUSTOM "Remove selected item from this folder"
+ ID_GAME_AUDIT "Audit the selected item"
+ ID_CONTEXT_SELECT_RANDOM "Randomly select a game."
+ ID_VIEW_TAB_SCREENSHOT "Select Snapshot tab"
+ ID_VIEW_TAB_FLYER "Select Flyer tab"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_VIEW_BYGAME "Sort items by game description"
+ ID_VIEW_BYDIRECTORY "Sort items by name"
+ ID_VIEW_BYMANUFACTURER "Sort items by manufacturer"
+ ID_VIEW_BYYEAR "Sort items by year"
+ ID_VIEW_BYTYPE "Sort items by type"
+ ID_VIEW_BYTIMESPLAYED "Sort by number of plays"
+ ID_VIEW_LINEUPICONS "Arranges icons in a grid"
+ ID_UPDATE_GAMELIST "Refresh game list"
+ ID_SORT_ASCENDING "Sort column in ascending (A-Z) order"
+ ID_SORT_DESCENDING "Sort column in descending (Z-A) order"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ ID_FOLDER_SOURCEPROPERTIES
+ "Display properties for all games in this source file"
+ ID_FOLDER_VECTORPROPERTIES "Display properties for all vector based games"
+ ID_OPTIONS_HISTORY "Set the History file to use"
+ ID_OPTIONS_MAMEINFO "Set the Mameinfo file to use"
+END
+
+#endif // English (USA) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#include "messvers.rc" // Version block
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/docs/release/src/osd/winui/mkhelp.cpp b/docs/release/src/osd/winui/mkhelp.cpp
new file mode 100644
index 00000000000..115ded9ef8d
--- /dev/null
+++ b/docs/release/src/osd/winui/mkhelp.cpp
@@ -0,0 +1,152 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/***************************************************************************
+
+ mkhelp.c
+
+ Simple resource HIDC to Help entry tool.
+
+ MSH - 20070815
+
+***************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "osdcore.h"
+
+
+static int compare( const void *arg1, const void *arg2 );
+static void extract_help_ids(const char *buffer, FILE *fp);
+
+/*-------------------------------------------------
+ main - primary entry point
+-------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+ const char *resourcefile, *varname, *type;
+ FILE *src, *dst;
+ char *buffer;
+ int bytes = 0;
+
+ varname = "dwHelpIDs";
+ type = "DWORD";
+
+ /* needs at least three arguments */
+ if (argc < 1)
+ {
+ fprintf(stderr,
+ "Usage:\n"
+ " mkhelp <resource.rc>\n"
+ "\n"
+ "The default <type> is DWORD, with an assumed NULL terminator pair\n"
+ );
+ return 0;
+ }
+
+ /* extract arguments */
+ resourcefile = argv[1];
+
+ /* open source file */
+ src = fopen(resourcefile, "rb");
+ if (src == NULL)
+ {
+ fprintf(stderr, "Unable to open resource file '%s'\n", resourcefile);
+ return 1;
+ }
+
+ /* determine file size */
+ fseek(src, 0, SEEK_END);
+ bytes = ftell(src);
+ fseek(src, 0, SEEK_SET);
+
+ /* allocate memory */
+ buffer = (char*)malloc(bytes + 1);
+ if (buffer == NULL)
+ {
+ fclose(src);
+ fprintf(stderr, "Out of memory allocating %d byte buffer\n", bytes);
+ return 1;
+ }
+
+ /* read the source file */
+ fread(buffer, 1, bytes, src);
+ buffer[bytes] = 0;
+ fclose(src);
+
+ /* open dest file */
+ dst = stdout;
+
+ fprintf(dst,"/*\n * Help ID array - Generated by mkhelp\n */\n\n");
+ fprintf(dst, "#include <windows.h>\n#include \"resource.h\"\n#include \"resource.hm\"\n\n");
+ /* write the initial header */
+ fprintf(dst, "extern const %s %s[] =\n{\n", type, varname);
+
+ extract_help_ids(buffer, dst);
+
+ fprintf(dst, "\n};\n");
+
+ /* close the files */
+ free(buffer);
+ return 0;
+}
+
+static int compare( const void *arg1, const void *arg2 )
+{
+ /* Compare all of both strings: */
+ return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
+}
+
+static void extract_help_ids(const char *buffer, FILE *fp)
+{
+ const char *ptr = buffer;
+ char **help_ids = (char **)malloc(500 * sizeof(char *));
+ int num_help_id = 0;
+ int i;
+
+ //memset(help_ids, '\0', sizeof(*help_ids));
+ memset(help_ids, 0, 500);
+
+ while(*ptr) {
+ if (strncmp("HIDC_", ptr, 5) == 0) {
+ char id_name[128];
+ char *end = id_name;
+ char *id;
+ memset(id_name, '\0', sizeof(id_name));
+ while (*ptr && *ptr != '\x0d' && *ptr != '\x0a' ) {
+ *end++ = *ptr++;
+ }
+ id = (char *)malloc(strlen(id_name));
+ memset(id, '\0', strlen(id_name));
+ memcpy(id, &id_name[1], strlen(&id_name[1]));
+ help_ids[num_help_id] = id;
+ num_help_id++;
+ } else {
+ ptr++;
+ }
+ }
+
+ /* Sort using Quicksort algorithm: */
+ qsort( (void *)help_ids, (size_t)num_help_id, sizeof( char * ), compare );
+
+ // Now print them out.
+ ptr = help_ids[0];
+ for (i = 0; i < num_help_id; i++) {
+ if (i > 0) {
+ if (strcmp(ptr, help_ids[i]) == 0) {
+ continue;
+ }
+ }
+ fprintf(fp, "\t%-30s,H%s,\n", help_ids[i], help_ids[i]);
+ ptr = help_ids[i];
+ }
+ fprintf(fp, "\t%-30i,%i\n", 0, 0);
+
+ // free our allocations.
+ for (i = 0; i < num_help_id; i++) {
+ free(help_ids[i]);
+ }
+ free (help_ids);
+}
+
diff --git a/docs/release/src/osd/winui/mui_audit.cpp b/docs/release/src/osd/winui/mui_audit.cpp
new file mode 100644
index 00000000000..97ca2210ae3
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_audit.cpp
@@ -0,0 +1,497 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+ /***************************************************************************
+
+ mui_audit.c
+
+ Audit dialog
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <commctrl.h>
+
+// standard C headers
+#include <stdio.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "winui.h"
+#include "winutf8.h"
+#include "strconv.h"
+#include "audit.h"
+#include "resource.h"
+#include "mui_opts.h"
+#include "mui_util.h"
+#include "properties.h"
+#include <richedit.h>
+
+
+#ifdef _MSC_VER
+#define vsnprintf _vsnprintf
+#endif
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+static DWORD WINAPI AuditThreadProc(LPVOID hDlg);
+static INT_PTR CALLBACK AuditWindowProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+static void ProcessNextRom(void);
+static void ProcessNextSample(void);
+static void CLIB_DECL DetailsPrintf(const char *fmt, ...) ATTR_PRINTF(1,2);
+static const char * StatusString(int iStatus);
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+#define MAX_AUDITBOX_TEXT 0x7FFFFFFE
+
+static volatile HWND hAudit;
+static volatile int rom_index = 0;
+static volatile int roms_correct = 0;
+static volatile int roms_incorrect = 0;
+static volatile int sample_index = 0;
+static volatile int samples_correct = 0;
+static volatile int samples_incorrect = 0;
+static volatile BOOL bPaused = FALSE;
+static volatile BOOL bCancel = FALSE;
+static int m_choice = 0;
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+
+static int strcatprintf(std::string &str, const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ int retVal = strcatvprintf(str, format, ap);
+ va_end(ap);
+ return retVal;
+}
+
+void AuditDialog(HWND hParent, int choice)
+{
+ HMODULE hModule = NULL;
+ rom_index = 0;
+ roms_correct = -1; // ___empty must not be counted
+ roms_incorrect = 0;
+ sample_index = 0;
+ samples_correct = -1; // ___empty must not be counted
+ samples_incorrect = 0;
+ m_choice = choice;
+
+ //RS use Riched32.dll
+ hModule = LoadLibrary(TEXT("Riched32.dll"));
+ if( hModule )
+ {
+ DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_AUDIT),hParent,AuditWindowProc);
+ FreeLibrary( hModule );
+ hModule = NULL;
+ }
+ else
+ {
+ MessageBox(GetMainWindow(),TEXT("Unable to Load Riched32.dll"),TEXT("Error"), MB_OK | MB_ICONERROR);
+ }
+}
+
+void InitGameAudit(int gameIndex)
+{
+ rom_index = gameIndex;
+}
+
+const char * GetAuditString(int audit_result)
+{
+ switch (audit_result)
+ {
+ case media_auditor::CORRECT :
+ case media_auditor::BEST_AVAILABLE :
+ case media_auditor::NONE_NEEDED :
+ return "Yes";
+
+ case media_auditor::NOTFOUND :
+ case media_auditor::INCORRECT :
+ return "No";
+
+ default:
+ dprintf("unknown audit value %i\n",audit_result);
+ }
+
+ return "?";
+}
+
+BOOL IsAuditResultKnown(int audit_result)
+{
+ return TRUE;
+}
+
+BOOL IsAuditResultYes(int audit_result)
+{
+ return audit_result == media_auditor::CORRECT
+ || audit_result == media_auditor::BEST_AVAILABLE
+ || audit_result == media_auditor::NONE_NEEDED;
+}
+
+BOOL IsAuditResultNo(int audit_result)
+{
+ return audit_result == media_auditor::NOTFOUND
+ || audit_result == media_auditor::INCORRECT;
+}
+
+
+/***************************************************************************
+ Internal functions
+ ***************************************************************************/
+// Verifies the ROM set while calling SetRomAuditResults
+int MameUIVerifyRomSet(int game, bool choice)
+{
+ driver_enumerator enumerator(MameUIGlobal(), driver_list::driver(game));
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
+
+ std::string summary_string;
+
+ if (summary == media_auditor::NOTFOUND)
+ {
+ if (m_choice < 2)
+ strcatprintf(summary_string, "%s: Romset NOT FOUND\n", driver_list::driver(game).name);
+ }
+ else
+ if (choice)
+ {
+ auditor.winui_summarize(driver_list::driver(game).name, &summary_string); // audit all games
+ }
+ else
+ {
+ std::ostringstream whatever;
+ auditor.summarize(driver_list::driver(game).name, &whatever); // audit one game
+ summary_string = whatever.str();
+ }
+
+ // output the summary of the audit
+ DetailsPrintf("%s", summary_string.c_str());
+
+ SetRomAuditResults(game, summary);
+ return summary;
+}
+
+// Verifies the Sample set while calling SetSampleAuditResults
+int MameUIVerifySampleSet(int game)
+{
+ driver_enumerator enumerator(MameUIGlobal(), driver_list::driver(game));
+ enumerator.next();
+ media_auditor auditor(enumerator);
+ media_auditor::summary summary = auditor.audit_samples();
+
+ std::string summary_string;
+
+ if (summary == media_auditor::NOTFOUND)
+ strcatprintf(summary_string, "%s: Sampleset NOT FOUND\n", driver_list::driver(game).name);
+ else
+ {
+ std::ostringstream whatever;
+ auditor.summarize(driver_list::driver(game).name, &whatever);
+ summary_string = whatever.str();
+ }
+
+ // output the summary of the audit
+ DetailsPrintf("%s", summary_string.c_str());
+
+ SetSampleAuditResults(game, summary);
+ return summary;
+}
+
+static DWORD WINAPI AuditThreadProc(LPVOID hDlg)
+{
+ char buffer[200];
+
+ while (!bCancel)
+ {
+ if (!bPaused)
+ {
+ if (rom_index != -1)
+ {
+ sprintf(buffer, "Checking Set %s - %s",
+ driver_list::driver(rom_index).name, driver_list::driver(rom_index).description);
+ win_set_window_text_utf8((HWND)hDlg, buffer);
+ ProcessNextRom();
+ }
+ else
+ if (sample_index != -1)
+ {
+ sprintf(buffer, "Checking Set %s - %s",
+ driver_list::driver(sample_index).name, driver_list::driver(sample_index).description);
+ win_set_window_text_utf8((HWND)hDlg, buffer);
+ ProcessNextSample();
+ }
+ else
+ {
+ win_set_window_text_utf8((HWND)hDlg, "File Audit");
+ EnableWindow(GetDlgItem((HWND)hDlg, IDPAUSE), FALSE);
+ ExitThread(1);
+ }
+ }
+ }
+ return 0;
+}
+
+static INT_PTR CALLBACK AuditWindowProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ static HANDLE hThread;
+ static DWORD dwThreadID = 0;
+ DWORD dwExitCode = 0;
+ HWND hEdit;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ hAudit = hDlg;
+ //RS 20030613 Set Bkg of RichEdit Ctrl
+ hEdit = GetDlgItem(hAudit, IDC_AUDIT_DETAILS);
+ if (hEdit != NULL)
+ {
+ SendMessage( hEdit, EM_SETBKGNDCOLOR, FALSE, GetSysColor(COLOR_BTNFACE) );
+ // MSH - Set to max
+ SendMessage( hEdit, EM_SETLIMITTEXT, MAX_AUDITBOX_TEXT, 0 );
+
+ }
+ SendDlgItemMessage(hDlg, IDC_ROMS_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, driver_list::total()));
+ SendDlgItemMessage(hDlg, IDC_SAMPLES_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, driver_list::total()));
+ bPaused = FALSE;
+ bCancel = FALSE;
+ rom_index = 0;
+ hThread = CreateThread(NULL, 0, AuditThreadProc, hDlg, 0, &dwThreadID);
+ return 1;
+ case WM_COMMAND:
+ switch (LOWORD(wParam))
+ {
+ case IDCANCEL:
+ bPaused = FALSE;
+ if (hThread)
+ {
+ bCancel = TRUE;
+ if (GetExitCodeThread(hThread, &dwExitCode) && (dwExitCode == STILL_ACTIVE))
+ {
+ PostMessage(hDlg, WM_COMMAND, wParam, lParam);
+ return 1;
+ }
+ CloseHandle(hThread);
+ }
+ EndDialog(hDlg,0);
+ m_choice = 0;
+ break;
+
+ case IDPAUSE:
+ if (bPaused)
+ {
+ SendDlgItemMessage(hAudit, IDPAUSE, WM_SETTEXT, 0, (LPARAM)TEXT("Pause"));
+ bPaused = FALSE;
+ }
+ else
+ {
+ SendDlgItemMessage(hAudit, IDPAUSE, WM_SETTEXT, 0, (LPARAM)TEXT("Continue"));
+ bPaused = TRUE;
+ }
+ break;
+ }
+ return 1;
+ }
+ return 0;
+}
+
+/* Callback for the Audit property sheet */
+INT_PTR CALLBACK GameAuditDialogProc(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam)
+{
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ FlushFileCaches();
+ hAudit = hDlg;
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_TITLE), GameInfoTitle(OPTIONS_GAME, rom_index));
+ SetTimer(hDlg, 0, 1, NULL);
+ return 1;
+
+ case WM_TIMER:
+ KillTimer(hDlg, 0);
+ {
+ int iStatus;
+ LPCSTR lpStatus;
+
+ iStatus = MameUIVerifyRomSet(rom_index, 0);
+ lpStatus = DriverUsesRoms(rom_index) ? StatusString(iStatus) : "None required";
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_ROMS), lpStatus);
+
+ if (DriverUsesSamples(rom_index))
+ {
+ iStatus = MameUIVerifySampleSet(rom_index);
+ lpStatus = StatusString(iStatus);
+ }
+ else
+ {
+ lpStatus = "None Required";
+ }
+
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SAMPLES), lpStatus);
+ }
+ ShowWindow(hDlg, SW_SHOW);
+ break;
+ }
+ return 0;
+}
+
+static void ProcessNextRom()
+{
+ int retval = 0;
+ TCHAR buffer[200];
+
+ retval = MameUIVerifyRomSet(rom_index, 1);
+ switch (retval)
+ {
+ case media_auditor::BEST_AVAILABLE: /* correct, incorrect or separate count? */
+ case media_auditor::CORRECT:
+ case media_auditor::NONE_NEEDED:
+ roms_correct++;
+ _stprintf(buffer, TEXT("%i"), roms_correct);
+ SendDlgItemMessage(hAudit, IDC_ROMS_CORRECT, WM_SETTEXT, 0, (LPARAM)buffer);
+ _stprintf(buffer, TEXT("%i"), roms_correct + roms_incorrect);
+ SendDlgItemMessage(hAudit, IDC_ROMS_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer);
+ break;
+
+ case media_auditor::NOTFOUND:
+ case media_auditor::INCORRECT:
+ roms_incorrect++;
+ _stprintf(buffer, TEXT("%i"), roms_incorrect);
+ SendDlgItemMessage(hAudit, IDC_ROMS_INCORRECT, WM_SETTEXT, 0, (LPARAM)buffer);
+ _stprintf(buffer, TEXT("%i"), roms_correct + roms_incorrect);
+ SendDlgItemMessage(hAudit, IDC_ROMS_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer);
+ break;
+ }
+
+ rom_index++;
+ SendDlgItemMessage(hAudit, IDC_ROMS_PROGRESS, PBM_SETPOS, rom_index, 0);
+
+ if (rom_index == driver_list::total())
+ {
+ sample_index = 0;
+ rom_index = -1;
+ }
+}
+
+static void ProcessNextSample()
+{
+ int retval = 0;
+ TCHAR buffer[200];
+
+ retval = MameUIVerifySampleSet(sample_index);
+
+ switch (retval)
+ {
+ case media_auditor::NOTFOUND:
+ case media_auditor::INCORRECT:
+ if (DriverUsesSamples(sample_index))
+ {
+ samples_incorrect++;
+ _stprintf(buffer, TEXT("%i"), samples_incorrect);
+ SendDlgItemMessage(hAudit, IDC_SAMPLES_INCORRECT, WM_SETTEXT, 0, (LPARAM)buffer);
+ _stprintf(buffer, TEXT("%i"), samples_correct + samples_incorrect);
+ SendDlgItemMessage(hAudit, IDC_SAMPLES_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer);
+ break;
+ }
+ default:
+ if ((DriverUsesSamples(sample_index)) || (m_choice == 1))
+ {
+ samples_correct++;
+ _stprintf(buffer, TEXT("%i"), samples_correct);
+ SendDlgItemMessage(hAudit, IDC_SAMPLES_CORRECT, WM_SETTEXT, 0, (LPARAM)buffer);
+ _stprintf(buffer, TEXT("%i"), samples_correct + samples_incorrect);
+ SendDlgItemMessage(hAudit, IDC_SAMPLES_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer);
+ break;
+ }
+ }
+
+ sample_index++;
+ SendDlgItemMessage(hAudit, IDC_SAMPLES_PROGRESS, PBM_SETPOS, sample_index, 0);
+
+ if (sample_index == driver_list::total())
+ {
+ DetailsPrintf("Audit complete.\n");
+ SendDlgItemMessage(hAudit, IDCANCEL, WM_SETTEXT, 0, (LPARAM)TEXT("Close"));
+ sample_index = -1;
+ }
+}
+
+static void CLIB_DECL DetailsPrintf(const char *fmt, ...)
+{
+ HWND hEdit;
+ va_list marker;
+ char buffer[8000];
+ TCHAR* t_s;
+ int textLength = 0;
+
+ //RS 20030613 Different Ids for Property Page and Dialog
+ // so see which one's currently instantiated
+ hEdit = GetDlgItem(hAudit, IDC_AUDIT_DETAILS);
+ if (hEdit == NULL)
+ hEdit = GetDlgItem(hAudit, IDC_AUDIT_DETAILS_PROP);
+
+ if (hEdit == NULL)
+ {
+ dprintf("audit detailsprintf() can't find any audit control\n");
+ return;
+ }
+
+ va_start(marker, fmt);
+
+ vsprintf(buffer, fmt, marker);
+
+ va_end(marker);
+
+ t_s = ui_wstring_from_utf8(ConvertToWindowsNewlines(buffer));
+ if( !t_s || _tcscmp(TEXT(""), t_s) == 0)
+ return;
+
+ textLength = Edit_GetTextLength(hEdit);
+ Edit_SetSel(hEdit, textLength, textLength);
+ SendMessage( hEdit, EM_REPLACESEL, FALSE, (WPARAM)(LPCTSTR)win_tstring_strdup(t_s) );
+
+ free(t_s);
+}
+
+static const char * StatusString(int iStatus)
+{
+ static const char *ptr;
+
+ ptr = "Unknown";
+
+ switch (iStatus)
+ {
+ case media_auditor::CORRECT:
+ ptr = "Passed";
+ break;
+
+ case media_auditor::BEST_AVAILABLE:
+ ptr = "Best available";
+ break;
+
+ case media_auditor::NONE_NEEDED:
+ ptr = "None Required";
+ break;
+
+ case media_auditor::NOTFOUND:
+ ptr = "Not found";
+ break;
+
+ case media_auditor::INCORRECT:
+ ptr = "Failed";
+ break;
+ }
+
+ return ptr;
+}
diff --git a/docs/release/src/osd/winui/mui_audit.h b/docs/release/src/osd/winui/mui_audit.h
new file mode 100644
index 00000000000..b95e1684ce1
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_audit.h
@@ -0,0 +1,21 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef MUI_AUDIT_H
+#define MUI_AUDIT_H
+
+void AuditDialog(HWND hParent, int choice);
+
+// For property sheet Game Audit tab
+void InitGameAudit(int gameIndex);
+INT_PTR CALLBACK GameAuditDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+int MameUIVerifyRomSet(int game, bool choice);
+int MameUIVerifySampleSet(int game);
+
+const char * GetAuditString(int audit_result);
+BOOL IsAuditResultKnown(int audit_result);
+BOOL IsAuditResultYes(int audit_result);
+BOOL IsAuditResultNo(int audit_result);
+
+#endif
diff --git a/docs/release/src/osd/winui/mui_main.cpp b/docs/release/src/osd/winui/mui_main.cpp
new file mode 100644
index 00000000000..31ba3db2e38
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_main.cpp
@@ -0,0 +1,22 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+#ifndef WINUI
+#define WINUI
+#endif
+
+// import the main() from MAME, but rename it so we can call it indirectly
+#undef main
+#undef wmain
+#define main mame_main
+#define wmain mame_main
+#include "windows/main.cpp"
+#undef main
+#undef wmain
+
+#include "winui.h"
+
+
+int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
+{
+ return MameUIMain(hInstance, lpCmdLine, nCmdShow);
+}
diff --git a/docs/release/src/osd/winui/mui_opts.cpp b/docs/release/src/osd/winui/mui_opts.cpp
new file mode 100644
index 00000000000..409960e45ef
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_opts.cpp
@@ -0,0 +1,2807 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+ /***************************************************************************
+
+ mui_opts.cpp
+
+ Stores global options and per-game options;
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <winreg.h>
+#include <commctrl.h>
+
+// standard C headers
+#include <assert.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <math.h>
+#include <direct.h>
+#include <emu.h>
+#include <mameopts.h>
+#include <ui/moptions.h>
+#include <stddef.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "bitmask.h"
+#include "winui.h"
+#include "mui_util.h"
+#include "treeview.h"
+#include "splitters.h"
+#include "mui_opts.h"
+#include "winutf8.h"
+#include "strconv.h"
+#include "drivenum.h"
+#include "game_opts.h"
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+/***************************************************************************
+ Internal function prototypes
+ ***************************************************************************/
+
+// static void LoadFolderFilter(int folder_index,int filters);
+
+static void LoadSettingsFile(winui_options &opts, const char *filename);
+static void SaveSettingsFile(winui_options &opts, const char *filename);
+static void LoadSettingsFile(windows_options &opts, const char *filename);
+static void SaveSettingsFile(windows_options &opts, const char *filename);
+
+static void LoadOptionsAndSettings(void);
+
+static void CusColorEncodeString(const COLORREF *value, char* str);
+static void CusColorDecodeString(const char* str, COLORREF *value);
+
+static void SplitterEncodeString(const int *value, char* str);
+static void SplitterDecodeString(const char *str, int *value);
+
+static void FontEncodeString(const LOGFONT *f, char *str);
+static void FontDecodeString(const char* str, LOGFONT *f);
+
+static void TabFlagsEncodeString(int data, char *str);
+static void TabFlagsDecodeString(const char *str, int *data);
+
+static DWORD DecodeFolderFlags(const char *buf);
+static const char * EncodeFolderFlags(DWORD value);
+
+static void ResetToDefaults(windows_options &opts, int priority);
+
+//static void ui_parse_ini_file(windows_options &opts, const char *name);
+
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+/***************************************************************************
+ Internal defines
+ ***************************************************************************/
+
+#define GAMEINFO_INI_FILENAME MAMENAME "_g.ini"
+#define MEWUI_FILENAME "ini\\ui.ini"
+
+#define MUIOPTION_LIST_MODE "list_mode"
+#define MUIOPTION_CHECK_GAME "check_game"
+#define MUIOPTION_JOYSTICK_IN_INTERFACE "joystick_in_interface"
+#define MUIOPTION_KEYBOARD_IN_INTERFACE "keyboard_in_interface"
+#define MUIOPTION_CYCLE_SCREENSHOT "cycle_screenshot"
+#define MUIOPTION_STRETCH_SCREENSHOT_LARGER "stretch_screenshot_larger"
+#define MUIOPTION_SCREENSHOT_BORDER_SIZE "screenshot_bordersize"
+#define MUIOPTION_SCREENSHOT_BORDER_COLOR "screenshot_bordercolor"
+#define MUIOPTION_INHERIT_FILTER "inherit_filter"
+#define MUIOPTION_OFFSET_CLONES "offset_clones"
+#define MUIOPTION_DEFAULT_FOLDER_ID "default_folder_id"
+#define MUIOPTION_SHOW_IMAGE_SECTION "show_image_section"
+#define MUIOPTION_SHOW_FOLDER_SECTION "show_folder_section"
+#define MUIOPTION_HIDE_FOLDERS "hide_folders"
+#define MUIOPTION_SHOW_STATUS_BAR "show_status_bar"
+#define MUIOPTION_SHOW_TABS "show_tabs"
+#define MUIOPTION_SHOW_TOOLBAR "show_tool_bar"
+#define MUIOPTION_CURRENT_TAB "current_tab"
+#define MUIOPTION_WINDOW_X "window_x"
+#define MUIOPTION_WINDOW_Y "window_y"
+#define MUIOPTION_WINDOW_WIDTH "window_width"
+#define MUIOPTION_WINDOW_HEIGHT "window_height"
+#define MUIOPTION_WINDOW_STATE "window_state"
+#define MUIOPTION_CUSTOM_COLOR "custom_color"
+#define MUIOPTION_LIST_FONT "list_font"
+#define MUIOPTION_TEXT_COLOR "text_color"
+#define MUIOPTION_CLONE_COLOR "clone_color"
+#define MUIOPTION_HIDE_TABS "hide_tabs"
+#define MUIOPTION_HISTORY_TAB "history_tab"
+#define MUIOPTION_COLUMN_WIDTHS "column_widths"
+#define MUIOPTION_COLUMN_ORDER "column_order"
+#define MUIOPTION_COLUMN_SHOWN "column_shown"
+#define MUIOPTION_SPLITTERS "splitters"
+#define MUIOPTION_SORT_COLUMN "sort_column"
+#define MUIOPTION_SORT_REVERSED "sort_reversed"
+#define MUIOPTION_ICONS_DIRECTORY "icons_directory"
+#define MUIOPTION_BACKGROUND_DIRECTORY "background_directory"
+#define MUIOPTION_DATS_DIRECTORY "dats_directory"
+#define MUIOPTION_UI_KEY_UP "ui_key_up"
+#define MUIOPTION_UI_KEY_DOWN "ui_key_down"
+#define MUIOPTION_UI_KEY_LEFT "ui_key_left"
+#define MUIOPTION_UI_KEY_RIGHT "ui_key_right"
+#define MUIOPTION_UI_KEY_START "ui_key_start"
+#define MUIOPTION_UI_KEY_PGUP "ui_key_pgup"
+#define MUIOPTION_UI_KEY_PGDWN "ui_key_pgdwn"
+#define MUIOPTION_UI_KEY_HOME "ui_key_home"
+#define MUIOPTION_UI_KEY_END "ui_key_end"
+#define MUIOPTION_UI_KEY_SS_CHANGE "ui_key_ss_change"
+#define MUIOPTION_UI_KEY_HISTORY_UP "ui_key_history_up"
+#define MUIOPTION_UI_KEY_HISTORY_DOWN "ui_key_history_down"
+#define MUIOPTION_UI_KEY_CONTEXT_FILTERS "ui_key_context_filters"
+#define MUIOPTION_UI_KEY_SELECT_RANDOM "ui_key_select_random"
+#define MUIOPTION_UI_KEY_GAME_AUDIT "ui_key_game_audit"
+#define MUIOPTION_UI_KEY_GAME_PROPERTIES "ui_key_game_properties"
+#define MUIOPTION_UI_KEY_HELP_CONTENTS "ui_key_help_contents"
+#define MUIOPTION_UI_KEY_UPDATE_GAMELIST "ui_key_update_gamelist"
+#define MUIOPTION_UI_KEY_VIEW_FOLDERS "ui_key_view_folders"
+#define MUIOPTION_UI_KEY_VIEW_FULLSCREEN "ui_key_view_fullscreen"
+#define MUIOPTION_UI_KEY_VIEW_PAGETAB "ui_key_view_pagetab"
+#define MUIOPTION_UI_KEY_VIEW_PICTURE_AREA "ui_key_view_picture_area"
+#define MUIOPTION_UI_KEY_VIEW_STATUS "ui_key_view_status"
+#define MUIOPTION_UI_KEY_VIEW_TOOLBARS "ui_key_view_toolbars"
+#define MUIOPTION_UI_KEY_VIEW_TAB_CABINET "ui_key_view_tab_cabinet"
+#define MUIOPTION_UI_KEY_VIEW_TAB_CPANEL "ui_key_view_tab_cpanel"
+#define MUIOPTION_UI_KEY_VIEW_TAB_FLYER "ui_key_view_tab_flyer"
+#define MUIOPTION_UI_KEY_VIEW_TAB_HISTORY "ui_key_view_tab_history"
+#define MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE "ui_key_view_tab_marquee"
+#define MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT "ui_key_view_tab_screenshot"
+#define MUIOPTION_UI_KEY_VIEW_TAB_TITLE "ui_key_view_tab_title"
+#define MUIOPTION_UI_KEY_VIEW_TAB_PCB "ui_key_view_tab_pcb"
+#define MUIOPTION_UI_KEY_QUIT "ui_key_quit"
+#define MUIOPTION_UI_JOY_UP "ui_joy_up"
+#define MUIOPTION_UI_JOY_DOWN "ui_joy_down"
+#define MUIOPTION_UI_JOY_LEFT "ui_joy_left"
+#define MUIOPTION_UI_JOY_RIGHT "ui_joy_right"
+#define MUIOPTION_UI_JOY_START "ui_joy_start"
+#define MUIOPTION_UI_JOY_PGUP "ui_joy_pgup"
+#define MUIOPTION_UI_JOY_PGDWN "ui_joy_pgdwn"
+#define MUIOPTION_UI_JOY_HOME "ui_joy_home"
+#define MUIOPTION_UI_JOY_END "ui_joy_end"
+#define MUIOPTION_UI_JOY_SS_CHANGE "ui_joy_ss_change"
+#define MUIOPTION_UI_JOY_HISTORY_UP "ui_joy_history_up"
+#define MUIOPTION_UI_JOY_HISTORY_DOWN "ui_joy_history_down"
+#define MUIOPTION_UI_JOY_EXEC "ui_joy_exec"
+#define MUIOPTION_EXEC_COMMAND "exec_command"
+#define MUIOPTION_EXEC_WAIT "exec_wait"
+#define MUIOPTION_HIDE_MOUSE "hide_mouse"
+#define MUIOPTION_FULL_SCREEN "full_screen"
+#define MUIOPTION_SHOW_SOFTWARE_SECTION "show_software_section"
+#define MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA "ui_key_view_software_area"
+
+#ifdef MESS
+#define MUIOPTION_DEFAULT_GAME "default_system"
+#define MUIDEFAULT_SELECTION "3do"
+#define MUIDEFAULT_SPLITTERS "152,310,468"
+#else
+#define MUIOPTION_DEFAULT_GAME "default_machine"
+#define MUIDEFAULT_SELECTION "puckman"
+#define MUIDEFAULT_SPLITTERS "152,362"
+#endif
+
+#define MUIOPTION_VERSION "version"
+
+#define MESSUI_SL_COLUMN_SHOWN "sl_column_shown"
+#define MESSUI_SL_COLUMN_WIDTHS "sl_column_widths"
+#define MESSUI_SL_COLUMN_ORDER "sl_column_order"
+#define MESSUI_SL_SORT_REVERSED "sl_sort_reversed"
+#define MESSUI_SL_SORT_COLUMN "sl_sort_column"
+#define MESSUI_SW_COLUMN_SHOWN "sw_column_shown"
+#define MESSUI_SW_COLUMN_WIDTHS "sw_column_widths"
+#define MESSUI_SW_COLUMN_ORDER "sw_column_order"
+#define MESSUI_SW_SORT_REVERSED "sw_sort_reversed"
+#define MESSUI_SW_SORT_COLUMN "sw_sort_column"
+#define MESSUI_SOFTWARE_TAB "current_software_tab"
+#define MESSUI_SLPATH "slpath"
+
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+ /***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+static mame_options mameopts; // core options
+static ui_options mewui; // ui.ini
+static winui_options settings; // mameui.ini
+
+static windows_options global; // Global 'default' options
+
+static game_options game_opts;
+
+// UI options in MAMEui.ini
+const options_entry winui_options::s_option_entries[] =
+{
+ // UI options
+ { NULL, NULL, OPTION_HEADER, "APPLICATION OPTIONS" },
+ { MUIOPTION_VERSION, "", OPTION_STRING, NULL },
+ { NULL, NULL, OPTION_HEADER, "DISPLAY STATE OPTIONS" },
+ { MUIOPTION_DEFAULT_GAME, MUIDEFAULT_SELECTION, OPTION_STRING, NULL },
+ { MUIOPTION_DEFAULT_FOLDER_ID, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_SHOW_IMAGE_SECTION, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_FULL_SCREEN, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_CURRENT_TAB, "0", OPTION_STRING, NULL },
+ { MESSUI_SOFTWARE_TAB, "0", OPTION_STRING, NULL },
+ { MUIOPTION_SHOW_TOOLBAR, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_SHOW_STATUS_BAR, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_HIDE_FOLDERS, "", OPTION_STRING, NULL },
+ { MUIOPTION_SHOW_FOLDER_SECTION, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_SHOW_TABS, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_HIDE_TABS, "marquee, title, cpanel, pcb, history", OPTION_STRING, NULL },
+ { MUIOPTION_HISTORY_TAB, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_SHOW_SOFTWARE_SECTION, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_WINDOW_X, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_WINDOW_Y, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_WINDOW_WIDTH, "800", OPTION_INTEGER, NULL },
+ { MUIOPTION_WINDOW_HEIGHT, "600", OPTION_INTEGER, NULL },
+ { MUIOPTION_WINDOW_STATE, "1", OPTION_INTEGER, NULL },
+ { MUIOPTION_TEXT_COLOR, "-1", OPTION_INTEGER, NULL },
+ { MUIOPTION_CLONE_COLOR, "-1", OPTION_INTEGER, NULL },
+ { MUIOPTION_CUSTOM_COLOR, "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", OPTION_STRING, NULL },
+ /* ListMode needs to be before ColumnWidths settings */
+ { MUIOPTION_LIST_MODE, "5", OPTION_INTEGER, NULL },
+ { MUIOPTION_SPLITTERS, MUIDEFAULT_SPLITTERS, OPTION_STRING, NULL },
+ { MUIOPTION_LIST_FONT, "-8,0,0,0,400,0,0,0,0,0,0,0,MS Sans Serif", OPTION_STRING, NULL },
+ { MUIOPTION_COLUMN_WIDTHS, "185,78,84,84,64,88,74,108,60,144,84,40,40", OPTION_STRING, NULL },
+ { MUIOPTION_COLUMN_ORDER, "0,1,2,3,4,5,6,7,8,9,10,11,12", OPTION_STRING, NULL },
+ { MUIOPTION_COLUMN_SHOWN, "1,1,1,1,1,1,1,1,1,1,1,1,0", OPTION_STRING, NULL },
+ { MESSUI_SL_COLUMN_WIDTHS, "100,75,223,46,120,120", OPTION_STRING, NULL },
+ { MESSUI_SL_COLUMN_ORDER, "0,1,2,3,4,5", OPTION_STRING, NULL }, // order of columns
+ { MESSUI_SL_COLUMN_SHOWN, "1,1,1,1,1,1", OPTION_STRING, NULL }, // 0=hide,1=show
+ { MESSUI_SL_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
+ { MESSUI_SL_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
+ { MESSUI_SW_COLUMN_WIDTHS, "400", OPTION_STRING, NULL },
+ { MESSUI_SW_COLUMN_ORDER, "0", OPTION_STRING, NULL }, // 1= dummy column
+ { MESSUI_SW_COLUMN_SHOWN, "1", OPTION_STRING, NULL }, // 0=don't show it
+ { MESSUI_SW_SORT_COLUMN, "0", OPTION_INTEGER, NULL },
+ { MESSUI_SW_SORT_REVERSED, "0", OPTION_BOOLEAN, NULL },
+ { NULL, NULL, OPTION_HEADER, "INTERFACE OPTIONS" },
+ { MUIOPTION_CHECK_GAME, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_JOYSTICK_IN_INTERFACE, "1", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_KEYBOARD_IN_INTERFACE, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_HIDE_MOUSE, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_INHERIT_FILTER, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_OFFSET_CLONES, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_STRETCH_SCREENSHOT_LARGER, "0", OPTION_BOOLEAN, NULL },
+ { MUIOPTION_CYCLE_SCREENSHOT, "0", OPTION_INTEGER, NULL },
+ { MUIOPTION_SCREENSHOT_BORDER_SIZE, "11", OPTION_INTEGER, NULL },
+ { MUIOPTION_SCREENSHOT_BORDER_COLOR, "-1", OPTION_INTEGER, NULL },
+ { MUIOPTION_EXEC_COMMAND, "", OPTION_STRING, NULL },
+ { MUIOPTION_EXEC_WAIT, "0", OPTION_INTEGER, NULL },
+ { NULL, NULL, OPTION_HEADER, "SEARCH PATH OPTIONS" },
+ { MUIOPTION_BACKGROUND_DIRECTORY, "bkground", OPTION_STRING, NULL },
+ { MUIOPTION_ICONS_DIRECTORY, "icons", OPTION_STRING, NULL },
+ { MUIOPTION_DATS_DIRECTORY, "dats", OPTION_STRING, NULL },
+ { MESSUI_SLPATH, "software", OPTION_STRING, NULL },
+ { NULL, NULL, OPTION_HEADER, "NAVIGATION KEY CODES" },
+ { MUIOPTION_UI_KEY_UP, "KEYCODE_UP", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_DOWN, "KEYCODE_DOWN", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_LEFT, "KEYCODE_LEFT", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_RIGHT, "KEYCODE_RIGHT", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_START, "KEYCODE_ENTER NOT KEYCODE_LALT", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_PGUP, "KEYCODE_PGUP", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_PGDWN, "KEYCODE_PGDN", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_HOME, "KEYCODE_HOME", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_END, "KEYCODE_END", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_SS_CHANGE, "KEYCODE_INSERT", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_HISTORY_UP, "KEYCODE_DEL", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_HISTORY_DOWN, "KEYCODE_LALT KEYCODE_0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_CONTEXT_FILTERS, "KEYCODE_LCONTROL KEYCODE_F", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_SELECT_RANDOM, "KEYCODE_LCONTROL KEYCODE_R", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_GAME_AUDIT, "KEYCODE_LALT KEYCODE_A", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_GAME_PROPERTIES, "KEYCODE_LALT KEYCODE_ENTER", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_HELP_CONTENTS, "KEYCODE_F1", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_UPDATE_GAMELIST, "KEYCODE_F5", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_FOLDERS, "KEYCODE_LALT KEYCODE_D", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_FULLSCREEN, "KEYCODE_F11", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_PAGETAB, "KEYCODE_LALT KEYCODE_B", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_PICTURE_AREA, "KEYCODE_LALT KEYCODE_P", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA, "KEYCODE_LALT KEYCODE_W", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_STATUS, "KEYCODE_LALT KEYCODE_S", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TOOLBARS, "KEYCODE_LALT KEYCODE_T", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_CABINET, "KEYCODE_LALT KEYCODE_3", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_CPANEL, "KEYCODE_LALT KEYCODE_6", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_FLYER, "KEYCODE_LALT KEYCODE_2", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_HISTORY, "KEYCODE_LALT KEYCODE_8", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE, "KEYCODE_LALT KEYCODE_4", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT, "KEYCODE_LALT KEYCODE_1", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_TITLE, "KEYCODE_LALT KEYCODE_5", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_VIEW_TAB_PCB, "KEYCODE_LALT KEYCODE_7", OPTION_STRING, NULL },
+ { MUIOPTION_UI_KEY_QUIT, "KEYCODE_LALT KEYCODE_Q", OPTION_STRING, NULL },
+ { NULL, NULL, OPTION_HEADER, "NAVIGATION JOYSTICK CODES" },
+ { MUIOPTION_UI_JOY_UP, "1,1,1,1", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_DOWN, "1,1,1,2", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_LEFT, "1,1,2,1", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_RIGHT, "1,1,2,2", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_START, "1,0,1,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_PGUP, "2,1,2,1", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_PGDWN, "2,1,2,2", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_HOME, "0,0,0,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_END, "0,0,0,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_SS_CHANGE, "2,0,3,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_HISTORY_UP, "2,0,4,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_HISTORY_DOWN, "2,0,1,0", OPTION_STRING, NULL },
+ { MUIOPTION_UI_JOY_EXEC, "0,0,0,0", OPTION_STRING, NULL },
+ { NULL }
+};
+
+#if 0
+// no longer used, but keep in case we need to add more per-game options in the future
+static const options_entry perGameOptions[] =
+{
+ // per game options in messui.ini - transferred to swpath
+ { "_extra_software", "", OPTION_STRING, NULL },
+ { NULL }
+};
+#endif
+
+static const options_entry filterOptions[] =
+{
+ // filters
+ { "_filters", "0", OPTION_INTEGER, NULL },
+ { NULL }
+};
+
+
+
+// Screen shot Page tab control text
+// these must match the order of the options flags in options.h
+// (TAB_...)
+static const char *const image_tabs_long_name[MAX_TAB_TYPES] =
+{
+ "Snapshot",
+ "Flyer",
+ "Cabinet",
+ "Marquee",
+ "Title",
+ "Control Panel",
+ "PCB",
+ "History",
+};
+
+static const char *const image_tabs_short_name[MAX_TAB_TYPES] =
+{
+ "snapshot",
+ "flyer",
+ "cabinet",
+ "marquee",
+ "title",
+ "cpanel",
+ "pcb",
+ "history"
+};
+
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+winui_options::winui_options()
+{
+ add_entries(s_option_entries);
+}
+
+void CreateGameOptions(windows_options &opts, OPTIONS_TYPE opt_type, int driver_index)
+{
+ if (driver_index >= 0)
+ mameopts.set_system_name(opts, driver_list::driver(driver_index).name);
+}
+
+BOOL OptionsInit()
+{
+#if 0
+// keep in case we need per-game options in the future
+ // set up per game options
+ {
+ char buffer[128];
+ int i, j;
+ int game_option_count = 0;
+
+ while(perGameOptions[game_option_count].name)
+ game_option_count++;
+
+ for (i = 0; i < driver_list::total(); i++)
+ {
+ for (j = 0; j < game_option_count; j++)
+ {
+ options_entry entry[2] = { { 0 }, { 0 } };
+ snprintf(buffer, ARRAY_LENGTH(buffer), "%s%s", driver_list::driver(i).name, perGameOptions[j].name);
+
+ entry[0].name = core_strdup(buffer);
+ entry[0].defvalue = perGameOptions[j].defvalue;
+ entry[0].flags = perGameOptions[j].flags;
+ entry[0].description = perGameOptions[j].description;
+ settings.add_entries(entry);
+ }
+ }
+ }
+#endif
+
+ game_opts.add_entries();
+ // set up global options
+ CreateGameOptions(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+ // now load the options and settings
+ LoadOptionsAndSettings();
+
+ return TRUE;
+
+}
+
+void OptionsExit(void)
+{
+}
+
+winui_options & MameUISettings(void)
+{
+ return settings;
+}
+
+windows_options & MameUIGlobal(void)
+{
+ return global;
+}
+
+// Restore ui settings to factory
+void ResetGUI(void)
+{
+ settings.revert(OPTION_PRIORITY_NORMAL);
+ // Save the new MAMEui.ini
+ SaveOptions();
+}
+
+const char * GetImageTabLongName(int tab_index)
+{
+ assert(tab_index >= 0);
+ assert(tab_index < ARRAY_LENGTH(image_tabs_long_name));
+ return image_tabs_long_name[tab_index];
+}
+
+const char * GetImageTabShortName(int tab_index)
+{
+ assert(tab_index >= 0);
+ assert(tab_index < ARRAY_LENGTH(image_tabs_short_name));
+ return image_tabs_short_name[tab_index];
+}
+
+//============================================================
+// OPTIONS WRAPPERS
+//============================================================
+
+static COLORREF options_get_color(winui_options &opts, const char *name)
+{
+ const char *value_str;
+ unsigned int r = 0, g = 0, b = 0;
+ COLORREF value;
+
+ value_str = opts.value(name);
+
+ if (sscanf(value_str, "%u,%u,%u", &r, &g, &b) == 3)
+ value = RGB(r,g,b);
+ else
+ value = (COLORREF) - 1;
+ return value;
+}
+
+static void options_set_color(winui_options &opts, const char *name, COLORREF value)
+{
+ char value_str[32];
+
+ if (value == (COLORREF) -1)
+ {
+ snprintf(value_str, ARRAY_LENGTH(value_str), "%d", (int) value);
+ }
+ else
+ {
+ snprintf(value_str, ARRAY_LENGTH(value_str), "%d,%d,%d", (((int) value) >> 0) & 0xFF, (((int) value) >> 8) & 0xFF, (((int) value) >> 16) & 0xFF);
+ }
+ std::string error_string;
+ opts.set_value(name, value_str, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+static COLORREF options_get_color_default(winui_options &opts, const char *name, int default_color)
+{
+ COLORREF value = options_get_color(opts, name);
+ if (value == (COLORREF) -1)
+ value = GetSysColor(default_color);
+ return value;
+}
+
+static void options_set_color_default(winui_options &opts, const char *name, COLORREF value, int default_color)
+{
+ if (value == GetSysColor(default_color))
+ options_set_color(settings, name, (COLORREF) -1);
+ else
+ options_set_color(settings, name, value);
+}
+
+static input_seq *options_get_input_seq(winui_options &opts, const char *name)
+{
+/* static input_seq seq;
+ const char *seq_string;
+
+ seq_string = opts.value( name);
+ input_seq_from_tokens(NULL, seq_string, &seq); // HACK
+ return &seq;*/
+ return NULL;
+}
+
+
+
+//============================================================
+// OPTIONS CALLS
+//============================================================
+
+void SetViewMode(int val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_LIST_MODE, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetViewMode(void)
+{
+ return settings.int_value(MUIOPTION_LIST_MODE);
+}
+
+void SetGameCheck(BOOL game_check)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_CHECK_GAME, game_check, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetGameCheck(void)
+{
+ return settings.bool_value(MUIOPTION_CHECK_GAME);
+}
+
+void SetJoyGUI(BOOL use_joygui)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_JOYSTICK_IN_INTERFACE, use_joygui, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetJoyGUI(void)
+{
+ return settings.bool_value( MUIOPTION_JOYSTICK_IN_INTERFACE);
+}
+
+void SetKeyGUI(BOOL use_keygui)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_KEYBOARD_IN_INTERFACE, use_keygui, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetKeyGUI(void)
+{
+ return settings.bool_value( MUIOPTION_KEYBOARD_IN_INTERFACE);
+}
+
+void SetCycleScreenshot(int cycle_screenshot)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_CYCLE_SCREENSHOT, cycle_screenshot, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetCycleScreenshot(void)
+{
+ return settings.int_value(MUIOPTION_CYCLE_SCREENSHOT);
+}
+
+void SetStretchScreenShotLarger(BOOL stretch)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_STRETCH_SCREENSHOT_LARGER, stretch, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetStretchScreenShotLarger(void)
+{
+ return settings.bool_value( MUIOPTION_STRETCH_SCREENSHOT_LARGER);
+}
+
+void SetScreenshotBorderSize(int size)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SCREENSHOT_BORDER_SIZE, size, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetScreenshotBorderSize(void)
+{
+ return settings.int_value(MUIOPTION_SCREENSHOT_BORDER_SIZE);
+}
+
+void SetScreenshotBorderColor(COLORREF uColor)
+{
+ options_set_color_default(settings, MUIOPTION_SCREENSHOT_BORDER_COLOR, uColor, COLOR_3DFACE);
+}
+
+COLORREF GetScreenshotBorderColor(void)
+{
+ return options_get_color_default(settings, MUIOPTION_SCREENSHOT_BORDER_COLOR, COLOR_3DFACE);
+}
+
+void SetFilterInherit(BOOL inherit)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_INHERIT_FILTER, inherit, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetFilterInherit(void)
+{
+ return settings.bool_value( MUIOPTION_INHERIT_FILTER);
+}
+
+void SetOffsetClones(BOOL offset)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_OFFSET_CLONES, offset, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetOffsetClones(void)
+{
+ return settings.bool_value( MUIOPTION_OFFSET_CLONES);
+}
+
+void SetSavedFolderID(UINT val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_DEFAULT_FOLDER_ID, (int) val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+UINT GetSavedFolderID(void)
+{
+ return (UINT) settings.int_value(MUIOPTION_DEFAULT_FOLDER_ID);
+}
+
+void SetShowScreenShot(BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_IMAGE_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowScreenShot(void)
+{
+ return settings.bool_value(MUIOPTION_SHOW_IMAGE_SECTION);
+}
+
+void SetShowSoftware(BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_SOFTWARE_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowSoftware(void)
+{
+ return settings.bool_value(MUIOPTION_SHOW_SOFTWARE_SECTION);
+}
+
+void SetShowFolderList(BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_FOLDER_SECTION, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowFolderList(void)
+{
+ return settings.bool_value(MUIOPTION_SHOW_FOLDER_SECTION);
+}
+
+static void GetsShowFolderFlags(LPBITS bits)
+{
+ char s[2000];
+ extern const FOLDERDATA g_folderData[];
+ char *token;
+
+ snprintf(s, ARRAY_LENGTH(s), "%s", settings.value( MUIOPTION_HIDE_FOLDERS));
+
+ SetAllBits(bits, TRUE);
+
+ token = strtok(s,", \t");
+ int j;
+ while (token)
+ {
+ for (j=0; g_folderData[j].m_lpTitle; j++)
+ {
+ if (strcmp(g_folderData[j].short_name,token) == 0)
+ {
+ ClearBit(bits, g_folderData[j].m_nFolderId);
+ break;
+ }
+ }
+ token = strtok(NULL,", \t");
+ }
+}
+
+BOOL GetShowFolder(int folder)
+{
+ LPBITS show_folder_flags = NewBits(MAX_FOLDERS);
+ GetsShowFolderFlags(show_folder_flags);
+ BOOL result = TestBit(show_folder_flags, folder);
+ DeleteBits(show_folder_flags);
+ return result;
+}
+
+void SetShowFolder(int folder,BOOL show)
+{
+ LPBITS show_folder_flags = NewBits(MAX_FOLDERS);
+ int i = 0, j = 0;
+ int num_saved = 0;
+ char str[10000];
+ extern const FOLDERDATA g_folderData[];
+
+ GetsShowFolderFlags(show_folder_flags);
+
+ if (show)
+ SetBit(show_folder_flags, folder);
+ else
+ ClearBit(show_folder_flags, folder);
+
+ strcpy(str, "");
+
+ // we save the ones that are NOT displayed, so we can add new ones
+ // and upgraders will see them
+ for (i=0; i<MAX_FOLDERS; i++)
+ {
+ if (TestBit(show_folder_flags, i) == FALSE)
+ {
+ if (num_saved != 0)
+ strcat(str,", ");
+
+ for (j=0; g_folderData[j].m_lpTitle; j++)
+ {
+ if (g_folderData[j].m_nFolderId == i)
+ {
+ strcat(str,g_folderData[j].short_name);
+ num_saved++;
+ break;
+ }
+ }
+ }
+ }
+ std::string error_string;
+ settings.set_value(MUIOPTION_HIDE_FOLDERS, str, OPTION_PRIORITY_CMDLINE,error_string);
+ DeleteBits(show_folder_flags);
+}
+
+void SetShowStatusBar(BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_STATUS_BAR, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowStatusBar(void)
+{
+ return settings.bool_value( MUIOPTION_SHOW_STATUS_BAR);
+}
+
+void SetShowTabCtrl (BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_TABS, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowTabCtrl (void)
+{
+ return settings.bool_value( MUIOPTION_SHOW_TABS);
+}
+
+void SetShowToolBar(BOOL val)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SHOW_TOOLBAR, val, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetShowToolBar(void)
+{
+ return settings.bool_value( MUIOPTION_SHOW_TOOLBAR);
+}
+
+void SetCurrentTab(const char *shortname)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_CURRENT_TAB, shortname, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char *GetCurrentTab(void)
+{
+ return settings.value( MUIOPTION_CURRENT_TAB);
+}
+
+void SetDefaultGame(const char *name)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_DEFAULT_GAME, name, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char *GetDefaultGame(void)
+{
+ return settings.value( MUIOPTION_DEFAULT_GAME);
+}
+
+void SetWindowArea(const AREA *area)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_WINDOW_X, area->x, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.set_value(MUIOPTION_WINDOW_Y, area->y, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.set_value(MUIOPTION_WINDOW_WIDTH, area->width, OPTION_PRIORITY_CMDLINE,error_string);
+ settings.set_value(MUIOPTION_WINDOW_HEIGHT, area->height, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetWindowArea(AREA *area)
+{
+ area->x = settings.int_value(MUIOPTION_WINDOW_X);
+ area->y = settings.int_value(MUIOPTION_WINDOW_Y);
+ area->width = settings.int_value(MUIOPTION_WINDOW_WIDTH);
+ area->height = settings.int_value(MUIOPTION_WINDOW_HEIGHT);
+}
+
+void SetWindowState(UINT state)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_WINDOW_STATE, (int)state, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+UINT GetWindowState(void)
+{
+ return settings.int_value(MUIOPTION_WINDOW_STATE);
+}
+
+void SetCustomColor(int iIndex, COLORREF uColor)
+{
+ const char *custom_color_string;
+ COLORREF custom_color[256];
+ char buffer[80];
+
+ custom_color_string = settings.value( MUIOPTION_CUSTOM_COLOR);
+ CusColorDecodeString(custom_color_string, custom_color);
+
+ custom_color[iIndex] = uColor;
+
+ CusColorEncodeString(custom_color, buffer);
+ std::string error_string;
+ settings.set_value(MUIOPTION_CUSTOM_COLOR, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+COLORREF GetCustomColor(int iIndex)
+{
+ const char *custom_color_string;
+ COLORREF custom_color[256];
+
+ custom_color_string = settings.value( MUIOPTION_CUSTOM_COLOR);
+ CusColorDecodeString(custom_color_string, custom_color);
+
+ if (custom_color[iIndex] == (COLORREF)-1)
+ return (COLORREF)RGB(0,0,0);
+
+ return custom_color[iIndex];
+}
+
+void SetListFont(const LOGFONT *font)
+{
+ char font_string[10000];
+ FontEncodeString(font, font_string);
+ std::string error_string;
+ settings.set_value(MUIOPTION_LIST_FONT, font_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetListFont(LOGFONT *font)
+{
+ const char *font_string = settings.value( MUIOPTION_LIST_FONT);
+ FontDecodeString(font_string, font);
+}
+
+void SetListFontColor(COLORREF uColor)
+{
+ options_set_color_default(settings, MUIOPTION_TEXT_COLOR, uColor, COLOR_WINDOWTEXT);
+}
+
+COLORREF GetListFontColor(void)
+{
+ return options_get_color_default(settings, MUIOPTION_TEXT_COLOR, COLOR_WINDOWTEXT);
+}
+
+void SetListCloneColor(COLORREF uColor)
+{
+ options_set_color_default(settings, MUIOPTION_CLONE_COLOR, uColor, COLOR_WINDOWTEXT);
+}
+
+COLORREF GetListCloneColor(void)
+{
+ return options_get_color_default(settings, MUIOPTION_CLONE_COLOR, COLOR_WINDOWTEXT);
+}
+
+int GetShowTab(int tab)
+{
+ const char *show_tabs_string;
+ int show_tab_flags = 0;
+
+ show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
+ TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+ return (show_tab_flags & (1 << tab)) != 0;
+}
+
+void SetShowTab(int tab,BOOL show)
+{
+ const char *show_tabs_string;
+ int show_tab_flags = 0;
+ char buffer[10000];
+
+ show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
+ TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+
+ if (show)
+ show_tab_flags |= 1 << tab;
+ else
+ show_tab_flags &= ~(1 << tab);
+
+ TabFlagsEncodeString(show_tab_flags, buffer);
+ std::string error_string;
+ settings.set_value(MUIOPTION_HIDE_TABS, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+// don't delete the last one
+BOOL AllowedToSetShowTab(int tab,BOOL show)
+{
+ const char *show_tabs_string;
+ int show_tab_flags = 0;
+
+ if (show == TRUE)
+ return TRUE;
+
+ show_tabs_string = settings.value( MUIOPTION_HIDE_TABS);
+ TabFlagsDecodeString(show_tabs_string, &show_tab_flags);
+
+ show_tab_flags &= ~(1 << tab);
+ return show_tab_flags != 0;
+}
+
+int GetHistoryTab(void)
+{
+ return settings.int_value(MUIOPTION_HISTORY_TAB);
+}
+
+void SetHistoryTab(int tab, BOOL show)
+{
+ std::string error_string;
+ if (show)
+ settings.set_value(MUIOPTION_HISTORY_TAB, tab, OPTION_PRIORITY_CMDLINE,error_string);
+ else
+ settings.set_value(MUIOPTION_HISTORY_TAB, TAB_NONE, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void SetColumnWidths(int width[])
+{
+ char column_width_string[80];
+ ColumnEncodeStringWithCount(width, column_width_string, COLUMN_MAX);
+ std::string error_string;
+ settings.set_value(MUIOPTION_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetColumnWidths(int width[])
+{
+ const char *column_width_string;
+ column_width_string = settings.value(MUIOPTION_COLUMN_WIDTHS);
+ ColumnDecodeStringWithCount(column_width_string, width, COLUMN_MAX);
+}
+
+void SetSplitterPos(int splitterId, int pos)
+{
+ const char *splitter_string;
+ int *splitter;
+ char buffer[80];
+
+ if (splitterId < GetSplitterCount())
+ {
+ splitter_string = settings.value(MUIOPTION_SPLITTERS);
+ splitter = (int *) alloca(GetSplitterCount() * sizeof(*splitter));
+ SplitterDecodeString(splitter_string, splitter);
+
+ splitter[splitterId] = pos;
+
+ SplitterEncodeString(splitter, buffer);
+ std::string error_string;
+ settings.set_value(MUIOPTION_SPLITTERS, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+}
+
+int GetSplitterPos(int splitterId)
+{
+ const char *splitter_string;
+ int *splitter;
+
+ splitter_string = settings.value( MUIOPTION_SPLITTERS);
+ splitter = (int *) alloca(GetSplitterCount() * sizeof(*splitter));
+ SplitterDecodeString(splitter_string, splitter);
+
+ if (splitterId < GetSplitterCount())
+ return splitter[splitterId];
+
+ return -1; /* Error */
+}
+
+void SetColumnOrder(int order[])
+{
+ char column_order_string[80];
+ ColumnEncodeStringWithCount(order, column_order_string, COLUMN_MAX);
+ std::string error_string;
+ settings.set_value(MUIOPTION_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetColumnOrder(int order[])
+{
+ const char *column_order_string;
+ column_order_string = settings.value( MUIOPTION_COLUMN_ORDER);
+ ColumnDecodeStringWithCount(column_order_string, order, COLUMN_MAX);
+}
+
+void SetColumnShown(int shown[])
+{
+ char column_shown_string[80];
+ ColumnEncodeStringWithCount(shown, column_shown_string, COLUMN_MAX);
+ std::string error_string;
+ settings.set_value(MUIOPTION_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetColumnShown(int shown[])
+{
+ const char *column_shown_string;
+ column_shown_string = settings.value( MUIOPTION_COLUMN_SHOWN);
+ ColumnDecodeStringWithCount(column_shown_string, shown, COLUMN_MAX);
+}
+
+void SetSortColumn(int column)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetSortColumn(void)
+{
+ return settings.int_value(MUIOPTION_SORT_COLUMN);
+}
+
+void SetSortReverse(BOOL reverse)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetSortReverse(void)
+{
+ return settings.bool_value( MUIOPTION_SORT_REVERSED);
+}
+
+const char* GetLanguageUI(void)
+{
+ return global.value(OPTION_LANGUAGE);
+}
+
+bool GetEnablePlugins(void)
+{
+ return global.bool_value(OPTION_PLUGINS);
+}
+
+const char* GetPlugins(void)
+{
+ return global.value(OPTION_PLUGIN);
+}
+
+const char* GetRomDirs(void)
+{
+ return global.media_path();
+}
+
+void SetRomDirs(const char* paths)
+{
+ std::string error_string;
+ global.set_value(OPTION_MEDIAPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetHashDirs(void)
+{
+ return global.hash_path();
+}
+
+void SetHashDirs(const char* paths)
+{
+ std::string error_string;
+ global.set_value(OPTION_HASHPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetSampleDirs(void)
+{
+ return global.value(OPTION_SAMPLEPATH);
+}
+
+void SetSampleDirs(const char* paths)
+{
+ std::string error_string;
+ global.set_value(OPTION_SAMPLEPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char * GetIniDir(void)
+{
+ const char *ini_dir;
+ const char *s;
+
+ ini_dir = global.value(OPTION_INIPATH);
+ while((s = strchr(ini_dir, ';')) != NULL)
+ ini_dir = s + 1;
+
+ //ini_dir = "ini\0";
+ return ini_dir;
+
+}
+
+void SetIniDir(const char *path)
+{
+ std::string error_string;
+ global.set_value(OPTION_INIPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetCtrlrDir(void)
+{
+ return global.value(OPTION_CTRLRPATH);
+}
+
+void SetCtrlrDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_CTRLRPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetSWDir(void)
+{
+ return global.value(OPTION_SWPATH);
+}
+
+void SetSWDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_SWPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetCfgDir(void)
+{
+ return global.value(OPTION_CFG_DIRECTORY);
+}
+
+void SetCfgDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_CFG_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetNvramDir(void)
+{
+ return global.value(OPTION_NVRAM_DIRECTORY);
+}
+
+void SetNvramDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_NVRAM_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetInpDir(void)
+{
+ return global.value(OPTION_INPUT_DIRECTORY);
+}
+
+void SetInpDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_INPUT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetImgDir(void)
+{
+ return global.value(OPTION_SNAPSHOT_DIRECTORY);
+}
+
+void SetImgDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_SNAPSHOT_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetStateDir(void)
+{
+ return global.value(OPTION_STATE_DIRECTORY);
+}
+
+void SetStateDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_STATE_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetArtDir(void)
+{
+ return global.value(OPTION_ARTPATH);
+}
+
+void SetArtDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_ARTPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetFontDir(void)
+{
+ return global.value(OPTION_FONTPATH);
+}
+
+void SetFontDir(const char* paths)
+{
+ std::string error_string;
+ global.set_value(OPTION_FONTPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetCrosshairDir(void)
+{
+ return global.value(OPTION_CROSSHAIRPATH);
+}
+
+void SetCrosshairDir(const char* paths)
+{
+ std::string error_string;
+ global.set_value(OPTION_CROSSHAIRPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetFlyerDir(void)
+{
+ return mewui.value(OPTION_FLYERS_PATH);
+}
+
+void SetFlyerDir(const char* path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_FLYERS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetCabinetDir(void)
+{
+ return mewui.value(OPTION_CABINETS_PATH);
+}
+
+void SetCabinetDir(const char* path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_CABINETS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetMarqueeDir(void)
+{
+ return mewui.value(OPTION_MARQUEES_PATH);
+}
+
+void SetMarqueeDir(const char* path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_MARQUEES_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetTitlesDir(void)
+{
+ return mewui.value(OPTION_TITLES_PATH);
+}
+
+void SetTitlesDir(const char* path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_TITLES_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char * GetControlPanelDir(void)
+{
+ return mewui.value(OPTION_CPANELS_PATH);
+}
+
+void SetControlPanelDir(const char *path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_CPANELS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char * GetPcbDir(void)
+{
+ return mewui.value(OPTION_PCBS_PATH);
+}
+
+void SetPcbDir(const char *path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_PCBS_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetPluginsDir(void)
+{
+ return global.value(OPTION_PLUGINSPATH);
+}
+
+void SetPluginsDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_PLUGINSPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetLangDir(void)
+{
+ return global.value(OPTION_LANGUAGEPATH);
+}
+
+void SetLangDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_LANGUAGEPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char * GetDiffDir(void)
+{
+ return global.value(OPTION_DIFF_DIRECTORY);
+}
+
+void SetDiffDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_DIFF_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetIconsDir(void)
+{
+ return settings.value( MUIOPTION_ICONS_DIRECTORY);
+}
+
+void SetIconsDir(const char* path)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_ICONS_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetBgDir (void)
+{
+ return settings.value( MUIOPTION_BACKGROUND_DIRECTORY);
+}
+
+void SetBgDir (const char* path)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_BACKGROUND_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char * GetDatsDir(void)
+{
+ const char* t = settings.value( MUIOPTION_DATS_DIRECTORY);
+ const char* t1 = strtok((char*)t, ";");
+ if (t1)
+ return t1;
+ else
+ return t;
+ //return settings.value( MUIOPTION_DATS_DIRECTORY);
+ //return mewui.value(OPTION_HISTORY_PATH);
+}
+
+void SetDatsDir(const char *path)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_DATS_DIRECTORY, path, OPTION_PRIORITY_CMDLINE,error_string);
+ //mewui.set_value(OPTION_HISTORY_PATH, path, OPTION_PRIORITY_CMDLINE, error_string);
+}
+
+const char* GetFolderDir(void)
+{
+ return mewui.value(OPTION_EXTRAINI_PATH);
+}
+
+void SetFolderDir(const char* path)
+{
+ std::string error_string;
+ mewui.set_value(OPTION_EXTRAINI_PATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetCheatDir(void)
+{
+ return global.value(OPTION_CHEATPATH);
+}
+
+void SetCheatDir(const char* path)
+{
+ std::string error_string;
+ global.set_value(OPTION_CHEATPATH, path, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char* GetSnapName(void)
+{
+ return global.value(OPTION_SNAPNAME);
+}
+
+void SetSnapName(const char* pattern)
+{
+ std::string error_string;
+ global.set_value(OPTION_SNAPNAME, pattern, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void ResetGameOptions(int driver_index)
+{
+ assert(0 <= driver_index && driver_index < driver_list::total());
+
+ //save_options(NULL, OPTIONS_GAME, driver_index);
+}
+
+void ResetGameDefaults(void)
+{
+ // Walk the global settings and reset everything to defaults;
+ ResetToDefaults(global, OPTION_PRIORITY_CMDLINE);
+ save_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+}
+
+/*
+ * Reset all game, vector and source options to defaults.
+ * No reason to reboot if this is done.
+ */
+void ResetAllGameOptions(void)
+{
+ for (int i = 0; i < driver_list::total(); i++)
+ ResetGameOptions(i);
+}
+
+int GetRomAuditResults(int driver_index)
+{
+ return game_opts.rom(driver_index);
+}
+
+void SetRomAuditResults(int driver_index, int audit_results)
+{
+ game_opts.rom(driver_index, audit_results);
+}
+
+int GetSampleAuditResults(int driver_index)
+{
+ return game_opts.sample(driver_index);
+}
+
+void SetSampleAuditResults(int driver_index, int audit_results)
+{
+ game_opts.sample(driver_index, audit_results);
+}
+
+static void IncrementPlayVariable(int driver_index, const char *play_variable, int increment)
+{
+ int count = 0;
+
+ if (strcmp(play_variable, "count") == 0)
+ {
+ count = game_opts.play_count(driver_index);
+ game_opts.play_count(driver_index, count + increment);
+ }
+ else if (strcmp(play_variable, "time") == 0)
+ {
+ count = game_opts.play_time(driver_index);
+ game_opts.play_time(driver_index, count + increment);
+ }
+}
+
+void IncrementPlayCount(int driver_index)
+{
+ IncrementPlayVariable(driver_index, "count", 1);
+}
+
+int GetPlayCount(int driver_index)
+{
+ return game_opts.play_count(driver_index);
+}
+
+static void ResetPlayVariable(int driver_index, const char *play_variable)
+{
+ if (driver_index < 0)
+ {
+ /* all games */
+ for (int i = 0; i< driver_list::total(); i++)
+ {
+ ResetPlayVariable(i, play_variable);
+ }
+ }
+ else
+ {
+ if (strcmp(play_variable, "count") == 0)
+ game_opts.play_count(driver_index, 0);
+ else if (strcmp(play_variable, "time") == 0)
+ game_opts.play_time(driver_index, 0);
+ }
+}
+
+void ResetPlayCount(int driver_index)
+{
+ ResetPlayVariable(driver_index, "count");
+}
+
+void ResetPlayTime(int driver_index)
+{
+ ResetPlayVariable(driver_index, "time");
+}
+
+int GetPlayTime(int driver_index)
+{
+ return game_opts.play_time(driver_index);
+}
+
+void IncrementPlayTime(int driver_index,int playtime)
+{
+ IncrementPlayVariable(driver_index, "time", playtime);
+}
+
+void GetTextPlayTime(int driver_index, char *buf)
+{
+
+ assert(0 <= driver_index && driver_index < driver_list::total());
+ int temp = GetPlayTime(driver_index);
+ int hour = temp / 3600;
+ temp = temp - 3600*hour;
+ int minute = temp / 60; //Calc Minutes
+ int second = temp - 60*minute;
+
+ if (hour == 0)
+ sprintf(buf, "%d:%02d", minute, second );
+ else
+ sprintf(buf, "%d:%02d:%02d", hour, minute, second );
+}
+
+input_seq* Get_ui_key_up(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_UP);
+}
+
+input_seq* Get_ui_key_down(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_DOWN);
+}
+
+input_seq* Get_ui_key_left(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_LEFT);
+}
+
+input_seq* Get_ui_key_right(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_RIGHT);
+}
+
+input_seq* Get_ui_key_start(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_START);
+}
+
+input_seq* Get_ui_key_pgup(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_PGUP);
+}
+
+input_seq* Get_ui_key_pgdwn(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_PGDWN);
+}
+
+input_seq* Get_ui_key_home(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_HOME);
+}
+
+input_seq* Get_ui_key_end(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_END);
+}
+
+input_seq* Get_ui_key_ss_change(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_SS_CHANGE);
+}
+
+input_seq* Get_ui_key_history_up(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_HISTORY_UP);
+}
+
+input_seq* Get_ui_key_history_down(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_HISTORY_DOWN);
+}
+
+input_seq* Get_ui_key_context_filters(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_CONTEXT_FILTERS);
+}
+
+input_seq* Get_ui_key_select_random(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_SELECT_RANDOM);
+}
+
+input_seq* Get_ui_key_game_audit(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_GAME_AUDIT);
+}
+
+input_seq* Get_ui_key_game_properties(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_GAME_PROPERTIES);
+}
+
+input_seq* Get_ui_key_help_contents(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_HELP_CONTENTS);
+}
+
+input_seq* Get_ui_key_update_gamelist(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_UPDATE_GAMELIST);
+}
+
+input_seq* Get_ui_key_view_folders(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_FOLDERS);
+}
+
+input_seq* Get_ui_key_view_fullscreen(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_FULLSCREEN);
+}
+
+input_seq* Get_ui_key_view_pagetab(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_PAGETAB);
+}
+
+input_seq* Get_ui_key_view_picture_area(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_PICTURE_AREA);
+}
+
+input_seq* Get_ui_key_view_software_area(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_SOFTWARE_AREA);
+}
+
+input_seq* Get_ui_key_view_status(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_STATUS);
+}
+
+input_seq* Get_ui_key_view_toolbars(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TOOLBARS);
+}
+
+input_seq* Get_ui_key_view_tab_cabinet(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_CABINET);
+}
+
+input_seq* Get_ui_key_view_tab_cpanel(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_CPANEL);
+}
+
+input_seq* Get_ui_key_view_tab_flyer(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_FLYER);
+}
+
+input_seq* Get_ui_key_view_tab_history(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_HISTORY);
+}
+
+input_seq* Get_ui_key_view_tab_marquee(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_MARQUEE);
+}
+
+input_seq* Get_ui_key_view_tab_screenshot(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_SCREENSHOT);
+}
+
+input_seq* Get_ui_key_view_tab_title(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_TITLE);
+}
+
+input_seq* Get_ui_key_view_tab_pcb(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_VIEW_TAB_PCB);
+}
+
+input_seq* Get_ui_key_quit(void)
+{
+ return options_get_input_seq(settings, MUIOPTION_UI_KEY_QUIT);
+}
+
+static int GetUIJoy(const char *option_name, int joycodeIndex)
+{
+ const char *joycodes_string;
+ int joycodes[4];
+
+ assert(0 <= joycodeIndex && joycodeIndex < 4);
+ joycodes_string = settings.value( option_name);
+ ColumnDecodeStringWithCount(joycodes_string, joycodes, ARRAY_LENGTH(joycodes));
+ return joycodes[joycodeIndex];
+}
+
+static void SetUIJoy(const char *option_name, int joycodeIndex, int val)
+{
+ const char *joycodes_string;
+ int joycodes[4];
+ char buffer[1024];
+
+ assert(0 <= joycodeIndex && joycodeIndex < 4);
+ joycodes_string = settings.value( option_name);
+ ColumnDecodeStringWithCount(joycodes_string, joycodes, ARRAY_LENGTH(joycodes));
+
+ joycodes[joycodeIndex] = val;
+ ColumnEncodeStringWithCount(joycodes, buffer, ARRAY_LENGTH(joycodes));
+ std::string error_string;
+ settings.set_value(option_name, buffer, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetUIJoyUp(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_UP, joycodeIndex);
+}
+
+void SetUIJoyUp(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_UP, joycodeIndex, val);
+}
+
+int GetUIJoyDown(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_DOWN, joycodeIndex);
+}
+
+void SetUIJoyDown(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_DOWN, joycodeIndex, val);
+}
+
+int GetUIJoyLeft(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_LEFT, joycodeIndex);
+}
+
+void SetUIJoyLeft(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_LEFT, joycodeIndex, val);
+}
+
+int GetUIJoyRight(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_RIGHT, joycodeIndex);
+}
+
+void SetUIJoyRight(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_RIGHT, joycodeIndex, val);
+}
+
+int GetUIJoyStart(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_START, joycodeIndex);
+}
+
+void SetUIJoyStart(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_START, joycodeIndex, val);
+}
+
+int GetUIJoyPageUp(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_PGUP, joycodeIndex);
+}
+
+void SetUIJoyPageUp(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_PGUP, joycodeIndex, val);
+}
+
+int GetUIJoyPageDown(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_PGDWN, joycodeIndex);
+}
+
+void SetUIJoyPageDown(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_PGDWN, joycodeIndex, val);
+}
+
+int GetUIJoyHome(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_HOME, joycodeIndex);
+}
+
+void SetUIJoyHome(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_HOME, joycodeIndex, val);
+}
+
+int GetUIJoyEnd(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_END, joycodeIndex);
+}
+
+void SetUIJoyEnd(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_END, joycodeIndex, val);
+}
+
+int GetUIJoySSChange(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_SS_CHANGE, joycodeIndex);
+}
+
+void SetUIJoySSChange(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_SS_CHANGE, joycodeIndex, val);
+}
+
+int GetUIJoyHistoryUp(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_HISTORY_UP, joycodeIndex);
+}
+
+void SetUIJoyHistoryUp(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_HISTORY_UP, joycodeIndex, val);
+}
+
+int GetUIJoyHistoryDown(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_HISTORY_DOWN, joycodeIndex);
+}
+
+void SetUIJoyHistoryDown(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_HISTORY_DOWN, joycodeIndex, val);
+}
+
+void SetUIJoyExec(int joycodeIndex, int val)
+{
+ SetUIJoy(MUIOPTION_UI_JOY_EXEC, joycodeIndex, val);
+}
+
+int GetUIJoyExec(int joycodeIndex)
+{
+ return GetUIJoy(MUIOPTION_UI_JOY_EXEC, joycodeIndex);
+}
+
+const char * GetExecCommand(void)
+{
+ return settings.value( MUIOPTION_EXEC_COMMAND);
+}
+
+void SetExecCommand(char *cmd)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_EXEC_COMMAND, cmd, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetExecWait(void)
+{
+ return settings.int_value(MUIOPTION_EXEC_WAIT);
+}
+
+void SetExecWait(int wait)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_EXEC_WAIT, wait, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetHideMouseOnStartup(void)
+{
+ return settings.bool_value( MUIOPTION_HIDE_MOUSE);
+}
+
+void SetHideMouseOnStartup(BOOL hide)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_HIDE_MOUSE, hide, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetRunFullScreen(void)
+{
+ return settings.bool_value( MUIOPTION_FULL_SCREEN);
+}
+
+void SetRunFullScreen(BOOL fullScreen)
+{
+ std::string error_string;
+ settings.set_value(MUIOPTION_FULL_SCREEN, fullScreen, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+/***************************************************************************
+ Internal functions
+ ***************************************************************************/
+
+static void CusColorEncodeString(const COLORREF *value, char* str)
+{
+ char tmpStr[256];
+
+ sprintf(tmpStr, "%u", (int) value[0]);
+
+ strcpy(str, tmpStr);
+
+ for (int i = 1; i < 16; i++)
+ {
+ sprintf(tmpStr, ",%u", (unsigned) value[i]);
+ strcat(str, tmpStr);
+ }
+}
+
+static void CusColorDecodeString(const char* str, COLORREF *value)
+{
+ char *s, *p;
+ char tmpStr[256];
+
+ strcpy(tmpStr, str);
+ p = tmpStr;
+
+ for (int i = 0; p && i < 16; i++)
+ {
+ s = p;
+
+ if ((p = strchr(s,',')) != NULL && *p == ',')
+ {
+ *p = '\0';
+ p++;
+ }
+ value[i] = atoi(s);
+ }
+}
+
+
+void ColumnEncodeStringWithCount(const int *value, char *str, int count)
+{
+ char buffer[256];
+
+ snprintf(buffer,sizeof(buffer),"%d",value[0]);
+
+ strcpy(str,buffer);
+
+ for (int i = 1; i < count; i++)
+ {
+ snprintf(buffer,sizeof(buffer),",%d",value[i]);
+ strcat(str,buffer);
+ }
+}
+
+void ColumnDecodeStringWithCount(const char* str, int *value, int count)
+{
+ char *s, *p;
+ char tmpStr[256];
+
+ if (str == NULL)
+ return;
+
+ strcpy(tmpStr, str);
+ p = tmpStr;
+
+ for (int i = 0; p && i < count; i++)
+ {
+ s = p;
+
+ if ((p = strchr(s,',')) != NULL && *p == ',')
+ {
+ *p = '\0';
+ p++;
+ }
+ value[i] = atoi(s);
+ }
+}
+
+static void SplitterEncodeString(const int *value, char* str)
+{
+ char tmpStr[256];
+
+ sprintf(tmpStr, "%d", value[0]);
+
+ strcpy(str, tmpStr);
+
+ for (int i = 1; i < GetSplitterCount(); i++)
+ {
+ sprintf(tmpStr, ",%d", value[i]);
+ strcat(str, tmpStr);
+ }
+}
+
+static void SplitterDecodeString(const char *str, int *value)
+{
+ char *s, *p;
+ char tmpStr[256];
+
+ strcpy(tmpStr, str);
+ p = tmpStr;
+
+ for (int i = 0; p && i < GetSplitterCount(); i++)
+ {
+ s = p;
+
+ if ((p = strchr(s,',')) != NULL && *p == ',')
+ {
+ *p = '\0';
+ p++;
+ }
+ value[i] = atoi(s);
+ }
+}
+
+/* Parse the given comma-delimited string into a LOGFONT structure */
+static void FontDecodeString(const char* str, LOGFONT *f)
+{
+ const char* ptr;
+ TCHAR* t_ptr;
+
+ sscanf(str, "%li,%li,%li,%li,%li,%i,%i,%i,%i,%i,%i,%i,%i",
+ &f->lfHeight,
+ &f->lfWidth,
+ &f->lfEscapement,
+ &f->lfOrientation,
+ &f->lfWeight,
+ (int*)&f->lfItalic,
+ (int*)&f->lfUnderline,
+ (int*)&f->lfStrikeOut,
+ (int*)&f->lfCharSet,
+ (int*)&f->lfOutPrecision,
+ (int*)&f->lfClipPrecision,
+ (int*)&f->lfQuality,
+ (int*)&f->lfPitchAndFamily);
+ ptr = strrchr(str, ',');
+ if (ptr)
+ {
+ t_ptr = ui_wstring_from_utf8(ptr + 1);
+ if( !t_ptr )
+ return;
+ _tcscpy(f->lfFaceName, t_ptr);
+ free(t_ptr);
+ }
+}
+
+/* Encode the given LOGFONT structure into a comma-delimited string */
+static void FontEncodeString(const LOGFONT *f, char *str)
+{
+ char* utf8_FaceName = ui_utf8_from_wstring(f->lfFaceName);
+ if( !utf8_FaceName )
+ return;
+
+ sprintf(str, "%li,%li,%li,%li,%li,%i,%i,%i,%i,%i,%i,%i,%i,%s",
+ f->lfHeight,
+ f->lfWidth,
+ f->lfEscapement,
+ f->lfOrientation,
+ f->lfWeight,
+ f->lfItalic,
+ f->lfUnderline,
+ f->lfStrikeOut,
+ f->lfCharSet,
+ f->lfOutPrecision,
+ f->lfClipPrecision,
+ f->lfQuality,
+ f->lfPitchAndFamily,
+ utf8_FaceName);
+
+ free(utf8_FaceName);
+}
+
+static void TabFlagsEncodeString(int data, char *str)
+{
+ int num_saved = 0;
+
+ strcpy(str,"");
+
+ // we save the ones that are NOT displayed, so we can add new ones
+ // and upgraders will see them
+ for ( int i=0; i<MAX_TAB_TYPES; i++)
+ {
+ if (((data & (1 << i)) == 0) && GetImageTabShortName(i))
+ {
+ if (num_saved > 0)
+ strcat(str, ", ");
+
+ strcat(str,GetImageTabShortName(i));
+ num_saved++;
+ }
+ }
+}
+
+static void TabFlagsDecodeString(const char *str, int *data)
+{
+ int j = 0;
+ char s[2000];
+ char *token;
+
+ snprintf(s, ARRAY_LENGTH(s), "%s", str);
+
+ // simple way to set all tab bits "on"
+ *data = (1 << MAX_TAB_TYPES) - 1;
+
+ token = strtok(s,", \t");
+ while (token)
+ {
+ for (j=0; j<MAX_TAB_TYPES; j++)
+ {
+ if (!GetImageTabShortName(j) || (strcmp(GetImageTabShortName(j), token) == 0))
+ {
+ // turn off this bit
+ *data &= ~(1 << j);
+ break;
+ }
+ }
+ token = strtok(NULL,", \t");
+ }
+
+ if (*data == 0)
+ {
+ // not allowed to hide all tabs, because then why even show the area?
+ *data = (1 << TAB_SCREENSHOT);
+ }
+}
+
+static void LoadSettingsFile(ui_options &opts, const char *filename)
+{
+ osd_file::error filerr;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string error_string;
+ opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ file.reset();
+ }
+}
+
+static void LoadSettingsFile(winui_options &opts, const char *filename)
+{
+ osd_file::error filerr;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string error_string;
+ opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ file.reset();
+ }
+}
+
+static void LoadSettingsFile(windows_options &opts, const char *filename)
+{
+ osd_file::error filerr;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_READ, file);
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string error_string;
+ opts.parse_ini_file(*file, OPTION_PRIORITY_CMDLINE, OPTION_PRIORITY_CMDLINE, error_string);
+ file.reset();
+ }
+}
+
+// This saves changes to UI.INI only
+static void SaveSettingsFile(ui_options &opts, const char *filename)
+{
+ osd_file::error filerr = osd_file::error::NONE;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, file);
+
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string inistring = opts.output_ini();
+ file->puts(inistring.c_str());
+ file.reset();
+ }
+}
+
+
+
+// This saves changes to MAMEUI.INI only
+static void SaveSettingsFile(winui_options &opts, const char *filename)
+{
+ osd_file::error filerr = osd_file::error::NONE;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, file);
+
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string inistring = opts.output_ini();
+ file->puts(inistring.c_str());
+ file.reset();
+ }
+}
+
+
+
+// This saves changes to <game>.INI or MAME.INI only
+static void SaveSettingsFile(windows_options &opts, const char *filename)
+{
+ osd_file::error filerr = osd_file::error::NONE;
+ util::core_file::ptr file;
+
+ filerr = util::core_file::open(filename, OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS, file);
+
+ if (filerr == osd_file::error::NONE)
+ {
+ std::string inistring = opts.output_ini();
+ // printf("=====%s=====\n%s\n",filename,inistring.c_str()); // for debugging
+ file->puts(inistring.c_str());
+ file.reset();
+ }
+}
+
+
+
+/* Register access functions below */
+static void LoadOptionsAndSettings(void)
+{
+// char buffer[MAX_PATH];
+
+ // parse MAMEui.ini - always in the current directory.
+ LoadSettingsFile(settings, UI_INI_FILENAME);
+ LoadSettingsFile(mewui, MEWUI_FILENAME);
+
+ // parse GameInfo.ini - game options.
+ game_opts.load_file(GAMEINFO_INI_FILENAME);
+
+ // parse global options ini/mame32.ini
+ load_options(global, OPTIONS_GLOBAL, GLOBAL_OPTIONS);
+}
+
+void SetDirectories(windows_options &opts)
+{
+ std::string error_string;
+ opts.set_value(OPTION_MEDIAPATH, GetRomDirs(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_SAMPLEPATH, GetSampleDirs(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_INIPATH, GetIniDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_CFG_DIRECTORY, GetCfgDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_SNAPSHOT_DIRECTORY, GetImgDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_INPUT_DIRECTORY, GetInpDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_STATE_DIRECTORY, GetStateDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_ARTPATH, GetArtDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_NVRAM_DIRECTORY, GetNvramDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_CTRLRPATH, GetCtrlrDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_CHEATPATH, GetCheatDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_CROSSHAIRPATH, GetCrosshairDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_FONTPATH, GetFontDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_DIFF_DIRECTORY, GetDiffDir(), OPTION_PRIORITY_CMDLINE, error_string);
+ opts.set_value(OPTION_SNAPNAME, GetSnapName(), OPTION_PRIORITY_CMDLINE, error_string);
+}
+
+// not used
+#if 0
+const char * GetFolderNameByID(UINT nID)
+{
+ UINT i;
+ extern const FOLDERDATA g_folderData[];
+ extern LPEXFOLDERDATA ExtraFolderData[];
+
+ for (i = 0; i < MAX_EXTRA_FOLDERS * MAX_EXTRA_SUBFOLDERS; i++)
+ if( ExtraFolderData[i] )
+ if (ExtraFolderData[i]->m_nFolderId == nID)
+ return ExtraFolderData[i]->m_szTitle;
+
+ for( i = 0; i < MAX_FOLDERS; i++)
+ if (g_folderData[i].m_nFolderId == nID)
+ return g_folderData[i].m_lpTitle;
+
+ return NULL;
+}
+#endif
+
+DWORD GetFolderFlags(int folder_index)
+{
+ LPTREEFOLDER lpFolder = GetFolder(folder_index);
+
+ if (lpFolder)
+ return lpFolder->m_dwFlags & F_MASK;
+
+ return 0;
+}
+
+
+/* Decode the flags into a DWORD */
+static DWORD DecodeFolderFlags(const char *buf)
+{
+ DWORD flags = 0;
+ int shift = 0;
+ const char *ptr = buf;
+
+ while (*ptr && (1 << shift) & F_MASK)
+ {
+ if (*ptr++ == '1')
+ {
+ flags |= (1 << shift);
+ }
+ shift++;
+ }
+ return flags;
+}
+
+/* Encode the flags into a string */
+static const char * EncodeFolderFlags(DWORD value)
+{
+ static char buf[40];
+ int shift = 0;
+
+ memset(buf,'\0', sizeof(buf));
+
+ while ((1 << shift) & F_MASK)
+ {
+ buf[shift] = (value & (1 << shift)) ? '1' : '0';
+ shift++;
+ }
+
+ return buf;
+}
+
+/* MSH 20080813
+ * Read the folder filters from MAMEui.ini. This must only
+ * be called AFTER the folders have all been created.
+ */
+void LoadFolderFlags(void)
+{
+ winui_options opts;
+ int i, numFolders = 0;
+ LPTREEFOLDER lpFolder;
+ options_entry entries[2] = { { 0 }, { 0 } };
+
+ memcpy(entries, filterOptions, sizeof(filterOptions));
+
+ numFolders = GetNumFolders();
+
+ for (i = 0; i < numFolders; i++)
+ {
+ lpFolder = GetFolder(i);
+
+ if (lpFolder)
+ {
+ char folder_name[256];
+ char *ptr;
+
+ // Convert spaces to underscores
+ strcpy(folder_name, lpFolder->m_lpTitle);
+ ptr = folder_name;
+ while (*ptr && *ptr != '\0')
+ {
+ if (*ptr == ' ')
+ {
+ *ptr = '_';
+ }
+ ptr++;
+ }
+
+ std::string option_name = std::string(folder_name) + "_filters";
+ // create entry
+ entries[0].name = option_name.c_str();
+ opts.add_entries(entries);
+ }
+ }
+
+ // These are overlaid at the end of our UI ini
+ // The normal read will skip them.
+ LoadSettingsFile(opts, UI_INI_FILENAME);
+
+ // retrieve the stored values
+ for (i = 0; i < numFolders; i++)
+ {
+ lpFolder = GetFolder(i);
+
+ if (lpFolder)
+ {
+ char folder_name[256];
+ char *ptr;
+ const char *value;
+
+ // Convert spaces to underscores
+ strcpy(folder_name, lpFolder->m_lpTitle);
+ ptr = folder_name;
+ while (*ptr && *ptr != '\0')
+ {
+ if (*ptr == ' ')
+ {
+ *ptr = '_';
+ }
+ ptr++;
+ }
+ std::string option_name = std::string(folder_name) + "_filters";
+ // get entry and decode it
+ value = opts.value(option_name.c_str());
+
+ if (value)
+ lpFolder->m_dwFlags |= DecodeFolderFlags(value) & F_MASK;
+ }
+ }
+}
+
+
+
+// Adds our folder flags to a temporary winui_options, for saving.
+static void AddFolderFlags(winui_options &opts)
+{
+ int numFolders = 0, num_entries = 0;
+ LPTREEFOLDER lpFolder;
+ options_entry entries[2] = { { 0 }, { 0 } };
+
+ entries[0].name = NULL;
+ entries[0].defvalue = NULL;
+ entries[0].flags = OPTION_HEADER;
+ entries[0].description = "FOLDER FILTERS";
+ opts.add_entries(entries);
+
+ memcpy(entries, filterOptions, sizeof(filterOptions));
+
+ numFolders = GetNumFolders();
+
+ for (int i = 0; i < numFolders; i++)
+ {
+ lpFolder = GetFolder(i);
+ if (lpFolder && (lpFolder->m_dwFlags & F_MASK) != 0)
+ {
+ char folder_name[256];
+ char *ptr;
+
+ // Convert spaces to underscores
+ strcpy(folder_name, lpFolder->m_lpTitle);
+ ptr = folder_name;
+ while (*ptr && *ptr != '\0')
+ {
+ if (*ptr == ' ')
+ {
+ *ptr = '_';
+ }
+ ptr++;
+ }
+
+ std::string option_name = std::string(folder_name) + "_filters";
+
+ // create entry
+ entries[0].name = option_name.c_str();
+ opts.add_entries(entries);
+
+ // store entry
+ std::string error_string;
+ opts.set_value(option_name.c_str(), EncodeFolderFlags(lpFolder->m_dwFlags), OPTION_PRIORITY_CMDLINE,error_string);
+
+ // increment counter
+ num_entries++;
+ }
+ }
+}
+
+// Save MAMEUI.ini
+void SaveOptions(void)
+{
+ // Add the folder flag to settings.
+ AddFolderFlags(settings);
+ // Save opts if it is non-null, else save settings.
+ // It will be null if there are no filters set.
+ SaveSettingsFile(settings, UI_INI_FILENAME);
+ SaveSettingsFile(mewui, MEWUI_FILENAME);
+}
+
+void SaveGameListOptions(void)
+{
+ // Save GameInfo.ini - game options.
+ game_opts.save_file(GAMEINFO_INI_FILENAME);
+}
+
+void SaveDefaultOptions(void)
+{
+ std::string fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(emulator_info::get_configname()).append(".ini");
+ SaveSettingsFile(global, fname.c_str());
+}
+
+const char * GetVersionString(void)
+{
+ return emulator_info::get_build_version();
+}
+
+
+/* get options, based on passed in game number. */
+void load_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
+{
+ const game_driver *driver = NULL;
+ if (game_num > -1)
+ driver = &driver_list::driver(game_num);
+ CreateGameOptions(opts, opt_type, game_num);
+
+ // Try base ini first
+ std::string fname = std::string(emulator_info::get_configname()).append(".ini");
+ LoadSettingsFile(opts, fname.c_str());
+
+ if (opt_type == OPTIONS_SOURCE)
+ {
+ fname = std::string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->source_file, true) + ".ini";
+ LoadSettingsFile(opts, fname.c_str());
+ return;
+ }
+
+ if (game_num > -2)
+ {
+ driver = &driver_list::driver(game_num);
+ // Now try global ini
+ fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(emulator_info::get_configname()).append(".ini");
+ LoadSettingsFile(opts, fname.c_str());
+
+ if (game_num > -1)
+ {
+ // global swpath serves a different purpose than for games, so blank it out
+ std::string error_string;
+ opts.set_value(OPTION_SWPATH, "", OPTION_PRIORITY_CMDLINE,error_string);
+ // Lastly, gamename.ini
+ if (driver)
+ {
+ fname = std::string(GetIniDir()) + PATH_SEPARATOR + std::string(driver->name).append(".ini");
+ LoadSettingsFile(opts, fname.c_str());
+ }
+ }
+ }
+ SetDirectories(opts);
+}
+
+/* Save ini file based on game_number. */
+void save_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num)
+{
+ const game_driver *driver = NULL;
+ std::string filename, filepath;
+
+ if (game_num >= 0)
+ {
+ driver = &driver_list::driver(game_num);
+ if (driver)
+ {
+ filename.assign(driver->name);
+ if (opt_type == OPTIONS_SOURCE)
+ filepath = std::string(GetIniDir()) + PATH_SEPARATOR + "source" + PATH_SEPARATOR + core_filename_extract_base(driver->source_file, true) + ".ini";
+ }
+ }
+ else
+ if (game_num == -1)
+ filename = std::string(emulator_info::get_configname());
+
+ if (!filename.empty() && filepath.empty())
+ filepath = std::string(GetIniDir()).append(PATH_SEPARATOR).append(filename.c_str()).append(".ini");
+
+ if (game_num == -2)
+ filepath = std::string(emulator_info::get_configname()).append(".ini");
+
+ if (!filepath.empty())
+ {
+ SetDirectories(opts);
+ SaveSettingsFile(opts, filepath.c_str());
+// printf("Settings saved to %s\n",filepath.c_str());
+ }
+// else
+// printf("Unable to save settings\n");
+}
+
+
+// Reset the given windows_options to their default settings.
+static void ResetToDefaults(windows_options &opts, int priority)
+{
+ // iterate through the options setting each one back to the default value.
+ opts.revert(priority);
+}
+
+int GetDriverCache(int driver_index)
+{
+ return game_opts.cache(driver_index);
+}
+
+void SetDriverCache(int driver_index, int val)
+{
+ game_opts.cache(driver_index, val);
+}
+
+BOOL RequiredDriverCache(void)
+{
+ bool ret = false;
+
+ if ( strcmp(settings.value(MUIOPTION_VERSION), GetVersionString()) != 0 )
+ ret = true;
+
+ std::string error_string;
+ settings.set_value(MUIOPTION_VERSION, GetVersionString(), OPTION_PRIORITY_CMDLINE,error_string);
+
+ return ret;
+}
+
+// from optionsms.cpp (MESSUI)
+
+
+#define LOG_SOFTWARE 0
+
+void SetSLColumnOrder(int order[])
+{
+ char column_order_string[80];
+ ColumnEncodeStringWithCount(order, column_order_string, SL_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SL_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSLColumnOrder(int order[])
+{
+ const char *column_order_string;
+ column_order_string = MameUISettings().value(MESSUI_SL_COLUMN_ORDER);
+ ColumnDecodeStringWithCount(column_order_string, order, SL_COLUMN_MAX);
+}
+
+void SetSLColumnShown(int shown[])
+{
+ char column_shown_string[80];
+ ColumnEncodeStringWithCount(shown, column_shown_string, SL_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SL_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSLColumnShown(int shown[])
+{
+ const char *column_shown_string;
+ column_shown_string = MameUISettings().value(MESSUI_SL_COLUMN_SHOWN);
+ ColumnDecodeStringWithCount(column_shown_string, shown, SL_COLUMN_MAX);
+}
+
+void SetSLColumnWidths(int width[])
+{
+ char column_width_string[80];
+ ColumnEncodeStringWithCount(width, column_width_string, SL_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SL_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSLColumnWidths(int width[])
+{
+ const char *column_width_string;
+ column_width_string = MameUISettings().value(MESSUI_SL_COLUMN_WIDTHS);
+ ColumnDecodeStringWithCount(column_width_string, width, SL_COLUMN_MAX);
+}
+
+void SetSLSortColumn(int column)
+{
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SL_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetSLSortColumn(void)
+{
+ return MameUISettings().int_value(MESSUI_SL_SORT_COLUMN);
+}
+
+void SetSLSortReverse(BOOL reverse)
+{
+ std::string error_string;
+ MameUISettings().set_value( MESSUI_SL_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetSLSortReverse(void)
+{
+ return MameUISettings().bool_value(MESSUI_SL_SORT_REVERSED);
+}
+
+void SetSWColumnOrder(int order[])
+{
+ char column_order_string[80];
+ ColumnEncodeStringWithCount(order, column_order_string, SW_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SW_COLUMN_ORDER, column_order_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSWColumnOrder(int order[])
+{
+ const char *column_order_string;
+ column_order_string = MameUISettings().value(MESSUI_SW_COLUMN_ORDER);
+ ColumnDecodeStringWithCount(column_order_string, order, SW_COLUMN_MAX);
+}
+
+void SetSWColumnShown(int shown[])
+{
+ char column_shown_string[80];
+ ColumnEncodeStringWithCount(shown, column_shown_string, SW_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SW_COLUMN_SHOWN, column_shown_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSWColumnShown(int shown[])
+{
+ const char *column_shown_string;
+ column_shown_string = MameUISettings().value(MESSUI_SW_COLUMN_SHOWN);
+ ColumnDecodeStringWithCount(column_shown_string, shown, SW_COLUMN_MAX);
+}
+
+void SetSWColumnWidths(int width[])
+{
+ char column_width_string[80];
+ ColumnEncodeStringWithCount(width, column_width_string, SW_COLUMN_MAX);
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SW_COLUMN_WIDTHS, column_width_string, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+void GetSWColumnWidths(int width[])
+{
+ const char *column_width_string;
+ column_width_string = MameUISettings().value(MESSUI_SW_COLUMN_WIDTHS);
+ ColumnDecodeStringWithCount(column_width_string, width, SW_COLUMN_MAX);
+}
+
+void SetSWSortColumn(int column)
+{
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SW_SORT_COLUMN, column, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+int GetSWSortColumn(void)
+{
+ return MameUISettings().int_value(MESSUI_SW_SORT_COLUMN);
+}
+
+void SetSWSortReverse(BOOL reverse)
+{
+ std::string error_string;
+ MameUISettings().set_value( MESSUI_SW_SORT_REVERSED, reverse, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+BOOL GetSWSortReverse(void)
+{
+ return MameUISettings().bool_value(MESSUI_SW_SORT_REVERSED);
+}
+
+void SetSelectedSoftware(int driver_index, const machine_config *config, const device_image_interface *dev, const char *software)
+{
+ std::string opt_name = dev->instance_name();
+ windows_options o;
+ std::string error_string;
+
+ if (LOG_SOFTWARE)
+ {
+ dprintf("SetSelectedSoftware(): dev=%p (\'%s\') software='%s'\n", dev, driver_list::driver(driver_index).name, software);
+ }
+
+ load_options(o, OPTIONS_GAME, driver_index);
+ o.set_value(opt_name.c_str(), software, OPTION_PRIORITY_CMDLINE,error_string);
+ save_options(o, OPTIONS_GAME, driver_index);
+}
+
+void SetCurrentSoftwareTab(const char *shortname)
+{
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SOFTWARE_TAB, shortname, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
+const char *GetCurrentSoftwareTab(void)
+{
+ return MameUISettings().value(MESSUI_SOFTWARE_TAB);
+}
+
+const char* GetSLDir(void)
+{
+ return MameUISettings().value(MESSUI_SLPATH);
+}
+
+void SetSLDir(const char* paths)
+{
+ std::string error_string;
+ MameUISettings().set_value(MESSUI_SLPATH, paths, OPTION_PRIORITY_CMDLINE,error_string);
+}
+
diff --git a/docs/release/src/osd/winui/mui_opts.h b/docs/release/src/osd/winui/mui_opts.h
new file mode 100644
index 00000000000..9367b46f8fb
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_opts.h
@@ -0,0 +1,510 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+#ifndef MUI_OPTS_H
+#define MUI_OPTS_H
+
+#include "winmain.h"
+#include "winui.h"
+
+// These help categorise the folders on the left side
+// This list is mainly for documentation, although a few are used in code
+typedef enum {
+ // Global types
+ OPTIONS_GLOBAL = 0,
+ OPTIONS_HORIZONTAL,
+ OPTIONS_VERTICAL,
+ OPTIONS_RASTER,
+ OPTIONS_VECTOR,
+ OPTIONS_LCD,
+ OPTIONS_ARCADE,
+ OPTIONS_CONSOLE,
+ OPTIONS_COMPUTER,
+ OPTIONS_OTHERSYS,
+ // Local types
+ OPTIONS_SOURCE,
+ OPTIONS_GPARENT,
+ OPTIONS_PARENT,
+ OPTIONS_GAME,
+ // EOF marker
+ OPTIONS_MAX
+} OPTIONS_TYPE;
+
+// List of columns in the main game list
+enum
+{
+ COLUMN_GAMES = 0,
+ COLUMN_SRCDRIVERS,
+ COLUMN_DIRECTORY,
+ COLUMN_TYPE,
+ COLUMN_ORIENTATION,
+ COLUMN_MANUFACTURER,
+ COLUMN_YEAR,
+ COLUMN_PLAYED,
+ COLUMN_PLAYTIME,
+ COLUMN_CLONE,
+ COLUMN_TRACKBALL,
+#ifdef SHOW_COLUMN_SAMPLES
+ COLUMN_SAMPLES,
+#endif
+#ifdef SHOW_COLUMN_ROMS
+ COLUMN_ROMS,
+#endif
+ COLUMN_MAX
+};
+
+#define LOCAL_OPTIONS -10
+#define GLOBAL_OPTIONS -1
+
+typedef struct
+{
+ int x, y, width, height;
+} AREA;
+
+typedef struct
+{
+ char* screen;
+ char* aspect;
+ char* resolution;
+ char* view;
+} ScreenParams;
+
+// List of artwork types to display in the screen shot area
+enum
+{
+ // these must match array of strings image_tabs_long_name in options.c
+ // if you add new Tabs, be sure to also add them to the ComboBox init in dialogs.c
+ TAB_SCREENSHOT = 0,
+ TAB_FLYER,
+ TAB_CABINET,
+ TAB_MARQUEE,
+ TAB_TITLE,
+ TAB_CONTROL_PANEL,
+ TAB_PCB,
+ TAB_HISTORY,
+
+ MAX_TAB_TYPES,
+ BACKGROUND,
+ TAB_ALL,
+ TAB_NONE
+};
+// Because we have added the Options after MAX_TAB_TYPES, we have to subtract 3 here
+// (that's how many options we have after MAX_TAB_TYPES)
+#define TAB_SUBTRACT 3
+
+class winui_options : public core_options
+{
+public:
+ // construction/destruction
+ winui_options();
+
+private:
+ static const options_entry s_option_entries[];
+};
+
+BOOL OptionsInit(void);
+void OptionsExit(void);
+
+#define OPTIONS_TYPE_GLOBAL -1
+#define OPTIONS_TYPE_FOLDER -2
+
+void SetDirectories(windows_options &opts);
+
+void load_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num);
+void save_options(windows_options &opts, OPTIONS_TYPE opt_type, int game_num);
+
+void CreateGameOptions(windows_options &opts, OPTIONS_TYPE opt_type, int driver_index);
+
+winui_options & MameUISettings(void);
+windows_options & MameUIGlobal(void);
+
+void LoadFolderFlags(void);
+
+// Start interface to directories.h
+const char* GetRomDirs(void);
+void SetRomDirs(const char* paths);
+
+const char* GetSampleDirs(void);
+void SetSampleDirs(const char* paths);
+
+const char* GetArtDir(void);
+void SetArtDir(const char* path);
+
+const char* GetCabinetDir(void);
+void SetCabinetDir(const char* path);
+
+const char* GetCheatDir(void);
+void SetCheatDir(const char* path);
+
+const char* GetCfgDir(void);
+void SetCfgDir(const char* path);
+
+const char* GetControlPanelDir(void);
+void SetControlPanelDir(const char* path);
+
+const char* GetCtrlrDir(void);
+void SetCtrlrDir(const char* path);
+
+const char* GetCrosshairDir(void);
+void SetCrosshairDir(const char* paths);
+
+const char* GetDatsDir(void);
+void SetDatsDir(const char *path);
+
+const char* GetFlyerDir(void);
+void SetFlyerDir(const char* path);
+
+const char* GetFolderDir(void);
+void SetFolderDir(const char* path);
+
+const char* GetFontDir(void);
+void SetFontDir(const char* paths);
+
+const char* GetHashDirs(void);
+void SetHashDirs(const char* paths);
+
+const char* GetDiffDir(void);
+void SetDiffDir(const char* path);
+
+const char* GetIconsDir(void);
+void SetIconsDir(const char* path);
+
+const char* GetIniDir(void);
+void SetIniDir(const char *path);
+
+const char* GetInpDir(void);
+void SetInpDir(const char* path);
+
+const char* GetLangDir(void);
+void SetLangDir(const char* path);
+
+const char* GetMarqueeDir(void);
+void SetMarqueeDir(const char* path);
+
+const char* GetNvramDir(void);
+void SetNvramDir(const char* path);
+
+const char* GetPcbDir(void);
+void SetPcbDir(const char* path);
+
+const char* GetPluginsDir(void);
+void SetPluginsDir(const char* path);
+
+const char* GetImgDir(void);
+void SetImgDir(const char* path);
+
+const char* GetStateDir(void);
+void SetStateDir(const char* path);
+
+const char* GetTitlesDir(void);
+void SetTitlesDir(const char* path);
+
+const char* GetSLDir(void);
+void SetSLDir(const char* path);
+const char* GetSWDir(void);
+void SetSWDir(const char* path);
+// End interface to directories.h
+
+void SaveOptions(void);
+void SaveDefaultOptions(void);
+void SaveGameListOptions(void);
+
+void ResetGUI(void);
+void ResetGameDefaults(void);
+void ResetAllGameOptions(void);
+
+const char * GetImageTabLongName(int tab_index);
+const char * GetImageTabShortName(int tab_index);
+
+void SetViewMode(int val);
+int GetViewMode(void);
+
+void SetGameCheck(BOOL game_check);
+BOOL GetGameCheck(void);
+
+void SetVersionCheck(BOOL version_check);
+BOOL GetVersionCheck(void);
+
+void SetJoyGUI(BOOL use_joygui);
+BOOL GetJoyGUI(void);
+
+void SetKeyGUI(BOOL use_keygui);
+BOOL GetKeyGUI(void);
+
+void SetCycleScreenshot(int cycle_screenshot);
+int GetCycleScreenshot(void);
+
+void SetStretchScreenShotLarger(BOOL stretch);
+BOOL GetStretchScreenShotLarger(void);
+
+void SetScreenshotBorderSize(int size);
+int GetScreenshotBorderSize(void);
+
+void SetScreenshotBorderColor(COLORREF uColor);
+COLORREF GetScreenshotBorderColor(void);
+
+void SetFilterInherit(BOOL inherit);
+BOOL GetFilterInherit(void);
+
+void SetOffsetClones(BOOL offset);
+BOOL GetOffsetClones(void);
+
+void SetSavedFolderID(UINT val);
+UINT GetSavedFolderID(void);
+
+void SetShowScreenShot(BOOL val);
+BOOL GetShowScreenShot(void);
+
+void SetShowSoftware(BOOL val);
+BOOL GetShowSoftware(void);
+
+void SetShowFolderList(BOOL val);
+BOOL GetShowFolderList(void);
+
+BOOL GetShowFolder(int folder);
+void SetShowFolder(int folder,BOOL show);
+
+void SetShowStatusBar(BOOL val);
+BOOL GetShowStatusBar(void);
+
+void SetShowToolBar(BOOL val);
+BOOL GetShowToolBar(void);
+
+void SetShowTabCtrl(BOOL val);
+BOOL GetShowTabCtrl(void);
+
+void SetCurrentTab(const char *shortname);
+const char *GetCurrentTab(void);
+
+void SetDefaultGame(const char *name);
+const char *GetDefaultGame(void);
+
+void SetWindowArea(const AREA *area);
+void GetWindowArea(AREA *area);
+
+void SetWindowState(UINT state);
+UINT GetWindowState(void);
+
+void SetColumnWidths(int widths[]);
+void GetColumnWidths(int widths[]);
+
+void SetColumnOrder(int order[]);
+void GetColumnOrder(int order[]);
+
+void SetColumnShown(int shown[]);
+void GetColumnShown(int shown[]);
+
+void SetSplitterPos(int splitterId, int pos);
+int GetSplitterPos(int splitterId);
+
+void SetCustomColor(int iIndex, COLORREF uColor);
+COLORREF GetCustomColor(int iIndex);
+
+void SetListFont(const LOGFONT *font);
+void GetListFont(LOGFONT *font);
+
+DWORD GetFolderFlags(int folder_index);
+
+void SetListFontColor(COLORREF uColor);
+COLORREF GetListFontColor(void);
+
+void SetListCloneColor(COLORREF uColor);
+COLORREF GetListCloneColor(void);
+
+int GetHistoryTab(void);
+void SetHistoryTab(int tab,BOOL show);
+
+int GetShowTab(int tab);
+void SetShowTab(int tab,BOOL show);
+BOOL AllowedToSetShowTab(int tab,BOOL show);
+
+void SetSortColumn(int column);
+int GetSortColumn(void);
+
+void SetSortReverse(BOOL reverse);
+BOOL GetSortReverse(void);
+
+const char* GetLanguageUI(void);
+
+bool GetEnablePlugins(void);
+
+const char* GetPlugins(void);
+
+const char* GetSnapName(void);
+void SetSnapName(const char* pattern);
+
+const char* GetBgDir(void);
+void SetBgDir(const char* path);
+
+void ResetGameOptions(int driver_index);
+
+int GetRomAuditResults(int driver_index);
+void SetRomAuditResults(int driver_index, int audit_results);
+
+int GetSampleAuditResults(int driver_index);
+void SetSampleAuditResults(int driver_index, int audit_results);
+
+void IncrementPlayCount(int driver_index);
+int GetPlayCount(int driver_index);
+void ResetPlayCount(int driver_index);
+
+void IncrementPlayTime(int driver_index,int playtime);
+int GetPlayTime(int driver_index);
+void GetTextPlayTime(int driver_index,char *buf);
+void ResetPlayTime(int driver_index);
+
+const char * GetVersionString(void);
+
+void SaveDefaultOptions(void);
+
+BOOL IsGlobalOption(const char *option_name);
+
+
+
+// Keyboard control of ui
+input_seq* Get_ui_key_up(void);
+input_seq* Get_ui_key_down(void);
+input_seq* Get_ui_key_left(void);
+input_seq* Get_ui_key_right(void);
+input_seq* Get_ui_key_start(void);
+input_seq* Get_ui_key_pgup(void);
+input_seq* Get_ui_key_pgdwn(void);
+input_seq* Get_ui_key_home(void);
+input_seq* Get_ui_key_end(void);
+input_seq* Get_ui_key_ss_change(void);
+input_seq* Get_ui_key_history_up(void);
+input_seq* Get_ui_key_history_down(void);
+
+input_seq* Get_ui_key_context_filters(void);
+input_seq* Get_ui_key_select_random(void);
+input_seq* Get_ui_key_game_audit(void);
+input_seq* Get_ui_key_game_properties(void);
+input_seq* Get_ui_key_help_contents(void);
+input_seq* Get_ui_key_update_gamelist(void);
+input_seq* Get_ui_key_view_folders(void);
+input_seq* Get_ui_key_view_fullscreen(void);
+input_seq* Get_ui_key_view_pagetab(void);
+input_seq* Get_ui_key_view_picture_area(void);
+input_seq* Get_ui_key_view_software_area(void);
+input_seq* Get_ui_key_view_status(void);
+input_seq* Get_ui_key_view_toolbars(void);
+
+input_seq* Get_ui_key_view_tab_cabinet(void);
+input_seq* Get_ui_key_view_tab_cpanel(void);
+input_seq* Get_ui_key_view_tab_flyer(void);
+input_seq* Get_ui_key_view_tab_history(void);
+input_seq* Get_ui_key_view_tab_marquee(void);
+input_seq* Get_ui_key_view_tab_screenshot(void);
+input_seq* Get_ui_key_view_tab_title(void);
+input_seq* Get_ui_key_view_tab_pcb(void);
+input_seq* Get_ui_key_quit(void);
+
+
+int GetUIJoyUp(int joycodeIndex);
+void SetUIJoyUp(int joycodeIndex, int val);
+
+int GetUIJoyDown(int joycodeIndex);
+void SetUIJoyDown(int joycodeIndex, int val);
+
+int GetUIJoyLeft(int joycodeIndex);
+void SetUIJoyLeft(int joycodeIndex, int val);
+
+int GetUIJoyRight(int joycodeIndex);
+void SetUIJoyRight(int joycodeIndex, int val);
+
+int GetUIJoyStart(int joycodeIndex);
+void SetUIJoyStart(int joycodeIndex, int val);
+
+int GetUIJoyPageUp(int joycodeIndex);
+void SetUIJoyPageUp(int joycodeIndex, int val);
+
+int GetUIJoyPageDown(int joycodeIndex);
+void SetUIJoyPageDown(int joycodeIndex, int val);
+
+int GetUIJoyHome(int joycodeIndex);
+void SetUIJoyHome(int joycodeIndex, int val);
+
+int GetUIJoyEnd(int joycodeIndex);
+void SetUIJoyEnd(int joycodeIndex, int val);
+
+int GetUIJoySSChange(int joycodeIndex);
+void SetUIJoySSChange(int joycodeIndex, int val);
+
+int GetUIJoyHistoryUp(int joycodeIndex);
+void SetUIJoyHistoryUp(int joycodeIndex, int val);
+
+int GetUIJoyHistoryDown(int joycodeIndex);
+void SetUIJoyHistoryDown(int joycodeIndex, int val);
+
+int GetUIJoyExec(int joycodeIndex);
+void SetUIJoyExec(int joycodeIndex, int val);
+
+const char* GetExecCommand(void);
+void SetExecCommand(char* cmd);
+
+int GetExecWait(void);
+void SetExecWait(int wait);
+
+BOOL GetHideMouseOnStartup(void);
+void SetHideMouseOnStartup(BOOL hide);
+
+BOOL GetRunFullScreen(void);
+void SetRunFullScreen(BOOL fullScreen);
+
+void ColumnEncodeStringWithCount(const int *value, char *str, int count);
+void ColumnDecodeStringWithCount(const char* str, int *value, int count);
+
+int GetDriverCache(int driver_index);
+void SetDriverCache(int driver_index, int val);
+BOOL RequiredDriverCache(void);
+
+// from optionsms.h (MESSUI)
+
+enum
+{
+ SW_COLUMN_IMAGES,
+ SW_COLUMN_MAX
+};
+
+enum
+{
+ SL_COLUMN_IMAGES,
+ SL_COLUMN_GOODNAME,
+ SL_COLUMN_MANUFACTURER,
+ SL_COLUMN_YEAR,
+ SL_COLUMN_PLAYABLE,
+ SL_COLUMN_USAGE,
+ SL_COLUMN_MAX
+};
+
+void SetSWColumnWidths(int widths[]);
+void GetSWColumnWidths(int widths[]);
+void SetSWColumnOrder(int order[]);
+void GetSWColumnOrder(int order[]);
+void SetSWColumnShown(int shown[]);
+void GetSWColumnShown(int shown[]);
+void SetSWSortColumn(int column);
+int GetSWSortColumn(void);
+void SetSWSortReverse(BOOL reverse);
+BOOL GetSWSortReverse(void);
+
+void SetSLColumnWidths(int widths[]);
+void GetSLColumnWidths(int widths[]);
+void SetSLColumnOrder(int order[]);
+void GetSLColumnOrder(int order[]);
+void SetSLColumnShown(int shown[]);
+void GetSLColumnShown(int shown[]);
+void SetSLSortColumn(int column);
+int GetSLSortColumn(void);
+void SetSLSortReverse(BOOL reverse);
+BOOL GetSLSortReverse(void);
+
+void SetSelectedSoftware(int driver_index, const machine_config *config, const device_image_interface *device, const char *software);
+
+void SetCurrentSoftwareTab(const char *shortname);
+const char *GetCurrentSoftwareTab(void);
+
+
+#endif
+
diff --git a/docs/release/src/osd/winui/mui_util.cpp b/docs/release/src/osd/winui/mui_util.cpp
new file mode 100644
index 00000000000..abb45522b1b
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_util.cpp
@@ -0,0 +1,760 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ mui_util.c
+
+ ***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <shellapi.h>
+
+// standard C headers
+#include <stdio.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "screen.h"
+#include "speaker.h"
+#include "unzip.h"
+#include "sound/samples.h"
+#include "winutf8.h"
+#include "strconv.h"
+#include "winui.h"
+#include "mui_util.h"
+#include "mui_opts.h"
+#include "drivenum.h"
+#include "machine/ram.h"
+
+#include <shlwapi.h>
+#include <vector>
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+struct DriversInfo
+{
+ int screenCount;
+ bool isClone;
+ bool isBroken;
+ bool isHarddisk;
+ bool hasOptionalBIOS;
+ bool isStereo;
+ bool isVector;
+ bool usesRoms;
+ bool usesSamples;
+ bool usesTrackball;
+ bool usesLightGun;
+ bool usesMouse;
+ bool supportsSaveState;
+ bool isVertical;
+ bool hasRam;
+};
+
+static std::vector<DriversInfo> drivers_info;
+
+
+enum
+{
+ DRIVER_CACHE_SCREEN = 0x000F,
+ DRIVER_CACHE_ROMS = 0x0010,
+ DRIVER_CACHE_CLONE = 0x0020,
+ DRIVER_CACHE_STEREO = 0x0040,
+ DRIVER_CACHE_BIOS = 0x0080,
+ DRIVER_CACHE_TRACKBALL = 0x0100,
+ DRIVER_CACHE_HARDDISK = 0x0200,
+ DRIVER_CACHE_SAMPLES = 0x0400,
+ DRIVER_CACHE_LIGHTGUN = 0x0800,
+ DRIVER_CACHE_VECTOR = 0x1000,
+ DRIVER_CACHE_MOUSE = 0x2000,
+ DRIVER_CACHE_RAM = 0x4000,
+};
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+
+/*
+ ErrorMsg
+*/
+void __cdecl ErrorMsg(const char* fmt, ...)
+{
+ static FILE* pFile = NULL;
+ DWORD dwWritten;
+ char buf[5000];
+ char buf2[5000];
+ va_list va;
+
+ va_start(va, fmt);
+
+ vsprintf(buf, fmt, va);
+
+ win_message_box_utf8(GetActiveWindow(), buf, MAMEUINAME, MB_OK | MB_ICONERROR);
+
+ strcpy(buf2, MAMEUINAME ": ");
+ strcat(buf2,buf);
+ strcat(buf2, "\n");
+
+ WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf2, strlen(buf2), &dwWritten, NULL);
+
+ if (pFile == NULL)
+ pFile = fopen("debug.txt", "wt");
+
+ if (pFile != NULL)
+ {
+ fprintf(pFile, "%s", buf2);
+ fflush(pFile);
+ }
+
+ va_end(va);
+}
+
+void __cdecl dprintf(const char* fmt, ...)
+{
+ char buf[5000];
+ va_list va;
+
+ va_start(va, fmt);
+
+ _vsnprintf(buf,sizeof(buf),fmt,va);
+
+ win_output_debug_string_utf8(buf);
+
+ va_end(va);
+}
+
+UINT GetDepth(HWND hWnd)
+{
+ UINT nBPP;
+ HDC hDC;
+
+ hDC = GetDC(hWnd);
+
+ nBPP = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
+
+ ReleaseDC(hWnd, hDC);
+
+ return nBPP;
+}
+
+/*
+ * Return TRUE if comctl32.dll is version 4.71 or greater
+ * otherwise return FALSE.
+ */
+LONG GetCommonControlVersion()
+{
+ HMODULE hModule = GetModuleHandle(TEXT("comctl32"));
+
+ if (hModule)
+ {
+ FARPROC lpfnICCE = GetProcAddress(hModule, "InitCommonControlsEx");
+
+ if (NULL != lpfnICCE)
+ {
+ FARPROC lpfnDLLI = GetProcAddress(hModule, "DllInstall");
+
+ if (NULL != lpfnDLLI)
+ {
+ /* comctl 4.71 or greater */
+
+ // see if we can find out exactly
+
+ DLLGETVERSIONPROC pDllGetVersion;
+ pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hModule, "DllGetVersion");
+
+ /* Because some DLLs might not implement this function, you
+ must test for it explicitly. Depending on the particular
+ DLL, the lack of a DllGetVersion function can be a useful
+ indicator of the version. */
+
+ if(pDllGetVersion)
+ {
+ DLLVERSIONINFO dvi;
+ HRESULT hr;
+
+ ZeroMemory(&dvi, sizeof(dvi));
+ dvi.cbSize = sizeof(dvi);
+
+ hr = (*pDllGetVersion)(&dvi);
+
+ if (SUCCEEDED(hr))
+ {
+ return PACKVERSION(dvi.dwMajorVersion, dvi.dwMinorVersion);
+ }
+ }
+ return PACKVERSION(4,71);
+ }
+ return PACKVERSION(4,7);
+ }
+ return PACKVERSION(4,0);
+ }
+ /* DLL not found */
+ return PACKVERSION(0,0);
+}
+
+void DisplayTextFile(HWND hWnd, const char *cName)
+{
+ HINSTANCE hErr;
+ LPCTSTR msg = 0;
+ LPTSTR tName;
+
+ tName = ui_wstring_from_utf8(cName);
+ if( !tName )
+ return;
+
+ hErr = ShellExecute(hWnd, NULL, tName, NULL, NULL, SW_SHOWNORMAL);
+ if ((uintptr_t)hErr > 32)
+ {
+ free(tName);
+ return;
+ }
+
+ switch((uintptr_t)hErr)
+ {
+ case 0:
+ msg = TEXT("The operating system is out of memory or resources.");
+ break;
+
+ case ERROR_FILE_NOT_FOUND:
+ msg = TEXT("The specified file was not found.");
+ break;
+
+ case SE_ERR_NOASSOC :
+ msg = TEXT("There is no application associated with the given filename extension.");
+ break;
+
+ case SE_ERR_OOM :
+ msg = TEXT("There was not enough memory to complete the operation.");
+ break;
+
+ case SE_ERR_PNF :
+ msg = TEXT("The specified path was not found.");
+ break;
+
+ case SE_ERR_SHARE :
+ msg = TEXT("A sharing violation occurred.");
+ break;
+
+ default:
+ msg = TEXT("Unknown error.");
+ }
+
+ MessageBox(NULL, msg, tName, MB_OK);
+
+ free(tName);
+}
+
+char* MyStrStrI(const char* pFirst, const char* pSrch)
+{
+ char* cp = (char*)pFirst;
+ char* s1;
+ char* s2;
+
+ while (*cp)
+ {
+ s1 = cp;
+ s2 = (char*)pSrch;
+
+ while (*s1 && *s2 && !core_strnicmp(s1, s2, 1))
+ s1++, s2++;
+
+ if (!*s2)
+ return cp;
+
+ cp++;
+ }
+ return NULL;
+}
+
+char * ConvertToWindowsNewlines(const char *source)
+{
+ static char buf[2048 * 2048];
+ char *dest;
+
+ dest = buf;
+ while (*source != 0)
+ {
+ if (*source == '\n')
+ {
+ *dest++ = '\r';
+ *dest++ = '\n';
+ }
+ else
+ *dest++ = *source;
+ source++;
+ }
+ *dest = 0;
+ return buf;
+}
+
+/* Lop off path and extention from a source file name
+ * This assumes their is a pathname passed to the function
+ * like src\drivers\blah.c
+ */
+const char * GetDriverFilename(int nIndex)
+{
+ static char tmp[40];
+ std::string driver = core_filename_extract_base(driver_list::driver(nIndex).source_file);
+ strcpy(tmp, driver.c_str());
+ return tmp;
+}
+
+BOOL isDriverVector(const machine_config *config)
+{
+ const screen_device *screen = config->first_screen();
+
+ if (screen)
+ {
+ if (SCREEN_TYPE_VECTOR == screen->screen_type())
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int numberOfScreens(const machine_config *config)
+{
+ screen_device_iterator scriter(config->root_device());
+ return scriter.count();
+}
+
+int numberOfSpeakers(const machine_config *config)
+{
+ speaker_device_iterator iter(config->root_device());
+ return iter.count();
+}
+
+static void SetDriversInfo(void)
+{
+ int ndriver;
+ int cache = -1;
+ int total = driver_list::total();
+ struct DriversInfo *gameinfo = NULL;
+
+ for (ndriver = 0; ndriver < total; ndriver++)
+ {
+ gameinfo = &drivers_info[ndriver];
+ cache = (gameinfo->screenCount & DRIVER_CACHE_SCREEN);
+ if (gameinfo->isClone) cache += DRIVER_CACHE_CLONE;
+ if (gameinfo->isHarddisk) cache += DRIVER_CACHE_HARDDISK;
+ if (gameinfo->hasOptionalBIOS) cache += DRIVER_CACHE_BIOS;
+ if (gameinfo->isStereo) cache += DRIVER_CACHE_STEREO;
+ if (gameinfo->isVector) cache += DRIVER_CACHE_VECTOR;
+ if (gameinfo->usesRoms) cache += DRIVER_CACHE_ROMS;
+ if (gameinfo->usesSamples) cache += DRIVER_CACHE_SAMPLES;
+ if (gameinfo->usesTrackball) cache += DRIVER_CACHE_TRACKBALL;
+ if (gameinfo->usesLightGun) cache += DRIVER_CACHE_LIGHTGUN;
+ if (gameinfo->usesMouse) cache += DRIVER_CACHE_MOUSE;
+ if (gameinfo->hasRam) cache += DRIVER_CACHE_RAM;
+
+ SetDriverCache(ndriver, cache);
+ }
+}
+
+static void InitDriversInfo(void)
+{
+ int ndriver;
+ int num_speakers;
+ int total = driver_list::total();
+ const game_driver *gamedrv = NULL;
+ struct DriversInfo *gameinfo = NULL;
+ const rom_entry *region, *rom;
+
+ for (ndriver = 0; ndriver < total; ndriver++)
+ {
+ gamedrv = &driver_list::driver(ndriver);
+ gameinfo = &drivers_info[ndriver];
+ machine_config config(*gamedrv, MameUIGlobal());
+
+ gameinfo->isClone = (GetParentRomSetIndex(gamedrv) != -1);
+ gameinfo->isBroken = (gamedrv->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) ? true : false;
+ gameinfo->supportsSaveState = ((gamedrv->flags & MACHINE_SUPPORTS_SAVE) != 0);
+ gameinfo->isHarddisk = FALSE;
+ gameinfo->isVertical = (gamedrv->flags & ORIENTATION_SWAP_XY) ? TRUE : FALSE;
+
+ ram_device_iterator iter1(config.root_device());
+ gameinfo->hasRam = (iter1.first() );
+
+ for (device_t &device : device_iterator(config.root_device()))
+ for (region = rom_first_region(device); region; region = rom_next_region(region))
+ if (ROMREGION_ISDISKDATA(region))
+ gameinfo->isHarddisk = TRUE;
+
+ gameinfo->hasOptionalBIOS = FALSE;
+ if (gamedrv->rom)
+ {
+ auto rom_entries = rom_build_entries(gamedrv->rom);
+ for (rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++)
+ if (ROMENTRY_ISSYSTEM_BIOS(rom))
+ gameinfo->hasOptionalBIOS = TRUE;
+ }
+
+ num_speakers = numberOfSpeakers(&config);
+
+ gameinfo->isStereo = (num_speakers > 1);
+ gameinfo->screenCount = numberOfScreens(&config);
+ gameinfo->isVector = isDriverVector(&config); // ((drv.video_attributes & VIDEO_TYPE_VECTOR) != 0);
+ gameinfo->usesRoms = FALSE;
+ for (device_t &device : device_iterator(config.root_device()))
+ for (region = rom_first_region(device); region; region = rom_next_region(region))
+ for (rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ gameinfo->usesRoms = TRUE;
+
+ gameinfo->usesSamples = FALSE;
+
+ samples_device_iterator iter(config.root_device());
+ if (iter.first())
+ gameinfo->usesSamples = TRUE;
+
+ gameinfo->usesTrackball = FALSE;
+ gameinfo->usesLightGun = FALSE;
+ if (gamedrv->ipt)
+ {
+ ioport_list portlist;
+ std::string errors;
+ for (device_t &cfg : device_iterator(config.root_device()))
+ if (cfg.input_ports())
+ portlist.append(cfg, errors);
+
+ for (auto &port : portlist)
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ UINT32 type;
+ type = field.type();
+ if (type == IPT_END)
+ break;
+ if (type == IPT_DIAL || type == IPT_PADDLE ||
+ type == IPT_TRACKBALL_X || type == IPT_TRACKBALL_Y ||
+ type == IPT_AD_STICK_X || type == IPT_AD_STICK_Y)
+ gameinfo->usesTrackball = TRUE;
+ if (type == IPT_LIGHTGUN_X || type == IPT_LIGHTGUN_Y)
+ gameinfo->usesLightGun = TRUE;
+ if (type == IPT_MOUSE_X || type == IPT_MOUSE_Y)
+ gameinfo->usesMouse = TRUE;
+ }
+ }
+ }
+ }
+
+ SetDriversInfo();
+}
+
+static int InitDriversCache(void)
+{
+ int cache = -1;
+ int total = driver_list::total();
+ const game_driver *gamedrv = NULL;
+ struct DriversInfo *gameinfo = NULL;
+ int ndriver;
+
+ if (RequiredDriverCache())
+ {
+ InitDriversInfo();
+ return 0;
+ }
+
+ for (ndriver = 0; ndriver < total; ndriver++)
+ {
+ gamedrv = &driver_list::driver(ndriver);
+ gameinfo = &drivers_info[ndriver];
+ cache = GetDriverCache(ndriver);
+
+ if (cache == -1)
+ {
+ InitDriversInfo();
+ break;
+ }
+
+ gameinfo->isBroken = (gamedrv->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) ? true : false;
+ gameinfo->supportsSaveState = ((gamedrv->flags & MACHINE_SUPPORTS_SAVE) != 0);
+ gameinfo->isVertical = (gamedrv->flags & ORIENTATION_SWAP_XY) ? TRUE : FALSE;
+ gameinfo->screenCount = cache & DRIVER_CACHE_SCREEN;
+ gameinfo->isClone = ((cache & DRIVER_CACHE_CLONE) != 0);
+ gameinfo->isHarddisk = ((cache & DRIVER_CACHE_HARDDISK) != 0);
+ gameinfo->hasOptionalBIOS = ((cache & DRIVER_CACHE_BIOS) != 0);
+ gameinfo->isStereo = ((cache & DRIVER_CACHE_STEREO) != 0);
+ gameinfo->isVector = ((cache & DRIVER_CACHE_VECTOR) != 0);
+ gameinfo->usesRoms = ((cache & DRIVER_CACHE_ROMS) != 0);
+ gameinfo->usesSamples = ((cache & DRIVER_CACHE_SAMPLES) != 0);
+ gameinfo->usesTrackball = ((cache & DRIVER_CACHE_TRACKBALL) != 0);
+ gameinfo->usesLightGun = ((cache & DRIVER_CACHE_LIGHTGUN) != 0);
+ gameinfo->usesMouse = ((cache & DRIVER_CACHE_MOUSE) != 0);
+ gameinfo->hasRam = ((cache & DRIVER_CACHE_RAM) != 0);
+ }
+
+ return 0;
+}
+
+static struct DriversInfo* GetDriversInfo(int driver_index)
+{
+ static bool bFirst = true;
+
+ if (bFirst)
+ {
+ bFirst = false;
+
+ drivers_info.clear();
+ drivers_info.reserve(driver_list::total());
+
+ InitDriversCache();
+ }
+
+ return &drivers_info[driver_index];
+}
+
+BOOL DriverIsClone(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isClone;
+}
+
+BOOL DriverIsBroken(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isBroken;
+}
+
+BOOL DriverIsHarddisk(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isHarddisk;
+}
+
+BOOL DriverIsBios(int driver_index)
+{
+ return ( driver_list::driver(driver_index).flags & MACHINE_IS_BIOS_ROOT ) ? TRUE : FALSE;
+}
+
+BOOL DriverIsMechanical(int driver_index)
+{
+ return ( driver_list::driver(driver_index).flags & MACHINE_MECHANICAL ) ? TRUE : FALSE;
+}
+
+BOOL DriverIsArcade(int driver_index)
+{
+ return ( driver_list::driver(driver_index).flags & MACHINE_TYPE_ARCADE ) ? TRUE : FALSE;
+}
+
+BOOL DriverHasOptionalBIOS(int driver_index)
+{
+ return GetDriversInfo(driver_index)->hasOptionalBIOS;
+}
+
+BOOL DriverIsStereo(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isStereo;
+}
+
+int DriverNumScreens(int driver_index)
+{
+ return GetDriversInfo(driver_index)->screenCount;
+}
+
+BOOL DriverIsVector(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isVector;
+}
+
+BOOL DriverUsesRoms(int driver_index)
+{
+ return GetDriversInfo(driver_index)->usesRoms;
+}
+
+BOOL DriverUsesSamples(int driver_index)
+{
+ return GetDriversInfo(driver_index)->usesSamples;
+}
+
+BOOL DriverUsesTrackball(int driver_index)
+{
+ return GetDriversInfo(driver_index)->usesTrackball;
+}
+
+BOOL DriverUsesLightGun(int driver_index)
+{
+ return GetDriversInfo(driver_index)->usesLightGun;
+}
+
+BOOL DriverUsesMouse(int driver_index)
+{
+ return GetDriversInfo(driver_index)->usesMouse;
+}
+
+BOOL DriverSupportsSaveState(int driver_index)
+{
+ return GetDriversInfo(driver_index)->supportsSaveState;
+}
+
+BOOL DriverIsVertical(int driver_index)
+{
+ return GetDriversInfo(driver_index)->isVertical;
+}
+
+BOOL DriverHasRam(int driver_index)
+{
+ return GetDriversInfo(driver_index)->hasRam;
+}
+
+void FlushFileCaches(void)
+{
+ util::archive_file::cache_clear();
+}
+
+BOOL StringIsSuffixedBy(const char *s, const char *suffix)
+{
+ return (strlen(s) > strlen(suffix)) && (strcmp(s + strlen(s) - strlen(suffix), suffix) == 0);
+}
+
+/***************************************************************************
+ Win32 wrappers
+ ***************************************************************************/
+
+BOOL SafeIsAppThemed(void)
+{
+ BOOL bResult = FALSE;
+ HMODULE hThemes;
+ BOOL (WINAPI *pfnIsAppThemed)(void);
+
+ hThemes = LoadLibrary(TEXT("uxtheme.dll"));
+ if (hThemes)
+ {
+ pfnIsAppThemed = (BOOL (WINAPI *)(void)) GetProcAddress(hThemes, "IsAppThemed");
+ if (pfnIsAppThemed)
+ bResult = pfnIsAppThemed();
+ FreeLibrary(hThemes);
+ }
+ return bResult;
+
+}
+
+
+void GetSystemErrorMessage(DWORD dwErrorId, TCHAR **tErrorMessage)
+{
+ if( FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwErrorId, 0, (LPTSTR)tErrorMessage, 0, NULL) == 0 )
+ {
+ *tErrorMessage = (LPTSTR)LocalAlloc(LPTR, MAX_PATH * sizeof(TCHAR));
+ _tcscpy(*tErrorMessage, TEXT("Unknown Error"));
+ }
+}
+
+
+//============================================================
+// win_extract_icon_utf8
+//============================================================
+
+HICON win_extract_icon_utf8(HINSTANCE inst, const char* exefilename, UINT iconindex)
+{
+ HICON icon = 0;
+ TCHAR* t_exefilename = ui_wstring_from_utf8(exefilename);
+ if( !t_exefilename )
+ return icon;
+
+ icon = ExtractIcon(inst, t_exefilename, iconindex);
+
+ free(t_exefilename);
+
+ return icon;
+}
+
+
+
+//============================================================
+// win_tstring_strdup
+//============================================================
+
+TCHAR* win_tstring_strdup(LPCTSTR str)
+{
+ TCHAR *cpy = NULL;
+ if (str)
+ {
+ cpy = (TCHAR*)malloc((_tcslen(str) + 1) * sizeof(TCHAR));
+ if (cpy)
+ _tcscpy(cpy, str);
+ }
+ return cpy;
+}
+
+//============================================================
+// win_create_file_utf8
+//============================================================
+
+HANDLE win_create_file_utf8(const char* filename, DWORD desiredmode, DWORD sharemode,
+ LPSECURITY_ATTRIBUTES securityattributes, DWORD creationdisposition,
+ DWORD flagsandattributes, HANDLE templatehandle)
+{
+ HANDLE result = 0;
+ TCHAR* t_filename = ui_wstring_from_utf8(filename);
+ if( !t_filename )
+ return result;
+
+ result = CreateFile(t_filename, desiredmode, sharemode, securityattributes, creationdisposition, flagsandattributes, templatehandle);
+
+ free(t_filename);
+
+ return result;
+}
+
+//============================================================
+// win_get_current_directory_utf8
+//============================================================
+
+DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer)
+{
+ DWORD result = 0;
+ TCHAR* t_buffer = NULL;
+ char* utf8_buffer = NULL;
+
+ if( bufferlength > 0 ) {
+ t_buffer = (TCHAR*)malloc((bufferlength * sizeof(TCHAR)) + 1);
+ if( !t_buffer )
+ return result;
+ }
+
+ result = GetCurrentDirectory(bufferlength, t_buffer);
+
+ if( bufferlength > 0 ) {
+ utf8_buffer = ui_utf8_from_wstring(t_buffer);
+ if( !utf8_buffer ) {
+ free(t_buffer);
+ return result;
+ }
+ }
+
+ strncpy(buffer, utf8_buffer, bufferlength);
+
+ if( utf8_buffer )
+ free(utf8_buffer);
+
+ if( t_buffer )
+ free(t_buffer);
+
+ return result;
+}
+
+//============================================================
+// win_find_first_file_utf8
+//============================================================
+
+HANDLE win_find_first_file_utf8(const char* filename, LPWIN32_FIND_DATA findfiledata)
+{
+ HANDLE result = 0;
+ TCHAR* t_filename = ui_wstring_from_utf8(filename);
+ if( !t_filename )
+ return result;
+
+ result = FindFirstFile(t_filename, findfiledata);
+
+ free(t_filename);
+
+ return result;
+}
+
diff --git a/docs/release/src/osd/winui/mui_util.h b/docs/release/src/osd/winui/mui_util.h
new file mode 100644
index 00000000000..3633b41f5d9
--- /dev/null
+++ b/docs/release/src/osd/winui/mui_util.h
@@ -0,0 +1,101 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef MUI_UTIL_H
+#define MUI_UTIL_H
+
+#include "emucore.h"
+
+extern void __cdecl ErrorMsg(const char* fmt, ...);
+extern void __cdecl dprintf(const char* fmt, ...);
+
+
+extern UINT GetDepth(HWND hWnd);
+
+/* Open a text file */
+extern void DisplayTextFile(HWND hWnd, const char *cName);
+
+#define PACKVERSION(major,minor) MAKELONG(minor,major)
+
+/* Check for old version of comctl32.dll */
+extern LONG GetCommonControlVersion(void);
+
+extern char * MyStrStrI(const char* pFirst, const char* pSrch);
+extern char * ConvertToWindowsNewlines(const char *source);
+
+extern const char * GetDriverFilename(int nIndex);
+
+BOOL DriverIsClone(int driver_index);
+BOOL DriverIsBroken(int driver_index);
+BOOL DriverIsHarddisk(int driver_index);
+BOOL DriverHasOptionalBIOS(int driver_index);
+BOOL DriverIsStereo(int driver_index);
+BOOL DriverIsVector(int driver_index);
+int DriverNumScreens(int driver_index);
+BOOL DriverIsBios(int driver_index);
+BOOL DriverUsesRoms(int driver_index);
+BOOL DriverUsesSamples(int driver_index);
+BOOL DriverUsesTrackball(int driver_index);
+BOOL DriverUsesLightGun(int driver_index);
+BOOL DriverUsesMouse(int driver_index);
+BOOL DriverSupportsSaveState(int driver_index);
+BOOL DriverIsVertical(int driver_index);
+BOOL DriverIsMechanical(int driver_index);
+BOOL DriverIsArcade(int driver_index);
+BOOL DriverHasRam(int driver_index);
+
+int isDriverVector(const machine_config *config);
+int numberOfSpeakers(const machine_config *config);
+int numberOfScreens(const machine_config *config);
+
+void FlushFileCaches(void);
+
+BOOL StringIsSuffixedBy(const char *s, const char *suffix);
+
+BOOL SafeIsAppThemed(void);
+
+// provides result of FormatMessage()
+// resulting buffer must be free'd with LocalFree()
+void GetSystemErrorMessage(DWORD dwErrorId, TCHAR **tErrorMessage);
+
+HICON win_extract_icon_utf8(HINSTANCE inst, const char* exefilename, UINT iconindex);
+TCHAR* win_tstring_strdup(LPCTSTR str);
+HANDLE win_create_file_utf8(const char* filename, DWORD desiredmode, DWORD sharemode,
+ LPSECURITY_ATTRIBUTES securityattributes, DWORD creationdisposition,
+ DWORD flagsandattributes, HANDLE templatehandle);
+DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer);
+HANDLE win_find_first_file_utf8(const char* filename, LPWIN32_FIND_DATA findfiledata);
+
+ // wstring_from_utf8
+ //============================================================
+
+WCHAR *ui_wstring_from_utf8(const char *utf8string)
+{
+ int char_count;
+ WCHAR *result;
+
+ // convert MAME string (UTF-8) to UTF-16
+ char_count = MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, nullptr, 0);
+ result = (WCHAR *)malloc(char_count * sizeof(*result));
+ if (result != nullptr)
+ MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, result, char_count);
+
+ return result;
+}
+
+char *ui_utf8_from_wstring(const WCHAR *wstring)
+{
+ int char_count;
+ char *result;
+
+ // convert UTF-16 to MAME string (UTF-8)
+ char_count = WideCharToMultiByte(CP_UTF8, 0, wstring, -1, nullptr, 0, nullptr, nullptr);
+ result = (char *)malloc(char_count * sizeof(*result));
+ if (result != nullptr)
+ WideCharToMultiByte(CP_UTF8, 0, wstring, -1, result, char_count, nullptr, nullptr);
+ return result;
+}
+
+
+#endif /* MUI_UTIL_H */
+
diff --git a/docs/release/src/osd/winui/newui.cpp b/docs/release/src/osd/winui/newui.cpp
new file mode 100644
index 00000000000..5ee6d76e5dd
--- /dev/null
+++ b/docs/release/src/osd/winui/newui.cpp
@@ -0,0 +1,3364 @@
+// For licensing and usage information, read docs/winui_license.txt
+//************************************************************************************************
+// MASTER
+//
+// newui.c - This is the NEWUI Windows dropdown menu system
+//
+// known bugs:
+// - Unable to modify keyboard or joystick. Last known to be working in 0.158 .
+// Need to use the default UI.
+//
+//
+//************************************************************************************************
+
+// Set minimum windows version to XP
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
+#define _WIN32_WINNT 0x501
+
+
+// standard windows headers
+#include "newui.h"
+
+#include <shellapi.h>
+
+
+enum _win_file_dialog_type
+{
+ WIN_FILE_DIALOG_OPEN = 1,
+ WIN_FILE_DIALOG_SAVE
+};
+typedef enum _win_file_dialog_type win_file_dialog_type;
+
+typedef struct _win_open_file_name win_open_file_name;
+struct _win_open_file_name
+{
+ win_file_dialog_type type; // type of file dialog
+ HWND owner; // owner of the dialog
+ HINSTANCE instance; // instance
+ const char * filter; // pipe char ("|") delimited strings
+ DWORD filter_index; // index into filter
+ char filename[MAX_PATH]; // filename buffer
+ const char * initial_directory; // initial directory for dialog
+ DWORD flags; // standard flags
+ LPARAM custom_data; // custom data for dialog hook
+ LPOFNHOOKPROC hook; // custom dialog hook
+ LPCTSTR template_name; // custom dialog template
+};
+
+
+typedef struct _dialog_box dialog_box;
+
+struct dialog_layout
+{
+ short label_width;
+ short combo_width;
+};
+
+typedef void (*dialog_itemstoreval)(void *param, int val);
+typedef void (*dialog_itemchangedproc)(dialog_box *dialog, HWND dlgitem, void *changed_param);
+typedef void (*dialog_notification)(dialog_box *dialog, HWND dlgwnd, NMHDR *notification, void *param);
+
+#ifdef UNICODE
+#define win_dialog_tcsdup win_dialog_wcsdup
+#else
+#define win_dialog_tcsdup win_dialog_strdup
+#endif
+
+#define SEQWM_SETFOCUS (WM_APP + 0)
+#define SEQWM_KILLFOCUS (WM_APP + 1)
+
+enum
+{
+ TRIGGER_INITDIALOG = 1,
+ TRIGGER_APPLY = 2,
+ TRIGGER_CHANGED = 4
+};
+
+typedef LRESULT (*trigger_function)(dialog_box *dialog, HWND dlgwnd, UINT message, WPARAM wparam, LPARAM lparam);
+
+struct dialog_info_trigger
+{
+ struct dialog_info_trigger *next;
+ WORD dialog_item;
+ WORD trigger_flags;
+ UINT message;
+ WPARAM wparam;
+ LPARAM lparam;
+ void (*storeval)(void *param, int val);
+ void *storeval_param;
+ trigger_function trigger_proc;
+};
+
+struct dialog_object_pool
+{
+ HGDIOBJ objects[16];
+};
+
+struct _dialog_box
+{
+ HGLOBAL handle;
+ size_t handle_size;
+ struct dialog_info_trigger *trigger_first;
+ struct dialog_info_trigger *trigger_last;
+ WORD item_count;
+ WORD size_x, size_y;
+ WORD pos_x, pos_y;
+ WORD cursize_x, cursize_y;
+ WORD home_y;
+ DWORD style;
+ int combo_string_count;
+ int combo_default_value;
+ //object_pool *mempool;
+ struct dialog_object_pool *objpool;
+ const struct dialog_layout *layout;
+
+ // singular notification callback; hack
+ UINT notify_code;
+ dialog_notification notify_callback;
+ void *notify_param;
+};
+
+enum _seqselect_state
+{
+ SEQSELECT_STATE_NOT_POLLING,
+ SEQSELECT_STATE_POLLING,
+ SEQSELECT_STATE_POLLING_COMPLETE
+};
+typedef enum _seqselect_state seqselect_state;
+
+// this is the structure that gets associated with each input_seq edit box
+typedef struct _seqselect_info seqselect_info;
+struct _seqselect_info
+{
+ WNDPROC oldwndproc;
+ ioport_field *field; // pointer to the field
+ ioport_field::user_settings settings; // the new settings
+ input_seq *code; // the input_seq within settings
+ WORD pos;
+ BOOL is_analog;
+ seqselect_state poll_state;
+};
+
+
+
+//============================================================
+// PARAMETERS
+//============================================================
+
+#define DIM_VERTICAL_SPACING 3
+#define DIM_HORIZONTAL_SPACING 5
+#define DIM_NORMAL_ROW_HEIGHT 10
+#define DIM_COMBO_ROW_HEIGHT 12
+#define DIM_SLIDER_ROW_HEIGHT 18
+#define DIM_BUTTON_ROW_HEIGHT 12
+#define DIM_EDIT_WIDTH 120
+#define DIM_BUTTON_WIDTH 50
+#define DIM_ADJUSTER_SCR_WIDTH 12
+#define DIM_ADJUSTER_HEIGHT 12
+#define DIM_SCROLLBAR_WIDTH 10
+#define DIM_BOX_VERTSKEW -3
+
+#define DLGITEM_BUTTON ((const WCHAR *) dlgitem_button)
+#define DLGITEM_EDIT ((const WCHAR *) dlgitem_edit)
+#define DLGITEM_STATIC ((const WCHAR *) dlgitem_static)
+#define DLGITEM_LISTBOX ((const WCHAR *) dlgitem_listbox)
+#define DLGITEM_SCROLLBAR ((const WCHAR *) dlgitem_scrollbar)
+#define DLGITEM_COMBOBOX ((const WCHAR *) dlgitem_combobox)
+
+#define DLGTEXT_OK "OK"
+#define DLGTEXT_APPLY "Apply"
+#define DLGTEXT_CANCEL "Cancel"
+
+#define FONT_SIZE 8
+#define FONT_FACE L"Arial"
+
+#define SCROLL_DELTA_LINE 10
+#define SCROLL_DELTA_PAGE 100
+
+#define LOG_WINMSGS 0
+#define DIALOG_STYLE WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION | DS_SETFONT
+#define MAX_DIALOG_HEIGHT 200
+
+
+
+//============================================================
+// LOCAL VARIABLES
+//============================================================
+
+static running_machine *Machine; // HACK - please fix
+
+static double pixels_to_xdlgunits;
+static double pixels_to_ydlgunits;
+
+static const struct dialog_layout default_layout = { 80, 140 };
+static const WORD dlgitem_button[] = { 0xFFFF, 0x0080 };
+static const WORD dlgitem_edit[] = { 0xFFFF, 0x0081 };
+static const WORD dlgitem_static[] = { 0xFFFF, 0x0082 };
+static const WORD dlgitem_listbox[] = { 0xFFFF, 0x0083 };
+static const WORD dlgitem_scrollbar[] = { 0xFFFF, 0x0084 };
+static const WORD dlgitem_combobox[] = { 0xFFFF, 0x0085 };
+static int joystick_menu_setup = 0;
+static char state_filename[MAX_PATH];
+static void add_filter_entry(std::string &dest, const char *description, const char *extensions);
+static const char* software_dir;
+
+
+//============================================================
+// PROTOTYPES
+//============================================================
+
+static void dialog_prime(dialog_box *di);
+static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, short width, short height, const char *str, const WCHAR *class_name, WORD *id);
+
+
+
+//============================================================
+// PARAMETERS
+//============================================================
+
+#define ID_FRAMESKIP_0 10000
+#define ID_DEVICE_0 11000
+#define ID_JOYSTICK_0 12000
+#define ID_VIDEO_VIEW_0 14000
+#define MAX_JOYSTICKS (8)
+
+enum
+{
+ DEVOPTION_OPEN,
+ DEVOPTION_CREATE,
+ DEVOPTION_CLOSE,
+ DEVOPTION_CASSETTE_PLAYRECORD,
+ DEVOPTION_CASSETTE_STOPPAUSE,
+ DEVOPTION_CASSETTE_PLAY,
+ DEVOPTION_CASSETTE_RECORD,
+ DEVOPTION_CASSETTE_REWIND,
+ DEVOPTION_CASSETTE_FASTFORWARD,
+ DEVOPTION_MAX
+};
+
+
+//========================================================================
+// LOCAL STRING FUNCTIONS (these require free after being called)
+//========================================================================
+
+static WCHAR *ui_wstring_from_utf8(const char *utf8string)
+{
+ int char_count;
+ WCHAR *result;
+
+ // convert MAME string (UTF-8) to UTF-16
+ char_count = MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, nullptr, 0);
+ result = (WCHAR *)malloc(char_count * sizeof(*result));
+ if (result != nullptr)
+ MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, result, char_count);
+
+ return result;
+}
+
+static char *ui_utf8_from_wstring(const WCHAR *wstring)
+{
+ int char_count;
+ char *result;
+
+ // convert UTF-16 to MAME string (UTF-8)
+ char_count = WideCharToMultiByte(CP_UTF8, 0, wstring, -1, nullptr, 0, nullptr, nullptr);
+ result = (char *)malloc(char_count * sizeof(*result));
+ if (result != nullptr)
+ WideCharToMultiByte(CP_UTF8, 0, wstring, -1, result, char_count, nullptr, nullptr);
+ return result;
+}
+
+
+
+//============================================================
+// win_get_file_name_dialog - sanitize all of the ugliness
+// in invoking GetOpenFileName() and GetSaveFileName()
+// called from win_file_dialog, state_dialog
+//============================================================
+
+static BOOL win_get_file_name_dialog(win_open_file_name *ofn)
+{
+ BOOL result = FALSE;
+ BOOL dialog_result;
+ OPENFILENAME os_ofn;
+ LPTSTR t_filter = NULL;
+ LPTSTR t_file = NULL;
+ DWORD t_file_size = 0;
+ LPTSTR t_initial_directory = NULL;
+ LPTSTR buffer;
+ char *utf8_file;
+ int i;
+
+ // do we have to translate the filter?
+ if (ofn->filter)
+ {
+ buffer = ui_wstring_from_utf8(ofn->filter);
+ if (!buffer)
+ goto done;
+
+ // convert a pipe-char delimited string into a NUL delimited string
+ t_filter = (LPTSTR) alloca((_tcslen(buffer) + 2) * sizeof(*t_filter));
+ for (i = 0; buffer[i] != '\0'; i++)
+ t_filter[i] = (buffer[i] != '|') ? buffer[i] : '\0';
+ t_filter[i++] = '\0';
+ t_filter[i++] = '\0';
+ free(buffer);
+ }
+
+ // do we need to translate the file parameter?
+ if (ofn->filename)
+ {
+ buffer = ui_wstring_from_utf8(ofn->filename);
+ if (!buffer)
+ goto done;
+
+ t_file_size = ((_tcslen(buffer) + 1) > MAX_PATH) ? (_tcslen(buffer) + 1) : MAX_PATH;
+ t_file = (LPTSTR) alloca(t_file_size * sizeof(*t_file));
+ _tcscpy(t_file, buffer);
+ free(buffer);
+ }
+
+ // do we need to translate the initial directory?
+ if (ofn->initial_directory)
+ {
+ t_initial_directory = ui_wstring_from_utf8(ofn->initial_directory);
+ if (t_initial_directory == NULL)
+ goto done;
+ }
+
+ // translate our custom structure to a native Win32 structure
+ memset(&os_ofn, 0, sizeof(os_ofn));
+ os_ofn.lStructSize = sizeof(OPENFILENAME);
+ os_ofn.hwndOwner = ofn->owner;
+ os_ofn.hInstance = ofn->instance;
+ os_ofn.lpstrFilter = t_filter;
+ os_ofn.nFilterIndex = ofn->filter_index;
+ os_ofn.lpstrFile = t_file;
+ os_ofn.nMaxFile = t_file_size;
+ os_ofn.lpstrInitialDir = t_initial_directory;
+ os_ofn.Flags = ofn->flags;
+ os_ofn.lCustData = ofn->custom_data;
+ os_ofn.lpfnHook = ofn->hook;
+ os_ofn.lpTemplateName = ofn->template_name;
+
+ // invoke the correct Win32 call
+ switch(ofn->type)
+ {
+ case WIN_FILE_DIALOG_OPEN:
+ dialog_result = GetOpenFileName(&os_ofn);
+ break;
+
+ case WIN_FILE_DIALOG_SAVE:
+ dialog_result = GetSaveFileName(&os_ofn);
+ break;
+
+ default:
+ // should not reach here
+ dialog_result = FALSE;
+ break;
+ }
+
+ // copy data out
+ ofn->filter_index = os_ofn.nFilterIndex;
+ ofn->flags = os_ofn.Flags;
+
+ // copy file back out into passed structure
+ if (t_file)
+ {
+ utf8_file = ui_utf8_from_wstring(t_file);
+ if (!utf8_file)
+ goto done;
+
+ snprintf(ofn->filename, ARRAY_LENGTH(ofn->filename), "%s", utf8_file);
+ free(utf8_file);
+ }
+
+ // we've completed the process
+ result = dialog_result;
+
+done:
+ if (t_initial_directory)
+ free(t_initial_directory);
+ return result;
+}
+
+
+
+//============================================================
+// win_scroll_window
+// called from dialog_proc
+//============================================================
+
+static void win_scroll_window(HWND window, WPARAM wparam, int scroll_bar, int scroll_delta_line)
+{
+ SCROLLINFO si;
+ int scroll_pos;
+
+ // retrieve vital info about the scroll bar
+ memset(&si, 0, sizeof(si));
+ si.cbSize = sizeof(si);
+ si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS;
+ GetScrollInfo(window, scroll_bar, &si);
+
+ scroll_pos = si.nPos;
+
+ // change scroll_pos in accordance with this message
+ switch(LOWORD(wparam))
+ {
+ case SB_BOTTOM:
+ scroll_pos = si.nMax;
+ break;
+ case SB_LINEDOWN:
+ scroll_pos += scroll_delta_line;
+ break;
+ case SB_LINEUP:
+ scroll_pos -= scroll_delta_line;
+ break;
+ case SB_PAGEDOWN:
+ scroll_pos += scroll_delta_line;
+ break;
+ case SB_PAGEUP:
+ scroll_pos -= scroll_delta_line;
+ break;
+ case SB_THUMBPOSITION:
+ case SB_THUMBTRACK:
+ scroll_pos = HIWORD(wparam);
+ break;
+ case SB_TOP:
+ scroll_pos = si.nMin;
+ break;
+ }
+
+ // max out the scroll bar value
+ if (scroll_pos < si.nMin)
+ scroll_pos = si.nMin;
+ else if (scroll_pos > (si.nMax - si.nPage))
+ scroll_pos = (si.nMax - si.nPage);
+
+ // if the value changed, set the scroll position
+ if (scroll_pos != si.nPos)
+ {
+ SetScrollPos(window, scroll_bar, scroll_pos, TRUE);
+ ScrollWindowEx(window, 0, si.nPos - scroll_pos, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE);
+ }
+}
+
+
+
+//============================================================
+// win_append_menu_utf8
+// create a menu item
+//============================================================
+
+static BOOL win_append_menu_utf8(HMENU menu, UINT flags, UINT_PTR id, const char *item)
+{
+ BOOL result;
+ const TCHAR *t_item = (const TCHAR*)item;
+ TCHAR *t_str = NULL;
+
+ // only convert string when it's not a bitmap
+ if (!(flags & MF_BITMAP) && item)
+ {
+ t_str = ui_wstring_from_utf8(item);
+ t_item = t_str;
+ }
+
+ result = AppendMenu(menu, flags, id, t_item);
+
+ if (t_str)
+ free(t_str);
+
+ return result;
+}
+
+
+
+//============================================================
+// call_windowproc
+// called from adjuster_sb_wndproc, seqselect_wndproc
+//============================================================
+
+static LRESULT call_windowproc(WNDPROC wndproc, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ LRESULT rc;
+ if (IsWindowUnicode(hwnd))
+ rc = CallWindowProcW(wndproc, hwnd, msg, wparam, lparam);
+ else
+ rc = CallWindowProcA(wndproc, hwnd, msg, wparam, lparam);
+ return rc;
+}
+
+
+
+//==========================================================================
+// dialog_write
+// called from dialog_write_string, win_dialog_init, dialog_write_item
+//==========================================================================
+
+static int dialog_write(struct _dialog_box *di, const void *ptr, size_t sz, int align)
+{
+ HGLOBAL newhandle;
+ size_t base;
+ UINT8 *mem;
+ UINT8 *mem2;
+
+ if (!di->handle)
+ {
+ newhandle = GlobalAlloc(GMEM_ZEROINIT, sz);
+ base = 0;
+ }
+ else
+ {
+ base = di->handle_size;
+ base += align - 1;
+ base -= base % align;
+ newhandle = GlobalReAlloc(di->handle, base + sz, GMEM_ZEROINIT);
+ if (!newhandle)
+ {
+ newhandle = GlobalAlloc(GMEM_ZEROINIT, base + sz);
+ if (newhandle)
+ {
+ mem = (UINT8*)GlobalLock(di->handle);
+ mem2 = (UINT8*)GlobalLock(newhandle);
+ memcpy(mem2, mem, base);
+ GlobalUnlock(di->handle);
+ GlobalUnlock(newhandle);
+ GlobalFree(di->handle);
+ }
+ }
+ }
+ if (!newhandle)
+ return 1;
+
+ mem = (UINT8*)GlobalLock(newhandle);
+ memcpy(mem + base, ptr, sz);
+ GlobalUnlock(newhandle);
+ di->handle = newhandle;
+ di->handle_size = base + sz;
+ return 0;
+}
+
+
+
+//============================================================
+// dialog_write_string
+// called from win_dialog_init, dialog_write_item
+//============================================================
+
+static int dialog_write_string(dialog_box *di, const WCHAR *str)
+{
+ if (!str)
+ str = L"";
+ return dialog_write(di, str, (wcslen(str) + 1) * sizeof(WCHAR), 2);
+}
+
+
+
+
+//============================================================
+// win_dialog_exit
+// called from win_dialog_init, calc_dlgunits_multiple, change_device, and all customise_input functions
+//============================================================
+
+static void win_dialog_exit(dialog_box *dialog)
+{
+ int i;
+ struct dialog_object_pool *objpool;
+
+ if (!dialog)
+ printf("No dialog passed to win_dialog_exit\n");
+ assert(dialog);
+
+ objpool = dialog->objpool;
+ if (objpool)
+ {
+ for (i = 0; i < ARRAY_LENGTH(objpool->objects); i++)
+ DeleteObject(objpool->objects[i]);
+ }
+
+ if (dialog->handle)
+ GlobalFree(dialog->handle);
+
+ free(dialog);
+}
+
+
+
+//===========================================================================
+// win_dialog_init
+// called from calc_dlgunits_multiple, and all customise_input functions
+//===========================================================================
+
+dialog_box *win_dialog_init(const char *title, const struct dialog_layout *layout)
+{
+ struct _dialog_box *di;
+ DLGTEMPLATE dlg_template;
+ WORD w[2];
+ WCHAR *w_title;
+ int rc;
+
+ // use default layout if not specified
+ if (!layout)
+ layout = &default_layout;
+
+ // create the dialog structure
+ di = (_dialog_box *)malloc(sizeof(struct _dialog_box));
+ if (!di)
+ goto error;
+ memset(di, 0, sizeof(*di));
+
+ di->layout = layout;
+
+ memset(&dlg_template, 0, sizeof(dlg_template));
+ dlg_template.style = di->style = DIALOG_STYLE;
+ dlg_template.x = 10;
+ dlg_template.y = 10;
+ if (dialog_write(di, &dlg_template, sizeof(dlg_template), 4))
+ goto error;
+
+ w[0] = 0;
+ w[1] = 0;
+ if (dialog_write(di, w, sizeof(w), 2))
+ goto error;
+
+ w_title = ui_wstring_from_utf8(title);
+ rc = dialog_write_string(di, w_title);
+ free(w_title);
+ if (rc)
+ goto error;
+
+ // set the font, if necessary
+ if (di->style & DS_SETFONT)
+ {
+ w[0] = FONT_SIZE;
+ if (dialog_write(di, w, sizeof(w[0]), 2))
+ goto error;
+ if (dialog_write_string(di, FONT_FACE))
+ goto error;
+ }
+
+ return di;
+
+error:
+ if (di)
+ win_dialog_exit(di);
+ return NULL;
+}
+
+
+//============================================================
+// compute_dlgunits_multiple
+// called from dialog_scrollbar_init
+//============================================================
+
+static void calc_dlgunits_multiple(void)
+{
+ dialog_box *dialog = NULL;
+ short offset_x = 2048;
+ short offset_y = 2048;
+ const char *wnd_title = "Foo";
+ WORD id;
+ HWND dlg_window = NULL;
+ HWND child_window;
+ RECT r;
+
+ if ((pixels_to_xdlgunits == 0) || (pixels_to_ydlgunits == 0))
+ {
+ // create a bogus dialog
+ dialog = win_dialog_init(NULL, NULL);
+ if (!dialog)
+ goto done;
+
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, 0, 0, offset_x, offset_y, wnd_title, DLGITEM_STATIC, &id))
+ goto done;
+
+ dialog_prime(dialog);
+ dlg_window = CreateDialogIndirectParam(NULL, (const DLGTEMPLATE*)dialog->handle, NULL, NULL, 0);
+ child_window = GetDlgItem(dlg_window, id);
+
+ GetWindowRect(child_window, &r);
+ pixels_to_xdlgunits = (double)(r.right - r.left) / offset_x;
+ pixels_to_ydlgunits = (double)(r.bottom - r.top) / offset_y;
+
+done:
+ if (dialog)
+ win_dialog_exit(dialog);
+ if (dlg_window)
+ DestroyWindow(dlg_window);
+ }
+}
+
+
+
+//============================================================
+// dialog_trigger
+// called from dialog_proc, file_dialog_hook
+//============================================================
+
+static void dialog_trigger(HWND dlgwnd, WORD trigger_flags)
+{
+ LRESULT result;
+ HWND dialog_item;
+ struct _dialog_box *di;
+ struct dialog_info_trigger *trigger;
+ LONG_PTR l;
+
+ l = GetWindowLongPtr(dlgwnd, GWLP_USERDATA);
+ di = (struct _dialog_box *) l;
+ if (!di)
+ printf("Unexpected result of di in dialog_trigger\n");
+ assert(di);
+ for (trigger = di->trigger_first; trigger; trigger = trigger->next)
+ {
+ if (trigger->trigger_flags & trigger_flags)
+ {
+ if (trigger->dialog_item)
+ dialog_item = GetDlgItem(dlgwnd, trigger->dialog_item);
+ else
+ dialog_item = dlgwnd;
+ if (!dialog_item)
+ printf("Unexpected result of dialog_item in dialog_trigger\n");
+ assert(dialog_item);
+ result = 0;
+
+ if (trigger->message)
+ result = SendMessage(dialog_item, trigger->message, trigger->wparam, trigger->lparam);
+ if (trigger->trigger_proc)
+ result = trigger->trigger_proc(di, dialog_item, trigger->message, trigger->wparam, trigger->lparam);
+
+ if (trigger->storeval)
+ trigger->storeval(trigger->storeval_param, result);
+ }
+ }
+}
+
+//============================================================
+// dialog_proc
+// called from win_dialog_runmodal
+//============================================================
+
+static INT_PTR CALLBACK dialog_proc(HWND dlgwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ INT_PTR handled = TRUE;
+ std::string buf;
+ WORD command;
+
+ switch(msg)
+ {
+ case WM_INITDIALOG:
+ SetWindowLongPtr(dlgwnd, GWLP_USERDATA, (LONG_PTR) lparam);
+ dialog_trigger(dlgwnd, TRIGGER_INITDIALOG);
+ break;
+
+ case WM_COMMAND:
+ command = LOWORD(wparam);
+
+ buf = win_get_window_text_utf8((HWND) lparam);
+ if (!strcmp(buf.c_str(), DLGTEXT_OK))
+ command = IDOK;
+ else if (!strcmp(buf.c_str(), DLGTEXT_CANCEL))
+ command = IDCANCEL;
+ else
+ command = 0;
+
+ switch(command)
+ {
+ case IDOK:
+ dialog_trigger(dlgwnd, TRIGGER_APPLY);
+ // fall through
+
+ case IDCANCEL:
+ EndDialog(dlgwnd, 0);
+ break;
+
+ default:
+ handled = FALSE;
+ break;
+ }
+ break;
+
+ case WM_SYSCOMMAND:
+ if (wparam == SC_CLOSE)
+ EndDialog(dlgwnd, 0);
+ else
+ handled = FALSE;
+
+ break;
+
+ case WM_VSCROLL:
+ if (lparam)
+ // this scroll message came from an actual scroll bar window;
+ // pass it on
+ SendMessage((HWND) lparam, msg, wparam, lparam);
+ else
+ // scroll the dialog
+ win_scroll_window(dlgwnd, wparam, SB_VERT, SCROLL_DELTA_LINE);
+
+ break;
+
+ default:
+ handled = FALSE;
+ break;
+ }
+ return handled;
+}
+
+
+
+//=========================================================================================================================================================================================
+// dialog_write_item
+// called from calc_dlgunits_multiple, win_dialog_add_active_combobox, win_dialog_add_adjuster, dialog_add_single_seqselect, win_dialog_add_portselect, win_dialog_add_standard_buttons
+//=========================================================================================================================================================================================
+
+static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, short width, short height, const char *str, const WCHAR *class_name, WORD *id)
+{
+ DLGITEMTEMPLATE item_template;
+ UINT class_name_length;
+ WORD w;
+ WCHAR *w_str;
+ int rc;
+
+ memset(&item_template, 0, sizeof(item_template));
+ item_template.style = style;
+ item_template.x = x;
+ item_template.y = y;
+ item_template.cx = width;
+ item_template.cy = height;
+ item_template.id = di->item_count + 1;
+
+ if (dialog_write(di, &item_template, sizeof(item_template), 4))
+ return 1;
+
+ if (*class_name == 0xffff)
+ class_name_length = 4;
+ else
+ class_name_length = (wcslen(class_name) + 1) * sizeof(WCHAR);
+ if (dialog_write(di, class_name, class_name_length, 2))
+ return 1;
+
+ w_str = str ? ui_wstring_from_utf8(str) : NULL;
+ rc = dialog_write_string(di, w_str);
+ if (w_str)
+ free(w_str);
+ if (rc)
+ return 1;
+
+ w = 0;
+ if (dialog_write(di, &w, sizeof(w), 2))
+ return 1;
+
+ di->item_count++;
+
+ if (id)
+ *id = di->item_count;
+ return 0;
+}
+
+
+
+//==========================================================================================================================================================
+// dialog_add_trigger
+// called from dialog_add_scrollbar, win_dialog_add_active_combobox, win_dialog_add_combobox_item, win_dialog_add_adjuster, dialog_add_single_seqselect
+//==========================================================================================================================================================
+
+static int dialog_add_trigger(struct _dialog_box *di, WORD dialog_item, WORD trigger_flags, UINT message, trigger_function trigger_proc,
+ WPARAM wparam, LPARAM lparam, void (*storeval)(void *param, int val), void *storeval_param)
+{
+ if (!di)
+ printf("Unexpected result of di in dialog_add_trigger\n");
+ assert(di);
+ if (!trigger_flags)
+ printf("Unexpected result of trigger_flags in dialog_add_trigger\n");
+ assert(trigger_flags);
+
+ dialog_info_trigger *trigger = new(dialog_info_trigger);
+
+ trigger->next = NULL;
+ trigger->trigger_flags = trigger_flags;
+ trigger->dialog_item = dialog_item;
+ trigger->message = message;
+ trigger->trigger_proc = trigger_proc;
+ trigger->wparam = wparam;
+ trigger->lparam = lparam;
+ trigger->storeval = storeval;
+ trigger->storeval_param = storeval_param;
+
+ if (di->trigger_last)
+ di->trigger_last->next = trigger;
+ else
+ di->trigger_first = trigger;
+ di->trigger_last = trigger;
+ return 0;
+}
+
+
+
+//============================================================
+// dialog_scrollbar_init
+// called from dialog_add_scrollbar
+//============================================================
+
+static LRESULT dialog_scrollbar_init(dialog_box *dialog, HWND dlgwnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ SCROLLINFO si;
+
+ calc_dlgunits_multiple();
+
+ memset(&si, 0, sizeof(si));
+ si.cbSize = sizeof(si);
+ si.nMin = pixels_to_ydlgunits * 0;
+ si.nMax = pixels_to_ydlgunits * dialog->size_y;
+ si.nPage = pixels_to_ydlgunits * MAX_DIALOG_HEIGHT;
+ si.fMask = SIF_PAGE | SIF_RANGE;
+
+ SetScrollInfo(dlgwnd, SB_VERT, &si, TRUE);
+ return 0;
+}
+
+
+
+//============================================================
+// dialog_add_scrollbar
+// called from dialog_prime
+//============================================================
+
+static int dialog_add_scrollbar(dialog_box *dialog)
+{
+ if (dialog_add_trigger(dialog, 0, TRIGGER_INITDIALOG, 0, dialog_scrollbar_init, 0, 0, NULL, NULL))
+ return 1;
+
+ dialog->style |= WS_VSCROLL;
+ return 0;
+}
+
+
+
+//==============================================================================
+// dialog_prime
+// called from calc_dlgunits_multiple, win_dialog_runmodal, win_file_dialog
+//==============================================================================
+
+static void dialog_prime(dialog_box *di)
+{
+ DLGTEMPLATE *dlg_template;
+
+ if (di->size_y > MAX_DIALOG_HEIGHT)
+ {
+ di->size_x += DIM_SCROLLBAR_WIDTH;
+ dialog_add_scrollbar(di);
+ }
+
+ dlg_template = (DLGTEMPLATE *) GlobalLock(di->handle);
+ dlg_template->cdit = di->item_count;
+ dlg_template->cx = di->size_x;
+ dlg_template->cy = (di->size_y > MAX_DIALOG_HEIGHT) ? MAX_DIALOG_HEIGHT : di->size_y;
+ dlg_template->style = di->style;
+ GlobalUnlock(di->handle);
+}
+
+
+
+//============================================================
+// dialog_get_combo_value
+// called from win_dialog_add_active_combobox
+//============================================================
+
+static LRESULT dialog_get_combo_value(dialog_box *dialog, HWND dialog_item, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ int idx;
+ idx = SendMessage(dialog_item, CB_GETCURSEL, 0, 0);
+ if (idx == CB_ERR)
+ return 0;
+ return SendMessage(dialog_item, CB_GETITEMDATA, idx, 0);
+}
+
+
+
+//============================================================
+// dialog_get_adjuster_value
+// called from win_dialog_add_adjuster
+//============================================================
+
+static LRESULT dialog_get_adjuster_value(dialog_box *dialog, HWND dialog_item, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ TCHAR buf[32];
+ GetWindowText(dialog_item, buf, ARRAY_LENGTH(buf));
+ return _ttoi(buf);
+}
+
+
+
+//====================================================================================================
+// dialog_new_control
+// called from win_dialog_add_active_combobox, win_dialog_add_adjuster, win_dialog_add_portselect
+//====================================================================================================
+
+static void dialog_new_control(struct _dialog_box *di, short *x, short *y)
+{
+ *x = di->pos_x + DIM_HORIZONTAL_SPACING;
+ *y = di->pos_y + DIM_VERTICAL_SPACING;
+}
+
+
+
+//====================================================================================================
+// dialog_finish_control
+// called from win_dialog_add_active_combobox, win_dialog_add_adjuster, win_dialog_add_portselect
+//====================================================================================================
+
+static void dialog_finish_control(struct _dialog_box *di, short x, short y)
+{
+ di->pos_y = y;
+
+ // update dialog size
+ if (x > di->size_x)
+ di->size_x = x;
+ if (y > di->size_y)
+ di->size_y = y;
+ if (x > di->cursize_x)
+ di->cursize_x = x;
+ if (y > di->cursize_y)
+ di->cursize_y = y;
+}
+
+
+
+//============================================================
+// dialog_combo_changed
+// called from win_dialog_add_active_combobox
+//============================================================
+
+static LRESULT dialog_combo_changed(dialog_box *dialog, HWND dlgitem, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ dialog_itemchangedproc changed = (dialog_itemchangedproc) wparam;
+ changed(dialog, dlgitem, (void *) lparam);
+ return 0;
+}
+
+
+
+//============================================================
+// win_dialog_wcsdup
+// called from win_dialog_add_adjuster (via define)
+//============================================================
+
+static WCHAR *win_dialog_wcsdup(dialog_box *dialog, const WCHAR *s)
+{
+ WCHAR *result = global_alloc_array(WCHAR, wcslen(s) + 1);
+ if (result)
+ wcscpy(result, s);
+ return result;
+}
+
+
+
+//============================================================
+// win_dialog_add_active_combobox
+// called from win_dialog_add_combobox
+//============================================================
+
+static int win_dialog_add_active_combobox(dialog_box *dialog, const char *item_label, int default_value,
+ dialog_itemstoreval storeval, void *storeval_param, dialog_itemchangedproc changed, void *changed_param)
+{
+ int rc = 1;
+ short x;
+ short y;
+
+ dialog_new_control(dialog, &x, &y);
+
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT,
+ x, y, dialog->layout->label_width, DIM_COMBO_ROW_HEIGHT, item_label, DLGITEM_STATIC, NULL))
+ goto done;
+
+ y += DIM_BOX_VERTSKEW;
+
+ x += dialog->layout->label_width + DIM_HORIZONTAL_SPACING;
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST,
+ x, y, dialog->layout->combo_width, DIM_COMBO_ROW_HEIGHT * 8, NULL, DLGITEM_COMBOBOX, NULL))
+ goto done;
+ dialog->combo_string_count = 0;
+ dialog->combo_default_value = default_value;
+
+ // add the trigger invoked when the apply button is pressed
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_APPLY, 0, dialog_get_combo_value, 0, 0, storeval, storeval_param))
+ goto done;
+
+ // if appropriate, add the optional changed trigger
+ if (changed)
+ {
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG | TRIGGER_CHANGED, 0, dialog_combo_changed, (WPARAM) changed, (LPARAM) changed_param, NULL, NULL))
+ goto done;
+ }
+
+ x += dialog->layout->combo_width + DIM_HORIZONTAL_SPACING;
+ y += DIM_COMBO_ROW_HEIGHT + DIM_VERTICAL_SPACING * 2;
+
+ dialog_finish_control(dialog, x, y);
+ rc = 0;
+
+done:
+ return rc;
+}
+
+
+
+//============================================================
+// win_dialog_add_combobox
+// called from customise_switches, customise_analogcontrols
+//============================================================
+
+static int win_dialog_add_combobox(dialog_box *dialog, const char *item_label, int default_value, void (*storeval)(void *param, int val), void *storeval_param)
+{
+ return win_dialog_add_active_combobox(dialog, item_label, default_value, storeval, storeval_param, NULL, NULL);
+}
+
+
+
+//============================================================
+// win_dialog_add_combobox_item
+// called from customise_switches, customise_analogcontrols
+//============================================================
+
+static int win_dialog_add_combobox_item(dialog_box *dialog, const char *item_label, int item_data)
+{
+ // create our own copy of the string
+ size_t newsize = strlen(item_label) + 1;
+ wchar_t * t_item_label = new wchar_t[newsize];
+ //size_t convertedChars = 0;
+ //mbstowcs_s(&convertedChars, t_item_label, newsize, item_label, _TRUNCATE);
+ mbstowcs(t_item_label, item_label, newsize);
+
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, CB_ADDSTRING, NULL, 0, (LPARAM) t_item_label, NULL, NULL))
+ return 1;
+ dialog->combo_string_count++;
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, CB_SETITEMDATA, NULL, dialog->combo_string_count-1, (LPARAM) item_data, NULL, NULL))
+ return 1;
+ if (item_data == dialog->combo_default_value)
+ {
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, CB_SETCURSEL, NULL, dialog->combo_string_count-1, 0, NULL, NULL))
+ return 1;
+ }
+ return 0;
+}
+
+
+
+//============================================================
+// adjuster_sb_wndproc
+// called from adjuster_sb_setup
+//============================================================
+
+struct adjuster_sb_stuff
+{
+ WNDPROC oldwndproc;
+ int min_value;
+ int max_value;
+};
+
+static INT_PTR CALLBACK adjuster_sb_wndproc(HWND sbwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ INT_PTR result;
+ struct adjuster_sb_stuff *stuff;
+ std::string buf;
+ CHAR BUF[64];
+ HWND dlgwnd, editwnd;
+ int value, id;
+ LONG_PTR l;
+
+ l = GetWindowLongPtr(sbwnd, GWLP_USERDATA);
+ stuff = (struct adjuster_sb_stuff *) l;
+
+ if (msg == WM_VSCROLL)
+ {
+ id = GetWindowLong(sbwnd, GWL_ID);
+ dlgwnd = GetParent(sbwnd);
+ editwnd = GetDlgItem(dlgwnd, id - 1);
+ buf = win_get_window_text_utf8(editwnd);
+ value = atoi(buf.c_str());
+
+ switch(wparam)
+ {
+ case SB_LINEDOWN:
+ case SB_PAGEDOWN:
+ value--;
+ break;
+
+ case SB_LINEUP:
+ case SB_PAGEUP:
+ value++;
+ break;
+ }
+
+ if (value < stuff->min_value)
+ value = stuff->min_value;
+ else if (value > stuff->max_value)
+ value = stuff->max_value;
+ _snprintf(BUF, 64, "%d", value);
+ win_set_window_text_utf8(editwnd, BUF);
+ result = 0;
+ }
+ else
+ result = call_windowproc(stuff->oldwndproc, sbwnd, msg, wparam, lparam);
+
+ return result;
+}
+
+
+
+//============================================================
+// adjuster_sb_setup
+// called from win_dialog_add_adjuster
+//============================================================
+
+static LRESULT adjuster_sb_setup(dialog_box *dialog, HWND sbwnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ struct adjuster_sb_stuff *stuff;
+ LONG_PTR l;
+
+ stuff = global_alloc(adjuster_sb_stuff);
+ if (!stuff)
+ return 1;
+ stuff->min_value = (WORD) (lparam >> 0);
+ stuff->max_value = (WORD) (lparam >> 16);
+
+ l = (LONG_PTR) stuff;
+ SetWindowLongPtr(sbwnd, GWLP_USERDATA, l);
+ l = (LONG_PTR) adjuster_sb_wndproc;
+ l = SetWindowLongPtr(sbwnd, GWLP_WNDPROC, l);
+ stuff->oldwndproc = (WNDPROC) l;
+ return 0;
+}
+
+
+
+//============================================================
+// win_dialog_add_adjuster
+// called from customise_analogcontrols
+//============================================================
+
+static int win_dialog_add_adjuster(dialog_box *dialog, const char *item_label, int default_value,
+ int min_value, int max_value, BOOL is_percentage, dialog_itemstoreval storeval, void *storeval_param)
+{
+ short x;
+ short y;
+ TCHAR buf[32];
+ TCHAR *s;
+
+ dialog_new_control(dialog, &x, &y);
+
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, dialog->layout->label_width, DIM_ADJUSTER_HEIGHT, item_label, DLGITEM_STATIC, NULL))
+ goto error;
+ x += dialog->layout->label_width + DIM_HORIZONTAL_SPACING;
+
+ y += DIM_BOX_VERTSKEW;
+
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_NUMBER,
+ x, y, dialog->layout->combo_width - DIM_ADJUSTER_SCR_WIDTH, DIM_ADJUSTER_HEIGHT, NULL, DLGITEM_EDIT, NULL))
+ goto error;
+ x += dialog->layout->combo_width - DIM_ADJUSTER_SCR_WIDTH;
+
+ _sntprintf(buf, ARRAY_LENGTH(buf), is_percentage ? TEXT("%d%%") : TEXT("%d"), default_value);
+ s = win_dialog_tcsdup(dialog, buf);
+
+ if (!s)
+ return 1;
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, WM_SETTEXT, NULL, 0, (LPARAM) s, NULL, NULL))
+ goto error;
+
+ // add the trigger invoked when the apply button is pressed
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_APPLY, 0, dialog_get_adjuster_value, 0, 0, storeval, storeval_param))
+ goto error;
+
+ if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | WS_TABSTOP | SBS_VERT, x, y, DIM_ADJUSTER_SCR_WIDTH, DIM_ADJUSTER_HEIGHT, NULL, DLGITEM_SCROLLBAR, NULL))
+ goto error;
+ x += DIM_ADJUSTER_SCR_WIDTH + DIM_HORIZONTAL_SPACING;
+
+ if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, 0, adjuster_sb_setup, 0, MAKELONG(min_value, max_value), NULL, NULL))
+ return 1;
+
+ y += DIM_COMBO_ROW_HEIGHT + DIM_VERTICAL_SPACING * 2;
+
+ dialog_finish_control(dialog, x, y);
+ return 0;
+
+error:
+ return 1;
+}
+
+
+
+
+//============================================================
+// get_seqselect_info
+//============================================================
+
+static seqselect_info *get_seqselect_info(HWND editwnd)
+{
+ LONG_PTR lp;
+ lp = GetWindowLongPtr(editwnd, GWLP_USERDATA);
+ return (seqselect_info *) lp;
+}
+
+
+
+//=============================================================================
+// seqselect_settext
+// called from seqselect_start_read_from_main_thread, seqselect_setup
+//=============================================================================
+//#pragma GCC diagnostic push
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-value"
+#endif
+
+static void seqselect_settext(HWND editwnd)
+{
+ seqselect_info *stuff;
+ std::string seqstring, buf;
+
+ // the basics
+ stuff = get_seqselect_info(editwnd);
+ if (stuff == NULL)
+ return; // this should not happen - need to fix this
+
+ // retrieve the seq name
+ seqstring = Machine->input().seq_name(*stuff->code);
+
+ // change the text - avoid calls to SetWindowText() if we can
+ buf = win_get_window_text_utf8(editwnd);
+ if (buf != seqstring)
+ win_set_window_text_utf8(editwnd, seqstring.c_str());
+
+ // reset the selection
+ if (GetFocus() == editwnd)
+ {
+ DWORD start = 0, end = 0;
+ SendMessage(editwnd, EM_GETSEL, (WPARAM) (LPDWORD) &start, (LPARAM) (LPDWORD) &end);
+ if ((start != 0) || (end != buf.size()))
+ SendMessage(editwnd, EM_SETSEL, 0, -1);
+ }
+}
+
+#ifdef __GNUC__
+#pragma GCC diagnostic error "-Wunused-value"
+#endif
+
+
+//============================================================
+// seqselect_start_read_from_main_thread
+// called from seqselect_wndproc
+//============================================================
+
+static void seqselect_start_read_from_main_thread(void *param)
+{
+ seqselect_info *stuff;
+
+ // get the basics
+ HWND editwnd = (HWND) param;
+ stuff = get_seqselect_info(editwnd);
+
+ // are we currently polling? if so bail out
+ if (stuff->poll_state != SEQSELECT_STATE_NOT_POLLING)
+ return;
+
+ // change the state
+ stuff->poll_state = SEQSELECT_STATE_POLLING;
+
+ // the Win32 OSD code thinks that we are paused, we need to temporarily
+ // unpause ourselves or else we will block
+ int pause_count = 0;
+ while(Machine->paused() && !winwindow_ui_is_paused(*Machine))
+ {
+ winwindow_ui_pause(*Machine, FALSE);
+ pause_count++;
+ }
+
+ // start the polling
+ (*Machine).input().seq_poll_start(stuff->is_analog ? ITEM_CLASS_ABSOLUTE : ITEM_CLASS_SWITCH, NULL);
+
+ while(stuff->poll_state == SEQSELECT_STATE_POLLING)
+ {
+ // poll
+ if (Machine->input().seq_poll())
+ {
+ *stuff->code = Machine->input().seq_poll_final();
+ seqselect_settext(editwnd);
+ }
+ }
+
+ // we are no longer polling
+ stuff->poll_state = SEQSELECT_STATE_NOT_POLLING;
+
+ // repause the OSD code
+ while(pause_count--)
+ winwindow_ui_pause(*Machine, TRUE);
+}
+
+
+
+//============================================================
+// seqselect_stop_read_from_main_thread
+// called from seqselect_wndproc
+//============================================================
+
+static void seqselect_stop_read_from_main_thread(void *param)
+{
+ HWND editwnd;
+ seqselect_info *stuff;
+
+ // get the basics
+ editwnd = (HWND) param;
+ stuff = get_seqselect_info(editwnd);
+
+ // stop the read
+ if (stuff->poll_state == SEQSELECT_STATE_POLLING)
+ stuff->poll_state = SEQSELECT_STATE_POLLING_COMPLETE;
+}
+
+
+
+//============================================================
+// seqselect_wndproc
+// called from seqselect_setup
+//============================================================
+
+static INT_PTR CALLBACK seqselect_wndproc(HWND editwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+ seqselect_info *stuff;
+ INT_PTR result = 0;
+ BOOL call_baseclass = TRUE;
+
+ stuff = get_seqselect_info(editwnd);
+
+ switch(msg)
+ {
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ case WM_CHAR:
+ case WM_KEYUP:
+ case WM_SYSKEYUP:
+ result = 1;
+ call_baseclass = FALSE;
+ break;
+
+ case WM_SETFOCUS:
+ PostMessage(editwnd, SEQWM_SETFOCUS, 0, 0);
+ break;
+
+ case WM_KILLFOCUS:
+ PostMessage(editwnd, SEQWM_KILLFOCUS, 0, 0);
+ break;
+
+ case SEQWM_SETFOCUS:
+ // if we receive the focus, we should start a polling loop
+ seqselect_start_read_from_main_thread( (void *) editwnd);
+ break;
+
+ case SEQWM_KILLFOCUS:
+ // when we abort the focus, end any current polling loop
+ seqselect_stop_read_from_main_thread( (void *) editwnd);
+ break;
+
+ case WM_LBUTTONDOWN:
+ case WM_RBUTTONDOWN:
+ SetFocus(editwnd);
+ SendMessage(editwnd, EM_SETSEL, 0, -1);
+ call_baseclass = FALSE;
+ result = 0;
+ break;
+ }
+
+ if (call_baseclass)
+ result = call_windowproc(stuff->oldwndproc, editwnd, msg, wparam, lparam);
+ return result;
+}
+
+
+
+//============================================================
+// seqselect_setup
+// called from dialog_add_single_seqselect
+//============================================================
+
+static LRESULT seqselect_setup(dialog_box *dialog, HWND editwnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ seqselect_info *stuff = (seqselect_info *) lparam;
+ LONG_PTR lp;
+
+ lp = SetWindowLongPtr(editwnd, GWLP_WNDPROC, (LONG_PTR) seqselect_wndproc);
+ stuff->oldwndproc = (WNDPROC) lp;
+ SetWindowLongPtr(editwnd, GWLP_USERDATA, lparam);
+ seqselect_settext(editwnd);
+ return 0;
+}
+
+
+
+//============================================================
+// seqselect_apply
+// called from dialog_add_single_seqselect
+//============================================================
+
+static LRESULT seqselect_apply(dialog_box *dialog, HWND editwnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ seqselect_info *stuff;
+ stuff = get_seqselect_info(editwnd);
+
+ // store the settings
+ stuff->field->set_user_settings(stuff->settings);
+
+ return 0;
+}
+
+//============================================================
+// dialog_add_single_seqselect
+// called from win_dialog_add_portselect
+//============================================================
+
+static int dialog_add_single_seqselect(struct _dialog_box *di, short x, short y, short cx, short cy, ioport_field *field, int is_analog, int seqtype)
+{
+ // write the dialog item
+ if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_ENDELLIPSIS | ES_CENTER | SS_SUNKEN, x, y, cx, cy, NULL, DLGITEM_EDIT, NULL))
+ return 1;
+
+ // allocate a seqselect_info
+ seqselect_info *stuff = new(seqselect_info);
+ //seqselect_info *stuff;
+ //stuff = global_alloc(seqselect_info);
+ if (!stuff)
+ return 1;
+
+ // initialize the structure
+ memset(stuff, 0, sizeof(*stuff));
+ field->get_user_settings(stuff->settings);
+ stuff->field = field;
+ stuff->pos = di->item_count;
+ stuff->is_analog = is_analog;
+
+ // This next line is completely unsafe, but I do not know what to use *****************
+ stuff->code = const_cast <input_seq*> (&field->seq( (input_seq_type) seqtype) );
+
+ if (dialog_add_trigger(di, di->item_count, TRIGGER_INITDIALOG, 0, seqselect_setup, di->item_count, (LPARAM) stuff, NULL, NULL))
+ return 1;
+ if (dialog_add_trigger(di, di->item_count, TRIGGER_APPLY, 0, seqselect_apply, 0, 0, NULL, NULL))
+ return 1;
+ return 0;
+}
+
+
+
+//============================================================
+// win_dialog_add_seqselect
+// called from customise_input, customise_miscinput
+//============================================================
+
+static int win_dialog_add_portselect(dialog_box *dialog, ioport_field *field)
+{
+ dialog_box *di = dialog;
+ short x;
+ short y;
+ const char *port_name;
+ const char *this_port_name;
+ char *s;
+ int seq;
+ int seq_count = 0;
+ const char *port_suffix[3];
+ int seq_types[3];
+ int is_analog[3];
+ int len;
+
+ port_name = field->name();
+ if (!port_name)
+ printf("Blank port_name encountered in win_dialog_add_portselect\n");
+ assert(port_name);
+
+ if (field->type() > IPT_ANALOG_FIRST && field->type() < IPT_ANALOG_LAST)
+ {
+ seq_types[seq_count] = SEQ_TYPE_STANDARD;
+ port_suffix[seq_count] = " Analog";
+ is_analog[seq_count] = TRUE;
+ seq_count++;
+
+ seq_types[seq_count] = SEQ_TYPE_DECREMENT;
+ port_suffix[seq_count] = " Dec";
+ is_analog[seq_count] = FALSE;
+ seq_count++;
+
+ seq_types[seq_count] = SEQ_TYPE_INCREMENT;
+ port_suffix[seq_count] = " Inc";
+ is_analog[seq_count] = FALSE;
+ seq_count++;
+ }
+ else
+ {
+ seq_types[seq_count] = SEQ_TYPE_STANDARD;
+ port_suffix[seq_count] = NULL;
+ is_analog[seq_count] = FALSE;
+ seq_count++;
+ }
+
+ for (seq = 0; seq < seq_count; seq++)
+ {
+ // create our local name for this entry; also convert from
+ // MAME strings to wide strings
+ len = strlen(port_name);
+ s = (char *) alloca((len + (port_suffix[seq] ? strlen(port_suffix[seq]) : 0) + 1) * sizeof(*s));
+ strcpy(s, port_name);
+
+ if (port_suffix[seq])
+ strcpy(s + len, port_suffix[seq]);
+ this_port_name = s;
+
+ // no positions specified
+ dialog_new_control(di, &x, &y);
+
+ if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT | SS_NOPREFIX, x, y,
+ dialog->layout->label_width, DIM_NORMAL_ROW_HEIGHT, this_port_name, DLGITEM_STATIC, NULL))
+ return 1;
+ x += dialog->layout->label_width + DIM_HORIZONTAL_SPACING;
+
+ if (dialog_add_single_seqselect(di, x, y, DIM_EDIT_WIDTH, DIM_NORMAL_ROW_HEIGHT, field, is_analog[seq], seq_types[seq]))
+ return 1;
+ y += DIM_VERTICAL_SPACING + DIM_NORMAL_ROW_HEIGHT;
+ x += DIM_EDIT_WIDTH + DIM_HORIZONTAL_SPACING;
+
+ dialog_finish_control(di, x, y);
+ }
+ return 0;
+}
+
+
+
+//============================================================
+// win_dialog_add_standard_buttons
+//============================================================
+
+static int win_dialog_add_standard_buttons(dialog_box *dialog)
+{
+ dialog_box *di = dialog;
+ short x;
+ short y;
+
+ // Handle the case of an empty dialog box (size_x & size_y will be 0)
+ if (!di->size_x)
+ di->size_x = 3 * DIM_HORIZONTAL_SPACING + 2 * DIM_BUTTON_WIDTH;
+ if (!di->size_y)
+ di->size_y = DIM_VERTICAL_SPACING;
+
+ // work out where cancel button goes
+ x = di->size_x - DIM_HORIZONTAL_SPACING - DIM_BUTTON_WIDTH;
+ y = di->size_y + DIM_VERTICAL_SPACING;
+
+ // display cancel button
+ if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_CANCEL, DLGITEM_BUTTON, NULL))
+ return 1;
+
+ // work out where OK button goes
+ x -= DIM_HORIZONTAL_SPACING + DIM_BUTTON_WIDTH;
+
+ // display OK button
+ if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_OK, DLGITEM_BUTTON, NULL))
+ return 1;
+
+ di->size_y += DIM_BUTTON_ROW_HEIGHT + DIM_VERTICAL_SPACING * 2;
+
+ return 0;
+}
+
+
+
+//============================================================
+// before_display_dialog
+//============================================================
+
+static void before_display_dialog(running_machine &machine)
+{
+ Machine = &machine;
+ winwindow_ui_pause(machine, TRUE);
+}
+
+
+
+//============================================================
+// after_display_dialog
+//============================================================
+
+static void after_display_dialog(running_machine &machine)
+{
+ winwindow_ui_pause(machine, FALSE);
+}
+
+
+
+//============================================================
+// win_dialog_runmodal
+// called from the various customise_inputs functions
+//============================================================
+
+static void win_dialog_runmodal(running_machine &machine, HWND wnd, dialog_box *dialog)
+{
+ if (!dialog)
+ printf("Unexpected result in win_dialog_runmodal\n");
+ assert(dialog);
+
+ // finishing touches on the dialog
+ dialog_prime(dialog);
+
+ // show the dialog
+ before_display_dialog(machine);
+ DialogBoxIndirectParamW(NULL, (const DLGTEMPLATE*)dialog->handle, wnd, (DLGPROC) dialog_proc, (LPARAM) dialog);
+ after_display_dialog(machine);
+}
+
+
+
+//============================================================
+// win_file_dialog
+// called from change_device
+//============================================================
+
+static BOOL win_file_dialog(running_machine &machine, HWND parent, win_file_dialog_type dlgtype, const char *filter,
+ const char *initial_dir, char *filename, size_t filename_len)
+{
+ win_open_file_name ofn;
+ BOOL result = FALSE;
+
+ // set up the OPENFILENAME data structure
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.type = dlgtype;
+ ofn.owner = parent;
+ ofn.flags = OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
+ ofn.filter = filter;
+ ofn.initial_directory = initial_dir;
+
+ if (dlgtype == WIN_FILE_DIALOG_OPEN)
+ ofn.flags |= OFN_FILEMUSTEXIST;
+
+ snprintf(ofn.filename, ARRAY_LENGTH(ofn.filename), "%s", filename);
+
+ before_display_dialog(machine);
+ result = win_get_file_name_dialog(&ofn);
+ after_display_dialog(machine);
+
+ snprintf(filename, filename_len, "%s", ofn.filename);
+ return result;
+}
+
+
+
+//============================================================
+// customise_input
+//============================================================
+
+static void customise_input(running_machine &machine, HWND wnd, const char *title, int player, int inputclass)
+{
+ dialog_box *dlg;
+ int this_inputclass, this_player;
+
+ /* create the dialog */
+ dlg = win_dialog_init(title, NULL);
+ if (!dlg)
+ return;
+
+ for (auto &port : machine.ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ /* add if we match the group and we have a valid name */
+ const char *name = field.name();
+ this_inputclass = field.type_class();
+ this_player = field.player();
+
+ if ((name)
+ && (field.enabled())
+//check me && ((field->type() == IPT_OTHER && field->name()) || (machine.ioport().type_group(field->type(), field->player()) != IPG_INVALID))
+ && (this_player == player)
+ && (this_inputclass == inputclass))
+ {
+ if (win_dialog_add_portselect(dlg, &field))
+ goto done;
+ }
+ }
+ }
+
+ /* ...and now add OK/Cancel */
+ if (win_dialog_add_standard_buttons(dlg))
+ goto done;
+
+ /* ...and finally display the dialog */
+ win_dialog_runmodal(machine, wnd, dlg);
+
+done:
+ if (dlg)
+ win_dialog_exit(dlg);
+}
+
+
+
+//============================================================
+// customise_joystick
+//============================================================
+
+static void customise_joystick(running_machine &machine, HWND wnd, int joystick_num)
+{
+ customise_input(machine, wnd, "Joysticks/Controllers", joystick_num, INPUT_CLASS_CONTROLLER);
+}
+
+
+
+//============================================================
+// customise_keyboard
+//============================================================
+
+static void customise_keyboard(running_machine &machine, HWND wnd)
+{
+ customise_input(machine, wnd, "Emulated Keyboard", 0, INPUT_CLASS_KEYBOARD);
+}
+
+
+
+//===============================================================================================
+// check_for_miscinput
+// (to decide if "Miscellaneous Inputs" menu item should show or not).
+// We do this here because the core check has been broken for years (always returns false).
+//===============================================================================================
+
+static bool check_for_miscinput(running_machine &machine)
+{
+ int this_inputclass = 0;
+
+ for (auto &port : machine.ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ const char *name = field.name();
+ this_inputclass = field.type_class();
+
+ /* add if we match the group and we have a valid name */
+ if ((name)
+ && (field.enabled())
+ && ((field.type() == IPT_OTHER && field.name()) || (machine.ioport().type_group(field.type(), field.player()) != IPG_INVALID))
+ && (this_inputclass != INPUT_CLASS_CONTROLLER)
+ && (this_inputclass != INPUT_CLASS_KEYBOARD))
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+
+
+//============================================================
+// customise_miscinput
+//============================================================
+
+static void customise_miscinput(running_machine &machine, HWND wnd)
+{
+ dialog_box *dlg;
+ int this_inputclass;
+ const char *title = "Miscellaneous Inputs";
+
+ /* create the dialog */
+ dlg = win_dialog_init(title, NULL);
+ if (!dlg)
+ return;
+
+ for (auto &port : machine.ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ const char *name = field.name();
+ this_inputclass = field.type_class();
+
+ /* add if we match the group and we have a valid name */
+ if ((name)
+ && (field.enabled())
+ && ((field.type() == IPT_OTHER && field.name()) || (machine.ioport().type_group(field.type(), field.player()) != IPG_INVALID))
+ && (this_inputclass != INPUT_CLASS_CONTROLLER)
+ && (this_inputclass != INPUT_CLASS_KEYBOARD))
+ {
+ if (win_dialog_add_portselect(dlg, &field))
+ goto done;
+ }
+ }
+ }
+
+ /* ...and now add OK/Cancel */
+ if (win_dialog_add_standard_buttons(dlg))
+ goto done;
+
+ /* ...and finally display the dialog */
+ win_dialog_runmodal(machine, wnd, dlg);
+
+done:
+ if (dlg)
+ win_dialog_exit(dlg);
+}
+
+
+
+//============================================================
+// storeval_inputport
+// called from customise_switches
+//============================================================
+
+static void storeval_inputport(void *param, int val)
+{
+ ioport_field *field = (ioport_field *) param;
+ ioport_field::user_settings settings;
+
+ field->get_user_settings(settings);
+ settings.value = (ioport_value) val;
+ field->set_user_settings(settings);
+}
+
+
+
+//============================================================
+// customise_switches
+//============================================================
+
+static void customise_switches(running_machine &machine, HWND wnd, const char* title_string, UINT32 ipt_name)
+{
+ dialog_box *dlg;
+ ioport_field *afield;
+ ioport_setting *setting;
+ const char *switch_name = NULL;
+ ioport_field::user_settings settings;
+
+ UINT32 type = 0;
+
+ dlg = win_dialog_init(title_string, NULL);
+ if (!dlg)
+ return;
+
+ for (auto &port : machine.ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ type = field.type();
+
+ if (type == ipt_name)
+ {
+ switch_name = field.name();
+
+ field.get_user_settings(settings);
+ afield = &field;
+ if (win_dialog_add_combobox(dlg, switch_name, settings.value, storeval_inputport, (void *) afield))
+ goto done;
+
+ for (setting = field.settings().first(); setting; setting = setting->next())
+ {
+ if (win_dialog_add_combobox_item(dlg, setting->name(), setting->value()))
+ goto done;
+ }
+ }
+ }
+ }
+
+ if (win_dialog_add_standard_buttons(dlg))
+ goto done;
+
+ win_dialog_runmodal(machine, wnd, dlg);
+
+done:
+ if (dlg)
+ win_dialog_exit(dlg);
+}
+
+
+
+//============================================================
+// customise_dipswitches
+//============================================================
+
+static void customise_dipswitches(running_machine &machine, HWND wnd)
+{
+ customise_switches(machine, wnd, "Dip Switches", IPT_DIPSWITCH);
+}
+
+
+
+//============================================================
+// customise_configuration
+//============================================================
+
+static void customise_configuration(running_machine &machine, HWND wnd)
+{
+ customise_switches(machine, wnd, "Driver Configuration", IPT_CONFIG);
+}
+
+
+
+//============================================================
+// customise_analogcontrols
+//============================================================
+
+enum
+{
+ ANALOG_ITEM_KEYSPEED,
+ ANALOG_ITEM_CENTERSPEED,
+ ANALOG_ITEM_REVERSE,
+ ANALOG_ITEM_SENSITIVITY
+};
+
+
+
+static void store_analogitem(void *param, int val, int selected_item)
+{
+ ioport_field *field = (ioport_field *) param;
+ ioport_field::user_settings settings;
+
+ field->get_user_settings(settings);
+
+ switch(selected_item)
+ {
+ case ANALOG_ITEM_KEYSPEED:
+ settings.delta = val;
+ break;
+ case ANALOG_ITEM_CENTERSPEED:
+ settings.centerdelta = val;
+ break;
+ case ANALOG_ITEM_REVERSE:
+ settings.reverse = val;
+ break;
+ case ANALOG_ITEM_SENSITIVITY:
+ settings.sensitivity = val;
+ break;
+ }
+ field->set_user_settings(settings);
+}
+
+
+
+static void store_delta(void *param, int val)
+{
+ store_analogitem(param, val, ANALOG_ITEM_KEYSPEED);
+}
+
+
+
+static void store_centerdelta(void *param, int val)
+{
+ store_analogitem(param, val, ANALOG_ITEM_CENTERSPEED);
+}
+
+
+
+static void store_reverse(void *param, int val)
+{
+ store_analogitem(param, val, ANALOG_ITEM_REVERSE);
+}
+
+
+
+static void store_sensitivity(void *param, int val)
+{
+ store_analogitem(param, val, ANALOG_ITEM_SENSITIVITY);
+}
+
+
+
+static int port_type_is_analog(int type)
+{
+ return (type > IPT_ANALOG_FIRST && type < IPT_ANALOG_LAST);
+}
+
+
+
+static void customise_analogcontrols(running_machine &machine, HWND wnd)
+{
+ dialog_box *dlg;
+ ioport_field::user_settings settings;
+ ioport_field *afield;
+ const char *name;
+ char buf[255];
+ static const struct dialog_layout layout = { 120, 52 };
+
+ dlg = win_dialog_init("Analog Controls", &layout);
+ if (!dlg)
+ return;
+
+ for (auto &port : machine.ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ if (port_type_is_analog(field.type()))
+ {
+ field.get_user_settings(settings);
+ name = field.name();
+ afield = &field;
+
+ _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Digital Speed");
+ if (win_dialog_add_adjuster(dlg, buf, settings.delta, 1, 255, FALSE, store_delta, (void *) afield))
+ goto done;
+
+ _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Autocenter Speed");
+ if (win_dialog_add_adjuster(dlg, buf, settings.centerdelta, 0, 255, FALSE, store_centerdelta, (void *) afield))
+ goto done;
+
+ _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Reverse");
+ if (win_dialog_add_combobox(dlg, buf, settings.reverse ? 1 : 0, store_reverse, (void *) afield))
+ goto done;
+ if (win_dialog_add_combobox_item(dlg, "Off", 0))
+ goto done;
+ if (win_dialog_add_combobox_item(dlg, "On", 1))
+ goto done;
+
+ _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Sensitivity");
+ if (win_dialog_add_adjuster(dlg, buf, settings.sensitivity, 1, 255, TRUE, store_sensitivity, (void *) afield))
+ goto done;
+ }
+ }
+ }
+
+ if (win_dialog_add_standard_buttons(dlg))
+ goto done;
+
+ win_dialog_runmodal(machine, wnd, dlg);
+
+done:
+ if (dlg)
+ win_dialog_exit(dlg);
+}
+
+
+//============================================================
+// win_dirname
+// called from state_dialog
+//============================================================
+
+static char *win_dirname(const char *filename)
+{
+ char *dirname;
+ char *c;
+
+ // NULL begets NULL
+ if (!filename)
+ return NULL;
+
+ // allocate space for it
+ dirname = (char*)malloc(strlen(filename) + 1);
+ if (!dirname)
+ return NULL;
+
+ // copy in the name
+ strcpy(dirname, filename);
+
+ // search backward for a slash or a colon
+ for (c = dirname + strlen(dirname) - 1; c >= dirname; c--)
+ if (*c == '\\' || *c == '/' || *c == ':')
+ {
+ // found it: NULL terminate and return
+ *(c + 1) = 0;
+ return dirname;
+ }
+
+ // otherwise, return an empty string
+ dirname[0] = 0;
+ return dirname;
+}
+
+
+//============================================================
+// state_dialog
+// called when loading or saving a state
+//============================================================
+
+static void state_dialog(HWND wnd, win_file_dialog_type dlgtype, DWORD fileproc_flags, bool is_load, running_machine &machine)
+{
+ win_open_file_name ofn;
+ char *dir = NULL;
+ int result = 0;
+
+ if (state_filename[0])
+ dir = win_dirname(state_filename);
+
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.type = dlgtype;
+ ofn.owner = wnd;
+ ofn.flags = OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | fileproc_flags;
+ ofn.filter = "State Files (*.sta)|*.sta|All Files (*.*)|*.*";
+ ofn.initial_directory = dir;
+
+ if (!core_filename_ends_with(ofn.filename, "sta"))
+ snprintf(ofn.filename, ARRAY_LENGTH(ofn.filename), "%s.sta", state_filename);
+ else
+ snprintf(ofn.filename, ARRAY_LENGTH(ofn.filename), "%s", state_filename);
+
+ result = win_get_file_name_dialog(&ofn);
+
+ if (result)
+ {
+ // the core doesn't add the extension if it's an absolute path
+ if (osd_is_absolute_path(ofn.filename) && !core_filename_ends_with(ofn.filename, "sta"))
+ snprintf(state_filename, ARRAY_LENGTH(state_filename), "%s.sta", ofn.filename);
+ else
+ snprintf(state_filename, ARRAY_LENGTH(state_filename), "%s", ofn.filename);
+
+ if (is_load)
+ machine.schedule_load(state_filename);
+ else
+ machine.schedule_save(state_filename);
+ }
+
+ if (dir)
+ free(dir);
+}
+
+
+
+static void state_load(HWND wnd, running_machine &machine)
+{
+ state_dialog(wnd, WIN_FILE_DIALOG_OPEN, OFN_FILEMUSTEXIST, TRUE, machine);
+}
+
+static void state_save_as(HWND wnd, running_machine &machine)
+{
+ state_dialog(wnd, WIN_FILE_DIALOG_SAVE, OFN_OVERWRITEPROMPT, FALSE, machine);
+}
+
+static void state_save(running_machine &machine)
+{
+ machine.schedule_save(state_filename);
+}
+
+
+
+//============================================================
+// copy_extension_list
+//============================================================
+
+static void copy_extension_list(std::string &dest, const char *extensions)
+{
+ // our extension lists are comma delimited; Win32 expects to see lists
+ // delimited by semicolons
+ char const *s = extensions;
+ while (*s)
+ {
+ // append a semicolon if not at the beginning
+ if (s != extensions)
+ dest.push_back(';');
+
+ // append ".*"
+ dest.append("*.");
+
+ // append the file extension
+ while (*s && (*s != ','))
+ dest.push_back(*s++);
+
+ // if we found a comma, advance
+ while(*s == ',')
+ s++;
+ }
+}
+
+
+
+//============================================================
+// add_filter_entry
+//============================================================
+
+static void add_filter_entry(std::string &dest, const char *description, const char *extensions)
+{
+ // add the description
+ dest.append(description);
+ dest.append(" (");
+
+ // add the extensions to the description
+ copy_extension_list(dest, extensions);
+
+ // add the trailing rparen and '|' character
+ dest.append(")|");
+
+ // now add the extension list itself
+ copy_extension_list(dest, extensions);
+
+ // append a '|'
+ dest.append("|");
+}
+
+
+
+//============================================================
+// build_generic_filter
+//============================================================
+
+static void build_generic_filter(device_image_interface *img, bool is_save, std::string &filter)
+{
+ std::string file_extension = img->file_extensions();
+
+ if (!is_save)
+ file_extension.append(",zip,7z");
+
+ add_filter_entry(filter, "Common image types", file_extension.c_str());
+
+ filter.append("All files (*.*)|*.*|");
+
+ if (!is_save)
+ filter.append("Compressed Images (*.zip;*.7z)|*.zip;*.7z|");
+}
+
+
+
+//============================================================
+// change_device
+// open a dialog box to open or create a software file
+//============================================================
+
+static void change_device(HWND wnd, device_image_interface *image, bool is_save)
+{
+ std::string filter;
+ char filename[MAX_PATH];
+ const char *initial_dir;
+ BOOL result = 0;
+ int create_format = 0;
+ util::option_resolution *create_args = NULL;
+
+ // get the file
+ if (image->exists())
+ {
+ const char *imgname;
+ imgname = image->basename();
+ snprintf(filename, ARRAY_LENGTH(filename), "%s", imgname);
+ }
+ else
+ filename[0] = '\0';
+
+ // get the working directory, but if it is ".", then use the one specified in swpath
+ char *working = 0;
+ std::string dst;
+ osd_get_full_path(dst,"."); // turn local directory into full path
+ initial_dir = image->working_directory().c_str(); // get working directory from diimage.cpp
+ // if . use swpath
+ if (strcmp(dst.c_str(), initial_dir) == 0) // same?
+ initial_dir = software_dir;
+
+ // remove any trailing backslash
+ working = core_strdup(initial_dir);
+ int temp = strlen(working) - 1;
+ if (temp > 2)
+ if (working[temp] == '\\')
+ {
+ working[temp] = '\0';
+ initial_dir = working;
+ }
+
+// NOTE: the working directory can come from the .cfg file. If it's wrong delete the cfg.
+//printf("%s = %s = %s = %s\n",dst,working,initial_dir,software_dir);
+
+ // build a normal filter
+ build_generic_filter(image, is_save, filter);
+
+ // display the dialog
+ result = win_file_dialog(image->device().machine(), wnd, is_save ? WIN_FILE_DIALOG_SAVE : WIN_FILE_DIALOG_OPEN, filter.c_str(), initial_dir, filename, ARRAY_LENGTH(filename));
+ if (result)
+ {
+ // mount the image
+ if (is_save)
+ (image_error_t)image->create(filename, image->device_get_indexed_creatable_format(create_format), create_args);
+ else
+ (image_error_t)image->load( filename);
+
+ // no need to check the returnvalue and show a messagebox anymore.
+ // a UI message will now be generated by the image code
+ }
+}
+
+
+
+//============================================================
+// pause
+//============================================================
+
+static void pause(running_machine &machine)
+{
+ if (!winwindow_ui_is_paused(machine))
+ machine.pause();
+ else
+ machine.resume();
+}
+
+
+
+//============================================================
+// get_menu_item_string
+//============================================================
+
+static BOOL get_menu_item_string(HMENU menu, UINT item, BOOL by_position, HMENU *sub_menu, LPTSTR buffer, size_t buffer_len)
+{
+ MENUITEMINFO mii;
+
+ // clear out results
+ memset(buffer, '\0', sizeof(*buffer) * buffer_len);
+ if (sub_menu)
+ *sub_menu = NULL;
+
+ // prepare MENUITEMINFO structure
+ memset(&mii, 0, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_TYPE | (sub_menu ? MIIM_SUBMENU : 0);
+ mii.dwTypeData = buffer;
+ mii.cch = buffer_len;
+
+ // call GetMenuItemInfo()
+ if (!GetMenuItemInfo(menu, item, by_position, &mii))
+ return FALSE;
+
+ // return results
+ if (sub_menu)
+ *sub_menu = mii.hSubMenu;
+ if (mii.fType == MFT_SEPARATOR)
+ _sntprintf(buffer, buffer_len, TEXT("-"));
+ return TRUE;
+}
+
+
+
+//============================================================
+// find_sub_menu
+//============================================================
+
+static HMENU find_sub_menu(HMENU menu, const char *menutext, bool create_sub_menu)
+{
+ TCHAR buf[128];
+ HMENU sub_menu;
+
+ while(*menutext)
+ {
+ TCHAR *t_menutext = ui_wstring_from_utf8(menutext);
+
+ int i = -1;
+ do
+ {
+ if (!get_menu_item_string(menu, ++i, TRUE, &sub_menu, buf, ARRAY_LENGTH(buf)))
+ {
+ free(t_menutext);
+ return NULL;
+ }
+ }
+ while(_tcscmp(t_menutext, buf));
+
+ free(t_menutext);
+
+ if (!sub_menu && create_sub_menu)
+ {
+ MENUITEMINFO mii;
+ memset(&mii, 0, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_SUBMENU;
+ mii.hSubMenu = CreateMenu();
+ if (!SetMenuItemInfo(menu, i, TRUE, &mii))
+ {
+ i = GetLastError();
+ return NULL;
+ }
+ sub_menu = mii.hSubMenu;
+ }
+ menu = sub_menu;
+ if (!menu)
+ return NULL;
+ menutext += strlen(menutext) + 1;
+ }
+ return menu;
+}
+
+
+
+//============================================================
+// set_command_state
+//============================================================
+
+static void set_command_state(HMENU menu_bar, UINT command, UINT state)
+{
+ BOOL result = 0;
+
+ MENUITEMINFO mii;
+
+ memset(&mii, 0, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_STATE;
+ mii.fState = state;
+ result = SetMenuItemInfo(menu_bar, command, FALSE, &mii);
+ result++;
+}
+
+
+
+
+//============================================================
+// remove_menu_items
+//============================================================
+
+static void remove_menu_items(HMENU menu)
+{
+ while(RemoveMenu(menu, 0, MF_BYPOSITION))
+ ;
+}
+
+
+
+//============================================================
+// setup_joystick_menu
+//============================================================
+
+static void setup_joystick_menu(running_machine &machine, HMENU menu_bar)
+{
+ int joystick_count = 0;
+ HMENU joystick_menu;
+ int i = 0;
+ char buf[256];
+ int child_count = 0;
+
+ joystick_menu = find_sub_menu(menu_bar, "&Options\0&Joysticks\0", TRUE);
+ if (!joystick_menu)
+ return;
+
+ // set up joystick menu
+ joystick_count = machine.ioport().count_players();
+ if (joystick_count > 0)
+ {
+ for (i = 0; i < joystick_count; i++)
+ {
+ snprintf(buf, ARRAY_LENGTH(buf), "Joystick %i", i + 1);
+ win_append_menu_utf8(joystick_menu, MF_STRING, ID_JOYSTICK_0 + i, buf);
+ child_count++;
+ }
+ }
+
+ // last but not least, enable the joystick menu (or not)
+ set_command_state(menu_bar, ID_OPTIONS_JOYSTICKS, child_count ? MFS_ENABLED : MFS_GRAYED);
+}
+
+
+
+//============================================================
+// is_windowed
+//============================================================
+
+static int is_windowed(void)
+{
+ return video_config.windowed;
+}
+
+
+
+//============================================================
+// frameskip_level_count
+//============================================================
+
+static int frameskip_level_count(running_machine &machine)
+{
+ static int count = -1;
+
+ if (count < 0)
+ {
+ int frameskip_max = 10;
+ count = frameskip_max + 1;
+ }
+ return count;
+}
+
+
+
+//============================================================
+// prepare_menus
+//============================================================
+
+static void prepare_menus(HWND wnd)
+{
+ int i = 0;
+ char buf[MAX_PATH];
+ TCHAR t_buf[MAX_PATH];
+ const char *s;
+ HMENU menu_bar;
+ HMENU video_menu;
+ HMENU device_menu;
+ HMENU sub_menu;
+ UINT_PTR new_item;
+ UINT flags_for_exists = 0;
+ UINT flags_for_writing = 0;
+ bool has_config = 0, has_dipswitch = 0, has_keyboard = 0, has_misc = 0, has_analog = 0;
+ int frameskip = 0;
+ int orientation = 0;
+ int speed = 0;
+ LONG_PTR ptr = GetWindowLongPtr(wnd, GWLP_USERDATA);
+ win_window_info *window = (win_window_info *)ptr;
+ const char *view_name;
+ int view_index = 0;
+ ioport_field::user_settings settings;
+
+ menu_bar = GetMenu(wnd);
+ if (!menu_bar)
+ return;
+
+ if (!joystick_menu_setup)
+ {
+ setup_joystick_menu(window->machine(), menu_bar);
+ joystick_menu_setup = 1;
+ }
+
+ frameskip = window->machine().video().frameskip();
+
+ orientation = window->m_target->orientation();
+
+ speed = window->machine().video().throttled() ? window->machine().video().speed_factor() : 0;
+
+ has_config = window->machine().ioport().type_class_present(INPUT_CLASS_CONFIG);
+ has_dipswitch = window->machine().ioport().type_class_present(INPUT_CLASS_DIPSWITCH);
+ has_keyboard = window->machine().ioport().type_class_present(INPUT_CLASS_KEYBOARD);
+ has_misc = check_for_miscinput(window->machine());
+
+ has_analog = 0;
+ for (auto &port : window->machine().ioport().ports())
+ {
+ for (ioport_field &field : port.second->fields())
+ {
+ if (port_type_is_analog(field.type()))
+ {
+ has_analog = 1;
+ break;
+ }
+ }
+ }
+
+ if (window->machine().system().flags & MACHINE_SUPPORTS_SAVE)
+ {
+ set_command_state(menu_bar, ID_FILE_LOADSTATE_NEWUI, MFS_ENABLED);
+ set_command_state(menu_bar, ID_FILE_SAVESTATE_AS, MFS_ENABLED);
+ set_command_state(menu_bar, ID_FILE_SAVESTATE, state_filename[0] != '\0' ? MFS_ENABLED : MFS_GRAYED);
+ }
+ else
+ {
+ set_command_state(menu_bar, ID_FILE_LOADSTATE_NEWUI, MFS_GRAYED);
+ set_command_state(menu_bar, ID_FILE_SAVESTATE_AS, MFS_GRAYED);
+ set_command_state(menu_bar, ID_FILE_SAVESTATE, MFS_GRAYED);
+ }
+
+ set_command_state(menu_bar, ID_EDIT_PASTE, window->machine().ioport().natkeyboard().can_post() ? MFS_ENABLED : MFS_GRAYED);
+
+ set_command_state(menu_bar, ID_OPTIONS_PAUSE, winwindow_ui_is_paused(window->machine()) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_OPTIONS_CONFIGURATION, has_config ? MFS_ENABLED : MFS_GRAYED);
+ set_command_state(menu_bar, ID_OPTIONS_DIPSWITCHES, has_dipswitch ? MFS_ENABLED : MFS_GRAYED);
+ set_command_state(menu_bar, ID_OPTIONS_MISCINPUT, has_misc ? MFS_ENABLED : MFS_GRAYED);
+ set_command_state(menu_bar, ID_OPTIONS_ANALOGCONTROLS, has_analog ? MFS_ENABLED : MFS_GRAYED);
+ set_command_state(menu_bar, ID_FILE_FULLSCREEN, !is_windowed() ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_OPTIONS_TOGGLEFPS, mame_machine_manager::instance()->ui().show_fps() ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_FILE_UIACTIVE, has_keyboard ? (window->machine().ui_active() ? MFS_CHECKED : MFS_ENABLED): MFS_CHECKED | MFS_GRAYED);
+
+ set_command_state(menu_bar, ID_KEYBOARD_EMULATED, has_keyboard ? (!window->machine().ioport().natkeyboard().in_use() ? MFS_CHECKED : MFS_ENABLED): MFS_GRAYED);
+ set_command_state(menu_bar, ID_KEYBOARD_NATURAL, (has_keyboard && window->machine().ioport().natkeyboard().can_post()) ? (window->machine().ioport().natkeyboard().in_use() ? MFS_CHECKED : MFS_ENABLED): MFS_GRAYED);
+ set_command_state(menu_bar, ID_KEYBOARD_CUSTOMIZE, has_keyboard ? MFS_ENABLED : MFS_GRAYED);
+
+ set_command_state(menu_bar, ID_VIDEO_ROTATE_0, (orientation == ROT0) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_VIDEO_ROTATE_90, (orientation == ROT90) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_VIDEO_ROTATE_180, (orientation == ROT180) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_VIDEO_ROTATE_270, (orientation == ROT270) ? MFS_CHECKED : MFS_ENABLED);
+
+ set_command_state(menu_bar, ID_THROTTLE_50, (speed == 500) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_THROTTLE_100, (speed == 1000) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_THROTTLE_200, (speed == 2000) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_THROTTLE_500, (speed == 5000) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_THROTTLE_1000, (speed == 10000) ? MFS_CHECKED : MFS_ENABLED);
+ set_command_state(menu_bar, ID_THROTTLE_UNTHROTTLED, (speed == 0) ? MFS_CHECKED : MFS_ENABLED);
+
+ set_command_state(menu_bar, ID_FRAMESKIP_AUTO, (frameskip < 0) ? MFS_CHECKED : MFS_ENABLED);
+ for (i = 0; i < frameskip_level_count(window->machine()); i++)
+ set_command_state(menu_bar, ID_FRAMESKIP_0 + i, (frameskip == i) ? MFS_CHECKED : MFS_ENABLED);
+
+ // set up screens in video menu
+ video_menu = find_sub_menu(menu_bar, "&Options\0&Video\0", FALSE);
+ do
+ {
+ get_menu_item_string(video_menu, 0, TRUE, NULL, t_buf, ARRAY_LENGTH(t_buf));
+ if (_tcscmp(t_buf, TEXT("-")))
+ RemoveMenu(video_menu, 0, MF_BYPOSITION);
+ }
+ while(_tcscmp(t_buf, TEXT("-")));
+ i = 0;
+ view_index = window->m_target->view();
+ while((view_name = window->m_target->view_name(i)))
+ {
+ TCHAR *t_view_name = ui_wstring_from_utf8(view_name);
+ InsertMenu(video_menu, i, MF_BYPOSITION | (i == view_index ? MF_CHECKED : 0), ID_VIDEO_VIEW_0 + i, t_view_name);
+ free(t_view_name);
+ i++;
+ }
+
+ // set up device menu; first remove all existing menu items
+ device_menu = find_sub_menu(menu_bar, "&Media\0", FALSE);
+ remove_menu_items(device_menu);
+
+ int cnt = 0;
+ // then set up the actual devices
+ for (device_image_interface &img : image_interface_iterator(window->machine().root_device()))
+ {
+ new_item = ID_DEVICE_0 + (cnt * DEVOPTION_MAX);
+ flags_for_exists = MF_STRING;
+
+ if (!img.exists())
+ flags_for_exists |= MF_GRAYED;
+
+ flags_for_writing = flags_for_exists;
+ if (img.is_readonly())
+ flags_for_writing |= MF_GRAYED;
+
+ sub_menu = CreateMenu();
+ win_append_menu_utf8(sub_menu, MF_STRING, new_item + DEVOPTION_OPEN, "Mount File...");
+
+ if (img.is_creatable())
+ win_append_menu_utf8(sub_menu, MF_STRING, new_item + DEVOPTION_CREATE, "Create...");
+
+ win_append_menu_utf8(sub_menu, flags_for_exists, new_item + DEVOPTION_CLOSE, "Unmount");
+
+ if (img.device().type() == CASSETTE)
+ {
+ cassette_state state;
+ state = (cassette_state)(img.exists() ? (dynamic_cast<cassette_image_device*>(&img.device())->get_state() & CASSETTE_MASK_UISTATE) : CASSETTE_STOPPED);
+ win_append_menu_utf8(sub_menu, MF_SEPARATOR, 0, NULL);
+ win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_STOPPED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_STOPPAUSE, "Pause/Stop");
+ win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_PLAY) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_PLAY, "Play");
+ win_append_menu_utf8(sub_menu, flags_for_writing | ((state == CASSETTE_RECORD) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_RECORD, "Record");
+ win_append_menu_utf8(sub_menu, flags_for_exists, new_item + DEVOPTION_CASSETTE_REWIND, "Rewind");
+ win_append_menu_utf8(sub_menu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, "Fast Forward");
+ }
+ s = img.exists() ? img.filename() : "[empty slot]";
+
+ snprintf(buf, ARRAY_LENGTH(buf), "%s: %s", img.device().name(), s);
+ win_append_menu_utf8(device_menu, MF_POPUP, (UINT_PTR)sub_menu, buf);
+
+ cnt++;
+ }
+}
+
+
+
+//============================================================
+// set_speed
+//============================================================
+
+static void set_speed(running_machine &machine, int speed)
+{
+ std::string error_string;
+ if (speed != 0)
+ {
+ machine.video().set_speed_factor(speed);
+ machine.options().emu_options::set_value(OPTION_SPEED, speed / 1000, OPTION_PRIORITY_CMDLINE, error_string);
+ }
+
+ machine.video().set_throttled(speed != 0);
+ machine.options().emu_options::set_value(OPTION_THROTTLE, (speed != 0), OPTION_PRIORITY_CMDLINE, error_string);
+}
+
+
+
+//============================================================
+// win_toggle_menubar
+//============================================================
+
+static void win_toggle_menubar(void)
+{
+ LONG width_diff = 0;
+ LONG height_diff = 0;
+ DWORD style = 0, exstyle = 0;
+ HWND hwnd = 0;
+ HMENU menu = 0;
+
+ for (auto window : osd_common_t::s_window_list)
+ {
+ RECT before_rect = { 100, 100, 200, 200 };
+ RECT after_rect = { 100, 100, 200, 200 };
+
+ hwnd = std::static_pointer_cast<win_window_info>(window)->platform_window();
+
+ // get current menu
+ menu = GetMenu(hwnd);
+
+ // get before rect
+ style = GetWindowLong(hwnd, GWL_STYLE);
+ exstyle = GetWindowLong(hwnd, GWL_EXSTYLE);
+ AdjustWindowRectEx(&before_rect, style, menu ? TRUE : FALSE, exstyle);
+
+ // toggle the menu
+ if (menu)
+ {
+ SetProp(hwnd, TEXT("menu"), (HANDLE) menu);
+ menu = NULL;
+ }
+ else
+ menu = (HMENU) GetProp(hwnd, TEXT("menu"));
+
+ SetMenu(hwnd, menu);
+
+ // get after rect, and width/height diff
+ AdjustWindowRectEx(&after_rect, style, menu ? TRUE : FALSE, exstyle);
+ width_diff = (after_rect.right - after_rect.left) - (before_rect.right - before_rect.left);
+ height_diff = (after_rect.bottom - after_rect.top) - (before_rect.bottom - before_rect.top);
+
+ if (is_windowed())
+ {
+ RECT window_rect;
+ GetWindowRect(hwnd, &window_rect);
+ SetWindowPos(hwnd, HWND_TOP, 0, 0, window_rect.right - window_rect.left + width_diff, window_rect.bottom - window_rect.top + height_diff, SWP_NOMOVE | SWP_NOZORDER);
+ }
+
+ RedrawWindow(hwnd, NULL, NULL, 0);
+ }
+}
+
+
+
+//============================================================
+// device_command
+// This handles all options under the "Media" dropdown
+//============================================================
+
+static void device_command(HWND wnd, device_image_interface *img, int devoption)
+{
+ switch(devoption)
+ {
+ case DEVOPTION_OPEN:
+ change_device(wnd, img, FALSE);
+ break;
+
+ case DEVOPTION_CREATE:
+ change_device(wnd, img, TRUE);
+ break;
+
+ case DEVOPTION_CLOSE:
+ img->unload();
+ break;
+
+ default:
+ if (img->device().type() == CASSETTE)
+ {
+ cassette_image_device* cassette = dynamic_cast<cassette_image_device*>(&img->device());
+
+ switch(devoption)
+ {
+ case DEVOPTION_CASSETTE_STOPPAUSE:
+ cassette->change_state(CASSETTE_STOPPED, CASSETTE_MASK_UISTATE);
+ break;
+
+ case DEVOPTION_CASSETTE_PLAY:
+ cassette->change_state(CASSETTE_PLAY, CASSETTE_MASK_UISTATE);
+ break;
+
+ case DEVOPTION_CASSETTE_RECORD:
+ cassette->change_state(CASSETTE_RECORD, CASSETTE_MASK_UISTATE);
+ break;
+
+ case DEVOPTION_CASSETTE_REWIND:
+ cassette->seek(-60.0, SEEK_CUR);
+ break;
+
+ case DEVOPTION_CASSETTE_FASTFORWARD:
+ cassette->seek(+60.0, SEEK_CUR);
+ break;
+ }
+ }
+ break;
+ }
+}
+
+
+
+//============================================================
+// help_display
+//============================================================
+
+static void help_display(HWND wnd, const char *chapter)
+{
+ typedef HWND (WINAPI *htmlhelpproc)(HWND hwndCaller, LPCTSTR pszFile, UINT uCommand, DWORD_PTR dwData);
+ static htmlhelpproc htmlhelp;
+ static DWORD htmlhelp_cookie;
+ LPCSTR htmlhelp_funcname;
+
+ if (htmlhelp == NULL)
+ {
+#ifdef UNICODE
+ htmlhelp_funcname = "HtmlHelpW";
+#else
+ htmlhelp_funcname = "HtmlHelpA";
+#endif
+ htmlhelp = (htmlhelpproc) GetProcAddress(LoadLibrary(TEXT("hhctrl.ocx")), htmlhelp_funcname);
+ if (!htmlhelp)
+ return;
+ htmlhelp(NULL, NULL, 28 /*HH_INITIALIZE*/, (DWORD_PTR) &htmlhelp_cookie);
+ }
+
+ // if full screen, turn it off
+ if (!is_windowed())
+ winwindow_toggle_full_screen();
+
+ TCHAR *t_chapter = ui_wstring_from_utf8(chapter);
+// htmlhelp(wnd, t_chapter, 0 /*HH_DISPLAY_TOPIC*/, 0);
+// TCHAR *szSite = new TCHAR[100];
+// _tcscpy(szSite, TEXT("http://messui.the-chronicles.org/onlinehelp/"));
+// _tcscat(szSite, t_chapter);
+// _tcscat(szSite, TEXT(".html"));
+// ShellExecute(wnd, TEXT("open"), TEXT("http://www.microsoft.com/directx"), TEXT(""), NULL, SW_SHOWNORMAL);
+ ShellExecute(wnd, TEXT("open"), t_chapter, TEXT(""), NULL, SW_SHOWNORMAL);
+ free(t_chapter);
+// free(szSite);
+}
+
+
+
+//============================================================
+// help_about_mess
+//============================================================
+
+static void help_about_mess(HWND wnd)
+{
+ //help_display(wnd, "mess.chm::/windows/main.htm"); //doesnt do anything
+ //help_display(wnd, "mess.chm");
+ help_display(wnd, "http://mamedev.org/");
+}
+
+
+
+//============================================================
+// help_about_thissystem
+//============================================================
+
+static void help_about_thissystem(running_machine &machine, HWND wnd)
+{
+ char buf[100];
+// snprintf(buf, ARRAY_LENGTH(buf), "mess.chm::/sysinfo/%s.htm", machine.system().name);
+// snprintf(buf, ARRAY_LENGTH(buf), "http://messui.the-chronicles.org/onlinehelp/%s.html", machine.system().name);
+ snprintf(buf, ARRAY_LENGTH(buf), "http://www.progettoemma.net/mess/system.php?machine=%s", machine.system().name);
+ help_display(wnd, buf);
+}
+
+
+
+//============================================================
+// decode_deviceoption
+//============================================================
+
+static device_image_interface *decode_deviceoption(running_machine &machine, int command, int *devoption)
+{
+ command -= ID_DEVICE_0;
+ int absolute_index = command / DEVOPTION_MAX;
+
+ if (devoption)
+ *devoption = command % DEVOPTION_MAX;
+
+ image_interface_iterator iter(machine.root_device());
+ return iter.byindex(absolute_index);
+}
+
+
+
+//============================================================
+// set_window_orientation
+//============================================================
+
+static void set_window_orientation(win_window_info *window, int orientation)
+{
+ window->m_target->set_orientation(orientation);
+ if (window->m_target->is_ui_target())
+ {
+ render_container::user_settings settings;
+ window->machine().render().ui_container().get_user_settings(settings);
+ settings.m_orientation = orientation;
+ window->machine().render().ui_container().set_user_settings(settings);
+ }
+ window->update();
+}
+
+
+
+//============================================================
+// pause_for_command
+//============================================================
+
+static int pause_for_command(UINT command)
+{
+ // we really should be more conservative and only pause for commands
+ // that do dialog stuff
+ return (command != ID_OPTIONS_PAUSE);
+}
+
+
+
+//============================================================
+// invoke_command
+//============================================================
+
+static bool invoke_command(HWND wnd, UINT command)
+{
+ std::string error_string;
+ bool handled = TRUE;
+ int dev_command = 0;
+ device_image_interface *img;
+ LONG_PTR ptr = GetWindowLongPtr(wnd, GWLP_USERDATA);
+ win_window_info *window = (win_window_info *)ptr;
+ ioport_field::user_settings settings;
+
+ // pause while invoking certain commands
+ if (pause_for_command(command))
+ winwindow_ui_pause(window->machine(), TRUE);
+
+ switch(command)
+ {
+ case ID_FILE_LOADSTATE_NEWUI:
+ state_load(wnd, window->machine());
+ break;
+
+ case ID_FILE_SAVESTATE:
+ state_save(window->machine());
+ break;
+
+ case ID_FILE_SAVESTATE_AS:
+ state_save_as(wnd, window->machine());
+ break;
+
+ case ID_FILE_SAVESCREENSHOT:
+ window->machine().video().save_active_screen_snapshots();
+ break;
+
+ case ID_FILE_UIACTIVE:
+ window->machine().set_ui_active(!window->machine().ui_active());
+ break;
+
+ case ID_FILE_EXIT_NEWUI:
+ window->machine().schedule_exit();
+ break;
+
+ case ID_EDIT_PASTE:
+ PostMessage(wnd, WM_PASTE, 0, 0);
+ break;
+
+ case ID_KEYBOARD_NATURAL:
+ window->machine().ioport().natkeyboard().set_in_use(TRUE);
+ break;
+
+ case ID_KEYBOARD_EMULATED:
+ window->machine().ioport().natkeyboard().set_in_use(FALSE);
+ break;
+
+ case ID_KEYBOARD_CUSTOMIZE:
+ customise_keyboard(window->machine(), wnd);
+ break;
+
+ case ID_VIDEO_ROTATE_0:
+ set_window_orientation(window, ROT0);
+ break;
+
+ case ID_VIDEO_ROTATE_90:
+ set_window_orientation(window, ROT90);
+ break;
+
+ case ID_VIDEO_ROTATE_180:
+ set_window_orientation(window, ROT180);
+ break;
+
+ case ID_VIDEO_ROTATE_270:
+ set_window_orientation(window, ROT270);
+ break;
+
+ case ID_OPTIONS_PAUSE:
+ pause(window->machine());
+ break;
+
+ case ID_OPTIONS_HARDRESET:
+ window->machine().schedule_hard_reset();
+ break;
+
+ case ID_OPTIONS_SOFTRESET:
+ window->machine().schedule_soft_reset();
+ break;
+
+ case ID_OPTIONS_CONFIGURATION:
+ customise_configuration(window->machine(), wnd);
+ break;
+
+ case ID_OPTIONS_DIPSWITCHES:
+ customise_dipswitches(window->machine(), wnd);
+ break;
+
+ case ID_OPTIONS_MISCINPUT:
+ customise_miscinput(window->machine(), wnd);
+ break;
+
+ case ID_OPTIONS_ANALOGCONTROLS:
+ customise_analogcontrols(window->machine(), wnd);
+ break;
+
+ case ID_FILE_OLDUI:
+ mame_machine_manager::instance()->ui().show_menu();
+ break;
+
+ case ID_FILE_FULLSCREEN:
+ winwindow_toggle_full_screen();
+ break;
+
+ case ID_OPTIONS_TOGGLEFPS:
+ mame_machine_manager::instance()->ui().set_show_fps(!mame_machine_manager::instance()->ui().show_fps());
+ break;
+
+ case ID_OPTIONS_USEMOUSE:
+ {
+ // FIXME
+// extern int win_use_mouse;
+// win_use_mouse = !win_use_mouse;
+ }
+ break;
+
+ case ID_FILE_TOGGLEMENUBAR:
+ win_toggle_menubar();
+ break;
+
+ case ID_FRAMESKIP_AUTO:
+ window->machine().video().set_frameskip(-1);
+ window->machine().options().emu_options::set_value(OPTION_AUTOFRAMESKIP, 1, OPTION_PRIORITY_CMDLINE, error_string);
+ break;
+
+ case ID_HELP_ABOUT_NEWUI:
+ help_about_mess(wnd);
+ break;
+
+ case ID_HELP_ABOUTSYSTEM:
+ help_about_thissystem(window->machine(), wnd);
+ break;
+
+ case ID_THROTTLE_50:
+ set_speed(window->machine(), 500);
+ break;
+
+ case ID_THROTTLE_100:
+ set_speed(window->machine(), 1000);
+ break;
+
+ case ID_THROTTLE_200:
+ set_speed(window->machine(), 2000);
+ break;
+
+ case ID_THROTTLE_500:
+ set_speed(window->machine(), 5000);
+ break;
+
+ case ID_THROTTLE_1000:
+ set_speed(window->machine(), 10000);
+ break;
+
+ case ID_THROTTLE_UNTHROTTLED:
+ set_speed(window->machine(), 0);
+ break;
+
+ default:
+ if ((command >= ID_FRAMESKIP_0) && (command < ID_FRAMESKIP_0 + frameskip_level_count(window->machine())))
+ {
+ // change frameskip
+ window->machine().video().set_frameskip(command - ID_FRAMESKIP_0);
+ window->machine().options().emu_options::set_value(OPTION_AUTOFRAMESKIP, 0, OPTION_PRIORITY_CMDLINE, error_string);
+ window->machine().options().emu_options::set_value(OPTION_FRAMESKIP, (int)command - ID_FRAMESKIP_0, OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ else
+ if ((command >= ID_DEVICE_0) && (command < ID_DEVICE_0 + (IO_COUNT*DEVOPTION_MAX)))
+ {
+ // change device
+ img = decode_deviceoption(window->machine(), command, &dev_command);
+ device_command(wnd, img, dev_command);
+ }
+ else
+ if ((command >= ID_JOYSTICK_0) && (command < ID_JOYSTICK_0 + MAX_JOYSTICKS))
+ // customise joystick
+ customise_joystick(window->machine(), wnd, command - ID_JOYSTICK_0);
+ else
+ if ((command >= ID_VIDEO_VIEW_0) && (command < ID_VIDEO_VIEW_0 + 1000))
+ {
+ // render views
+ window->m_target->set_view(command - ID_VIDEO_VIEW_0);
+ window->update(); // actually change window size
+ }
+ else
+ // bogus command
+ handled = FALSE;
+
+ break;
+ }
+
+ // resume emulation
+ if (pause_for_command(command))
+ winwindow_ui_pause(window->machine(), FALSE);
+
+ return handled;
+}
+
+
+
+//============================================================
+// set_menu_text
+//============================================================
+
+static void set_menu_text(HMENU menu_bar, int command, const char *text)
+{
+ TCHAR *t_text;
+ MENUITEMINFO mii;
+
+ // convert to TCHAR
+ t_text = ui_wstring_from_utf8(text);
+
+ // invoke SetMenuItemInfo()
+ memset(&mii, 0, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_TYPE;
+ mii.dwTypeData = t_text;
+ SetMenuItemInfo(menu_bar, command, FALSE, &mii);
+
+ // cleanup
+ free(t_text);
+}
+
+
+
+//============================================================
+// win_setup_menus
+//============================================================
+
+static int win_setup_menus(running_machine &machine, HMODULE module, HMENU menu_bar)
+{
+ HMENU frameskip_menu;
+ char buf[256];
+ int i = 0;
+
+ // verify that our magic numbers work
+ assert((ID_DEVICE_0 + IO_COUNT * DEVOPTION_MAX) < ID_JOYSTICK_0);
+
+ // initialize critical values
+ joystick_menu_setup = 0;
+
+ // set up frameskip menu
+ frameskip_menu = find_sub_menu(menu_bar, "&Options\0&Frameskip\0", FALSE);
+
+ if (!frameskip_menu)
+ return 1;
+
+ for(i = 0; i < frameskip_level_count(machine); i++)
+ {
+ snprintf(buf, ARRAY_LENGTH(buf), "%i", i);
+ win_append_menu_utf8(frameskip_menu, MF_STRING, ID_FRAMESKIP_0 + i, buf);
+ }
+
+ // set the help menu to refer to this machine
+ snprintf(buf, ARRAY_LENGTH(buf), "About %s (%s)...", machine.system().description, machine.system().name);
+ set_menu_text(menu_bar, ID_HELP_ABOUTSYSTEM, buf);
+
+ // initialize state_filename for each driver, so we don't carry names in-between them
+ {
+ char *src;
+ char *dst;
+
+ snprintf(state_filename, ARRAY_LENGTH(state_filename), "%s State", machine.system().description);
+
+ src = state_filename;
+ dst = state_filename;
+ do
+ {
+ if ((*src == '\0') || isalnum(*src) || isspace(*src) || strchr("(),.", *src))
+ *(dst++) = *src;
+ }
+ while(*(src++));
+ }
+
+ return 0;
+}
+
+
+
+//============================================================
+// win_resource_module
+//============================================================
+
+static HMODULE win_resource_module(void)
+{
+ static HMODULE module;
+ if (module == NULL)
+ {
+ MEMORY_BASIC_INFORMATION info;
+ if ((VirtualQuery((const void*)win_resource_module, &info, sizeof(info))) == sizeof(info))
+ module = (HMODULE)info.AllocationBase;
+ }
+ return module;
+}
+
+///// Interface to the core /////
+
+//============================================================
+// win_create_menu
+//============================================================
+
+int win_create_menu(running_machine &machine, HMENU *menus)
+{
+ // Get the path for loose software from <gamename>.ini
+ // if this is invalid, then windows chooses whatever directory it used last.
+ const char* t = machine.options().emu_options::sw_path();
+ // This pulls out the first path from a multipath field
+ const char* t1 = strtok((char*)t, ";");
+ if (t1)
+ software_dir = t1; // the first path of many
+ else
+ software_dir = t; // the only path
+
+ // do not show in the mewui ui.
+ if (strcmp(machine.system().name, "___empty") == 0)
+ return 0;
+
+ HMODULE module = win_resource_module();
+ HMENU menu_bar = LoadMenu(module, MAKEINTRESOURCE(IDR_RUNTIME_MENU));
+
+ if (!menu_bar)
+ {
+ printf("No memory for the menu, running without it.\n");
+ return 0;
+ }
+
+ if (win_setup_menus(machine, module, menu_bar))
+ {
+ printf("Unable to setup the menu, running without it.\n");
+ if (menu_bar)
+ DestroyMenu(menu_bar);
+ return 0; // return 1 causes a crash
+ }
+
+ *menus = menu_bar;
+ return 0;
+}
+
+
+
+//============================================================
+// winwindow_video_window_proc_ui
+//============================================================
+
+LRESULT CALLBACK winwindow_video_window_proc_ui(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+ switch(message)
+ {
+ case WM_INITMENU:
+ prepare_menus(wnd);
+ break;
+
+ case WM_PASTE:
+ {
+ mame_machine_manager::instance()->ui().paste();
+ }
+ break;
+
+ case WM_COMMAND:
+ if (invoke_command(wnd, wparam))
+ break;
+ /* fall through */
+
+ default:
+ return win_window_info::video_window_proc(wnd, message, wparam, lparam);
+ }
+ return 0;
+}
+
diff --git a/docs/release/src/osd/winui/newui.h b/docs/release/src/osd/winui/newui.h
new file mode 100644
index 00000000000..3a8d0ec6aef
--- /dev/null
+++ b/docs/release/src/osd/winui/newui.h
@@ -0,0 +1,38 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+//============================================================
+//
+// newui.h - NEWUI
+//
+//============================================================
+
+#ifndef NEWUI_H
+#define NEWUI_H
+
+///// INCLUDES /////
+
+#include <windows.h>
+#include <commdlg.h>
+#include <tchar.h>
+#include "emu.h"
+#include "mame.h"
+#include "emuopts.h"
+#include "ui/ui.h"
+#include "newuires.h"
+#include "strconv.h"
+#include "natkeyboard.h"
+#include "imagedev/cassette.h"
+#include "windows/window.h"
+#include "winutf8.h"
+#include "modules/lib/osdobj_common.h"
+
+
+
+// These are called from src/osd/windows/windows.c and
+// provide the linkage between newui and the core.
+
+LRESULT CALLBACK winwindow_video_window_proc_ui(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam);
+
+int win_create_menu(running_machine &machine, HMENU *menus);
+
+#endif /* NEWUI_H */
diff --git a/docs/release/src/osd/winui/newuires.h b/docs/release/src/osd/winui/newuires.h
new file mode 100644
index 00000000000..aca0d2baccb
--- /dev/null
+++ b/docs/release/src/osd/winui/newuires.h
@@ -0,0 +1,64 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by mess.rc
+//
+#define ID_FILE_LOADSTATE_NEWUI 3101
+#define ID_FILE_SAVESTATE 3102
+#define ID_FILE_SAVESTATE_AS 3103
+#define ID_FILE_SAVESCREENSHOT 3104
+#define ID_FILE_EXIT_NEWUI 3105
+#define ID_EDIT_PASTE 3106
+#define ID_FILE_HIDEMENUBAR 3107
+#define ID_OPTIONS_KEYBOARD 3108
+#define ID_OPTIONS_CONFIGURATION 3109
+#define ID_OPTIONS_DIPSWITCHES 3110
+#define ID_OPTIONS_MISCINPUT 3111
+#define ID_OPTIONS_USEMOUSE 3112
+#define ID_FILE_TOGGLEMENUBAR 3113
+#define ID_OPTIONS_SOFTRESET 3114
+#define ID_OPTIONS_HARDRESET 3115
+#define ID_OPTIONS_FRAMESKIP 3116
+#define ID_OPTIONS_PAUSE 3117
+#define ID_OPTIONS_JOYSTICKS 3118
+#define ID_OPTIONS_ANALOGCONTROLS 3119
+#define ID_FILE_FULLSCREEN 3120
+#define ID_OPTIONS_TOGGLEFPS 3122
+#define ID_KEYBOARD_EMULATED 3124
+#define ID_KEYBOARD_NATURAL 3125
+#define ID_KEYBOARD_CUSTOMIZE 3126
+#define ID_VIDEO_ROTATE_0 3127
+#define ID_VIDEO_ROTATE_90 3128
+#define ID_VIDEO_ROTATE_180 3129
+#define ID_VIDEO_ROTATE_270 3130
+#define ID_THROTTLE_50 3131
+#define ID_THROTTLE_100 3132
+#define ID_THROTTLE_200 3133
+#define ID_THROTTLE_500 3134
+#define ID_THROTTLE_1000 3135
+#define ID_THROTTLE_UNTHROTTLED 3136
+#define ID_FRAMESKIP_AUTO 3137
+#define ID_DEVICES 3138
+#define ID_HELP_ABOUT_NEWUI 3139
+#define ID_HELP_ABOUTSYSTEM 3140
+#define ID_FILE_OLDUI 3141
+#define ID_FILE_UIACTIVE 3142
+#define IDC_SHOW_MENU 3143
+#define IDI_ICON_CART 3200
+#define IDI_ICON_HARD 3201
+#define IDI_ICON_CASS 3202
+#define IDI_ICON_FLOP 3203
+#define IDI_ICON_PRIN 3204
+#define IDI_ICON_SERL 3205
+#define IDI_ICON_SNAP 3206
+#define IDR_RUNTIME_MENU 3300
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 3144
+#define _APS_NEXT_COMMAND_VALUE 40008
+#define _APS_NEXT_CONTROL_VALUE 3306
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/docs/release/src/osd/winui/picker.cpp b/docs/release/src/osd/winui/picker.cpp
new file mode 100644
index 00000000000..894687b9a2f
--- /dev/null
+++ b/docs/release/src/osd/winui/picker.cpp
@@ -0,0 +1,1681 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+// standard windows headers
+#define _WIN32_IE 0x0501
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+#include <commdlg.h>
+#include <wingdi.h>
+
+// standard C headers
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <tchar.h>
+
+// MAME/MAMEUI headers
+#include "picker.h"
+#include "winui.h"
+#include "mui_util.h" // For dprintf
+#include "mui_opts.h"
+#include "bitmask.h"
+#include "treeview.h" // For GetParentFound()
+
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+// fix warning: cast does not match function type
+#if defined(__GNUC__) && defined(ListView_GetHeader)
+#undef ListView_GetHeader
+#endif
+#if defined(__GNUC__) && defined(ListView_GetImageList)
+#undef ListView_GetImageList
+#undef ListView_GetItemRect
+#endif
+
+#ifndef ListView_GetItemRect
+#define ListView_GetItemRect(w,i,p,c) \
+ (BOOL)SNDMSG((w),LVM_GETITEMRECT,i,((p != NULL)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0))
+#endif
+
+#ifndef ListView_GetImageList
+#define ListView_GetImageList(w,i) (HIMAGELIST)(LRESULT)(int)SendMessage((w),LVM_GETIMAGELIST,(i),0)
+#endif // ListView_GetImageList
+
+#ifndef ListView_GetHeader
+#define ListView_GetHeader(w) (HWND)(LRESULT)(int)SNDMSG((w),LVM_GETHEADER,0,0)
+#endif // ListView_GetHeader
+
+#ifndef HDM_SETIMAGELIST
+#define HDM_SETIMAGELIST (HDM_FIRST + 8)
+#endif // HDM_SETIMAGELIST
+
+#ifndef Header_SetImageList
+#define Header_SetImageList(h,i) (HIMAGELIST)(LRESULT)(int)SNDMSG((h), HDM_SETIMAGELIST, 0, (LPARAM)i)
+#endif // Header_SetImageList
+
+#ifndef HDF_SORTUP
+#define HDF_SORTUP 0x400
+#endif
+
+#ifndef HDF_SORTDOWN
+#define HDF_SORTDOWN 0x200
+#endif
+
+
+
+struct PickerInfo
+{
+ const struct PickerCallbacks *pCallbacks;
+ WNDPROC pfnParentWndProc;
+ int nCurrentViewID;
+ int nLastItem;
+ int nColumnCount;
+ int *pnColumnsShown;
+ int *pnColumnsOrder;
+ UINT_PTR nTimer;
+ const LPCTSTR *ppszColumnNames;
+};
+
+
+static struct PickerInfo *GetPickerInfo(HWND hWnd)
+{
+ LONG_PTR l;
+ l = GetWindowLongPtr(hWnd, GWLP_USERDATA);
+ return (struct PickerInfo *) l;
+}
+
+
+
+static LRESULT CallParentWndProc(WNDPROC pfnParentWndProc,
+ HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ LRESULT rc;
+
+ if (!pfnParentWndProc)
+ pfnParentWndProc = GetPickerInfo(hWnd)->pfnParentWndProc;
+
+ if (IsWindowUnicode(hWnd))
+ rc = CallWindowProcW(pfnParentWndProc, hWnd, message, wParam, lParam);
+ else
+ rc = CallWindowProcA(pfnParentWndProc, hWnd, message, wParam, lParam);
+ return rc;
+}
+
+static BOOL ListViewOnErase(HWND hWnd, HDC hDC)
+{
+ RECT rcClient;
+ HRGN rgnBitmap;
+ HPALETTE hPAL;
+
+ int i, j;
+ HDC htempDC;
+ POINT ptOrigin;
+ POINT pt = {0,0};
+ HBITMAP hOldBitmap;
+ MYBITMAPINFO *pbmDesc = GetBackgroundInfo();
+ HBITMAP hBackground = GetBackgroundBitmap();
+ HPALETTE hPALbg = GetBackgroundPalette();
+
+ // this does not draw the background properly in report view
+
+ GetClientRect(hWnd, &rcClient);
+
+ htempDC = CreateCompatibleDC(hDC);
+ hOldBitmap = (HBITMAP)SelectObject(htempDC, hBackground);
+
+ rgnBitmap = CreateRectRgnIndirect(&rcClient);
+ SelectClipRgn(hDC, rgnBitmap);
+ DeleteBitmap(rgnBitmap);
+
+ hPAL = (!hPALbg) ? CreateHalftonePalette(hDC) : hPALbg;
+
+ if (GetDeviceCaps(htempDC, RASTERCAPS) & RC_PALETTE && hPAL != NULL)
+ {
+ SelectPalette(htempDC, hPAL, FALSE);
+ RealizePalette(htempDC);
+ }
+
+ // Get x and y offset
+ MapWindowPoints(hWnd, GetTreeView(), &pt, 1);
+ GetDCOrgEx(hDC, &ptOrigin);
+ ptOrigin.x -= pt.x;
+ ptOrigin.y -= pt.y;
+ ptOrigin.x = -GetScrollPos(hWnd, SB_HORZ);
+ ptOrigin.y = -GetScrollPos(hWnd, SB_VERT);
+
+ if (pbmDesc->bmWidth && pbmDesc->bmHeight)
+ {
+ for (i = ptOrigin.x; i < rcClient.right; i += pbmDesc->bmWidth)
+ for (j = ptOrigin.y; j < rcClient.bottom; j += pbmDesc->bmHeight)
+ BitBlt(hDC, i, j, pbmDesc->bmWidth, pbmDesc->bmHeight, htempDC, 0, 0, SRCCOPY);
+ }
+
+ SelectObject(htempDC, hOldBitmap);
+ DeleteDC(htempDC);
+
+ if (!pbmDesc->bmColors)
+ {
+ DeletePalette(hPAL);
+ hPAL = 0;
+ }
+
+ return TRUE;
+}
+
+
+
+static BOOL ListViewNotify(HWND hWnd, LPNMHDR lpNmHdr)
+{
+ RECT rcClient;
+ DWORD dwPos;
+ POINT pt;
+
+ // This code is for using bitmap in the background
+ // Invalidate the right side of the control when a column is resized
+ if (lpNmHdr->code == HDN_ITEMCHANGINGA || lpNmHdr->code == HDN_ITEMCHANGINGW)
+ {
+ dwPos = GetMessagePos();
+ pt.x = LOWORD(dwPos);
+ pt.y = HIWORD(dwPos);
+
+ GetClientRect(hWnd, &rcClient);
+ ScreenToClient(hWnd, &pt);
+ rcClient.left = pt.x;
+ InvalidateRect(hWnd, &rcClient, FALSE);
+ }
+ return FALSE;
+}
+
+
+
+static BOOL ListViewContextMenu(HWND hwndPicker, LPARAM lParam)
+{
+ struct PickerInfo *pPickerInfo;
+ POINT pt, headerPt;
+ int i, nViewID, nColumn = -1;
+ HWND hwndHeader;
+ RECT rcCol;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ // Extract the point out of the lparam
+ pt.x = GET_X_LPARAM(lParam);
+ pt.y = GET_Y_LPARAM(lParam);
+ if (pt.x < 0 && pt.y < 0)
+ GetCursorPos(&pt);
+
+ // Figure out which header column was clicked, if at all
+ nViewID = Picker_GetViewID(hwndPicker);
+ if ((nViewID == VIEW_REPORT) || (nViewID == VIEW_GROUPED))
+ {
+ hwndHeader = ListView_GetHeader(hwndPicker);
+ headerPt = pt;
+ ScreenToClient(hwndHeader, &headerPt);
+
+ for (i = 0; Header_GetItemRect(hwndHeader, i, &rcCol); i++)
+ {
+ if (PtInRect(&rcCol, headerPt))
+ {
+ nColumn = i;
+ break;
+ }
+ }
+ }
+
+ if (nColumn >= 0)
+ {
+ // A column header was clicked
+ if (pPickerInfo->pCallbacks->pfnOnHeaderContextMenu)
+ pPickerInfo->pCallbacks->pfnOnHeaderContextMenu(pt, nColumn);
+ }
+ else
+ {
+ // The body was clicked
+ if (pPickerInfo->pCallbacks->pfnOnBodyContextMenu)
+ pPickerInfo->pCallbacks->pfnOnBodyContextMenu(pt);
+ }
+ return TRUE;
+}
+
+
+
+static void Picker_Free(struct PickerInfo *pPickerInfo)
+{
+ // Free up all resources associated with this picker structure
+ if (pPickerInfo->pnColumnsShown)
+ free(pPickerInfo->pnColumnsShown);
+ if (pPickerInfo->pnColumnsOrder)
+ free(pPickerInfo->pnColumnsOrder);
+ free(pPickerInfo);
+}
+
+
+
+static LRESULT CALLBACK ListViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ struct PickerInfo *pPickerInfo;
+ LRESULT rc = 0;
+ BOOL bHandled = FALSE;
+ WNDPROC pfnParentWndProc;
+ HWND hwndHeaderCtrl = NULL;
+ HFONT hHeaderCtrlFont = NULL;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+ pfnParentWndProc = pPickerInfo->pfnParentWndProc;
+
+ switch(message)
+ {
+ case WM_MOUSEMOVE:
+ if (MouseHasBeenMoved())
+ ShowCursor(TRUE);
+ break;
+
+ case WM_ERASEBKGND:
+ if (GetBackgroundBitmap())
+ {
+ rc = ListViewOnErase(hWnd, (HDC) wParam);
+ bHandled = TRUE;
+ }
+ break;
+
+ case WM_NOTIFY:
+ bHandled = ListViewNotify(hWnd, (LPNMHDR) lParam);
+ break;
+
+ case WM_SETFONT:
+ hwndHeaderCtrl = ListView_GetHeader(hWnd);
+ if (hwndHeaderCtrl)
+ hHeaderCtrlFont = GetWindowFont(hwndHeaderCtrl);
+ break;
+
+ case WM_CONTEXTMENU:
+ bHandled = ListViewContextMenu(hWnd, lParam);
+ break;
+
+ case WM_DESTROY:
+ // Received WM_DESTROY; time to clean up
+ if (pPickerInfo->pCallbacks->pfnSetViewMode)
+ pPickerInfo->pCallbacks->pfnSetViewMode(pPickerInfo->nCurrentViewID);
+ Picker_Free(pPickerInfo);
+ SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR) pfnParentWndProc);
+ SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) NULL);
+ break;
+ }
+
+ if (!bHandled)
+ rc = CallParentWndProc(pfnParentWndProc, hWnd, message, wParam, lParam);
+
+ // If we received WM_SETFONT, reset header ctrl font back to original font
+ if (hwndHeaderCtrl)
+ SetWindowFont(hwndHeaderCtrl, hHeaderCtrlFont, TRUE);
+
+ return rc;
+}
+
+
+
+// Re/initialize the ListControl Columns
+static void Picker_InternalResetColumnDisplay(HWND hWnd, BOOL bFirstTime)
+{
+ LV_COLUMN lvc;
+ int i;
+ int nColumn;
+ int *widths;
+ int *order;
+ int *shown;
+ //int shown_columns;
+ LVCOLUMN col;
+ struct PickerInfo *pPickerInfo;
+ HRESULT res;
+ BOOL b_res;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+
+ widths = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*widths));
+ order = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*order));
+ shown = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*shown));
+ if (!widths || !order || !shown)
+ goto done;
+
+ memset(widths, 0, pPickerInfo->nColumnCount * sizeof(*widths));
+ memset(order, 0, pPickerInfo->nColumnCount * sizeof(*order));
+ memset(shown, 0, pPickerInfo->nColumnCount * sizeof(*shown));
+ pPickerInfo->pCallbacks->pfnGetColumnWidths(widths);
+ pPickerInfo->pCallbacks->pfnGetColumnOrder(order);
+ pPickerInfo->pCallbacks->pfnGetColumnShown(shown);
+
+ if (!bFirstTime)
+ {
+ DWORD style = GetWindowLong(hWnd, GWL_STYLE);
+
+ // switch the list view to LVS_REPORT style so column widths reported correctly
+ SetWindowLong(hWnd, GWL_STYLE,
+ (GetWindowLong(hWnd, GWL_STYLE) & ~LVS_TYPEMASK) | LVS_REPORT);
+
+ // Retrieve each of the column widths
+ i = 0;
+ memset(&col, 0, sizeof(col));
+ col.mask = LVCF_WIDTH;
+ while(ListView_GetColumn(hWnd, 0, &col))
+ {
+ nColumn = Picker_GetRealColumnFromViewColumn(hWnd, i++);
+ widths[nColumn] = col.cx;
+ b_res = ListView_DeleteColumn(hWnd, 0);
+ }
+
+ pPickerInfo->pCallbacks->pfnSetColumnWidths(widths);
+
+ // restore old style
+ SetWindowLong(hWnd, GWL_STYLE, style);
+ }
+
+ nColumn = 0;
+ for (i = 0; i < pPickerInfo->nColumnCount; i++)
+ {
+ if (shown[order[i]])
+ {
+ lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM | LVCF_TEXT;
+ lvc.pszText = (LPTSTR) pPickerInfo->ppszColumnNames[order[i]];
+ lvc.iSubItem = nColumn;
+ lvc.cx = widths[order[i]];
+ lvc.fmt = LVCFMT_LEFT;
+ res = ListView_InsertColumn(hWnd, nColumn, &lvc);
+ pPickerInfo->pnColumnsOrder[nColumn] = order[i];
+
+ dprintf("Visible column %d: Logical column %d; Width=%d\n", nColumn, order[i], widths[order[i]]);
+
+ nColumn++;
+ }
+ }
+
+ //shown_columns = nColumn;
+
+ /* Fill this in so we can still sort on columns NOT shown */
+ for (i = 0; i < pPickerInfo->nColumnCount && nColumn < pPickerInfo->nColumnCount; i++)
+ {
+ if (!shown[order[i]])
+ {
+ pPickerInfo->pnColumnsOrder[nColumn] = order[i];
+ nColumn++;
+ }
+ }
+
+ if (GetListFontColor() == RGB(255, 255, 255))
+ b_res = ListView_SetTextColor(hWnd, RGB(240, 240, 240));
+ else
+ b_res = ListView_SetTextColor(hWnd, GetListFontColor());
+
+done:
+ if (widths)
+ free(widths);
+ if (order)
+ free(order);
+ if (shown)
+ free(shown);
+}
+
+
+
+void Picker_ResetColumnDisplay(HWND hWnd)
+{
+ Picker_InternalResetColumnDisplay(hWnd, FALSE);
+}
+
+
+
+void Picker_ClearIdle(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ if (pPickerInfo->nTimer)
+ {
+ KillTimer(hwndPicker, 0);
+ pPickerInfo->nTimer = 0;
+ }
+}
+
+
+
+static void CALLBACK Picker_TimerProc(HWND hwndPicker, UINT uMsg,
+ UINT_PTR idEvent, DWORD dwTime)
+{
+ struct PickerInfo *pPickerInfo;
+ BOOL bContinueIdle;
+ DWORD nTickCount, nBaseTickCount;
+ DWORD nMaxIdleTicks = 50;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ bContinueIdle = FALSE;
+ nBaseTickCount = GetTickCount();
+
+ // This idle procedure will loop until either idling is over, or until
+ // a specified amount of time elapses (in this case, 50ms). This frees
+ // idle callbacks of any responsibility for balancing their workloads; the
+ // picker code will
+ do
+ {
+ if (pPickerInfo->pCallbacks->pfnOnIdle)
+ bContinueIdle = pPickerInfo->pCallbacks->pfnOnIdle(hwndPicker);
+ nTickCount = GetTickCount();
+ }
+ while(bContinueIdle && ((nTickCount - nBaseTickCount) < nMaxIdleTicks));
+
+ if (!bContinueIdle)
+ Picker_ClearIdle(hwndPicker);
+}
+
+
+
+// Instructs this picker to reset idling; idling will continue until the
+// idle function returns FALSE
+void Picker_ResetIdle(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ Picker_ClearIdle(hwndPicker);
+ if (pPickerInfo->pCallbacks->pfnOnIdle)
+ pPickerInfo->nTimer = SetTimer(hwndPicker, 0, 0, Picker_TimerProc);
+}
+
+
+
+BOOL Picker_IsIdling(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ return pPickerInfo->nTimer != 0;
+}
+
+
+
+BOOL SetupPicker(HWND hwndPicker, const struct PickerOptions *pOptions)
+{
+ struct PickerInfo *pPickerInfo;
+ int i;
+ LONG_PTR l;
+ HRESULT res;
+
+ assert(hwndPicker);
+
+ // Allocate the list view struct
+ pPickerInfo = (struct PickerInfo *) malloc(sizeof(struct PickerInfo));
+ if (!pPickerInfo)
+ return FALSE;
+
+ // And fill it out
+ memset(pPickerInfo, 0, sizeof(*pPickerInfo));
+ pPickerInfo->pCallbacks = pOptions->pCallbacks;
+ pPickerInfo->nColumnCount = pOptions->nColumnCount;
+ pPickerInfo->ppszColumnNames = pOptions->ppszColumnNames;
+ pPickerInfo->nLastItem = -1;
+
+ if (pPickerInfo->nColumnCount)
+ {
+ // Allocate space for the column order and columns shown array
+ pPickerInfo->pnColumnsOrder = (int*)malloc(pPickerInfo->nColumnCount *
+ sizeof(*pPickerInfo->pnColumnsOrder));
+ pPickerInfo->pnColumnsShown = (int*)malloc(pPickerInfo->nColumnCount *
+ sizeof(*pPickerInfo->pnColumnsShown));
+ if (!pPickerInfo->pnColumnsOrder || !pPickerInfo->pnColumnsShown)
+ goto error;
+
+ // set up initial values
+ for (i = 0; i < pPickerInfo->nColumnCount; i++)
+ {
+ pPickerInfo->pnColumnsOrder[i] = i;
+ pPickerInfo->pnColumnsShown[i] = TRUE;
+ }
+
+ if (GetUseOldControl())
+ {
+ if (pPickerInfo->pCallbacks->pfnSetColumnOrder)
+ pPickerInfo->pCallbacks->pfnSetColumnOrder(pPickerInfo->pnColumnsOrder);
+ if (pPickerInfo->pCallbacks->pfnSetColumnShown)
+ pPickerInfo->pCallbacks->pfnSetColumnShown(pPickerInfo->pnColumnsShown);
+ }
+ else
+ {
+ if (pPickerInfo->pCallbacks->pfnGetColumnOrder)
+ pPickerInfo->pCallbacks->pfnGetColumnOrder(pPickerInfo->pnColumnsOrder);
+ if (pPickerInfo->pCallbacks->pfnGetColumnShown)
+ pPickerInfo->pCallbacks->pfnGetColumnShown(pPickerInfo->pnColumnsShown);
+ }
+ }
+
+ // Hook in our wndproc and userdata pointer
+ l = GetWindowLongPtr(hwndPicker, GWLP_WNDPROC);
+ pPickerInfo->pfnParentWndProc = (WNDPROC) l;
+ SetWindowLongPtr(hwndPicker, GWLP_USERDATA, (LONG_PTR) pPickerInfo);
+ SetWindowLongPtr(hwndPicker, GWLP_WNDPROC, (LONG_PTR) ListViewWndProc);
+
+ res = ListView_SetExtendedListViewStyle(hwndPicker, LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP |
+ LVS_EX_UNDERLINEHOT | LVS_EX_UNDERLINECOLD | LVS_EX_LABELTIP);
+
+ Picker_InternalResetColumnDisplay(hwndPicker, TRUE);
+ Picker_ResetIdle(hwndPicker);
+ return TRUE;
+
+error:
+ if (pPickerInfo)
+ Picker_Free(pPickerInfo);
+ return FALSE;
+}
+
+
+
+int Picker_GetViewID(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ return pPickerInfo->nCurrentViewID;
+}
+
+
+
+void Picker_SetViewID(HWND hwndPicker, int nViewID)
+{
+ struct PickerInfo *pPickerInfo;
+ LONG_PTR nListViewStyle;
+ DWORD dwStyle;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ // Change the nCurrentViewID member
+ pPickerInfo->nCurrentViewID = nViewID;
+ if (pPickerInfo->pCallbacks->pfnSetViewMode)
+ pPickerInfo->pCallbacks->pfnSetViewMode(pPickerInfo->nCurrentViewID);
+
+ // Change the ListView flags in accordance
+ switch(nViewID)
+ {
+ case VIEW_LARGE_ICONS:
+ nListViewStyle = LVS_ICON;
+ break;
+ case VIEW_SMALL_ICONS:
+ nListViewStyle = LVS_SMALLICON;
+ break;
+ case VIEW_INLIST:
+ nListViewStyle = LVS_LIST;
+ break;
+ case VIEW_GROUPED:
+ case VIEW_REPORT:
+ default:
+ nListViewStyle = LVS_REPORT;
+ break;
+ }
+
+ dwStyle = GetWindowLong(hwndPicker, GWL_STYLE);
+ if (GetUseXPControl())
+ {
+ // RS Microsoft must have changed something in the Ownerdraw handling with Version 6 of the Common Controls
+ // as on all other OSes it works without this...
+ if (nViewID == VIEW_LARGE_ICONS || nViewID == VIEW_SMALL_ICONS)
+ {
+ // remove Ownerdraw style for Icon views
+ dwStyle &= ~LVS_OWNERDRAWFIXED;
+ if( nViewID == VIEW_SMALL_ICONS )
+ {
+ // to properly get them to arrange, otherwise the entries might overlap
+ // we have to call SetWindowLong to get it into effect !!
+ // It's no use just setting the Style, as it's changed again further down...
+ SetWindowLong(hwndPicker, GWL_STYLE, (GetWindowLong(hwndPicker, GWL_STYLE)
+ & ~LVS_TYPEMASK) | LVS_ICON);
+ }
+ }
+ else
+ {
+ // add again..
+ dwStyle |= LVS_OWNERDRAWFIXED;
+ }
+ }
+
+ dwStyle &= ~LVS_TYPEMASK;
+ dwStyle |= nListViewStyle;
+ SetWindowLong(hwndPicker, GWL_STYLE, dwStyle);
+ RedrawWindow(hwndPicker, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME);
+}
+
+
+
+static BOOL PickerHitTest(HWND hWnd)
+{
+ RECT rect;
+ POINTS p;
+ DWORD res = GetMessagePos();
+ LVHITTESTINFO htInfo;
+ HRESULT result;
+
+ memset(&htInfo, 0, sizeof(htInfo));
+ p = MAKEPOINTS(res);
+ GetWindowRect(hWnd, &rect);
+ htInfo.pt.x = p.x - rect.left;
+ htInfo.pt.y = p.y - rect.top;
+ result = ListView_HitTest(hWnd, &htInfo);
+
+ return (! (htInfo.flags & LVHT_NOWHERE));
+}
+
+
+
+int Picker_GetSelectedItem(HWND hWnd)
+{
+ int nItem;
+ LV_ITEM lvi;
+ BOOL res;
+
+ nItem = ListView_GetNextItem(hWnd, -1, LVIS_SELECTED | LVIS_FOCUSED);
+ if (nItem < 0)
+ return 0;
+
+ memset(&lvi, 0, sizeof(lvi));
+ lvi.iItem = nItem;
+ lvi.mask = LVIF_PARAM;
+ res = ListView_GetItem(hWnd, &lvi);
+ return lvi.lParam;
+}
+
+
+
+void Picker_SetSelectedPick(HWND hWnd, int nIndex)
+{
+ BOOL res;
+
+ if (nIndex < 0)
+ nIndex = 0;
+
+ ListView_SetItemState(hWnd, nIndex, LVIS_FOCUSED | LVIS_SELECTED,
+ LVIS_FOCUSED | LVIS_SELECTED);
+ res = ListView_EnsureVisible(hWnd, nIndex, FALSE);
+}
+
+
+
+void Picker_SetSelectedItem(HWND hWnd, int nItem)
+{
+ int i;
+ LV_FINDINFO lvfi;
+
+ if (nItem < 0)
+ return;
+
+ lvfi.flags = LVFI_PARAM;
+ lvfi.lParam = nItem;
+ i = ListView_FindItem(hWnd, -1, &lvfi);
+ if (i == -1)
+ {
+ POINT p = {0,0};
+ lvfi.flags = LVFI_NEARESTXY;
+ lvfi.pt = p;
+ i = ListView_FindItem(hWnd, -1, &lvfi);
+ }
+ Picker_SetSelectedPick(hWnd, (i == -1) ? 0 : i);
+}
+
+
+
+static const TCHAR *Picker_CallGetItemString(HWND hwndPicker,
+ int nItem, int nColumn, TCHAR *pszBuffer, UINT nBufferLength)
+{
+ // this call wraps the pfnGetItemString callback to properly set up the
+ // buffers, and normalize the results
+ struct PickerInfo *pPickerInfo;
+ const TCHAR *s;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ pszBuffer[0] = '\0';
+ s = NULL;
+
+ if (pPickerInfo->pCallbacks->pfnGetItemString)
+ {
+ s = pPickerInfo->pCallbacks->pfnGetItemString(hwndPicker,
+ nItem, nColumn, pszBuffer, nBufferLength);
+ }
+ if (!s)
+ s = pszBuffer;
+ return s;
+}
+
+
+
+// put the arrow on the new sort column
+static void Picker_ResetHeaderSortIcon(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ HWND hwndHeader;
+ HD_ITEM hdi;
+ int i, nViewColumn;
+ BOOL res;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ hwndHeader = ListView_GetHeader(hwndPicker);
+
+ // take arrow off non-current columns
+ hdi.mask = HDI_FORMAT;
+ hdi.fmt = HDF_STRING;
+ for (i = 0; i < pPickerInfo->nColumnCount; i++)
+ {
+ if (i != pPickerInfo->pCallbacks->pfnGetSortColumn())
+ res = Header_SetItem(hwndHeader, Picker_GetViewColumnFromRealColumn(hwndPicker, i), &hdi);
+ }
+
+ if (GetUseXPControl())
+ {
+ // use built in sort arrows
+ hdi.mask = HDI_FORMAT;
+ hdi.fmt = HDF_STRING | (pPickerInfo->pCallbacks->pfnGetSortReverse() ? HDF_SORTDOWN : HDF_SORTUP);
+ }
+ else
+ {
+ // put our arrow icon next to the text
+ hdi.mask = HDI_FORMAT | HDI_IMAGE;
+ hdi.fmt = HDF_STRING | HDF_IMAGE | HDF_BITMAP_ON_RIGHT;
+ hdi.iImage = pPickerInfo->pCallbacks->pfnGetSortReverse() ? 1 : 0;
+ }
+
+ nViewColumn = Picker_GetViewColumnFromRealColumn(hwndPicker, pPickerInfo->pCallbacks->pfnGetSortColumn());
+ res = Header_SetItem(hwndHeader, nViewColumn, &hdi);
+}
+
+
+
+struct CompareProcParams
+{
+ HWND hwndPicker;
+ struct PickerInfo *pPickerInfo;
+ int nSortColumn;
+ int nViewMode;
+ BOOL bReverse;
+};
+
+
+
+static void Picker_PopulateCompareProcParams(HWND hwndPicker,
+ struct CompareProcParams *pParams)
+{
+ struct PickerInfo *pPickerInfo;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ // populate the CompareProcParams structure
+ memset(pParams, 0, sizeof(*pParams));
+ pParams->hwndPicker = hwndPicker;
+ pParams->pPickerInfo = pPickerInfo;
+ pParams->nViewMode = pPickerInfo->pCallbacks->pfnGetViewMode();
+ if (pPickerInfo->pCallbacks->pfnGetSortColumn)
+ pParams->nSortColumn = pPickerInfo->pCallbacks->pfnGetSortColumn();
+ if (pPickerInfo->pCallbacks->pfnGetSortReverse)
+ pParams->bReverse = pPickerInfo->pCallbacks->pfnGetSortReverse();
+}
+
+
+
+static int CALLBACK Picker_CompareProc(LPARAM index1, LPARAM index2, LPARAM nParamSort)
+{
+ struct CompareProcParams *pcpp = (struct CompareProcParams *) nParamSort;
+ struct PickerInfo *pPickerInfo = pcpp->pPickerInfo;
+ BOOL bCallCompare = TRUE;
+ int nResult = 0, nParent1, nParent2;
+ TCHAR szBuffer1[256], szBuffer2[256];
+ const TCHAR *s1, *s2;
+
+ if (pcpp->nViewMode == VIEW_GROUPED)
+ {
+ // do our fancy compare, with clones grouped under parents
+ // first thing we need to do is identify both item's parents
+ if (pPickerInfo->pCallbacks->pfnFindItemParent)
+ {
+ nParent1 = pPickerInfo->pCallbacks->pfnFindItemParent(pcpp->hwndPicker, index1);
+ nParent2 = pPickerInfo->pCallbacks->pfnFindItemParent(pcpp->hwndPicker, index2);
+ }
+ else
+ {
+ nParent1 = nParent2 = -1;
+ }
+
+ if ((nParent1 < 0) && (nParent2 < 0))
+ {
+ // if both entries are both parents, we just do a basic sort
+ }
+ else if ((nParent1 >= 0) && (nParent2 >= 0))
+ {
+ // if both entries are children and the parents are different,
+ // sort on their parents
+ if (nParent1 != nParent2)
+ {
+ index1 = nParent1;
+ index2 = nParent2;
+ }
+ }
+ else
+ {
+ // one parent, one child
+ if (nParent1 >= 0)
+ {
+ // first one is a child
+ if (nParent1 == index2)
+ {
+ // if this is a child and its parent, put child after
+ nResult = 1;
+ bCallCompare = FALSE;
+ }
+ else
+ {
+ // sort on parent
+ index1 = nParent1;
+ }
+ }
+ else
+ {
+ // second one is a child
+ if (nParent2 == index1)
+ {
+ // if this is a child and its parent, put child after
+ nResult = -1;
+ bCallCompare = FALSE;
+ }
+ else
+ {
+ // sort on parent
+ index2 = nParent2;
+ }
+ }
+ }
+ }
+
+ if (bCallCompare)
+ {
+ if (pPickerInfo->pCallbacks->pfnCompare)
+ {
+ nResult = pPickerInfo->pCallbacks->pfnCompare(pcpp->hwndPicker,
+ index1, index2, pcpp->nSortColumn);
+ }
+ else
+ {
+ // no default sort proc, just get the string and compare them
+ s1 = Picker_CallGetItemString(pcpp->hwndPicker, index1, pcpp->nSortColumn,
+ szBuffer1, ARRAY_LENGTH(szBuffer1));
+ s2 = Picker_CallGetItemString(pcpp->hwndPicker, index2, pcpp->nSortColumn,
+ szBuffer2, ARRAY_LENGTH(szBuffer2));
+ nResult = _tcsicmp(s1, s2);
+ }
+
+ if (pcpp->bReverse)
+ nResult = -nResult;
+ }
+ return nResult;
+}
+
+
+
+void Picker_Sort(HWND hwndPicker)
+{
+ LV_FINDINFO lvfi;
+ //struct PickerInfo *pPickerInfo;
+ struct CompareProcParams params;
+ int nItem;
+ BOOL res;
+
+ //pPickerInfo = GetPickerInfo(hwndPicker);
+
+ // populate the CompareProcParams structure
+ Picker_PopulateCompareProcParams(hwndPicker, &params);
+
+ res = ListView_SortItems(hwndPicker, Picker_CompareProc, (LPARAM) &params);
+
+ Picker_ResetHeaderSortIcon(hwndPicker);
+
+ memset(&lvfi, 0, sizeof(lvfi));
+ lvfi.flags = LVFI_PARAM;
+ lvfi.lParam = Picker_GetSelectedItem(hwndPicker);
+ nItem = ListView_FindItem(hwndPicker, -1, &lvfi);
+
+ res = ListView_EnsureVisible(hwndPicker, nItem, FALSE);
+}
+
+
+
+int Picker_InsertItemSorted(HWND hwndPicker, int nParam)
+{
+ //struct PickerInfo *pPickerInfo;
+ int nHigh, nLow, nMid;
+ struct CompareProcParams params;
+ int nCompareResult;
+ LVITEM lvi;
+ BOOL res;
+
+ //pPickerInfo = GetPickerInfo(hwndPicker);
+
+ nLow = 0;
+ nHigh = ListView_GetItemCount(hwndPicker);
+
+ // populate the CompareProcParams structure
+ Picker_PopulateCompareProcParams(hwndPicker, &params);
+
+ while(nLow < nHigh)
+ {
+ nMid = (nHigh + nLow) / 2;
+
+ memset(&lvi, 0, sizeof(lvi));
+ lvi.mask = LVIF_PARAM;
+ lvi.iItem = nMid;
+ res = ListView_GetItem(hwndPicker, &lvi);
+
+ nCompareResult = Picker_CompareProc(nParam, lvi.lParam, (LPARAM) &params);
+
+ if (nCompareResult > 0)
+ nLow = nMid + 1;
+ else if (nCompareResult < 0)
+ nHigh = nMid;
+ else
+ {
+ nLow = nMid;
+ break;
+ }
+ }
+
+ memset(&lvi, 0, sizeof(lvi));
+ lvi.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;
+ lvi.iItem = nLow;
+ lvi.iSubItem = 0;
+ lvi.lParam = nParam;
+ lvi.pszText = LPSTR_TEXTCALLBACK;
+ lvi.iImage = I_IMAGECALLBACK;
+
+ return ListView_InsertItem(hwndPicker, &lvi);
+}
+
+
+
+int Picker_GetRealColumnFromViewColumn(HWND hWnd, int nViewColumn)
+{
+ struct PickerInfo *pPickerInfo;
+ int nRealColumn = 0;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+ if (nViewColumn >= 0 && nViewColumn < pPickerInfo->nColumnCount)
+ nRealColumn = pPickerInfo->pnColumnsOrder[nViewColumn];
+ return nRealColumn;
+}
+
+
+
+int Picker_GetViewColumnFromRealColumn(HWND hWnd, int nRealColumn)
+{
+ struct PickerInfo *pPickerInfo;
+ int i;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+ for (i = 0; i < pPickerInfo->nColumnCount; i++)
+ {
+ if (pPickerInfo->pnColumnsOrder[i] == nRealColumn)
+ return i;
+ }
+
+ // major error, shouldn't be possible, but no good way to warn
+ return 0;
+}
+
+
+
+BOOL Picker_HandleNotify(LPNMHDR lpNmHdr)
+{
+ struct PickerInfo *pPickerInfo;
+ HWND hWnd;
+ BOOL bResult = FALSE;
+ NM_LISTVIEW *pnmv;
+ LV_DISPINFO *pDispInfo;
+ int nItem, nColumn;
+ const TCHAR *s;
+ BOOL bReverse;
+
+ hWnd = lpNmHdr->hwndFrom;
+ pPickerInfo = GetPickerInfo(hWnd);
+ pnmv = (NM_LISTVIEW *) lpNmHdr;
+
+ switch(lpNmHdr->code)
+ {
+ case NM_RCLICK:
+ case NM_CLICK:
+ case NM_DBLCLK:
+ // don't allow selection of blank spaces in the listview
+ if (!PickerHitTest(hWnd))
+ {
+ // we have no current item selected
+ if (pPickerInfo->nLastItem != -1)
+ {
+ Picker_SetSelectedItem(hWnd, pPickerInfo->nLastItem);
+ }
+ bResult = TRUE;
+ }
+ else if ((lpNmHdr->code == NM_DBLCLK) && (pPickerInfo->pCallbacks->pfnDoubleClick))
+ {
+ // double click!
+ pPickerInfo->pCallbacks->pfnDoubleClick();
+ bResult = TRUE;
+ }
+ break;
+
+ case LVN_GETDISPINFO:
+ pDispInfo = (LV_DISPINFO *) lpNmHdr;
+ nItem = (int) pDispInfo->item.lParam;
+
+ if (pDispInfo->item.mask & LVIF_IMAGE)
+ {
+ // retrieve item image
+ if (pPickerInfo->pCallbacks->pfnGetItemImage)
+ pDispInfo->item.iImage = pPickerInfo->pCallbacks->pfnGetItemImage(hWnd, nItem);
+ else
+ pDispInfo->item.iImage = 0;
+ bResult = TRUE;
+ }
+
+ if (pDispInfo->item.mask & LVIF_STATE)
+ {
+ pDispInfo->item.state = 0;
+ bResult = TRUE;
+ }
+
+ if (pDispInfo->item.mask & LVIF_TEXT)
+ {
+ // retrieve item text
+ nColumn = Picker_GetRealColumnFromViewColumn(hWnd, pDispInfo->item.iSubItem);
+
+ s = Picker_CallGetItemString(hWnd, nItem, nColumn,
+ pDispInfo->item.pszText, pDispInfo->item.cchTextMax);
+
+ pDispInfo->item.pszText = (TCHAR *) s;
+ bResult = TRUE;
+ }
+ break;
+
+ case LVN_ITEMCHANGED:
+ if ((pnmv->uOldState & LVIS_SELECTED)
+ && !(pnmv->uNewState & LVIS_SELECTED))
+ {
+ if (pnmv->lParam != -1)
+ pPickerInfo->nLastItem = pnmv->lParam;
+ if (pPickerInfo->pCallbacks->pfnLeavingItem)
+ pPickerInfo->pCallbacks->pfnLeavingItem(hWnd, pnmv->lParam);
+ }
+ if (!(pnmv->uOldState & LVIS_SELECTED)
+ && (pnmv->uNewState & LVIS_SELECTED))
+ {
+ if (pPickerInfo->pCallbacks->pfnEnteringItem)
+ pPickerInfo->pCallbacks->pfnEnteringItem(hWnd, pnmv->lParam);
+ }
+ bResult = TRUE;
+ break;
+
+ case LVN_COLUMNCLICK:
+ // if clicked on the same column we're sorting by, reverse it
+ if (pPickerInfo->pCallbacks->pfnGetSortColumn() == Picker_GetRealColumnFromViewColumn(hWnd, pnmv->iSubItem))
+ bReverse = !pPickerInfo->pCallbacks->pfnGetSortReverse();
+ else
+ bReverse = FALSE;
+ pPickerInfo->pCallbacks->pfnSetSortReverse(bReverse);
+ pPickerInfo->pCallbacks->pfnSetSortColumn(Picker_GetRealColumnFromViewColumn(hWnd, pnmv->iSubItem));
+ Picker_Sort(hWnd);
+ bResult = TRUE;
+ break;
+
+ case LVN_BEGINDRAG:
+ if (pPickerInfo->pCallbacks->pfnBeginListViewDrag)
+ pPickerInfo->pCallbacks->pfnBeginListViewDrag(pnmv);
+ break;
+ }
+ return bResult;
+}
+
+
+
+int Picker_GetNumColumns(HWND hWnd)
+{
+ int nColumnCount = 0;
+ int i;
+ HWND hwndHeader;
+ int *shown;
+ struct PickerInfo *pPickerInfo;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+
+ shown = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*shown));
+ if (!shown)
+ return -1;
+
+ pPickerInfo->pCallbacks->pfnGetColumnShown(shown);
+ hwndHeader = ListView_GetHeader(hWnd);
+
+ if (GetUseOldControl() || (nColumnCount = Header_GetItemCount(hwndHeader)) < 1)
+ {
+ nColumnCount = 0;
+ for (i = 0; i < pPickerInfo->nColumnCount ; i++ )
+ {
+ if (shown[i])
+ nColumnCount++;
+ }
+ }
+
+ free(shown);
+ return nColumnCount;
+}
+
+
+
+/* Add ... to Items in ListView if needed */
+static LPCTSTR MakeShortString(HDC hDC, LPCTSTR lpszLong, int nColumnLen, int nOffset)
+{
+ static const TCHAR szThreeDots[] = TEXT("...");
+ static TCHAR szShort[MAX_PATH];
+ int nStringLen = lstrlen(lpszLong);
+ int nAddLen;
+ SIZE size;
+ int i;
+
+ GetTextExtentPoint32(hDC, lpszLong, nStringLen, &size);
+ if (nStringLen == 0 || size.cx + nOffset <= nColumnLen)
+ return lpszLong;
+
+ lstrcpy(szShort, lpszLong);
+ GetTextExtentPoint32(hDC, szThreeDots, ARRAY_LENGTH(szThreeDots), &size);
+ nAddLen = size.cx;
+
+ for (i = nStringLen - 1; i > 0; i--)
+ {
+ szShort[i] = 0;
+ GetTextExtentPoint32(hDC, szShort, i, &size);
+ if (size.cx + nOffset + nAddLen <= nColumnLen)
+ break;
+ }
+
+ lstrcat(szShort, szThreeDots);
+
+ return szShort;
+}
+
+#define ListView_GetItemRect_Modified(hwnd,i,prc,code) (BOOL)SNDMSG((hwnd),LVM_GETITEMRECT,(WPARAM)(int)(i),(((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)))
+
+void Picker_HandleDrawItem(HWND hWnd, LPDRAWITEMSTRUCT lpDrawItemStruct)
+{
+ struct PickerInfo *pPickerInfo;
+ HDC hDC = lpDrawItemStruct->hDC;
+ RECT rcItem = lpDrawItemStruct->rcItem;
+ UINT uiFlags = ILD_TRANSPARENT;
+ HIMAGELIST hImageList;
+ int nItem = lpDrawItemStruct->itemID;
+ COLORREF clrTextSave = 0;
+ COLORREF clrBkSave = 0;
+ COLORREF clrImage = GetSysColor(COLOR_WINDOW);
+ static TCHAR szBuff[MAX_PATH];
+ BOOL bFocus = (GetFocus() == hWnd);
+ LPCTSTR pszText;
+ UINT nStateImageMask;
+ BOOL bSelected;
+ LV_COLUMN lvc;
+ LV_ITEM lvi;
+ RECT rcAllLabels;
+ RECT rcLabel;
+ RECT rcIcon;
+ int offset;
+ SIZE size;
+ int i, j;
+ int nColumn;
+ int nColumnMax = 0;
+ int *order;
+ BOOL bDrawAsChild;
+ int indent_space;
+ BOOL bColorChild = FALSE;
+ BOOL bParentFound = FALSE;
+ int nParent;
+ HBITMAP hBackground = GetBackgroundBitmap();
+ MYBITMAPINFO *pbmDesc = GetBackgroundInfo();
+ BOOL res;
+
+ pPickerInfo = GetPickerInfo(hWnd);
+
+ order = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*order));
+ if (!order)
+ return;
+ nColumnMax = Picker_GetNumColumns(hWnd);
+
+ if (GetUseOldControl())
+ {
+ pPickerInfo->pCallbacks->pfnGetColumnOrder(order);
+ }
+ else
+ {
+ /* Get the Column Order and save it */
+ res = ListView_GetColumnOrderArray(hWnd, nColumnMax, order);
+
+ /* Disallow moving column 0 */
+ if (order[0] != 0)
+ {
+ for (i = 0; i < nColumnMax; i++)
+ {
+ if (order[i] == 0)
+ {
+ order[i] = order[0];
+ order[0] = 0;
+ }
+ }
+ res = ListView_SetColumnOrderArray(hWnd, nColumnMax, order);
+ }
+ }
+
+ /* Labels are offset by a certain amount */
+ /* This offset is related to the width of a space character */
+ GetTextExtentPoint32(hDC, TEXT(" "), 1, &size);
+ offset = size.cx;
+
+ lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE | LVIF_PARAM;
+ lvi.iItem = nItem;
+ lvi.iSubItem = order[0];
+ lvi.pszText = szBuff;
+ lvi.cchTextMax = ARRAY_LENGTH(szBuff);
+ lvi.stateMask = 0xFFFF; /* get all state flags */
+ res = ListView_GetItem(hWnd, &lvi);
+
+ bSelected = ((lvi.state & LVIS_DROPHILITED) || ( (lvi.state & LVIS_SELECTED)
+ && ((bFocus) || (GetWindowLong(hWnd, GWL_STYLE) & LVS_SHOWSELALWAYS))));
+
+ /* figure out if we indent and draw grayed */
+ if (pPickerInfo->pCallbacks->pfnFindItemParent)
+ nParent = pPickerInfo->pCallbacks->pfnFindItemParent(hWnd, lvi.lParam);
+ else
+ nParent = -1;
+ bDrawAsChild = (pPickerInfo->pCallbacks->pfnGetViewMode() == VIEW_GROUPED && (nParent >= 0));
+
+ /* only indent if parent is also in this view */
+#if 1 // minimal listview flickering.
+ if ((nParent >= 0) && bDrawAsChild)
+ {
+ if (GetParentFound(lvi.lParam))
+ bParentFound = TRUE;
+ }
+#else
+ if ((nParent >= 0) && bDrawAsChild)
+ {
+ for (i = 0; i < ListView_GetItemCount(hWnd); i++)
+ {
+ lvi.mask = LVIF_PARAM;
+ lvi.iItem = i;
+ res = ListView_GetItem(hWnd, &lvi);
+
+ if (lvi.lParam == nParent)
+ {
+ bParentFound = TRUE;
+ break;
+ }
+ }
+ }
+#endif
+
+ if (pPickerInfo->pCallbacks->pfnGetOffsetChildren && pPickerInfo->pCallbacks->pfnGetOffsetChildren())
+ {
+ if (!bParentFound && bDrawAsChild)
+ {
+ /*Reset it, as no Parent is there*/
+ bDrawAsChild = FALSE;
+ bColorChild = TRUE;
+ }
+ else
+ {
+ nParent = -1;
+ bParentFound = FALSE;
+ }
+ }
+
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rcAllLabels, LVIR_BOUNDS);
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rcLabel, LVIR_LABEL);
+
+ rcAllLabels.left = rcLabel.left;
+
+ if (hBackground != NULL)
+ {
+ RECT rcClient;
+ HRGN rgnBitmap;
+ RECT rcTmpBmp = rcItem;
+ RECT rcFirstItem;
+ HPALETTE hPAL;
+ HDC htempDC;
+ HBITMAP oldBitmap;
+
+ htempDC = CreateCompatibleDC(hDC);
+
+ oldBitmap = (HBITMAP)SelectObject(htempDC, hBackground);
+
+ GetClientRect(hWnd, &rcClient);
+ rcTmpBmp.right = rcClient.right;
+ /* We also need to check whether it is the last item
+ The update region has to be extended to the bottom if it is */
+ if (nItem == ListView_GetItemCount(hWnd) - 1)
+ rcTmpBmp.bottom = rcClient.bottom;
+
+ rgnBitmap = CreateRectRgnIndirect(&rcTmpBmp);
+ SelectClipRgn(hDC, rgnBitmap);
+ DeleteBitmap(rgnBitmap);
+
+ hPAL = GetBackgroundPalette();
+ if (hPAL == NULL)
+ hPAL = CreateHalftonePalette(hDC);
+
+ if (GetDeviceCaps(htempDC, RASTERCAPS) & RC_PALETTE && hPAL != NULL)
+ {
+ SelectPalette(htempDC, hPAL, FALSE);
+ RealizePalette(htempDC);
+ }
+
+ res = ListView_GetItemRect_Modified(hWnd, 0, &rcFirstItem, LVIR_BOUNDS);
+
+ for (i = rcFirstItem.left; i < rcClient.right; i += pbmDesc->bmWidth)
+ for (j = rcFirstItem.top; j < rcClient.bottom; j += pbmDesc->bmHeight)
+ BitBlt(hDC, i, j, pbmDesc->bmWidth, pbmDesc->bmHeight, htempDC, 0, 0, SRCCOPY);
+
+ SelectObject(htempDC, oldBitmap);
+ DeleteDC(htempDC);
+
+ if (GetBackgroundPalette() == NULL)
+ {
+ DeletePalette(hPAL);
+ hPAL = NULL;
+ }
+ }
+
+ indent_space = 0;
+
+ if (bDrawAsChild)
+ {
+ RECT rect;
+
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rect, LVIR_ICON);
+
+ /* indent width of icon + the space between the icon and text
+ * so left of clone icon starts at text of parent
+ */
+ indent_space = rect.right - rect.left + offset;
+ }
+
+ rcAllLabels.left += indent_space;
+
+ if (bSelected)
+ {
+ HBRUSH hBrush;
+ HBRUSH hOldBrush;
+
+ if (bFocus)
+ {
+ clrTextSave = SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+ clrBkSave = SetBkColor(hDC, GetSysColor(COLOR_HIGHLIGHT));
+ hBrush = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));
+ }
+ else
+ {
+ clrTextSave = SetTextColor(hDC, GetSysColor(COLOR_BTNTEXT));
+ clrBkSave = SetBkColor(hDC, GetSysColor(COLOR_BTNFACE));
+ hBrush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
+ }
+
+ hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);
+ FillRect(hDC, &rcAllLabels, hBrush);
+ SelectObject(hDC, hOldBrush);
+ DeleteBrush(hBrush);
+ }
+ else
+ {
+ if (hBackground == NULL)
+ {
+ HBRUSH hBrush;
+
+ hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
+ FillRect(hDC, &rcAllLabels, hBrush);
+ DeleteBrush(hBrush);
+ }
+
+ if (pPickerInfo->pCallbacks->pfnGetOffsetChildren && pPickerInfo->pCallbacks->pfnGetOffsetChildren())
+ {
+ if (bDrawAsChild || bColorChild)
+ clrTextSave = SetTextColor(hDC, GetListCloneColor());
+ else
+ clrTextSave = SetTextColor(hDC, GetListFontColor());
+ }
+ else
+ {
+ if (bDrawAsChild)
+ clrTextSave = SetTextColor(hDC, GetListCloneColor());
+ else
+ clrTextSave = SetTextColor(hDC, GetListFontColor());
+ }
+
+ clrBkSave = SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
+ }
+
+
+ if (lvi.state & LVIS_CUT)
+ {
+ clrImage = GetSysColor(COLOR_WINDOW);
+ uiFlags |= ILD_BLEND50;
+ }
+ else if (bSelected)
+ {
+ if (bFocus)
+ clrImage = GetSysColor(COLOR_HIGHLIGHT);
+ else
+ clrImage = GetSysColor(COLOR_BTNFACE);
+
+ uiFlags |= ILD_BLEND50;
+ }
+
+ nStateImageMask = lvi.state & LVIS_STATEIMAGEMASK;
+
+ if (nStateImageMask)
+ {
+ int nImage = (nStateImageMask >> 12) - 1;
+ hImageList = ListView_GetImageList(hWnd, LVSIL_STATE);
+ if (hImageList)
+ ImageList_Draw(hImageList, nImage, hDC, rcItem.left, rcItem.top, ILD_TRANSPARENT);
+ }
+
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rcIcon, LVIR_ICON);
+
+ rcIcon.left += indent_space;
+
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rcItem, LVIR_LABEL);
+
+ hImageList = ListView_GetImageList(hWnd, LVSIL_SMALL);
+ if (hImageList)
+ {
+ UINT nOvlImageMask = lvi.state & LVIS_OVERLAYMASK;
+ if (rcIcon.left + 16 + indent_space < rcItem.right)
+ {
+ ImageList_DrawEx(hImageList, lvi.iImage, hDC, rcIcon.left, rcIcon.top, 16, 16,
+ GetSysColor(COLOR_WINDOW), clrImage, uiFlags | nOvlImageMask);
+ }
+ }
+
+ res = ListView_GetItemRect_Modified(hWnd, nItem, &rcItem, LVIR_LABEL);
+
+ pszText = MakeShortString(hDC, szBuff, rcItem.right - rcItem.left, 2*offset + indent_space);
+
+ rcLabel = rcItem;
+ rcLabel.left += offset + indent_space;
+ rcLabel.right -= offset;
+
+ DrawText(hDC, pszText, -1, &rcLabel,
+ DT_LEFT | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER);
+
+ for (nColumn = 1; nColumn < nColumnMax; nColumn++)
+ {
+ int nRetLen;
+ UINT nJustify;
+ LV_ITEM lvItem;
+
+ lvc.mask = LVCF_FMT | LVCF_WIDTH;
+ res = ListView_GetColumn(hWnd, order[nColumn], &lvc);
+
+ lvItem.mask = LVIF_TEXT;
+ lvItem.iItem = nItem;
+ lvItem.iSubItem = order[nColumn];
+ lvItem.pszText = szBuff;
+ lvItem.cchTextMax = ARRAY_LENGTH(szBuff);
+
+ if (ListView_GetItem(hWnd, &lvItem) == FALSE)
+ continue;
+
+ rcItem.left = rcItem.right;
+ rcItem.right += lvc.cx;
+
+ nRetLen = _tcslen(szBuff);
+ if (nRetLen == 0)
+ continue;
+
+ pszText = MakeShortString(hDC, szBuff, rcItem.right - rcItem.left, 2 * offset);
+
+ nJustify = DT_LEFT;
+
+ if (pszText == szBuff)
+ {
+ switch (lvc.fmt & LVCFMT_JUSTIFYMASK)
+ {
+ case LVCFMT_RIGHT:
+ nJustify = DT_RIGHT;
+ break;
+
+ case LVCFMT_CENTER:
+ nJustify = DT_CENTER;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ rcLabel = rcItem;
+ rcLabel.left += offset;
+ rcLabel.right -= offset;
+ DrawText(hDC, pszText, -1, &rcLabel,
+ nJustify | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER);
+ }
+
+ if (lvi.state & LVIS_FOCUSED && bFocus)
+ DrawFocusRect(hDC, &rcAllLabels);
+
+ SetTextColor(hDC, clrTextSave);
+ SetBkColor(hDC, clrBkSave);
+ free(order);
+}
+
+
+
+
+const struct PickerCallbacks *Picker_GetCallbacks(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ return pPickerInfo->pCallbacks;
+}
+
+
+
+int Picker_GetColumnCount(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ return pPickerInfo->nColumnCount;
+}
+
+
+
+const LPCTSTR *Picker_GetColumnNames(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ pPickerInfo = GetPickerInfo(hwndPicker);
+ return pPickerInfo->ppszColumnNames;
+}
+
+
+
+void Picker_SetHeaderImageList(HWND hwndPicker, HIMAGELIST hHeaderImages)
+{
+ HWND hwndHeader;
+ hwndHeader = ListView_GetHeader(hwndPicker);
+ SendMessage(hwndHeader, HDM_SETIMAGELIST, 0, (LPARAM) (void *) hHeaderImages);
+}
+
+
+
+BOOL Picker_SaveColumnWidths(HWND hwndPicker)
+{
+ struct PickerInfo *pPickerInfo;
+ int *widths;
+ int *order;
+ int *tmpOrder;
+ int nColumnMax, i;
+ BOOL bSuccess = FALSE;
+ BOOL res;
+
+ pPickerInfo = GetPickerInfo(hwndPicker);
+
+ /* allocate space for the column info */
+ widths = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*widths));
+ order = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*order));
+ tmpOrder = (int*)malloc(pPickerInfo->nColumnCount * sizeof(*tmpOrder));
+ if (!widths || !order || !tmpOrder)
+ goto done;
+
+ /* retrieve the values */
+ memset(widths, 0, pPickerInfo->nColumnCount * sizeof(*widths));
+ memset(order, 0, pPickerInfo->nColumnCount * sizeof(*order));
+ pPickerInfo->pCallbacks->pfnGetColumnWidths(widths);
+ pPickerInfo->pCallbacks->pfnGetColumnOrder(order);
+
+ /* switch the list view to LVS_REPORT style so column widths reported correctly */
+ SetWindowLong(hwndPicker, GWL_STYLE,
+ (GetWindowLong(hwndPicker, GWL_STYLE) & ~LVS_TYPEMASK) | LVS_REPORT);
+
+ nColumnMax = Picker_GetNumColumns(hwndPicker);
+
+ if (GetUseOldControl())
+ {
+ for (i = 0; i < nColumnMax; i++)
+ {
+ widths[Picker_GetRealColumnFromViewColumn(hwndPicker, i)] =
+ ListView_GetColumnWidth(hwndPicker, i);
+ }
+ }
+ else
+ {
+ /* Get the Column Order and save it */
+ res = ListView_GetColumnOrderArray(hwndPicker, nColumnMax, tmpOrder);
+
+ for (i = 0; i < nColumnMax; i++)
+ {
+ widths[Picker_GetRealColumnFromViewColumn(hwndPicker, i)]
+ = ListView_GetColumnWidth(hwndPicker, i);
+ order[i] = Picker_GetRealColumnFromViewColumn(hwndPicker, tmpOrder[i]);
+ }
+ }
+
+ pPickerInfo->pCallbacks->pfnSetColumnWidths(widths);
+ pPickerInfo->pCallbacks->pfnSetColumnOrder(order);
+ bSuccess = TRUE;
+
+done:
+ if (widths)
+ free(widths);
+ if (order)
+ free(order);
+ if (tmpOrder)
+ free(tmpOrder);
+ return bSuccess;
+}
diff --git a/docs/release/src/osd/winui/picker.h b/docs/release/src/osd/winui/picker.h
new file mode 100644
index 00000000000..ab514b2d28b
--- /dev/null
+++ b/docs/release/src/osd/winui/picker.h
@@ -0,0 +1,88 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef PICKER_H
+#define PICKER_H
+
+struct PickerCallbacks
+{
+ // Options retrieval
+ void (*pfnSetSortColumn)(int column);
+ int (*pfnGetSortColumn)(void);
+ void (*pfnSetSortReverse)(BOOL reverse);
+ BOOL (*pfnGetSortReverse)(void);
+ void (*pfnSetViewMode)(int val);
+ int (*pfnGetViewMode)(void);
+ void (*pfnSetColumnWidths)(int widths[]);
+ void (*pfnGetColumnWidths)(int widths[]);
+ void (*pfnSetColumnOrder)(int order[]);
+ void (*pfnGetColumnOrder)(int order[]);
+ void (*pfnSetColumnShown)(int shown[]);
+ void (*pfnGetColumnShown)(int shown[]);
+ BOOL (*pfnGetOffsetChildren)(void);
+
+ int (*pfnCompare)(HWND hwndPicker, int nIndex1, int nIndex2, int nSortSubItem);
+ void (*pfnDoubleClick)(void);
+ const TCHAR *(*pfnGetItemString)(HWND hwndPicker, int nItem, int nColumn,
+ TCHAR *pszBuffer, UINT nBufferLength);
+ int (*pfnGetItemImage)(HWND hwndPicker, int nItem);
+ void (*pfnLeavingItem)(HWND hwndPicker, int nItem);
+ void (*pfnEnteringItem)(HWND hwndPicker, int nItem);
+ void (*pfnBeginListViewDrag)(NM_LISTVIEW *pnlv);
+ int (*pfnFindItemParent)(HWND hwndPicker, int nItem);
+ BOOL (*pfnOnIdle)(HWND hwndPicker);
+ void (*pfnOnHeaderContextMenu)(POINT pt, int nColumn);
+ void (*pfnOnBodyContextMenu)(POINT pt);
+};
+
+struct PickerOptions
+{
+ const struct PickerCallbacks *pCallbacks;
+ BOOL bOldControl;
+ BOOL bXPControl;
+ int nColumnCount;
+ const LPCTSTR *ppszColumnNames;
+};
+
+enum
+{
+ VIEW_LARGE_ICONS = 0,
+ VIEW_SMALL_ICONS,
+ VIEW_INLIST,
+ VIEW_REPORT,
+ VIEW_GROUPED,
+ VIEW_MAX
+};
+
+
+
+BOOL SetupPicker(HWND hwndPicker, const struct PickerOptions *pOptions);
+
+int Picker_GetViewID(HWND hwndPicker);
+void Picker_SetViewID(HWND hwndPicker, int nViewID);
+int Picker_GetRealColumnFromViewColumn(HWND hwndPicker, int nViewColumn);
+int Picker_GetViewColumnFromRealColumn(HWND hwndPicker, int nRealColumn);
+void Picker_Sort(HWND hwndPicker);
+void Picker_ResetColumnDisplay(HWND hwndPicker);
+int Picker_GetSelectedItem(HWND hwndPicker);
+void Picker_SetSelectedItem(HWND hwndPicker, int nItem);
+void Picker_SetSelectedPick(HWND hwndPicker, int nIndex);
+int Picker_GetNumColumns(HWND hWnd);
+void Picker_ClearIdle(HWND hwndPicker);
+void Picker_ResetIdle(HWND hwndPicker);
+BOOL Picker_IsIdling(HWND hwndPicker);
+void Picker_SetHeaderImageList(HWND hwndPicker, HIMAGELIST hHeaderImages);
+int Picker_InsertItemSorted(HWND hwndPicker, int nParam);
+BOOL Picker_SaveColumnWidths(HWND hwndPicker);
+
+// These are used to handle events received by the parent regarding
+// picker controls
+BOOL Picker_HandleNotify(LPNMHDR lpNmHdr);
+void Picker_HandleDrawItem(HWND hwndPicker, LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Accessors
+const struct PickerCallbacks *Picker_GetCallbacks(HWND hwndPicker);
+int Picker_GetColumnCount(HWND hwndPicker);
+const LPCTSTR *Picker_GetColumnNames(HWND hwndPicker);
+
+#endif // PICKER_H
diff --git a/docs/release/src/osd/winui/properties.cpp b/docs/release/src/osd/winui/properties.cpp
new file mode 100644
index 00000000000..fa692a9618b
--- /dev/null
+++ b/docs/release/src/osd/winui/properties.cpp
@@ -0,0 +1,3354 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ Properties.c
+
+ Properties Popup and Misc UI support routines.
+
+ Created 8/29/98 by Mike Haaland (mhaaland@hypertech.com)
+
+***************************************************************************/
+
+/***************************************************************************
+
+MSH - 20070809
+--
+Notes on properties and ini files, reset and reset to default.
+----------------------------------------------------------------------------
+Each ini contains a complete option set.
+
+Priority order for option sets (Lowest to Highest):
+
+built-in defaults
+program ini (executable root filename ini)
+debug ini (if running a debug build)
+driver ini (source code root filename in which this driver is found)
+game ini (where game is the driver name for this game)
+
+To determine which option set to use, start at the top level (lowest
+priority), and overlay all higher priority ini's until the desired level
+is reached.
+
+The 'default' option set is the next priority higher up the list from
+the desired level. For the default (program.ini) level, it is also the
+default.
+
+When MAME is run, the desired level is game ini.
+
+Expected Code behavior:
+----------------------------------------------------------------------------
+This approach requires 3 option sets, 'current', 'original' and 'default'.
+
+'current': used to populate the property pages, and to initialize the
+'original' set.
+
+'original': used to evaluate if the 'Reset' button is enabled.
+If 'current' matches 'original', the 'Reset' button is disabled,
+otherwise it is enabled.
+
+'default': used to evaluate if the 'Restore to Defaults' button is enabled.
+If 'current' matches 'default', the 'Restore to Defaults' button is disabled,
+otherwise it is enabled.
+
+When editing any option set, the desired level is set to the one being
+edited, the default set for that level, is the next lower priority set found.
+
+Upon entering the properties dialog:
+a) 'current' is initialized
+b) 'original' is initialized by 'current'
+c) 'default' is initialized
+d) Populate Property pages with 'current'
+e) 'Reset' and 'Restore to Defaults' buttons are evaluated.
+
+After any change:
+a) 'current' is updated
+b) 'Reset' and 'Restore to Defaults' buttons are re-evaluated.
+
+Reset:
+a) 'current' is reinitialized to 'original'
+b) Re-populate Property pages with 'current'
+c) 'Reset' and 'Restore to Defaults' buttons are re-evaluated.
+
+Restore to Defaults:
+a) 'current' is reinitialized to 'default'
+b) Re-populate Property pages with 'current'
+b) 'Reset' and 'Restore to Defaults' buttons are re-evaluated.
+
+Apply:
+a) 'original' is reinitialized to 'current'
+b) 'Reset' and 'Restore to defaults' are re-evaluated.
+c) If they 'current' matches 'default', remove the ini from disk.
+ Otherwise, write the ini to disk.
+
+Cancel:
+a) Exit the dialog.
+
+OK:
+a) If they 'current' matches 'default', remove the ini from disk.
+ Otherwise, write the ini to disk.
+b) Exit the dialog.
+
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+
+// standard C headers
+#include <tchar.h>
+#include <sys/stat.h> // for S_IFDIR
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "screen.h"
+#include "mui_audit.h"
+#include "mui_opts.h"
+#include "resource.h"
+#include "dijoystick.h" /* For DIJoystick availability. */
+#include "mui_util.h"
+#include "datamap.h"
+#include "help.h"
+#include "winui.h"
+#include "strconv.h"
+#include "winutf8.h"
+#include "directories.h"
+#include "sound/samples.h"
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+#include "newuires.h"
+#include "directdraw.h" /* has to be after samples.h */
+#include "properties.h"
+#include "drivenum.h"
+#include "machine/ram.h"
+
+
+#if defined(__GNUC__)
+/* fix warning: cast does not match function type */
+#undef PropSheet_GetTabControl
+#define PropSheet_GetTabControl(d) (HWND)(LRESULT)(int)SendMessage((d),PSM_GETTABCONTROL,0,0)
+#endif /* defined(__GNUC__) */
+
+/***************************************************************
+ * Imported function prototypes
+ ***************************************************************/
+
+/**************************************************************
+ * Local function prototypes
+ **************************************************************/
+
+static void SetSamplesEnabled(HWND hWnd, int nIndex, BOOL bSoundEnabled);
+static void InitializeOptions(HWND hDlg);
+static void InitializeMisc(HWND hDlg);
+static void OptOnHScroll(HWND hWnd, HWND hwndCtl, UINT code, int pos);
+static void NumScreensSelectionChange(HWND hwnd);
+static void RefreshSelectionChange(HWND hWnd, HWND hWndCtrl);
+static void InitializeSoundUI(HWND hwnd);
+static void InitializeSkippingUI(HWND hwnd);
+static void InitializeRotateUI(HWND hwnd);
+static void UpdateSelectScreenUI(HWND hwnd);
+static void InitializeSelectScreenUI(HWND hwnd);
+static void InitializeD3DVersionUI(HWND hwnd);
+static void InitializeVideoUI(HWND hwnd);
+static void InitializeBIOSUI(HWND hwnd);
+static void InitializeControllerMappingUI(HWND hwnd);
+static void UpdateOptions(HWND hDlg, datamap *map, windows_options &opts);
+static void UpdateProperties(HWND hDlg, datamap *map, windows_options &opts);
+static void PropToOptions(HWND hWnd, windows_options &o);
+static void OptionsToProp(HWND hWnd, windows_options &o);
+static void SetPropEnabledControls(HWND hWnd);
+static BOOL SelectEffect(HWND hWnd);
+static BOOL ResetEffect(HWND hWnd);
+static BOOL SelectJoystickMap(HWND hWnd);
+static BOOL ResetJoystickMap(HWND hWnd);
+static BOOL SelectDebugscript(HWND hWnd);
+static BOOL ResetDebugscript(HWND hWnd);
+
+static void BuildDataMap(void);
+static void ResetDataMap(HWND hWnd);
+
+static void UpdateBackgroundBrush(HWND hwndTab);
+static HBRUSH hBkBrush;
+
+#ifdef MESS
+static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
+static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
+static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name);
+extern BOOL BrowseForDirectory(HWND hwnd, LPCTSTR pStartDir, TCHAR* pResult);
+//static BOOL g_bModifiedSoftwarePaths = FALSE;
+#endif
+
+/**************************************************************
+ * Local private variables
+ **************************************************************/
+
+/* No longer used by the core, but we need it to predefine configurable screens for all games. */
+#ifndef MAX_SCREENS
+/* maximum number of screens for one game */
+#define MAX_SCREENS 4
+#endif
+
+static windows_options pOrigOpts, pDefaultOpts, pCurrentOpts;
+static datamap *properties_datamap;
+
+static int g_nGame = 0;
+static int g_nFolder = 0;
+static int g_nFolderGame = 0;
+static OPTIONS_TYPE g_nPropertyMode = OPTIONS_GAME;
+static BOOL g_bAutoAspect[MAX_SCREENS] = {FALSE, FALSE, FALSE, FALSE};
+static BOOL g_bAutoSnapSize = FALSE;
+static HICON g_hIcon = NULL;
+
+/* Property sheets */
+
+#define HIGHLIGHT_COLOR RGB(0,196,0)
+static HBRUSH highlight_brush = NULL;
+static HBRUSH background_brush = NULL;
+
+#define ORIENTATION_COLOR RGB( 190, 128, 0) //LIGHT BROWN
+#define VECTOR_COLOR RGB( 190, 0, 0) //DARK RED
+#define FOLDER_COLOR RGB( 0, 128, 0 ) // DARK GREEN
+#define PARENT_COLOR RGB( 190, 128, 192 ) // PURPLE
+#define GAME_COLOR RGB( 0, 128, 192 ) // DARK BLUE
+
+
+BOOL PropSheetFilter_Vector(const machine_config *drv, const game_driver *gamedrv)
+{
+ return isDriverVector(drv);
+}
+
+/* Help IDs - moved to auto-generated helpids.c */
+extern const DWORD dwHelpIDs[];
+
+static struct ComboBoxVideo
+{
+ const TCHAR* m_pText;
+ const char* m_pData;
+} g_ComboBoxVideo[] =
+{
+ { TEXT("Auto"), "auto" },
+ { TEXT("GDI"), "gdi" },
+// { TEXT("DirectDraw"), "ddraw" }, // removed 20160217
+ { TEXT("Direct3D"), "d3d" },
+ { TEXT("BGFX"), "bgfx" },
+ { TEXT("OpenGL"), "opengl" },
+};
+#define NUMVIDEO (sizeof(g_ComboBoxVideo) / sizeof(g_ComboBoxVideo[0]))
+
+static struct ComboBoxSound
+{
+ const TCHAR* m_pText;
+ const char* m_pData;
+} g_ComboBoxSound[] =
+{
+ { TEXT("None"), "none" },
+ { TEXT("Auto"), "auto" },
+ { TEXT("DirectSound"), "dsound" },
+ { TEXT("PortAudio"), "portaudio" },
+// { TEXT("XAudio2"), "xaudio2" }, // invalid option
+};
+#define NUMSOUND (sizeof(g_ComboBoxSound) / sizeof(g_ComboBoxSound[0]))
+
+static struct ComboBoxD3DVersion
+{
+ const TCHAR* m_pText;
+ const int m_pData;
+} g_ComboBoxD3DVersion[] =
+{
+ { TEXT("Version 9"), 9 },
+// { TEXT("Version 8"), 8 },
+};
+
+#define NUMD3DVERSIONS (sizeof(g_ComboBoxD3DVersion) / sizeof(g_ComboBoxD3DVersion[0]))
+#define WINOPTION_D3DVERSION "9"
+
+static struct ComboBoxSelectScreen
+{
+ const TCHAR* m_pText;
+ const int m_pData;
+} g_ComboBoxSelectScreen[] =
+{
+ { TEXT("Screen 0"), 0 },
+ { TEXT("Screen 1"), 1 },
+ { TEXT("Screen 2"), 2 },
+ { TEXT("Screen 3"), 3 },
+};
+#define NUMSELECTSCREEN (sizeof(g_ComboBoxSelectScreen) / sizeof(g_ComboBoxSelectScreen[0]))
+
+static struct ComboBoxView
+{
+ const TCHAR* m_pText;
+ const char* m_pData;
+} g_ComboBoxView[] =
+{
+ { TEXT("Auto"), "auto" },
+ { TEXT("Standard"), "standard" },
+ { TEXT("Pixel Aspect"), "pixel" },
+ { TEXT("Cocktail"), "cocktail" },
+};
+#define NUMVIEW (sizeof(g_ComboBoxView) / sizeof(g_ComboBoxView[0]))
+
+
+
+static struct ComboBoxDevices
+{
+ const TCHAR* m_pText;
+ const char* m_pData;
+} g_ComboBoxDevice[] =
+{
+ { TEXT("None"), "none" },
+ { TEXT("Keyboard"), "keyboard" },
+ { TEXT("Mouse"), "mouse" },
+ { TEXT("Joystick"), "joystick" },
+ { TEXT("Lightgun"), "lightgun" },
+};
+
+#define NUMDEVICES (sizeof(g_ComboBoxDevice) / sizeof(g_ComboBoxDevice[0]))
+
+static struct ComboBoxSnapView
+{
+ const TCHAR* m_pText;
+ const char* m_pData;
+} g_ComboBoxSnapView[] =
+{
+ { TEXT("Internal"), "internal" },
+ { TEXT("Auto"), "auto" },
+ { TEXT("Standard"), "standard" },
+ { TEXT("Pixel Aspect"), "pixel" },
+ { TEXT("Cocktail"), "cocktail" },
+};
+#define NUMSNAPVIEW (sizeof(g_ComboBoxSnapView) / sizeof(g_ComboBoxSnapView[0]))
+
+
+/***************************************************************
+ * Public functions
+ ***************************************************************/
+
+
+int PropertiesCurrentGame(HWND hDlg)
+{
+ return g_nGame;
+}
+
+DWORD_PTR GetHelpIDs(void)
+{
+ return (DWORD_PTR)dwHelpIDs;
+}
+
+static int GetSelectedScreen(HWND hWnd)
+{
+ int nSelectedScreen = 0;
+ HWND hCtrl = GetDlgItem(hWnd, IDC_SCREENSELECT);
+ if (hCtrl)
+ nSelectedScreen = ComboBox_GetCurSel(hCtrl);
+ if ((nSelectedScreen < 0) || (nSelectedScreen >= NUMSELECTSCREEN))
+ nSelectedScreen = 0;
+ return nSelectedScreen;
+
+}
+
+static PROPSHEETPAGE *CreatePropSheetPages(HINSTANCE hInst, BOOL bOnlyDefault,
+// const game_driver *gamedrv, UINT *pnMaxPropSheets, BOOL isGame )
+ int nGame, UINT *pnMaxPropSheets, BOOL isGame )
+{
+ PROPSHEETPAGE *pspages;
+ int maxPropSheets = 0;
+ int possiblePropSheets;
+ int i = ( isGame ) ? 0 : 2;
+
+ for (; g_propSheets[i].pfnDlgProc; i++)
+ ;
+
+ possiblePropSheets = (isGame) ? i + 1 : i - 1;
+
+ pspages = (PROPSHEETPAGE *)malloc(sizeof(PROPSHEETPAGE) * possiblePropSheets);
+ if (!pspages)
+ return NULL;
+
+ memset(pspages, 0, sizeof(PROPSHEETPAGE) * possiblePropSheets);
+
+ i = ( isGame ) ? 0 : 2;
+
+ for (; g_propSheets[i].pfnDlgProc; i++)
+ {
+ if (nGame < 0)
+ {
+ if (g_propSheets[i].bOnDefaultPage)
+ {
+ pspages[maxPropSheets].dwSize = sizeof(PROPSHEETPAGE);
+ pspages[maxPropSheets].dwFlags = 0;
+ pspages[maxPropSheets].hInstance = hInst;
+ pspages[maxPropSheets].pszTemplate = MAKEINTRESOURCE(g_propSheets[i].dwDlgID);
+ pspages[maxPropSheets].pfnCallback = NULL;
+ pspages[maxPropSheets].lParam = 0;
+ pspages[maxPropSheets].pfnDlgProc = g_propSheets[i].pfnDlgProc;
+ maxPropSheets++;
+ }
+ }
+ else
+ if ((nGame >= 0) || g_propSheets[i].bOnDefaultPage)
+ {
+ //machine_config config(*gamedrv,pCurrentOpts);
+
+// if (!gamedrv || !g_propSheets[i].pfnFilterProc || g_propSheets[i].pfnFilterProc(&config, gamedrv))
+ if (nGame < 0 || !g_propSheets[i].pfnFilterProc || g_propSheets[i].pfnFilterProc(nGame))
+ {
+ pspages[maxPropSheets].dwSize = sizeof(PROPSHEETPAGE);
+ pspages[maxPropSheets].dwFlags = 0;
+ pspages[maxPropSheets].hInstance = hInst;
+ pspages[maxPropSheets].pszTemplate = MAKEINTRESOURCE(g_propSheets[i].dwDlgID);
+ pspages[maxPropSheets].pfnCallback = NULL;
+ pspages[maxPropSheets].lParam = 0;
+ pspages[maxPropSheets].pfnDlgProc = g_propSheets[i].pfnDlgProc;
+ maxPropSheets++;
+ }
+ }
+ }
+
+ if (pnMaxPropSheets)
+ *pnMaxPropSheets = maxPropSheets;
+
+ return pspages;
+}
+
+// This is for the DEFAULT property-page options only
+void InitDefaultPropertyPage(HINSTANCE hInst, HWND hWnd)
+{
+ PROPSHEETHEADER pshead;
+ PROPSHEETPAGE *pspage;
+
+ // clear globals
+ g_nGame = GLOBAL_OPTIONS;
+ windows_options dummy;
+ pCurrentOpts = dummy;
+ pOrigOpts = dummy;
+ pDefaultOpts = dummy;
+
+ /* Get default options to populate property sheets */
+ load_options(pCurrentOpts, OPTIONS_GLOBAL, g_nGame);
+ load_options(pOrigOpts, OPTIONS_GLOBAL, g_nGame);
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -2);
+
+ /* Stash the result for comparing later */
+ //CreateGameOptions(pOrigOpts, OPTIONS_TYPE_GLOBAL);
+
+ g_nPropertyMode = OPTIONS_GLOBAL;
+ BuildDataMap();
+
+ ZeroMemory(&pshead, sizeof(pshead));
+
+ pspage = CreatePropSheetPages(hInst, TRUE, -1, &pshead.nPages, FALSE);
+ if (!pspage)
+ return;
+
+ /* Fill in the property sheet header */
+ pshead.hwndParent = hWnd;
+ pshead.dwSize = sizeof(PROPSHEETHEADER);
+ pshead.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_PROPTITLE;
+ pshead.hInstance = hInst;
+ pshead.pszCaption = TEXT("Default Game");
+ pshead.nStartPage = 0;
+ pshead.pszIcon = MAKEINTRESOURCE(IDI_MAMEUI_ICON);
+ pshead.ppsp = pspage;
+
+ /* Create the Property sheet and display it */
+ if (PropertySheet(&pshead) == -1)
+ {
+ char temp[100];
+ DWORD dwError = GetLastError();
+ sprintf(temp, "Property Sheet Error %d %X", (int)dwError, (int)dwError);
+ win_message_box_utf8(0, temp, "Error", IDOK);
+ }
+
+ free(pspage);
+}
+
+/* Initialize the property pages for anything but the Default option set */
+void InitPropertyPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_type, int folder_id, int game_num)
+{
+ InitPropertyPageToPage(hInst, hWnd, hIcon, opt_type, folder_id, game_num, PROPERTIES_PAGE);
+}
+
+void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_type, int folder_id, int game_num, int start_page )
+{
+ PROPSHEETHEADER pshead;
+ PROPSHEETPAGE *pspage;
+ TCHAR* t_description = 0;
+/// OPTIONS_TYPE default_type = opt_type;
+
+ if (highlight_brush == NULL)
+ highlight_brush = CreateSolidBrush(HIGHLIGHT_COLOR);
+
+ if (background_brush == NULL)
+ background_brush = CreateSolidBrush(GetSysColor(COLOR_3DFACE));
+
+ // Initialize the options
+ load_options(pCurrentOpts, opt_type, game_num);
+ load_options(pOrigOpts, opt_type, game_num);
+ if (game_num == GLOBAL_OPTIONS)
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -2); // base opts is the backup for global
+ else
+ load_options(pDefaultOpts, OPTIONS_GLOBAL, -1); // global is the backup for games
+
+ // Copy current_options to original options
+/// CreateGameOptions(pOrigOpts, OPTIONS_TYPE_GLOBAL);
+
+ // Copy icon to use for the property pages
+ g_hIcon = CopyIcon(hIcon);
+
+ // These MUST be valid, they are used as indicies
+ g_nGame = game_num;
+ g_nFolder = folder_id;
+
+ // Keep track of OPTIONS_TYPE that was passed in.
+ g_nPropertyMode = opt_type;
+
+ // Evaluate if the current set uses the Default set
+ //g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ //g_bReset = FALSE;
+ BuildDataMap();
+
+ ZeroMemory(&pshead, sizeof(PROPSHEETHEADER));
+
+ // Set the game to audit to this game
+
+ // Create the property sheets
+ if( OPTIONS_GAME == opt_type )
+ {
+ InitGameAudit(game_num);
+// pspage = CreatePropSheetPages(hInst, FALSE, &driver_list::driver(game_num), &pshead.nPages, TRUE);
+ pspage = CreatePropSheetPages(hInst, FALSE, game_num, &pshead.nPages, TRUE);
+ }
+ else
+ pspage = CreatePropSheetPages(hInst, FALSE, -1, &pshead.nPages, FALSE);
+
+ if (!pspage)
+ return;
+
+
+ // Get the description use as the dialog caption.
+ switch( opt_type )
+ {
+ case OPTIONS_GAME:
+ t_description = ui_wstring_from_utf8(ModifyThe(driver_list::driver(g_nGame).description));
+ break;
+ case OPTIONS_SOURCE:
+ t_description = ui_wstring_from_utf8(GetDriverFilename(g_nGame));
+ break;
+ case OPTIONS_GLOBAL:
+ t_description = ui_wstring_from_utf8("Default Settings");
+ break;
+ default:
+ return;
+ }
+ // If we have no description, return.
+ if( !t_description )
+ return;
+
+ /* Fill in the property sheet header */
+ pshead.pszCaption = t_description;
+ pshead.hwndParent = hWnd;
+ pshead.dwSize = sizeof(PROPSHEETHEADER);
+ pshead.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_PROPTITLE;
+ pshead.hInstance = hInst;
+ pshead.nStartPage = start_page;
+ pshead.pszIcon = MAKEINTRESOURCE(IDI_MAMEUI_ICON);
+ pshead.ppsp = pspage;
+
+ /* Create the Property sheet and display it */
+ if (PropertySheet(&pshead) == -1)
+ {
+ char temp[100];
+ DWORD dwError = GetLastError();
+ sprintf(temp, "Property Sheet Error %d %X", (int)dwError, (int)dwError);
+ win_message_box_utf8(0, temp, "Error", IDOK);
+ }
+
+ free(t_description);
+ free(pspage);
+}
+
+
+/*********************************************************************
+ * Local Functions
+ *********************************************************************/
+
+/* Build CPU info string */
+static char *GameInfoCPU(UINT nIndex)
+{
+ static char buf[1024];
+ machine_config config(driver_list::driver(nIndex),pCurrentOpts);
+ ZeroMemory(buf, sizeof(buf));
+
+ for (device_execute_interface &cpu : execute_interface_iterator(config.root_device()))
+ {
+ if (cpu.device().clock() >= 1000000)
+ {
+ sprintf(&buf[strlen(buf)], "%s %d.%06d MHz",
+ cpu.device().name(),
+ cpu.device().clock() / 1000000,
+ cpu.device().clock() % 1000000);
+ }
+ else
+ {
+ sprintf(&buf[strlen(buf)], "%s %d.%03d kHz",
+ cpu.device().name(),
+ cpu.device().clock() / 1000,
+ cpu.device().clock() % 1000);
+ }
+
+ strcat(buf, "\n");
+ }
+
+ return buf;
+}
+
+/* Build Sound system info string */
+static char *GameInfoSound(UINT nIndex)
+{
+ static char buf[1024];
+
+ buf[0] = 0;
+
+ machine_config config(driver_list::driver(nIndex),pCurrentOpts);
+
+ /* iterate over sound chips */
+ for (device_sound_interface &sound : sound_interface_iterator(config.root_device()))
+ {
+ char tmpname[1024];
+
+ sprintf(tmpname,"%s",sound.device().name());
+
+ int clock = sound.device().clock();
+
+ sprintf(&buf[strlen(buf)],"%s",tmpname);
+
+ if (clock)
+ {
+ if (clock >= 1000000)
+ {
+ sprintf(&buf[strlen(buf)]," %d.%06d MHz",
+ clock / 1000000,
+ clock % 1000000);
+ }
+ else
+ {
+ sprintf(&buf[strlen(buf)]," %d.%03d kHz",
+ clock / 1000,
+ clock % 1000);
+ }
+ }
+
+ strcat(buf,"\n");
+ }
+ return buf;
+}
+
+/* Build Display info string */
+static char *GameInfoScreen(UINT nIndex)
+{
+ static char buf[1024];
+ machine_config config(driver_list::driver(nIndex),pCurrentOpts);
+ memset(buf, '\0', 1024);
+
+ if (isDriverVector(&config))
+ strcpy(buf, "Vector Game");
+ else
+ {
+ screen_device_iterator iter(config.root_device());
+ const screen_device *screen = iter.first();
+ if (screen == NULL)
+ strcpy(buf, "Screenless Game");
+ else
+ {
+ for (screen_device &screen : screen_device_iterator(config.root_device()))
+ {
+ char tmpbuf[256];
+ const rectangle &visarea = screen.visible_area();
+
+ if (driver_list::driver(nIndex).flags & ORIENTATION_SWAP_XY)
+ {
+ sprintf(tmpbuf,"%d x %d (V) %f Hz\n",
+ visarea.max_y - visarea.min_y + 1,
+ visarea.max_x - visarea.min_x + 1,
+ ATTOSECONDS_TO_HZ(screen.refresh_attoseconds()));
+ }
+ else
+ {
+ sprintf(tmpbuf,"%d x %d (H) %f Hz\n",
+ visarea.max_x - visarea.min_x + 1,
+ visarea.max_y - visarea.min_y + 1,
+ ATTOSECONDS_TO_HZ(screen.refresh_attoseconds()));
+ }
+ strcat(buf, tmpbuf);
+ }
+ }
+ }
+ return buf;
+}
+
+
+/* Build game status string */
+const char *GameInfoStatus(int driver_index, BOOL bRomStatus)
+{
+ static char buffer[1024];
+ int audit_result = GetRomAuditResults(driver_index);
+ memset(buffer,0,sizeof(char)*1024);
+ if ( bRomStatus )
+ {
+ if (IsAuditResultKnown(audit_result) == FALSE)
+ strcpy(buffer, "Unknown");
+ else if (IsAuditResultYes(audit_result))
+ {
+ if (DriverIsBroken(driver_index))
+ {
+ strcpy(buffer, "Not working");
+
+ if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game protection isn't fully emulated");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors are completely wrong");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors aren't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Video emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game lacks sound");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Sound emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Screen flipping is not supported");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game requires artwork");
+ }
+ }
+ else
+ {
+ strcpy(buffer, "Working");
+
+ if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game protection isn't fully emulated");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors are completely wrong");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors aren't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Video emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game lacks sound");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Sound emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Screen flipping is not supported");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game requires artwork");
+ }
+ }
+ }
+ else
+ {
+ // audit result is no
+ strcpy(buffer, "BIOS missing");
+ }
+ }
+ else
+ {
+ //Just show the emulation flags
+ if (DriverIsBroken(driver_index))
+ {
+ strcpy(buffer, "Not working");
+ }
+ else
+ {
+ strcpy(buffer, "Working");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_UNEMULATED_PROTECTION)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game protection isn't fully emulated");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_WRONG_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors are completely wrong");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_COLORS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Colors aren't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_GRAPHICS)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Video emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game lacks sound");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_IMPERFECT_SOUND)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Sound emulation isn't 100% accurate");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_NO_COCKTAIL)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Screen flipping is not supported");
+ }
+ if (driver_list::driver(driver_index).flags & MACHINE_REQUIRES_ARTWORK)
+ {
+ if (*buffer != '\0')
+ strcat(buffer, "\r\n");
+ strcat(buffer, "Game requires artwork");
+ }
+ }
+ return buffer;
+}
+
+/* Build game manufacturer string */
+static char *GameInfoManufactured(UINT nIndex)
+{
+ static char buffer[1024];
+
+ snprintf(buffer,sizeof(buffer),"%s %s",driver_list::driver(nIndex).year,driver_list::driver(nIndex).manufacturer);
+ return buffer;
+}
+
+/* Build Game title string */
+char *GameInfoTitle(OPTIONS_TYPE opt_type, UINT nIndex)
+{
+ static char buf[1024];
+
+ if (OPTIONS_GLOBAL == opt_type)
+ strcpy(buf, "Global game options\nDefault options used by all games");
+ else
+ if (OPTIONS_SOURCE == opt_type)
+ strcpy(buf, "Options used by all games in the source");
+ else
+ if (OPTIONS_VECTOR == opt_type)
+ strcpy(buf, "Global vector options");
+ else
+ if (OPTIONS_GAME == opt_type)
+ sprintf(buf, "%s\n\"%s\"", ModifyThe(driver_list::driver(nIndex).description), driver_list::driver(nIndex).name);
+ return buf;
+}
+
+/* Build game clone information string */
+static char *GameInfoCloneOf(UINT nIndex)
+{
+ static char buf[1024];
+ int nParentIndex= -1;
+
+ buf[0] = '\0';
+
+ if (DriverIsClone(nIndex))
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(nIndex));
+ sprintf(buf, "%s - \"%s\"",
+ ConvertAmpersandString(ModifyThe(driver_list::driver(nParentIndex).description)),
+ driver_list::driver(nParentIndex).name);
+ }
+
+ return buf;
+}
+
+static const char * GameInfoSource(UINT nIndex)
+{
+ return GetDriverFilename(nIndex);
+}
+
+/* Handle the information property page */
+INT_PTR CALLBACK GamePropertiesDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+HWND hWnd;
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ if (g_hIcon)
+ SendDlgItemMessage(hDlg, IDC_GAME_ICON, STM_SETICON, (WPARAM) g_hIcon, 0);
+#if defined(USE_SINGLELINE_TABCONTROL)
+ {
+ HWND hWnd = PropSheet_GetTabControl(GetParent(hDlg));
+ DWORD tabStyle = (GetWindowLong(hWnd,GWL_STYLE) & ~TCS_MULTILINE);
+ SetWindowLong(hWnd,GWL_STYLE,tabStyle | TCS_SINGLELINE);
+ }
+#endif
+
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_TITLE), GameInfoTitle(g_nPropertyMode, g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_MANUFACTURED), GameInfoManufactured(g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_STATUS), GameInfoStatus(g_nGame, FALSE));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_CPU), GameInfoCPU(g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SOUND), GameInfoSound(g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SCREEN), GameInfoScreen(g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_CLONEOF), GameInfoCloneOf(g_nGame));
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_SOURCE), GameInfoSource(g_nGame));
+
+ if (DriverIsClone(g_nGame))
+ ShowWindow(GetDlgItem(hDlg, IDC_PROP_CLONEOF_TEXT), SW_SHOW);
+ else
+ ShowWindow(GetDlgItem(hDlg, IDC_PROP_CLONEOF_TEXT), SW_HIDE);
+
+ hWnd = PropSheet_GetTabControl(GetParent(hDlg));
+ UpdateBackgroundBrush(hWnd);
+ ShowWindow(hDlg, SW_SHOW);
+ return 1;
+ }
+ return 0;
+}
+
+/* Handle all options property pages */
+// NOTE you cannot just say opts1=opts2, although in theory it should work, in practice opts1 becomes null.
+INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ BOOL g_bUseDefaults = 0, g_bReset = 0;
+ //d3d_version = pCurrentOpts.int_value(WINOPTION_D3DVERSION);
+
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ /* Fill in the Game info at the top of the sheet */
+ win_set_window_text_utf8(GetDlgItem(hDlg, IDC_PROP_TITLE), GameInfoTitle(g_nPropertyMode, g_nGame));
+ InitializeOptions(hDlg);
+ InitializeMisc(hDlg);
+
+ UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
+
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+
+ // Default button doesn't exist on Default settings
+// if (g_nGame == GLOBAL_OPTIONS)
+// ShowWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), SW_HIDE);
+// else
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+
+ // Setup Reset button
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ ShowWindow(hDlg, SW_SHOW);
+ return 1;
+
+ case WM_HSCROLL:
+ /* slider changed */
+ HANDLE_WM_HSCROLL(hDlg, wParam, lParam, OptOnHScroll);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), TRUE);
+
+ // Enable Apply button
+ PropSheet_Changed(GetParent(hDlg), hDlg);
+
+ // make sure everything's copied over, to determine what's changed
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+
+ // redraw it, it might be a new color now
+ InvalidateRect((HWND)lParam,NULL,TRUE);
+
+ break;
+
+ case WM_COMMAND:
+ {
+ /* Below, 'changed' is used to signify the 'Apply' button should be enabled. */
+ WORD wID = GET_WM_COMMAND_ID(wParam, lParam);
+ HWND hWndCtrl = GET_WM_COMMAND_HWND(wParam, lParam);
+ WORD wNotifyCode = GET_WM_COMMAND_CMD(wParam, lParam);
+ BOOL changed = FALSE;
+ int nCurSelection = 0;
+ TCHAR szClass[256];
+
+ switch (wID)
+ {
+ case IDC_REFRESH:
+ if (wNotifyCode == LBN_SELCHANGE)
+ {
+ RefreshSelectionChange(hDlg, hWndCtrl);
+ changed = TRUE;
+ }
+ break;
+
+ case IDC_ASPECT:
+ nCurSelection = Button_GetCheck( GetDlgItem(hDlg, IDC_ASPECT));
+ if( g_bAutoAspect[GetSelectedScreen(hDlg)] != nCurSelection )
+ {
+ changed = TRUE;
+ g_bAutoAspect[GetSelectedScreen(hDlg)] = nCurSelection;
+ }
+ break;
+
+ case IDC_SNAPSIZE:
+ nCurSelection = Button_GetCheck( GetDlgItem(hDlg, IDC_SNAPSIZE));
+ if( g_bAutoSnapSize != nCurSelection )
+ {
+ changed = TRUE;
+ g_bAutoSnapSize = nCurSelection;
+ }
+ break;
+
+ case IDC_SELECT_EFFECT:
+ changed = SelectEffect(hDlg);
+ break;
+
+ case IDC_RESET_EFFECT:
+ changed = ResetEffect(hDlg);
+ break;
+
+ case IDC_SELECT_JOYSTICKMAP:
+ changed = SelectJoystickMap(hDlg);
+ break;
+
+ case IDC_RESET_JOYSTICKMAP:
+ changed = ResetJoystickMap(hDlg);
+ break;
+
+ case IDC_SELECT_DEBUGSCRIPT:
+ changed = SelectDebugscript(hDlg);
+ break;
+
+ case IDC_RESET_DEBUGSCRIPT:
+ changed = ResetDebugscript(hDlg);
+ break;
+
+ case IDC_PROP_RESET:
+ // RESET Button - Only do it if mouse-clicked
+ if (wNotifyCode != BN_CLICKED)
+ break;
+
+ // Change settings in property sheets back to original
+ UpdateProperties(hDlg, properties_datamap, pOrigOpts);
+ // The original options become the current options.
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ // Turn off Apply
+ PropSheet_UnChanged(GetParent(hDlg), hDlg);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ break;
+
+ case IDC_USE_DEFAULT:
+ // DEFAULT Button - Only do it if mouse-clicked
+ if (wNotifyCode != BN_CLICKED)
+ break;
+
+ // Change settings to be the same as mame.ini
+ UpdateProperties(hDlg, properties_datamap, pDefaultOpts);
+ // The original options become the current options.
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ // Enable/Disable the Reset to Defaults button
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ // Tell the dialog to enable/disable the apply button.
+ if (g_nGame != GLOBAL_OPTIONS)
+ {
+ if (g_bReset)
+ PropSheet_Changed(GetParent(hDlg), hDlg);
+ else
+ PropSheet_UnChanged(GetParent(hDlg), hDlg);
+ }
+ break;
+
+ // MSH 20070813 - Update all related controls
+ case IDC_SCREENSELECT:
+ case IDC_SCREEN:
+ // NPW 3-Apr-2007: Ugh I'm only perpetuating the vile hacks in this code
+ if ((wNotifyCode == CBN_SELCHANGE) || (wNotifyCode == CBN_SELENDOK))
+ {
+ changed = datamap_read_control(properties_datamap, hDlg, pCurrentOpts, wID);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SIZES);
+ //MSH 20070814 - Hate to do this, but its either this, or update each individual
+ // control on the SCREEN tab.
+ UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
+ changed = TRUE;
+ /* NOT USED *************
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SCREENSELECT);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SCREEN);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_REFRESH);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SIZES);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_VIEW);
+ datamap_populate_control(properties_datamap, hDlg, pCurrentOpts, IDC_SWITCHRES);
+
+ if (strcmp(options_get_string(pCurrentOpts, "screen0"), options_get_string(pOrigOpts, "screen0")!=0) ||
+ strcmp(options_get_string(pCurrentOpts, "screen1"), options_get_string(pOrigOpts, "screen1")!=0) ||
+ strcmp(options_get_string(pCurrentOpts, "screen2"), options_get_string(pOrigOpts, "screen2")!=0) ||
+ strcmp(options_get_string(pCurrentOpts, "screen3"), options_get_string(pOrigOpts, "screen3")!=0))
+ changed = TRUE;
+ ************************************* */
+ }
+ break;
+ default:
+#ifdef MESS
+ if (MessPropertiesCommand(hDlg, wNotifyCode, wID, &changed))
+ break;
+#endif
+
+ // use default behavior; try to get the result out of the datamap if
+ // appropriate
+ GetClassName(hWndCtrl, szClass, ARRAY_LENGTH(szClass));
+ if (!_tcscmp(szClass, WC_COMBOBOX))
+ {
+ // combo box
+ if ((wNotifyCode == CBN_SELCHANGE) || (wNotifyCode == CBN_SELENDOK))
+ changed = datamap_read_control(properties_datamap, hDlg, pCurrentOpts, wID);
+ }
+ else if (!_tcscmp(szClass, WC_BUTTON) && (GetWindowLong(hWndCtrl, GWL_STYLE) & BS_CHECKBOX))
+ {
+ // check box
+ changed = datamap_read_control(properties_datamap, hDlg, pCurrentOpts, wID);
+ }
+ break;
+ }
+
+ if (changed == TRUE)
+ {
+ // make sure everything's copied over, to determine what's changed
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+ // enable the apply button
+ PropSheet_Changed(GetParent(hDlg), hDlg);
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ }
+ }
+ break;
+
+ case WM_NOTIFY:
+ {
+ // Set to true if we are exiting the properties dialog
+ //BOOL bClosing = ((LPPSHNOTIFY) lParam)->lParam; // indicates OK was clicked rather than APPLY
+
+ switch (((NMHDR *) lParam)->code)
+ {
+ //We'll need to use a CheckState Table
+ //Because this one gets called for all kinds of other things too, and not only if a check is set
+ case PSN_SETACTIVE:
+ /* Initialize the controls. */
+ UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ break;
+
+ case PSN_APPLY:
+ // Handle more than one PSN_APPLY, since this proc handles more than one
+ // property sheet and can be called multiple times when it's time to exit,
+ // and we may have already freed the windows_options.
+ //if (bClosing)
+ //{
+ //if (NULL == pCurrentOpts)
+ //return TRUE;
+ //}
+
+ // Read the datamap
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+ // The current options become the original options.
+ UpdateOptions(hDlg, properties_datamap, pOrigOpts);
+
+ // Repopulate the controls? WTF? We just read them, they should be fine.
+ UpdateProperties(hDlg, properties_datamap, pCurrentOpts);
+
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+
+ // Save the current options
+ save_options(pCurrentOpts, g_nPropertyMode, g_nGame);
+
+ // Disable apply button
+ PropSheet_UnChanged(GetParent(hDlg), hDlg);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
+
+ return TRUE;
+
+ case PSN_KILLACTIVE:
+ /* Save Changes to the options here. */
+ UpdateOptions(hDlg, properties_datamap, pCurrentOpts);
+ // Determine button states.
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+
+ ResetDataMap(hDlg);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE);
+ return 1;
+
+ case PSN_RESET:
+ // Reset to the original values. Disregard changes
+ //pCurrentOpts = pOrigOpts;
+ g_bUseDefaults = (pCurrentOpts != pDefaultOpts);
+ g_bReset = (pCurrentOpts != pOrigOpts);
+ EnableWindow(GetDlgItem(hDlg, IDC_USE_DEFAULT), g_bUseDefaults);
+ EnableWindow(GetDlgItem(hDlg, IDC_PROP_RESET), g_bReset);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE);
+ break;
+
+ case PSN_HELP:
+ // User wants help for this property page
+ break;
+ }
+ }
+ break;
+
+ case WM_HELP:
+ /* User clicked the ? from the upper right on a control */
+ HelpFunction((HWND)((LPHELPINFO)lParam)->hItemHandle, MAMEUICONTEXTHELP, HH_TP_HELP_WM_HELP, GetHelpIDs());
+ break;
+
+ case WM_CONTEXTMENU:
+ HelpFunction((HWND)wParam, MAMEUICONTEXTHELP, HH_TP_HELP_CONTEXTMENU, GetHelpIDs());
+ break;
+
+ }
+
+ return 0;
+}
+
+/* Read controls that are not handled in the DataMap */
+static void PropToOptions(HWND hWnd, windows_options &o)
+{
+ HWND hCtrl;
+ HWND hCtrl2;
+ HWND hCtrl3;
+ std::string error_string;
+
+ /* aspect ratio */
+ hCtrl = GetDlgItem(hWnd, IDC_ASPECTRATION);
+ hCtrl2 = GetDlgItem(hWnd, IDC_ASPECTRATIOD);
+ hCtrl3 = GetDlgItem(hWnd, IDC_ASPECT);
+ if (hCtrl && hCtrl2 && hCtrl3)
+ {
+ char aspect_option[32];
+ snprintf(aspect_option, ARRAY_LENGTH(aspect_option), "aspect%d", GetSelectedScreen(hWnd));
+
+ if (Button_GetCheck(hCtrl3))
+ {
+ o.set_value(aspect_option, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ else
+ {
+ int n = 0;
+ int d = 0;
+ TCHAR buffer[200];
+ char buffer2[200];
+
+ Edit_GetText(hCtrl, buffer, ARRAY_LENGTH(buffer));
+ _stscanf(buffer,TEXT("%d"),&n);
+
+ Edit_GetText(hCtrl2, buffer, ARRAY_LENGTH(buffer));
+ _stscanf(buffer,TEXT("%d"),&d);
+
+ if (n == 0 || d == 0)
+ {
+ n = 4;
+ d = 3;
+ }
+
+ snprintf(buffer2, sizeof(buffer2), "%d:%d", n, d);
+ o.set_value(aspect_option, buffer2, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ }
+ /* aspect ratio */
+ hCtrl = GetDlgItem(hWnd, IDC_SNAPSIZEWIDTH);
+ hCtrl2 = GetDlgItem(hWnd, IDC_SNAPSIZEHEIGHT);
+ hCtrl3 = GetDlgItem(hWnd, IDC_SNAPSIZE);
+ if (hCtrl && hCtrl2 && hCtrl3)
+ {
+ if (Button_GetCheck(hCtrl3))
+ {
+ o.set_value(OPTION_SNAPSIZE, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ else
+ {
+ int width = 0;
+ int height = 0;
+ TCHAR buffer[200];
+ char buffer2[200];
+
+ Edit_GetText(hCtrl, buffer, ARRAY_LENGTH(buffer));
+ _stscanf(buffer, TEXT("%d"), &width);
+
+ Edit_GetText(hCtrl2, buffer, ARRAY_LENGTH(buffer));
+ _stscanf(buffer, TEXT("%d"), &height);
+
+ if (width == 0 || height == 0)
+ {
+ width = 640;
+ height = 480;
+ }
+
+ snprintf(buffer2, sizeof(buffer2), "%dx%d", width, height);
+ o.set_value(OPTION_SNAPSIZE, buffer2, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ }
+}
+
+/* Update options from the dialog */
+static void UpdateOptions(HWND hDlg, datamap *map, windows_options &opts)
+{
+ /* These are always called together, so make one convenient function. */
+ datamap_read_all_controls(map, hDlg, opts);
+ PropToOptions(hDlg, opts);
+}
+
+/* Update the dialog from the options */
+static void UpdateProperties(HWND hDlg, datamap *map, windows_options &opts)
+{
+ /* These are always called together, so make one convenient function. */
+ datamap_populate_all_controls(map, hDlg, opts);
+ OptionsToProp(hDlg, opts);
+ SetPropEnabledControls(hDlg);
+}
+
+/* Populate controls that are not handled in the DataMap */
+static void OptionsToProp(HWND hWnd, windows_options& o)
+{
+ HWND hCtrl;
+ HWND hCtrl2;
+ TCHAR buf[100];
+ int n = 0;
+ int d = 0;
+ int width = 0;
+ int height = 0;
+ int res = 0;
+
+ /* video */
+
+ /* Setup refresh list based on depth. */
+ datamap_update_control(properties_datamap, hWnd, pCurrentOpts, IDC_REFRESH);
+ /* Setup Select screen*/
+ UpdateSelectScreenUI(hWnd );
+
+ hCtrl = GetDlgItem(hWnd, IDC_ASPECT);
+ if (hCtrl)
+ {
+ Button_SetCheck(hCtrl, g_bAutoAspect[GetSelectedScreen(hWnd)] ) ;
+ }
+
+ hCtrl = GetDlgItem(hWnd, IDC_SNAPSIZE);
+ if (hCtrl)
+ {
+ Button_SetCheck(hCtrl, g_bAutoSnapSize ) ;
+ }
+
+ /* Bios select list */
+ hCtrl = GetDlgItem(hWnd, IDC_BIOS);
+ if (hCtrl)
+ {
+ const char* cBuffer;
+ int i = 0;
+ int iCount = ComboBox_GetCount( hCtrl );
+ for( i=0; i< iCount; i++ )
+ {
+ cBuffer = (const char*)ComboBox_GetItemData( hCtrl, i );
+ if (strcmp(cBuffer, pCurrentOpts.value(OPTION_BIOS) ) == 0)
+ {
+ res = ComboBox_SetCurSel(hCtrl, i);
+ break;
+ }
+
+ }
+ }
+
+
+ hCtrl = GetDlgItem(hWnd, IDC_ASPECT);
+ if (hCtrl)
+ {
+ char aspect_option[32];
+ snprintf(aspect_option, ARRAY_LENGTH(aspect_option), "aspect%d", GetSelectedScreen(hWnd));
+ if( strcmp(o.value(aspect_option), "auto") == 0)
+ {
+ Button_SetCheck(hCtrl, TRUE);
+ g_bAutoAspect[GetSelectedScreen(hWnd)] = TRUE;
+ }
+ else
+ {
+ Button_SetCheck(hCtrl, FALSE);
+ g_bAutoAspect[GetSelectedScreen(hWnd)] = FALSE;
+ }
+ }
+
+ /* aspect ratio */
+ hCtrl = GetDlgItem(hWnd, IDC_ASPECTRATION);
+ hCtrl2 = GetDlgItem(hWnd, IDC_ASPECTRATIOD);
+ if (hCtrl && hCtrl2)
+ {
+ char aspect_option[32];
+ snprintf(aspect_option, ARRAY_LENGTH(aspect_option), "aspect%d", GetSelectedScreen(hWnd));
+
+ n = 0;
+ d = 0;
+ if (o.value(aspect_option))
+ {
+ if (sscanf(o.value(aspect_option), "%d:%d", &n, &d) == 2 && n != 0 && d != 0)
+ {
+ _stprintf(buf, TEXT("%d"), n);
+ Edit_SetText(hCtrl, buf);
+ _stprintf(buf, TEXT("%d"), d);
+ Edit_SetText(hCtrl2, buf);
+ }
+ else
+ {
+ Edit_SetText(hCtrl, TEXT("4"));
+ Edit_SetText(hCtrl2, TEXT("3"));
+ }
+ }
+ else
+ {
+ Edit_SetText(hCtrl, TEXT("4"));
+ Edit_SetText(hCtrl2, TEXT("3"));
+ }
+ }
+ hCtrl = GetDlgItem(hWnd, IDC_EFFECT);
+ if (hCtrl) {
+ const char* effect = o.value(OPTION_EFFECT);
+ if (effect == NULL) {
+ effect = "none";
+ std::string error_string;
+ o.set_value(OPTION_EFFECT, effect, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ win_set_window_text_utf8(hCtrl, effect);
+ }
+ hCtrl = GetDlgItem(hWnd, IDC_SNAPSIZE);
+ if (hCtrl)
+ {
+ if( strcmp(o.value(OPTION_SNAPSIZE), "auto") == 0)
+ {
+ Button_SetCheck(hCtrl, TRUE);
+ g_bAutoSnapSize = TRUE;
+ }
+ else
+ {
+ Button_SetCheck(hCtrl, FALSE);
+ g_bAutoSnapSize = FALSE;
+ }
+ }
+ /* snapshot size */
+ hCtrl = GetDlgItem(hWnd, IDC_SNAPSIZEWIDTH);
+ hCtrl2 = GetDlgItem(hWnd, IDC_SNAPSIZEHEIGHT);
+ if (hCtrl && hCtrl2)
+ {
+ n = 0;
+ d = 0;
+ if (o.value(OPTION_SNAPSIZE))
+ {
+ if (sscanf(o.value(OPTION_SNAPSIZE), "%dx%d", &width, &height) == 2 && width != 0 && height != 0)
+ {
+ _stprintf(buf, TEXT("%d"), width);
+ Edit_SetText(hCtrl, buf);
+ _stprintf(buf, TEXT("%d"), height);
+ Edit_SetText(hCtrl2, buf);
+ }
+ else
+ {
+ Edit_SetText(hCtrl, TEXT("640"));
+ Edit_SetText(hCtrl2, TEXT("480"));
+ }
+ }
+ else
+ {
+ Edit_SetText(hCtrl, TEXT("640"));
+ Edit_SetText(hCtrl2, TEXT("480"));
+ }
+ }
+ res++;
+}
+
+/* Adjust controls - tune them to the currently selected game */
+static void SetPropEnabledControls(HWND hWnd)
+{
+ //HWND hCtrl;
+ bool useart = TRUE;
+ BOOL joystick_attached = FALSE;
+ bool in_window = FALSE;
+ int nIndex = g_nGame;
+
+ // auto is a reserved word
+ bool autov = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "auto")==0);
+ bool d3d = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "d3d")==0) | autov;
+ bool ddraw = 0;//(core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "ddraw")==0) | autov;
+ //bool gdi = (core_stricmp(pCurrentOpts.value(OSDOPTION_VIDEO), "gdi")==0) | autov;
+
+ in_window = pCurrentOpts.bool_value(OSDOPTION_WINDOW);
+ Button_SetCheck(GetDlgItem(hWnd, IDC_ASPECT), g_bAutoAspect[GetSelectedScreen(hWnd)] );
+
+ EnableWindow(GetDlgItem(hWnd, IDC_WAITVSYNC), d3d|ddraw);
+ EnableWindow(GetDlgItem(hWnd, IDC_TRIPLE_BUFFER), d3d|ddraw);
+ EnableWindow(GetDlgItem(hWnd, IDC_PRESCALE), d3d|ddraw);
+ EnableWindow(GetDlgItem(hWnd, IDC_PRESCALEDISP), d3d|ddraw);
+ EnableWindow(GetDlgItem(hWnd, IDC_PRESCALETEXT), d3d|ddraw);
+ EnableWindow(GetDlgItem(hWnd, IDC_HWSTRETCH), ddraw && DirectDraw_HasHWStretch());
+ EnableWindow(GetDlgItem(hWnd, IDC_SWITCHRES), TRUE);
+ EnableWindow(GetDlgItem(hWnd, IDC_SYNCREFRESH), TRUE);
+ EnableWindow(GetDlgItem(hWnd, IDC_REFRESH), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_REFRESHTEXT), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSGAMMA), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSGAMMATEXT), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSGAMMADISP), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSBRIGHTNESS), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSBRIGHTNESSTEXT), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSBRIGHTNESSDISP), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSCONTRAST), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSCONTRASTTEXT), !in_window);
+ EnableWindow(GetDlgItem(hWnd, IDC_FSCONTRASTDISP), !in_window);
+
+ EnableWindow(GetDlgItem(hWnd, IDC_ASPECTRATIOTEXT), !g_bAutoAspect[GetSelectedScreen(hWnd)]);
+ EnableWindow(GetDlgItem(hWnd, IDC_ASPECTRATION), !g_bAutoAspect[GetSelectedScreen(hWnd)]);
+ EnableWindow(GetDlgItem(hWnd, IDC_ASPECTRATIOD), !g_bAutoAspect[GetSelectedScreen(hWnd)]);
+
+ EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZETEXT), !g_bAutoSnapSize);
+ EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZEHEIGHT), !g_bAutoSnapSize);
+ EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZEWIDTH), !g_bAutoSnapSize);
+ EnableWindow(GetDlgItem(hWnd, IDC_SNAPSIZEX), !g_bAutoSnapSize);
+
+ EnableWindow(GetDlgItem(hWnd,IDC_D3D_FILTER),d3d);
+ EnableWindow(GetDlgItem(hWnd,IDC_D3D_VERSION),(NUMD3DVERSIONS>1) & d3d);
+
+ //Switchres and D3D or ddraw enable the per screen parameters
+
+ EnableWindow(GetDlgItem(hWnd, IDC_NUMSCREENS), ddraw | d3d);
+ EnableWindow(GetDlgItem(hWnd, IDC_NUMSCREENSDISP), ddraw | d3d);
+ EnableWindow(GetDlgItem(hWnd, IDC_SCREENSELECT), ddraw | d3d);
+ EnableWindow(GetDlgItem(hWnd, IDC_SCREENSELECTTEXT), ddraw | d3d);
+
+ EnableWindow(GetDlgItem(hWnd, IDC_ARTWORK_CROP), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_BACKDROPS), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_BEZELS), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_OVERLAYS), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_CPANELS), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_MARQUEES), useart);
+ EnableWindow(GetDlgItem(hWnd, IDC_ARTMISCTEXT), useart);
+
+ /* Joystick options */
+ joystick_attached = DIJoystick.Available();
+
+ Button_Enable(GetDlgItem(hWnd,IDC_JOYSTICK), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JDZTEXT), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JDZDISP), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JDZ), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JSATTEXT), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JSATDISP), joystick_attached);
+ EnableWindow(GetDlgItem(hWnd, IDC_JSAT), joystick_attached);
+ /* Trackball / Mouse options */
+ if (nIndex <= -1 || DriverUsesTrackball(nIndex) || DriverUsesLightGun(nIndex))
+ Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),TRUE);
+ else
+ Button_Enable(GetDlgItem(hWnd,IDC_USE_MOUSE),FALSE);
+
+ if (!in_window && (nIndex <= -1 || DriverUsesLightGun(nIndex)))
+ {
+ // on WinXP the Lightgun and Dual Lightgun switches are no longer supported use mouse instead
+ OSVERSIONINFOEX osvi;
+ BOOL bOsVersionInfoEx;
+ // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
+ // If that fails, try using the OSVERSIONINFO structure.
+
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+
+ if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
+ {
+ osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+ bOsVersionInfoEx = GetVersionEx ( (OSVERSIONINFO *) &osvi);
+ }
+
+ if( bOsVersionInfoEx && (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osvi.dwMajorVersion >= 5) )
+ {
+ BOOL use_lightgun;
+ //XP and above...
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),FALSE);
+ use_lightgun = Button_GetCheck(GetDlgItem(hWnd,IDC_USE_MOUSE));
+ Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),use_lightgun);
+ }
+ else
+ {
+ BOOL use_lightgun;
+ // Older than XP
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),TRUE);
+ use_lightgun = Button_GetCheck(GetDlgItem(hWnd,IDC_LIGHTGUN));
+ Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),use_lightgun);
+ Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),use_lightgun);
+ }
+ }
+ else
+ {
+ Button_Enable(GetDlgItem(hWnd,IDC_LIGHTGUN),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_DUAL_LIGHTGUN),FALSE);
+ Button_Enable(GetDlgItem(hWnd,IDC_RELOAD),FALSE);
+ }
+
+
+ /* Sound options */
+ bool sound = (core_stricmp(pCurrentOpts.value(OSDOPTION_SOUND), "none")!=0);
+ ComboBox_Enable(GetDlgItem(hWnd, IDC_SAMPLERATE), sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_VOLUME),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_RATETEXT),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_VOLUMEDISP),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_VOLUMETEXT),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_AUDIO_LATENCY),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_AUDIO_LATENCY_DISP),sound);
+ EnableWindow(GetDlgItem(hWnd,IDC_AUDIO_LATENCY_TEXT),sound);
+ SetSamplesEnabled(hWnd, nIndex, sound);
+
+ if (Button_GetCheck(GetDlgItem(hWnd, IDC_AUTOFRAMESKIP)))
+ EnableWindow(GetDlgItem(hWnd, IDC_FRAMESKIP), FALSE);
+ else
+ EnableWindow(GetDlgItem(hWnd, IDC_FRAMESKIP), 1);
+
+ if (nIndex <= -1 || DriverHasOptionalBIOS(nIndex))
+ EnableWindow(GetDlgItem(hWnd,IDC_BIOS),TRUE);
+ else
+ EnableWindow(GetDlgItem(hWnd,IDC_BIOS),FALSE);
+
+}
+
+//============================================================
+// CONTROL HELPER FUNCTIONS FOR DATA EXCHANGE
+//============================================================
+
+static BOOL RotateReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int selected_index = ComboBox_GetCurSel(control);
+ int original_selection = 0;
+
+ // Figure out what the original selection value is
+ if (opts->bool_value(OPTION_ROR) && !opts->bool_value(OPTION_ROL))
+ original_selection = 1;
+ else if (!opts->bool_value(OPTION_ROR) && opts->bool_value(OPTION_ROL))
+ original_selection = 2;
+ else if (!opts->bool_value(OPTION_ROTATE))
+ original_selection = 3;
+ else if (opts->bool_value(OPTION_AUTOROR))
+ original_selection = 4;
+ else if (opts->bool_value(OPTION_AUTOROL))
+ original_selection = 5;
+
+ // Any work to do? If so, make the changes and return TRUE.
+ if (selected_index != original_selection)
+ {
+ // Set the options based on the new selection.
+ std::string error_string;
+ opts->set_value(OPTION_ROR, selected_index == 1, OPTION_PRIORITY_CMDLINE,error_string);
+ opts->set_value(OPTION_ROL, selected_index == 2, OPTION_PRIORITY_CMDLINE,error_string);
+ opts->set_value(OPTION_ROTATE, selected_index != 3, OPTION_PRIORITY_CMDLINE,error_string);
+ opts->set_value(OPTION_AUTOROR, selected_index == 4, OPTION_PRIORITY_CMDLINE,error_string);
+ opts->set_value(OPTION_AUTOROL, selected_index == 5, OPTION_PRIORITY_CMDLINE,error_string);
+ return TRUE;
+ }
+
+ // No changes
+ return FALSE;
+}
+
+
+
+static BOOL RotatePopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int res, selected_index = 0;
+ if (opts->bool_value(OPTION_ROR) && !opts->bool_value(OPTION_ROL))
+ selected_index = 1;
+ else if (!opts->bool_value(OPTION_ROR) && opts->bool_value(OPTION_ROL))
+ selected_index = 2;
+ else if (!opts->bool_value(OPTION_ROTATE))
+ selected_index = 3;
+ else if (opts->bool_value(OPTION_AUTOROR))
+ selected_index = 4;
+ else if (opts->bool_value(OPTION_AUTOROL))
+ selected_index = 5;
+
+ res = ComboBox_SetCurSel(control, selected_index);
+ res++;
+ return FALSE;
+}
+
+
+
+static BOOL ScreenReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ char screen_option_name[32];
+ TCHAR *screen_option_value;
+ int selected_screen;
+ int screen_option_index;
+ char *op_val;
+ std::string error_string;
+
+ selected_screen = GetSelectedScreen(dialog);
+ screen_option_index = ComboBox_GetCurSel(control);
+ screen_option_value = (TCHAR*) ComboBox_GetItemData(control, screen_option_index);
+ snprintf(screen_option_name, ARRAY_LENGTH(screen_option_name), "screen%d", selected_screen);
+ op_val = ui_utf8_from_wstring(screen_option_value);
+ opts->set_value(screen_option_name, op_val, OPTION_PRIORITY_CMDLINE,error_string);
+ free(op_val);
+ return FALSE;
+}
+
+
+
+static BOOL ScreenPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ //int iMonitors;
+ DISPLAY_DEVICE dd;
+ int res, i = 0;
+ int nSelection = 0;
+ TCHAR* t_option = 0;
+
+ /* Remove all items in the list. */
+ res = ComboBox_ResetContent(control);
+ res = ComboBox_InsertString(control, 0, TEXT("Auto"));
+ res = ComboBox_SetItemData(control, 0, (void*)ui_wstring_from_utf8("auto"));
+
+ //Dynamically populate it, by enumerating the Monitors
+ //iMonitors = GetSystemMetrics(SM_CMONITORS); // this gets the count of monitors attached
+ ZeroMemory(&dd, sizeof(dd));
+ dd.cb = sizeof(dd);
+ for(i=0; EnumDisplayDevices(NULL, i, &dd, 0); i++)
+ {
+ if( !(dd.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER) )
+ {
+ char screen_option[32];
+
+ //we have to add 1 to account for the "auto" entry
+ res = ComboBox_InsertString(control, i+1, win_tstring_strdup(dd.DeviceName));
+ res = ComboBox_SetItemData(control, i+1, (void*)win_tstring_strdup(dd.DeviceName));
+
+ snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(dialog));
+ t_option = ui_wstring_from_utf8(opts->value(screen_option));
+ if( !t_option )
+ return FALSE;
+ if (_tcscmp(t_option, dd.DeviceName) == 0)
+ nSelection = i+1;
+ free(t_option);
+ }
+ }
+ res = ComboBox_SetCurSel(control, nSelection);
+ res++;
+ return FALSE;
+}
+
+
+
+static void ViewSetOptionName(datamap *map, HWND dialog, HWND control, char *buffer, size_t buffer_size)
+{
+ snprintf(buffer, buffer_size, "view%d", GetSelectedScreen(dialog));
+}
+
+static BOOL ViewPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int res, i;
+ int selected_index = 0;
+ char view_option[32];
+ const char *view;
+
+ // determine the view option value
+ snprintf(view_option, ARRAY_LENGTH(view_option), "view%d", GetSelectedScreen(dialog));
+ view = opts->value(view_option);
+
+ res = ComboBox_ResetContent(control);
+ for (i = 0; i < NUMVIEW; i++)
+ {
+ res = ComboBox_InsertString(control, i, g_ComboBoxView[i].m_pText);
+ res = ComboBox_SetItemData(control, i, g_ComboBoxView[i].m_pData);
+
+ if (strcmp(view, g_ComboBoxView[i].m_pData)==0)
+ selected_index = i;
+ }
+ res = ComboBox_SetCurSel(control, selected_index);
+ res++;
+ return FALSE;
+}
+
+static BOOL SnapViewPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int res, i;
+ int selected_index = 0;
+ const char *snapview;
+
+ // determine the snapview option value
+ snapview = opts->value(OPTION_SNAPVIEW);
+
+ res = ComboBox_ResetContent(control);
+ for (i = 0; i < NUMSNAPVIEW; i++)
+ {
+ res = ComboBox_InsertString(control, i, g_ComboBoxSnapView[i].m_pText);
+ res = ComboBox_SetItemData(control, i, g_ComboBoxSnapView[i].m_pData);
+
+ if (strcmp(snapview, g_ComboBoxSnapView[i].m_pData)==0)
+ selected_index = i;
+ }
+ res = ComboBox_SetCurSel(control, selected_index);
+ res++;
+ return FALSE;
+}
+
+static BOOL DefaultInputReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ TCHAR *input_option_value;
+ int input_option_index;
+ char *op_val = NULL;
+ std::string error_string;
+
+ input_option_index = ComboBox_GetCurSel(control);
+ input_option_value = (TCHAR*) ComboBox_GetItemData(control, input_option_index);
+ op_val = ui_utf8_from_wstring(input_option_value);
+ opts->set_value(OPTION_CTRLR, input_option_index ? op_val : "", OPTION_PRIORITY_CMDLINE,error_string);
+ free(op_val);
+ return FALSE;
+}
+
+static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ WIN32_FIND_DATA FindFileData;
+ HANDLE hFind;
+ TCHAR *ext;
+ TCHAR root[256];
+ TCHAR path[256];
+ int selected = 0;
+ int res, index = 0;
+ LPCTSTR t_ctrlr_option = 0;
+ LPTSTR t_buf = 0;
+ const char *ctrlr_option;
+ TCHAR* t_ctrldir;
+
+ // determine the ctrlr option
+ ctrlr_option = opts->value(OPTION_CTRLR);
+ if( ctrlr_option )
+ {
+ t_buf = ui_wstring_from_utf8(ctrlr_option);
+ if( !t_buf )
+ return FALSE;
+ t_ctrlr_option = t_buf;
+ }
+ else
+ {
+ t_ctrlr_option = TEXT("");
+ }
+
+ // reset the controllers dropdown
+ res = ComboBox_ResetContent(control);
+ res = ComboBox_InsertString(control, index, TEXT("Default"));
+ res = ComboBox_SetItemData(control, index, "");
+ index++;
+
+ t_ctrldir = ui_wstring_from_utf8(GetCtrlrDir());
+ if( !t_ctrldir )
+ {
+ if( t_buf )
+ free(t_buf);
+ return FALSE;
+ }
+
+ _stprintf (path, TEXT("%s\\*.*"), t_ctrldir);
+
+ free(t_ctrldir);
+
+ hFind = FindFirstFile(path, &FindFileData);
+
+ if (hFind != INVALID_HANDLE_VALUE)
+ {
+ do
+ {
+ // copy the filename
+ _tcscpy (root,FindFileData.cFileName);
+
+ // find the extension
+ ext = _tcsrchr (root,'.');
+ if (ext)
+ {
+ // check if it's a cfg file
+ if (_tcscmp (ext, TEXT(".cfg")) == 0)
+ {
+ // and strip off the extension
+ *ext = 0;
+
+ // set the option?
+ if (!_tcscmp(root, t_ctrlr_option))
+ selected = index;
+
+ // add it as an option
+ res = ComboBox_InsertString(control, index, root);
+ res = ComboBox_SetItemData(control, index, (void*)win_tstring_strdup(root)); // FIXME - leaks memory!
+ index++;
+ }
+ }
+ }
+ while (FindNextFile (hFind, &FindFileData) != 0);
+
+ FindClose (hFind);
+ }
+
+ res = ComboBox_SetCurSel(control, selected);
+
+ if( t_buf )
+ free(t_buf);
+
+ res++;
+ return FALSE;
+}
+
+
+
+static void ResolutionSetOptionName(datamap *map, HWND dialog, HWND control, char *buffer, size_t buffer_size)
+{
+ snprintf(buffer, buffer_size, "resolution%d", GetSelectedScreen(dialog));
+}
+
+
+static BOOL ResolutionReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ HWND refresh_control = GetDlgItem(dialog, IDC_REFRESH);
+ HWND sizes_control = GetDlgItem(dialog, IDC_SIZES);
+ int res = 0, refresh_index = 0, refresh_value = 0, width = 0, height = 0;
+ char option_value[256];
+ TCHAR buffer[256];
+ std::string error_string;
+
+ if (refresh_control && sizes_control)
+ {
+ res = ComboBox_GetText(sizes_control, buffer, ARRAY_LENGTH(buffer) - 1);
+ if (_stscanf(buffer, TEXT("%d x %d"), &width, &height) == 2)
+ {
+ refresh_index = ComboBox_GetCurSel(refresh_control);
+ refresh_value = ComboBox_GetItemData(refresh_control, refresh_index);
+ snprintf(option_value, ARRAY_LENGTH(option_value), "%dx%d@%d", width, height, refresh_value);
+ }
+ else
+ {
+ snprintf(option_value, ARRAY_LENGTH(option_value), "auto");
+ }
+ opts->set_value(option_name, option_value, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+ res++;
+ return FALSE;
+}
+
+
+
+static BOOL ResolutionPopulateControl(datamap *map, HWND dialog, HWND control_, windows_options *opts, const char *option_name)
+{
+ HWND sizes_control = GetDlgItem(dialog, IDC_SIZES);
+ HWND refresh_control = GetDlgItem(dialog, IDC_REFRESH);
+ int width, height, refresh;
+ const char *option_value;
+ int sizes_index = 0;
+ int refresh_index = 0;
+ int sizes_selection = 0;
+ int refresh_selection = 0;
+ char screen_option[32];
+ const char *screen;
+ LPTSTR t_screen;
+ TCHAR buf[16];
+ int res = 0, i;
+ DEVMODE devmode;
+
+ if (sizes_control && refresh_control)
+ {
+ // determine the resolution
+ option_value = opts->value(option_name);
+ if (sscanf(option_value, "%dx%d@%d", &width, &height, &refresh) != 3)
+ {
+ width = 0;
+ height = 0;
+ refresh = 0;
+ }
+
+ // reset sizes control
+ res = ComboBox_ResetContent(sizes_control);
+ res = ComboBox_InsertString(sizes_control, sizes_index, TEXT("Auto"));
+ res = ComboBox_SetItemData(sizes_control, sizes_index, 0);
+ sizes_index++;
+
+ // reset refresh control
+ res = ComboBox_ResetContent(refresh_control);
+ res = ComboBox_InsertString(refresh_control, refresh_index, TEXT("Auto"));
+ res = ComboBox_SetItemData(refresh_control, refresh_index, 0);
+ refresh_index++;
+
+ // determine which screen we're using
+ snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(dialog));
+ screen = opts->value(screen_option);
+ t_screen = ui_wstring_from_utf8(screen);
+
+ // retrieve screen information
+ devmode.dmSize = sizeof(devmode);
+ for (i = 0; EnumDisplaySettings(t_screen, i, &devmode); i++)
+ {
+ if ((devmode.dmBitsPerPel == 32 ) // Only 32 bit depth supported by core
+ &&(devmode.dmDisplayFrequency == refresh || refresh == 0))
+ {
+ _sntprintf(buf, ARRAY_LENGTH(buf), TEXT("%li x %li"),
+ devmode.dmPelsWidth, devmode.dmPelsHeight);
+
+ if (ComboBox_FindString(sizes_control, 0, buf) == CB_ERR)
+ {
+ res = ComboBox_InsertString(sizes_control, sizes_index, buf);
+
+ if ((width == devmode.dmPelsWidth) && (height == devmode.dmPelsHeight))
+ sizes_selection = sizes_index;
+ sizes_index++;
+
+ }
+ }
+ if (devmode.dmDisplayFrequency >= 10 )
+ {
+ // I have some devmode "vga" which specifes 1 Hz, which is probably bogus, so we filter it out
+
+ _sntprintf(buf, ARRAY_LENGTH(buf), TEXT("%li Hz"), devmode.dmDisplayFrequency);
+
+ if (ComboBox_FindString(refresh_control, 0, buf) == CB_ERR)
+ {
+ res = ComboBox_InsertString(refresh_control, refresh_index, buf);
+ res = ComboBox_SetItemData(refresh_control, refresh_index, devmode.dmDisplayFrequency);
+
+ if (refresh == devmode.dmDisplayFrequency)
+ refresh_selection = refresh_index;
+
+ refresh_index++;
+ }
+ }
+ }
+ free(t_screen);
+
+ res = ComboBox_SetCurSel(sizes_control, sizes_selection);
+ res = ComboBox_SetCurSel(refresh_control, refresh_selection);
+ }
+ res++;
+ return FALSE;
+}
+
+
+/************************************************************
+ * DataMap initializers
+ ************************************************************/
+
+/* Initialize local helper variables */
+static void ResetDataMap(HWND hWnd)
+{
+ char screen_option[32];
+
+ snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(hWnd));
+
+ if (pCurrentOpts.value(screen_option) == NULL
+ || (core_stricmp(pCurrentOpts.value(screen_option), "") == 0 )
+ || (core_stricmp(pCurrentOpts.value(screen_option), "auto") == 0 ) )
+ {
+ std::string error_string;
+ pCurrentOpts.set_value(screen_option, "auto", OPTION_PRIORITY_CMDLINE,error_string);
+ }
+}
+
+
+/* Build the control mapping by adding all needed information to the DataMap */
+static void BuildDataMap(void)
+{
+ properties_datamap = datamap_create();
+
+ // core state options
+ datamap_add(properties_datamap, IDC_ENABLE_AUTOSAVE, DM_BOOL, OPTION_AUTOSAVE);
+ datamap_add(properties_datamap, IDC_SNAPVIEW, DM_STRING, OPTION_SNAPVIEW);
+ datamap_add(properties_datamap, IDC_SNAPSIZEWIDTH, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_SNAPSIZEHEIGHT, DM_STRING, NULL);
+
+ // core performance options
+ datamap_add(properties_datamap, IDC_AUTOFRAMESKIP, DM_BOOL, OPTION_AUTOFRAMESKIP);
+ datamap_add(properties_datamap, IDC_FRAMESKIP, DM_INT, OPTION_FRAMESKIP);
+ datamap_add(properties_datamap, IDC_SECONDSTORUN, DM_INT, OPTION_SECONDS_TO_RUN);
+ datamap_add(properties_datamap, IDC_SECONDSTORUNDISP, DM_INT, OPTION_SECONDS_TO_RUN);
+ datamap_add(properties_datamap, IDC_THROTTLE, DM_BOOL, OPTION_THROTTLE);
+ datamap_add(properties_datamap, IDC_SLEEP, DM_BOOL, OPTION_SLEEP);
+ datamap_add(properties_datamap, IDC_SPEED, DM_FLOAT, OPTION_SPEED);
+ datamap_add(properties_datamap, IDC_SPEEDDISP, DM_FLOAT, OPTION_SPEED);
+ datamap_add(properties_datamap, IDC_REFRESHSPEED, DM_BOOL, OPTION_REFRESHSPEED);
+
+ // core retation options
+ datamap_add(properties_datamap, IDC_ROTATE, DM_INT, NULL);
+ // ror, rol, autoror, autorol handled by callback
+ datamap_add(properties_datamap, IDC_FLIPX, DM_BOOL, OPTION_FLIPX);
+ datamap_add(properties_datamap, IDC_FLIPY, DM_BOOL, OPTION_FLIPY);
+
+ // core artwork options
+ datamap_add(properties_datamap, IDC_ARTWORK_CROP, DM_BOOL, OPTION_ARTWORK_CROP);
+ datamap_add(properties_datamap, IDC_BACKDROPS, DM_BOOL, OPTION_USE_BACKDROPS);
+ datamap_add(properties_datamap, IDC_OVERLAYS, DM_BOOL, OPTION_USE_OVERLAYS);
+ datamap_add(properties_datamap, IDC_BEZELS, DM_BOOL, OPTION_USE_BEZELS);
+ datamap_add(properties_datamap, IDC_CPANELS, DM_BOOL, OPTION_USE_CPANELS);
+ datamap_add(properties_datamap, IDC_MARQUEES, DM_BOOL, OPTION_USE_MARQUEES);
+
+ // core screen options
+ datamap_add(properties_datamap, IDC_BRIGHTCORRECT, DM_FLOAT, OPTION_BRIGHTNESS);
+ datamap_add(properties_datamap, IDC_BRIGHTCORRECTDISP, DM_FLOAT, OPTION_BRIGHTNESS);
+ datamap_add(properties_datamap, IDC_CONTRAST, DM_FLOAT, OPTION_CONTRAST);
+ datamap_add(properties_datamap, IDC_CONTRASTDISP, DM_FLOAT, OPTION_CONTRAST);
+ datamap_add(properties_datamap, IDC_GAMMA, DM_FLOAT, OPTION_GAMMA);
+ datamap_add(properties_datamap, IDC_GAMMADISP, DM_FLOAT, OPTION_GAMMA);
+ datamap_add(properties_datamap, IDC_PAUSEBRIGHT, DM_FLOAT, OPTION_PAUSE_BRIGHTNESS);
+ datamap_add(properties_datamap, IDC_PAUSEBRIGHTDISP, DM_FLOAT, OPTION_PAUSE_BRIGHTNESS);
+
+ // core vector options
+ datamap_add(properties_datamap, IDC_BEAM, DM_FLOAT, OPTION_BEAM_WIDTH_MAX);
+ datamap_add(properties_datamap, IDC_BEAMDISP, DM_FLOAT, OPTION_BEAM_WIDTH_MAX);
+ datamap_add(properties_datamap, IDC_FLICKER, DM_FLOAT, OPTION_FLICKER);
+ datamap_add(properties_datamap, IDC_FLICKERDISP, DM_FLOAT, OPTION_FLICKER);
+
+ // core sound options
+ datamap_add(properties_datamap, IDC_SAMPLERATE, DM_INT, OPTION_SAMPLERATE);
+ datamap_add(properties_datamap, IDC_SAMPLES, DM_BOOL, OPTION_SAMPLES);
+ datamap_add(properties_datamap, IDC_SOUND_MODE, DM_STRING, OSDOPTION_SOUND);
+ datamap_add(properties_datamap, IDC_VOLUME, DM_INT, OPTION_VOLUME);
+ datamap_add(properties_datamap, IDC_VOLUMEDISP, DM_INT, OPTION_VOLUME);
+
+ // core input options
+ datamap_add(properties_datamap, IDC_COINLOCKOUT, DM_BOOL, OPTION_COIN_LOCKOUT);
+ datamap_add(properties_datamap, IDC_DEFAULT_INPUT, DM_STRING, OPTION_CTRLR);
+ datamap_add(properties_datamap, IDC_USE_MOUSE, DM_BOOL, OPTION_MOUSE);
+ datamap_add(properties_datamap, IDC_JOYSTICK, DM_BOOL, OPTION_JOYSTICK);
+ datamap_add(properties_datamap, IDC_LIGHTGUN, DM_BOOL, OPTION_LIGHTGUN);
+ datamap_add(properties_datamap, IDC_STEADYKEY, DM_BOOL, OPTION_STEADYKEY);
+ datamap_add(properties_datamap, IDC_MULTIKEYBOARD, DM_BOOL, OPTION_MULTIKEYBOARD);
+ datamap_add(properties_datamap, IDC_MULTIMOUSE, DM_BOOL, OPTION_MULTIMOUSE);
+ datamap_add(properties_datamap, IDC_RELOAD, DM_BOOL, OPTION_OFFSCREEN_RELOAD);
+
+ datamap_add(properties_datamap, IDC_JDZ, DM_FLOAT, OPTION_JOYSTICK_DEADZONE);
+ datamap_add(properties_datamap, IDC_JDZDISP, DM_FLOAT, OPTION_JOYSTICK_DEADZONE);
+ datamap_add(properties_datamap, IDC_JSAT, DM_FLOAT, OPTION_JOYSTICK_SATURATION);
+ datamap_add(properties_datamap, IDC_JSATDISP, DM_FLOAT, OPTION_JOYSTICK_SATURATION);
+ datamap_add(properties_datamap, IDC_JOYSTICKMAP, DM_STRING, OPTION_JOYSTICK_MAP);
+
+ // core input automatic enable options
+ datamap_add(properties_datamap, IDC_PADDLE, DM_STRING, OPTION_PADDLE_DEVICE);
+ datamap_add(properties_datamap, IDC_ADSTICK, DM_STRING, OPTION_ADSTICK_DEVICE);
+ datamap_add(properties_datamap, IDC_PEDAL, DM_STRING, OPTION_PEDAL_DEVICE);
+ datamap_add(properties_datamap, IDC_DIAL, DM_STRING, OPTION_DIAL_DEVICE);
+ datamap_add(properties_datamap, IDC_TRACKBALL, DM_STRING, OPTION_TRACKBALL_DEVICE);
+ datamap_add(properties_datamap, IDC_LIGHTGUNDEVICE, DM_STRING, OPTION_LIGHTGUN_DEVICE);
+ datamap_add(properties_datamap, IDC_POSITIONAL, DM_STRING, OPTION_POSITIONAL_DEVICE);
+ datamap_add(properties_datamap, IDC_MOUSE, DM_STRING, OPTION_MOUSE_DEVICE);
+
+ // core debugging options
+ datamap_add(properties_datamap, IDC_LOG, DM_BOOL, OPTION_LOG);
+ datamap_add(properties_datamap, IDC_DEBUG, DM_BOOL, OPTION_DEBUG);
+ datamap_add(properties_datamap, IDC_VERBOSE, DM_BOOL, OPTION_VERBOSE);
+ datamap_add(properties_datamap, IDC_UPDATEINPAUSE, DM_BOOL, OPTION_UPDATEINPAUSE);
+ datamap_add(properties_datamap, IDC_DEBUGSCRIPT, DM_STRING, OPTION_DEBUGSCRIPT);
+
+ // core misc options
+ datamap_add(properties_datamap, IDC_BIOS, DM_STRING, OPTION_BIOS);
+ datamap_add(properties_datamap, IDC_CHEAT, DM_BOOL, OPTION_CHEAT);
+ datamap_add(properties_datamap, IDC_SKIP_GAME_INFO, DM_BOOL, OPTION_SKIP_GAMEINFO);
+
+ // windows debugging options
+ datamap_add(properties_datamap, IDC_OSLOG, DM_BOOL, OPTION_OSLOG);
+
+ // windows performance options
+ datamap_add(properties_datamap, IDC_HIGH_PRIORITY, DM_INT, WINOPTION_PRIORITY);
+ datamap_add(properties_datamap, IDC_HIGH_PRIORITYTXT, DM_INT, WINOPTION_PRIORITY);
+
+ // windows video options
+ datamap_add(properties_datamap, IDC_VIDEO_MODE, DM_STRING, OSDOPTION_VIDEO);
+ datamap_add(properties_datamap, IDC_NUMSCREENS, DM_INT, OSDOPTION_NUMSCREENS);
+ datamap_add(properties_datamap, IDC_NUMSCREENSDISP, DM_INT, OSDOPTION_NUMSCREENS);
+ datamap_add(properties_datamap, IDC_WINDOWED, DM_BOOL, OSDOPTION_WINDOW);
+ datamap_add(properties_datamap, IDC_MAXIMIZE, DM_BOOL, OSDOPTION_MAXIMIZE);
+ datamap_add(properties_datamap, IDC_KEEPASPECT, DM_BOOL, OPTION_KEEPASPECT);
+ datamap_add(properties_datamap, IDC_PRESCALE, DM_INT, OSDOPTION_PRESCALE);
+ datamap_add(properties_datamap, IDC_PRESCALEDISP, DM_INT, OSDOPTION_PRESCALE);
+ datamap_add(properties_datamap, IDC_EFFECT, DM_STRING, OPTION_EFFECT);
+ datamap_add(properties_datamap, IDC_WAITVSYNC, DM_BOOL, OSDOPTION_WAITVSYNC);
+ datamap_add(properties_datamap, IDC_SYNCREFRESH, DM_BOOL, OSDOPTION_SYNCREFRESH);
+
+ // Direct3D specific options
+ datamap_add(properties_datamap, IDC_D3D_VERSION, DM_INT, WINOPTION_D3DVERSION);
+ datamap_add(properties_datamap, IDC_D3D_FILTER, DM_BOOL, OSDOPTION_FILTER);
+
+ // per window video options
+ datamap_add(properties_datamap, IDC_SCREEN, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_SCREENSELECT, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_VIEW, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_ASPECTRATIOD, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_ASPECTRATION, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_REFRESH, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_SIZES, DM_STRING, NULL);
+
+ // full screen options
+ datamap_add(properties_datamap, IDC_TRIPLE_BUFFER, DM_BOOL, WINOPTION_TRIPLEBUFFER);
+ datamap_add(properties_datamap, IDC_SWITCHRES, DM_BOOL, OSDOPTION_SWITCHRES);
+ datamap_add(properties_datamap, IDC_FSBRIGHTNESS, DM_FLOAT, WINOPTION_FULLSCREENBRIGHTNESS);
+ datamap_add(properties_datamap, IDC_FSBRIGHTNESSDISP, DM_FLOAT, WINOPTION_FULLSCREENBRIGHTNESS);
+ datamap_add(properties_datamap, IDC_FSCONTRAST, DM_FLOAT, WINOPTION_FULLSCREENCONTRAST);
+ datamap_add(properties_datamap, IDC_FSCONTRASTDISP, DM_FLOAT, WINOPTION_FULLSCREENCONTRAST);
+ datamap_add(properties_datamap, IDC_FSGAMMA, DM_FLOAT, WINOPTION_FULLSCREENGAMMA);
+ datamap_add(properties_datamap, IDC_FSGAMMADISP, DM_FLOAT, WINOPTION_FULLSCREENGAMMA);
+
+ // windows sound options
+ datamap_add(properties_datamap, IDC_AUDIO_LATENCY, DM_INT, OSDOPTION_AUDIO_LATENCY);
+ datamap_add(properties_datamap, IDC_AUDIO_LATENCY_DISP, DM_INT, OSDOPTION_AUDIO_LATENCY);
+
+ // input device options
+ datamap_add(properties_datamap, IDC_DUAL_LIGHTGUN, DM_BOOL, WINOPTION_DUAL_LIGHTGUN);
+
+ // show menu
+ datamap_add(properties_datamap, IDC_SHOW_MENU, DM_BOOL, WINOPTION_MENU);
+
+ // set up callbacks
+ datamap_set_callback(properties_datamap, IDC_ROTATE, DCT_READ_CONTROL, RotateReadControl);
+ datamap_set_callback(properties_datamap, IDC_ROTATE, DCT_POPULATE_CONTROL, RotatePopulateControl);
+ datamap_set_callback(properties_datamap, IDC_SCREEN, DCT_READ_CONTROL, ScreenReadControl);
+ datamap_set_callback(properties_datamap, IDC_SCREEN, DCT_POPULATE_CONTROL, ScreenPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_VIEW, DCT_POPULATE_CONTROL, ViewPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_REFRESH, DCT_READ_CONTROL, ResolutionReadControl);
+ datamap_set_callback(properties_datamap, IDC_REFRESH, DCT_POPULATE_CONTROL, ResolutionPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_SIZES, DCT_READ_CONTROL, ResolutionReadControl);
+ datamap_set_callback(properties_datamap, IDC_SIZES, DCT_POPULATE_CONTROL, ResolutionPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_DEFAULT_INPUT, DCT_READ_CONTROL, DefaultInputReadControl);
+ datamap_set_callback(properties_datamap, IDC_DEFAULT_INPUT, DCT_POPULATE_CONTROL, DefaultInputPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_SNAPVIEW, DCT_POPULATE_CONTROL, SnapViewPopulateControl);
+
+ datamap_set_option_name_callback(properties_datamap, IDC_VIEW, ViewSetOptionName);
+ //missing population of views with per game defined additional views
+ datamap_set_option_name_callback(properties_datamap, IDC_REFRESH, ResolutionSetOptionName);
+ datamap_set_option_name_callback(properties_datamap, IDC_SIZES, ResolutionSetOptionName);
+
+
+ // formats
+ datamap_set_int_format(properties_datamap, IDC_VOLUMEDISP, "%ddB");
+ datamap_set_int_format(properties_datamap, IDC_AUDIO_LATENCY_DISP, "%d/5");
+ datamap_set_float_format(properties_datamap, IDC_BEAMDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_FLICKERDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_GAMMADISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_BRIGHTCORRECTDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_CONTRASTDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_PAUSEBRIGHTDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_FSGAMMADISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_FSBRIGHTNESSDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_FSCONTRASTDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_JDZDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_JSATDISP, "%03.2f");
+ datamap_set_float_format(properties_datamap, IDC_SPEEDDISP, "%03.2f");
+
+ // trackbar ranges - slider-name,start,end,step
+ datamap_set_trackbar_range(properties_datamap, IDC_JDZ, 0.00, 1.00, (float)0.05);
+ datamap_set_trackbar_range(properties_datamap, IDC_JSAT, 0.00, 1.00, (float)0.05);
+ datamap_set_trackbar_range(properties_datamap, IDC_SPEED, 0.00, 3.00, (float)0.01);
+ datamap_set_trackbar_range(properties_datamap, IDC_BEAM, (float)0.10, 10.00, (float)0.10);
+ datamap_set_trackbar_range(properties_datamap, IDC_AUDIO_LATENCY, 1, 5, 1);
+ datamap_set_trackbar_range(properties_datamap, IDC_VOLUME, -32, 0, 1);
+ datamap_set_trackbar_range(properties_datamap, IDC_SECONDSTORUN, 0, 60, 1);
+ datamap_set_trackbar_range(properties_datamap, IDC_NUMSCREENS, 1, 4, 1);
+ datamap_set_trackbar_range(properties_datamap, IDC_PRESCALE, 1, 3, 1);
+ datamap_set_trackbar_range(properties_datamap, IDC_FSGAMMA, 0.0, 3.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_FSBRIGHTNESS, 0.00, 2.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_FSCONTRAST, 0.0, 2.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_GAMMA, 0.0, 3.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_BRIGHTCORRECT, 0.00, 2.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_CONTRAST, 0.0, 2.0, (float)0.1);
+ datamap_set_trackbar_range(properties_datamap, IDC_PAUSEBRIGHT, 0.00, 1.00, (float)0.05);
+
+#ifdef MESS
+ // MESS specific stuff
+ datamap_add(properties_datamap, IDC_DIR_LIST, DM_STRING, NULL);
+ datamap_add(properties_datamap, IDC_RAM_COMBOBOX, DM_INT, OPTION_RAMSIZE);
+
+ // set up callbacks
+ datamap_set_callback(properties_datamap, IDC_DIR_LIST, DCT_READ_CONTROL, DirListReadControl);
+ datamap_set_callback(properties_datamap, IDC_DIR_LIST, DCT_POPULATE_CONTROL, DirListPopulateControl);
+ datamap_set_callback(properties_datamap, IDC_RAM_COMBOBOX, DCT_POPULATE_CONTROL, RamPopulateControl);
+#endif
+}
+
+
+static void SetSamplesEnabled(HWND hWnd, int nIndex, BOOL bSoundEnabled)
+{
+ BOOL enabled = FALSE;
+ HWND hCtrl;
+
+ hCtrl = GetDlgItem(hWnd, IDC_SAMPLES);
+
+
+ if (hCtrl)
+ {
+ if ( nIndex > -1 )
+ {
+ machine_config config(driver_list::driver(nIndex),pCurrentOpts);
+
+ for (device_sound_interface &sound : sound_interface_iterator(config.root_device()))
+ {
+ if (sound.device().type() == SAMPLES)
+ enabled = TRUE;
+ }
+ }
+ enabled = enabled && bSoundEnabled;
+ EnableWindow(hCtrl, enabled);
+ }
+}
+
+/* Moved here cause it's called in a few places */
+static void InitializeOptions(HWND hDlg)
+{
+ InitializeSoundUI(hDlg);
+ InitializeSkippingUI(hDlg);
+ InitializeRotateUI(hDlg);
+ InitializeSelectScreenUI(hDlg);
+ InitializeBIOSUI(hDlg);
+ InitializeControllerMappingUI(hDlg);
+ InitializeD3DVersionUI(hDlg);
+ InitializeVideoUI(hDlg);
+}
+
+/* Moved here because it is called in several places */
+static void InitializeMisc(HWND hDlg)
+{
+ Button_Enable(GetDlgItem(hDlg, IDC_JOYSTICK), DIJoystick.Available());
+}
+
+static void OptOnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos)
+{
+ if (hwndCtl == GetDlgItem(hwnd, IDC_NUMSCREENS))
+ NumScreensSelectionChange(hwnd);
+}
+
+/* Handle changes to the Numscreens slider */
+static void NumScreensSelectionChange(HWND hwnd)
+{
+ //Also Update the ScreenSelect Combo with the new number of screens
+ UpdateSelectScreenUI(hwnd );
+}
+
+/* Handle changes to the Refresh drop down */
+static void RefreshSelectionChange(HWND hWnd, HWND hWndCtrl)
+{
+ int nCurSelection = ComboBox_GetCurSel(hWndCtrl);
+
+ if (nCurSelection != CB_ERR)
+ {
+ datamap_read_control(properties_datamap, hWnd, pCurrentOpts, IDC_SIZES);
+ datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_SIZES);
+ }
+}
+
+/* Initialize the sound options */
+static void InitializeSoundUI(HWND hwnd)
+{
+ HWND hCtrl;
+ int res = 0, i;
+
+ hCtrl = GetDlgItem(hwnd, IDC_SOUND_MODE);
+ if (hCtrl)
+ {
+ for (i = 0; i < NUMSOUND; i++)
+ {
+ res = ComboBox_InsertString(hCtrl, i, g_ComboBoxSound[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxSound[i].m_pData);
+ }
+ }
+
+ i = 0;
+
+ hCtrl = GetDlgItem(hwnd, IDC_SAMPLERATE);
+ if (hCtrl)
+ {
+ res = ComboBox_AddString(hCtrl, TEXT("11025"));
+ res = ComboBox_SetItemData(hCtrl, i++, 11025);
+ res = ComboBox_AddString(hCtrl, TEXT("22050"));
+ res = ComboBox_SetItemData(hCtrl, i++, 22050);
+ res = ComboBox_AddString(hCtrl, TEXT("44100"));
+ res = ComboBox_SetItemData(hCtrl, i++, 44100);
+ res = ComboBox_AddString(hCtrl, TEXT("48000"));
+ res = ComboBox_SetItemData(hCtrl, i++, 48000);
+ res = ComboBox_SetCurSel(hCtrl, 1);
+ }
+ res++;
+}
+
+/* Populate the Frame Skipping drop down */
+static void InitializeSkippingUI(HWND hwnd)
+{
+ HWND hCtrl = GetDlgItem(hwnd, IDC_FRAMESKIP);
+ int res = 0, i = 0;
+
+ if (hCtrl)
+ {
+ res = ComboBox_AddString(hCtrl, TEXT("Draw every frame"));
+ res = ComboBox_SetItemData(hCtrl, i++, 0);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 1 frame"));
+ res = ComboBox_SetItemData(hCtrl, i++, 1);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 2 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 2);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 3 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 3);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 4 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 4);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 5 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 5);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 6 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 6);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 7 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 7);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 8 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 8);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 9 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 9);
+ res = ComboBox_AddString(hCtrl, TEXT("Skip 10 frames"));
+ res = ComboBox_SetItemData(hCtrl, i++, 10);
+ }
+ res++;
+}
+
+/* Populate the Rotate drop down */
+static void InitializeRotateUI(HWND hwnd)
+{
+ HWND hCtrl = GetDlgItem(hwnd, IDC_ROTATE);
+ int res = 0;
+
+ if (hCtrl)
+ {
+ res = ComboBox_AddString(hCtrl, TEXT("Default")); // 0
+ res = ComboBox_AddString(hCtrl, TEXT("Clockwise")); // 1
+ res = ComboBox_AddString(hCtrl, TEXT("Anti-clockwise")); // 2
+ res = ComboBox_AddString(hCtrl, TEXT("None")); // 3
+ res = ComboBox_AddString(hCtrl, TEXT("Auto clockwise")); // 4
+ res = ComboBox_AddString(hCtrl, TEXT("Auto anti-clockwise")); // 5
+ }
+ res++;
+}
+
+/* Populate the Video Mode drop down */
+static void InitializeVideoUI(HWND hwnd)
+{
+ HWND hCtrl;
+ int res = 0;
+
+ hCtrl = GetDlgItem(hwnd, IDC_VIDEO_MODE);
+ if (hCtrl)
+ {
+ int i;
+ for (i = 0; i < NUMVIDEO; i++)
+ {
+ res = ComboBox_InsertString(hCtrl, i, g_ComboBoxVideo[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxVideo[i].m_pData);
+ }
+ }
+ res++;
+}
+
+/* Populate the D3D Version drop down */
+static void InitializeD3DVersionUI(HWND hwnd)
+{
+ HWND hCtrl = GetDlgItem(hwnd, IDC_D3D_VERSION);
+ int res = 0, i;
+ if (hCtrl)
+ {
+ for (i = 0; i < NUMD3DVERSIONS; i++)
+ {
+ res = ComboBox_InsertString(hCtrl, i, g_ComboBoxD3DVersion[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxD3DVersion[i].m_pData);
+ }
+ }
+ res++;
+}
+
+static void UpdateSelectScreenUI(HWND hwnd)
+{
+ int res = 0, i, curSel;
+ HWND hCtrl = GetDlgItem(hwnd, IDC_SCREENSELECT);
+ if (hCtrl)
+ {
+ curSel = ComboBox_GetCurSel(hCtrl);
+ if ((curSel < 0) || (curSel >= NUMSELECTSCREEN))
+ curSel = 0;
+ res = ComboBox_ResetContent(hCtrl);
+ for (i = 0; i < NUMSELECTSCREEN && i < pCurrentOpts.int_value(OSDOPTION_NUMSCREENS) ; i++)
+ {
+ res = ComboBox_InsertString(hCtrl, i, g_ComboBoxSelectScreen[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxSelectScreen[i].m_pData);
+ }
+ // Smaller Amount of screens was selected, so use 0
+ if( i < curSel )
+ res = ComboBox_SetCurSel(hCtrl, 0);
+ else
+ res = ComboBox_SetCurSel(hCtrl, curSel);
+ }
+ res++;
+}
+
+/* Populate the Select Screen drop down */
+static void InitializeSelectScreenUI(HWND hwnd)
+{
+ UpdateSelectScreenUI(hwnd);
+}
+
+static void InitializeControllerMappingUI(HWND hwnd)
+{
+ int res = 0, i;
+ HWND hCtrl = GetDlgItem(hwnd,IDC_PADDLE);
+ HWND hCtrl1 = GetDlgItem(hwnd,IDC_ADSTICK);
+ HWND hCtrl2 = GetDlgItem(hwnd,IDC_PEDAL);
+ HWND hCtrl3 = GetDlgItem(hwnd,IDC_MOUSE);
+ HWND hCtrl4 = GetDlgItem(hwnd,IDC_DIAL);
+ HWND hCtrl5 = GetDlgItem(hwnd,IDC_TRACKBALL);
+ HWND hCtrl6 = GetDlgItem(hwnd,IDC_LIGHTGUNDEVICE);
+ HWND hCtrl7 = GetDlgItem(hwnd,IDC_POSITIONAL);
+
+ for (i = 0; i < NUMDEVICES; i++)
+ {
+ if (hCtrl)
+ {
+ res = ComboBox_InsertString(hCtrl, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl1)
+ {
+ res = ComboBox_InsertString(hCtrl1, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl1, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl2)
+ {
+ res = ComboBox_InsertString(hCtrl2, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl2, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl3)
+ {
+ res = ComboBox_InsertString(hCtrl3, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl3, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl4)
+ {
+ res = ComboBox_InsertString(hCtrl4, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl4, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl5)
+ {
+ res = ComboBox_InsertString(hCtrl5, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl5, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl6)
+ {
+ res = ComboBox_InsertString(hCtrl6, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl6, i, g_ComboBoxDevice[i].m_pData);
+ }
+
+ if (hCtrl7)
+ {
+ res = ComboBox_InsertString(hCtrl7, i, g_ComboBoxDevice[i].m_pText);
+ res = ComboBox_SetItemData( hCtrl7, i, g_ComboBoxDevice[i].m_pData);
+ }
+ }
+ res++;
+}
+
+
+static void InitializeBIOSUI(HWND hwnd)
+{
+ HWND hCtrl = GetDlgItem(hwnd,IDC_BIOS);
+ int res = 0, i = 0;
+ TCHAR* t_s;
+ if (hCtrl)
+ {
+ const game_driver *gamedrv = &driver_list::driver(g_nGame);
+ const rom_entry *rom;
+
+ if (g_nGame == GLOBAL_OPTIONS)
+ {
+ res = ComboBox_InsertString(hCtrl, i, TEXT("None"));
+ res = ComboBox_SetItemData( hCtrl, i++, "");
+ return;
+ }
+ if (g_nGame == LOCAL_OPTIONS) //Folder Options: This is the only place that LOCAL_OPTIONS is used, is this code ever executed?
+ {
+ gamedrv = &driver_list::driver(g_nFolderGame);
+ if (DriverHasOptionalBIOS(g_nFolderGame) == FALSE)
+ {
+ res = ComboBox_InsertString(hCtrl, i, TEXT("None"));
+ res = ComboBox_SetItemData( hCtrl, i++, "");
+ return;
+ }
+ res = ComboBox_InsertString(hCtrl, i, TEXT("Default"));
+ res = ComboBox_SetItemData( hCtrl, i++, "");
+
+ if (gamedrv->rom)
+ {
+ auto rom_entries = rom_build_entries(gamedrv->rom);
+ for (rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++)
+ {
+ if (ROMENTRY_ISSYSTEM_BIOS(rom))
+ {
+ const char *name = ROM_GETHASHDATA(rom);
+ const char *biosname = ROM_GETNAME(rom);
+ t_s = ui_wstring_from_utf8(name);
+ if( !t_s )
+ return;
+ res = ComboBox_InsertString(hCtrl, i, win_tstring_strdup(t_s));
+ res = ComboBox_SetItemData( hCtrl, i++, biosname);
+ free(t_s);
+ }
+ }
+ }
+ return;
+ }
+
+ if (DriverHasOptionalBIOS(g_nGame) == FALSE)
+ {
+ res = ComboBox_InsertString(hCtrl, i, TEXT("None"));
+ res = ComboBox_SetItemData( hCtrl, i++, "");
+ return;
+ }
+ res = ComboBox_InsertString(hCtrl, i, TEXT("Default"));
+ res = ComboBox_SetItemData( hCtrl, i++, "");
+
+ if (gamedrv->rom)
+ {
+ auto rom_entries = rom_build_entries(gamedrv->rom);
+ for (rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++)
+ {
+ if (ROMENTRY_ISSYSTEM_BIOS(rom))
+ {
+ const char *name = ROM_GETHASHDATA(rom);
+ const char *biosname = ROM_GETNAME(rom);
+ t_s = ui_wstring_from_utf8(name);
+ if( !t_s )
+ return;
+ res = ComboBox_InsertString(hCtrl, i, win_tstring_strdup(t_s));
+ res = ComboBox_SetItemData( hCtrl, i++, biosname);
+ free(t_s);
+ }
+ }
+ }
+ }
+ res++;
+}
+
+static BOOL SelectEffect(HWND hWnd)
+{
+ char filename[MAX_PATH];
+ BOOL changed = FALSE;
+
+ *filename = 0;
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_EFFECT_FILES))
+ {
+ //strip Path and extension
+ char buff[MAX_PATH];
+ int i, j = 0, k = 0, l = 0;
+ for(i=0; i<strlen(filename); i++ )
+ {
+ if( filename[i] == '\\' )
+ j = i;
+ if( filename[i] == '.' )
+ k = i;
+ }
+ for(i=j+1;i<k;i++)
+ {
+ buff[l++] = filename[i];
+ }
+ buff[l] = '\0';
+
+ if (strcmp(buff, pCurrentOpts.value(OPTION_EFFECT))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_EFFECT);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_EFFECT, buff, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, buff);
+ // datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT);
+ changed = TRUE;
+ }
+ }
+ return changed;
+}
+
+static BOOL ResetEffect(HWND hWnd)
+{
+ BOOL changed = FALSE;
+ const char *new_value = "none";
+
+ if (strcmp(new_value, pCurrentOpts.value(OPTION_EFFECT))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_EFFECT);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_EFFECT, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, new_value);
+ // datamap_populate_control(properties_datamap, hWnd, pCurrentOpts, IDC_EFFECT);
+ changed = TRUE;
+ }
+ return changed;
+}
+
+static BOOL SelectJoystickMap(HWND hWnd)
+{
+ char filename[MAX_PATH];
+ BOOL changed = FALSE;
+
+ *filename = 0;
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_JOYMAP_FILES))
+ {
+ if (strcmp(filename, pCurrentOpts.value(OPTION_JOYSTICK_MAP))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_JOYSTICKMAP);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, filename, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, filename);
+ changed = TRUE;
+ }
+ }
+ return changed;
+}
+
+static BOOL ResetJoystickMap(HWND hWnd)
+{
+ BOOL changed = FALSE;
+ const char *new_value = "auto";
+
+ if (strcmp(new_value, pCurrentOpts.value(OPTION_JOYSTICK_MAP))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_JOYSTICKMAP);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_JOYSTICK_MAP, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, new_value);
+ changed = TRUE;
+ }
+ return changed;
+}
+
+static BOOL SelectDebugscript(HWND hWnd)
+{
+ char filename[MAX_PATH];
+ BOOL changed = FALSE;
+
+ *filename = 0;
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_DEBUGSCRIPT_FILES))
+ {
+ if (strcmp(filename, pCurrentOpts.value(OPTION_DEBUGSCRIPT))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_DEBUGSCRIPT);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, filename, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, filename);
+ changed = TRUE;
+ }
+ }
+ return changed;
+}
+
+static BOOL ResetDebugscript(HWND hWnd)
+{
+ BOOL changed = FALSE;
+ const char *new_value = "";
+
+ if (strcmp(new_value, pCurrentOpts.value(OPTION_DEBUGSCRIPT))!=0)
+ {
+ HWND control = GetDlgItem(hWnd, IDC_DEBUGSCRIPT);
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_DEBUGSCRIPT, new_value, OPTION_PRIORITY_CMDLINE,error_string);
+ win_set_window_text_utf8(control, new_value);
+ changed = TRUE;
+ }
+ return changed;
+}
+
+void UpdateBackgroundBrush(HWND hwndTab)
+{
+ // Destroy old brush
+ if (hBkBrush)
+ DeleteBrush(hBkBrush);
+
+ hBkBrush = NULL;
+
+ // Only do this if the theme is active
+ if (SafeIsAppThemed())
+ {
+ RECT rc;
+ HDC hDC, hDCMem;
+ HBITMAP hBmp, hBmpOld;
+ // Get tab control dimensions
+ GetWindowRect( hwndTab, &rc);
+
+ // Get the tab control DC
+ hDC = GetDC(hwndTab);
+
+ // Create a compatible DC
+ hDCMem = CreateCompatibleDC(hDC);
+ hBmp = CreateCompatibleBitmap(hDC, rc.right - rc.left, rc.bottom - rc.top);
+ hBmpOld = (HBITMAP)(SelectObject(hDCMem, hBmp));
+
+ // Tell the tab control to paint in our DC
+ SendMessage(hwndTab, WM_PRINTCLIENT, (WPARAM)(hDCMem), (LPARAM)(PRF_ERASEBKGND | PRF_CLIENT | PRF_NONCLIENT));
+
+ // Create a pattern brush from the bitmap selected in our DC
+ hBkBrush = CreatePatternBrush(hBmp);
+
+ // Restore the bitmap
+ SelectObject(hDCMem, hBmpOld);
+
+ // Cleanup
+ DeleteBitmap(hBmp);
+ DeleteDC(hDCMem);
+ ReleaseDC(hwndTab, hDC);
+ }
+}
+
+
+// from propertiesms.cpp (MESSUI)
+
+
+//============================================================
+#ifdef MESS
+//============================================================
+// DATAMAP HANDLERS FOR MESS
+//============================================================
+
+static void AppendList(HWND hList, LPCTSTR lpItem, int nItem)
+{
+ LV_ITEM Item;
+ HRESULT res;
+ memset(&Item, 0, sizeof(LV_ITEM));
+ Item.mask = LVIF_TEXT;
+ Item.pszText = (LPTSTR) lpItem;
+ Item.iItem = nItem;
+ res = ListView_InsertItem(hList, &Item);
+ res++;
+}
+
+static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int directory_count;
+ LV_ITEM lvi;
+ TCHAR buffer[2048];
+ int i, pos = 0;
+ BOOL res;
+
+ // determine the directory count; note that one item is the "< >" entry
+ directory_count = ListView_GetItemCount(control);
+ if (directory_count > 0)
+ directory_count--;
+
+ buffer[0] = '\0';
+
+ for (i = 0; i < directory_count; i++)
+ {
+ // append a semicolon, if we're past the first entry
+ if (i > 0)
+ pos += _sntprintf(&buffer[pos], ARRAY_LENGTH(buffer) - pos, TEXT(";"));
+
+ // retrieve the next entry
+ memset(&lvi, '\0', sizeof(lvi));
+ lvi.mask = LVIF_TEXT;
+ lvi.iItem = i;
+ lvi.pszText = &buffer[pos];
+ lvi.cchTextMax = ARRAY_LENGTH(buffer) - pos;
+ res = ListView_GetItem(control, &lvi);
+
+ // advance the position
+ pos += _tcslen(&buffer[pos]);
+ }
+
+ const char* paths = ui_utf8_from_wstring(buffer);
+ if ((buffer[1] == 0x3A) || (buffer[0] == 0)) // must be a folder or null
+ {
+ std::string error_string;
+ pCurrentOpts.set_value(OPTION_SWPATH, paths, OPTION_PRIORITY_CMDLINE, error_string);
+ }
+ res++;
+ return TRUE;
+}
+
+
+static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int driver_index, pos, new_pos, current_item;
+ TCHAR *s;
+ LV_COLUMN lvc;
+ RECT r;
+ HRESULT res;
+ BOOL b_res;
+
+ // access the directory list, and convert to TCHARs
+ driver_index = PropertiesCurrentGame(dialog);
+ windows_options o;
+ load_options(o, OPTIONS_GAME, driver_index);
+ const char* paths = o.value(OPTION_SWPATH);
+ TCHAR* t_dir_list = ui_wstring_from_utf8(paths);
+ paths = 0;
+ if (!t_dir_list)
+ return FALSE;
+
+ // delete all items in the list control
+ b_res = ListView_DeleteAllItems(control);
+
+ // add the column
+ GetClientRect(control, &r);
+ memset(&lvc, 0, sizeof(LVCOLUMN));
+ lvc.mask = LVCF_WIDTH;
+ lvc.cx = r.right - r.left - GetSystemMetrics(SM_CXHSCROLL);
+ res = ListView_InsertColumn(control, 0, &lvc);
+
+ // add each of the directories
+ pos = 0;
+ current_item = 0;
+ while(t_dir_list[pos] != '\0')
+ {
+ // parse off this item
+ s = _tcschr(&t_dir_list[pos], ';');
+ if (s)
+ {
+ *s = '\0';
+ new_pos = s - t_dir_list + 1;
+ }
+ else
+ new_pos = pos + _tcslen(&t_dir_list[pos]);
+
+ // append this item
+ AppendList(control, &t_dir_list[pos], current_item);
+
+ // advance to next item
+ pos = new_pos;
+ current_item++;
+ }
+
+ // finish up
+ AppendList(control, TEXT(DIRLIST_NEWENTRYTEXT), current_item);
+ ListView_SetItemState(control, 0, LVIS_SELECTED, LVIS_SELECTED);
+ free(t_dir_list);
+ res++;
+ b_res++;
+ return TRUE;
+}
+
+
+
+static const char *messram_string(char *buffer, UINT32 ram)
+{
+ const char *suffix;
+
+ if ((ram % (1024*1024)) == 0)
+ {
+ ram /= 1024*1024;
+ suffix = "m";
+ }
+ else if ((ram % 1024) == 0)
+ {
+ ram /= 1024;
+ suffix = "k";
+ }
+ else
+ suffix = "";
+
+ sprintf(buffer, "%u%s", ram, suffix);
+ return buffer;
+}
+
+static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_options *opts, const char *option_name)
+{
+ int res = 0, i = 0, current_index, driver_index;
+ const game_driver *gamedrv;
+ UINT32 ram, current_ram;
+ const char *this_ram_string;
+ TCHAR* t_ramstring;
+
+ // identify the driver
+ driver_index = PropertiesCurrentGame(dialog);
+ gamedrv = &driver_list::driver(driver_index);
+
+ // clear out the combo box
+ res = ComboBox_ResetContent(control);
+
+ // allocate the machine config
+ machine_config cfg(*gamedrv,*opts);
+
+ // identify how many options that we have
+ ram_device_iterator iter(cfg.root_device());
+ ram_device *device = iter.first();
+
+ EnableWindow(control, (device != NULL));
+
+ // we can only do something meaningful if there is more than one option
+ if (device)
+ {
+ const ram_device *ramdev = dynamic_cast<const ram_device *>(device);
+
+ // identify the current amount of RAM
+ this_ram_string = opts->value(OPTION_RAMSIZE);
+ current_ram = (this_ram_string != NULL) ? ramdev->parse_string(this_ram_string) : 0;
+ if (current_ram == 0)
+ current_ram = ramdev->default_size();
+
+ // by default, assume index 0
+ current_index = 0;
+
+ {
+ char tmpval[20] ;
+ ram = ramdev->default_size();
+ messram_string(tmpval,ram);
+ t_ramstring = ui_wstring_from_utf8(tmpval);
+ if( !t_ramstring )
+ return FALSE;
+
+ res = ComboBox_InsertString(control, i, win_tstring_strdup(t_ramstring));
+ res = ComboBox_SetItemData(control, i, ram);
+
+ free(t_ramstring);
+ }
+ if (ramdev->extra_options())
+ {
+ int j;
+ int size = strlen(ramdev->extra_options());
+ char * const s = core_strdup(ramdev->extra_options());
+ char * const e = s + size;
+ char *p = s;
+ for (j=0;j<size;j++)
+ if (p[j]==',')
+ p[j]=0;
+
+ /* try to parse each option */
+ while(p <= e)
+ {
+ i++;
+ // identify this option
+ ram = ramdev->parse_string(p);
+
+ this_ram_string = p;
+
+ t_ramstring = ui_wstring_from_utf8(this_ram_string);
+ if( !t_ramstring )
+ return FALSE;
+
+ // add this option to the combo box
+ res = ComboBox_InsertString(control, i, win_tstring_strdup(t_ramstring));
+ res = ComboBox_SetItemData(control, i, ram);
+
+ free(t_ramstring);
+
+ // is this the current option? record the index if so
+ if (ram == current_ram)
+ current_index = i;
+
+ p+= strlen(p);
+ if (p == e)
+ break;
+
+ p++;
+ }
+
+ free(s);
+ }
+
+ // set the combo box
+ res = ComboBox_SetCurSel(control, current_index);
+ }
+ res++;
+ return TRUE;
+}
+
+
+static void MarkChanged(HWND hDlg)
+{
+ HWND hCtrl;
+
+ /* fake a CBN_SELCHANGE event from IDC_SIZES to force it to be changed */
+ hCtrl = GetDlgItem(hDlg, IDC_SIZES);
+ PostMessage(hDlg, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_SIZES, (LPARAM) hCtrl);
+}
+
+
+static BOOL SoftwareDirectories_OnInsertBrowse(HWND hDlg, BOOL bBrowse, LPCTSTR lpItem)
+{
+ int nItem;
+ TCHAR inbuf[MAX_PATH];
+ TCHAR outbuf[MAX_PATH];
+ HWND hList;
+ LPTSTR lpIn;
+ BOOL res;
+
+ g_bModifiedSoftwarePaths = TRUE;
+
+ hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED);
+
+ if (nItem == -1)
+ return FALSE;
+
+ /* Last item is placeholder for append */
+ if (nItem == ListView_GetItemCount(hList) - 1)
+ bBrowse = FALSE;
+
+ if (!lpItem)
+ {
+ if (bBrowse)
+ {
+ ListView_GetItemText(hList, nItem, 0, inbuf, ARRAY_LENGTH(inbuf));
+ lpIn = inbuf;
+ }
+ else
+ lpIn = NULL;
+
+ if (!BrowseForDirectory(hDlg, lpIn, outbuf))
+ return FALSE;
+
+ lpItem = outbuf;
+ }
+
+ AppendList(hList, lpItem, nItem);
+ if (bBrowse)
+ res = ListView_DeleteItem(hList, nItem+1);
+ MarkChanged(hDlg);
+ res++;
+ return TRUE;
+}
+
+
+
+static BOOL SoftwareDirectories_OnDelete(HWND hDlg)
+{
+ int nCount;
+ int nSelect;
+ int nItem;
+ HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+ BOOL res;
+
+ g_bModifiedSoftwarePaths = TRUE;
+
+ nItem = ListView_GetNextItem(hList, -1, LVNI_SELECTED | LVNI_ALL);
+
+ if (nItem == -1)
+ return FALSE;
+
+ /* Don't delete "Append" placeholder. */
+ if (nItem == ListView_GetItemCount(hList) - 1)
+ return FALSE;
+
+ res = ListView_DeleteItem(hList, nItem);
+
+ nCount = ListView_GetItemCount(hList);
+ if (nCount <= 1)
+ return FALSE;
+
+ /* If the last item was removed, select the item above. */
+ if (nItem == nCount - 1)
+ nSelect = nCount - 2;
+ else
+ nSelect = nItem;
+
+ ListView_SetItemState(hList, nSelect, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
+ MarkChanged(hDlg);
+ res++;
+ return TRUE;
+}
+
+
+
+static BOOL SoftwareDirectories_OnBeginLabelEdit(HWND hDlg, NMHDR* pNMHDR)
+{
+ BOOL bResult = FALSE;
+ NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
+ LVITEM* pItem = &pDispInfo->item;
+ HWND hList = GetDlgItem(hDlg, IDC_DIR_LIST);
+
+ /* Last item is placeholder for append */
+ if (pItem->iItem == ListView_GetItemCount(hList) - 1)
+ {
+ HWND hEdit = (HWND) (uintptr_t) SendMessage(hList, LVM_GETEDITCONTROL, 0, 0);
+ win_set_window_text_utf8(hEdit, "");
+ }
+
+ return bResult;
+}
+
+
+
+static BOOL SoftwareDirectories_OnEndLabelEdit(HWND hDlg, NMHDR* pNMHDR)
+{
+ BOOL bResult = FALSE;
+ NMLVDISPINFO* pDispInfo = (NMLVDISPINFO*)pNMHDR;
+ LVITEM* pItem = &pDispInfo->item;
+
+ if (pItem->pszText)
+ {
+ struct _stat file_stat;
+
+ /* Don't allow empty entries. */
+ if (!_tcscmp(pItem->pszText, TEXT("")))
+ return FALSE;
+
+ /* Check validity of edited directory. */
+ if ((_tstat(pItem->pszText, &file_stat) == 0) && (file_stat.st_mode & S_IFDIR))
+ bResult = TRUE;
+ else
+ if (win_message_box_utf8(NULL, "Folder does not exist, continue anyway?", MAMEUINAME, MB_OKCANCEL) == IDOK)
+ bResult = TRUE;
+ }
+
+ if (bResult == TRUE)
+ SoftwareDirectories_OnInsertBrowse(hDlg, TRUE, pItem->pszText);
+
+ return bResult;
+}
+
+
+static BOOL DriverHasDevice(const game_driver *gamedrv, iodevice_t type)
+{
+ BOOL b = FALSE;
+
+ // allocate the machine config
+ machine_config config(*gamedrv,MameUIGlobal());
+
+ for (device_image_interface &dev : image_interface_iterator(config.root_device()))
+ {
+ if (dev.image_type() == type)
+ {
+ b = TRUE;
+ break;
+ }
+ }
+ return b;
+}
+
+BOOL PropSheetFilter_Config(const machine_config *drv, const game_driver *gamedrv)
+{
+ ram_device_iterator iter(drv->root_device());
+ return (iter.first()!=NULL) || DriverHasDevice(gamedrv, IO_PRINTER);
+}
+
+INT_PTR CALLBACK GameMessOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
+{
+ INT_PTR rc = 0;
+ BOOL bHandled = FALSE;
+
+ switch (Msg)
+ {
+ case WM_NOTIFY:
+ switch (((NMHDR *) lParam)->code)
+ {
+ case LVN_ENDLABELEDIT:
+ rc = SoftwareDirectories_OnEndLabelEdit(hDlg, (NMHDR *) lParam);
+ bHandled = TRUE;
+ break;
+
+ case LVN_BEGINLABELEDIT:
+ rc = SoftwareDirectories_OnBeginLabelEdit(hDlg, (NMHDR *) lParam);
+ bHandled = TRUE;
+ break;
+ }
+ }
+
+ if (!bHandled)
+ rc = GameOptionsProc(hDlg, Msg, wParam, lParam);
+
+ return rc;
+}
+
+
+
+BOOL MessPropertiesCommand(HWND hWnd, WORD wNotifyCode, WORD wID, BOOL *changed)
+{
+ BOOL handled = TRUE;
+
+ switch(wID)
+ {
+ case IDC_DIR_BROWSE:
+ if (wNotifyCode == BN_CLICKED)
+ *changed = SoftwareDirectories_OnInsertBrowse(hWnd, TRUE, NULL);
+ break;
+
+ case IDC_DIR_INSERT:
+ if (wNotifyCode == BN_CLICKED)
+ *changed = SoftwareDirectories_OnInsertBrowse(hWnd, FALSE, NULL);
+ break;
+
+ case IDC_DIR_DELETE:
+ if (wNotifyCode == BN_CLICKED)
+ *changed = SoftwareDirectories_OnDelete(hWnd);
+ break;
+
+ default:
+ handled = FALSE;
+ break;
+ }
+ return handled;
+}
+
+#endif
+
+
diff --git a/docs/release/src/osd/winui/properties.h b/docs/release/src/osd/winui/properties.h
new file mode 100644
index 00000000000..5c403ec6bf3
--- /dev/null
+++ b/docs/release/src/osd/winui/properties.h
@@ -0,0 +1,58 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef PROPERTIES_H
+#define PROPERTIES_H
+
+/* Get title string to display in the top of the property page,
+ * Called also in ui_audit.c
+ */
+char* GameInfoTitle(OPTIONS_TYPE opt_type, UINT nIndex);
+
+/* Called in winui.c to create the property page */
+void InitPropertyPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_type, int folder_id, int game_num);
+
+#define PROPERTIES_PAGE 0
+#define AUDIT_PAGE 1
+
+void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYPE opt_type, int folder_id, int game_num, int start_page);
+void InitDefaultPropertyPage(HINSTANCE hInst, HWND hWnd);
+
+/* Get Help ID array for WM_HELP and WM_CONTEXTMENU */
+DWORD_PTR GetHelpIDs(void);
+
+/* Get Game status text string */
+const char* GameInfoStatus(int driver_index, BOOL bRomStatus);
+
+/* Property sheet info for layout.c */
+typedef struct
+{
+ BOOL bOnDefaultPage;
+// BOOL (*pfnFilterProc)(const machine_config *drv, const game_driver *gamedrv);
+ BOOL (*pfnFilterProc)(int driver_index);
+ DWORD dwDlgID;
+ DLGPROC pfnDlgProc;
+} PROPERTYSHEETINFO;
+
+extern const PROPERTYSHEETINFO g_propSheets[];
+
+BOOL PropSheetFilter_Vector(const machine_config *drv, const game_driver *gamedrv);
+
+INT_PTR CALLBACK GamePropertiesDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK GameOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+int PropertiesCurrentGame(HWND hDlg);
+
+// from propertiesms.h (MESSUI)
+
+BOOL MessPropertiesCommand(HWND hWnd, WORD wNotifyCode, WORD wID, BOOL *changed);
+
+INT_PTR CALLBACK GameMessOptionsProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+BOOL PropSheetFilter_Config(const machine_config *drv, const game_driver *gamedrv);
+
+#include "datamap.h"
+void MessBuildDataMap(datamap *properties_datamap);
+
+
+#endif
+
diff --git a/docs/release/src/osd/winui/res/about.bmp b/docs/release/src/osd/winui/res/about.bmp
new file mode 100644
index 00000000000..e04a46ca022
--- /dev/null
+++ b/docs/release/src/osd/winui/res/about.bmp
Binary files differ
diff --git a/docs/release/src/osd/winui/res/bkgnd16.bmp b/docs/release/src/osd/winui/res/bkgnd16.bmp
new file mode 100644
index 00000000000..c4a589a32d4
--- /dev/null
+++ b/docs/release/src/osd/winui/res/bkgnd16.bmp
Binary files differ
diff --git a/docs/release/src/osd/winui/res/bkground.bmp b/docs/release/src/osd/winui/res/bkground.bmp
new file mode 100644
index 00000000000..f7e49de3084
--- /dev/null
+++ b/docs/release/src/osd/winui/res/bkground.bmp
Binary files differ
diff --git a/docs/release/src/osd/winui/res/checkmark.ico b/docs/release/src/osd/winui/res/checkmark.ico
new file mode 100644
index 00000000000..dd272c2e536
--- /dev/null
+++ b/docs/release/src/osd/winui/res/checkmark.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/controller.ico b/docs/release/src/osd/winui/res/controller.ico
new file mode 100644
index 00000000000..390c18db340
--- /dev/null
+++ b/docs/release/src/osd/winui/res/controller.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/cpu.ico b/docs/release/src/osd/winui/res/cpu.ico
new file mode 100644
index 00000000000..9c6843fbed5
--- /dev/null
+++ b/docs/release/src/osd/winui/res/cpu.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/custom.ico b/docs/release/src/osd/winui/res/custom.ico
new file mode 100644
index 00000000000..8047b9d0b43
--- /dev/null
+++ b/docs/release/src/osd/winui/res/custom.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/display.ico b/docs/release/src/osd/winui/res/display.ico
new file mode 100644
index 00000000000..b81df196948
--- /dev/null
+++ b/docs/release/src/osd/winui/res/display.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldavail.ico b/docs/release/src/osd/winui/res/foldavail.ico
new file mode 100644
index 00000000000..b8bcb595bf9
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldavail.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/folder.ico b/docs/release/src/osd/winui/res/folder.ico
new file mode 100644
index 00000000000..8a801462d62
--- /dev/null
+++ b/docs/release/src/osd/winui/res/folder.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldmanu.ico b/docs/release/src/osd/winui/res/foldmanu.ico
new file mode 100644
index 00000000000..8a801462d62
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldmanu.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldopen.ico b/docs/release/src/osd/winui/res/foldopen.ico
new file mode 100644
index 00000000000..7bab12a3abc
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldopen.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldsrc.ico b/docs/release/src/osd/winui/res/foldsrc.ico
new file mode 100644
index 00000000000..8a801462d62
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldsrc.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldunav.ico b/docs/release/src/osd/winui/res/foldunav.ico
new file mode 100644
index 00000000000..b74cc8edfc8
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldunav.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/foldyear.ico b/docs/release/src/osd/winui/res/foldyear.ico
new file mode 100644
index 00000000000..8a801462d62
--- /dev/null
+++ b/docs/release/src/osd/winui/res/foldyear.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/harddisk.ico b/docs/release/src/osd/winui/res/harddisk.ico
new file mode 100644
index 00000000000..580d379fab4
--- /dev/null
+++ b/docs/release/src/osd/winui/res/harddisk.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/hbmame.ico b/docs/release/src/osd/winui/res/hbmame.ico
new file mode 100644
index 00000000000..845ec9aedd7
--- /dev/null
+++ b/docs/release/src/osd/winui/res/hbmame.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/hbmameui.ico b/docs/release/src/osd/winui/res/hbmameui.ico
new file mode 100644
index 00000000000..845ec9aedd7
--- /dev/null
+++ b/docs/release/src/osd/winui/res/hbmameui.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/header_down.ico b/docs/release/src/osd/winui/res/header_down.ico
new file mode 100644
index 00000000000..490eb0f7880
--- /dev/null
+++ b/docs/release/src/osd/winui/res/header_down.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/header_up.ico b/docs/release/src/osd/winui/res/header_up.ico
new file mode 100644
index 00000000000..e7cbd555c4e
--- /dev/null
+++ b/docs/release/src/osd/winui/res/header_up.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/horz.ico b/docs/release/src/osd/winui/res/horz.ico
new file mode 100644
index 00000000000..c4a5e940d09
--- /dev/null
+++ b/docs/release/src/osd/winui/res/horz.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/icon_asc.ico b/docs/release/src/osd/winui/res/icon_asc.ico
new file mode 100644
index 00000000000..95f04736dc3
--- /dev/null
+++ b/docs/release/src/osd/winui/res/icon_asc.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/icon_des.ico b/docs/release/src/osd/winui/res/icon_des.ico
new file mode 100644
index 00000000000..cda58ae29b5
--- /dev/null
+++ b/docs/release/src/osd/winui/res/icon_des.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/icon_snd.ico b/docs/release/src/osd/winui/res/icon_snd.ico
new file mode 100644
index 00000000000..8b085042313
--- /dev/null
+++ b/docs/release/src/osd/winui/res/icon_snd.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/icon_sndn.ico b/docs/release/src/osd/winui/res/icon_sndn.ico
new file mode 100644
index 00000000000..ce7d03df4b3
--- /dev/null
+++ b/docs/release/src/osd/winui/res/icon_sndn.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/joystick.ico b/docs/release/src/osd/winui/res/joystick.ico
new file mode 100644
index 00000000000..4a7c5c7cd05
--- /dev/null
+++ b/docs/release/src/osd/winui/res/joystick.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/keyboard.ico b/docs/release/src/osd/winui/res/keyboard.ico
new file mode 100644
index 00000000000..1e11e2c382f
--- /dev/null
+++ b/docs/release/src/osd/winui/res/keyboard.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/mameui.manifest b/docs/release/src/osd/winui/res/mameui.manifest
new file mode 100644
index 00000000000..ce705a1b765
--- /dev/null
+++ b/docs/release/src/osd/winui/res/mameui.manifest
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="MAMEUI" type="win32" />
+<description>Multiple Arcade Machine Emulator with built in user interface</description>
+<dependency>
+<dependentAssembly>
+<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
+</dependentAssembly>
+</dependency>
+</assembly>
diff --git a/docs/release/src/osd/winui/res/manufact.ico b/docs/release/src/osd/winui/res/manufact.ico
new file mode 100644
index 00000000000..85d8136f08e
--- /dev/null
+++ b/docs/release/src/osd/winui/res/manufact.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/nonwork.ico b/docs/release/src/osd/winui/res/nonwork.ico
new file mode 100644
index 00000000000..8964fc75367
--- /dev/null
+++ b/docs/release/src/osd/winui/res/nonwork.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/samples.ico b/docs/release/src/osd/winui/res/samples.ico
new file mode 100644
index 00000000000..96851b31582
--- /dev/null
+++ b/docs/release/src/osd/winui/res/samples.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/sound.ico b/docs/release/src/osd/winui/res/sound.ico
new file mode 100644
index 00000000000..9f7edeaa6cd
--- /dev/null
+++ b/docs/release/src/osd/winui/res/sound.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/source.ico b/docs/release/src/osd/winui/res/source.ico
new file mode 100644
index 00000000000..94618b8c6fd
--- /dev/null
+++ b/docs/release/src/osd/winui/res/source.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/splith.cur b/docs/release/src/osd/winui/res/splith.cur
new file mode 100644
index 00000000000..7342d296e81
--- /dev/null
+++ b/docs/release/src/osd/winui/res/splith.cur
Binary files differ
diff --git a/docs/release/src/osd/winui/res/toolbar.bmp b/docs/release/src/osd/winui/res/toolbar.bmp
new file mode 100644
index 00000000000..6e7e26055e4
--- /dev/null
+++ b/docs/release/src/osd/winui/res/toolbar.bmp
Binary files differ
diff --git a/docs/release/src/osd/winui/res/vert.ico b/docs/release/src/osd/winui/res/vert.ico
new file mode 100644
index 00000000000..2855e6176d7
--- /dev/null
+++ b/docs/release/src/osd/winui/res/vert.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/win_clone.ico b/docs/release/src/osd/winui/res/win_clone.ico
new file mode 100644
index 00000000000..3a0af8a5cd9
--- /dev/null
+++ b/docs/release/src/osd/winui/res/win_clone.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/win_noro.ico b/docs/release/src/osd/winui/res/win_noro.ico
new file mode 100644
index 00000000000..1f313aa4b95
--- /dev/null
+++ b/docs/release/src/osd/winui/res/win_noro.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/win_redx.ico b/docs/release/src/osd/winui/res/win_redx.ico
new file mode 100644
index 00000000000..1d4f2458314
--- /dev/null
+++ b/docs/release/src/osd/winui/res/win_redx.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/win_roms.ico b/docs/release/src/osd/winui/res/win_roms.ico
new file mode 100644
index 00000000000..9c6843fbed5
--- /dev/null
+++ b/docs/release/src/osd/winui/res/win_roms.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/win_unkn.ico b/docs/release/src/osd/winui/res/win_unkn.ico
new file mode 100644
index 00000000000..4d7f401a4fa
--- /dev/null
+++ b/docs/release/src/osd/winui/res/win_unkn.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/working.ico b/docs/release/src/osd/winui/res/working.ico
new file mode 100644
index 00000000000..4a3f53c6f3b
--- /dev/null
+++ b/docs/release/src/osd/winui/res/working.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/res/year.ico b/docs/release/src/osd/winui/res/year.ico
new file mode 100644
index 00000000000..4f8d93dbbd3
--- /dev/null
+++ b/docs/release/src/osd/winui/res/year.ico
Binary files differ
diff --git a/docs/release/src/osd/winui/resource.h b/docs/release/src/osd/winui/resource.h
new file mode 100644
index 00000000000..5fc98ae17d6
--- /dev/null
+++ b/docs/release/src/osd/winui/resource.h
@@ -0,0 +1,453 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by mameui.rc
+//
+#define IDPAUSE 3
+#define IDS_UI_FILE 61
+#define IDS_UI_VIEW 62
+#define IDS_UI_OPTIONS 63
+#define IDS_UI_HELP 64
+#define IDS_VIEW_TOOLBAR 70
+#define IDS_VIEW_STATUSBAR 71
+#define IDS_VIEW_FOLDERLIST 72
+#define IDS_VIEW_SCREENSHOT 73
+#define IDS_VIEW_PICTURETABS 74
+#define IDS_VIEW_SPACER1 75
+#define IDS_VIEW_FULLSCREEN 76
+#define IDS_VIEW_SPACER2 77
+#define IDS_VIEW_SHOWPICTURES 78
+#define IDS_VIEW_SPACER3 79
+#define IDS_VIEW_LARGEICONS 80
+#define IDS_VIEW_SMALLICONS 81
+#define IDS_VIEW_LIST 82
+#define IDS_VIEW_DETAILS 83
+#define IDS_VIEW_GROUPED 84
+#define IDS_VIEW_SPACER4 85
+#define IDS_VIEW_ARRANGE 86
+#define IDS_VIEW_LINEUPICONS 87
+#define IDS_VIEW_SPACER5 88
+#define IDS_VIEW_REFRESH 89
+#define IDS_VIEW_CONTEXTFILTERS 90
+#define IDS_VIEW_CUSTOMIZEFIELDS 91
+#define ID_TOOLBAR_EDIT 92
+#define IDD_MAIN 101
+#define IDA_TAB_KEYS 106
+#define IDI_MAMEUI_ICON 107
+#define IDD_ABOUT 108
+#define IDR_MAIN_MENU 109
+#define IDR_UI_MENU 110
+#define IDB_ABOUT 113
+#define IDD_DIRECTX 114
+#define IDD_AUDIT 115
+#define IDD_DIRECTORIES 116
+#define IDD_CUSTOM_FILE 117
+#define IDR_CONTEXT_MENU 118
+#define IDI_WIN_NOROMS 119
+#define IDI_WIN_ROMS 120
+#define IDI_WIN_UNKNOWN 121
+#define IDI_WIN_CLONE 122
+#define IDI_WIN_REDX 123
+#define IDI_FOLDER_OPEN 124
+#define IDI_FOLDER 125
+#define IDI_FOLDER_AVAILABLE 126
+#define IDI_FOLDER_MANUFACTURER 127
+#define IDI_FOLDER_UNAVAILABLE 128
+#define IDI_FOLDER_YEAR 129
+#define IDI_FOLDER_SOURCE 130
+#define IDI_MANUFACTURER 131
+#define IDI_WORKING 132
+#define IDI_NONWORKING 133
+#define IDI_YEAR 134
+#define IDI_SOUND 135
+#define IDI_CPU 136
+#define IDI_HARDDISK 137
+#define IDI_SOURCE 138
+#define IDI_FOLDER_HORIZONTAL 139
+#define IDI_FOLDER_VERTICAL 140
+#define IDR_CONTEXT_HEADER 151
+#define IDD_PROP_GAME 152
+#define IDD_PROP_AUDIT 153
+#define IDD_PROP_DISPLAY 154
+#define IDD_PROP_SOUND 155
+#define IDD_PROP_ADVANCED 156
+#define IDD_PROP_INPUT 157
+#define IDD_PROP_MISC 158
+#define IDD_PROP_VECTOR 159
+#define IDD_COLUMNS 160
+#define IDI_KEYBOARD 161
+#define IDI_JOYSTICK 162
+#define IDI_DISPLAY 163
+#define IDI_CHECKMARK 164
+#define IDC_CURSOR_HSPLIT 165
+#define IDB_TOOLBAR 166
+#define IDR_CONTEXT_TREE 168
+#define IDD_FILTERS 169
+#define IDD_RESET 170
+#define IDD_LOAD_PROGRESS 171
+#define IDD_INTERFACE_OPTIONS 173
+#define IDR_CONTEXT_SCREENSHOT 181
+#define IDI_HEADER_UP 182
+#define IDI_HEADER_DOWN 183
+#define IDD_PROP_CONTROLLER 185
+#define IDD_PROP_SCREEN 187
+#define IDD_PROP_DEBUG 188
+#define IDI_SOUNDTAB 666
+#define IDC_LIST 1000
+#define IDC_JOYSTICK 1003
+#define IDC_SIZES 1005
+#define IDC_FRAMESKIP 1009
+#define IDC_ROTATE 1010
+#define IDC_SCREEN 1012
+#define IDC_VIEW 1013
+#define IDC_SCREENSELECT 1014
+#define IDC_CHEAT 1015
+#define IDC_LOG 1016
+#define IDC_ARTWORK_CROP 1017
+#define IDC_OVERLAYS 1018
+#define IDC_BEZELS 1019
+#define IDC_CPANELS 1020
+#define IDC_MARQUEES 1021
+#define IDC_SLEEP 1022
+#define IDC_GAMMA 1023
+#define IDC_BRIGHTCORRECT 1024
+#define IDC_USE_DEFAULT 1025
+#define IDC_CONTRAST 1026
+#define IDC_SAMPLERATE 1027
+#define IDC_NUMSCREENS 1028
+#define IDC_BEAM 1030
+#define IDC_FLICKER 1031
+#define IDC_FLIPX 1032
+#define IDC_FLIPY 1033
+#define IDC_BACKDROPS 1034
+#define IDC_DIRECTX_HELP 1035
+#define IDC_FLICKERDISP 1036
+#define IDB_WEB_PAGE 1037
+#define IDC_FSCONTRAST 1038
+#define IDC_ROMS_PROGRESS 1039
+#define IDC_SECONDSTORUN 1039
+#define IDC_CONTRASTDISP 1040
+#define IDC_ROMS_CORRECT 1041
+#define IDC_FSCONTRASTDISP 1042
+#define IDC_ROMS_INCORRECT 1043
+#define IDC_SECONDSTORUNDISP 1043
+#define IDC_NUMSCREENSDISP 1044
+#define IDC_ROMS_TOTAL 1045
+#define IDC_SAMPLES_PROGRESS 1046
+#define IDC_SAMPLES_CORRECT 1047
+#define IDC_BEAMDISP 1048
+#define IDC_SAMPLES_INCORRECT 1049
+#define IDC_SAMPLES_TOTAL 1050
+#define IDC_AUDIT_DETAILS 1051
+#define IDC_DIR_COMBO 1053
+#define IDC_DIR_LIST 1054
+#define IDC_DIR_BROWSE 1055
+#define IDC_DIR_INSERT 1056
+#define IDC_DIR_DELETE 1057
+#define IDC_FLICKERTEXT 1058
+#define IDC_SSFRAME 1059
+#define IDC_PRESCALE 1060
+#define IDC_SSPICTURE 1062
+#define IDC_BEAMTEXT 1063
+#define IDC_MULTIKEYBOARD 1065
+#define IDC_RATETEXT 1069
+#define IDC_LISTAVAILABLECOLUMNS 1070
+#define IDC_LISTSHOWCOLUMNS 1071
+#define IDC_BUTTONADD 1072
+#define IDC_BUTTONREMOVE 1073
+#define IDC_BUTTONMOVEDOWN 1074
+#define IDC_BUTTONMOVEUP 1075
+#define IDC_PROP_SOUND 1076
+#define IDC_PROP_CPU 1077
+#define IDC_PROP_TITLE 1078
+#define IDC_PROP_MANUFACTURED 1079
+#define IDC_PROP_STATUS 1080
+#define IDC_PROP_SCREEN 1081
+#define IDC_PROP_COLORS 1082
+#define IDC_PROP_ROMS 1083
+#define IDC_PROP_SAMPLES 1084
+#define IDC_PROP_CLONEOF_TEXT 1085
+#define IDC_PROP_CLONEOF 1086
+#define IDC_VERSION 1088
+#define IDC_FSGAMMA 1090
+#define IDC_GAMMADISP 1091
+#define IDC_FSBRIGHTNESS 1092
+#define IDC_FSGAMMADISP 1093
+#define IDC_PRESCALEDISP 1094
+#define IDC_BRIGHTCORRECTDISP 1095
+#define IDC_FSBRIGHTNESSDISP 1096
+#define IDC_AUTOFRAMESKIP 1097
+#define IDC_TREE 1098
+#define IDC_WINDOWED 1099
+#define IDC_PROP_RESET 1101
+#define IDC_SPLITTER 1102
+#define IDC_SPLITTER2 1103
+#define IDC_DIVIDER 1104
+#define IDC_FILTER_VECTOR 1105
+#define IDC_FILTER_RASTER 1106
+#define IDC_FILTER_UNAVAILABLE 1107
+#define IDC_FILTER_NONWORKING 1108
+#define IDC_FILTER_CLONES 1109
+#define IDC_RESET_GAMES 1110
+#define IDC_RESET_UI 1111
+#define IDC_RESET_FILTERS 1112
+#define IDC_RESET_EFFECT 1113
+#define IDC_RESET_DEFAULT 1114
+#define IDC_FILTER_ORIGINALS 1115
+#define IDC_FILTER_WORKING 1116
+#define IDC_FILTER_AVAILABLE 1117
+#define IDC_FILTER_ARCADE 1118
+#define IDC_FILTER_MESS 1119
+#define IDC_START_GAME_CHECK 1120
+#define IDC_VOLUME 1121
+#define IDC_VOLUMEDISP 1122
+#define IDC_HISTORY 1124
+#define IDC_SAMPLES 1125
+#define IDC_TRIPLE_BUFFER 1127
+#define IDC_LOAD_ROMNAME 1128
+#define IDC_DEFAULT_INPUT 1129
+#define IDC_LANGUAGECHECK 1130
+#define IDC_LANGUAGEBROWSE 1131
+#define IDC_LANGUAGEEDIT 1132
+#define IDC_FILTER_EDIT 1133
+#define IDC_ABOUT 1134
+#define IDC_USE_SOUND 1136
+#define IDC_WAITVSYNC 1137
+#define IDC_HWSTRETCH 1138
+#define IDC_SWITCHRES 1139
+#define IDC_MAXIMIZE 1140
+#define IDC_KEEPASPECT 1141
+#define IDC_SYNCREFRESH 1142
+#define IDC_USE_MOUSE 1143
+#define IDC_THROTTLE 1144
+#define IDC_VOLUMETEXT 1146
+#define IDC_REFRESH 1148
+#define IDC_REFRESHTEXT 1149
+#define IDC_EFFECT 1150
+#define IDC_FSGAMMATEXT 1151
+#define IDC_STEADYKEY 1152
+#define IDC_ASPECTRATION 1154
+#define IDC_ASPECTRATIOD 1155
+#define IDC_ASPECTRATIOTEXT 1156
+#define IDC_JOY_GUI 1157
+#define IDC_BROADCAST 1158
+#define IDC_JDZ 1159
+#define IDC_JDZDISP 1160
+#define IDC_JDZTEXT 1161
+#define IDC_JSATTEXT 1162
+#define IDC_JSAT 1163
+#define IDC_JSATDISP 1164
+#define IDC_AUDIO_LATENCY_DISP 1165
+#define IDC_PLAY_GAME 1166
+#define IDC_LIGHTGUN 1167
+#define IDC_SSTAB 1168
+#define IDC_GAME_ICON 1169
+#define IDC_RANDOM_BG 1170
+#define IDC_CUSTOM_TREE 1171
+#define IDC_CUSTOMFILE_GAME 1173
+#define IDC_LOAD_STATUS 1174
+#define IDC_ERROR_TEXT 1175
+#define IDC_ARTMISCTEXT 1176
+#define IDC_ENABLE_AUTOSAVE 1177
+#define IDC_SKIP_GAME_INFO 1178
+#define IDC_PROP_SOURCE 1179
+#define IDC_FILTER_HORIZONTAL 1180
+#define IDC_PAUSEBRIGHT 1181
+#define IDC_PAUSEBRIGHTDISP 1182
+#define IDC_HIGH_PRIORITY 1183
+#define IDC_D3D_FILTER 1184
+#define IDC_HIDE_MOUSE 1185
+#define IDC_AUDIO_LATENCY 1186
+#define IDC_D3D_VERSION 1187
+#define IDC_AUDIT_DETAILS_PROP 1188
+#define IDC_CYCLETIMESEC 1190
+#define IDC_AUDIO_LATENCY_TEXT 1191
+#define IDC_STRETCH_SCREENSHOT_LARGER 1192
+#define IDC_FILTER_INHERIT 1193
+#define IDC_RESET_PLAYTIME 1194
+#define IDC_RESET_PLAYCOUNT 1195
+#define IDC_INHERITED 1196
+#define IDC_KEY_GUI 1197
+#define IDC_RELOAD 1198
+#define IDC_DUAL_LIGHTGUN 1199
+#define IDC_NOOFFSET_CLONES 1200
+#define IDC_BIOS 1201
+#define IDC_HISTORY_TAB 1202
+#define IDC_SNAPVIEW 1202
+#define IDC_SCREENSHOT_BORDERSIZE 1204
+#define IDC_SCREENSHOT_BORDERCOLOR 1205
+#define IDC_CYCLETIMESECTXT 1206
+#define IDC_SCREENSHOT_BORDERSIZETXT 1207
+#define IDC_PADDLE 1208
+#define IDC_ADSTICK 1209
+#define IDC_PEDAL 1210
+#define IDC_DIAL 1211
+#define IDC_TRACKBALL 1212
+#define IDC_LIGHTGUNDEVICE 1213
+#define IDC_MOUSE 1214
+#define IDC_POSITIONAL 1215
+#define IDC_HIGH_PRIORITY_TEXT 1216
+#define IDC_HIGH_PRIORITYTXT 1217
+#define IDC_SELECT_EFFECT 1218
+#define IDC_MULTITHREAD_RENDERING 1219
+#define IDC_ASPECT 1220
+#define IDC_LOAD_PROGRESS 1223
+#define IDC_FSBRIGHTNESSTEXT 1224
+#define IDC_FSCONTRASTTEXT 1225
+#define IDC_VIDEO_MODE 1226
+#define IDC_SCREENSELECTTEXT 1227
+#define IDC_PRESCALETEXT 1228
+#define IDC_SOUND_MODE 1229
+#define IDC_MULTIMOUSE 1230
+#define IDC_DEBUG 1231
+#define IDC_REFRESHSPEED 1232
+#define IDC_SPEEDTEXT 1233
+#define IDC_SPEED 1234
+#define IDC_SPEEDDISP 1235
+#define IDC_FILTER_VERTICAL 1236
+#define IDC_SNAPNAME 1237
+#define IDC_COINLOCKOUT 1238
+#define IDC_SECONDSTORUNTEXT 1239
+#define IDC_OSLOG 1240
+#define IDC_VERBOSE 1241
+#define IDC_UPDATEINPAUSE 1242
+#define IDC_DEBUGSCRIPT 1243
+#define IDC_SELECT_DEBUGSCRIPT 1244
+#define IDC_RESET_DEBUGSCRIPT 1245
+#define IDC_SELECT_JOYSTICKMAP 1246
+#define IDC_RESET_JOYSTICKMAP 1247
+#define IDC_JOYSTICKMAP 1248
+#define IDC_SNAPSIZE 1249
+#define IDC_SNAPSIZEWIDTH 1250
+#define IDC_SNAPSIZEHEIGHT 1251
+#define IDC_SNAPSIZETEXT 1252
+#define IDC_SNAPSIZEX 1253
+#define IDC_FILTER_MECHANICAL 1254
+#define IDC_SPLITTER3 2000
+#define IDC_SWTAB 2001
+#define IDC_SWLIST 2002
+#define IDC_SWDEVVIEW 2003
+#define IDC_FILTER_COMPUTER 2004
+#define IDC_FILTER_CONSOLE 2005
+#define IDC_FILTER_MODIFIED 2006
+#define IDC_RAM_COMBOBOX 2008
+#define IDC_RAM_CAPTION 2009
+#define IDC_SOFTLIST 2010
+#define IDI_WIN_NOROMSNEEDED 2100
+#define IDI_WIN_MISSINGOPTROM 2101
+#define IDI_WIN_FLOP 2102
+#define IDI_WIN_CASS 2103
+#define IDI_WIN_SERL 2104
+#define IDI_WIN_SNAP 2105
+#define IDI_WIN_PRIN 2106
+#define IDI_WIN_HARD 2107
+#define IDI_WIN_CYLN 2110
+#define IDI_WIN_PTAP 2111
+#define IDI_WIN_PCRD 2112
+#define ID_MESS_OPEN_SOFTWARE 2200
+#define IDD_PROP_SOFTWARE 2202
+#define IDD_PROP_CONFIGURATION 2203
+#define ID_CONTEXT_SHOW_FOLDER_START 39000
+#define ID_CONTEXT_SHOW_FOLDER_END 39200
+#define ID_FILE_EXIT 40001
+#define ID_ABOUT 40003
+#define ID_FILE_PLAY 40004
+#define ID_HELP_ABOUT 40006
+#define ID_VIEW_LARGE_ICON 40007
+#define ID_VIEW_SMALL_ICON 40008
+#define ID_VIEW_LIST_MENU 40009
+#define ID_VIEW_DETAIL 40010
+#define ID_VIEW_GROUPED 40011
+#define ID_OPTIONS_FONT 40012
+#define ID_OPTIONS_CLONE_COLOR 40013
+#define ID_OPTIONS_DIR 40014
+#define ID_OPTIONS_DEFAULTS 40015
+#define ID_OPTIONS_RESET_DEFAULTS 40016
+#define ID_OPTIONS_INTERFACE 40017
+#define ID_FILE_AUDIT 40018
+#define ID_FILE_PLAY_RECORD 40019
+#define ID_FILE_PLAY_BACK 40020
+#define ID_FILE_PLAY_RECORD_WAVE 40021
+#define ID_FILE_PLAY_RECORD_MNG 40022
+#define ID_FILE_PLAY_RECORD_AVI 40023
+#define ID_VIEW_PICTURE_AREA 40024
+#define ID_HELP_CONTENTS 40025
+#define ID_HELP_WHATS_NEWUI 40026
+#define ID_HELP_TROUBLE 40027
+#define ID_HELP_RELEASE 40028
+#define ID_HELP_WHATS_NEW 40029
+#define ID_HELP_CHEATS 40030
+#define ID_FILE_AUDIT_X 40031
+#define ID_VIEW_BYGAME 40034
+#define ID_VIEW_BYDIRECTORY 40035
+#define ID_VIEW_BYMANUFACTURER 40036
+#define ID_VIEW_BYYEAR 40037
+#define ID_VIEW_BYTYPE 40038
+#define ID_VIEW_BYTIMESPLAYED 40039
+#define ID_VIEW_LINEUPICONS 40040
+#define ID_UPDATE_GAMELIST 40042
+#define ID_SORT_ASCENDING 40045
+#define ID_SORT_DESCENDING 40046
+#define ID_CUSTOMIZE_FIELDS 40048
+#define ID_GAME_PROPERTIES 40049
+#define ID_VIEW_PAGETAB 40050
+#define ID_VIEW_FOLDERS 40051
+#define ID_VIEW_TOOLBARS 40052
+#define ID_VIEW_STATUS 40053
+#define ID_CONTEXT_FILTERS 40054
+#define ID_CONTEXT_RENAME_CUSTOM 40055
+#define ID_CONTEXT_ADD_CUSTOM 40057
+#define ID_CONTEXT_REMOVE_CUSTOM 40058
+#define ID_GAME_AUDIT 40059
+#define ID_CONTEXT_SELECT_RANDOM 40060
+#define ID_VIEW_TAB_SCREENSHOT 40062
+#define ID_VIEW_TAB_FLYER 40063
+#define ID_VIEW_TAB_CABINET 40064
+#define ID_VIEW_TAB_MARQUEE 40065
+#define ID_VIEW_TAB_TITLE 40066
+#define ID_VIEW_TAB_CONTROL_PANEL 40067
+#define ID_VIEW_TAB_PCB 40068
+#define ID_VIEW_TAB_HISTORY 40069
+#define ID_OPTIONS_BG 40070
+#define ID_TOGGLE_TAB_SCREENSHOT 40071
+#define ID_TOGGLE_TAB_FLYER 40072
+#define ID_TOGGLE_TAB_CABINET 40073
+#define ID_TOGGLE_TAB_MARQUEE 40074
+#define ID_TOGGLE_TAB_TITLE 40075
+#define ID_TOGGLE_TAB_CONTROL_PANEL 40076
+#define ID_TOGGLE_TAB_PCB 40077
+#define ID_TOGGLE_TAB_HISTORY 40078
+#define ID_VIEW_FULLSCREEN 40079
+#define ID_CONTEXT_RESET_PLAYSTATS 40081
+#define ID_FOLDER_PROPERTIES 40082
+#define ID_FOLDER_AUDIT 40083
+#define ID_UI_UP 40084
+#define ID_UI_DOWN 40085
+#define ID_UI_LEFT 40086
+#define ID_UI_RIGHT 40087
+#define ID_UI_START 40088
+#define ID_UI_PGUP 40089
+#define ID_UI_PGDOWN 40090
+#define ID_UI_HOME 40091
+#define ID_UI_END 40092
+#define ID_UI_HISTORY_UP 40093
+#define ID_UI_HISTORY_DOWN 40094
+#define ID_FILE_LOADSTATE 40095
+#define ID_FOLDER_SOURCEPROPERTIES 40096
+#define ID_FOLDER_VECTORPROPERTIES 40097
+#define ID_OPTIONS_MAMEINFO 40100
+#define ID_OPTIONS_HISTORY 40101
+#define ID_VIEW_SOFTWARE_AREA 40102
+#define IDC_STATIC -1
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_3D_CONTROLS 1
+#define _APS_NEXT_RESOURCE_VALUE 192
+#define _APS_NEXT_COMMAND_VALUE 40103
+#define _APS_NEXT_CONTROL_VALUE 1337
+#define _APS_NEXT_SYMED_VALUE 93
+#endif
+#endif
diff --git a/docs/release/src/osd/winui/resource.hm b/docs/release/src/osd/winui/resource.hm
new file mode 100644
index 00000000000..0934c33b73d
--- /dev/null
+++ b/docs/release/src/osd/winui/resource.hm
@@ -0,0 +1,122 @@
+// Microsoft Visual C++ generated Help ID include file.
+// Used by mameui.rc
+//
+#define HIDC_ADSTICK 0x80b904b9 // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_ANTIALIAS 0x809f0405 // IDD_PROP_VECTOR [English (U.S.)]
+#define HIDC_ARTWORK_CROP 0x809e03fa // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_ASPECT 0x80bb04c4 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_ASPECTRATIOD 0x80bb0483 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_ASPECTRATION 0x80bb0482 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_AUDIO_LATENCY 0x809b04a2 // IDD_PROP_SOUND [English (U.S.)]
+#define HIDC_AUTOFRAMESKIP 0x809c0449 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_BACKDROPS 0x809e040a // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_BEAM 0x809f0406 // IDD_PROP_VECTOR [English (U.S.)]
+#define HIDC_BEZELS 0x809e03fd // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_BIOS 0x809e04b1 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_BRIGHTCORRECT 0x809a0400 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_BROADCAST 0x80ad0486 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_CHEAT 0x809e03f8 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_COINLOCKOUT 0x809e04d6 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_CONTRAST 0x809a0402 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_CYCLETIMESEC 0x80ad04a6 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_D3D_FILTER 0x809a04a0 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_D3D_VERSION 0x809a04a3 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_DEBUG 0x80bc04cf // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_DEFAULT_INPUT 0x809d0469 // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_DIAL 0x80b904bb // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_DUAL_LIGHTGUN 0x809d04af // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_ENABLE_AUTOSAVE 0x809e0499 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_FILTER_CLONES 0x80a90455 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_EDIT 0x80a9046d // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_HORIZONTAL 0x80a9049c // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_NONWORKING 0x80a90454 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_ORIGINALS 0x80a9045b // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_RASTER 0x80a90452 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_UNAVAILABLE 0x80a90453 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_VECTOR 0x80a90451 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_VERTICAL 0x80a90460 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_WORKING 0x80a9045c // IDD_FILTERS [English (U.S.)]
+#define HIDC_FILTER_MECHANICAL 0x80a90461 // IDD_FILTERS [English (U.S.)]
+#define HIDC_FLICKER 0x809f0407 // IDD_PROP_VECTOR [English (U.S.)]
+#define HIDC_FLIPX 0x809a0408 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_FLIPY 0x809a0409 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_FRAMESKIP 0x809c03f1 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_FSBRIGHTNESS 0x809c0444 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_FSCONTRAST 0x809c040e // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_FSGAMMA 0x809c0442 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_GAMMA 0x809a03ff // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_HIDE_MOUSE 0x80ad04a1 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_HIGH_PRIORITY 0x809e049f // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_HISTORY 0x806504cb // IDD_MAIN [English (U.S.)]
+#define HIDC_HWSTRETCH 0x809a046c // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_JDZ 0x809d0487 // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_JOYSTICK 0x809d03eb // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_JOY_GUI 0x80ad0485 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_JSAT 0x809d048b // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_KEEPASPECT 0x809a0474 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_LANGUAGECHECK 0x80b204d1 // IDD_LANGUAGE [English (U.S.)]
+#define HIDC_LANGUAGEEDIT 0x80b204d4 // IDD_LANGUAGE [English (U.S.)]
+#define HIDC_LIGHTGUN 0x809d048f // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_LIGHTGUNDEVICE 0x80b904bd // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_LOG 0x80bc03f9 // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_MAXIMIZE 0x809a046e // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_MOUSE 0x80b904be // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_MULTIKEYBOARD 0x809d0429 // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_MULTIMOUSE 0x809d04ce // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_MULTITHREAD_RENDERING 0x809e04c3 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_NUMSCREENS 0x80bb0404 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_OSLOG 0x80bc04d8 // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_OVERLAYS 0x809e03fb // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_PADDLE 0x80b904b8 // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_PAUSEBRIGHT 0x809a049c // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_PEDAL 0x80b904ba // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_POSITIONAL 0x80b904bf // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_PRESCALE 0x809a041f // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_PROP_RESET 0x809c044d // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_RANDOM_BG 0x80ad0492 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_REFRESH 0x80bb047c // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_REFRESHSPEED 0x809c04d0 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_RELOAD 0x809d04ae // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_RESET_DEBUGSCRIPT 0x80bc04dd // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_RESET_DEFAULT 0x80aa04a2 // IDD_RESET [English (U.S.)]
+#define HIDC_RESET_EFFECT 0x809c0459 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_RESET_FILTERS 0x80aa049f // IDD_RESET [English (U.S.)]
+#define HIDC_RESET_GAMES 0x80aa049d // IDD_RESET [English (U.S.)]
+#define HIDC_RESET_JOYSTICKMAP 0x809d04df // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_RESET_UI 0x80aa049e // IDD_RESET [English (U.S.)]
+#define HIDC_ROTATE 0x809a03f2 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_SAMPLERATE 0x809b0403 // IDD_PROP_SOUND [English (U.S.)]
+#define HIDC_SAMPLES 0x809b0461 // IDD_PROP_SOUND [English (U.S.)]
+#define HIDC_SCREEN 0x80bb03f4 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_SCREENSELECT 0x80bb03f7 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_SECONDSTORUN 0x809c040f // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_SELECT_DEBUGSCRIPT 0x80bc04dc // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_SELECT_EFFECT 0x809c04c2 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_SELECT_JOYSTICKMAP 0x809d04de // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_SIZES 0x80bb03ed // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_SKIP_GAME_INFO 0x809e049a // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SLEEP 0x809e03fe // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SNAPNAME 0x80ad04d5 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_SNAPSIZE 0x809e04e1 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SNAPSIZEHEIGHT 0x809e04e3 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SNAPSIZEWIDTH 0x809e04e2 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SNAPVIEW 0x809e04b2 // IDD_PROP_MISC [English (U.S.)]
+#define HIDC_SPEED 0x809c04d2 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_START_GAME_CHECK 0x80ad0460 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_STEADYKEY 0x809d0480 // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_STRETCH_SCREENSHOT_LARGER 0x80ad04a8 // IDD_INTERFACE_OPTIONS [English (U.S.)]
+#define HIDC_SWITCHRES 0x80bb046d // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_SYNCREFRESH 0x809c0476 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_THROTTLE 0x809a0478 // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_TRACKBALL 0x80b904bc // IDD_PROP_CONTROLLER [English (U.S.)]
+#define HIDC_TRIPLE_BUFFER 0x809c0467 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_UPDATEINPAUSE 0x80bc04da // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_USE_DEFAULT 0x809c0401 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_USE_MOUSE 0x809d0477 // IDD_PROP_INPUT [English (U.S.)]
+#define HIDC_USE_SOUND 0x809b046d // IDD_PROP_SOUND [English (U.S.)]
+#define HIDC_VERBOSE 0x80bc04d9 // IDD_PROP_DEBUG [English (U.S.)]
+#define HIDC_VIDEO_MODE 0x809a04ca // IDD_PROP_DISPLAY [English (U.S.)]
+#define HIDC_VIEW 0x80bb03f6 // IDD_PROP_SCREEN [English (U.S.)]
+#define HIDC_VOLUME 0x809b045d // IDD_PROP_SOUND [English (U.S.)]
+#define HIDC_WAITVSYNC 0x809c0471 // IDD_PROP_ADVANCED [English (U.S.)]
+#define HIDC_WINDOWED 0x809a0497 // IDD_PROP_DISPLAY [English (U.S.)]
diff --git a/docs/release/src/osd/winui/screenshot.cpp b/docs/release/src/osd/winui/screenshot.cpp
new file mode 100644
index 00000000000..c85f712007b
--- /dev/null
+++ b/docs/release/src/osd/winui/screenshot.cpp
@@ -0,0 +1,663 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/***************************************************************************
+
+ Screenshot.c
+
+ Win32 DIB handling.
+
+ Created 7/1/98 by Mike Haaland (mhaaland@hypertech.com)
+
+ 0.145u5
+ - Cleaned out unused code.
+ - If Software tab is chosen, software-specific pictures can be displayed.
+ - Background picture must be PNG, and can be chosen from anywhere, but
+ must be uncompressed (not in a zip file).
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "png.h"
+#include "unzip.h"
+#include "mui_opts.h"
+#include "mui_util.h"
+#include "winui.h"
+#include "drivenum.h"
+
+/***************************************************************************
+ Static global variables
+***************************************************************************/
+
+/* these refer to the single image currently loaded by the ScreenShot functions */
+static HGLOBAL m_hDIB = nullptr;
+static HPALETTE m_hPal = nullptr;
+static HANDLE m_hDDB = nullptr;
+
+/* PNG variables */
+
+static int copy_size = 0;
+static char* pixel_ptr = nullptr;
+static int row = 0;
+static int effWidth;
+static BOOL LoadDIB(const char *filename, HGLOBAL *phDIB, HPALETTE *pPal, int pic_type);
+
+/***************************************************************************
+ Functions
+***************************************************************************/
+
+BOOL ScreenShotLoaded(void)
+{
+ return m_hDDB != NULL;
+}
+
+static BOOL LoadSoftwareScreenShot(const game_driver *drv, LPCSTR lpSoftwareName, int nType)
+{
+ BOOL result;
+ char *s = (char*)alloca(strlen(drv->name) + 1 + strlen(lpSoftwareName) + 5);
+ sprintf(s, "%s", lpSoftwareName);
+ // oldest code --> sprintf(s, "%s/%s.png", drv->name, lpSoftwareName);
+ //sprintf(s, "%s:%s", drv->name, lpSoftwareName);
+ result = LoadDIB(s, &m_hDIB, &m_hPal, nType);
+ return result;
+}
+
+/* Allow us to pre-load the DIB once for future draws */
+BOOL LoadScreenShotEx(int nGame, LPCSTR lpSoftwareName, int nType)
+{
+ BOOL loaded = FALSE;
+
+ /* Delete the last ones */
+ FreeScreenShot();
+
+ /* Load the DIB */
+
+ if (lpSoftwareName)
+ {
+ int nParentIndex = -1;
+ loaded = LoadSoftwareScreenShot(&driver_list::driver(nGame), lpSoftwareName, nType);
+ if (!loaded && DriverIsClone(nGame) == TRUE)
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(nGame));
+ loaded = LoadSoftwareScreenShot(&driver_list::driver(nParentIndex), lpSoftwareName, nType);
+ }
+ }
+
+ if (!loaded)
+ loaded = LoadDIB(driver_list::driver(nGame).name, &m_hDIB, &m_hPal, nType);
+
+ /* If not loaded, see if there is a clone and try that */
+ if (!loaded)
+ {
+ int nParentIndex = GetParentIndex(&driver_list::driver(nGame));
+ if( nParentIndex >= 0)
+ {
+ loaded = LoadDIB(driver_list::driver(nParentIndex).name, &m_hDIB, &m_hPal, nType);
+ nParentIndex = GetParentIndex(&driver_list::driver(nParentIndex));
+ if (!loaded && nParentIndex >= 0)
+ loaded = LoadDIB(driver_list::driver(nParentIndex).name, &m_hDIB, &m_hPal, nType);
+ }
+ }
+
+ if (loaded)
+ {
+ HDC hdc = GetDC(GetMainWindow());
+ m_hDDB = DIBToDDB(hdc, m_hDIB, NULL);
+ ReleaseDC(GetMainWindow(),hdc);
+ }
+
+ return (loaded) ? TRUE : FALSE;
+}
+
+HANDLE GetScreenShotHandle()
+{
+ return m_hDDB;
+}
+
+int GetScreenShotWidth(void)
+{
+ return ((LPBITMAPINFO)m_hDIB)->bmiHeader.biWidth;
+}
+
+int GetScreenShotHeight(void)
+{
+ return ((LPBITMAPINFO)m_hDIB)->bmiHeader.biHeight;
+}
+
+/* Delete the HPALETTE and Free the HDIB memory */
+void FreeScreenShot(void)
+{
+ if (m_hDIB != NULL)
+ GlobalFree(m_hDIB);
+ m_hDIB = NULL;
+
+ if (m_hPal != NULL)
+ DeletePalette(m_hPal);
+ m_hPal = NULL;
+
+ if (m_hDDB != NULL)
+ DeleteObject(m_hDDB);
+ m_hDDB = NULL;
+
+ ///current_image_game = -1;
+ ///current_image_type = -1;
+}
+
+/***************************************************************************
+ PNG graphics handling functions
+***************************************************************************/
+
+BOOL AllocatePNG(png_info *p, HGLOBAL *phDIB, HPALETTE *pPal)
+{
+ int dibSize;
+ HGLOBAL hDIB;
+ BITMAPINFOHEADER bi;
+ LPBITMAPINFOHEADER lpbi;
+ LPBITMAPINFO bmInfo;
+ LPVOID lpDIBBits = 0;
+ int lineWidth = 0;
+ int nColors = 0;
+ RGBQUAD* pRgb;
+ copy_size = 0;
+ pixel_ptr = 0;
+ row = p->height - 1;
+ lineWidth = p->width;
+
+ if (p->color_type != 2 && p->num_palette <= 256)
+ nColors = p->num_palette;
+
+ bi.biSize = sizeof(BITMAPINFOHEADER);
+ bi.biWidth = p->width;
+ bi.biHeight = p->height;
+ bi.biPlanes = 1;
+ bi.biBitCount = (p->color_type == 3) ? 8 : 24; /* bit_depth; */
+
+ bi.biCompression = BI_RGB;
+ bi.biSizeImage = 0;
+ bi.biXPelsPerMeter = 0;
+ bi.biYPelsPerMeter = 0;
+ bi.biClrUsed = nColors;
+ bi.biClrImportant = nColors;
+
+ effWidth = (long)(((long)lineWidth*bi.biBitCount + 31) / 32) * 4;
+
+ dibSize = (effWidth * bi.biHeight);
+ hDIB = GlobalAlloc(GMEM_FIXED, bi.biSize + (nColors * sizeof(RGBQUAD)) + dibSize);
+
+ if (!hDIB)
+ return FALSE;
+
+ lpbi = (LPBITMAPINFOHEADER)hDIB;
+ memcpy(lpbi, &bi, sizeof(BITMAPINFOHEADER));
+ pRgb = (RGBQUAD*)((LPSTR)lpbi + bi.biSize);
+ lpDIBBits = (LPVOID)((LPSTR)lpbi + bi.biSize + (nColors * sizeof(RGBQUAD)));
+ if (nColors)
+ {
+ int i;
+ /* Convert a PNG palette (3 byte RGBTRIPLEs) to a new color table (4 byte RGBQUADs) */
+ for (i = 0; i < nColors; i++)
+ {
+ RGBQUAD rgb;
+
+ rgb.rgbRed = p->palette[i * 3 + 0];
+ rgb.rgbGreen = p->palette[i * 3 + 1];
+ rgb.rgbBlue = p->palette[i * 3 + 2];
+ rgb.rgbReserved = (BYTE)0;
+
+ pRgb[i] = rgb;
+ }
+ }
+
+ bmInfo = (LPBITMAPINFO)hDIB;
+
+ /* Create a halftone palette if colors > 256. */
+ if (0 == nColors || nColors > 256)
+ {
+ HDC hDC = CreateCompatibleDC(0); /* Desktop DC */
+ *pPal = CreateHalftonePalette(hDC);
+ DeleteDC(hDC);
+ }
+ else
+ {
+ UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * nColors);
+ LOGPALETTE *pLP = (LOGPALETTE *)malloc(nSize);
+ int i;
+
+ pLP->palVersion = 0x300;
+ pLP->palNumEntries = nColors;
+
+ for (i = 0; i < nColors; i++)
+ {
+ pLP->palPalEntry[i].peRed = bmInfo->bmiColors[i].rgbRed;
+ pLP->palPalEntry[i].peGreen = bmInfo->bmiColors[i].rgbGreen;
+ pLP->palPalEntry[i].peBlue = bmInfo->bmiColors[i].rgbBlue;
+ pLP->palPalEntry[i].peFlags = 0;
+ }
+
+ *pPal = CreatePalette(pLP);
+
+ free (pLP);
+ }
+
+ copy_size = dibSize;
+ pixel_ptr = (char*)lpDIBBits;
+ *phDIB = hDIB;
+ return TRUE;
+}
+
+inline void store_pixels(UINT8 *buf, int len)
+{
+ if (pixel_ptr && copy_size)
+ {
+ memcpy(&pixel_ptr[row * effWidth], buf, len);
+ row--;
+ copy_size -= len;
+ }
+}
+
+
+/* Copied and modified from png.c
+ logerror doesn't work here... changed to printf */
+static int png_read_bitmap_gui(util::core_file &mfile, HGLOBAL *phDIB, HPALETTE *pPAL)
+{
+ png_info p;
+ UINT32 i;
+ int bytespp;
+
+ if (png_read_file(mfile, &p) != PNGERR_NONE)
+ return 0;
+
+ if (p.color_type != 3 && p.color_type != 2)
+ {
+ printf("PNG Unsupported color type %i (has to be 2 or 3)\n", p.color_type);
+ //png_free(&p);
+ //return 0; Leave in so ppl can see incompatibility
+ }
+
+ if (p.interlace_method != 0)
+ {
+ printf("PNG Interlace unsupported\n");
+ png_free(&p);
+ return 0;
+ }
+
+ /* Convert < 8 bit to 8 bit */
+ png_expand_buffer_8bit(&p);
+
+ if (!AllocatePNG(&p, phDIB, pPAL))
+ {
+ printf("PNG Unable to allocate memory to display screenshot\n");
+ png_free(&p);
+ return 0;
+ }
+
+ bytespp = (p.color_type == 2) ? 3 : 1;
+
+ for (i = 0; i < p.height; i++)
+ {
+ UINT8 *ptr = p.image + i * (p.width * bytespp);
+
+ if (p.color_type == 2) /*(p->bit_depth > 8) */
+ {
+ int j;
+ UINT8 bTmp;
+
+ for (j = 0; j < p.width; j++)
+ {
+ bTmp = ptr[0];
+ ptr[0] = ptr[2];
+ ptr[2] = bTmp;
+ ptr += 3;
+ }
+ }
+ store_pixels(p.image + i * (p.width * bytespp), p.width * bytespp);
+ }
+
+ png_free(&p);
+
+ return 1;
+}
+
+
+
+/***************************************************************************
+ File search functions
+***************************************************************************/
+
+static osd_file::error OpenBkgroundFile(const char *filename, util::core_file::ptr &file)
+{
+ osd_file::error filerr;
+
+ // clear out result
+ file = NULL;
+
+ // look for the raw file
+ std::string fname (filename);
+ filerr = util::core_file::open(fname.c_str(), OPEN_FLAG_READ, file);
+
+ return filerr;
+}
+
+static osd_file::error OpenRawDIBFile(const char *dir_name, const char *filename, util::core_file::ptr &file)
+{
+ osd_file::error filerr;
+
+ // clear out result
+ file = NULL;
+
+ // look for the raw file
+ std::string fname = std::string(dir_name) + PATH_SEPARATOR + std::string(filename);
+ filerr = util::core_file::open(fname.c_str(), OPEN_FLAG_READ, file);
+
+ return filerr;
+}
+
+static osd_file::error OpenZipDIBFile(const char *dir_name, const char *zip_name, const char *filename, util::core_file::ptr &file, void **buffer)
+{
+ osd_file::error filerr = osd_file::error::NOT_FOUND;
+ util::archive_file::error ziperr;
+ util::archive_file::ptr zip;
+
+ // clear out result
+ file = NULL;
+
+ // look into zip file
+ std::string fname = std::string(dir_name) + PATH_SEPARATOR + std::string(zip_name) + ".zip";
+ ziperr = util::archive_file::open_zip(fname, zip);
+
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ int res = zip->search(filename, false);
+ if (res >= 0)
+ {
+ *buffer = malloc(zip->current_uncompressed_length());
+ ziperr = zip->decompress(*buffer, zip->current_uncompressed_length());
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ filerr = util::core_file::open_ram(*buffer, zip->current_uncompressed_length(), OPEN_FLAG_READ, file);
+ }
+ }
+ zip.reset();
+ }
+ else
+ {
+ fname = std::string(dir_name) + PATH_SEPARATOR + std::string(zip_name) + ".7z";
+ ziperr = util::archive_file::open_7z(fname, zip);
+
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ int res = zip->search(filename, false);
+ if (res >= 0)
+ {
+ *buffer = malloc(zip->current_uncompressed_length());
+ ziperr = zip->decompress(*buffer, zip->current_uncompressed_length());
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ filerr = util::core_file::open_ram(*buffer, zip->current_uncompressed_length(), OPEN_FLAG_READ, file);
+ }
+ }
+ zip.reset();
+ }
+ }
+ return filerr;
+}
+
+// called from winui.c to display the background
+BOOL LoadDIBBG(HGLOBAL *phDIB, HPALETTE *pPal)
+{
+ osd_file::error filerr = osd_file::error::NOT_FOUND;
+ util::core_file::ptr file = NULL;
+ BOOL success = FALSE;
+ const char *dir_name;
+ if (pPal != NULL )
+ DeletePalette(pPal);
+
+ dir_name = GetBgDir();
+ filerr = OpenBkgroundFile(dir_name, file);
+ if (filerr == osd_file::error::NONE)
+ {
+ success = png_read_bitmap_gui(*file, phDIB, pPal);
+ file.reset();
+ }
+
+ return success;
+}
+
+// display a snap, cabinet, title, flyer, marquee, pcb, control panel
+static BOOL LoadDIB(const char *filename, HGLOBAL *phDIB, HPALETTE *pPal, int pic_type)
+{
+ osd_file::error filerr = osd_file::error::NOT_FOUND; // defined in osdcore.h
+ util::core_file::ptr file = NULL;
+ BOOL success = FALSE;
+ const char *dir_name;
+ const char *zip_name;
+ void *buffer = NULL;
+ std::string fname;
+ if (pPal != NULL )
+ DeletePalette(pPal);
+
+ char *system_name = 0;
+ char *file_name = 0;
+ char* dir_name1 = 0;
+ int i,j;
+ bool ok = FALSE; // TRUE indicates split success
+
+ switch (pic_type)
+ {
+ case TAB_SCREENSHOT:
+ dir_name = GetImgDir();
+ zip_name = "snap";
+ break;
+ case TAB_FLYER:
+ dir_name = GetFlyerDir();
+ zip_name = "flyers";
+ break;
+ case TAB_CABINET:
+ dir_name = GetCabinetDir();
+ zip_name = "cabinets";
+ break;
+ case TAB_MARQUEE:
+ dir_name = GetMarqueeDir();
+ zip_name = "marquees";
+ break;
+ case TAB_TITLE:
+ dir_name = GetTitlesDir();
+ zip_name = "titles";
+ break;
+ case TAB_CONTROL_PANEL:
+ dir_name = GetControlPanelDir();
+ zip_name = "cpanel";
+ break;
+ case TAB_PCB :
+ dir_name = GetPcbDir();
+ zip_name = "pcb";
+ break;
+ default :
+ // in case a non-image tab gets here, which can happen
+ return FALSE;
+ }
+
+ // allocate space
+ system_name = (char*)malloc(strlen(filename) + 1);
+ file_name = (char*)malloc(strlen(filename) + 1);
+
+ // if the filename contains a system, split them
+
+ // get system = find colon and truncate there
+ for (i = 0; filename[i] && !ok; i++)
+ {
+ if (filename[i] != ':')
+ system_name[i] = filename[i];
+ else
+ {
+ ok = TRUE;
+ system_name[i] = '\0';
+ }
+ }
+ system_name[i] = '\0'; // 'i' is one more here than above but needed if no colon
+
+ // now left-justify the filename
+ if (ok)
+ {
+ for (j = 0; filename[i]; j++,i++)
+ file_name[j] = filename[i];
+ file_name[j] = '\0';
+ }
+ else
+ // it wasn't a software title, copy over to get around const nonsense
+ {
+ for (i = 0; filename[i]; i++)
+ file_name[i] = filename[i];
+ file_name[i] = '\0';
+ }
+
+ // another const workaround
+ dir_name1 = (char*)malloc(strlen(dir_name) + 2);
+ for (i = 0; dir_name[i]; i++)
+ dir_name1[i] = dir_name[i];
+ dir_name1[i++] = ';';
+ dir_name1[i] = '\0';
+
+ // Support multiple paths
+ char* dir_one = strtok(dir_name1, ";");
+
+ while (dir_one && filerr != osd_file::error::NONE)
+ {
+ //Add handling for the displaying of all the different supported snapshot pattern types
+ //%g
+
+ // Do software checks first
+ if (ok)
+ {
+ // Try dir/system/game.png
+ fname = std::string(system_name) + PATH_SEPARATOR + std::string(file_name) + ".png";
+ filerr = OpenRawDIBFile(dir_one, fname.c_str(), file);
+
+ // Try dir/system.zip/game.png
+ if (filerr != osd_file::error::NONE)
+ {
+ fname = std::string(file_name) + ".png";
+ filerr = OpenZipDIBFile(dir_one, system_name, fname.c_str(), file, &buffer);
+ }
+
+ // Try dir/system.zip/system/game.png
+ if (filerr != osd_file::error::NONE)
+ {
+ fname = std::string(system_name) + "/" + std::string(file_name) + ".png";
+ filerr = OpenZipDIBFile(dir_one, system_name, fname.c_str(), file, &buffer);
+ }
+
+ // Try dir/zipfile/system/game.png
+ if (filerr != osd_file::error::NONE)
+ {
+ filerr = OpenZipDIBFile(dir_one, zip_name, fname.c_str(), file, &buffer);
+ }
+ }
+
+ // give up on software-specific, try dir/system.png
+ if (filerr != osd_file::error::NONE)
+ {
+ fname = std::string(system_name) + ".png";
+ filerr = OpenRawDIBFile(dir_one, fname.c_str(), file);
+ }
+
+ // For SNAPS only, try filenames with 0000.
+ if (pic_type == TAB_SCREENSHOT)
+ {
+ if (filerr != osd_file::error::NONE)
+ {
+ //%g/%i
+ fname = std::string(system_name) + PATH_SEPARATOR + "0000.png";
+ filerr = OpenRawDIBFile(dir_one, fname.c_str(), file);
+ }
+ if (filerr != osd_file::error::NONE)
+ {
+ //%g%i
+ fname = std::string(system_name) + "0000.png";
+ filerr = OpenRawDIBFile(dir_one, fname.c_str(), file);
+ }
+ if (filerr != osd_file::error::NONE)
+ {
+ //%g/%g%i
+ fname = std::string(system_name) + PATH_SEPARATOR + std::string(system_name) + "0000.png";
+ filerr = OpenRawDIBFile(dir_one, fname.c_str(), file);
+ }
+ }
+
+ // Try dir/zipfile/system.png
+ if (filerr != osd_file::error::NONE)
+ {
+ fname = std::string(file_name) + ".png";
+ filerr = OpenZipDIBFile(dir_one, zip_name, fname.c_str(), file, &buffer);
+ }
+
+ dir_one = strtok(NULL, ";");
+ }
+
+ if (filerr == osd_file::error::NONE)
+ {
+ success = png_read_bitmap_gui(*file, phDIB, pPal);
+ file.reset();
+ }
+
+ // free the buffer if we have to
+ if (buffer != NULL)
+ free(buffer);
+ free(system_name);
+ free(file_name);
+ free(dir_name1);
+
+ return success;
+}
+
+HBITMAP DIBToDDB(HDC hDC, HANDLE hDIB, LPMYBITMAPINFO desc)
+{
+ LPBITMAPINFOHEADER lpbi;
+ HBITMAP hBM;
+ int nColors;
+ BITMAPINFO * bmInfo = (LPBITMAPINFO)hDIB;
+ LPVOID lpDIBBits;
+
+ if (hDIB == NULL)
+ return NULL;
+
+ lpbi = (LPBITMAPINFOHEADER)hDIB;
+ nColors = lpbi->biClrUsed ? lpbi->biClrUsed : 1 << lpbi->biBitCount;
+
+ if (bmInfo->bmiHeader.biBitCount > 8)
+ lpDIBBits = (LPVOID)((LPDWORD)(bmInfo->bmiColors +
+ bmInfo->bmiHeader.biClrUsed) +
+ ((bmInfo->bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
+ else
+ lpDIBBits = (LPVOID)(bmInfo->bmiColors + nColors);
+
+ if (desc != 0)
+ {
+ /* Store for easy retrieval later */
+ desc->bmWidth = bmInfo->bmiHeader.biWidth;
+ desc->bmHeight = bmInfo->bmiHeader.biHeight;
+ desc->bmColors = (nColors <= 256) ? nColors : 0;
+ }
+
+ hBM = CreateDIBitmap(hDC, /* handle to device context */
+ (LPBITMAPINFOHEADER)lpbi, /* pointer to bitmap info header */
+ (LONG)CBM_INIT, /* initialization flag */
+ lpDIBBits, /* pointer to initialization data */
+ (LPBITMAPINFO)lpbi, /* pointer to bitmap info */
+ DIB_RGB_COLORS); /* color-data usage */
+
+ return hBM;
+}
+
+BOOL LoadScreenShot(int nGame, int nType)
+{
+ return LoadScreenShotEx(nGame, NULL, nType);
+}
+
+/* End of source */
diff --git a/docs/release/src/osd/winui/screenshot.h b/docs/release/src/osd/winui/screenshot.h
new file mode 100644
index 00000000000..ac7103034fe
--- /dev/null
+++ b/docs/release/src/osd/winui/screenshot.h
@@ -0,0 +1,26 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef SCREENSHOT_H
+#define SCREENSHOT_H
+
+typedef struct _mybitmapinfo
+{
+ int bmWidth;
+ int bmHeight;
+ int bmColors;
+} MYBITMAPINFO, *LPMYBITMAPINFO;
+
+extern BOOL LoadScreenShotEx(int nGame, LPCSTR lpSoftwareName, int nType);
+extern BOOL LoadScreenShot(int nGame, int nType);
+extern HANDLE GetScreenShotHandle(void);
+extern int GetScreenShotWidth(void);
+extern int GetScreenShotHeight(void);
+
+extern void FreeScreenShot(void);
+extern BOOL ScreenShotLoaded(void);
+
+extern BOOL LoadDIBBG(HGLOBAL *phDIB, HPALETTE *pPal);
+extern HBITMAP DIBToDDB(HDC hDC, HANDLE hDIB, LPMYBITMAPINFO desc);
+
+#endif
diff --git a/docs/release/src/osd/winui/splitters.cpp b/docs/release/src/osd/winui/splitters.cpp
new file mode 100644
index 00000000000..ce934a14731
--- /dev/null
+++ b/docs/release/src/osd/winui/splitters.cpp
@@ -0,0 +1,379 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+ /***************************************************************************
+
+ splitters.c
+
+ Splitter GUI code. - Tree, splitter, list, splitter, pict
+
+ Created 12/03/98 (C) by Mike Haaland (mhaaland@hypertech.com)
+
+***************************************************************************/
+
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+
+// MAME/MAMEUI headers
+#include "splitters.h"
+#include "mui_opts.h"
+
+/* Local Variables */
+static BOOL bTracking = 0;
+static int numSplitters = 0;
+static int currentSplitter = 0;
+static HZSPLITTER *splitter;
+static LPHZSPLITTER lpCurSpltr = 0;
+static HCURSOR hSplitterCursor = 0;
+
+int *nSplitterOffset;
+
+BOOL InitSplitters(void)
+{
+ /* load the cursor for the splitter */
+ hSplitterCursor = LoadCursor(GetModuleHandle(0), MAKEINTRESOURCE(IDC_CURSOR_HSPLIT));
+
+ int nSplitterCount = GetSplitterCount();
+
+ splitter = (HZSPLITTER*)malloc(sizeof(HZSPLITTER) * nSplitterCount);
+ if (!splitter)
+ goto error;
+ memset(splitter, 0, sizeof(HZSPLITTER) * nSplitterCount);
+
+ nSplitterOffset = (int*)malloc(sizeof(int) * nSplitterCount);
+ if (!nSplitterOffset)
+ goto error;
+ memset(nSplitterOffset, 0, sizeof(int) * nSplitterCount);
+
+ return TRUE;
+
+error:
+ SplittersExit();
+ return FALSE;
+}
+
+void SplittersExit(void)
+{
+ if (splitter)
+ {
+ free(splitter);
+ splitter = NULL;
+ }
+ if (nSplitterOffset)
+ {
+ free(nSplitterOffset);
+ nSplitterOffset = NULL;
+ }
+}
+
+
+/* Called with hWnd = Parent Window */
+static void CalcSplitter(HWND hWnd, LPHZSPLITTER lpSplitter)
+{
+ POINT p = {0,0};
+ RECT leftRect, rightRect;
+ int dragWidth;
+
+ ClientToScreen(hWnd, &p);
+
+ GetWindowRect(lpSplitter->m_hWnd, &lpSplitter->m_dragRect);
+ GetWindowRect(lpSplitter->m_hWndLeft, &leftRect);
+ GetWindowRect(lpSplitter->m_hWndRight, &rightRect);
+
+ OffsetRect(&lpSplitter->m_dragRect, -p.x, -p.y);
+ OffsetRect(&leftRect, -p.x, -p.y);
+ OffsetRect(&rightRect, -p.x, -p.y);
+
+ dragWidth = lpSplitter->m_dragRect.right - lpSplitter->m_dragRect.left;
+
+ lpSplitter->m_limitRect.left = leftRect.left + 20;
+ lpSplitter->m_limitRect.right = rightRect.right - 20;
+ lpSplitter->m_limitRect.top = lpSplitter->m_dragRect.top;
+ lpSplitter->m_limitRect.bottom = lpSplitter->m_dragRect.bottom;
+ if (lpSplitter->m_func)
+ lpSplitter->m_func(hWnd, &lpSplitter->m_limitRect);
+
+ if (lpSplitter->m_dragRect.left < lpSplitter->m_limitRect.left)
+ lpSplitter->m_dragRect.left = lpSplitter->m_limitRect.left;
+
+ if (lpSplitter->m_dragRect.right > lpSplitter->m_limitRect.right)
+ lpSplitter->m_dragRect.left = lpSplitter->m_limitRect.right - dragWidth;
+
+ lpSplitter->m_dragRect.right = lpSplitter->m_dragRect.left + dragWidth;
+}
+
+void AdjustSplitter2Rect(HWND hWnd, LPRECT lpRect)
+{
+ RECT pRect;
+
+ GetClientRect(hWnd, &pRect);
+
+ if (lpRect->right > pRect.right)
+ lpRect->right = pRect.right;
+
+ lpRect->right = MIN(lpRect->right - GetMinimumScreenShotWindowWidth(), lpRect->right);
+
+ lpRect->left = MAX((pRect.right - (pRect.right - pRect.left)) / 2, lpRect->left);
+}
+
+void AdjustSplitter1Rect(HWND hWnd, LPRECT lpRect)
+{
+}
+
+void RecalcSplitters(void)
+{
+ int i;
+
+ for (i = 0; i < numSplitters; i++)
+ {
+ CalcSplitter(GetParent(splitter[i].m_hWnd), &splitter[i]);
+ nSplitterOffset[i] = splitter[i].m_dragRect.left;
+ }
+
+ for (i = numSplitters - 1; i >= 0; i--)
+ {
+ CalcSplitter(GetParent(splitter[i].m_hWnd), &splitter[i]);
+ nSplitterOffset[i] = splitter[i].m_dragRect.left;
+ }
+
+}
+
+void OnSizeSplitter(HWND hWnd)
+{
+ static bool firstTime = true;
+ bool changed = false;
+ RECT rWindowRect;
+ POINT p = {0,0};
+ int i;
+ int nSplitterCount;
+
+ nSplitterCount = GetSplitterCount();
+
+ if (firstTime)
+ {
+ for (i = 0; i < nSplitterCount; i++)
+ nSplitterOffset[i] = GetSplitterPos(i);
+ changed = true;
+ firstTime = false;
+ }
+
+ GetWindowRect(hWnd, &rWindowRect);
+
+ for (i = 0; i < nSplitterCount; i++)
+ {
+ p.x = 0;
+ p.y = 0;
+ ClientToScreen(splitter[i].m_hWnd, &p);
+
+ /* We must change if our window is not in the window rect */
+ bool bMustChange = !PtInRect(&rWindowRect, p);
+
+ /* We should also change if we are ahead the next splitter */
+ if ((i < nSplitterCount-1) && (nSplitterOffset[i] >= nSplitterOffset[i+1]))
+ bMustChange = true;
+
+ /* ...or if we are behind the previous splitter */
+ if ((i > 0) && (nSplitterOffset[i] <= nSplitterOffset[i-1]))
+ bMustChange = true;
+#ifdef MESS
+ if ((i==1)&&(!GetShowSoftware()))
+ bMustChange = false;
+ if ((i==2)&&(!GetShowScreenShot()))
+ bMustChange = false;
+#endif
+ if (bMustChange)
+ {
+ nSplitterOffset[i] = (rWindowRect.right - rWindowRect.left) * g_splitterInfo[i].dPosition;
+ changed = true;
+ }
+ }
+
+ if (changed)
+ {
+ ResizePickerControls(hWnd);
+ RecalcSplitters();
+ //UpdateScreenShot();
+ }
+}
+
+void AddSplitter(HWND hWnd, HWND hWndLeft, HWND hWndRight, void (*func)(HWND hWnd,LPRECT lpRect))
+{
+ LPHZSPLITTER lpSpltr = &splitter[numSplitters];
+
+ if (numSplitters >= GetSplitterCount())
+ return;
+
+ lpSpltr->m_hWnd = hWnd;
+ lpSpltr->m_hWndLeft = hWndLeft;
+ lpSpltr->m_hWndRight = hWndRight;
+ lpSpltr->m_func = func;
+ CalcSplitter(GetParent(hWnd), lpSpltr);
+
+ numSplitters++;
+}
+
+static void OnInvertTracker(HWND hWnd, const RECT *rect)
+{
+ HDC hDC = GetDC(hWnd);
+ HBRUSH hBrush = CreateSolidBrush(RGB(0xFF, 0xFF, 0xFF));
+ HBRUSH hOldBrush = 0;
+
+ if (hBrush != 0)
+ hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);
+ PatBlt(hDC, rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top, DSTINVERT);
+ if (hOldBrush != 0)
+ SelectObject(hDC, hOldBrush);
+ ReleaseDC(hWnd, hDC);
+ DeleteBrush(hBrush);
+}
+
+static void StartTracking(HWND hWnd, UINT hitArea)
+{
+ if (!bTracking && lpCurSpltr != 0 && hitArea == SPLITTER_HITITEM)
+ {
+ // Ensure we have and updated cursor structure
+ CalcSplitter(hWnd, lpCurSpltr);
+ // Draw the first splitter shadow
+ OnInvertTracker(hWnd, &lpCurSpltr->m_dragRect);
+ // Capture the mouse
+ SetCapture(hWnd);
+ // Set tracking to TRUE
+ bTracking = TRUE;
+ SetCursor(hSplitterCursor);
+ }
+}
+
+static void StopTracking(HWND hWnd)
+{
+ if (bTracking)
+ {
+ // erase the tracking image
+ OnInvertTracker(hWnd, &lpCurSpltr->m_dragRect);
+ // Release the mouse
+ ReleaseCapture();
+ // set tracking to false
+ bTracking = FALSE;
+ SetCursor(LoadCursor(0, IDC_ARROW));
+ // set the new splitter position
+ nSplitterOffset[currentSplitter] = lpCurSpltr->m_dragRect.left;
+ // Redraw the screen area
+ ResizePickerControls(hWnd);
+ UpdateScreenShot();
+ InvalidateRect(GetMainWindow(),NULL,TRUE);
+ }
+}
+
+static UINT SplitterHitTest(HWND hWnd, POINTS p)
+{
+ RECT rect;
+ POINT pt;
+ int i;
+
+ pt.x = p.x;
+ pt.y = p.y;
+
+ // Check which area we hit
+ ClientToScreen(hWnd, &pt);
+
+ for (i = 0; i < numSplitters; i++)
+ {
+ GetWindowRect(splitter[i].m_hWnd, &rect);
+ if (PtInRect(&rect, pt))
+ {
+ lpCurSpltr = &splitter[i];
+ currentSplitter = i;
+ // We hit the splitter
+ return SPLITTER_HITITEM;
+ }
+ }
+ lpCurSpltr = 0;
+ // We missed the splitter
+ return SPLITTER_HITNOTHING;
+}
+
+void OnMouseMove(HWND hWnd, UINT nFlags, POINTS p)
+{
+ if (bTracking) // move the tracking image
+ {
+ int nWidth;
+ RECT rect;
+ POINT pt;
+
+ pt.x = (int)p.x;
+ pt.y = (int)p.y;
+
+ ClientToScreen(hWnd, &pt);
+ GetWindowRect(hWnd, &rect);
+ if (! PtInRect(&rect, pt))
+ {
+ if ((short)pt.x < (short)rect.left)
+ pt.x = rect.left;
+ if ((short)pt.x > (short)rect.right)
+ pt.x = rect.right;
+ pt.y = rect.top + 1;
+ }
+
+ ScreenToClient(hWnd, &pt);
+
+ // Erase the old tracking image
+ OnInvertTracker(hWnd, &lpCurSpltr->m_dragRect);
+
+ // calc the new one based on p.x draw it
+ nWidth = lpCurSpltr->m_dragRect.right - lpCurSpltr->m_dragRect.left;
+ lpCurSpltr->m_dragRect.right = pt.x + nWidth / 2;
+ lpCurSpltr->m_dragRect.left = pt.x - nWidth / 2;
+
+ if (pt.x - nWidth / 2 > lpCurSpltr->m_limitRect.right)
+ {
+ lpCurSpltr->m_dragRect.right = lpCurSpltr->m_limitRect.right;
+ lpCurSpltr->m_dragRect.left = lpCurSpltr->m_dragRect.right - nWidth;
+ }
+ if (pt.x + nWidth / 2 < lpCurSpltr->m_limitRect.left)
+ {
+ lpCurSpltr->m_dragRect.left = lpCurSpltr->m_limitRect.left;
+ lpCurSpltr->m_dragRect.right = lpCurSpltr->m_dragRect.left + nWidth;
+ }
+ OnInvertTracker(hWnd, &lpCurSpltr->m_dragRect);
+ }
+ else
+ {
+ switch(SplitterHitTest(hWnd, p))
+ {
+ case SPLITTER_HITNOTHING:
+ SetCursor(LoadCursor(0, IDC_ARROW));
+ break;
+ case SPLITTER_HITITEM:
+ SetCursor(hSplitterCursor);
+ break;
+ }
+ }
+}
+
+void OnLButtonDown(HWND hWnd, UINT nFlags, POINTS p)
+{
+ if (!bTracking) // See if we need to start a splitter drag
+ {
+ StartTracking(hWnd, SplitterHitTest(hWnd, p));
+ }
+}
+
+void OnLButtonUp(HWND hWnd, UINT nFlags, POINTS p)
+{
+ if (bTracking)
+ {
+ StopTracking(hWnd);
+ }
+}
+
+int GetSplitterCount(void)
+{
+ int nSplitterCount = 0;
+ while(g_splitterInfo[nSplitterCount].dPosition > 0)
+ nSplitterCount++;
+ return nSplitterCount;
+}
+
+/* End of file */
diff --git a/docs/release/src/osd/winui/splitters.h b/docs/release/src/osd/winui/splitters.h
new file mode 100644
index 00000000000..bbf700b0f32
--- /dev/null
+++ b/docs/release/src/osd/winui/splitters.h
@@ -0,0 +1,81 @@
+// For licensing and usage information, read docs/winui_license.txt
+// MASTER
+//****************************************************************************
+
+/* Written by Mike Haaland <mhaaland@hypertech.com> */
+
+#ifndef SPLITTER_H
+#define SPLITTER_H
+
+#if !defined(MAX)
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+#include "resource.h"
+#include "winui.h"
+#define SPLITTER_WIDTH 4
+#define MIN_VIEW_WIDTH 10
+
+enum eSplitterHits
+{
+ SPLITTER_HITNOTHING = 0,
+ SPLITTER_HITITEM
+};
+
+typedef struct horzSplitter
+{
+ HWND m_hWnd;
+ HWND m_hWndLeft;
+ HWND m_hWndRight;
+ RECT m_limitRect;
+ RECT m_dragRect;
+ void (*m_func)(HWND hWnd, LPRECT lpRect);
+} HZSPLITTER, *LPHZSPLITTER;
+
+/* Splitter routines */
+void OnMouseMove(HWND hWnd, UINT nFlags, POINTS p);
+void OnLButtonDown(HWND hWnd, UINT nFlags, POINTS p);
+void OnLButtonUp(HWND hWnd, UINT nFlags, POINTS p);
+void OnSizeSplitter(HWND hWnd);
+void AddSplitter(HWND hWnd, HWND hWndLeft, HWND hWndRight,
+ void (*func)(HWND hWnd,LPRECT lpRect));
+void RecalcSplitters(void);
+void AdjustSplitter2Rect(HWND hWnd, LPRECT lpRect);
+void AdjustSplitter1Rect(HWND hWnd, LPRECT lpRect);
+BOOL InitSplitters(void);
+void SplittersExit(void);
+int GetSplitterCount(void);
+
+extern int *nSplitterOffset;
+
+typedef struct
+{
+ double dPosition;
+ int nSplitterWindow;
+ int nLeftWindow;
+ int nRightWindow;
+ void (*pfnAdjust)(HWND hWnd,LPRECT lpRect);
+} SPLITTERINFO;
+
+#ifdef MESS
+const SPLITTERINFO g_splitterInfo[] =
+{
+ { 0.2, IDC_SPLITTER, IDC_TREE, IDC_LIST, AdjustSplitter1Rect },
+ { 0.4, IDC_SPLITTER2, IDC_LIST, IDC_SWLIST, AdjustSplitter1Rect },
+ { 0.6, IDC_SPLITTER3, IDC_SWTAB, IDC_SSFRAME, AdjustSplitter2Rect },
+ { -1 }
+};
+#else
+const SPLITTERINFO g_splitterInfo[] =
+{
+ { 0.25, IDC_SPLITTER, IDC_TREE, IDC_LIST, AdjustSplitter1Rect },
+ { 0.5, IDC_SPLITTER2, IDC_LIST, IDC_SSFRAME, AdjustSplitter2Rect },
+ { -1 }
+};
+#endif
+
+//extern const SPLITTERINFO g_splitterInfo[];
+
+
+#endif /* SPLITTER_H */
diff --git a/docs/release/src/osd/winui/tabview.cpp b/docs/release/src/osd/winui/tabview.cpp
new file mode 100644
index 00000000000..d5971275819
--- /dev/null
+++ b/docs/release/src/osd/winui/tabview.cpp
@@ -0,0 +1,335 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+#include <commdlg.h>
+#include <wingdi.h>
+
+// MAME/MAMEUI headers
+#include "winui.h"
+#include "tabview.h"
+#include "emu.h"
+#include "mui_util.h"
+#include "strconv.h"
+
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+
+struct TabViewInfo
+{
+ const struct TabViewCallbacks *pCallbacks;
+ int nTabCount;
+ WNDPROC pfnParentWndProc;
+};
+
+
+
+static struct TabViewInfo *GetTabViewInfo(HWND hWnd)
+{
+ LONG_PTR l;
+ l = GetWindowLongPtr(hWnd, GWLP_USERDATA);
+ return (struct TabViewInfo *) l;
+}
+
+
+
+static LRESULT CallParentWndProc(WNDPROC pfnParentWndProc,
+ HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ LRESULT rc;
+
+ if (!pfnParentWndProc)
+ pfnParentWndProc = GetTabViewInfo(hWnd)->pfnParentWndProc;
+
+ if (IsWindowUnicode(hWnd))
+ rc = CallWindowProcW(pfnParentWndProc, hWnd, message, wParam, lParam);
+ else
+ rc = CallWindowProcA(pfnParentWndProc, hWnd, message, wParam, lParam);
+ return rc;
+}
+
+
+
+static LRESULT CALLBACK TabViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ struct TabViewInfo *pTabViewInfo;
+ WNDPROC pfnParentWndProc;
+ BOOL bHandled = FALSE;
+ LRESULT rc = 0;
+
+ pTabViewInfo = GetTabViewInfo(hWnd);
+ pfnParentWndProc = pTabViewInfo->pfnParentWndProc;
+
+ switch(message)
+ {
+ case WM_DESTROY:
+ free(pTabViewInfo);
+ SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR) pfnParentWndProc);
+ SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) NULL);
+ break;
+ }
+
+ if (!bHandled)
+ rc = CallParentWndProc(pfnParentWndProc, hWnd, message, wParam, lParam);
+
+ switch(message)
+ {
+ case WM_MOVE:
+ case WM_SIZE:
+ if (pTabViewInfo->pCallbacks->pfnOnMoveSize)
+ pTabViewInfo->pCallbacks->pfnOnMoveSize();
+ break;
+ }
+
+ return rc;
+}
+
+
+
+static int TabView_GetTabFromTabIndex(HWND hwndTabView, int tab_index)
+{
+ int shown_tabs = -1;
+ int i;
+ struct TabViewInfo *pTabViewInfo;
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ for (i = 0; i < pTabViewInfo->nTabCount; i++)
+ {
+ if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
+ {
+ shown_tabs++;
+ if (shown_tabs == tab_index)
+ return i;
+ }
+ }
+ dprintf("invalid tab index %i\n", tab_index);
+ return 0;
+}
+
+
+
+int TabView_GetCurrentTab(HWND hwndTabView)
+{
+ struct TabViewInfo *pTabViewInfo;
+ LPCSTR pszTab = NULL;
+ LPCSTR pszThatTab;
+ int i, nTab = -1;
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ if (pTabViewInfo->pCallbacks->pfnGetCurrentTab)
+ pszTab = pTabViewInfo->pCallbacks->pfnGetCurrentTab();
+
+ if (pszTab)
+ {
+ if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
+ {
+ for (i = 0; i < pTabViewInfo->nTabCount; i++)
+ {
+ pszThatTab = pTabViewInfo->pCallbacks->pfnGetTabShortName(i);
+ if (pszThatTab && !core_stricmp(pszTab, pszThatTab))
+ {
+ nTab = i;
+ break;
+ }
+ }
+ }
+ if (nTab < 0)
+ {
+ nTab = 0;
+ sscanf(pszTab, "%d", &nTab);
+ }
+ }
+ else
+ {
+ nTab = 0;
+ }
+ return nTab;
+}
+
+
+
+void TabView_SetCurrentTab(HWND hwndTabView, int nTab)
+{
+ struct TabViewInfo *pTabViewInfo;
+ LPCSTR pszName;
+ char szBuffer[16];
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ if (pTabViewInfo->pCallbacks->pfnGetTabShortName)
+ {
+ pszName = pTabViewInfo->pCallbacks->pfnGetTabShortName(nTab);
+ }
+ else
+ {
+ snprintf(szBuffer, ARRAY_LENGTH(szBuffer),
+ "%d", nTab);
+ pszName = szBuffer;
+ }
+
+ if (pTabViewInfo->pCallbacks->pfnSetCurrentTab)
+ pTabViewInfo->pCallbacks->pfnSetCurrentTab(pszName);
+}
+
+
+
+static int TabView_GetCurrentTabIndex(HWND hwndTabView)
+{
+ int shown_tabs = 0;
+ int i;
+ int nCurrentTab;
+ struct TabViewInfo *pTabViewInfo;
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+ nCurrentTab = TabView_GetCurrentTab(hwndTabView);
+
+ for (i = 0; i < pTabViewInfo->nTabCount; i++)
+ {
+ if (i == nCurrentTab)
+ break;
+
+ if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
+ shown_tabs++;
+ }
+ return shown_tabs;
+}
+
+
+
+void TabView_UpdateSelection(HWND hwndTabView)
+{
+ HRESULT res;
+ res = TabCtrl_SetCurSel(hwndTabView, TabView_GetCurrentTabIndex(hwndTabView));
+}
+
+
+
+BOOL TabView_HandleNotify(LPNMHDR lpNmHdr)
+{
+ HWND hwndTabView;
+ struct TabViewInfo *pTabViewInfo;
+ BOOL bResult = FALSE;
+ int nTabIndex, nTab;
+
+ hwndTabView = lpNmHdr->hwndFrom;
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ switch (lpNmHdr->code)
+ {
+ case TCN_SELCHANGE:
+ nTabIndex = TabCtrl_GetCurSel(hwndTabView);
+ nTab = TabView_GetTabFromTabIndex(hwndTabView, nTabIndex);
+ TabView_SetCurrentTab(hwndTabView, nTab);
+ if (pTabViewInfo->pCallbacks->pfnOnSelectionChanged)
+ pTabViewInfo->pCallbacks->pfnOnSelectionChanged();
+ bResult = TRUE;
+ break;
+ }
+ return bResult;
+}
+
+
+
+void TabView_CalculateNextTab(HWND hwndTabView)
+{
+ struct TabViewInfo *pTabViewInfo;
+ int i;
+ int nCurrentTab;
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ // at most loop once through all options
+ for (i = 0; i < pTabViewInfo->nTabCount; i++)
+ {
+ nCurrentTab = TabView_GetCurrentTab(hwndTabView);
+ TabView_SetCurrentTab(hwndTabView, (nCurrentTab + 1) % pTabViewInfo->nTabCount);
+ nCurrentTab = TabView_GetCurrentTab(hwndTabView);
+
+ if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(nCurrentTab))
+ {
+ // this tab is being shown, so we're all set
+ return;
+ }
+ }
+}
+
+
+
+void TabView_Reset(HWND hwndTabView)
+{
+ struct TabViewInfo *pTabViewInfo;
+ TC_ITEM tci;
+ int i;
+ TCHAR* t_text;
+ HRESULT res;
+ BOOL b_res;
+
+ pTabViewInfo = GetTabViewInfo(hwndTabView);
+
+ b_res = TabCtrl_DeleteAllItems(hwndTabView);
+
+ memset(&tci, 0, sizeof(tci));
+ tci.mask = TCIF_TEXT;
+ tci.cchTextMax = 20;
+
+ for (i = 0; i < pTabViewInfo->nTabCount; i++)
+ {
+ if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i))
+ {
+ t_text = ui_wstring_from_utf8(pTabViewInfo->pCallbacks->pfnGetTabLongName(i));
+ if( !t_text )
+ return;
+ tci.pszText = t_text;
+ res = TabCtrl_InsertItem(hwndTabView, i, &tci);
+ free(t_text);
+ }
+ }
+ TabView_UpdateSelection(hwndTabView);
+}
+
+
+
+BOOL SetupTabView(HWND hwndTabView, const struct TabViewOptions *pOptions)
+{
+ struct TabViewInfo *pTabViewInfo;
+ LONG_PTR l;
+ BOOL bShowTabView;
+
+ assert(hwndTabView);
+
+ // Allocate the list view struct
+ pTabViewInfo = (struct TabViewInfo *) malloc(sizeof(struct TabViewInfo));
+ if (!pTabViewInfo)
+ return FALSE;
+
+ // And fill it out
+ memset(pTabViewInfo, 0, sizeof(*pTabViewInfo));
+ pTabViewInfo->pCallbacks = pOptions->pCallbacks;
+ pTabViewInfo->nTabCount = pOptions->nTabCount;
+
+ // Hook in our wndproc and userdata pointer
+ l = GetWindowLongPtr(hwndTabView, GWLP_WNDPROC);
+ pTabViewInfo->pfnParentWndProc = (WNDPROC) l;
+ SetWindowLongPtr(hwndTabView, GWLP_USERDATA, (LONG_PTR) pTabViewInfo);
+ SetWindowLongPtr(hwndTabView, GWLP_WNDPROC, (LONG_PTR) TabViewWndProc);
+
+ bShowTabView = pTabViewInfo->pCallbacks->pfnGetShowTabCtrl ?
+ pTabViewInfo->pCallbacks->pfnGetShowTabCtrl() : TRUE;
+ ShowWindow(hwndTabView, bShowTabView ? SW_SHOW : SW_HIDE);
+
+ TabView_Reset(hwndTabView);
+ if (pTabViewInfo->pCallbacks->pfnOnSelectionChanged)
+ pTabViewInfo->pCallbacks->pfnOnSelectionChanged();
+ return TRUE;
+}
+
+
diff --git a/docs/release/src/osd/winui/tabview.h b/docs/release/src/osd/winui/tabview.h
new file mode 100644
index 00000000000..77d61b1af7a
--- /dev/null
+++ b/docs/release/src/osd/winui/tabview.h
@@ -0,0 +1,44 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef TABVIEW_H
+#define TABVIEW_H
+
+struct TabViewCallbacks
+{
+ // Options retrieval
+ BOOL (*pfnGetShowTabCtrl)(void);
+ void (*pfnSetCurrentTab)(LPCSTR pszShortName);
+ LPCSTR (*pfnGetCurrentTab)(void);
+ void (*pfnSetShowTab)(int nTab, BOOL show);
+ int (*pfnGetShowTab)(int nTab);
+
+ // Accessors
+ LPCSTR (*pfnGetTabShortName)(int nTab);
+ LPCSTR (*pfnGetTabLongName)(int nTab);
+
+ // Callbacks
+ void (*pfnOnSelectionChanged)(void);
+ void (*pfnOnMoveSize)(void);
+};
+
+struct TabViewOptions
+{
+ const struct TabViewCallbacks *pCallbacks;
+ int nTabCount;
+};
+
+
+BOOL SetupTabView(HWND hwndTabView, const struct TabViewOptions *pOptions);
+
+void TabView_Reset(HWND hwndTabView);
+void TabView_CalculateNextTab(HWND hwndTabView);
+int TabView_GetCurrentTab(HWND hwndTabView);
+void TabView_SetCurrentTab(HWND hwndTabView, int nTab);
+void TabView_UpdateSelection(HWND hwndTabView);
+
+// These are used to handle events received by the parent regarding
+// tabview controls
+BOOL TabView_HandleNotify(LPNMHDR lpNmHdr);
+
+#endif // TABVIEW_H
diff --git a/docs/release/src/osd/winui/treeview.cpp b/docs/release/src/osd/winui/treeview.cpp
new file mode 100644
index 00000000000..fb2b331aa0d
--- /dev/null
+++ b/docs/release/src/osd/winui/treeview.cpp
@@ -0,0 +1,2441 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+/***************************************************************************
+
+ treeview.c
+
+ TreeView support routines - MSH 11/19/1998
+
+***************************************************************************/
+
+// standard windows headers
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+
+// standard C headers
+#include <stdio.h> // for sprintf
+#include <stdlib.h> // For malloc and free
+#include <ctype.h> // For tolower
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#ifdef _MSC_VER
+#include <direct.h>
+#endif
+#include <tchar.h>
+#include <io.h>
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "hash.h"
+#include "mui_util.h"
+#include "bitmask.h"
+#include "winui.h"
+#include "treeview.h"
+#include "resource.h"
+#include "mui_opts.h"
+#include "dialogs.h"
+#include "winutf8.h"
+#include "strconv.h"
+#include "drivenum.h"
+#include "screen.h"
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+#define MAX_EXTRA_FOLDERS 256
+
+/***************************************************************************
+ public structures
+ ***************************************************************************/
+
+#define ICON_MAX ARRAY_LENGTH(treeIconNames)
+
+/* Name used for user-defined custom icons */
+/* external *.ico file to look for. */
+
+typedef struct
+{
+ int nResourceID;
+ LPCSTR lpName;
+} TREEICON;
+
+static TREEICON treeIconNames[] =
+{
+ { IDI_FOLDER_OPEN, "foldopen" },
+ { IDI_FOLDER, "folder" },
+ { IDI_FOLDER_AVAILABLE, "foldavail" },
+ { IDI_FOLDER_MANUFACTURER, "foldmanu" },
+ { IDI_FOLDER_UNAVAILABLE, "foldunav" },
+ { IDI_FOLDER_YEAR, "foldyear" },
+ { IDI_FOLDER_SOURCE, "foldsrc" },
+ { IDI_FOLDER_HORIZONTAL, "horz" },
+ { IDI_FOLDER_VERTICAL, "vert" },
+ { IDI_MANUFACTURER, "manufact" },
+ { IDI_WORKING, "working" },
+ { IDI_NONWORKING, "nonwork" },
+ { IDI_YEAR, "year" },
+ { IDI_SOUND, "sound" },
+ { IDI_CPU, "cpu" },
+ { IDI_HARDDISK, "harddisk" },
+ { IDI_SOURCE, "source" }
+};
+
+/***************************************************************************
+ private variables
+ ***************************************************************************/
+
+/* this has an entry for every folder eventually in the UI, including subfolders */
+static TREEFOLDER **treeFolders = 0;
+static UINT numFolders = 0; /* Number of folder in the folder array */
+static UINT next_folder_id = MAX_FOLDERS;
+static UINT folderArrayLength = 0; /* Size of the folder array */
+static LPTREEFOLDER lpCurrentFolder = nullptr; /* Currently selected folder */
+static UINT nCurrentFolder = 0; /* Current folder ID */
+static WNDPROC g_lpTreeWndProc = 0; /* for subclassing the TreeView */
+static HIMAGELIST hTreeSmall = 0; /* TreeView Image list of icons */
+
+/* this only has an entry for each TOP LEVEL extra folder + SubFolders*/
+LPEXFOLDERDATA ExtraFolderData[MAX_EXTRA_FOLDERS * MAX_EXTRA_SUBFOLDERS];
+static int numExtraFolders = 0;
+static int numExtraIcons = 0;
+static char *ExtraFolderIcons[MAX_EXTRA_FOLDERS];
+
+// built in folders and filters
+static LPCFOLDERDATA g_lpFolderData;
+static LPCFILTER_ITEM g_lpFilterList;
+
+/***************************************************************************
+ private function prototypes
+ ***************************************************************************/
+
+extern BOOL InitFolders(void);
+static BOOL CreateTreeIcons(void);
+static void TreeCtrlOnPaint(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+static const char* ParseManufacturer(const char *s, int *pParsedChars );
+static const char* TrimManufacturer(const char *s);
+static void CreateAllChildFolders(void);
+static BOOL AddFolder(LPTREEFOLDER lpFolder);
+static LPTREEFOLDER NewFolder(const char *lpTitle, UINT nFolderId, int nParent, UINT nIconId, DWORD dwFlags);
+static void DeleteFolder(LPTREEFOLDER lpFolder);
+
+static LRESULT CALLBACK TreeWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+static int InitExtraFolders(void);
+static void FreeExtraFolders(void);
+static void SetExtraIcons(char *name, int *id);
+static BOOL TryAddExtraFolderAndChildren(int parent_index);
+
+static BOOL TrySaveExtraFolder(LPTREEFOLDER lpFolder);
+
+/***************************************************************************
+ public functions
+ ***************************************************************************/
+
+static BOOL win_move_file_utf8(const char* existingfilename, const char* newfilename)
+{
+ TCHAR* t_existingfilename;
+ TCHAR* t_newfilename;
+ BOOL result = FALSE;
+
+ t_existingfilename = ui_wstring_from_utf8(existingfilename);
+ if( !t_existingfilename )
+ return result;
+
+ t_newfilename = ui_wstring_from_utf8(newfilename);
+ if( !t_newfilename ) {
+ free(t_existingfilename);
+ return result;
+ }
+
+ result = MoveFile(t_existingfilename, t_newfilename);
+
+ free(t_newfilename);
+ free(t_existingfilename);
+
+ return result;
+}
+
+/**************************************************************************
+ * ci_strncmp - case insensitive character array compare
+ *
+ * Returns zero if the first n characters of s1 and s2 are equal,
+ * ignoring case.
+ * stolen from datafile.c
+ **************************************************************************/
+static int ci_strncmp (const char *s1, const char *s2, int n)
+{
+ int c1, c2;
+
+ while (n)
+ {
+ if ((c1 = tolower (*s1)) != (c2 = tolower (*s2)))
+ return (c1 - c2);
+ else if (!c1)
+ break;
+ --n;
+
+ s1++;
+ s2++;
+ }
+ return 0;
+}
+
+
+
+/* De-allocate all folder memory */
+void FreeFolders(void)
+{
+ int i = 0;
+
+ if (treeFolders != NULL)
+ {
+ if (numExtraFolders)
+ {
+ FreeExtraFolders();
+ numFolders -= numExtraFolders;
+ }
+
+ for (i = numFolders - 1; i >= 0; i--)
+ {
+ DeleteFolder(treeFolders[i]);
+ treeFolders[i] = NULL;
+ numFolders--;
+ }
+ free(treeFolders);
+ treeFolders = NULL;
+ }
+ numFolders = 0;
+}
+
+/* Reset folder filters */
+void ResetFilters(void)
+{
+ int i = 0;
+
+ if (treeFolders != 0)
+ {
+ for (i = 0; i < (int)numFolders; i++)
+ {
+ treeFolders[i]->m_dwFlags &= ~F_MASK;
+ }
+ }
+}
+
+void InitTree(LPCFOLDERDATA lpFolderData, LPCFILTER_ITEM lpFilterList)
+{
+ LONG_PTR l;
+
+ g_lpFolderData = lpFolderData;
+ g_lpFilterList = lpFilterList;
+
+ InitFolders();
+
+ /* this will subclass the treeview (where WM_DRAWITEM gets sent for the header control) */
+ l = GetWindowLongPtr(GetTreeView(), GWLP_WNDPROC);
+ g_lpTreeWndProc = (WNDPROC)l;
+ SetWindowLongPtr(GetTreeView(), GWLP_WNDPROC, (LONG_PTR)TreeWndProc);
+}
+
+void SetCurrentFolder(LPTREEFOLDER lpFolder)
+{
+ lpCurrentFolder = (lpFolder == 0) ? treeFolders[0] : lpFolder;
+ nCurrentFolder = (lpCurrentFolder) ? lpCurrentFolder->m_nFolderId : 0;
+}
+
+LPTREEFOLDER GetCurrentFolder(void)
+{
+ return lpCurrentFolder;
+}
+
+UINT GetCurrentFolderID(void)
+{
+ return nCurrentFolder;
+}
+
+int GetNumFolders(void)
+{
+ return numFolders;
+}
+
+LPTREEFOLDER GetFolder(UINT nFolder)
+{
+ return (nFolder < numFolders) ? treeFolders[nFolder] : NULL;
+}
+
+LPTREEFOLDER GetFolderByID(UINT nID)
+{
+ UINT i;
+
+ for (i = 0; i < numFolders; i++)
+ {
+ if (treeFolders[i]->m_nFolderId == nID)
+ {
+ return treeFolders[i];
+ }
+ }
+
+ return (LPTREEFOLDER)0;
+}
+
+void AddGame(LPTREEFOLDER lpFolder, UINT nGame)
+{
+ if (lpFolder)
+ SetBit(lpFolder->m_lpGameBits, nGame);
+}
+
+void RemoveGame(LPTREEFOLDER lpFolder, UINT nGame)
+{
+ ClearBit(lpFolder->m_lpGameBits, nGame);
+}
+
+int FindGame(LPTREEFOLDER lpFolder, int nGame)
+{
+ return FindBit(lpFolder->m_lpGameBits, nGame, TRUE);
+}
+
+// Called to re-associate games with folders
+void ResetWhichGamesInFolders(void)
+{
+ UINT i, jj, k;
+ BOOL b;
+ int nGames = driver_list::total();
+
+ for (i = 0; i < numFolders; i++)
+ {
+ LPTREEFOLDER lpFolder = treeFolders[i];
+ // setup the games in our built-in folders
+ for (k = 0; g_lpFolderData[k].m_lpTitle; k++)
+ {
+ if (lpFolder->m_nFolderId == g_lpFolderData[k].m_nFolderId)
+ {
+ if (g_lpFolderData[k].m_pfnQuery || g_lpFolderData[k].m_bExpectedResult)
+ {
+ SetAllBits(lpFolder->m_lpGameBits, FALSE);
+ for (jj = 0; jj < nGames; jj++)
+ {
+ // invoke the query function
+ b = g_lpFolderData[k].m_pfnQuery ? g_lpFolderData[k].m_pfnQuery(jj) : TRUE;
+
+ // if we expect FALSE, flip the result
+ if (!g_lpFolderData[k].m_bExpectedResult)
+ b = !b;
+
+ // if we like what we hear, add the game
+ if (b)
+ AddGame(lpFolder, jj);
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+
+/* Used to build the GameList */
+bool GameFiltered(int nGame, DWORD dwMask)
+{
+ int i;
+ LPTREEFOLDER lpFolder = GetCurrentFolder();
+ LPTREEFOLDER lpParent = nullptr;
+
+ //Filter out the Bioses on all Folders, except for the Bios Folder
+ if (lpFolder != nullptr && lpFolder->m_nFolderId != FOLDER_BIOS)
+ {
+// if( !( (driver_list::driver(nGame).flags & MACHINE_IS_BIOS_ROOT ) == 0) )
+// return TRUE;
+ if( driver_list::driver(nGame).name[0] == '_' )
+ return TRUE;
+ }
+ // Filter games--return TRUE if the game should be HIDDEN in this view
+ if( GetFilterInherit() )
+ {
+ if( lpFolder != nullptr )
+ {
+ lpParent = GetFolder( lpFolder->m_nParent );
+ if( lpParent != nullptr )
+ {
+ /* Check the Parent Filters and inherit them on child,
+ * The inherited filters don't display on the custom Filter Dialog for the Child folder
+ * No need to promote all games to parent folder, works as is */
+ dwMask |= lpParent->m_dwFlags;
+ }
+ }
+ }
+
+ if (strlen(GetSearchText()) && _stricmp(GetSearchText(), SEARCH_PROMPT))
+ {
+ if (MyStrStrI(driver_list::driver(nGame).description,GetSearchText()) == NULL &&
+ MyStrStrI(driver_list::driver(nGame).name,GetSearchText()) == NULL)
+ return TRUE;
+ }
+ /*Filter Text is already global*/
+ if (MyStrStrI(driver_list::driver(nGame).description,GetFilterText()) == NULL &&
+ MyStrStrI(driver_list::driver(nGame).name,GetFilterText()) == NULL &&
+ MyStrStrI(driver_list::driver(nGame).source_file,GetFilterText()) == NULL &&
+ MyStrStrI(driver_list::driver(nGame).manufacturer,GetFilterText()) == NULL)
+ {
+ return TRUE;
+ }
+ // Are there filters set on this folder?
+ if ((dwMask & F_MASK) == 0)
+ return FALSE;
+
+ // Filter out clones?
+ if (dwMask & F_CLONES && DriverIsClone(nGame))
+ return TRUE;
+
+ for (i = 0; g_lpFilterList[i].m_dwFilterType; i++)
+ {
+ if (dwMask & g_lpFilterList[i].m_dwFilterType)
+ {
+ if (g_lpFilterList[i].m_pfnQuery(nGame) == g_lpFilterList[i].m_bExpectedResult)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/* Get the parent of game in this view */
+BOOL GetParentFound(int nGame) // not used
+{
+ int nParentIndex = -1;
+ LPTREEFOLDER lpFolder = GetCurrentFolder();
+
+ if( lpFolder )
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(nGame));
+
+ /* return FALSE if no parent is there in this view */
+ if( nParentIndex == -1)
+ return FALSE;
+
+ /* return FALSE if the folder should be HIDDEN in this view */
+ if (TestBit(lpFolder->m_lpGameBits, nParentIndex) == 0)
+ return FALSE;
+
+ /* return FALSE if the game should be HIDDEN in this view */
+ if (GameFiltered(nParentIndex, lpFolder->m_dwFlags))
+ return FALSE;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+LPCFILTER_ITEM GetFilterList(void)
+{
+ return g_lpFilterList;
+}
+
+/***************************************************************************
+ private functions
+ ***************************************************************************/
+
+void CreateSourceFolders(int parent_index)
+{
+ int i,jj, k = 0;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpTemp;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+ for (jj = 0; jj < nGames; jj++)
+ {
+ const char *s = GetDriverFilename(jj);
+
+ if (s == NULL || s[0] == '\0')
+ continue;
+
+ // look for an existant source treefolder for this game
+ // (likely to be the previous one, so start at the end)
+ for (i=numFolders-1;i>=start_folder;i--)
+ {
+ if (strcmp(treeFolders[i]->m_lpTitle,s) == 0)
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+ if (i == start_folder-1)
+ {
+ // nope, it's a source file we haven't seen before, make it.
+ lpTemp = NewFolder(s, next_folder_id, parent_index, IDI_SOURCE, GetFolderFlags(numFolders));
+
+ // Increment next_folder_id here in case code is added above
+ next_folder_id++;
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+ SetNumOptionFolders(k-1);
+}
+
+void CreateScreenFolders(int parent_index)
+{
+ int i, jj, k = 0;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpTemp;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+ for (jj = 0; jj < nGames; jj++)
+ {
+ int screens = DriverNumScreens(jj);
+ char s[2];
+ itoa(screens, s, 10);
+
+ // look for an existant screens treefolder for this game
+ // (likely to be the previous one, so start at the end)
+ for (i=numFolders-1;i>=start_folder;i--)
+ {
+ if (strcmp(treeFolders[i]->m_lpTitle,s) == 0)
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+ if (i == start_folder-1)
+ {
+ // nope, it's a screen file we haven't seen before, make it.
+ lpTemp = NewFolder(s, next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+
+ // Increment next_folder_id here in case code is added above
+ next_folder_id++;
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+ SetNumOptionFolders(k-1);
+}
+
+
+void CreateManufacturerFolders(int parent_index)
+{
+ int i, jj;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpTemp;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+ const char *manufacturer = driver_list::driver(jj).manufacturer;
+ int iChars = 0;
+ while( manufacturer != NULL && manufacturer[0] != '\0' )
+ {
+ const char *s = ParseManufacturer(manufacturer, &iChars);
+ manufacturer += iChars;
+ //shift to next start char
+ if( s != NULL && *s != 0 )
+ {
+ const char *t = TrimManufacturer(s);
+ for (i=numFolders-1;i>=start_folder;i--)
+ {
+ //RS Made it case insensitive
+ if (ci_strncmp(treeFolders[i]->m_lpTitle,t,20) == 0 )
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+ if (i == start_folder-1)
+ {
+ // nope, it's a manufacturer we haven't seen before, make it.
+ lpTemp = NewFolder(t, next_folder_id, parent_index, IDI_MANUFACTURER, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+ }
+ }
+}
+
+/* Make a reasonable name out of the one found in the driver array */
+static const char* ParseManufacturer(const char *s, int *pParsedChars )
+{
+ static char tmp[256];
+ char* ptmp;
+ char *t;
+ *pParsedChars= 0;
+
+ if ( *s == '?' || *s == '<' || s[3] == '?' )
+ {
+ (*pParsedChars) = strlen(s);
+ return "<unknown>";
+ }
+
+ ptmp = tmp;
+ /*if first char is a space, skip it*/
+ if( *s == ' ' )
+ {
+ (*pParsedChars)++;
+ ++s;
+ }
+ while( *s )
+ {
+ /* combinations where to end string */
+
+ if (
+ ( (*s == ' ') && ( s[1] == '(' || s[1] == '/' || s[1] == '+' ) ) ||
+ ( *s == ']' ) ||
+ ( *s == '/' ) ||
+ ( *s == '?' )
+ )
+ {
+ (*pParsedChars)++;
+ if( s[1] == '/' || s[1] == '+' )
+ (*pParsedChars)++;
+ break;
+ }
+ if( s[0] == ' ' && s[1] == '?' )
+ {
+ (*pParsedChars) += 2;
+ s+=2;
+ }
+
+ /* skip over opening braces*/
+
+ if ( *s != '[' )
+ {
+ *ptmp++ = *s;
+ }
+ (*pParsedChars)++;
+ /*for "distributed by" and "supported by" handling*/
+ if( ( (s[1] == ',') && (s[2] == ' ') && ( (s[3] == 's') || (s[3] == 'd') ) ) )
+ {
+ //*ptmp++ = *s;
+ ++s;
+ break;
+ }
+ ++s;
+ }
+ *ptmp = '\0';
+ t = tmp;
+ if( tmp[0] == '(' || tmp[strlen(tmp)-1] == ')' || tmp[0] == ',')
+ {
+ ptmp = strchr( tmp,'(' );
+ if ( ptmp == NULL )
+ {
+ ptmp = strchr( tmp,',' );
+ if( ptmp != NULL)
+ {
+ //parse the new "supported by" and "distributed by"
+ ptmp++;
+
+ if (ci_strncmp(ptmp, " supported by", 13) == 0)
+ {
+ ptmp += 13;
+ }
+ else if (ci_strncmp(ptmp, " distributed by", 15) == 0)
+ {
+ ptmp += 15;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+ else
+ {
+ ptmp = tmp;
+ if ( ptmp == NULL )
+ {
+ return NULL;
+ }
+ }
+ }
+ if( tmp[0] == '(' || tmp[0] == ',')
+ {
+ ptmp++;
+ }
+ if (ci_strncmp(ptmp, "licensed from ", 14) == 0)
+ {
+ ptmp += 14;
+ }
+ // for the licenced from case
+ if (ci_strncmp(ptmp, "licenced from ", 14) == 0)
+ {
+ ptmp += 14;
+ }
+
+ while ( (*ptmp != ')' ) && (*ptmp != '/' ) && *ptmp != '\0')
+ {
+ if (*ptmp == ' ' && ci_strncmp(ptmp, " license", 8) == 0)
+ {
+ break;
+ }
+ if (*ptmp == ' ' && ci_strncmp(ptmp, " licence", 8) == 0)
+ {
+ break;
+ }
+ *t++ = *ptmp++;
+ }
+
+ *t = '\0';
+ }
+
+ *ptmp = '\0';
+ return tmp;
+}
+
+/* Analyze Manufacturer Names for typical patterns, that don't distinguish between companies (e.g. Co., Ltd., Inc., etc. */
+static const char* TrimManufacturer(const char *s)
+{
+ //Also remove Country specific suffixes (e.g. Japan, Italy, America, USA, ...)
+ int i=0;
+ char strTemp[256];
+ static char strTemp2[256];
+ int j=0;
+ int k=0;
+ int l = 0;
+ memset(strTemp, '\0', 256 );
+ memset(strTemp2, '\0', 256 );
+ //start analyzing from the back, as these are usually suffixes
+ for(i=strlen(s)-1; i>=0;i-- )
+ {
+
+ l = strlen(strTemp);
+ for(k=l;k>=0; k--)
+ strTemp[k+1] = strTemp[k];
+ strTemp[0] = s[i];
+ strTemp[++l] = '\0';
+ switch (l)
+ {
+ case 2:
+ if( ci_strncmp(strTemp, "co", 2) == 0 )
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 3:
+ if( ci_strncmp(strTemp, "co.", 3) == 0 || ci_strncmp(strTemp, "ltd", 3) == 0 || ci_strncmp(strTemp, "inc", 3) == 0 || ci_strncmp(strTemp, "SRL", 3) == 0 || ci_strncmp(strTemp, "USA", 3) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 4:
+ if( ci_strncmp(strTemp, "inc.", 4) == 0 || ci_strncmp(strTemp, "ltd.", 4) == 0 || ci_strncmp(strTemp, "corp", 4) == 0 || ci_strncmp(strTemp, "game", 4) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 5:
+ if( ci_strncmp(strTemp, "corp.", 5) == 0 || ci_strncmp(strTemp, "Games", 5) == 0 || ci_strncmp(strTemp, "Italy", 5) == 0 || ci_strncmp(strTemp, "Japan", 5) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 6:
+ if( ci_strncmp(strTemp, "co-ltd", 6) == 0 || ci_strncmp(strTemp, "S.R.L.", 6) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 7:
+ if( ci_strncmp(strTemp, "co. ltd", 7) == 0 || ci_strncmp(strTemp, "America", 7) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 8:
+ if( ci_strncmp(strTemp, "co. ltd.", 8) == 0 )
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 9:
+ if( ci_strncmp(strTemp, "co., ltd.", 9) == 0 || ci_strncmp(strTemp, "gmbh & co", 9) == 0 )
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 10:
+ if( ci_strncmp(strTemp, "corp, ltd.", 10) == 0 || ci_strncmp(strTemp, "industries", 10) == 0 || ci_strncmp(strTemp, "of America", 10) == 0)
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 11:
+ if( ci_strncmp(strTemp, "corporation", 11) == 0 || ci_strncmp(strTemp, "enterprises", 11) == 0 )
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ case 16:
+ if( ci_strncmp(strTemp, "industries japan", 16) == 0 )
+ {
+ j=l;
+ while( s[strlen(s)-j-1] == ' ' || s[strlen(s)-j-1] == ',' )
+ {
+ j++;
+ }
+ if( j!=l)
+ {
+ memset(strTemp2, '\0', 256 );
+ strncpy(strTemp2, s, strlen(s)-j );
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if( *strTemp2 == 0 )
+ return s;
+ return strTemp2;
+}
+
+void CreateCPUFolders(int parent_index)
+{
+ int i, j, device_folder_count = 0;
+ LPTREEFOLDER device_folders[512];
+ LPTREEFOLDER folder;
+ LPTREEFOLDER lpTemp;
+ int nFolder = numFolders;
+
+ for (i = 0; i < driver_list::total(); i++)
+ {
+ machine_config config(driver_list::driver(i),MameUIGlobal());
+
+ // enumerate through all devices
+ for (device_execute_interface &device : execute_interface_iterator(config.root_device()))
+ {
+ // get the name
+ std::string dev_name = device.device().name();
+
+ // do we have a folder for this device?
+ folder = NULL;
+ for (j = 0; j < device_folder_count; j++)
+ {
+ if (!strcmp(dev_name.c_str(), device_folders[j]->m_lpTitle))
+ {
+ folder = device_folders[j];
+ break;
+ }
+ }
+
+ // are we forced to create a folder?
+ if (folder == NULL)
+ {
+ lpTemp = NewFolder(device.device().name(), next_folder_id, parent_index, IDI_CPU, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ folder = treeFolders[nFolder++];
+
+ // record that we found this folder
+ device_folders[device_folder_count++] = folder;
+ }
+
+ // cpu type #'s are one-based
+ AddGame(folder, i);
+ }
+ }
+
+}
+
+void CreateSoundFolders(int parent_index)
+{
+ int i, j, device_folder_count = 0;
+ LPTREEFOLDER device_folders[512];
+ LPTREEFOLDER folder;
+ LPTREEFOLDER lpTemp;
+ int nFolder = numFolders;
+
+ for (i = 0; i < driver_list::total(); i++)
+ {
+ machine_config config(driver_list::driver(i),MameUIGlobal());
+
+ // enumerate through all devices
+
+ for (device_sound_interface &device : sound_interface_iterator(config.root_device()))
+ {
+ // get the name
+ std::string dev_name = device.device().name();
+
+ // do we have a folder for this device?
+ folder = NULL;
+ for (j = 0; j < device_folder_count; j++)
+ {
+ if (!strcmp(dev_name.c_str(), device_folders[j]->m_lpTitle))
+ {
+ folder = device_folders[j];
+ break;
+ }
+ }
+
+ // are we forced to create a folder?
+ if (folder == NULL)
+ {
+
+ lpTemp = NewFolder(device.device().name(), next_folder_id, parent_index, IDI_CPU, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ folder = treeFolders[nFolder++];
+
+ // record that we found this folder
+ device_folders[device_folder_count++] = folder;
+ }
+
+ // cpu type #'s are one-based
+ AddGame(folder, i);
+ }
+ }
+}
+
+void CreateDeficiencyFolders(int parent_index)
+{
+ int jj;
+ int nGames = driver_list::total();
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpProt, lpWrongCol, lpImpCol, lpImpGraph, lpMissSnd, lpImpSnd, lpFlip, lpArt;
+
+ // create our subfolders
+ lpProt = NewFolder("Unemulated Protection", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpWrongCol = NewFolder("Wrong Colors", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpImpCol = NewFolder("Imperfect Colors", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpImpGraph = NewFolder("Imperfect Graphics", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpMissSnd = NewFolder("Missing Sound", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpImpSnd = NewFolder("Imperfect Sound", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpFlip = NewFolder("No Cocktail", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpArt = NewFolder("Requires Artwork", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ AddFolder(lpProt);
+ AddFolder(lpWrongCol);
+ AddFolder(lpImpCol);
+ AddFolder(lpImpGraph);
+ AddFolder(lpMissSnd);
+ AddFolder(lpImpSnd);
+ AddFolder(lpFlip);
+ AddFolder(lpArt);
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+ if (driver_list::driver(jj).flags & MACHINE_WRONG_COLORS)
+ {
+ AddGame(lpWrongCol,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_UNEMULATED_PROTECTION)
+ {
+ AddGame(lpProt,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_IMPERFECT_COLORS)
+ {
+ AddGame(lpImpCol,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_IMPERFECT_GRAPHICS)
+ {
+ AddGame(lpImpGraph,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_NO_SOUND)
+ {
+ AddGame(lpMissSnd,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_IMPERFECT_SOUND)
+ {
+ AddGame(lpImpSnd,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_NO_COCKTAIL)
+ {
+ AddGame(lpFlip,jj);
+ }
+ if (driver_list::driver(jj).flags & MACHINE_REQUIRES_ARTWORK)
+ {
+ AddGame(lpArt,jj);
+ }
+ }
+}
+
+void CreateDumpingFolders(int parent_index)
+{
+ int jj;
+ BOOL bBadDump = FALSE;
+ BOOL bNoDump = FALSE;
+ int nGames = driver_list::total();
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpBad, lpNo;
+ const rom_entry *region, *rom;
+ const game_driver *gamedrv;
+
+ // create our two subfolders
+ lpBad = NewFolder("Bad Dump", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpNo = NewFolder("No Dump", next_folder_id, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ AddFolder(lpBad);
+ AddFolder(lpNo);
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+
+ gamedrv = &driver_list::driver(jj);
+
+ if (!gamedrv->rom)
+ continue;
+ bBadDump = FALSE;
+ bNoDump = FALSE;
+ /* Allocate machine config */
+ machine_config config(*gamedrv,MameUIGlobal());
+
+ for (device_t &device : device_iterator(config.root_device()))
+ {
+ for (region = rom_first_region(device); region; region = rom_next_region(region))
+ {
+ for (rom = rom_first_file(region); rom; rom = rom_next_file(rom))
+ {
+ if (ROMREGION_ISROMDATA(region) || ROMREGION_ISDISKDATA(region) )
+ {
+ //name = ROM_GETNAME(rom);
+ util::hash_collection hashes(ROM_GETHASHDATA(rom));
+ if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP))
+ bBadDump = TRUE;
+ if (hashes.flag(util::hash_collection::FLAG_NO_DUMP))
+ bNoDump = TRUE;
+ }
+ }
+ }
+ }
+ if (bBadDump)
+ {
+ AddGame(lpBad,jj);
+ }
+ if (bNoDump)
+ {
+ AddGame(lpNo,jj);
+ }
+ }
+}
+
+
+void CreateYearFolders(int parent_index)
+{
+ int i, jj;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpTemp;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+ char s[100];
+ strcpy(s,driver_list::driver(jj).year);
+
+ if (s[0] == '\0')
+ continue;
+
+ // look for an extant year treefolder for this game
+ // (likely to be the previous one, so start at the end)
+ for (i=numFolders-1;i>=start_folder;i--)
+ {
+ if (strncmp(treeFolders[i]->m_lpTitle,s,5) == 0)
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+ if (i == start_folder-1)
+ {
+ // nope, it's a year we haven't seen before, make it.
+ lpTemp = NewFolder(s, next_folder_id, parent_index, IDI_YEAR, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+}
+
+void CreateBIOSFolders(int parent_index)
+{
+ int i, jj;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ const game_driver *drv;
+ int nParentIndex = -1;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpTemp;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+ if ( DriverIsClone(jj) )
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(jj));
+ if (nParentIndex < 0) return;
+ drv = &driver_list::driver(nParentIndex);
+ }
+ else
+ drv = &driver_list::driver(jj);
+ nParentIndex = GetParentIndex(drv);
+
+ if (nParentIndex < 0 || !driver_list::driver(nParentIndex).description)
+ continue;
+
+ for (i = numFolders-1; i >= start_folder; i--)
+ {
+ if (strcmp(treeFolders[i]->m_lpTitle, driver_list::driver(nParentIndex).description) == 0)
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+
+ if (i == start_folder-1)
+ {
+ lpTemp = NewFolder(driver_list::driver(nParentIndex).description, next_folder_id++, parent_index, IDI_CPU, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+}
+
+void CreateResolutionFolders(int parent_index)
+{
+ int i,jj;
+ int nGames = driver_list::total();
+ int start_folder = numFolders;
+ char Resolution[20];
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER lpVectorV, lpVectorH;
+ LPTREEFOLDER lpTemp;
+
+ // create our two subfolders
+ lpVectorV = NewFolder("Vector (V)", next_folder_id++, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ lpVectorH = NewFolder("Vector (H)", next_folder_id++, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ AddFolder(lpVectorV);
+ AddFolder(lpVectorH);
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (jj = 0; jj < nGames; jj++)
+ {
+ machine_config config(driver_list::driver(jj), MameUIGlobal());
+ const screen_device *screen;
+ screen = config.first_screen();
+ if (screen != NULL)
+ {
+ const rectangle &visarea = screen->visible_area();
+
+ if (DriverIsVector(jj))
+ {
+ if (driver_list::driver(jj).flags & ORIENTATION_SWAP_XY)
+ {
+ AddGame(lpVectorV,jj);
+ }
+ else
+ {
+ AddGame(lpVectorH,jj);
+ }
+ }
+ else
+ if (driver_list::driver(jj).flags & ORIENTATION_SWAP_XY)
+ {
+ sprintf(Resolution, "%dx%d (V)",
+ visarea.max_y - visarea.min_y + 1,
+ visarea.max_x - visarea.min_x + 1);
+ }
+ else
+ {
+ sprintf(Resolution, "%dx%d (H)",
+ visarea.max_x - visarea.min_x + 1,
+ visarea.max_y - visarea.min_y + 1);
+ }
+
+ for (i=numFolders-1;i>=start_folder;i--)
+ {
+ if (strcmp(treeFolders[i]->m_lpTitle, Resolution) == 0)
+ {
+ AddGame(treeFolders[i],jj);
+ break;
+ }
+ }
+ if (i == start_folder-1)
+ {
+ lpTemp = NewFolder(Resolution, next_folder_id++, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ AddGame(lpTemp,jj);
+ }
+ }
+ }
+}
+
+void CreateFPSFolders(int parent_index)
+{
+ int i, jj;
+ int nGames = driver_list::total();
+ int nFolder = numFolders;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+ LPTREEFOLDER map[256];
+ LPTREEFOLDER lpTemp;
+ float fps[256];
+ int nFPS = 0;
+
+ // no games in top level folder
+ SetAllBits(lpFolder->m_lpGameBits,FALSE);
+
+ for (i = 0; i < nGames; i++)
+ {
+ float f;
+ machine_config config(driver_list::driver(i), MameUIGlobal());
+ const screen_device *screen;
+ screen = config.first_screen();
+ if (screen != NULL)
+ {
+ f = ATTOSECONDS_TO_HZ(screen->refresh_attoseconds());
+
+ for (jj = 0; jj < nFPS; jj++)
+ if (fps[jj] == f)
+ break;
+
+ if (nFPS == jj)
+ {
+ char buf[50];
+
+ assert(nFPS + 1 < ARRAY_LENGTH(fps));
+ assert(nFPS + 1 < ARRAY_LENGTH(map));
+
+ sprintf(buf, "%f Hz", f);
+
+ lpTemp = NewFolder(buf, next_folder_id++, parent_index, IDI_FOLDER, GetFolderFlags(numFolders));
+ AddFolder(lpTemp);
+ map[nFPS] = treeFolders[nFolder++];
+ fps[nFPS++] = f;
+ }
+
+ AddGame(map[jj],i);
+ }
+ }
+}
+
+// creates child folders of all the top level folders, including custom ones
+void CreateAllChildFolders(void)
+{
+ int num_top_level_folders = numFolders;
+ int i, j;
+
+ for (i = 0; i < num_top_level_folders; i++)
+ {
+ LPTREEFOLDER lpFolder = treeFolders[i];
+ LPCFOLDERDATA lpFolderData = NULL;
+
+ for (j = 0; g_lpFolderData[j].m_lpTitle; j++)
+ {
+ if (g_lpFolderData[j].m_nFolderId == lpFolder->m_nFolderId)
+ {
+ lpFolderData = &g_lpFolderData[j];
+ break;
+ }
+ }
+
+ if (lpFolderData != NULL)
+ {
+ //dprintf("Found built-in-folder id %i %i\n",i,lpFolder->m_nFolderId);
+ if (lpFolderData->m_pfnCreateFolders != NULL)
+ lpFolderData->m_pfnCreateFolders(i);
+ }
+ else
+ {
+ if ((lpFolder->m_dwFlags & F_CUSTOM) == 0)
+ {
+ dprintf("Internal inconsistency with non-built-in folder, but not custom\n");
+ continue;
+ }
+
+ //dprintf("Loading custom folder %i %i\n",i,lpFolder->m_nFolderId);
+
+ // load the extra folder files, which also adds children
+ if (TryAddExtraFolderAndChildren(i) == FALSE)
+ {
+ lpFolder->m_nFolderId = FOLDER_NONE;
+ }
+ }
+ }
+}
+
+// adds these folders to the treeview
+void ResetTreeViewFolders(void)
+{
+ HWND hTreeView = GetTreeView();
+ int i;
+ TVITEM tvi;
+ TVINSERTSTRUCT tvs;
+ BOOL res;
+
+ HTREEITEM shti; // for current child branches
+
+ // currently "cached" parent
+ HTREEITEM hti_parent = NULL;
+ int index_parent = -1;
+
+ res = TreeView_DeleteAllItems(hTreeView);
+
+ //dprintf("Adding folders to tree ui indices %i to %i\n",start_index,end_index);
+
+ tvs.hInsertAfter = TVI_SORT;
+
+ for (i=0;i<numFolders;i++)
+ {
+ LPTREEFOLDER lpFolder = treeFolders[i];
+
+ if (lpFolder->m_nParent == -1)
+ {
+ if (lpFolder->m_nFolderId < MAX_FOLDERS)
+ {
+ // it's a built in folder, let's see if we should show it
+ if (GetShowFolder(lpFolder->m_nFolderId) == FALSE)
+ {
+ continue;
+ }
+ }
+
+ tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvs.hParent = TVI_ROOT;
+ tvi.pszText = lpFolder->m_lptTitle;
+ tvi.lParam = (LPARAM)lpFolder;
+ tvi.iImage = GetTreeViewIconIndex(lpFolder->m_nIconId);
+ tvi.iSelectedImage = 0;
+
+ tvs.item = tvi;
+
+ // Add root branch
+ hti_parent = TreeView_InsertItem(hTreeView, &tvs);
+
+ continue;
+ }
+
+ // not a top level branch, so look for parent
+ if (treeFolders[i]->m_nParent != index_parent)
+ {
+
+ hti_parent = TreeView_GetRoot(hTreeView);
+ while (1)
+ {
+ if (hti_parent == NULL)
+ {
+ // couldn't find parent folder, so it's a built-in but
+ // not shown folder
+ break;
+ }
+
+ tvi.hItem = hti_parent;
+ tvi.mask = TVIF_PARAM;
+ res = TreeView_GetItem(hTreeView,&tvi);
+ if (((LPTREEFOLDER)tvi.lParam) == treeFolders[treeFolders[i]->m_nParent])
+ break;
+
+ hti_parent = TreeView_GetNextSibling(hTreeView,hti_parent);
+ }
+
+ // if parent is not shown, then don't show the child either obviously!
+ if (hti_parent == NULL)
+ continue;
+
+ index_parent = treeFolders[i]->m_nParent;
+ }
+
+ tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvs.hParent = hti_parent;
+ tvi.iImage = GetTreeViewIconIndex(treeFolders[i]->m_nIconId);
+ tvi.iSelectedImage = 0;
+ tvi.pszText = treeFolders[i]->m_lptTitle;
+ tvi.lParam = (LPARAM)treeFolders[i];
+
+ tvs.item = tvi;
+
+ // Add it to this tree branch
+ shti = TreeView_InsertItem(hTreeView, &tvs);
+
+ }
+}
+
+void SelectTreeViewFolder(int folder_id)
+{
+ HWND hTreeView = GetTreeView();
+ HTREEITEM hti;
+ TVITEM tvi;
+ BOOL res;
+
+ memset(&tvi,0,sizeof(tvi));
+
+ hti = TreeView_GetRoot(hTreeView);
+
+ while (hti != NULL)
+ {
+ HTREEITEM hti_next;
+
+ tvi.hItem = hti;
+ tvi.mask = TVIF_PARAM;
+ res = TreeView_GetItem(hTreeView,&tvi);
+
+ if (((LPTREEFOLDER)tvi.lParam)->m_nFolderId == folder_id)
+ {
+ res = TreeView_SelectItem(hTreeView,tvi.hItem);
+ SetCurrentFolder((LPTREEFOLDER)tvi.lParam);
+ return;
+ }
+
+ hti_next = TreeView_GetChild(hTreeView,hti);
+ if (hti_next == NULL)
+ {
+ hti_next = TreeView_GetNextSibling(hTreeView,hti);
+ if (hti_next == NULL)
+ {
+ hti_next = TreeView_GetParent(hTreeView,hti);
+ if (hti_next != NULL)
+ hti_next = TreeView_GetNextSibling(hTreeView,hti_next);
+ }
+ }
+ hti = hti_next;
+ }
+
+ // could not find folder to select
+ // make sure we select something
+ tvi.hItem = TreeView_GetRoot(hTreeView);
+ tvi.mask = TVIF_PARAM;
+ res = TreeView_GetItem(hTreeView,&tvi);
+
+ res = TreeView_SelectItem(hTreeView,tvi.hItem);
+ SetCurrentFolder((LPTREEFOLDER)tvi.lParam);
+}
+
+/*
+ * Does this folder have an INI associated with it?
+ * Currently only TRUE for FOLDER_VECTOR and children
+ * of FOLDER_SOURCE.
+ */
+static BOOL FolderHasIni(LPTREEFOLDER lpFolder) {
+ if (FOLDER_VECTOR == lpFolder->m_nFolderId ||
+ FOLDER_VERTICAL == lpFolder->m_nFolderId ||
+ FOLDER_HORIZONTAL == lpFolder->m_nFolderId) {
+ return TRUE;
+ }
+ if (lpFolder->m_nParent != -1
+ && FOLDER_SOURCE == treeFolders[lpFolder->m_nParent]->m_nFolderId) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/* Add a folder to the list. Does not allocate */
+static BOOL AddFolder(LPTREEFOLDER lpFolder)
+{
+ TREEFOLDER **tmpTree = NULL;
+ UINT oldFolderArrayLength = folderArrayLength;
+ if (numFolders + 1 >= folderArrayLength)
+ {
+ folderArrayLength += 500;
+ tmpTree = (TREEFOLDER **)malloc(sizeof(TREEFOLDER **) * folderArrayLength);
+ memcpy(tmpTree,treeFolders,sizeof(TREEFOLDER **) * oldFolderArrayLength);
+ if (treeFolders) free(treeFolders);
+ treeFolders = tmpTree;
+ }
+
+ /* Is there an folder.ini that can be edited? */
+ if (FolderHasIni(lpFolder)) {
+ lpFolder->m_dwFlags |= F_INIEDIT;
+ }
+
+ treeFolders[numFolders] = lpFolder;
+ numFolders++;
+ return TRUE;
+}
+
+/* Allocate and initialize a NEW TREEFOLDER */
+static LPTREEFOLDER NewFolder(const char *lpTitle, UINT nFolderId, int nParent, UINT nIconId, DWORD dwFlags)
+{
+ LPTREEFOLDER lpFolder = (LPTREEFOLDER)malloc(sizeof(TREEFOLDER));
+ memset(lpFolder, '\0', sizeof (TREEFOLDER));
+ lpFolder->m_lpTitle = (LPSTR)malloc(strlen(lpTitle) + 1);
+ strcpy((char *)lpFolder->m_lpTitle,lpTitle);
+ lpFolder->m_lptTitle = ui_wstring_from_utf8(lpFolder->m_lpTitle);
+ lpFolder->m_lpGameBits = NewBits(driver_list::total());
+ lpFolder->m_nFolderId = nFolderId;
+ lpFolder->m_nParent = nParent;
+ lpFolder->m_nIconId = nIconId;
+ lpFolder->m_dwFlags = dwFlags;
+ return lpFolder;
+}
+
+/* Deallocate the passed in LPTREEFOLDER */
+static void DeleteFolder(LPTREEFOLDER lpFolder)
+{
+ if (lpFolder)
+ {
+ if (lpFolder->m_lpGameBits)
+ {
+ DeleteBits(lpFolder->m_lpGameBits);
+ lpFolder->m_lpGameBits = 0;
+ }
+ free(lpFolder->m_lptTitle);
+ lpFolder->m_lptTitle = 0;
+ free(lpFolder->m_lpTitle);
+ lpFolder->m_lpTitle = 0;
+ free(lpFolder);
+ lpFolder = 0;
+ }
+}
+
+/* Can be called to re-initialize the array of treeFolders */
+BOOL InitFolders(void)
+{
+ int i = 0;
+ DWORD dwFolderFlags;
+ LPCFOLDERDATA fData = 0;
+ if (treeFolders != NULL)
+ {
+ for (i = numFolders - 1; i >= 0; i--)
+ {
+ DeleteFolder(treeFolders[i]);
+ treeFolders[i] = 0;
+ numFolders--;
+ }
+ }
+ numFolders = 0;
+ if (folderArrayLength == 0)
+ {
+ folderArrayLength = 200;
+ treeFolders = (TREEFOLDER **)malloc(sizeof(TREEFOLDER **) * folderArrayLength);
+ if (!treeFolders)
+ {
+ folderArrayLength = 0;
+ return 0;
+ }
+ else
+ {
+ memset(treeFolders,'\0', sizeof(TREEFOLDER **) * folderArrayLength);
+ }
+ }
+ // built-in top level folders
+ for (i = 0; g_lpFolderData[i].m_lpTitle; i++)
+ {
+ fData = &g_lpFolderData[i];
+ /* get the saved folder flags */
+ dwFolderFlags = GetFolderFlags(numFolders);
+ /* create the folder */
+ AddFolder(NewFolder(fData->m_lpTitle, fData->m_nFolderId, -1, fData->m_nIconId, dwFolderFlags));
+ }
+
+ numExtraFolders = InitExtraFolders();
+
+ for (i = 0; i < numExtraFolders; i++)
+ {
+ LPEXFOLDERDATA fExData = ExtraFolderData[i];
+
+ // OR in the saved folder flags
+ dwFolderFlags = fExData->m_dwFlags | GetFolderFlags(numFolders);
+ // create the folder
+ //dprintf("creating top level custom folder with icon %i\n",fExData->m_nIconId);
+ AddFolder(NewFolder(fExData->m_szTitle,fExData->m_nFolderId,fExData->m_nParent, fExData->m_nIconId,dwFolderFlags));
+ }
+
+ CreateAllChildFolders();
+ CreateTreeIcons();
+ ResetWhichGamesInFolders();
+ ResetTreeViewFolders();
+ SelectTreeViewFolder(GetSavedFolderID());
+ LoadFolderFlags();
+ return TRUE;
+}
+
+// create iconlist and Treeview control
+static BOOL CreateTreeIcons()
+{
+ HICON hIcon;
+ INT i;
+ HINSTANCE hInst = GetModuleHandle(0);
+
+ int numIcons = ICON_MAX + numExtraIcons;
+ hTreeSmall = ImageList_Create (16, 16, ILC_COLORDDB | ILC_MASK, numIcons, numIcons);
+
+ //dprintf("Trying to load %i normal icons\n",ICON_MAX);
+ for (i = 0; i < ICON_MAX; i++)
+ {
+ hIcon = LoadIconFromFile(treeIconNames[i].lpName);
+ if (!hIcon)
+ hIcon = LoadIcon(hInst, MAKEINTRESOURCE(treeIconNames[i].nResourceID));
+
+ if (ImageList_AddIcon (hTreeSmall, hIcon) == -1)
+ {
+ ErrorMsg("Error creating icon on regular folder, %i %i",i,hIcon != NULL);
+ return FALSE;
+ }
+ }
+
+ //dprintf("Trying to load %i extra custom-folder icons\n",numExtraIcons);
+ for (i = 0; i < numExtraIcons; i++)
+ {
+ if ((hIcon = LoadIconFromFile(ExtraFolderIcons[i])) == 0)
+ hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_FOLDER));
+
+ if (ImageList_AddIcon(hTreeSmall, hIcon) == -1)
+ {
+ ErrorMsg("Error creating icon on extra folder, %i %i",i,hIcon != NULL);
+ return FALSE;
+ }
+ }
+
+ // Be sure that all the small icons were added.
+ if (ImageList_GetImageCount(hTreeSmall) < numIcons)
+ {
+ ErrorMsg("Error with icon list--too few images. %i %i", ImageList_GetImageCount(hTreeSmall),numIcons);
+ return FALSE;
+ }
+
+ // Be sure that all the small icons were added.
+
+ if (ImageList_GetImageCount (hTreeSmall) < ICON_MAX)
+ {
+ ErrorMsg("Error with icon list--too few images. %i < %i", ImageList_GetImageCount(hTreeSmall),(INT)ICON_MAX);
+ return FALSE;
+ }
+
+ // Associate the image lists with the list view control.
+ (void)TreeView_SetImageList(GetTreeView(), hTreeSmall, TVSIL_NORMAL);
+
+ return TRUE;
+}
+
+
+static void TreeCtrlOnPaint(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ PAINTSTRUCT ps;
+ HDC hDC;
+ RECT rcClip, rcClient;
+ HDC memDC;
+ HBITMAP bitmap;
+ HBITMAP hOldBitmap;
+
+ HBITMAP hBackground = GetBackgroundBitmap();
+ MYBITMAPINFO *bmDesc = GetBackgroundInfo();
+
+ hDC = BeginPaint(hWnd, &ps);
+
+ GetClipBox(hDC, &rcClip);
+ GetClientRect(hWnd, &rcClient);
+
+ // Create a compatible memory DC
+ memDC = CreateCompatibleDC(hDC);
+
+ // Select a compatible bitmap into the memory DC
+ bitmap = CreateCompatibleBitmap(hDC, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top);
+ hOldBitmap = (HBITMAP)SelectObject(memDC, bitmap);
+
+ // First let the control do its default drawing.
+ CallWindowProc(g_lpTreeWndProc, hWnd, uMsg, (WPARAM)memDC, 0);
+
+ // Draw bitmap in the background
+
+ {
+ HPALETTE hPAL;
+ HDC maskDC;
+ HBITMAP maskBitmap;
+ HDC tempDC;
+ HDC imageDC;
+ HBITMAP bmpImage;
+ HBITMAP hOldBmpImage;
+ HBITMAP hOldMaskBitmap;
+ HBITMAP hOldHBitmap;
+ int i, j;
+ RECT rcRoot;
+
+ // Now create a mask
+ maskDC = CreateCompatibleDC(hDC);
+
+ // Create monochrome bitmap for the mask
+ maskBitmap = CreateBitmap(rcClient.right - rcClient.left, rcClient.bottom - rcClient.top, 1, 1, NULL);
+
+ hOldMaskBitmap = (HBITMAP)SelectObject(maskDC, maskBitmap);
+ SetBkColor(memDC, GetSysColor(COLOR_WINDOW));
+
+ // Create the mask from the memory DC
+ BitBlt(maskDC, 0, 0, rcClient.right - rcClient.left,
+ rcClient.bottom - rcClient.top, memDC,
+ rcClient.left, rcClient.top, SRCCOPY);
+
+ tempDC = CreateCompatibleDC(hDC);
+ hOldHBitmap = (HBITMAP)SelectObject(tempDC, hBackground);
+
+ imageDC = CreateCompatibleDC(hDC);
+ bmpImage = CreateCompatibleBitmap(hDC, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top);
+ hOldBmpImage = (HBITMAP)SelectObject(imageDC, bmpImage);
+
+ hPAL = GetBackgroundPalette();
+ if (hPAL == NULL)
+ hPAL = CreateHalftonePalette(hDC);
+
+ if (GetDeviceCaps(hDC, RASTERCAPS) & RC_PALETTE && hPAL != NULL)
+ {
+ SelectPalette(hDC, hPAL, FALSE);
+ RealizePalette(hDC);
+ SelectPalette(imageDC, hPAL, FALSE);
+ }
+
+ // Get x and y offset
+ TreeView_GetItemRect(hWnd, TreeView_GetRoot(hWnd), &rcRoot, FALSE);
+ rcRoot.left = -GetScrollPos(hWnd, SB_HORZ);
+
+ // Draw bitmap in tiled manner to imageDC
+ for (i = rcRoot.left; i < rcClient.right; i += bmDesc->bmWidth)
+ for (j = rcRoot.top; j < rcClient.bottom; j += bmDesc->bmHeight)
+ BitBlt(imageDC, i, j, bmDesc->bmWidth, bmDesc->bmHeight,
+ tempDC, 0, 0, SRCCOPY);
+
+ // Set the background in memDC to black. Using SRCPAINT with black and any other
+ // color results in the other color, thus making black the transparent color
+ SetBkColor(memDC, RGB(0,0,0));
+ SetTextColor(memDC, RGB(255,255,255));
+ BitBlt(memDC, rcClip.left, rcClip.top, rcClip.right - rcClip.left,
+ rcClip.bottom - rcClip.top,
+ maskDC, rcClip.left, rcClip.top, SRCAND);
+
+ // Set the foreground to black. See comment above.
+ SetBkColor(imageDC, RGB(255,255,255));
+ SetTextColor(imageDC, RGB(0,0,0));
+ BitBlt(imageDC, rcClip.left, rcClip.top, rcClip.right - rcClip.left,
+ rcClip.bottom - rcClip.top,
+ maskDC, rcClip.left, rcClip.top, SRCAND);
+
+ // Combine the foreground with the background
+ BitBlt(imageDC, rcClip.left, rcClip.top, rcClip.right - rcClip.left,
+ rcClip.bottom - rcClip.top,
+ memDC, rcClip.left, rcClip.top, SRCPAINT);
+
+ // Draw the final image to the screen
+ BitBlt(hDC, rcClip.left, rcClip.top, rcClip.right - rcClip.left,
+ rcClip.bottom - rcClip.top,
+ imageDC, rcClip.left, rcClip.top, SRCCOPY);
+
+ SelectObject(maskDC, hOldMaskBitmap);
+ SelectObject(tempDC, hOldHBitmap);
+ SelectObject(imageDC, hOldBmpImage);
+
+ DeleteDC(maskDC);
+ DeleteDC(imageDC);
+ DeleteDC(tempDC);
+ DeleteBitmap(bmpImage);
+ DeleteBitmap(maskBitmap);
+
+ if (GetBackgroundPalette() == NULL)
+ {
+ DeletePalette(hPAL);
+ hPAL = NULL;
+ }
+ }
+
+ SelectObject(memDC, hOldBitmap);
+ DeleteBitmap(bitmap);
+ DeleteDC(memDC);
+ EndPaint(hWnd, &ps);
+ ReleaseDC(hWnd, hDC);
+}
+
+/* Header code - Directional Arrows */
+static LRESULT CALLBACK TreeWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ if (GetBackgroundBitmap() != NULL)
+ {
+ switch (uMsg)
+ {
+ case WM_MOUSEMOVE:
+ {
+ if (MouseHasBeenMoved())
+ ShowCursor(TRUE);
+ break;
+ }
+
+ case WM_KEYDOWN :
+ if (wParam == VK_F2)
+ {
+ if (lpCurrentFolder->m_dwFlags & F_CUSTOM)
+ {
+ TreeView_EditLabel(hWnd,TreeView_GetSelection(hWnd));
+ return TRUE;
+ }
+ }
+ break;
+
+ case WM_ERASEBKGND:
+ return TRUE;
+
+ case WM_PAINT:
+ TreeCtrlOnPaint(hWnd, uMsg, wParam, lParam);
+ UpdateWindow(hWnd);
+ break;
+ }
+ }
+
+ /* message not handled */
+ return CallWindowProc(g_lpTreeWndProc, hWnd, uMsg, wParam, lParam);
+}
+
+/*
+ * Filter code - should be moved to filter.c/filter.h
+ * Added 01/09/99 - MSH <mhaaland@hypertech.com>
+ */
+
+/* find a FOLDERDATA by folderID */
+LPCFOLDERDATA FindFilter(DWORD folderID)
+{
+ int i;
+
+ for (i = 0; g_lpFolderData[i].m_lpTitle; i++)
+ {
+ if (g_lpFolderData[i].m_nFolderId == folderID)
+ return &g_lpFolderData[i];
+ }
+ return (LPFOLDERDATA) 0;
+}
+
+
+LPTREEFOLDER GetFolderByName(int nParentId, const char *pszFolderName)
+{
+ int i = 0, nParent;
+
+ //First Get the Parent TreeviewItem
+ //Enumerate Children
+ for(i = 0; i < numFolders/* ||treeFolders[i] != NULL*/; i++)
+ {
+ if (!strcmp(treeFolders[i]->m_lpTitle, pszFolderName))
+ {
+ nParent = treeFolders[i]->m_nParent;
+ if ((nParent >= 0) && treeFolders[nParent]->m_nFolderId == nParentId)
+ return treeFolders[i];
+ }
+ }
+ return NULL;
+}
+
+static int InitExtraFolders(void)
+{
+ struct stat stat_buffer;
+ struct _finddata_t files;
+ int i, count = 0;
+ long hLong;
+ char* ext;
+ char buf[256];
+ char curdir[MAX_PATH];
+ const char* dir = GetFolderDir();
+
+ memset(ExtraFolderData, 0, (MAX_EXTRA_FOLDERS * MAX_EXTRA_SUBFOLDERS)* sizeof(LPEXFOLDERDATA));
+
+ /* NPW 9-Feb-2003 - MSVC stat() doesn't like stat() called with an empty string */
+ if (dir[0] == '\0')
+ dir = ".";
+
+ // Why create the directory if it doesn't exist, just return 0 folders.
+ if (stat(dir, &stat_buffer) != 0)
+ {
+ return 0; // _mkdir(dir);
+ }
+
+ _getcwd(curdir, MAX_PATH);
+
+ chdir(dir);
+
+ hLong = _findfirst("*", &files);
+
+ for (i = 0; i < MAX_EXTRA_FOLDERS; i++)
+ {
+ ExtraFolderIcons[i] = NULL;
+ }
+
+ numExtraIcons = 0;
+
+ while (!_findnext(hLong, &files))
+ {
+ if ((files.attrib & _A_SUBDIR) == 0)
+ {
+ FILE *fp;
+
+ fp = fopen(files.name, "r");
+ if (fp != NULL)
+ {
+ int icon[2] = { 0, 0 };
+ char *p, *name;
+
+ while (fgets(buf, 256, fp))
+ {
+ if (buf[0] == '[')
+ {
+ p = strchr(buf, ']');
+ if (p == NULL)
+ continue;
+
+ *p = '\0';
+ name = &buf[1];
+ if (!strcmp(name, "FOLDER_SETTINGS"))
+ {
+ while (fgets(buf, 256, fp))
+ {
+ name = strtok(buf, " =\r\n");
+ if (name == NULL)
+ break;
+
+ if (!strcmp(name, "RootFolderIcon"))
+ {
+ name = strtok(NULL, " =\r\n");
+ if (name != NULL)
+ SetExtraIcons(name, &icon[0]);
+ }
+ if (!strcmp(name, "SubFolderIcon"))
+ {
+ name = strtok(NULL, " =\r\n");
+ if (name != NULL)
+ SetExtraIcons(name, &icon[1]);
+ }
+ }
+ break;
+ }
+ }
+ }
+ fclose(fp);
+
+ strcpy(buf, files.name);
+ ext = strrchr(buf, '.');
+
+ if (ext && *(ext + 1) && !core_stricmp(ext + 1, "ini"))
+ {
+ ExtraFolderData[count] =(EXFOLDERDATA*) malloc(sizeof(EXFOLDERDATA));
+ if (ExtraFolderData[count])
+ {
+ *ext = '\0';
+
+ memset(ExtraFolderData[count], 0, sizeof(EXFOLDERDATA));
+
+ strncpy(ExtraFolderData[count]->m_szTitle, buf, 63);
+ ExtraFolderData[count]->m_nFolderId = next_folder_id++;
+ ExtraFolderData[count]->m_nParent = -1;
+ ExtraFolderData[count]->m_dwFlags = F_CUSTOM;
+ ExtraFolderData[count]->m_nIconId = icon[0] ? -icon[0] : IDI_FOLDER;
+ ExtraFolderData[count]->m_nSubIconId = icon[1] ? -icon[1] : IDI_FOLDER;
+ //dprintf("extra folder with icon %i, subicon %i\n",
+ //ExtraFolderData[count]->m_nIconId,
+ //ExtraFolderData[count]->m_nSubIconId);
+ count++;
+ }
+ }
+ }
+ }
+ }
+
+ chdir(curdir);
+ return count;
+}
+
+void FreeExtraFolders(void)
+{
+ int i;
+
+ for (i = 0; i < numExtraFolders; i++)
+ {
+ if (ExtraFolderData[i])
+ {
+ free(ExtraFolderData[i]);
+ ExtraFolderData[i] = NULL;
+ }
+ }
+
+ for (i = 0; i < numExtraIcons; i++)
+ {
+ free(ExtraFolderIcons[i]);
+ }
+
+ numExtraIcons = 0;
+
+}
+
+
+static void SetExtraIcons(char *name, int *id)
+{
+ char *p = strchr(name, '.');
+
+ if (p != NULL)
+ *p = '\0';
+
+ ExtraFolderIcons[numExtraIcons] = (char*)malloc(strlen(name) + 1);
+ if (ExtraFolderIcons[numExtraIcons])
+ {
+ *id = ICON_MAX + numExtraIcons;
+ strcpy(ExtraFolderIcons[numExtraIcons], name);
+ numExtraIcons++;
+ }
+}
+
+
+// Called to add child folders of the top level extra folders already created
+BOOL TryAddExtraFolderAndChildren(int parent_index)
+{
+ FILE* fp = NULL;
+ char fname[MAX_PATH];
+ char readbuf[256];
+ char* p;
+ char* name;
+ int id, current_id, i;
+ LPTREEFOLDER lpTemp = NULL;
+ LPTREEFOLDER lpFolder = treeFolders[parent_index];
+
+ current_id = lpFolder->m_nFolderId;
+
+ id = lpFolder->m_nFolderId - MAX_FOLDERS;
+
+ /* "folder\title.ini" */
+
+ sprintf( fname, "%s\\%s.ini",
+ GetFolderDir(),
+ ExtraFolderData[id]->m_szTitle);
+
+ fp = fopen(fname, "r");
+ if (fp == NULL)
+ return FALSE;
+
+ while ( fgets(readbuf, 256, fp) )
+ {
+ /* do we have [...] ? */
+
+ if (readbuf[0] == '[')
+ {
+ p = strchr(readbuf, ']');
+ if (p == NULL)
+ {
+ continue;
+ }
+
+ *p = '\0';
+ name = &readbuf[1];
+
+ /* is it [FOLDER_SETTINGS]? */
+
+ if (strcmp(name, "FOLDER_SETTINGS") == 0)
+ {
+ current_id = -1;
+ continue;
+ }
+ else
+ {
+ /* it it [ROOT_FOLDER]? */
+
+ if (!strcmp(name, "ROOT_FOLDER"))
+ {
+ current_id = lpFolder->m_nFolderId;
+ lpTemp = lpFolder;
+
+ }
+ else
+ {
+ /* must be [folder name] */
+
+ current_id = next_folder_id++;
+ /* create a new folder with this name,
+ and the flags for this folder as read from the registry */
+ lpTemp = NewFolder(name,current_id,parent_index,
+ ExtraFolderData[id]->m_nSubIconId,
+ GetFolderFlags(numFolders) | F_CUSTOM);
+ ExtraFolderData[current_id] = (EXFOLDERDATA*)malloc(sizeof(EXFOLDERDATA));
+ memset(ExtraFolderData[current_id], 0, sizeof(EXFOLDERDATA));
+
+ ExtraFolderData[current_id]->m_nFolderId = current_id - MAX_EXTRA_FOLDERS;
+ ExtraFolderData[current_id]->m_nIconId = ExtraFolderData[id]->m_nSubIconId;
+ ExtraFolderData[current_id]->m_nParent = ExtraFolderData[id]->m_nFolderId;
+ ExtraFolderData[current_id]->m_nSubIconId = -1;
+ strcpy( ExtraFolderData[current_id]->m_szTitle, name );
+ ExtraFolderData[current_id]->m_dwFlags = ExtraFolderData[id]->m_dwFlags;
+ AddFolder(lpTemp);
+ }
+ }
+ }
+ else if (current_id != -1)
+ {
+ /* string on a line by itself -- game name */
+
+ name = strtok(readbuf, " \t\r\n");
+ if (name == NULL)
+ {
+ current_id = -1;
+ continue;
+ }
+
+ /* IMPORTANT: This assumes that all driver names are lowercase! */
+ for (i = 0; name[i]; i++)
+ name[i] = tolower(name[i]);
+
+ if (lpTemp == NULL)
+ {
+ ErrorMsg("Error parsing %s: missing [folder name] or [ROOT_FOLDER]", fname);
+ current_id = lpFolder->m_nFolderId;
+ lpTemp = lpFolder;
+ }
+ AddGame(lpTemp,GetGameNameIndex(name));
+ }
+ }
+
+ if ( fp )
+ {
+ fclose( fp );
+ }
+
+ return TRUE;
+}
+
+
+void GetFolders(TREEFOLDER ***folders,int *num_folders)
+{
+ *folders = treeFolders;
+ *num_folders = numFolders;
+}
+
+static BOOL TryRenameCustomFolderIni(LPTREEFOLDER lpFolder,const char *old_name,const char *new_name)
+{
+ char filename[MAX_PATH];
+ char new_filename[MAX_PATH];
+ LPTREEFOLDER lpParent = NULL;
+ if (lpFolder->m_nParent >= 0)
+ {
+ //it is a custom SubFolder
+ lpParent = GetFolder( lpFolder->m_nParent );
+ if( lpParent )
+ {
+ snprintf(filename,ARRAY_LENGTH(filename),"%s\\%s\\%s.ini",GetIniDir(),lpParent->m_lpTitle, old_name );
+ snprintf(new_filename,ARRAY_LENGTH(new_filename),"%s\\%s\\%s.ini",GetIniDir(),lpParent->m_lpTitle, new_name );
+ win_move_file_utf8(filename,new_filename);
+ }
+ }
+ else
+ {
+ //Rename the File, if it exists
+ snprintf(filename,ARRAY_LENGTH(filename),"%s\\%s.ini",GetIniDir(),old_name );
+ snprintf(new_filename,ARRAY_LENGTH(new_filename),"%s\\%s.ini",GetIniDir(), new_name );
+ win_move_file_utf8(filename,new_filename);
+ //Rename the Directory, if it exists
+ snprintf(filename,ARRAY_LENGTH(filename),"%s\\%s",GetIniDir(),old_name );
+ snprintf(new_filename,ARRAY_LENGTH(new_filename),"%s\\%s",GetIniDir(), new_name );
+ win_move_file_utf8(filename,new_filename);
+ }
+ return TRUE;
+}
+
+BOOL TryRenameCustomFolder(LPTREEFOLDER lpFolder, const char *new_name)
+{
+ BOOL retval;
+ char filename[MAX_PATH];
+ char new_filename[MAX_PATH];
+
+ if (lpFolder->m_nParent >= 0)
+ {
+ // a child extra folder was renamed, so do the rename and save the parent
+
+ // save old title
+ char *old_title = lpFolder->m_lpTitle;
+
+ // set new title
+ lpFolder->m_lpTitle = (char *)malloc(strlen(new_name) + 1);
+ strcpy(lpFolder->m_lpTitle,new_name);
+
+ // try to save
+ if (TrySaveExtraFolder(lpFolder) == FALSE)
+ {
+ // failed, so free newly allocated title and restore old
+ free(lpFolder->m_lpTitle);
+ lpFolder->m_lpTitle = old_title;
+ return FALSE;
+ }
+ TryRenameCustomFolderIni(lpFolder, old_title, new_name);
+ // successful, so free old title
+ free(old_title);
+ return TRUE;
+ }
+
+ // a parent extra folder was renamed, so rename the file
+
+ snprintf(new_filename,ARRAY_LENGTH(new_filename),"%s\\%s.ini",GetFolderDir(),new_name);
+ snprintf(filename,ARRAY_LENGTH(filename),"%s\\%s.ini",GetFolderDir(),lpFolder->m_lpTitle);
+
+ retval = win_move_file_utf8(filename,new_filename);
+
+ if (retval)
+ {
+ TryRenameCustomFolderIni(lpFolder, lpFolder->m_lpTitle, new_name);
+ free(lpFolder->m_lpTitle);
+ lpFolder->m_lpTitle = (char *)malloc(strlen(new_name) + 1);
+ strcpy(lpFolder->m_lpTitle,new_name);
+ }
+ else
+ {
+ char buf[500];
+ snprintf(buf,ARRAY_LENGTH(buf),"Error while renaming custom file %s to %s", filename,new_filename);
+ win_message_box_utf8(GetMainWindow(), buf, MAMEUINAME, MB_OK | MB_ICONERROR);
+ }
+ return retval;
+}
+
+void AddToCustomFolder(LPTREEFOLDER lpFolder,int driver_index)
+{
+ if ((lpFolder->m_dwFlags & F_CUSTOM) == 0)
+ {
+ win_message_box_utf8(GetMainWindow(),"Unable to add game to non-custom folder",
+ MAMEUINAME,MB_OK | MB_ICONERROR);
+ return;
+ }
+
+ if (TestBit(lpFolder->m_lpGameBits,driver_index) == 0)
+ {
+ AddGame(lpFolder,driver_index);
+ if (TrySaveExtraFolder(lpFolder) == FALSE)
+ RemoveGame(lpFolder,driver_index); // undo on error
+ }
+}
+
+void RemoveFromCustomFolder(LPTREEFOLDER lpFolder,int driver_index)
+{
+ if ((lpFolder->m_dwFlags & F_CUSTOM) == 0)
+ {
+ win_message_box_utf8(GetMainWindow(),"Unable to remove game from non-custom folder",
+ MAMEUINAME,MB_OK | MB_ICONERROR);
+ return;
+ }
+
+ if (TestBit(lpFolder->m_lpGameBits,driver_index) != 0)
+ {
+ RemoveGame(lpFolder,driver_index);
+ if (TrySaveExtraFolder(lpFolder) == FALSE)
+ AddGame(lpFolder,driver_index); // undo on error
+ }
+}
+
+BOOL TrySaveExtraFolder(LPTREEFOLDER lpFolder)
+{
+ char fname[MAX_PATH];
+ FILE *fp;
+ BOOL error = FALSE;
+ int i,j;
+
+ LPTREEFOLDER root_folder = NULL;
+ LPEXFOLDERDATA extra_folder = NULL;
+
+ for (i=0;i<numExtraFolders;i++)
+ {
+ if (ExtraFolderData[i]->m_nFolderId == lpFolder->m_nFolderId)
+ {
+ root_folder = lpFolder;
+ extra_folder = ExtraFolderData[i];
+ break;
+ }
+
+ if (lpFolder->m_nParent >= 0 &&
+ ExtraFolderData[i]->m_nFolderId == treeFolders[lpFolder->m_nParent]->m_nFolderId)
+ {
+ root_folder = treeFolders[lpFolder->m_nParent];
+ extra_folder = ExtraFolderData[i];
+ break;
+ }
+ }
+
+ if (extra_folder == NULL || root_folder == NULL)
+ {
+ MessageBox(GetMainWindow(), TEXT("Error finding custom file name to save"), (LPCTSTR)MAMEUINAME, MB_OK | MB_ICONERROR);
+ return FALSE;
+ }
+ /* "folder\title.ini" */
+
+ snprintf( fname, sizeof(fname), "%s\\%s.ini", GetFolderDir(), extra_folder->m_szTitle);
+
+ fp = fopen(fname, "wt");
+ if (fp == NULL)
+ error = TRUE;
+ else
+ {
+ TREEFOLDER *folder_data;
+
+
+ fprintf(fp,"[FOLDER_SETTINGS]\n");
+ // negative values for icons means it's custom, so save 'em
+ if (extra_folder->m_nIconId < 0)
+ {
+ fprintf(fp, "RootFolderIcon %s\n", ExtraFolderIcons[(-extra_folder->m_nIconId) - ICON_MAX]);
+ }
+ if (extra_folder->m_nSubIconId < 0)
+ {
+ fprintf(fp,"SubFolderIcon %s\n", ExtraFolderIcons[(-extra_folder->m_nSubIconId) - ICON_MAX]);
+ }
+
+ /* need to loop over all our TREEFOLDERs--first the root one, then each child.
+ start with the root */
+
+ folder_data = root_folder;
+
+ fprintf(fp,"\n[ROOT_FOLDER]\n");
+
+ for (i=0;i<driver_list::total();i++)
+ {
+ if (TestBit(folder_data->m_lpGameBits, i))
+ {
+ fprintf(fp,"%s\n",driver_list::driver(i).name);
+ }
+ }
+
+ /* look through the custom folders for ones with our root as parent */
+ for (j=0;j<numFolders;j++)
+ {
+ folder_data = treeFolders[j];
+
+ if (folder_data->m_nParent >= 0 &&
+ treeFolders[folder_data->m_nParent] == root_folder)
+ {
+ fprintf(fp,"\n[%s]\n",folder_data->m_lpTitle);
+
+ for (i=0;i<driver_list::total();i++)
+ {
+ if (TestBit(folder_data->m_lpGameBits, i))
+ {
+ fprintf(fp,"%s\n",driver_list::driver(i).name);
+ }
+ }
+ }
+ }
+ if (fclose(fp) != 0)
+ error = TRUE;
+ }
+
+ if (error)
+ {
+ char buf[500];
+ snprintf(buf,ARRAY_LENGTH(buf),"Error while saving custom file %s",fname);
+ win_message_box_utf8(GetMainWindow(), buf, MAMEUINAME, MB_OK | MB_ICONERROR);
+ }
+ return !error;
+}
+
+HIMAGELIST GetTreeViewIconList(void)
+{
+ return hTreeSmall;
+}
+
+int GetTreeViewIconIndex(int icon_id)
+{
+ int i;
+
+ if (icon_id < 0)
+ return -icon_id;
+
+ for (i = 0; i < ARRAY_LENGTH(treeIconNames); i++)
+ {
+ if (icon_id == treeIconNames[i].nResourceID)
+ return i;
+ }
+
+ return -1;
+}
+
+/* End of source file */
diff --git a/docs/release/src/osd/winui/treeview.h b/docs/release/src/osd/winui/treeview.h
new file mode 100644
index 00000000000..e61747dc981
--- /dev/null
+++ b/docs/release/src/osd/winui/treeview.h
@@ -0,0 +1,210 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef TREEVIEW_H
+#define TREEVIEW_H
+
+/* corrections for commctrl.h */
+
+#if defined(__GNUC__)
+/* fix warning: cast does not match function type */
+#undef TreeView_InsertItem
+#define TreeView_InsertItem(w,i) (HTREEITEM)(LRESULT)(int)SendMessage((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i))
+
+#undef TreeView_SetImageList
+#define TreeView_SetImageList(w,h,i) (HIMAGELIST)(LRESULT)(int)SendMessage((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h))
+
+#undef TreeView_GetNextItem
+#define TreeView_GetNextItem(w,i,c) (HTREEITEM)(LRESULT)(int)SendMessage((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i))
+
+#undef TreeView_HitTest
+#define TreeView_HitTest(hwnd, lpht) \
+ (HTREEITEM)(LRESULT)(int)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
+
+/* fix wrong return type */
+#undef TreeView_Select
+#define TreeView_Select(w,i,c) (BOOL)(int)SendMessage((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i))
+
+#undef TreeView_EditLabel
+#define TreeView_EditLabel(w, i) \
+ SNDMSG(w,TVM_EDITLABEL,0,(LPARAM)(i))
+
+#endif /* defined(__GNUC__) */
+
+/***************************************************************************
+ Folder And Filter Definitions
+ ***************************************************************************/
+
+typedef struct
+{
+ const char *m_lpTitle; // Folder Title
+ const char *short_name; // for saving in the .ini
+ UINT m_nFolderId; // ID
+ UINT m_nIconId; // if >= 0, resource id of icon (IDI_xxx), otherwise index in image list
+ DWORD m_dwUnset; // Excluded filters
+ DWORD m_dwSet; // Implied filters
+ void (*m_pfnCreateFolders)(int parent_index); // Constructor for special folders
+ BOOL (*m_pfnQuery)(int nDriver); // Query function
+ BOOL m_bExpectedResult; // Expected query result
+} FOLDERDATA, *LPFOLDERDATA;
+
+typedef const FOLDERDATA *LPCFOLDERDATA;
+
+typedef struct
+{
+ DWORD m_dwFilterType; /* Filter value */
+ DWORD m_dwCtrlID; /* Control ID that represents it */
+ BOOL (*m_pfnQuery)(int nDriver); /* Query function */
+ BOOL m_bExpectedResult; /* Expected query result */
+} FILTER_ITEM, *LPFILTER_ITEM;
+
+typedef const FILTER_ITEM *LPCFILTER_ITEM;
+
+/***************************************************************************
+ Functions to build builtin folder lists
+ ***************************************************************************/
+
+void CreateManufacturerFolders(int parent_index);
+void CreateYearFolders(int parent_index);
+void CreateSourceFolders(int parent_index);
+void CreateScreenFolders(int parent_index);
+void CreateCPUFolders(int parent_index);
+void CreateSoundFolders(int parent_index);
+void CreateOrientationFolders(int parent_index);
+void CreateDeficiencyFolders(int parent_index);
+void CreateDumpingFolders(int parent_index);
+void CreateBIOSFolders(int parent_index);
+void CreateFPSFolders(int parent_index);
+void CreateResolutionFolders(int parent_index);
+
+/***************************************************************************/
+
+#define MAX_EXTRA_FOLDERS 256
+#define MAX_EXTRA_SUBFOLDERS 256
+#define SHOW_UNAVAILABLE_FOLDER
+
+/* TreeView structures */
+enum
+{
+ FOLDER_NONE = 0,
+ FOLDER_ALLGAMES,
+ FOLDER_AVAILABLE,
+#ifdef SHOW_UNAVAILABLE_FOLDER
+ FOLDER_UNAVAILABLE,
+#endif
+ FOLDER_MANUFACTURER,
+ FOLDER_YEAR,
+ FOLDER_SOURCE,
+ FOLDER_CPU,
+ FOLDER_SND,
+ FOLDER_DEFICIENCY,
+ FOLDER_WORKING,
+ FOLDER_NONWORKING,
+ FOLDER_ORIGINAL,
+ FOLDER_CLONES,
+ FOLDER_RASTER,
+ FOLDER_VECTOR,
+ FOLDER_TRACKBALL,
+ FOLDER_LIGHTGUN,
+ FOLDER_STEREO,
+ FOLDER_HARDDISK,
+ FOLDER_SAMPLES,
+ FOLDER_DUMPING,
+ FOLDER_SAVESTATE,
+ FOLDER_BIOS,
+ FOLDER_RESOLUTION,
+ FOLDER_FPS,
+ FOLDER_HORIZONTAL,
+ FOLDER_VERTICAL,
+ FOLDER_SCREENS,
+ FOLDER_MECHANICAL,
+ FOLDER_NONMECHANICAL,
+ MAX_FOLDERS
+};
+
+typedef enum
+{
+ F_CLONES = 0x00000001,
+ F_NONWORKING = 0x00000002,
+ F_UNAVAILABLE = 0x00000004,
+ F_VECTOR = 0x00000008,
+ F_RASTER = 0x00000010,
+ F_ORIGINALS = 0x00000020,
+ F_WORKING = 0x00000040,
+ F_AVAILABLE = 0x00000080,
+ F_HORIZONTAL = 0x00000100,
+ F_VERTICAL = 0x00000200,
+ F_MECHANICAL = 0x00000400,
+ F_ARCADE = 0x00000800,
+ F_MESS = 0x00001000,
+#ifdef MESS
+ F_COMPUTER = 0x00002000,
+ F_CONSOLE = 0x00004000,
+ F_MODIFIED = 0x00008000,
+#endif
+ F_MASK = 0x0000FFFF,
+ F_INIEDIT = 0x00010000, // There is an .ini that can be edited. MSH 20070811
+ F_CUSTOM = 0x01000000 // for current .ini custom folders
+} FOLDERFLAG;
+
+typedef struct
+{
+ LPSTR m_lpTitle; // String contains the folder name
+ LPTSTR m_lptTitle; // String contains the folder name as TCHAR*
+ UINT m_nFolderId; // Index / Folder ID number
+ int m_nParent; // Parent folder index in treeFolders[]
+ int m_nIconId; // negative icon index into the ImageList, or IDI_xxx resource id
+ DWORD m_dwFlags; // Misc flags
+ LPBITS m_lpGameBits; // Game bits, represent game indices
+} TREEFOLDER, *LPTREEFOLDER;
+
+typedef struct
+{
+ char m_szTitle[64]; // Folder Title
+ UINT m_nFolderId; // ID
+ int m_nParent; // Parent Folder index in treeFolders[]
+ DWORD m_dwFlags; // Flags - Customizable and Filters
+ int m_nIconId; // negative icon index into the ImageList, or IDI_xxx resource id
+ int m_nSubIconId; // negative icon index into the ImageList, or IDI_xxx resource id
+} EXFOLDERDATA, *LPEXFOLDERDATA;
+
+void FreeFolders(void);
+void ResetFilters(void);
+void InitTree(LPCFOLDERDATA lpFolderData, LPCFILTER_ITEM lpFilterList);
+void SetCurrentFolder(LPTREEFOLDER lpFolder);
+UINT GetCurrentFolderID(void);
+
+LPTREEFOLDER GetCurrentFolder(void);
+int GetNumFolders(void);
+LPTREEFOLDER GetFolder(UINT nFolder);
+LPTREEFOLDER GetFolderByID(UINT nID);
+LPTREEFOLDER GetFolderByName(int nParentId, const char *pszFolderName);
+
+void AddGame(LPTREEFOLDER lpFolder, UINT nGame);
+void RemoveGame(LPTREEFOLDER lpFolder, UINT nGame);
+int FindGame(LPTREEFOLDER lpFolder, int nGame);
+
+void ResetWhichGamesInFolders(void);
+
+LPCFOLDERDATA FindFilter(DWORD folderID);
+
+bool GameFiltered(int nGame, DWORD dwFlags);
+BOOL GetParentFound(int nGame);
+
+LPCFILTER_ITEM GetFilterList(void);
+
+void SetTreeIconSize(HWND hWnd, BOOL bLarge);
+BOOL GetTreeIconSize(void);
+
+void GetFolders(TREEFOLDER ***folders,int *num_folders);
+BOOL TryRenameCustomFolder(LPTREEFOLDER lpFolder,const char *new_name);
+void AddToCustomFolder(LPTREEFOLDER lpFolder,int driver_index);
+void RemoveFromCustomFolder(LPTREEFOLDER lpFolder,int driver_index);
+
+HIMAGELIST GetTreeViewIconList(void);
+int GetTreeViewIconIndex(int icon_id);
+
+void ResetTreeViewFolders(void);
+void SelectTreeViewFolder(int folder_id);
+
+#endif /* TREEVIEW_H */
diff --git a/docs/release/src/osd/winui/winui.cpp b/docs/release/src/osd/winui/winui.cpp
new file mode 100644
index 00000000000..914fd9618a6
--- /dev/null
+++ b/docs/release/src/osd/winui/winui.cpp
@@ -0,0 +1,6683 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+ /***************************************************************************
+
+ winui.c
+
+ Win32 GUI code.
+
+ Created 8/12/97 by Christopher Kirmse (ckirmse@ricochet.net)
+ Additional code November 1997 by Jeff Miller (miller@aa.net)
+ More July 1998 by Mike Haaland (mhaaland@hypertech.com)
+ Added Spitters/Property Sheets/Removed Tabs/Added Tree Control in
+ Nov/Dec 1998 - Mike Haaland
+
+***************************************************************************/
+
+// standard windows headers
+#define _WIN32_IE 0x0501
+#include <windows.h>
+#include <windowsx.h>
+#include <shellapi.h>
+#include <commctrl.h>
+#include <wingdi.h>
+
+// standard C headers
+#include <stdio.h>
+#include <ctype.h>
+#include <io.h>
+#include <fcntl.h>
+#include <dlgs.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <tchar.h>
+
+
+// MAME/MAMEUI headers
+#include "emu.h"
+#include "mame.h"
+#include "mameopts.h"
+#include "language.h"
+#include "unzip.h"
+#include "winutf8.h"
+#include "strconv.h"
+#include "window.h"
+#include "../osdcore.h"
+#include "zippath.h"
+
+#include "resource.h"
+#include "resource.hm"
+
+#include "winui.h"
+#include "mui_util.h"
+#include "mui_audit.h"
+#include "directories.h"
+#include "mui_opts.h"
+#include "properties.h"
+#include "columnedit.h"
+#include "picker.h"
+#include "tabview.h"
+#include "bitmask.h"
+#include "treeview.h"
+#include "splitters.h"
+#include "dirwatch.h"
+#include "help.h"
+#include "history.h"
+#include "dialogs.h"
+#include "directdraw.h"
+#include "directinput.h"
+#include "dijoystick.h" /* For DIJoystick availability. */
+
+#ifdef _MSC_VER
+#define snprintf _snprintf
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
+#ifndef LVS_EX_LABELTIP
+#define LVS_EX_LABELTIP 0x00004000 // listview unfolds partly hidden labels if it does not have infotip text
+#endif // LVS_EX_LABELTIP
+
+// fix warning: cast does not match function type
+#if defined(__GNUC__) && defined(ListView_CreateDragImage)
+#undef ListView_CreateDragImage
+#endif
+
+#ifndef ListView_CreateDragImage
+#define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
+ (HIMAGELIST)(LRESULT)(int)SendMessage((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
+#endif // ListView_CreateDragImage
+
+#ifndef TreeView_EditLabel
+#define TreeView_EditLabel(w, i) \
+ SNDMSG(w,TVM_EDITLABEL,0,(LPARAM)(i))
+#endif // TreeView_EditLabel
+
+#ifndef HDF_SORTUP
+#define HDF_SORTUP 0x400
+#endif // HDF_SORTUP
+
+#ifndef HDF_SORTDOWN
+#define HDF_SORTDOWN 0x200
+#endif // HDF_SORTDOWN
+
+#ifndef LVM_SETBKIMAGEA
+#define LVM_SETBKIMAGEA (LVM_FIRST + 68)
+#endif // LVM_SETBKIMAGEA
+
+#ifndef LVM_SETBKIMAGEW
+#define LVM_SETBKIMAGEW (LVM_FIRST + 138)
+#endif // LVM_SETBKIMAGEW
+
+#ifndef LVM_GETBKIMAGEA
+#define LVM_GETBKIMAGEA (LVM_FIRST + 69)
+#endif // LVM_GETBKIMAGEA
+
+#ifndef LVM_GETBKIMAGEW
+#define LVM_GETBKIMAGEW (LVM_FIRST + 139)
+#endif // LVM_GETBKIMAGEW
+
+#ifndef LVBKIMAGE
+
+typedef struct tagLVBKIMAGEA
+{
+ ULONG ulFlags;
+ HBITMAP hbm;
+ LPSTR pszImage;
+ UINT cchImageMax;
+ int xOffsetPercent;
+ int yOffsetPercent;
+} LVBKIMAGEA, *LPLVBKIMAGEA;
+
+typedef struct tagLVBKIMAGEW
+{
+ ULONG ulFlags;
+ HBITMAP hbm;
+ LPWSTR pszImage;
+ UINT cchImageMax;
+ int xOffsetPercent;
+ int yOffsetPercent;
+} LVBKIMAGEW, *LPLVBKIMAGEW;
+
+#ifdef UNICODE
+#define LVBKIMAGE LVBKIMAGEW
+#define LPLVBKIMAGE LPLVBKIMAGEW
+#define LVM_SETBKIMAGE LVM_SETBKIMAGEW
+#define LVM_GETBKIMAGE LVM_GETBKIMAGEW
+#else
+#define LVBKIMAGE LVBKIMAGEA
+#define LPLVBKIMAGE LPLVBKIMAGEA
+#define LVM_SETBKIMAGE LVM_SETBKIMAGEA
+#define LVM_GETBKIMAGE LVM_GETBKIMAGEA
+#endif
+#endif
+
+#ifndef LVBKIF_SOURCE_NONE
+#define LVBKIF_SOURCE_NONE 0x00000000
+#endif // LVBKIF_SOURCE_NONE
+
+#ifndef LVBKIF_SOURCE_HBITMAP
+#define LVBKIF_SOURCE_HBITMAP 0x00000001
+#endif
+
+#ifndef LVBKIF_SOURCE_URL
+#define LVBKIF_SOURCE_URL 0x00000002
+#endif // LVBKIF_SOURCE_URL
+
+#ifndef LVBKIF_SOURCE_MASK
+#define LVBKIF_SOURCE_MASK 0x00000003
+#endif // LVBKIF_SOURCE_MASK
+
+#ifndef LVBKIF_STYLE_NORMAL
+#define LVBKIF_STYLE_NORMAL 0x00000000
+#endif // LVBKIF_STYLE_NORMAL
+
+#ifndef LVBKIF_STYLE_TILE
+#define LVBKIF_STYLE_TILE 0x00000010
+#endif // LVBKIF_STYLE_TILE
+
+#ifndef LVBKIF_STYLE_MASK
+#define LVBKIF_STYLE_MASK 0x00000010
+#endif // LVBKIF_STYLE_MASK
+
+#ifndef ListView_SetBkImage
+#define ListView_SetBkImage(hwnd, plvbki) \
+ (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki))
+#endif // ListView_SetBkImage
+
+#ifndef ListView_GetBkImage
+#define ListView_GetBkImage(hwnd, plvbki) \
+ (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki))
+#endif // ListView_GetBkImage
+
+#define MM_PLAY_GAME (WM_APP + 15000)
+
+#define JOYGUI_MS 100
+
+#define JOYGUI_TIMER 1
+#define SCREENSHOT_TIMER 2
+#define GAMEWND_TIMER 3
+
+/* Max size of a sub-menu */
+#define DBU_MIN_WIDTH 292
+#define DBU_MIN_HEIGHT 190
+
+static int MIN_WIDTH = DBU_MIN_WIDTH;
+static int MIN_HEIGHT = DBU_MIN_HEIGHT;
+
+/* Max number of bkground picture files */
+#define MAX_BGFILES 100
+
+#ifndef LVS_EX_LABELTIP
+#define LVS_EX_LABELTIP 0x00004000 // listview unfolds partly hidden labels if it does not have infotip text
+#endif
+
+#define NO_FOLDER -1
+#define STATESAVE_VERSION 1
+//I could not find a predefined value for this event and docs just say it has 1 for the parameter
+#define TOOLBAR_EDIT_ACCELERATOR_PRESSED 1
+#define SHOW_MISSING_ROMS_ICON
+
+/***************************************************************************
+ externally defined global variables
+ ***************************************************************************/
+extern const ICONDATA g_iconData[];
+extern const TCHAR g_szPlayGameString[];
+extern const char g_szGameCountString[];
+UINT8 playopts_apply = 0;
+
+typedef struct _play_options play_options;
+struct _play_options
+{
+ const char *record; // OPTION_RECORD
+ const char *playback; // OPTION_PLAYBACK
+ const char *state; // OPTION_STATE
+ const char *wavwrite; // OPTION_WAVWRITE
+ const char *mngwrite; // OPTION_MNGWRITE
+ const char *aviwrite; // OPTION_AVIWRITE
+};
+
+/***************************************************************************
+ function prototypes
+ ***************************************************************************/
+
+static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow);
+static void Win32UI_exit(void);
+
+static BOOL PumpMessage(void);
+static BOOL OnIdle(HWND hWnd);
+static void OnSize(HWND hwnd, UINT state, int width, int height);
+static LRESULT CALLBACK MameWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
+
+static void SetView(int menu_id);
+static void ResetListView(void);
+static void UpdateGameList(BOOL bUpdateRomAudit, BOOL bUpdateSampleAudit);
+static void DestroyIcons(void);
+static void ReloadIcons(void);
+static void PollGUIJoystick(void);
+//static void PressKey(HWND hwnd,UINT vk);
+static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify);
+static void KeyboardKeyDown(int syskey, int vk_code, int special);
+static void KeyboardKeyUp(int syskey, int vk_code, int special);
+static void KeyboardStateClear(void);
+
+static void UpdateStatusBar(void);
+//static BOOL PickerHitTest(HWND hWnd);
+static BOOL TreeViewNotify(NMHDR *nm);
+
+static void LoadBackgroundBitmap(void);
+static void PaintBackgroundImage(HWND hWnd, HRGN hRgn, int x, int y);
+
+static int GamePicker_Compare(HWND hwndPicker, int index1, int index2, int sort_subitem);
+
+static void DisableSelection(void);
+static void EnableSelection(int nGame);
+
+static HICON GetSelectedPickItemIcon(void);
+static void SetRandomPickItem(void);
+static void PickColor(COLORREF *cDefault);
+
+static LPTREEFOLDER GetSelectedFolder(void);
+static HICON GetSelectedFolderIcon(void);
+
+static LRESULT CALLBACK HistoryWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+static LRESULT CALLBACK PictureWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+static void MamePlayRecordGame(void);
+static void MamePlayBackGame(void);
+static void MamePlayRecordWave(void);
+static void MamePlayRecordMNG(void);
+static void MamePlayRecordAVI(void);
+static void MameLoadState(void);
+static void MamePlayGameWithOptions(int nGame, const play_options *playopts);
+static BOOL GameCheck(void);
+static BOOL FolderCheck(void);
+
+static void ToggleScreenShot(void);
+static void AdjustMetrics(void);
+//static void EnablePlayOptions(int nIndex, windows_options *o);
+
+/* Icon routines */
+static DWORD GetShellLargeIconSize(void);
+static DWORD GetShellSmallIconSize(void);
+static void CreateIcons(void);
+static int GetIconForDriver(int nItem);
+static void AddDriverIcon(int nItem,int default_icon_index);
+
+// Context Menu handlers
+static void UpdateMenu(HMENU hMenu);
+static void InitTreeContextMenu(HMENU hTreeMenu);
+static void InitBodyContextMenu(HMENU hBodyContextMenu);
+static void ToggleShowFolder(int folder);
+static BOOL HandleTreeContextMenu( HWND hWnd, WPARAM wParam, LPARAM lParam);
+static BOOL HandleScreenShotContextMenu( HWND hWnd, WPARAM wParam, LPARAM lParam);
+static void GamePicker_OnHeaderContextMenu(POINT pt, int nColumn);
+static void GamePicker_OnBodyContextMenu(POINT pt);
+
+static void InitListView(void);
+/* Re/initialize the ListView header columns */
+static void ResetColumnDisplay(BOOL first_time);
+
+static void CopyToolTipText (LPTOOLTIPTEXT lpttt);
+
+static void ProgressBarShow(void);
+static void ProgressBarHide(void);
+static void ResizeProgressBar(void);
+static void ProgressBarStep(void);
+static void ProgressBarStepParam(int iGameIndex, int nGameCount);
+
+static HWND InitProgressBar(HWND hParent);
+static HWND InitToolbar(HWND hParent);
+static HWND InitStatusBar(HWND hParent);
+
+static LRESULT Statusbar_MenuSelect (HWND hwnd, WPARAM wParam, LPARAM lParam);
+
+static void UpdateHistory(void);
+
+
+static void RemoveCurrentGameCustomFolder(void);
+static void RemoveGameCustomFolder(int driver_index);
+
+static void BeginListViewDrag(NM_LISTVIEW *pnmv);
+static void MouseMoveListViewDrag(POINTS pt);
+static void ButtonUpListViewDrag(POINTS p);
+
+static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_height);
+
+BOOL MouseHasBeenMoved(void);
+static void SwitchFullScreenMode(void);
+
+/***************************************************************************
+ External variables
+ ***************************************************************************/
+
+/***************************************************************************
+ Internal structures
+ ***************************************************************************/
+
+/*
+ * These next two structs represent how the icon information
+ * is stored in an ICO file.
+ */
+typedef struct
+{
+ BYTE bWidth; /* Width of the image */
+ BYTE bHeight; /* Height of the image (times 2) */
+ BYTE bColorCount; /* Number of colors in image (0 if >=8bpp) */
+ BYTE bReserved; /* Reserved */
+ WORD wPlanes; /* Color Planes */
+ WORD wBitCount; /* Bits per pixel */
+ DWORD dwBytesInRes; /* how many bytes in this resource? */
+ DWORD dwImageOffset; /* where in the file is this image */
+} ICONDIRENTRY, *LPICONDIRENTRY;
+
+typedef struct
+{
+ UINT Width, Height, Colors; /* Width, Height and bpp */
+ LPBYTE lpBits; /* ptr to DIB bits */
+ DWORD dwNumBytes; /* how many bytes? */
+ LPBITMAPINFO lpbi; /* ptr to header */
+ LPBYTE lpXOR; /* ptr to XOR image bits */
+ LPBYTE lpAND; /* ptr to AND image bits */
+} ICONIMAGE, *LPICONIMAGE;
+
+/* Which edges of a control are anchored to the corresponding side of the parent window */
+#define RA_LEFT 0x01
+#define RA_RIGHT 0x02
+#define RA_TOP 0x04
+#define RA_BOTTOM 0x08
+#define RA_ALL 0x0F
+
+#define RA_END 0
+#define RA_ID 1
+#define RA_HWND 2
+
+typedef struct
+{
+ int type; /* Either RA_ID or RA_HWND, to indicate which member of u is used; or RA_END
+ to signify last entry */
+ union /* Can identify a child window by control id or by handle */
+ {
+ int id; /* Window control id */
+ HWND hwnd; /* Window handle */
+ } u;
+ BOOL setfont; /* Do we set this item's font? */
+ int action; /* What to do when control is resized */
+ void *subwindow; /* Points to a Resize structure for this subwindow; NULL if none */
+} ResizeItem;
+
+typedef struct
+{
+ RECT rect; /* Client rect of window; must be initialized before first resize */
+ const ResizeItem* items; /* Array of subitems to be resized */
+} Resize;
+
+static void ResizeWindow(HWND hParent, Resize *r);
+static void SetAllWindowsFont(HWND hParent, const Resize *r, HFONT hFont, BOOL bRedraw);
+
+/* List view Icon defines */
+#define LG_ICONMAP_WIDTH GetSystemMetrics(SM_CXICON)
+#define LG_ICONMAP_HEIGHT GetSystemMetrics(SM_CYICON)
+#define ICONMAP_WIDTH GetSystemMetrics(SM_CXSMICON)
+#define ICONMAP_HEIGHT GetSystemMetrics(SM_CYSMICON)
+
+typedef struct tagPOPUPSTRING
+{
+ HMENU hMenu;
+ UINT uiString;
+} POPUPSTRING;
+
+#define MAX_MENUS 3
+
+#define SPLITTER_WIDTH 4
+#define MIN_VIEW_WIDTH 10
+
+// Struct needed for Game Window Communication
+
+typedef struct
+{
+ LPPROCESS_INFORMATION ProcessInfo;
+ HWND hwndFound;
+} FINDWINDOWHANDLE;
+
+/***************************************************************************
+ Internal variables
+ ***************************************************************************/
+
+static HWND hMain = NULL;
+static HACCEL hAccel = NULL;
+
+static HWND hwndList = NULL;
+static HWND hTreeView = NULL;
+static HWND hProgWnd = NULL;
+static HWND hTabCtrl = NULL;
+
+static HINSTANCE hInst = NULL;
+
+static HFONT hFont = NULL; /* Font for list view */
+
+static int optionfolder_count = 0;
+
+/* global data--know where to send messages */
+static BOOL in_emulation;
+
+/* idle work at startup */
+static BOOL idle_work;
+
+/* object pool in use */
+static object_pool *mameui_pool;
+
+static int game_index;
+static int progBarStep;
+
+static BOOL bDoGameCheck = FALSE;
+
+/* Tree control variables */
+static BOOL bShowTree = 1;
+static BOOL bShowToolBar = 1;
+static BOOL bShowStatusBar = 1;
+static BOOL bShowTabCtrl = 1;
+static BOOL bProgressShown = FALSE;
+static BOOL bListReady = FALSE;
+
+#define WM_MAME32_FILECHANGED (WM_USER + 0)
+#define WM_MAME32_AUDITGAME (WM_USER + 1)
+
+static PDIRWATCHER s_pWatcher;
+
+/* use a joystick subsystem in the gui? */
+static const struct OSDJoystick* g_pJoyGUI = NULL;
+
+/* store current keyboard state (in bools) here */
+static bool keyboard_state[4096]; /* __code_max #defines the number of internal key_codes */
+
+/* search */
+static char g_SearchText[256];
+/* table copied from windows/inputs.c */
+// table entry indices
+#define MAME_KEY 0
+#define DI_KEY 1
+#define VIRTUAL_KEY 2
+#define ASCII_KEY 3
+
+// master keyboard translation table
+static const int win_key_trans_table[][4] =
+{
+ // MAME key dinput key virtual key ascii
+ { ITEM_ID_ESC, DIK_ESCAPE, VK_ESCAPE, 27 },
+ { ITEM_ID_1, DIK_1, '1', '1' },
+ { ITEM_ID_2, DIK_2, '2', '2' },
+ { ITEM_ID_3, DIK_3, '3', '3' },
+ { ITEM_ID_4, DIK_4, '4', '4' },
+ { ITEM_ID_5, DIK_5, '5', '5' },
+ { ITEM_ID_6, DIK_6, '6', '6' },
+ { ITEM_ID_7, DIK_7, '7', '7' },
+ { ITEM_ID_8, DIK_8, '8', '8' },
+ { ITEM_ID_9, DIK_9, '9', '9' },
+ { ITEM_ID_0, DIK_0, '0', '0' },
+ { ITEM_ID_BACKSPACE, DIK_BACK, VK_BACK, 8 },
+ { ITEM_ID_TAB, DIK_TAB, VK_TAB, 9 },
+ { ITEM_ID_Q, DIK_Q, 'Q', 'Q' },
+ { ITEM_ID_W, DIK_W, 'W', 'W' },
+ { ITEM_ID_E, DIK_E, 'E', 'E' },
+ { ITEM_ID_R, DIK_R, 'R', 'R' },
+ { ITEM_ID_T, DIK_T, 'T', 'T' },
+ { ITEM_ID_Y, DIK_Y, 'Y', 'Y' },
+ { ITEM_ID_U, DIK_U, 'U', 'U' },
+ { ITEM_ID_I, DIK_I, 'I', 'I' },
+ { ITEM_ID_O, DIK_O, 'O', 'O' },
+ { ITEM_ID_P, DIK_P, 'P', 'P' },
+ { ITEM_ID_OPENBRACE, DIK_LBRACKET, VK_OEM_4, '[' },
+ { ITEM_ID_CLOSEBRACE, DIK_RBRACKET, VK_OEM_6, ']' },
+ { ITEM_ID_ENTER, DIK_RETURN, VK_RETURN, 13 },
+ { ITEM_ID_LCONTROL, DIK_LCONTROL, VK_LCONTROL, 0 },
+ { ITEM_ID_A, DIK_A, 'A', 'A' },
+ { ITEM_ID_S, DIK_S, 'S', 'S' },
+ { ITEM_ID_D, DIK_D, 'D', 'D' },
+ { ITEM_ID_F, DIK_F, 'F', 'F' },
+ { ITEM_ID_G, DIK_G, 'G', 'G' },
+ { ITEM_ID_H, DIK_H, 'H', 'H' },
+ { ITEM_ID_J, DIK_J, 'J', 'J' },
+ { ITEM_ID_K, DIK_K, 'K', 'K' },
+ { ITEM_ID_L, DIK_L, 'L', 'L' },
+ { ITEM_ID_COLON, DIK_SEMICOLON, VK_OEM_1, ';' },
+ { ITEM_ID_QUOTE, DIK_APOSTROPHE, VK_OEM_7, '\'' },
+ { ITEM_ID_TILDE, DIK_GRAVE, VK_OEM_3, '`' },
+ { ITEM_ID_LSHIFT, DIK_LSHIFT, VK_LSHIFT, 0 },
+ { ITEM_ID_BACKSLASH, DIK_BACKSLASH, VK_OEM_5, '\\' },
+ { ITEM_ID_Z, DIK_Z, 'Z', 'Z' },
+ { ITEM_ID_X, DIK_X, 'X', 'X' },
+ { ITEM_ID_C, DIK_C, 'C', 'C' },
+ { ITEM_ID_V, DIK_V, 'V', 'V' },
+ { ITEM_ID_B, DIK_B, 'B', 'B' },
+ { ITEM_ID_N, DIK_N, 'N', 'N' },
+ { ITEM_ID_M, DIK_M, 'M', 'M' },
+ { ITEM_ID_SLASH, DIK_SLASH, VK_OEM_2, '/' },
+ { ITEM_ID_RSHIFT, DIK_RSHIFT, VK_RSHIFT, 0 },
+ { ITEM_ID_ASTERISK, DIK_MULTIPLY, VK_MULTIPLY, '*' },
+ { ITEM_ID_LALT, DIK_LMENU, VK_LMENU, 0 },
+ { ITEM_ID_SPACE, DIK_SPACE, VK_SPACE, ' ' },
+ { ITEM_ID_CAPSLOCK, DIK_CAPITAL, VK_CAPITAL, 0 },
+ { ITEM_ID_F1, DIK_F1, VK_F1, 0 },
+ { ITEM_ID_F2, DIK_F2, VK_F2, 0 },
+ { ITEM_ID_F3, DIK_F3, VK_F3, 0 },
+ { ITEM_ID_F4, DIK_F4, VK_F4, 0 },
+ { ITEM_ID_F5, DIK_F5, VK_F5, 0 },
+ { ITEM_ID_F6, DIK_F6, VK_F6, 0 },
+ { ITEM_ID_F7, DIK_F7, VK_F7, 0 },
+ { ITEM_ID_F8, DIK_F8, VK_F8, 0 },
+ { ITEM_ID_F9, DIK_F9, VK_F9, 0 },
+ { ITEM_ID_F10, DIK_F10, VK_F10, 0 },
+ { ITEM_ID_NUMLOCK, DIK_NUMLOCK, VK_NUMLOCK, 0 },
+ { ITEM_ID_SCRLOCK, DIK_SCROLL, VK_SCROLL, 0 },
+ { ITEM_ID_7_PAD, DIK_NUMPAD7, VK_NUMPAD7, 0 },
+ { ITEM_ID_8_PAD, DIK_NUMPAD8, VK_NUMPAD8, 0 },
+ { ITEM_ID_9_PAD, DIK_NUMPAD9, VK_NUMPAD9, 0 },
+ { ITEM_ID_MINUS_PAD, DIK_SUBTRACT, VK_SUBTRACT, 0 },
+ { ITEM_ID_4_PAD, DIK_NUMPAD4, VK_NUMPAD4, 0 },
+ { ITEM_ID_5_PAD, DIK_NUMPAD5, VK_NUMPAD5, 0 },
+ { ITEM_ID_6_PAD, DIK_NUMPAD6, VK_NUMPAD6, 0 },
+ { ITEM_ID_PLUS_PAD, DIK_ADD, VK_ADD, 0 },
+ { ITEM_ID_1_PAD, DIK_NUMPAD1, VK_NUMPAD1, 0 },
+ { ITEM_ID_2_PAD, DIK_NUMPAD2, VK_NUMPAD2, 0 },
+ { ITEM_ID_3_PAD, DIK_NUMPAD3, VK_NUMPAD3, 0 },
+ { ITEM_ID_0_PAD, DIK_NUMPAD0, VK_NUMPAD0, 0 },
+ { ITEM_ID_DEL_PAD, DIK_DECIMAL, VK_DECIMAL, 0 },
+ { ITEM_ID_F11, DIK_F11, VK_F11, 0 },
+ { ITEM_ID_F12, DIK_F12, VK_F12, 0 },
+ { ITEM_ID_F13, DIK_F13, VK_F13, 0 },
+ { ITEM_ID_F14, DIK_F14, VK_F14, 0 },
+ { ITEM_ID_F15, DIK_F15, VK_F15, 0 },
+ { ITEM_ID_ENTER_PAD, DIK_NUMPADENTER, VK_RETURN, 0 },
+ { ITEM_ID_RCONTROL, DIK_RCONTROL, VK_RCONTROL, 0 },
+ { ITEM_ID_SLASH_PAD, DIK_DIVIDE, VK_DIVIDE, 0 },
+ { ITEM_ID_PRTSCR, DIK_SYSRQ, 0, 0 },
+ { ITEM_ID_RALT, DIK_RMENU, VK_RMENU, 0 },
+ { ITEM_ID_HOME, DIK_HOME, VK_HOME, 0 },
+ { ITEM_ID_UP, DIK_UP, VK_UP, 0 },
+ { ITEM_ID_PGUP, DIK_PRIOR, VK_PRIOR, 0 },
+ { ITEM_ID_LEFT, DIK_LEFT, VK_LEFT, 0 },
+ { ITEM_ID_RIGHT, DIK_RIGHT, VK_RIGHT, 0 },
+ { ITEM_ID_END, DIK_END, VK_END, 0 },
+ { ITEM_ID_DOWN, DIK_DOWN, VK_DOWN, 0 },
+ { ITEM_ID_PGDN, DIK_NEXT, VK_NEXT, 0 },
+ { ITEM_ID_INSERT, DIK_INSERT, VK_INSERT, 0 },
+ { ITEM_ID_DEL, DIK_DELETE, VK_DELETE, 0 },
+ { ITEM_ID_LWIN, DIK_LWIN, VK_LWIN, 0 },
+ { ITEM_ID_RWIN, DIK_RWIN, VK_RWIN, 0 },
+ { ITEM_ID_MENU, DIK_APPS, VK_APPS, 0 },
+ { ITEM_ID_PAUSE, DIK_PAUSE, VK_PAUSE, 0 },
+ { ITEM_ID_CANCEL, 0, VK_CANCEL, 0 },
+};
+
+
+
+typedef struct
+{
+ char name[40]; // functionality name (optional)
+ input_seq is; // the input sequence (the keys pressed)
+ UINT func_id; // the identifier
+ input_seq* (*const getiniptr)(void);// pointer to function to get the value from .ini file
+} GUISequence;
+
+static const GUISequence GUISequenceControl[]=
+{
+ {"gui_key_up", input_seq(), ID_UI_UP, Get_ui_key_up },
+ {"gui_key_down", input_seq(), ID_UI_DOWN, Get_ui_key_down },
+ {"gui_key_left", input_seq(), ID_UI_LEFT, Get_ui_key_left },
+ {"gui_key_right", input_seq(), ID_UI_RIGHT, Get_ui_key_right },
+ {"gui_key_start", input_seq(), ID_UI_START, Get_ui_key_start },
+ {"gui_key_pgup", input_seq(), ID_UI_PGUP, Get_ui_key_pgup },
+ {"gui_key_pgdwn", input_seq(), ID_UI_PGDOWN, Get_ui_key_pgdwn },
+ {"gui_key_home", input_seq(), ID_UI_HOME, Get_ui_key_home },
+ {"gui_key_end", input_seq(), ID_UI_END, Get_ui_key_end },
+ {"gui_key_ss_change", input_seq(), IDC_SSFRAME, Get_ui_key_ss_change },
+ {"gui_key_history_up", input_seq(), ID_UI_HISTORY_UP, Get_ui_key_history_up },
+ {"gui_key_history_down", input_seq(), ID_UI_HISTORY_DOWN, Get_ui_key_history_down },
+
+ {"gui_key_context_filters", input_seq(), ID_CONTEXT_FILTERS, Get_ui_key_context_filters },
+ {"gui_key_select_random", input_seq(), ID_CONTEXT_SELECT_RANDOM, Get_ui_key_select_random },
+ {"gui_key_game_audit", input_seq(), ID_GAME_AUDIT, Get_ui_key_game_audit },
+ {"gui_key_game_properties", input_seq(), ID_GAME_PROPERTIES, Get_ui_key_game_properties },
+ {"gui_key_help_contents", input_seq(), ID_HELP_CONTENTS, Get_ui_key_help_contents },
+ {"gui_key_update_gamelist", input_seq(), ID_UPDATE_GAMELIST, Get_ui_key_update_gamelist },
+ {"gui_key_view_folders", input_seq(), ID_VIEW_FOLDERS, Get_ui_key_view_folders },
+ {"gui_key_view_fullscreen", input_seq(), ID_VIEW_FULLSCREEN, Get_ui_key_view_fullscreen },
+ {"gui_key_view_pagetab", input_seq(), ID_VIEW_PAGETAB, Get_ui_key_view_pagetab },
+ {"gui_key_view_picture_area", input_seq(), ID_VIEW_PICTURE_AREA, Get_ui_key_view_picture_area },
+ {"gui_key_view_status", input_seq(), ID_VIEW_STATUS, Get_ui_key_view_status },
+ {"gui_key_view_toolbars", input_seq(), ID_VIEW_TOOLBARS, Get_ui_key_view_toolbars },
+
+ {"gui_key_view_tab_cabinet", input_seq(), ID_VIEW_TAB_CABINET, Get_ui_key_view_tab_cabinet },
+ {"gui_key_view_tab_cpanel", input_seq(), ID_VIEW_TAB_CONTROL_PANEL, Get_ui_key_view_tab_cpanel },
+ {"gui_key_view_tab_flyer", input_seq(), ID_VIEW_TAB_FLYER, Get_ui_key_view_tab_flyer },
+ {"gui_key_view_tab_history", input_seq(), ID_VIEW_TAB_HISTORY, Get_ui_key_view_tab_history },
+ {"gui_key_view_tab_marquee", input_seq(), ID_VIEW_TAB_MARQUEE, Get_ui_key_view_tab_marquee },
+ {"gui_key_view_tab_screenshot", input_seq(), ID_VIEW_TAB_SCREENSHOT, Get_ui_key_view_tab_screenshot },
+ {"gui_key_view_tab_title", input_seq(), ID_VIEW_TAB_TITLE, Get_ui_key_view_tab_title },
+ {"gui_key_view_tab_pcb", input_seq(), ID_VIEW_TAB_PCB, Get_ui_key_view_tab_pcb },
+ {"gui_key_quit", input_seq(), ID_FILE_EXIT, Get_ui_key_quit },
+};
+
+
+#define NUM_GUI_SEQUENCES (sizeof(GUISequenceControl) / sizeof(GUISequenceControl[0]))
+
+
+static UINT lastColumnClick = 0;
+static WNDPROC g_lpHistoryWndProc = NULL;
+static WNDPROC g_lpPictureFrameWndProc = NULL;
+static WNDPROC g_lpPictureWndProc = NULL;
+
+static POPUPSTRING popstr[MAX_MENUS + 1];
+
+/* Tool and Status bar variables */
+static HWND hStatusBar = 0;
+static HWND s_hToolBar = 0;
+
+/* Column Order as Displayed */
+static BOOL oldControl = FALSE;
+static BOOL xpControl = FALSE;
+
+/* Used to recalculate the main window layout */
+static int bottomMargin;
+static int topMargin;
+static int have_history = FALSE;
+
+static BOOL have_selection = FALSE;
+
+static HBITMAP hMissing_bitmap = NULL;
+
+/* Icon variables */
+static HIMAGELIST hLarge = NULL;
+static HIMAGELIST hSmall = NULL;
+static HIMAGELIST hHeaderImages = NULL;
+static int *icon_index = NULL; /* for custom per-game icons */
+
+static const TBBUTTON tbb[] =
+{
+ {0, ID_VIEW_FOLDERS, TBSTATE_ENABLED, TBSTYLE_CHECK, {0, 0}, 0, 0},
+ {1, ID_VIEW_PICTURE_AREA,TBSTATE_ENABLED, TBSTYLE_CHECK, {0, 0}, 0, 1},
+ {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0},
+ {2, ID_VIEW_LARGE_ICON, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, {0, 0}, 0, 2},
+ {3, ID_VIEW_SMALL_ICON, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, {0, 0}, 0, 3},
+ {4, ID_VIEW_LIST_MENU, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, {0, 0}, 0, 4},
+ {5, ID_VIEW_DETAIL, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, {0, 0}, 0, 5},
+ {6, ID_VIEW_GROUPED, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, {0, 0}, 0, 6},
+ {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, {0, 0}, 0, 0},
+ {7, ID_HELP_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 7},
+ {8, ID_HELP_CONTENTS, TBSTATE_ENABLED, TBSTYLE_BUTTON, {0, 0}, 0, 8}
+};
+
+#define NUM_TOOLBUTTONS (sizeof(tbb) / sizeof(tbb[0]))
+
+#define NUM_TOOLTIPS 9
+
+static const TCHAR szTbStrings[NUM_TOOLTIPS + 1][30] =
+{
+ TEXT("Toggle Folder List"),
+ TEXT("Toggle Screen Shot"),
+ TEXT("Large Icons"),
+ TEXT("Small Icons"),
+ TEXT("List"),
+ TEXT("Details"),
+ TEXT("Grouped"),
+ TEXT("About"),
+ TEXT("Help")
+};
+
+static const int CommandToString[] =
+{
+ ID_VIEW_FOLDERS,
+ ID_VIEW_PICTURE_AREA,
+ ID_VIEW_LARGE_ICON,
+ ID_VIEW_SMALL_ICON,
+ ID_VIEW_LIST_MENU,
+ ID_VIEW_DETAIL,
+ ID_VIEW_GROUPED,
+ ID_HELP_ABOUT,
+ ID_HELP_CONTENTS,
+ -1
+};
+
+static const int s_nPickers[] =
+{
+ IDC_LIST
+};
+
+
+/* How to resize toolbar sub window */
+static ResizeItem toolbar_resize_items[] =
+{
+ { RA_ID, { ID_TOOLBAR_EDIT }, TRUE, RA_LEFT | RA_TOP, NULL },
+ { RA_END, { 0 }, FALSE, 0, NULL }
+};
+
+static Resize toolbar_resize = { {0, 0, 0, 0}, toolbar_resize_items };
+
+/* How to resize main window */
+static ResizeItem main_resize_items[] =
+{
+ { RA_HWND, { 0 }, FALSE, RA_LEFT | RA_RIGHT | RA_TOP, &toolbar_resize },
+ { RA_HWND, { 0 }, FALSE, RA_LEFT | RA_RIGHT | RA_BOTTOM, NULL },
+ { RA_ID, { IDC_DIVIDER }, FALSE, RA_LEFT | RA_RIGHT | RA_TOP, NULL },
+ { RA_ID, { IDC_TREE }, TRUE, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_LIST }, TRUE, RA_ALL, NULL },
+ { RA_ID, { IDC_SPLITTER }, FALSE, RA_LEFT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SPLITTER2 },FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSFRAME }, FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSPICTURE },FALSE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_HISTORY }, TRUE, RA_RIGHT | RA_BOTTOM | RA_TOP, NULL },
+ { RA_ID, { IDC_SSTAB }, FALSE, RA_RIGHT | RA_TOP, NULL },
+ { RA_END, { 0 }, FALSE, 0, NULL }
+};
+
+static Resize main_resize = { {0, 0, 0, 0}, main_resize_items };
+
+/* last directory for common file dialogs */
+TCHAR last_directory[MAX_PATH];
+
+/* system-wide window message sent out with an ATOM of the current game name
+ each time it changes */
+static UINT g_mame32_message = 0;
+
+static BOOL g_listview_dragging = FALSE;
+static HIMAGELIST himl_drag;
+static int game_dragged; /* which game started the drag */
+static HTREEITEM prev_drag_drop_target; /* which tree view item we're currently highlighting */
+
+static BOOL g_in_treeview_edit = FALSE;
+
+/***************************************************************************
+ Global variables
+ ***************************************************************************/
+
+/* Background Image handles also accessed from TreeView.c */
+static HPALETTE hPALbg = 0;
+static HBITMAP hBackground = 0;
+static MYBITMAPINFO bmDesc;
+
+/* List view Column text */
+extern const LPCTSTR column_names[COLUMN_MAX] =
+{
+ TEXT("Machine"),
+ TEXT("Source"),
+ TEXT("Directory"),
+ TEXT("Type"),
+ TEXT("Screen"),
+ TEXT("Manufacturer"),
+ TEXT("Year"),
+ TEXT("Played"),
+ TEXT("Play Time"),
+ TEXT("Clone Of"),
+ TEXT("Trackball"),
+#ifdef SHOW_COLUMN_SAMPLES
+ TEXT("Samples"),
+#endif
+#ifdef SHOW_COLUMN_ROMS
+ TEXT("ROMs"),
+#endif
+};
+
+/***************************************************************************
+ Message Macros
+ ***************************************************************************/
+
+#ifndef StatusBar_GetItemRect
+#define StatusBar_GetItemRect(hWnd, iPart, lpRect) \
+ SendMessage(hWnd, SB_GETRECT, (WPARAM) iPart, (LPARAM) (LPRECT) lpRect)
+#endif
+
+#ifndef ToolBar_CheckButton
+#define ToolBar_CheckButton(hWnd, idButton, fCheck) \
+ SendMessage(hWnd, TB_CHECKBUTTON, (WPARAM)idButton, (LPARAM)MAKELONG(fCheck, 0))
+#endif
+
+//============================================================
+// winui_output_error
+//============================================================
+
+
+class mameui_output_error : public osd_output
+{
+public:
+ virtual void output_callback(osd_output_channel channel, const char *msg, va_list args)
+ {
+ if (channel == OSD_OUTPUT_CHANNEL_ERROR)
+ {
+ char buffer[1024];
+
+ // if we are in fullscreen mode, go to windowed mode
+ if ((video_config.windowed == 0) && !osd_common_t::s_window_list.empty())
+ winwindow_toggle_full_screen();
+
+ vsnprintf(buffer, ARRAY_LENGTH(buffer), msg, args);printf("%s\n",buffer);
+ win_message_box_utf8(!osd_common_t::s_window_list.empty() ? std::static_pointer_cast<win_window_info>(osd_common_t::s_window_list.front())->platform_window() : hMain, buffer, MAMEUINAME, MB_ICONERROR | MB_OK);
+ }
+ else
+ chain_output(channel, msg, args);
+ }
+};
+
+static std::wstring s2ws(const std::string& s)
+{
+ int len;
+ int slength = (int)s.length() + 1;
+ len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
+ wchar_t* buf = new wchar_t[len];
+ MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
+ std::wstring r(buf);
+ delete[] buf;
+ return r;
+}
+
+
+/***************************************************************************
+ External functions
+ ***************************************************************************/
+static DWORD RunMAME(int nGameIndex, const play_options *playopts)
+{
+ time_t start, end;
+ double elapsedtime;
+ int i;
+ //mame_options mame_opts; seems useless....
+ windows_options global_opts;
+ std::string error_string;
+ // set up MAME options
+ // mame_opts = mame_options_init(mame_win_options);
+
+ // Tell mame were to get the INIs
+ SetDirectories(global_opts);
+
+ // set some startup options
+ global_opts.set_value(OPTION_LANGUAGE, GetLanguageUI(), OPTION_PRIORITY_CMDLINE, error_string);
+ global_opts.set_value(OPTION_PLUGINS, GetEnablePlugins(), OPTION_PRIORITY_CMDLINE, error_string);
+ global_opts.set_value(OPTION_PLUGIN, GetPlugins(), OPTION_PRIORITY_CMDLINE, error_string);
+
+ // add image specific device options
+ //mame_opts.set_system_name(global_opts, driver_list::driver(nGameIndex).name);
+ global_opts.set_value(OPTION_SYSTEMNAME, driver_list::driver(nGameIndex).name, OPTION_PRIORITY_CMDLINE, error_string);
+
+ // set any specified play options
+ if (playopts_apply == 0x57)
+ {
+ if (playopts->record)
+ global_opts.set_value(OPTION_RECORD, playopts->record, OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->playback)
+ global_opts.set_value(OPTION_PLAYBACK, playopts->playback, OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->state)
+ global_opts.set_value(OPTION_STATE, playopts->state, OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->wavwrite)
+ global_opts.set_value(OPTION_WAVWRITE, playopts->wavwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->mngwrite)
+ global_opts.set_value(OPTION_MNGWRITE, playopts->mngwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->aviwrite)
+ global_opts.set_value(OPTION_AVIWRITE, playopts->aviwrite, OPTION_PRIORITY_CMDLINE,error_string);
+ }
+
+ // Mame will parse all the needed .ini files.
+
+ // prepare MAME32 to run the game
+ ShowWindow(hMain, SW_HIDE);
+
+ for (i = 0; i < ARRAY_LENGTH(s_nPickers); i++)
+ Picker_ClearIdle(GetDlgItem(hMain, s_nPickers[i]));
+
+ // run the emulation
+ // Time the game run.
+ time(&start);
+ windows_osd_interface osd(global_opts);
+ // output errors to message boxes
+ mameui_output_error winerror;
+ osd_output::push(&winerror);
+ osd.register_options();
+ mame_machine_manager *manager = mame_machine_manager::instance(global_opts, osd);
+ load_translation(global_opts);
+ manager->start_http_server();
+ manager->start_luaengine();
+ manager->execute();
+ osd_output::pop(&winerror);
+ global_free(manager);
+ // Calc the duration
+ time(&end);
+ elapsedtime = end - start;
+ // Increment our playtime.
+ IncrementPlayTime(nGameIndex, elapsedtime);
+
+ // clear any specified play options
+ // do it this way to preserve slots and software entries
+ if (playopts_apply == 0x57)
+ {
+ windows_options o;
+ load_options(o, OPTIONS_GAME, nGameIndex);
+ if (playopts->record)
+ o.set_value(OPTION_RECORD, "", OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->playback)
+ o.set_value(OPTION_PLAYBACK, "", OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->state)
+ o.set_value(OPTION_STATE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->wavwrite)
+ o.set_value(OPTION_WAVWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->mngwrite)
+ o.set_value(OPTION_MNGWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ if (playopts->aviwrite)
+ o.set_value(OPTION_AVIWRITE, "", OPTION_PRIORITY_CMDLINE,error_string);
+ // apply the above to the ini file
+ save_options(o, OPTIONS_GAME, nGameIndex);
+ }
+ playopts_apply = 0;
+
+ // the emulation is complete; continue
+ for (i = 0; i < ARRAY_LENGTH(s_nPickers); i++)
+ Picker_ResetIdle(GetDlgItem(hMain, s_nPickers[i]));
+ ShowWindow(hMain, SW_SHOW);
+ SetForegroundWindow(hMain);
+
+ return (DWORD)0;
+}
+
+int MameUIMain(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
+{
+ if (__argc != 1)
+ {
+ /* Rename main because gcc will use it instead of WinMain even with -mwindows */
+ extern int utf8_main(std::vector<std::string> &args);
+ std::vector<std::string> utf8_argv(__argc);
+
+ /* convert arguments to UTF-8 */
+ for (int i = 0; i < __argc; i++)
+ utf8_argv[i] = ui_utf8_from_wstring(__targv[i]);
+
+ /* run utf8_main */
+ exit(utf8_main(utf8_argv));
+ }
+ if (!Win32UI_init(hInstance, lpCmdLine, nCmdShow))
+ return 1;
+
+ // pump message, but quit on WM_QUIT
+ while(PumpMessage())
+ ;
+
+ Win32UI_exit();
+ return 0;
+}
+
+
+HWND GetMainWindow(void)
+{
+ return hMain;
+}
+
+HWND GetTreeView(void)
+{
+ return hTreeView;
+}
+
+object_pool *GetMameUIMemoryPool(void)
+{
+ return mameui_pool;
+}
+
+void GetRealColumnOrder(int order[])
+{
+ int tmpOrder[COLUMN_MAX];
+ int nColumnMax;
+ int i;
+ BOOL res;
+
+ nColumnMax = Picker_GetNumColumns(hwndList);
+
+ /* Get the Column Order and save it */
+ if (!oldControl)
+ {
+ res = ListView_GetColumnOrderArray(hwndList, nColumnMax, tmpOrder);
+
+ for (i = 0; i < nColumnMax; i++)
+ {
+ order[i] = Picker_GetRealColumnFromViewColumn(hwndList, tmpOrder[i]);
+ }
+ }
+}
+
+/*
+ * PURPOSE: Format raw data read from an ICO file to an HICON
+ * PARAMS: PBYTE ptrBuffer - Raw data from an ICO file
+ * UINT nBufferSize - Size of buffer ptrBuffer
+ * RETURNS: HICON - handle to the icon, NULL for failure
+ * History: July '95 - Created
+ * March '00- Seriously butchered from MSDN for mine own
+ * purposes, sayeth H0ek.
+ */
+static HICON FormatICOInMemoryToHICON(PBYTE ptrBuffer, UINT nBufferSize)
+{
+ ICONIMAGE IconImage;
+ LPICONDIRENTRY lpIDE = NULL;
+ UINT nNumImages;
+ UINT nBufferIndex = 0;
+ HICON hIcon = NULL;
+
+ /* Is there a WORD? */
+ if (nBufferSize < sizeof(WORD))
+ {
+ return NULL;
+ }
+
+ /* Was it 'reserved' ? (ie 0) */
+ if ((WORD)(ptrBuffer[nBufferIndex]) != 0)
+ {
+ return NULL;
+ }
+
+ nBufferIndex += sizeof(WORD);
+
+ /* Is there a WORD? */
+ if (nBufferSize - nBufferIndex < sizeof(WORD))
+ {
+ return NULL;
+ }
+
+ /* Was it type 1? */
+ if ((WORD)(ptrBuffer[nBufferIndex]) != 1)
+ {
+ return NULL;
+ }
+
+ nBufferIndex += sizeof(WORD);
+
+ /* Is there a WORD? */
+ if (nBufferSize - nBufferIndex < sizeof(WORD))
+ {
+ return NULL;
+ }
+
+ /* Then that's the number of images in the ICO file */
+ nNumImages = (WORD)(ptrBuffer[nBufferIndex]);
+
+ /* Is there at least one icon in the file? */
+ if ( nNumImages < 1 )
+ {
+ return NULL;
+ }
+
+ nBufferIndex += sizeof(WORD);
+
+ /* Is there enough space for the icon directory entries? */
+ if ((nBufferIndex + nNumImages * sizeof(ICONDIRENTRY)) > nBufferSize)
+ {
+ return NULL;
+ }
+
+ /* Assign icon directory entries from buffer */
+ lpIDE = (LPICONDIRENTRY)(&ptrBuffer[nBufferIndex]);
+ nBufferIndex += nNumImages * sizeof (ICONDIRENTRY);
+
+ IconImage.dwNumBytes = lpIDE->dwBytesInRes;
+
+ /* Seek to beginning of this image */
+ if ( lpIDE->dwImageOffset > nBufferSize )
+ {
+ return NULL;
+ }
+
+ nBufferIndex = lpIDE->dwImageOffset;
+
+ /* Read it in */
+ if ((nBufferIndex + lpIDE->dwBytesInRes) > nBufferSize)
+ {
+ return NULL;
+ }
+
+ IconImage.lpBits = &ptrBuffer[nBufferIndex];
+ nBufferIndex += lpIDE->dwBytesInRes;
+ /* It failed, odds are good we're on NT so try the non-Ex way */
+ if (hIcon == NULL)
+ {
+ /* We would break on NT if we try with a 16bpp image */
+ if (((LPBITMAPINFO)IconImage.lpBits)->bmiHeader.biBitCount != 16)
+ {
+ hIcon = CreateIconFromResourceEx(IconImage.lpBits, IconImage.dwNumBytes, TRUE, 0x00030000,0,0,LR_DEFAULTSIZE);
+ }
+ }
+ return hIcon;
+}
+
+HICON LoadIconFromFile(const char *iconname)
+{
+ HICON hIcon = 0;
+ struct stat file_stat;
+ char tmpStr[MAX_PATH];
+ char tmpIcoName[MAX_PATH];
+ const char* sDirName = GetImgDir();
+ PBYTE bufferPtr;
+ util::archive_file::error ziperr;
+ util::archive_file::ptr zip;
+ int res = 0;
+
+ sprintf(tmpStr, "%s/%s.ico", GetIconsDir(), iconname);
+ if (stat(tmpStr, &file_stat) != 0 || (hIcon = win_extract_icon_utf8(hInst, tmpStr, 0)) == 0)
+ {
+ sprintf(tmpStr, "%s/%s.ico", sDirName, iconname);
+ if (stat(tmpStr, &file_stat) != 0
+ || (hIcon = win_extract_icon_utf8(hInst, tmpStr, 0)) == 0)
+ {
+ sprintf(tmpStr, "%s/icons.zip", GetIconsDir());
+ sprintf(tmpIcoName, "%s.ico", iconname);
+
+ ziperr = util::archive_file::open_zip(tmpStr, zip);
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ res = zip->search(tmpIcoName, false);
+ if (res >= 0)
+ {
+ bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length());
+ if (bufferPtr)
+ {
+ ziperr = zip->decompress(bufferPtr, zip->current_uncompressed_length());
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length());
+ }
+ free(bufferPtr);
+ }
+ }
+ zip.reset();
+ }
+ else
+ {
+ sprintf(tmpStr, "%s/icons.7z", GetIconsDir());
+ sprintf(tmpIcoName, "%s.ico", iconname);
+
+ ziperr = util::archive_file::open_7z(tmpStr, zip);
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ res = zip->search(tmpIcoName, false);
+ if (res >= 0)
+ {
+ bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length());
+ if (bufferPtr)
+ {
+ ziperr = zip->decompress(bufferPtr, zip->current_uncompressed_length());
+ if (ziperr == util::archive_file::error::NONE)
+ {
+ hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length());
+ }
+ free(bufferPtr);
+ }
+ }
+ zip.reset();
+ }
+ }
+ }
+ }
+ return hIcon;
+}
+
+/* Return the number of folders with options */
+void SetNumOptionFolders(int count)
+{
+ optionfolder_count = count;
+}
+
+/* search */
+const char * GetSearchText(void)
+{
+ return g_SearchText;
+}
+
+
+/* Sets the treeview and listviews sizes in accordance with their visibility and the splitters */
+static void ResizeTreeAndListViews(BOOL bResizeHidden)
+{
+ int i;
+ int nLastWidth = 0;
+ int nLastWidth2 = 0;
+ int nLeftWindowWidth = 0;
+ RECT rect;
+ BOOL bVisible;
+ //int nLastOverlap = -1;
+
+ /* Size the List Control in the Picker */
+ GetClientRect(hMain, &rect);
+
+ if (bShowStatusBar)
+ rect.bottom -= bottomMargin;
+ if (bShowToolBar)
+ rect.top += topMargin;
+
+ /* Tree control */
+ ShowWindow(GetDlgItem(hMain, IDC_TREE), bShowTree ? SW_SHOW : SW_HIDE);
+
+ for (i = 0; g_splitterInfo[i].nSplitterWindow; i++)
+ {
+ bVisible = GetWindowLong(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), GWL_STYLE) & WS_VISIBLE ? TRUE : FALSE;
+ if (bResizeHidden || bVisible)
+ {
+ nLeftWindowWidth = nSplitterOffset[i] - SPLITTER_WIDTH/2 - nLastWidth;
+
+ /* special case for the rightmost pane when the screenshot is gone */
+ if (!GetShowScreenShot() && !g_splitterInfo[i+1].nSplitterWindow)
+ nLeftWindowWidth = rect.right - nLastWidth;
+
+ /* woah? are we overlapping ourselves? */
+ if (nLeftWindowWidth < MIN_VIEW_WIDTH)
+ {
+ //nLastOverlap = i;
+ nLastWidth = nLastWidth2;
+ nLeftWindowWidth = nSplitterOffset[i] - MIN_VIEW_WIDTH - (SPLITTER_WIDTH*3/2) - nLastWidth;
+ i--;
+ }
+
+ MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow), nLastWidth, rect.top + 2,
+ nLeftWindowWidth, (rect.bottom - rect.top) - 4 , TRUE);
+
+ MoveWindow(GetDlgItem(hMain, g_splitterInfo[i].nSplitterWindow), nSplitterOffset[i], rect.top + 2,
+ SPLITTER_WIDTH, (rect.bottom - rect.top) - 4, TRUE);
+ }
+
+ if (bVisible)
+ {
+ nLastWidth2 = nLastWidth;
+ nLastWidth += nLeftWindowWidth + SPLITTER_WIDTH;
+ }
+ }
+}
+
+/* Adjust the list view and screenshot button based on GetShowScreenShot() */
+void UpdateScreenShot(void)
+{
+ RECT rect;
+ //int nWidth;
+ RECT fRect;
+ POINT p = {0, 0};
+
+ /* first time through can't do this stuff */
+ if (hwndList == NULL)
+ return;
+
+ /* Size the List Control in the Picker */
+ GetClientRect(hMain, &rect);
+
+ if (bShowStatusBar)
+ rect.bottom -= bottomMargin;
+ if (bShowToolBar)
+ rect.top += topMargin;
+
+ if (GetShowScreenShot())
+ {
+ //nWidth = nSplitterOffset[GetSplitterCount() - 1];
+ CheckMenuItem(GetMenu(hMain),ID_VIEW_PICTURE_AREA, MF_CHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_PICTURE_AREA, MF_CHECKED);
+ }
+ else
+ {
+ //nWidth = rect.right;
+ CheckMenuItem(GetMenu(hMain),ID_VIEW_PICTURE_AREA, MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_PICTURE_AREA, MF_UNCHECKED);
+ }
+
+ ResizeTreeAndListViews(FALSE);
+
+ FreeScreenShot();
+
+ if (have_selection)
+ {
+#ifdef MESS
+ if (!g_szSelectedItem[0] || !LoadScreenShotEx(Picker_GetSelectedItem(hwndList), g_szSelectedItem,
+ TabView_GetCurrentTab(hTabCtrl)))
+#endif
+ // load and set image, or empty it if we don't have one
+ LoadScreenShot(Picker_GetSelectedItem(hwndList), TabView_GetCurrentTab(hTabCtrl));
+ }
+
+ // figure out if we have a history or not, to place our other windows properly
+ UpdateHistory();
+
+ // setup the picture area
+
+ if (GetShowScreenShot())
+ {
+ DWORD dwStyle;
+ DWORD dwStyleEx;
+ BOOL showing_history;
+
+ ClientToScreen(hMain, &p);
+ GetWindowRect(GetDlgItem(hMain, IDC_SSFRAME), &fRect);
+ OffsetRect(&fRect, -p.x, -p.y);
+
+ // show history on this tab IFF
+ // - we have history for the game
+ // - we're on the first tab
+ // - we DON'T have a separate history tab
+ showing_history = (have_history && (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() || GetHistoryTab() == TAB_ALL ) &&
+ GetShowTab(TAB_HISTORY) == FALSE);
+ CalculateBestScreenShotRect(GetDlgItem(hMain, IDC_SSFRAME), &rect,showing_history);
+
+ dwStyle = GetWindowLong(GetDlgItem(hMain, IDC_SSPICTURE), GWL_STYLE);
+ dwStyleEx = GetWindowLong(GetDlgItem(hMain, IDC_SSPICTURE), GWL_EXSTYLE);
+
+ AdjustWindowRectEx(&rect, dwStyle, FALSE, dwStyleEx);
+ MoveWindow(GetDlgItem(hMain, IDC_SSPICTURE),
+ fRect.left + rect.left,
+ fRect.top + rect.top,
+ rect.right - rect.left,
+ rect.bottom - rect.top,
+ TRUE);
+
+ ShowWindow(GetDlgItem(hMain,IDC_SSPICTURE),
+ (TabView_GetCurrentTab(hTabCtrl) != TAB_HISTORY) ? SW_SHOW : SW_HIDE);
+ ShowWindow(GetDlgItem(hMain,IDC_SSFRAME),SW_SHOW);
+ ShowWindow(GetDlgItem(hMain,IDC_SSTAB),bShowTabCtrl ? SW_SHOW : SW_HIDE);
+
+ InvalidateRect(GetDlgItem(hMain,IDC_SSPICTURE),NULL,FALSE);
+ }
+ else
+ {
+ ShowWindow(GetDlgItem(hMain,IDC_SSPICTURE),SW_HIDE);
+ ShowWindow(GetDlgItem(hMain,IDC_SSFRAME),SW_HIDE);
+ ShowWindow(GetDlgItem(hMain,IDC_SSTAB),SW_HIDE);
+ }
+
+}
+
+void ResizePickerControls(HWND hWnd)
+{
+ RECT frameRect;
+ RECT rect, sRect;
+ int nListWidth, nScreenShotWidth;
+ static BOOL firstTime = TRUE;
+ int doSSControls = TRUE;
+ int i, nSplitterCount;
+
+ nSplitterCount = GetSplitterCount();
+
+ /* Size the List Control in the Picker */
+ GetClientRect(hWnd, &rect);
+
+ /* Calc the display sizes based on g_splitterInfo */
+ if (firstTime)
+ {
+ RECT rWindow;
+
+ for (i = 0; i < nSplitterCount; i++)
+ nSplitterOffset[i] = rect.right * g_splitterInfo[i].dPosition;
+
+ GetWindowRect(hStatusBar, &rWindow);
+ bottomMargin = rWindow.bottom - rWindow.top;
+ GetWindowRect(s_hToolBar, &rWindow);
+ topMargin = rWindow.bottom - rWindow.top;
+ /*buttonMargin = (sRect.bottom + 4); */
+
+ firstTime = FALSE;
+ }
+ else
+ {
+ doSSControls = GetShowScreenShot();
+ }
+
+ if (bShowStatusBar)
+ rect.bottom -= bottomMargin;
+
+ if (bShowToolBar)
+ rect.top += topMargin;
+
+ MoveWindow(GetDlgItem(hWnd, IDC_DIVIDER), rect.left, rect.top - 4, rect.right, 2, TRUE);
+
+ ResizeTreeAndListViews(TRUE);
+
+ nListWidth = nSplitterOffset[nSplitterCount-1];
+ nScreenShotWidth = (rect.right - nListWidth) - 4;
+
+ /* Screen shot Page tab control */
+ if (bShowTabCtrl)
+ {
+ MoveWindow(GetDlgItem(hWnd, IDC_SSTAB), nListWidth + 4, rect.top + 2,
+ nScreenShotWidth - 2, rect.top + 20, doSSControls);
+ rect.top += 20;
+ }
+
+ /* resize the Screen shot frame */
+ MoveWindow(GetDlgItem(hWnd, IDC_SSFRAME), nListWidth + 4, rect.top + 2,
+ nScreenShotWidth - 2, (rect.bottom - rect.top) - 4, doSSControls);
+
+ /* The screen shot controls */
+ GetClientRect(GetDlgItem(hWnd, IDC_SSFRAME), &frameRect);
+
+ /* Text control - game history */
+ sRect.left = nListWidth + 14;
+ sRect.right = sRect.left + (nScreenShotWidth - 22);
+
+
+ if (GetShowTab(TAB_HISTORY))
+ {
+ // We're using the new mode, with the history filling the entire tab (almost)
+ sRect.top = rect.top + 14;
+ sRect.bottom = (rect.bottom - rect.top) - 30;
+ }
+ else
+ {
+ // We're using the original mode, with the history beneath the SS picture
+ sRect.top = rect.top + 264;
+ sRect.bottom = (rect.bottom - rect.top) - 278;
+ }
+
+ MoveWindow(GetDlgItem(hWnd, IDC_HISTORY),
+ sRect.left, sRect.top,
+ sRect.right - sRect.left, sRect.bottom, doSSControls);
+
+ /* the other screen shot controls will be properly placed in UpdateScreenshot() */
+
+}
+
+
+char *ModifyThe(const char *str)
+{
+ static int bufno = 0;
+ static char buffer[4][255];
+
+ if (strncmp(str, "The ", 4) == 0)
+ {
+ char *s, *p;
+ char temp[255];
+
+ strcpy(temp, &str[4]);
+
+ bufno = (bufno + 1) % 4;
+
+ s = buffer[bufno];
+
+ /* Check for version notes in parens */
+ p = strchr(temp, '(');
+ if (p)
+ {
+ p[-1] = '\0';
+ }
+
+ strcpy(s, temp);
+ strcat(s, ", The");
+
+ if (p)
+ {
+ strcat(s, " ");
+ strcat(s, p);
+ }
+
+ return s;
+ }
+ return (char *)str;
+}
+
+HBITMAP GetBackgroundBitmap(void)
+{
+ return hBackground;
+}
+
+HPALETTE GetBackgroundPalette(void)
+{
+ return hPALbg;
+}
+
+MYBITMAPINFO * GetBackgroundInfo(void)
+{
+ return &bmDesc;
+}
+
+BOOL GetUseOldControl(void)
+{
+ return oldControl;
+}
+
+BOOL GetUseXPControl(void)
+{
+ return xpControl;
+}
+
+int GetMinimumScreenShotWindowWidth(void)
+{
+ BITMAP bmp;
+ GetObject(hMissing_bitmap,sizeof(BITMAP),&bmp);
+
+ return bmp.bmWidth + 6; // 6 is for a little breathing room
+}
+
+
+int GetParentIndex(const game_driver *driver)
+{
+ return GetGameNameIndex(driver->parent);
+}
+
+int GetParentRomSetIndex(const game_driver *driver)
+{
+ int nParentIndex = GetGameNameIndex(driver->parent);
+
+ if( nParentIndex >= 0)
+ {
+ if ((driver_list::driver(nParentIndex).flags & MACHINE_IS_BIOS_ROOT) == 0)
+ return nParentIndex;
+ }
+
+ return -1;
+}
+
+int GetGameNameIndex(const char *name)
+{
+ return driver_list::find(name);
+}
+
+/***************************************************************************
+ Internal functions
+ ***************************************************************************/
+
+
+static void SetMainTitle(void)
+{
+ char version[50];
+ char buffer[100];
+
+ sscanf(GetVersionString(),"%49s",version);
+ snprintf(buffer, ARRAY_LENGTH(buffer), "%s %s", MAMEUINAME, GetVersionString());
+ win_set_window_text_utf8(hMain,buffer);
+}
+
+static void memory_error(const char *message)
+{
+ win_message_box_utf8(hMain, message, emulator_info::get_appname(), MB_OK);
+ exit(-1);
+}
+
+static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow)
+{
+ extern int mame_validitychecks(int game);
+ WNDCLASS wndclass;
+ RECT rect;
+ int i, nSplitterCount;
+ extern const FOLDERDATA g_folderData[];
+ extern const FILTER_ITEM g_filterList[];
+ LONG common_control_version = GetCommonControlVersion();
+ int validity_failed = 0;
+ TCHAR* t_inpdir = NULL;
+ LONG_PTR l;
+
+ if (!OptionsInit())
+ return FALSE;
+
+ srand((unsigned)time(NULL));
+
+ // create the memory pool
+ mameui_pool = pool_alloc_lib(memory_error);
+
+ // custom per-game icons
+ icon_index = (int*)pool_malloc_lib(mameui_pool, sizeof(int) * driver_list::total());
+ memset(icon_index, '\0', sizeof(int) * driver_list::total());
+
+ // set up window class
+ wndclass.style = CS_HREDRAW | CS_VREDRAW;
+ wndclass.lpfnWndProc = MameWindowProc;
+ wndclass.cbClsExtra = 0;
+ wndclass.cbWndExtra = DLGWINDOWEXTRA;
+ wndclass.hInstance = hInstance;
+ wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAMEUI_ICON));
+ wndclass.hCursor = NULL;
+ wndclass.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
+ wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_UI_MENU);
+ wndclass.lpszClassName = TEXT("MainClass");
+
+ RegisterClass(&wndclass);
+
+ InitCommonControls();
+
+ // Are we using an Old comctl32.dll?
+ dprintf("common controlversion %ld %ld\n",common_control_version >> 16, common_control_version & 0xffff);
+
+ oldControl = (common_control_version < PACKVERSION(4,71));
+ xpControl = (common_control_version >= PACKVERSION(6,0));
+ if (oldControl)
+ {
+ char buf[] = MAMEUINAME " has detected an old version of comctl32.dll\n\n"
+ "Game Properties, many configuration options and\n"
+ "features are not available without an updated DLL\n\n";
+
+ win_message_box_utf8(0, buf, MAMEUINAME " Outdated comctl32.dll Warning", MB_OK | MB_ICONWARNING);
+ }
+
+ g_mame32_message = RegisterWindowMessage(TEXT("MAME32"));
+
+ HelpInit();
+
+ t_inpdir = ui_wstring_from_utf8(GetInpDir());
+ if( ! t_inpdir )
+ return FALSE;
+
+ _tcscpy(last_directory,t_inpdir);
+ free(t_inpdir);
+ hMain = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAIN), 0, NULL);
+ if (hMain == NULL)
+ {
+ dprintf("error creating main dialog, aborting\n");
+ return FALSE;
+ }
+
+ s_pWatcher = DirWatcher_Init(hMain, WM_MAME32_FILECHANGED);
+ if (s_pWatcher)
+ {
+ DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), TRUE);
+ DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), TRUE);
+ }
+
+ SetMainTitle();
+ hTabCtrl = GetDlgItem(hMain, IDC_SSTAB);
+
+ {
+ struct TabViewOptions opts;
+
+ static const struct TabViewCallbacks s_tabviewCallbacks =
+ {
+ GetShowTabCtrl, // pfnGetShowTabCtrl
+ SetCurrentTab, // pfnSetCurrentTab
+ GetCurrentTab, // pfnGetCurrentTab
+ SetShowTab, // pfnSetShowTab
+ GetShowTab, // pfnGetShowTab
+
+ GetImageTabShortName, // pfnGetTabShortName
+ GetImageTabLongName, // pfnGetTabLongName
+ UpdateScreenShot // pfnOnSelectionChanged
+ };
+
+ memset(&opts, 0, sizeof(opts));
+ opts.pCallbacks = &s_tabviewCallbacks;
+ opts.nTabCount = MAX_TAB_TYPES;
+
+ if (!SetupTabView(hTabCtrl, &opts))
+ return FALSE;
+ }
+
+ /* subclass history window */
+ l = GetWindowLongPtr(GetDlgItem(hMain, IDC_HISTORY), GWLP_WNDPROC);
+ g_lpHistoryWndProc = (WNDPROC)l;
+ SetWindowLongPtr(GetDlgItem(hMain, IDC_HISTORY), GWLP_WNDPROC, (LONG_PTR)HistoryWndProc);
+
+ /* subclass picture frame area */
+ l = GetWindowLongPtr(GetDlgItem(hMain, IDC_SSFRAME), GWLP_WNDPROC);
+ g_lpPictureFrameWndProc = (WNDPROC)l;
+ SetWindowLongPtr(GetDlgItem(hMain, IDC_SSFRAME), GWLP_WNDPROC, (LONG_PTR)PictureFrameWndProc);
+
+ /* subclass picture area */
+ l = GetWindowLongPtr(GetDlgItem(hMain, IDC_SSPICTURE), GWLP_WNDPROC);
+ g_lpPictureWndProc = (WNDPROC)l;
+ SetWindowLongPtr(GetDlgItem(hMain, IDC_SSPICTURE), GWLP_WNDPROC, (LONG_PTR)PictureWndProc);
+
+ /* Load the pic for the default screenshot. */
+ hMissing_bitmap = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_ABOUT));
+
+ /* Stash hInstance for later use */
+ hInst = hInstance;
+
+ s_hToolBar = InitToolbar(hMain);
+ hStatusBar = InitStatusBar(hMain);
+ hProgWnd = InitProgressBar(hStatusBar);
+
+ main_resize_items[0].u.hwnd = s_hToolBar;
+ main_resize_items[1].u.hwnd = hStatusBar;
+
+ /* In order to handle 'Large Fonts' as the Windows
+ * default setting, we need to make the dialogs small
+ * enough to fit in our smallest window size with
+ * large fonts, then resize the picker, tab and button
+ * controls to fill the window, no matter which font
+ * is currently set. This will still look like bad
+ * if the user uses a bigger default font than 125%
+ * (Large Fonts) on the Windows display setting tab.
+ *
+ * NOTE: This has to do with Windows default font size
+ * settings, NOT our picker font size.
+ */
+
+ GetClientRect(hMain, &rect);
+
+ hTreeView = GetDlgItem(hMain, IDC_TREE);
+ hwndList = GetDlgItem(hMain, IDC_LIST);
+
+ if (!InitSplitters())
+ return FALSE;
+
+ nSplitterCount = GetSplitterCount();
+ for (i = 0; i < nSplitterCount; i++)
+ {
+ HWND hWnd;
+ HWND hWndLeft;
+ HWND hWndRight;
+
+ hWnd = GetDlgItem(hMain, g_splitterInfo[i].nSplitterWindow);
+ hWndLeft = GetDlgItem(hMain, g_splitterInfo[i].nLeftWindow);
+ hWndRight = GetDlgItem(hMain, g_splitterInfo[i].nRightWindow);
+
+ AddSplitter(hWnd, hWndLeft, hWndRight, g_splitterInfo[i].pfnAdjust);
+ }
+
+ /* Initial adjustment of controls on the Picker window */
+ ResizePickerControls(hMain);
+
+ TabView_UpdateSelection(hTabCtrl);
+
+ bDoGameCheck = GetGameCheck();
+ idle_work = TRUE;
+ game_index = 0;
+
+ bShowTree = GetShowFolderList();
+ bShowToolBar = GetShowToolBar();
+ bShowStatusBar = GetShowStatusBar();
+ bShowTabCtrl = GetShowTabCtrl();
+
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_TOOLBARS, (bShowToolBar) ? MF_CHECKED : MF_UNCHECKED);
+ ShowWindow(s_hToolBar, (bShowToolBar) ? SW_SHOW : SW_HIDE);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_STATUS, (bShowStatusBar) ? MF_CHECKED : MF_UNCHECKED);
+ ShowWindow(hStatusBar, (bShowStatusBar) ? SW_SHOW : SW_HIDE);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_PAGETAB, (bShowTabCtrl) ? MF_CHECKED : MF_UNCHECKED);
+
+ if (oldControl)
+ {
+ EnableMenuItem(GetMenu(hMain), ID_CUSTOMIZE_FIELDS, MF_GRAYED);
+ EnableMenuItem(GetMenu(hMain), ID_GAME_PROPERTIES, MF_GRAYED);
+ EnableMenuItem(GetMenu(hMain), ID_OPTIONS_DEFAULTS, MF_GRAYED);
+ }
+
+ /* Init DirectDraw */
+ if (!DirectDraw_Initialize())
+ {
+ DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIRECTX), NULL, DirectXDialogProc);
+ return FALSE;
+ }
+
+ LoadBackgroundBitmap();
+
+ dprintf("about to init tree\n");
+ InitTree(g_folderData, g_filterList);
+ dprintf("did init tree\n");
+
+ /* Initialize listview columns */
+ InitListView();
+ SetFocus(hwndList);
+
+ /* Reset the font */
+ {
+ LOGFONT logfont;
+
+ GetListFont(&logfont);
+ if (hFont ) {
+ //Clenaup old Font, otherwise we have a GDI handle leak
+ DeleteFont(hFont);
+ }
+ hFont = CreateFontIndirect(&logfont);
+ if (hFont )
+ SetAllWindowsFont(hMain, &main_resize, hFont, FALSE);
+ }
+
+ /* Init DirectInput */
+ if (!DirectInputInitialize())
+ {
+ DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIRECTX), NULL, DirectXDialogProc);
+ return FALSE;
+ }
+
+ AdjustMetrics();
+ UpdateScreenShot();
+
+ hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_TAB_KEYS));
+
+ /* clear keyboard state */
+ KeyboardStateClear();
+
+ if (GetJoyGUI() == TRUE)
+ {
+ g_pJoyGUI = &DIJoystick;
+ if (g_pJoyGUI->init() != 0)
+ g_pJoyGUI = NULL;
+ else
+ SetTimer(hMain, JOYGUI_TIMER, JOYGUI_MS, NULL);
+ }
+ else
+ g_pJoyGUI = NULL;
+
+ if (GetHideMouseOnStartup())
+ {
+ /* For some reason the mouse is centered when a game is exited, which of
+ course causes a WM_MOUSEMOVE event that shows the mouse. So we center
+ it now, before the startup coords are initilized, and that way the mouse
+ will still be hidden when exiting from a game (i hope) :)
+ */
+ SetCursorPos(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2);
+
+ // Then hide it
+ ShowCursor(FALSE);
+ }
+
+ nCmdShow = GetWindowState();
+ if (nCmdShow == SW_HIDE || nCmdShow == SW_MINIMIZE || nCmdShow == SW_SHOWMINIMIZED)
+ {
+ nCmdShow = SW_RESTORE;
+ }
+
+ if (GetRunFullScreen())
+ {
+ LONG lMainStyle;
+
+ // Remove menu
+ SetMenu(hMain,NULL);
+
+ // Frameless dialog (fake fullscreen)
+ lMainStyle = GetWindowLong(hMain, GWL_STYLE);
+ lMainStyle = lMainStyle & (WS_BORDER ^ 0xffffffff);
+ SetWindowLong(hMain, GWL_STYLE, lMainStyle);
+
+ nCmdShow = SW_MAXIMIZE;
+ }
+
+ ShowWindow(hMain, nCmdShow);
+
+ switch (GetViewMode())
+ {
+ case VIEW_LARGE_ICONS :
+ SetView(ID_VIEW_LARGE_ICON);
+ break;
+ case VIEW_SMALL_ICONS :
+ SetView(ID_VIEW_SMALL_ICON);
+ break;
+ case VIEW_INLIST :
+ SetView(ID_VIEW_LIST_MENU);
+ break;
+ case VIEW_REPORT :
+ SetView(ID_VIEW_DETAIL);
+ break;
+ case VIEW_GROUPED :
+ default :
+ SetView(ID_VIEW_GROUPED);
+ break;
+ }
+
+ if (GetCycleScreenshot() > 0)
+ {
+ SetTimer(hMain, SCREENSHOT_TIMER, GetCycleScreenshot()*1000, NULL); //scale to Seconds
+ }
+
+ if (validity_failed)
+ {
+ win_message_box_utf8(hMain, MAMEUINAME " has failed its validity checks. The GUI will "
+ "still work, but emulations will fail to execute", MAMEUINAME, MB_OK | MB_ICONERROR);
+ }
+
+ return TRUE;
+}
+
+
+static void Win32UI_exit()
+{
+ if (g_pJoyGUI)
+ g_pJoyGUI->exit();
+
+ /* Free GDI resources */
+ if (hMain) {
+ DeleteObject(hMain);
+ hMain = NULL;
+ }
+
+ if (hMissing_bitmap)
+ {
+ DeleteBitmap(hMissing_bitmap);
+ hMissing_bitmap = NULL;
+ }
+
+ if (hBackground)
+ {
+ DeleteBitmap(hBackground);
+ hBackground = NULL;
+ }
+
+ if (hPALbg)
+ {
+ DeletePalette(hPALbg);
+ hPALbg = NULL;
+ }
+
+ if (hFont)
+ {
+ DeleteFont(hFont);
+ hFont = NULL;
+ }
+
+ DestroyIcons();
+
+ DestroyAcceleratorTable(hAccel);
+
+ DirectInputClose();
+ DirectDraw_Close();
+
+ SetSavedFolderID(GetCurrentFolderID());
+ SaveGameListOptions();
+ //SaveDefaultOptions();
+ SaveOptions();
+
+ FreeFolders();
+
+ /* DestroyTree(hTreeView); */
+
+ FreeScreenShot();
+
+ OptionsExit();
+
+ HelpExit();
+
+ pool_free_lib(mameui_pool);
+ mameui_pool = NULL;
+}
+
+static LRESULT CALLBACK MameWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ MINMAXINFO *mminfo;
+ int i;
+ TCHAR szClass[128];
+ BOOL res;
+
+ switch (message)
+ {
+ case WM_CTLCOLORSTATIC:
+ if (hBackground && (HWND)lParam == GetDlgItem(hMain, IDC_HISTORY))
+ {
+ static HBRUSH hBrush=0;
+ HDC hDC=(HDC)wParam;
+ LOGBRUSH lb;
+
+ if (hBrush)
+ DeleteBrush(hBrush);
+ lb.lbStyle = BS_HOLLOW;
+ hBrush = CreateBrushIndirect(&lb);
+ SetBkMode(hDC, TRANSPARENT);
+ SetTextColor(hDC, GetListFontColor());
+ return (LRESULT) hBrush;
+ }
+ break;
+
+ case WM_INITDIALOG:
+ /* Initialize info for resizing subitems */
+ GetClientRect(hWnd, &main_resize.rect);
+ return TRUE;
+
+ case WM_SETFOCUS:
+ SetFocus(hwndList);
+ break;
+
+ case WM_SETTINGCHANGE:
+ AdjustMetrics();
+ return 0;
+
+ case WM_SIZE:
+ OnSize(hWnd, wParam, LOWORD(lParam), HIWORD(wParam));
+ return TRUE;
+
+ case WM_MENUSELECT:
+ return Statusbar_MenuSelect(hWnd, wParam, lParam);
+
+ case MM_PLAY_GAME:
+ MamePlayGame();
+ return TRUE;
+
+ case WM_INITMENUPOPUP:
+ UpdateMenu(GetMenu(hWnd));
+ break;
+
+ case WM_CONTEXTMENU:
+ if (HandleTreeContextMenu(hWnd, wParam, lParam)
+ || HandleScreenShotContextMenu(hWnd, wParam, lParam))
+ return FALSE;
+ break;
+
+ case WM_COMMAND:
+ return MameCommand(hWnd,(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam));
+
+ case WM_GETMINMAXINFO:
+ /* Don't let the window get too small; it can break resizing */
+ mminfo = (MINMAXINFO *) lParam;
+ mminfo->ptMinTrackSize.x = MIN_WIDTH;
+ mminfo->ptMinTrackSize.y = MIN_HEIGHT;
+ return 0;
+
+ case WM_TIMER:
+ switch (wParam)
+ {
+ case JOYGUI_TIMER:
+ PollGUIJoystick();
+ break;
+ case SCREENSHOT_TIMER:
+ TabView_CalculateNextTab(hTabCtrl);
+ UpdateScreenShot();
+ TabView_UpdateSelection(hTabCtrl);
+ break;
+ default:
+ break;
+ }
+ return TRUE;
+
+ case WM_CLOSE:
+ {
+ /* save current item */
+ RECT rect;
+ AREA area;
+ int nItem;
+ WINDOWPLACEMENT wndpl;
+ UINT state;
+
+ wndpl.length = sizeof(WINDOWPLACEMENT);
+ GetWindowPlacement(hMain, &wndpl);
+ state = wndpl.showCmd;
+
+ /* Restore the window before we attempt to save parameters,
+ * This fixed the lost window on startup problem, among other problems
+ */
+ if (state == SW_MINIMIZE || state == SW_SHOWMINIMIZED || state == SW_MAXIMIZE)
+ {
+ if( wndpl.flags & WPF_RESTORETOMAXIMIZED || state == SW_MAXIMIZE)
+ state = SW_MAXIMIZE;
+ else
+ state = SW_RESTORE;
+
+ ShowWindow(hWnd, SW_RESTORE);
+ }
+
+ /* Restore the window before we attempt to save parameters,
+ * This fixed the lost window on startup problem, among other problems
+ */
+ if (state == SW_MAXIMIZE)
+ ShowWindow(hWnd, SW_RESTORE);
+
+ for (i = 0; i < GetSplitterCount(); i++)
+ SetSplitterPos(i, nSplitterOffset[i]);
+ SetWindowState(state);
+
+ for (i = 0; i < sizeof(s_nPickers) / sizeof(s_nPickers[0]); i++)
+ Picker_SaveColumnWidths(GetDlgItem(hMain, s_nPickers[i]));
+
+ GetWindowRect(hWnd, &rect);
+ area.x = rect.left;
+ area.y = rect.top;
+ area.width = rect.right - rect.left;
+ area.height = rect.bottom - rect.top;
+ SetWindowArea(&area);
+
+ /* Save the users current game options and default game */
+ nItem = Picker_GetSelectedItem(hwndList);
+ SetDefaultGame(ModifyThe(driver_list::driver(nItem).name));
+
+ /* hide window to prevent orphan empty rectangles on the taskbar */
+ /* ShowWindow(hWnd,SW_HIDE); */
+ DestroyWindow( hWnd );
+
+ /* PostQuitMessage(0); */
+ break;
+ }
+
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ return 0;
+
+ case WM_LBUTTONDOWN:
+ OnLButtonDown(hWnd, (UINT)wParam, MAKEPOINTS(lParam));
+ break;
+
+ /*
+ Check to see if the mouse has been moved by the user since
+ startup. I'd like this checking to be done only in the
+ main WinProc (here), but somehow the WM_MOUSEDOWN messages
+ are eaten up before they reach MameWindowProc. That's why
+ there is one check for each of the subclassed windows too.
+
+ POSSIBLE BUGS:
+ I've included this check in the subclassed windows, but a
+ mose move in either the title bar, the menu, or the
+ toolbar will not generate a WM_MOUSEOVER message. At least
+ not one that I know how to pick up. A solution could maybe
+ be to subclass those too, but that's too much work :)
+ */
+
+ case WM_MOUSEMOVE:
+ {
+ if (MouseHasBeenMoved())
+ ShowCursor(TRUE);
+
+ if (g_listview_dragging)
+ MouseMoveListViewDrag(MAKEPOINTS(lParam));
+ else
+ /* for splitters */
+ OnMouseMove(hWnd, (UINT)wParam, MAKEPOINTS(lParam));
+ break;
+ }
+
+ case WM_LBUTTONUP:
+ if (g_listview_dragging)
+ ButtonUpListViewDrag(MAKEPOINTS(lParam));
+ else
+ /* for splitters */
+ OnLButtonUp(hWnd, (UINT)wParam, MAKEPOINTS(lParam));
+ break;
+
+ case WM_NOTIFY:
+ /* Where is this message intended to go */
+ {
+ LPNMHDR lpNmHdr = (LPNMHDR)lParam;
+
+ /* Fetch tooltip text */
+ if (lpNmHdr->code == TTN_NEEDTEXT)
+ {
+ LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT)lParam;
+ CopyToolTipText(lpttt);
+ }
+
+ if (lpNmHdr->hwndFrom == hTreeView)
+ return TreeViewNotify(lpNmHdr);
+
+ GetClassName(lpNmHdr->hwndFrom, szClass, sizeof(szClass) / sizeof(szClass[0]));
+ if (!_tcscmp(szClass, TEXT("SysListView32")))
+ return Picker_HandleNotify(lpNmHdr);
+ if (!_tcscmp(szClass, TEXT("SysTabControl32")))
+ return TabView_HandleNotify(lpNmHdr);
+ }
+ break;
+
+ case WM_DRAWITEM:
+ {
+ LPDRAWITEMSTRUCT lpDis = (LPDRAWITEMSTRUCT)lParam;
+
+ GetClassName(lpDis->hwndItem, szClass, sizeof(szClass) / sizeof(szClass[0]));
+ if (!_tcscmp(szClass, TEXT("SysListView32")))
+ Picker_HandleDrawItem(GetDlgItem(hMain, lpDis->CtlID), lpDis);
+ }
+ break;
+
+ case WM_MEASUREITEM :
+ {
+ LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
+
+ // tell the list view that each row (item) should be just taller than our font
+
+ //DefWindowProc(hWnd, message, wParam, lParam);
+ //dprintf("default row height calculation gives %u\n",lpmis->itemHeight);
+
+ TEXTMETRIC tm;
+ HDC hDC = GetDC(NULL);
+ HFONT hFontOld = (HFONT)SelectObject(hDC,hFont);
+
+ GetTextMetrics(hDC,&tm);
+
+ lpmis->itemHeight = tm.tmHeight + tm.tmExternalLeading + 1;
+ if (lpmis->itemHeight < 17)
+ lpmis->itemHeight = 17;
+ //dprintf("we would do %u\n",tm.tmHeight + tm.tmExternalLeading + 1);
+ SelectObject(hDC,hFontOld);
+ ReleaseDC(NULL,hDC);
+
+ return TRUE;
+ }
+
+ case WM_MAME32_FILECHANGED:
+ {
+ char szFileName[32];
+ char *s;
+ int nGameIndex;
+ int (*pfnGetAuditResults)(int driver_index) = NULL;
+ void (*pfnSetAuditResults)(int driver_index, int audit_results) = NULL;
+
+ switch(HIWORD(wParam))
+ {
+ case 0:
+ pfnGetAuditResults = GetRomAuditResults;
+ pfnSetAuditResults = SetRomAuditResults;
+ break;
+
+ case 1:
+ pfnGetAuditResults = GetSampleAuditResults;
+ pfnSetAuditResults = SetSampleAuditResults;
+ break;
+ }
+
+ if (pfnGetAuditResults && pfnSetAuditResults)
+ {
+ int nParentIndex = -1;
+
+ snprintf(szFileName, sizeof(szFileName), "%s", (LPCSTR) lParam);
+ s = strchr(szFileName, '.');
+ if (s)
+ *s = '\0';
+ s = strchr(szFileName, '\\');
+ if (s)
+ *s = '\0';
+
+ for (nGameIndex = 0; nGameIndex < driver_list::total(); nGameIndex++)
+ {
+ for (nParentIndex = nGameIndex; nGameIndex == -1; nParentIndex = GetParentIndex(&driver_list::driver(nParentIndex)))
+ {
+ if (!core_stricmp(driver_list::driver(nParentIndex).name, szFileName))
+ {
+ if (pfnGetAuditResults(nGameIndex) != UNKNOWN)
+ {
+ pfnSetAuditResults(nGameIndex, UNKNOWN);
+ PostMessage(hMain, WM_MAME32_AUDITGAME, wParam, nGameIndex);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case WM_MAME32_AUDITGAME:
+ {
+ LV_FINDINFO lvfi;
+ int nGameIndex;
+
+ nGameIndex = lParam;
+
+ switch(HIWORD(wParam))
+ {
+ case 0:
+ MameUIVerifyRomSet(nGameIndex, 0);
+ break;
+ case 1:
+ MameUIVerifySampleSet(nGameIndex);
+ break;
+ }
+
+ memset(&lvfi, 0, sizeof(lvfi));
+ lvfi.flags = LVFI_PARAM;
+ lvfi.lParam = nGameIndex;
+
+ i = ListView_FindItem(hwndList, -1, &lvfi);
+ if (i != -1)
+ {
+ res = ListView_RedrawItems(hwndList, i, i);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ return DefWindowProc(hWnd, message, wParam, lParam);
+}
+
+static int HandleKeyboardGUIMessage(HWND hWnd, UINT message, UINT wParam, LONG lParam)
+{
+ switch (message)
+ {
+ case WM_CHAR: /* List-View controls use this message for searching the items "as user types" */
+ //MessageBox(NULL,"wm_char message arrived","TitleBox",MB_OK);
+ return TRUE;
+
+ case WM_KEYDOWN:
+ KeyboardKeyDown(0, wParam, lParam);
+ return TRUE;
+
+ case WM_KEYUP:
+ KeyboardKeyUp(0, wParam, lParam);
+ return TRUE;
+
+ case WM_SYSKEYDOWN:
+ KeyboardKeyDown(1, wParam, lParam);
+ return TRUE;
+
+ case WM_SYSKEYUP:
+ KeyboardKeyUp(1, wParam, lParam);
+ return TRUE;
+ }
+
+ return FALSE; /* message not processed */
+}
+
+static BOOL PumpMessage()
+{
+ MSG msg;
+
+ if (!GetMessage(&msg, NULL, 0, 0))
+ return FALSE;
+
+ if (IsWindow(hMain))
+ {
+ BOOL absorbed_key = FALSE;
+ if (GetKeyGUI())
+ absorbed_key = HandleKeyboardGUIMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam);
+ else
+ absorbed_key = TranslateAccelerator(hMain, hAccel, &msg);
+
+ if (!absorbed_key)
+ {
+ if (!IsDialogMessage(hMain, &msg))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static BOOL FolderCheck(void)
+{
+
+ char *pDescription = NULL;
+ int nGameIndex = 0;
+ int i=0;
+ int iStep = 0;
+ LV_FINDINFO lvfi;
+ int nCount = ListView_GetItemCount(hwndList);
+ BOOL changed = FALSE;
+ BOOL res;
+
+ MSG msg;
+ for(i=0; i<nCount;i++)
+ {
+ LV_ITEM lvi;
+
+ lvi.iItem = i;
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM;
+ res = ListView_GetItem(hwndList, &lvi);
+ nGameIndex = lvi.lParam;
+ SetRomAuditResults(nGameIndex, UNKNOWN);
+ SetSampleAuditResults(nGameIndex, UNKNOWN);
+ }
+ if( nCount > 0)
+ ProgressBarShow();
+ else
+ return FALSE;
+ if( nCount < 100 )
+ iStep = 100 / nCount;
+ else
+ iStep = nCount/100;
+ UpdateListView();
+ UpdateWindow(hMain);
+ for(i=0; i<nCount;i++)
+ {
+ LV_ITEM lvi;
+
+ lvi.iItem = i;
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_PARAM;
+ res = ListView_GetItem(hwndList, &lvi);
+ nGameIndex = lvi.lParam;
+ if (GetRomAuditResults(nGameIndex) == UNKNOWN)
+ {
+ MameUIVerifyRomSet(nGameIndex, 0);
+ changed = TRUE;
+ }
+
+ if (GetSampleAuditResults(nGameIndex) == UNKNOWN)
+ {
+ MameUIVerifySampleSet(nGameIndex);
+ changed = TRUE;
+ }
+
+ lvfi.flags = LVFI_PARAM;
+ lvfi.lParam = nGameIndex;
+
+ i = ListView_FindItem(hwndList, -1, &lvfi);
+ if (changed && i != -1)
+ {
+ res = ListView_RedrawItems(hwndList, i, i);
+ while( PeekMessage( &msg, hwndList, 0, 0, PM_REMOVE ) != 0)
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ }
+ changed = FALSE;
+ if ((i % iStep) == 0)
+ ProgressBarStepParam(i, nCount);
+ }
+ ProgressBarHide();
+ pDescription = ModifyThe(driver_list::driver(Picker_GetSelectedItem(hwndList)).description);
+ SetStatusBarText(0, pDescription);
+ UpdateStatusBar();
+ return TRUE;
+}
+
+static BOOL GameCheck(void)
+{
+ LV_FINDINFO lvfi;
+ int i;
+ BOOL changed = FALSE;
+ BOOL res;
+
+ if (game_index == 0)
+ ProgressBarShow();
+
+ if (game_index >= driver_list::total())
+ {
+ bDoGameCheck = FALSE;
+ ProgressBarHide();
+ ResetWhichGamesInFolders();
+ return FALSE;
+ }
+
+ if (GetRomAuditResults(game_index) == UNKNOWN)
+ {
+ MameUIVerifyRomSet(game_index, 0);
+ changed = TRUE;
+ }
+
+ if (GetSampleAuditResults(game_index) == UNKNOWN)
+ {
+ MameUIVerifySampleSet(game_index);
+ changed = TRUE;
+ }
+
+ lvfi.flags = LVFI_PARAM;
+ lvfi.lParam = game_index;
+
+ i = ListView_FindItem(hwndList, -1, &lvfi);
+ if (changed && i != -1)
+ res = ListView_RedrawItems(hwndList, i, i);
+ if ((game_index % progBarStep) == 0)
+ ProgressBarStep();
+ game_index++;
+
+ return changed;
+}
+
+static BOOL OnIdle(HWND hWnd)
+{
+ static int bFirstTime = TRUE;
+ static int bResetList = TRUE;
+
+ char *pDescription;
+ int driver_index;
+
+ if (bFirstTime)
+ {
+ bResetList = FALSE;
+ bFirstTime = FALSE;
+ }
+ if (bDoGameCheck)
+ {
+ bResetList |= GameCheck();
+ return idle_work;
+ }
+ // NPW 17-Jun-2003 - Commenting this out because it is redundant
+ // and it causes the game to reset back to the original game after an F5
+ // refresh
+ //driver_index = GetGameNameIndex(GetDefaultGame());
+ //SetSelectedPickItem(driver_index);
+
+ // in case it's not found, get it back
+ driver_index = Picker_GetSelectedItem(hwndList);
+
+ pDescription = ModifyThe(driver_list::driver(driver_index).description);
+ SetStatusBarText(0, pDescription);
+ idle_work = FALSE;
+ UpdateStatusBar();
+ bFirstTime = TRUE;
+
+ if (!idle_work)
+ PostMessage(GetMainWindow(),WM_COMMAND, MAKEWPARAM(ID_VIEW_LINEUPICONS, TRUE),(LPARAM)NULL);
+ return idle_work;
+}
+
+static void OnSize(HWND hWnd, UINT nState, int nWidth, int nHeight)
+{
+ static BOOL firstTime = TRUE;
+
+ if (nState != SIZE_MAXIMIZED && nState != SIZE_RESTORED)
+ return;
+
+ ResizeWindow(hWnd, &main_resize);
+ ResizeProgressBar();
+ if (firstTime == FALSE)
+ OnSizeSplitter(hMain);
+ //firstTime = FALSE;
+ /* Update the splitters structures as appropriate */
+ RecalcSplitters();
+ if (firstTime == FALSE)
+ ResizePickerControls(hMain);
+ firstTime = FALSE;
+ UpdateScreenShot();
+}
+
+
+
+static HWND GetResizeItemWindow(HWND hParent, const ResizeItem *ri)
+{
+ HWND hControl;
+ if (ri->type == RA_ID)
+ hControl = GetDlgItem(hParent, ri->u.id);
+ else
+ hControl = ri->u.hwnd;
+ return hControl;
+}
+
+
+
+static void SetAllWindowsFont(HWND hParent, const Resize *r, HFONT hTheFont, BOOL bRedraw)
+{
+ int i;
+ HWND hControl;
+
+ for (i = 0; r->items[i].type != RA_END; i++)
+ {
+ hControl = GetResizeItemWindow(hParent, &r->items[i]);
+ if (r->items[i].setfont)
+ {
+ SetWindowFont(hControl, hTheFont, bRedraw);
+ }
+ /* Take care of subcontrols, if appropriate */
+ if (r->items[i].subwindow )
+ SetAllWindowsFont(hControl, (const Resize*)r->items[i].subwindow, hTheFont, bRedraw);
+
+ }
+}
+
+
+
+static void ResizeWindow(HWND hParent, Resize *r)
+{
+ int cmkindex = 0, dx, dy;
+ HWND hControl;
+ RECT parent_rect, rect;
+ const ResizeItem *ri;
+ POINT p = {0, 0};
+
+ if (hParent == NULL)
+ return;
+
+ /* Calculate change in width and height of parent window */
+ GetClientRect(hParent, &parent_rect);
+ dy = parent_rect.bottom - r->rect.bottom;
+ dx = parent_rect.right - r->rect.right;
+ ClientToScreen(hParent, &p);
+
+ while (r->items[cmkindex].type != RA_END)
+ {
+ int width, height;
+ ri = &r->items[cmkindex];
+ if (ri->type == RA_ID)
+ hControl = GetDlgItem(hParent, ri->u.id);
+ else
+ hControl = ri->u.hwnd;
+
+ if (hControl == NULL)
+ {
+ cmkindex++;
+ continue;
+ }
+
+ /* Get control's rectangle relative to parent */
+ GetWindowRect(hControl, &rect);
+ OffsetRect(&rect, -p.x, -p.y);
+ width = rect.right - rect.left;
+ height = rect.bottom - rect.top;
+
+ if (!(ri->action & RA_LEFT))
+ rect.left += dx;
+
+ if (!(ri->action & RA_TOP))
+ rect.top += dy;
+
+ if (ri->action & RA_RIGHT)
+ rect.right += dx;
+
+ if (ri->action & RA_BOTTOM)
+ rect.bottom += dy;
+ //Sanity Check the child rect
+ if (parent_rect.top > rect.top)
+ rect.top = parent_rect.top;
+ if (parent_rect.left > rect.left)
+ rect.left = parent_rect.left;
+ if (parent_rect.bottom < rect.bottom)
+ {
+ rect.bottom = parent_rect.bottom;
+ //ensure we have at least a minimal height
+ rect.top = rect.bottom - height;
+ if (rect.top < parent_rect.top)
+ rect.top = parent_rect.top;
+ }
+ if (parent_rect.right < rect.right)
+ {
+ rect.right = parent_rect.right;
+ //ensure we have at least a minimal width
+ rect.left = rect.right - width;
+ if (rect.left < parent_rect.left)
+ rect.left = parent_rect.left;
+ }
+ MoveWindow(hControl, rect.left, rect.top,
+ (rect.right - rect.left),
+ (rect.bottom - rect.top), TRUE);
+
+ /* Take care of subcontrols, if appropriate */
+ if (ri->subwindow )
+ ResizeWindow(hControl, (Resize*)ri->subwindow);
+
+ cmkindex++;
+ }
+
+ /* Record parent window's new location */
+ memcpy(&r->rect, &parent_rect, sizeof(RECT));
+}
+
+static void ProgressBarShow()
+{
+ RECT rect;
+ int widths[2] = {150, -1};
+
+ if (driver_list::total() < 100)
+ progBarStep = 100 / driver_list::total();
+ else
+ progBarStep = (driver_list::total() / 100);
+
+ SendMessage(hStatusBar, SB_SETPARTS, (WPARAM)2, (LPARAM)(LPINT)widths);
+ SendMessage(hProgWnd, PBM_SETRANGE, 0, (LPARAM)MAKELONG(0, driver_list::total()));
+ SendMessage(hProgWnd, PBM_SETSTEP, (WPARAM)progBarStep, 0);
+ SendMessage(hProgWnd, PBM_SETPOS, 0, 0);
+
+ StatusBar_GetItemRect(hStatusBar, 1, &rect);
+
+ MoveWindow(hProgWnd, rect.left, rect.top,
+ rect.right - rect.left,
+ rect.bottom - rect.top, TRUE);
+
+ bProgressShown = TRUE;
+}
+
+static void ProgressBarHide()
+{
+ RECT rect;
+ int widths[4];
+ HDC hDC;
+ SIZE size;
+ int numParts = 4;
+
+ if (hProgWnd == NULL)
+ return;
+
+ hDC = GetDC(hProgWnd);
+
+ ShowWindow(hProgWnd, SW_HIDE);
+
+ GetTextExtentPoint32(hDC, TEXT("MMX"), 3, &size);
+ widths[3] = size.cx;
+ GetTextExtentPoint32(hDC, TEXT("MMMM games"), 10, &size);
+ widths[2] = size.cx;
+ //Just specify 24 instead of 30, gives us sufficient space to display the message, and saves some space
+ GetTextExtentPoint32(hDC, TEXT("Screen flip support is missing"), 24, &size);
+ widths[1] = size.cx;
+
+ ReleaseDC(hProgWnd, hDC);
+
+ widths[0] = -1;
+ SendMessage(hStatusBar, SB_SETPARTS, (WPARAM)1, (LPARAM)(LPINT)widths);
+ StatusBar_GetItemRect(hStatusBar, 0, &rect);
+
+ widths[0] = (rect.right - rect.left) - (widths[1] + widths[2] + widths[3]);
+ widths[1] += widths[0];
+ widths[2] += widths[1];
+ widths[3] = -1;
+
+ SendMessage(hStatusBar, SB_SETPARTS, (WPARAM)numParts, (LPARAM)(LPINT)widths);
+ UpdateStatusBar();
+
+ bProgressShown = FALSE;
+}
+
+static void ResizeProgressBar()
+{
+ if (bProgressShown)
+ {
+ RECT rect;
+ int widths[2] = {150, -1};
+
+ SendMessage(hStatusBar, SB_SETPARTS, (WPARAM)2, (LPARAM)(LPINT)widths);
+ StatusBar_GetItemRect(hStatusBar, 1, &rect);
+ MoveWindow(hProgWnd, rect.left, rect.top,
+ rect.right - rect.left,
+ rect.bottom - rect.top, TRUE);
+ }
+ else
+ {
+ ProgressBarHide();
+ }
+}
+
+static void ProgressBarStepParam(int iGameIndex, int nGameCount)
+{
+ SetStatusBarTextF(0, "Game search %d%% complete", ((iGameIndex + 1) * 100) / nGameCount);
+ if (iGameIndex == 0)
+ ShowWindow(hProgWnd, SW_SHOW);
+ SendMessage(hProgWnd, PBM_STEPIT, 0, 0);
+}
+
+static void ProgressBarStep()
+{
+ ProgressBarStepParam(game_index, driver_list::total());
+}
+
+static HWND InitProgressBar(HWND hParent)
+{
+ RECT rect;
+
+ StatusBar_GetItemRect(hStatusBar, 0, &rect);
+
+ rect.left += 150;
+
+ return CreateWindowEx(WS_EX_STATICEDGE, PROGRESS_CLASS, TEXT("Progress Bar"),
+ WS_CHILD | PBS_SMOOTH, rect.left, rect.top, rect.right - rect.left,
+ rect.bottom - rect.top, hParent, NULL, hInst, NULL);
+}
+
+static void CopyToolTipText(LPTOOLTIPTEXT lpttt)
+{
+ int i;
+ int iButton = lpttt->hdr.idFrom;
+ static TCHAR String[1024];
+ BOOL bConverted = FALSE;
+ TCHAR* t_gameinfostatus;
+
+ /* Map command ID to string index */
+ for (i = 0; CommandToString[i] != -1; i++)
+ {
+ if (CommandToString[i] == iButton)
+ {
+ iButton = i;
+ bConverted = TRUE;
+ break;
+ }
+ }
+ if( bConverted )
+ {
+ /* Check for valid parameter */
+ if(iButton > NUM_TOOLTIPS)
+ {
+ _tcscpy(String,TEXT("Invalid Button Index"));
+ }
+ else
+ {
+ _tcscpy(String,szTbStrings[iButton]);
+ }
+ }
+ else if ( iButton <= 2 )
+ {
+ //Statusbar
+ SendMessage(lpttt->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, 0, 200);
+ if( iButton != 1)
+ SendMessage(hStatusBar, SB_GETTEXT, (WPARAM)iButton, (LPARAM)&String );
+ else {
+ //for first pane we get the Status directly, to get the line breaks
+ t_gameinfostatus = ui_wstring_from_utf8( GameInfoStatus(Picker_GetSelectedItem(hwndList), FALSE));
+ if( !t_gameinfostatus )
+ return;
+ _tcscpy(String, t_gameinfostatus);
+ free(t_gameinfostatus);
+ }
+ }
+ else
+ _tcscpy(String,TEXT("Invalid Button Index"));
+
+ lpttt->lpszText = String;
+}
+
+static HWND InitToolbar(HWND hParent)
+{
+ HWND hToolBar = CreateToolbarEx(hParent,
+ WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
+ CCS_TOP | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS, 1, 8,
+ hInst, IDB_TOOLBAR, tbb, NUM_TOOLBUTTONS, 16, 16, 0, 0, sizeof(TBBUTTON));
+ RECT rect;
+ int idx;
+ int iPosX, iPosY, iHeight;
+
+ // get Edit Control position
+ idx = SendMessage(hToolBar, TB_BUTTONCOUNT, (WPARAM)0, (LPARAM)0) - 1;
+ SendMessage(hToolBar, TB_GETITEMRECT, (WPARAM)idx, (LPARAM)&rect);
+ iPosX = rect.right + 10;
+ iPosY = rect.top + 1;
+ iHeight = rect.bottom - rect.top - 2;
+
+ // create Edit Control
+ win_create_window_ex_utf8( 0L, "Edit", SEARCH_PROMPT, WS_CHILD | WS_BORDER | WS_VISIBLE | ES_LEFT,
+ iPosX, iPosY, 200, iHeight, hToolBar, (HMENU)ID_TOOLBAR_EDIT, hInst, NULL );
+
+ return hToolBar;
+}
+
+static HWND InitStatusBar(HWND hParent)
+{
+ HMENU hMenu = GetMenu(hParent);
+
+ popstr[0].hMenu = 0;
+ popstr[0].uiString = 0;
+ popstr[1].hMenu = hMenu;
+ popstr[1].uiString = IDS_UI_FILE;
+ popstr[2].hMenu = GetSubMenu(hMenu, 1);
+ popstr[2].uiString = IDS_VIEW_TOOLBAR;
+ popstr[3].hMenu = 0;
+ popstr[3].uiString = 0;
+
+ return CreateStatusWindow(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
+ CCS_BOTTOM | SBARS_SIZEGRIP | SBT_TOOLTIPS,
+ TEXT("Ready"), hParent, 2);
+}
+
+
+static LRESULT Statusbar_MenuSelect(HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+ UINT fuFlags = (UINT)HIWORD(wParam);
+ HMENU hMainMenu = NULL;
+ int iMenu = 0;
+
+ /* Handle non-system popup menu descriptions. */
+ if ( (fuFlags & MF_POPUP)
+ && (!(fuFlags & MF_SYSMENU)))
+ {
+ for (iMenu = 1; iMenu < MAX_MENUS; iMenu++)
+ {
+ if ((HMENU)lParam == popstr[iMenu].hMenu)
+ {
+ hMainMenu = (HMENU)lParam;
+ break;
+ }
+ }
+ }
+
+ if (hMainMenu)
+ {
+ /* Display helpful text in status bar */
+ MenuHelp(WM_MENUSELECT, wParam, lParam, hMainMenu, hInst,
+ hStatusBar, (UINT *)&popstr[iMenu]);
+ }
+ else
+ {
+ UINT nZero = 0;
+ MenuHelp(WM_MENUSELECT, wParam, lParam, NULL, hInst,
+ hStatusBar, &nZero);
+ }
+
+ return 0;
+}
+
+static void UpdateStatusBar()
+{
+ LPTREEFOLDER lpFolder = GetCurrentFolder();
+ int games_shown = 0;
+ int i = -1;
+
+ if (!lpFolder)
+ return;
+
+ while (1)
+ {
+ i = FindGame(lpFolder,i+1);
+ if (i == -1)
+ break;
+
+ if (!GameFiltered(i, lpFolder->m_dwFlags))
+ games_shown++;
+ }
+
+ /* Show number of games in the current 'View' in the status bar */
+ SetStatusBarTextF(2, g_szGameCountString, games_shown);
+
+ i = Picker_GetSelectedItem(hwndList);
+
+ if (games_shown == 0)
+ DisableSelection();
+ else
+ {
+ const char* pStatus = GameInfoStatus(i, FALSE);
+ SetStatusBarText(1, pStatus);
+ }
+}
+
+static void UpdateHistory(void)
+{
+ HDC hDC;
+ RECT rect;
+ TEXTMETRIC tm ;
+ int nLines, nLineHeight;
+ //DWORD dwStyle = GetWindowLong(GetDlgItem(hMain, IDC_HISTORY), GWL_STYLE);
+ have_history = FALSE;
+
+ if (GetSelectedPick() >= 0)
+ {
+ char *histText = GetGameHistory(Picker_GetSelectedItem(hwndList));
+
+ have_history = (histText && histText[0]) ? TRUE : FALSE;
+ win_set_window_text_utf8(GetDlgItem(hMain, IDC_HISTORY), histText);
+ }
+
+ if (have_history && GetShowScreenShot()
+ && ((TabView_GetCurrentTab(hTabCtrl) == TAB_HISTORY) ||
+ (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ||
+ (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ))
+ {
+ Edit_GetRect(GetDlgItem(hMain, IDC_HISTORY),&rect);
+ nLines = Edit_GetLineCount(GetDlgItem(hMain, IDC_HISTORY) );
+ hDC = GetDC(GetDlgItem(hMain, IDC_HISTORY));
+ GetTextMetrics (hDC, &tm);
+ nLineHeight = tm.tmHeight - tm.tmInternalLeading;
+ if( ( (rect.bottom - rect.top) / nLineHeight) < (nLines) )
+ {
+ //more than one Page, so show Scrollbar
+ SetScrollRange(GetDlgItem(hMain, IDC_HISTORY), SB_VERT, 0, nLines, TRUE);
+ }
+ else
+ {
+ //hide Scrollbar
+ SetScrollRange(GetDlgItem(hMain, IDC_HISTORY),SB_VERT, 0, 0, TRUE);
+
+ }
+ ShowWindow(GetDlgItem(hMain, IDC_HISTORY), SW_SHOW);
+ }
+ else
+ ShowWindow(GetDlgItem(hMain, IDC_HISTORY), SW_HIDE);
+
+}
+
+
+static void DisableSelection()
+{
+ MENUITEMINFO mmi;
+ HMENU hMenu = GetMenu(hMain);
+ BOOL prev_have_selection = have_selection;
+
+ mmi.cbSize = sizeof(mmi);
+ mmi.fMask = MIIM_TYPE;
+ mmi.fType = MFT_STRING;
+ mmi.dwTypeData = (TCHAR *) TEXT("&Play");
+ mmi.cch = _tcslen(mmi.dwTypeData);
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mmi);
+
+ EnableMenuItem(hMenu, ID_FILE_PLAY, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_GRAYED);
+
+ SetStatusBarText(0, "No Selection");
+ SetStatusBarText(1, "");
+ SetStatusBarText(3, "");
+
+ have_selection = FALSE;
+
+ if (prev_have_selection != have_selection)
+ UpdateScreenShot();
+}
+
+static void EnableSelection(int nGame)
+{
+ TCHAR buf[200];
+ const char * pText;
+ MENUITEMINFO mmi;
+ HMENU hMenu = GetMenu(hMain);
+ TCHAR* t_description;
+
+ t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description)));
+ if( !t_description )
+ return;
+
+ _sntprintf(buf, sizeof(buf) / sizeof(buf[0]), g_szPlayGameString, t_description);
+ mmi.cbSize = sizeof(mmi);
+ mmi.fMask = MIIM_TYPE;
+ mmi.fType = MFT_STRING;
+ mmi.dwTypeData = buf;
+ mmi.cch = _tcslen(mmi.dwTypeData);
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mmi);
+
+ pText = ModifyThe(driver_list::driver(nGame).description);
+ SetStatusBarText(0, pText);
+ /* Add this game's status to the status bar */
+ pText = GameInfoStatus(nGame, FALSE);
+ SetStatusBarText(1, pText);
+ SetStatusBarText(3, "");
+
+ /* If doing updating game status and the game name is NOT pacman.... */
+
+ EnableMenuItem(hMenu, ID_FILE_PLAY, MF_ENABLED);
+ EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_ENABLED);
+
+ if (!oldControl)
+ EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_ENABLED);
+
+ if (bProgressShown && bListReady == TRUE)
+ {
+ SetDefaultGame(ModifyThe(driver_list::driver(nGame).name));
+ }
+ have_selection = TRUE;
+
+ UpdateScreenShot();
+
+ free(t_description);
+}
+
+static void PaintBackgroundImage(HWND hWnd, HRGN hRgn, int x, int y)
+{
+ RECT rcClient;
+ HRGN rgnBitmap;
+ HPALETTE hPAL;
+ HDC hDC = GetDC(hWnd);
+ int i, j;
+ HDC htempDC;
+ HBITMAP oldBitmap;
+
+ /* x and y are offsets within the background image that should be at 0,0 in hWnd */
+
+ /* So we don't paint over the control's border */
+ GetClientRect(hWnd, &rcClient);
+
+ htempDC = CreateCompatibleDC(hDC);
+ oldBitmap = (HBITMAP)SelectObject(htempDC, hBackground);
+
+ if (hRgn == NULL)
+ {
+ /* create a region of our client area */
+ rgnBitmap = CreateRectRgnIndirect(&rcClient);
+ SelectClipRgn(hDC, rgnBitmap);
+ DeleteBitmap(rgnBitmap);
+ }
+ else
+ {
+ /* use the passed in region */
+ SelectClipRgn(hDC, hRgn);
+ }
+
+ hPAL = GetBackgroundPalette();
+ if (hPAL == NULL)
+ hPAL = CreateHalftonePalette(hDC);
+
+ if (GetDeviceCaps(htempDC, RASTERCAPS) & RC_PALETTE && hPAL)
+ {
+ SelectPalette(htempDC, hPAL, FALSE);
+ RealizePalette(htempDC);
+ }
+
+ for (i = rcClient.left-x; i < rcClient.right; i += bmDesc.bmWidth)
+ for (j = rcClient.top-y; j < rcClient.bottom; j += bmDesc.bmHeight)
+ BitBlt(hDC, i, j, bmDesc.bmWidth, bmDesc.bmHeight, htempDC, 0, 0, SRCCOPY);
+
+ SelectObject(htempDC, oldBitmap);
+ DeleteDC(htempDC);
+
+ if (GetBackgroundPalette() == NULL)
+ {
+ DeletePalette(hPAL);
+ hPAL = NULL;
+ }
+
+ ReleaseDC(hWnd, hDC);
+}
+
+static LPCSTR GetCloneParentName(int nItem)
+{
+ int nParentIndex = -1;
+
+ if (DriverIsClone(nItem) == TRUE)
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(nItem));
+ if( nParentIndex >= 0)
+ return ModifyThe(driver_list::driver(nParentIndex).description);
+ }
+ return "";
+}
+
+static BOOL TreeViewNotify(LPNMHDR nm)
+{
+ switch (nm->code)
+ {
+ case TVN_SELCHANGED :
+ {
+ HTREEITEM hti = TreeView_GetSelection(hTreeView);
+ TVITEM tvi;
+
+ tvi.mask = TVIF_PARAM | TVIF_HANDLE;
+ tvi.hItem = hti;
+
+ if (TreeView_GetItem(hTreeView, &tvi))
+ {
+ SetCurrentFolder((LPTREEFOLDER)tvi.lParam);
+ if (bListReady)
+ {
+ ResetListView();
+ UpdateScreenShot();
+ }
+ }
+ return TRUE;
+ }
+ case TVN_BEGINLABELEDIT :
+ {
+ TV_DISPINFO *ptvdi = (TV_DISPINFO *)nm;
+ LPTREEFOLDER folder = (LPTREEFOLDER)ptvdi->item.lParam;
+
+ if (folder->m_dwFlags & F_CUSTOM)
+ {
+ // user can edit custom folder names
+ g_in_treeview_edit = TRUE;
+ return FALSE;
+ }
+ // user can't edit built in folder names
+ return TRUE;
+ }
+ case TVN_ENDLABELEDIT :
+ {
+ TV_DISPINFO *ptvdi = (TV_DISPINFO *)nm;
+ LPTREEFOLDER folder = (LPTREEFOLDER)ptvdi->item.lParam;
+ char* utf8_szText;
+ BOOL result;
+
+ g_in_treeview_edit = FALSE;
+
+ if (ptvdi->item.pszText == NULL || _tcslen(ptvdi->item.pszText) == 0)
+ return FALSE;
+
+ utf8_szText = ui_utf8_from_wstring(ptvdi->item.pszText);
+ if( !utf8_szText )
+ return FALSE;
+
+ result = TryRenameCustomFolder(folder, utf8_szText);
+
+ free(utf8_szText);
+
+ return result;
+ }
+ }
+ return FALSE;
+}
+
+
+
+static void GamePicker_OnHeaderContextMenu(POINT pt, int nColumn)
+{
+ // Right button was clicked on header
+ HMENU hMenuLoad;
+ HMENU hMenu;
+
+ hMenuLoad = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXT_HEADER));
+ hMenu = GetSubMenu(hMenuLoad, 0);
+ lastColumnClick = nColumn;
+ TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,0,hMain,NULL);
+
+ DestroyMenu(hMenuLoad);
+}
+
+
+
+char* ConvertAmpersandString(const char *s)
+{
+ /* takes a string and changes any ampersands to double ampersands,
+ for setting text of window controls that don't allow us to disable
+ the ampersand underlining.
+ */
+ /* returns a static buffer--use before calling again */
+
+ static char buf[200];
+ char *ptr;
+
+ ptr = buf;
+ while (*s)
+ {
+ if (*s == '&')
+ *ptr++ = *s;
+ *ptr++ = *s++;
+ }
+ *ptr = 0;
+
+ return buf;
+}
+
+static int GUI_seq_pressed(const input_seq *seq)
+{
+ int codenum;
+ int res = 1;
+ bool invert = 0;
+ int count = 0;
+
+ for (codenum = 0; (*seq)[codenum] != input_seq::end_code; codenum++)
+ {
+ input_code code = (*seq)[codenum];
+
+ if (code == input_seq::not_code)
+ invert = !invert;
+
+ else if (code == input_seq::or_code)
+ {
+ if (res && count)
+ return 1;
+ res = 1;
+ count = 0;
+ }
+ else
+ {
+ if (res)
+ {
+ if ((keyboard_state[(int)(code.item_id())] != 0) == invert)
+ res = 0;
+ }
+ invert = 0;
+ ++count;
+ }
+ }
+ return res && count;
+}
+
+static void check_for_GUI_action(void)
+{
+ int i;
+
+ for (i = 0; i < NUM_GUI_SEQUENCES; i++)
+ {
+ const input_seq *is = &(GUISequenceControl[i].is);
+
+ if (GUI_seq_pressed(is))
+ {
+ dprintf("seq =%s pressed\n", GUISequenceControl[i].name);
+ switch (GUISequenceControl[i].func_id)
+ {
+ case ID_GAME_AUDIT:
+ case ID_GAME_PROPERTIES:
+ case ID_CONTEXT_FILTERS:
+ case ID_UI_START:
+ KeyboardStateClear(); /* beacuse whe won't receive KeyUp mesage when we loose focus */
+ break;
+ default:
+ break;
+ }
+ SendMessage(hMain, WM_COMMAND, GUISequenceControl[i].func_id, 0);
+ }
+ }
+}
+
+static void KeyboardStateClear(void)
+{
+ memset(keyboard_state, 0, sizeof(keyboard_state));
+ dprintf("keyboard gui state cleared.\n");
+}
+
+
+static void KeyboardKeyDown(int syskey, int vk_code, int special)
+{
+ int i, found = 0;
+ int icode = 0;
+ int special_code = (special >> 24) & 1;
+ int scancode = (special>>16) & 0xff;
+
+ if ((vk_code==VK_MENU) || (vk_code==VK_CONTROL) || (vk_code==VK_SHIFT))
+ {
+ found = 1;
+
+ /* a hack for right shift - it's better to use Direct X for keyboard input it seems......*/
+ if (vk_code==VK_SHIFT)
+ if (scancode>0x30) /* on my keyboard left shift scancode is 0x2a, right shift is 0x36 */
+ special_code = 1;
+
+ if (special_code) /* right hand keys */
+ {
+ switch(vk_code)
+ {
+ case VK_MENU:
+ icode = (int)(KEYCODE_RALT.item_id());
+ break;
+ case VK_CONTROL:
+ icode = (int)(KEYCODE_RCONTROL.item_id());
+ break;
+ case VK_SHIFT:
+ icode = (int)(KEYCODE_RSHIFT.item_id());
+ break;
+ }
+ }
+ else /* left hand keys */
+ {
+ switch(vk_code)
+ {
+ case VK_MENU:
+ icode = (int)(KEYCODE_LALT.item_id());
+ break;
+ case VK_CONTROL:
+ icode = (int)(KEYCODE_LCONTROL.item_id());
+ break;
+ case VK_SHIFT:
+ icode = (int)(KEYCODE_LSHIFT.item_id());
+ break;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < ARRAY_LENGTH(win_key_trans_table); i++)
+ {
+ if ( vk_code == win_key_trans_table[i][VIRTUAL_KEY])
+ {
+ icode = win_key_trans_table[i][MAME_KEY];
+ found = 1;
+ break;
+ }
+ }
+ }
+ if (!found)
+ {
+ dprintf("VK_code pressed not found = %i\n",vk_code);
+ //MessageBox(NULL,"keydown message arrived not processed","TitleBox",MB_OK);
+ return;
+ }
+ dprintf("VK_code pressed found = %i, sys=%i, mame_keycode=%i special=%08x\n", vk_code, syskey, icode, special);
+ keyboard_state[icode] = true;
+ check_for_GUI_action();
+}
+
+static void KeyboardKeyUp(int syskey, int vk_code, int special)
+{
+ int i, found = 0;
+ int icode = 0;
+ int special_code = (special >> 24) & 1;
+ int scancode = (special>>16) & 0xff;
+
+ if ((vk_code==VK_MENU) || (vk_code==VK_CONTROL) || (vk_code==VK_SHIFT))
+ {
+ found = 1;
+
+ /* a hack for right shift - it's better to use Direct X for keyboard input it seems......*/
+ if (vk_code==VK_SHIFT)
+ if (scancode>0x30) /* on my keyboard left shift scancode is 0x2a, right shift is 0x36 */
+ special_code = 1;
+
+ if (special_code) /* right hand keys */
+ {
+ switch(vk_code)
+ {
+ case VK_MENU:
+ icode = (int)(KEYCODE_RALT.item_id());
+ break;
+ case VK_CONTROL:
+ icode = (int)(KEYCODE_RCONTROL.item_id());
+ break;
+ case VK_SHIFT:
+ icode = (int)(KEYCODE_RSHIFT.item_id());
+ break;
+ }
+ }
+ else /* left hand keys */
+ {
+ switch(vk_code)
+ {
+ case VK_MENU:
+ icode = (int)(KEYCODE_LALT.item_id());
+ break;
+ case VK_CONTROL:
+ icode = (int)(KEYCODE_LCONTROL.item_id());
+ break;
+ case VK_SHIFT:
+ icode = (int)(KEYCODE_LSHIFT.item_id());
+ break;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < ARRAY_LENGTH(win_key_trans_table); i++)
+ {
+ if (vk_code == win_key_trans_table[i][VIRTUAL_KEY])
+ {
+ icode = win_key_trans_table[i][MAME_KEY];
+ found = 1;
+ break;
+ }
+ }
+ }
+ if (!found)
+ {
+ dprintf("VK_code released not found = %i\n",vk_code);
+ //MessageBox(NULL,"keyup message arrived not processed","TitleBox",MB_OK);
+ return;
+ }
+ keyboard_state[icode] = false;
+ dprintf("VK_code released found= %i, sys=%i, mame_keycode=%i special=%08x\n", vk_code, syskey, icode, special );
+ check_for_GUI_action();
+}
+
+static void PollGUIJoystick()
+{
+ // For the exec timer, will keep track of how long the button has been pressed
+ static int exec_counter = 0;
+ const char* exec_command;
+ TCHAR* t_exec_command;
+
+ if (in_emulation)
+ return;
+
+ if (g_pJoyGUI == NULL)
+ return;
+
+ g_pJoyGUI->poll_joysticks();
+
+
+ // User pressed UP
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyUp(0), GetUIJoyUp(1), GetUIJoyUp(2),GetUIJoyUp(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_UP, 0);
+ }
+
+ // User pressed DOWN
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyDown(0), GetUIJoyDown(1), GetUIJoyDown(2),GetUIJoyDown(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_DOWN, 0);
+ }
+
+ // User pressed LEFT
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyLeft(0), GetUIJoyLeft(1), GetUIJoyLeft(2),GetUIJoyLeft(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_LEFT, 0);
+ }
+
+ // User pressed RIGHT
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyRight(0), GetUIJoyRight(1), GetUIJoyRight(2),GetUIJoyRight(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_RIGHT, 0);
+ }
+
+ // User pressed START GAME
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyStart(0), GetUIJoyStart(1), GetUIJoyStart(2),GetUIJoyStart(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_START, 0);
+ }
+
+ // User pressed PAGE UP
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageUp(0), GetUIJoyPageUp(1), GetUIJoyPageUp(2),GetUIJoyPageUp(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_PGUP, 0);
+ }
+
+ // User pressed PAGE DOWN
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyPageDown(0), GetUIJoyPageDown(1), GetUIJoyPageDown(2),GetUIJoyPageDown(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_PGDOWN, 0);
+ }
+
+ // User pressed HOME
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHome(0), GetUIJoyHome(1), GetUIJoyHome(2),GetUIJoyHome(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_HOME, 0);
+ }
+
+ // User pressed END
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyEnd(0), GetUIJoyEnd(1), GetUIJoyEnd(2),GetUIJoyEnd(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_END, 0);
+ }
+
+ // User pressed CHANGE SCREENSHOT
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoySSChange(0), GetUIJoySSChange(1), GetUIJoySSChange(2),GetUIJoySSChange(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, IDC_SSFRAME, 0);
+ }
+
+ // User pressed SCROLL HISTORY UP
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryUp(0), GetUIJoyHistoryUp(1), GetUIJoyHistoryUp(2),GetUIJoyHistoryUp(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_HISTORY_UP, 0);
+ }
+
+ // User pressed SCROLL HISTORY DOWN
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyHistoryDown(0), GetUIJoyHistoryDown(1), GetUIJoyHistoryDown(2),GetUIJoyHistoryDown(3))))
+ {
+ SendMessage(hMain, WM_COMMAND, ID_UI_HISTORY_DOWN, 0);
+ }
+
+ // User pressed EXECUTE COMMANDLINE
+ if (g_pJoyGUI->is_joy_pressed(JOYCODE(GetUIJoyExec(0), GetUIJoyExec(1), GetUIJoyExec(2),GetUIJoyExec(3))))
+ {
+ if (++exec_counter >= GetExecWait()) // Button has been pressed > exec timeout
+ {
+ PROCESS_INFORMATION pi;
+ STARTUPINFO si;
+
+ // Reset counter
+ exec_counter = 0;
+
+ ZeroMemory( &si, sizeof(si) );
+ ZeroMemory( &pi, sizeof(pi) );
+ si.dwFlags = STARTF_FORCEONFEEDBACK;
+ si.cb = sizeof(si);
+
+ exec_command = GetExecCommand();
+ t_exec_command = ui_wstring_from_utf8(exec_command);
+ if( !t_exec_command )
+ return;
+ CreateProcess(NULL, t_exec_command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
+
+ free(t_exec_command);
+
+ // We will not wait for the process to finish cause it might be a background task
+ // The process won't get closed when MAME32 closes either.
+
+ // But close the handles cause we won't need them anymore. Will not close process.
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+ }
+ }
+ else
+ {
+ // Button has been released within the timeout period, reset the counter
+ exec_counter = 0;
+ }
+}
+
+static void SetView(int menu_id)
+{
+ BOOL force_reset = FALSE;
+ int i;
+
+ // first uncheck previous menu item, check new one
+ CheckMenuRadioItem(GetMenu(hMain), ID_VIEW_LARGE_ICON, ID_VIEW_GROUPED, menu_id, MF_CHECKED);
+ ToolBar_CheckButton(s_hToolBar, menu_id, MF_CHECKED);
+
+ if (Picker_GetViewID(hwndList) == VIEW_GROUPED || menu_id == ID_VIEW_GROUPED)
+ {
+ // this changes the sort order, so redo everything
+ force_reset = TRUE;
+ }
+
+ for (i = 0; i < sizeof(s_nPickers) / sizeof(s_nPickers[0]); i++)
+ Picker_SetViewID(GetDlgItem(hMain, s_nPickers[i]), menu_id - ID_VIEW_LARGE_ICON);
+
+ if (force_reset)
+ {
+ for (i = 0; i < sizeof(s_nPickers) / sizeof(s_nPickers[0]); i++)
+ Picker_Sort(GetDlgItem(hMain, s_nPickers[i]));
+ }
+}
+
+static void ResetListView()
+{
+ int i;
+ int current_game;
+ LV_ITEM lvi;
+ BOOL no_selection = FALSE;
+ LPTREEFOLDER lpFolder = GetCurrentFolder();
+ HRESULT res;
+ BOOL b_res;
+
+ if (!lpFolder)
+ return;
+
+ /* If the last folder was empty, no_selection is TRUE */
+ if (have_selection == FALSE)
+ no_selection = TRUE;
+
+ current_game = Picker_GetSelectedItem(hwndList);
+
+ SetWindowRedraw(hwndList,FALSE);
+
+ b_res = ListView_DeleteAllItems(hwndList);
+
+ // hint to have it allocate it all at once
+ ListView_SetItemCount(hwndList,driver_list::total());
+
+ lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
+ lvi.stateMask = 0;
+
+ i = -1;
+
+ do
+ {
+ /* Add the games that are in this folder */
+ if ((i = FindGame(lpFolder, i + 1)) != -1)
+ {
+ if (GameFiltered(i, lpFolder->m_dwFlags))
+ continue;
+
+ lvi.iItem = i;
+ lvi.iSubItem = 0;
+ lvi.lParam = i;
+ lvi.pszText = LPSTR_TEXTCALLBACK;
+ lvi.iImage = I_IMAGECALLBACK;
+ res = ListView_InsertItem(hwndList, &lvi);
+ }
+ } while (i != -1);
+
+ Picker_Sort(hwndList);
+
+ if (bListReady)
+ {
+ /* If last folder was empty, select the first item in this folder */
+ if (no_selection)
+ Picker_SetSelectedPick(hwndList, 0);
+ else
+ Picker_SetSelectedItem(hwndList, current_game);
+ }
+
+ /*RS Instead of the Arrange Call that was here previously on all Views
+ We now need to set the ViewMode for SmallIcon again,
+ for an explanation why, see SetView*/
+ if (GetViewMode() == VIEW_SMALL_ICONS)
+ SetView(ID_VIEW_SMALL_ICON);
+
+ SetWindowRedraw(hwndList, TRUE);
+
+ UpdateStatusBar();
+
+}
+
+static void UpdateGameList(BOOL bUpdateRomAudit, BOOL bUpdateSampleAudit)
+{
+ int i;
+
+ for (i = 0; i < driver_list::total(); i++)
+ {
+ if (bUpdateRomAudit && DriverUsesRoms(i))
+ SetRomAuditResults(i, UNKNOWN);
+ if (bUpdateSampleAudit && DriverUsesSamples(i))
+ SetSampleAuditResults(i, UNKNOWN);
+ }
+
+ idle_work = TRUE;
+ bDoGameCheck = TRUE;
+ game_index = 0;
+
+ ReloadIcons();
+
+ // Let REFRESH also load new background if found
+ LoadBackgroundBitmap();
+ InvalidateRect(hMain,NULL,TRUE);
+ Picker_ResetIdle(hwndList);
+}
+
+UINT_PTR CALLBACK CFHookProc(
+ HWND hdlg, // handle to dialog box
+ UINT uiMsg, // message identifier
+ WPARAM wParam, // message parameter
+ LPARAM lParam // message parameter
+)
+{
+ int iIndex, i;
+ COLORREF cCombo, cList;
+ switch (uiMsg)
+ {
+ case WM_INITDIALOG:
+ SendDlgItemMessage(hdlg, cmb4, CB_ADDSTRING, 0, (LPARAM)TEXT("Custom"));
+ iIndex = SendDlgItemMessage(hdlg, cmb4, CB_GETCOUNT, 0, 0);
+ cList = GetListFontColor();
+ SendDlgItemMessage(hdlg, cmb4, CB_SETITEMDATA,(WPARAM)iIndex-1,(LPARAM)cList );
+ for( i = 0; i< iIndex; i++)
+ {
+ cCombo = SendDlgItemMessage(hdlg, cmb4, CB_GETITEMDATA,(WPARAM)i,0 );
+ if( cList == cCombo)
+ {
+ SendDlgItemMessage(hdlg, cmb4, CB_SETCURSEL,(WPARAM)i,0 );
+ break;
+ }
+ }
+ break;
+ case WM_COMMAND:
+ if( LOWORD(wParam) == cmb4)
+ {
+ switch (HIWORD(wParam))
+ {
+ case CBN_SELCHANGE: // The color ComboBox changed selection
+ iIndex = (int)SendDlgItemMessage(hdlg, cmb4,
+ CB_GETCURSEL, 0, 0L);
+ if( iIndex == SendDlgItemMessage(hdlg, cmb4, CB_GETCOUNT, 0, 0)-1)
+ {
+ //Custom color selected
+ cList = GetListFontColor();
+ PickColor(&cList);
+ SendDlgItemMessage(hdlg, cmb4, CB_DELETESTRING, iIndex, 0);
+ SendDlgItemMessage(hdlg, cmb4, CB_ADDSTRING, 0, (LPARAM)TEXT("Custom"));
+ SendDlgItemMessage(hdlg, cmb4, CB_SETITEMDATA,(WPARAM)iIndex,(LPARAM)cList);
+ SendDlgItemMessage(hdlg, cmb4, CB_SETCURSEL,(WPARAM)iIndex,0 );
+ return TRUE;
+ }
+ }
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void PickFont(void)
+{
+ LOGFONT font;
+ CHOOSEFONT cf;
+ TCHAR szClass[128];
+ HWND hWnd;
+ HRESULT res;
+ BOOL b_res;
+
+ GetListFont(&font);
+ font.lfQuality = DEFAULT_QUALITY;
+
+ cf.lStructSize = sizeof(CHOOSEFONT);
+ cf.hwndOwner = hMain;
+ cf.lpLogFont = &font;
+ cf.lpfnHook = &CFHookProc;
+ cf.rgbColors = GetListFontColor();
+ cf.Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT | CF_EFFECTS | CF_ENABLEHOOK;
+ if (!ChooseFont(&cf))
+ return;
+
+ SetListFont(&font);
+ if (hFont)
+ DeleteFont(hFont);
+ hFont = CreateFontIndirect(&font);
+ if (hFont)
+ {
+ COLORREF textColor = cf.rgbColors;
+
+ if (textColor == RGB(255,255,255))
+ {
+ textColor = RGB(240, 240, 240);
+ }
+
+ SetAllWindowsFont(hMain, &main_resize, hFont, TRUE);
+
+ hWnd = GetWindow(hMain, GW_CHILD);
+ while(hWnd)
+ {
+ if (GetClassName(hWnd, szClass, sizeof(szClass) / sizeof(szClass[0])))
+ {
+ if (!_tcscmp(szClass, TEXT("SysListView32")))
+ {
+ b_res = ListView_SetTextColor(hWnd, textColor);
+ }
+ else if (!_tcscmp(szClass, TEXT("SysTreeView32")))
+ {
+ res = TreeView_SetTextColor(hTreeView, textColor);
+ }
+ }
+ hWnd = GetWindow(hWnd, GW_HWNDNEXT);
+ }
+ SetListFontColor(cf.rgbColors);
+ ResetListView();
+ }
+}
+
+static void PickColor(COLORREF *cDefault)
+{
+ CHOOSECOLOR cc;
+ COLORREF choice_colors[16];
+ int i;
+
+ for (i=0;i<16;i++)
+ choice_colors[i] = GetCustomColor(i);
+
+ cc.lStructSize = sizeof(CHOOSECOLOR);
+ cc.hwndOwner = hMain;
+ cc.rgbResult = *cDefault;
+ cc.lpCustColors = choice_colors;
+ cc.Flags = CC_ANYCOLOR | CC_RGBINIT | CC_SOLIDCOLOR | CC_FULLOPEN;
+ if (!ChooseColor(&cc))
+ return;
+ for (i=0;i<16;i++)
+ SetCustomColor(i,choice_colors[i]);
+ *cDefault = cc.rgbResult;
+}
+
+static void PickCloneColor(void)
+{
+ COLORREF cClonecolor;
+ cClonecolor = GetListCloneColor();
+ PickColor( &cClonecolor);
+ SetListCloneColor(cClonecolor);
+ InvalidateRect(hwndList,NULL,FALSE);
+}
+
+static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify)
+{
+ int i = 0;
+ LPTREEFOLDER folder;
+ char* utf8_szFile;
+ BOOL res = 0;
+
+ switch (id)
+ {
+ case ID_FILE_PLAY:
+ MamePlayGame();
+ return TRUE;
+
+ case ID_FILE_PLAY_RECORD:
+ MamePlayRecordGame();
+ return TRUE;
+
+ case ID_FILE_PLAY_BACK:
+ MamePlayBackGame();
+ return TRUE;
+
+ case ID_FILE_PLAY_RECORD_WAVE:
+ MamePlayRecordWave();
+ return TRUE;
+
+ case ID_FILE_PLAY_RECORD_MNG:
+ MamePlayRecordMNG();
+ return TRUE;
+
+ case ID_FILE_PLAY_RECORD_AVI:
+ MamePlayRecordAVI();
+ return TRUE;
+
+ case ID_FILE_LOADSTATE :
+ MameLoadState();
+ return TRUE;
+
+ case ID_FILE_AUDIT:
+ AuditDialog(hMain, 1);
+ ResetWhichGamesInFolders();
+ ResetListView();
+ SetFocus(hwndList);
+ return TRUE;
+
+ case ID_FILE_AUDIT_X:
+ AuditDialog(hMain, 2);
+ ResetWhichGamesInFolders();
+ ResetListView();
+ SetFocus(hwndList);
+ return TRUE;
+
+ case ID_FILE_EXIT:
+ PostMessage(hMain, WM_CLOSE, 0, 0);
+ return TRUE;
+
+ case ID_VIEW_LARGE_ICON:
+ SetView(ID_VIEW_LARGE_ICON);
+ return TRUE;
+
+ case ID_VIEW_SMALL_ICON:
+ SetView(ID_VIEW_SMALL_ICON);
+ ResetListView();
+ return TRUE;
+
+ case ID_VIEW_LIST_MENU:
+ SetView(ID_VIEW_LIST_MENU);
+ return TRUE;
+
+ case ID_VIEW_DETAIL:
+ SetView(ID_VIEW_DETAIL);
+ return TRUE;
+
+ case ID_VIEW_GROUPED:
+ SetView(ID_VIEW_GROUPED);
+ return TRUE;
+
+ /* Arrange Icons submenu */
+ case ID_VIEW_BYGAME:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_GAMES);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_BYDIRECTORY:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_DIRECTORY);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_BYMANUFACTURER:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_MANUFACTURER);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_BYTIMESPLAYED:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_PLAYED);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_BYTYPE:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_TYPE);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_BYYEAR:
+ SetSortReverse(FALSE);
+ SetSortColumn(COLUMN_YEAR);
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_VIEW_FOLDERS:
+ bShowTree = !bShowTree;
+ SetShowFolderList(bShowTree);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_FOLDERS, (bShowTree) ? MF_CHECKED : MF_UNCHECKED);
+ UpdateScreenShot();
+ break;
+
+ case ID_VIEW_TOOLBARS:
+ bShowToolBar = !bShowToolBar;
+ SetShowToolBar(bShowToolBar);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_TOOLBARS, (bShowToolBar) ? MF_CHECKED : MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_TOOLBARS, (bShowToolBar) ? MF_CHECKED : MF_UNCHECKED);
+ ShowWindow(s_hToolBar, (bShowToolBar) ? SW_SHOW : SW_HIDE);
+ ResizePickerControls(hMain);
+ UpdateScreenShot();
+ break;
+
+ case ID_VIEW_STATUS:
+ bShowStatusBar = !bShowStatusBar;
+ SetShowStatusBar(bShowStatusBar);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_STATUS, (bShowStatusBar) ? MF_CHECKED : MF_UNCHECKED);
+ ToolBar_CheckButton(s_hToolBar, ID_VIEW_STATUS, (bShowStatusBar) ? MF_CHECKED : MF_UNCHECKED);
+ ShowWindow(hStatusBar, (bShowStatusBar) ? SW_SHOW : SW_HIDE);
+ ResizePickerControls(hMain);
+ UpdateScreenShot();
+ break;
+
+ case ID_VIEW_PAGETAB:
+ bShowTabCtrl = !bShowTabCtrl;
+ SetShowTabCtrl(bShowTabCtrl);
+ ShowWindow(hTabCtrl, (bShowTabCtrl) ? SW_SHOW : SW_HIDE);
+ ResizePickerControls(hMain);
+ UpdateScreenShot();
+ InvalidateRect(hMain,NULL,TRUE);
+ break;
+
+ /*
+ Switches to fullscreen mode. No check mark handling
+ for this item cause in fullscreen mode the menu won't
+ be visible anyways.
+ */
+ case ID_VIEW_FULLSCREEN:
+ SwitchFullScreenMode();
+ break;
+
+ case ID_TOOLBAR_EDIT:
+ {
+ std::string buf;
+ HWND hToolbarEdit;
+
+ buf = win_get_window_text_utf8(hwndCtl);
+ switch (codeNotify)
+ {
+ case TOOLBAR_EDIT_ACCELERATOR_PRESSED:
+ hToolbarEdit = GetDlgItem( s_hToolBar, ID_TOOLBAR_EDIT);
+ SetFocus(hToolbarEdit);
+ break;
+ case EN_CHANGE:
+ //put search routine here first, add a 200ms timer later.
+ if ((!_stricmp(buf.c_str(), SEARCH_PROMPT) && !_stricmp(g_SearchText, "")))
+ strcpy(g_SearchText, buf.c_str());
+ else
+ {
+ strcpy(g_SearchText, buf.c_str());
+ ResetListView();
+ }
+ break;
+ case EN_SETFOCUS:
+ if (!_stricmp(buf.c_str(), SEARCH_PROMPT))
+ win_set_window_text_utf8(hwndCtl, "");
+ break;
+ case EN_KILLFOCUS:
+ if (*buf.c_str() == 0)
+ win_set_window_text_utf8(hwndCtl, SEARCH_PROMPT);
+ break;
+ }
+ }
+ break;
+
+ case ID_GAME_AUDIT:
+ InitGameAudit(0);
+ if (!oldControl)
+ {
+ InitPropertyPageToPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, -1, Picker_GetSelectedItem(hwndList), AUDIT_PAGE);
+ }
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ /* ListView Context Menu */
+ case ID_CONTEXT_ADD_CUSTOM:
+ {
+ DialogBoxParam(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_CUSTOM_FILE),
+ hMain,AddCustomFileDialogProc,Picker_GetSelectedItem(hwndList));
+ SetFocus(hwndList);
+ break;
+ }
+
+ case ID_CONTEXT_REMOVE_CUSTOM:
+ {
+ RemoveCurrentGameCustomFolder();
+ break;
+ }
+
+ /* Tree Context Menu */
+ case ID_CONTEXT_FILTERS:
+ if (DialogBox(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_FILTERS), hMain, FilterDialogProc) == TRUE)
+ ResetListView();
+ SetFocus(hwndList);
+ return TRUE;
+
+ // ScreenShot Context Menu
+ // select current tab
+ case ID_VIEW_TAB_SCREENSHOT :
+ case ID_VIEW_TAB_FLYER :
+ case ID_VIEW_TAB_CABINET :
+ case ID_VIEW_TAB_MARQUEE :
+ case ID_VIEW_TAB_TITLE :
+ case ID_VIEW_TAB_CONTROL_PANEL :
+ case ID_VIEW_TAB_PCB :
+ case ID_VIEW_TAB_HISTORY:
+ if (id == ID_VIEW_TAB_HISTORY && GetShowTab(TAB_HISTORY) == FALSE)
+ break;
+
+ TabView_SetCurrentTab(hTabCtrl, id - ID_VIEW_TAB_SCREENSHOT);
+ UpdateScreenShot();
+ TabView_UpdateSelection(hTabCtrl);
+ break;
+
+ // toggle tab's existence
+ case ID_TOGGLE_TAB_SCREENSHOT :
+ case ID_TOGGLE_TAB_FLYER :
+ case ID_TOGGLE_TAB_CABINET :
+ case ID_TOGGLE_TAB_MARQUEE :
+ case ID_TOGGLE_TAB_TITLE :
+ case ID_TOGGLE_TAB_CONTROL_PANEL :
+ case ID_TOGGLE_TAB_PCB :
+ case ID_TOGGLE_TAB_HISTORY :
+ {
+ int toggle_flag = id - ID_TOGGLE_TAB_SCREENSHOT;
+
+ if (AllowedToSetShowTab(toggle_flag,!GetShowTab(toggle_flag)) == FALSE)
+ {
+ // attempt to hide the last tab
+ // should show error dialog? hide picture area? or ignore?
+ break;
+ }
+
+ SetShowTab(toggle_flag,!GetShowTab(toggle_flag));
+
+ TabView_Reset(hTabCtrl);
+
+ if (TabView_GetCurrentTab(hTabCtrl) == toggle_flag && GetShowTab(toggle_flag) == FALSE)
+ {
+ // we're deleting the tab we're on, so go to the next one
+ TabView_CalculateNextTab(hTabCtrl);
+ }
+
+
+ // Resize the controls in case we toggled to another history
+ // mode (and the history control needs resizing).
+
+ ResizePickerControls(hMain);
+ UpdateScreenShot();
+
+ TabView_UpdateSelection(hTabCtrl);
+
+ break;
+ }
+
+ /* Header Context Menu */
+ case ID_SORT_ASCENDING:
+ SetSortReverse(FALSE);
+ SetSortColumn(Picker_GetRealColumnFromViewColumn(hwndList, lastColumnClick));
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_SORT_DESCENDING:
+ SetSortReverse(TRUE);
+ SetSortColumn(Picker_GetRealColumnFromViewColumn(hwndList, lastColumnClick));
+ Picker_Sort(hwndList);
+ break;
+
+ case ID_CUSTOMIZE_FIELDS:
+ if (DialogBox(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_COLUMNS), hMain, ColumnDialogProc) == TRUE)
+ ResetColumnDisplay(FALSE);
+ SetFocus(hwndList);
+ return TRUE;
+
+ /* View Menu */
+ case ID_VIEW_LINEUPICONS:
+ if( codeNotify == FALSE)
+ ResetListView();
+ else
+ {
+ /*it was sent after a refresh (F5) was done, we only reset the View if "available" is the selected folder
+ as it doesn't affect the others*/
+ folder = GetSelectedFolder();
+ if( folder )
+ if (folder->m_nFolderId == FOLDER_AVAILABLE )
+ ResetListView();
+ }
+ break;
+
+ case ID_GAME_PROPERTIES:
+ if (!oldControl)
+ {
+ folder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
+ InitPropertyPage(hInst, hwnd, GetSelectedPickItemIcon(), OPTIONS_GAME, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ }
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ case ID_FOLDER_PROPERTIES:
+ if (!oldControl)
+ {
+ OPTIONS_TYPE curOptType = OPTIONS_SOURCE;
+ folder = GetSelectedFolder();
+ if(folder->m_nFolderId == FOLDER_VECTOR)
+ curOptType = OPTIONS_VECTOR;
+
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), curOptType, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ }
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ case ID_FOLDER_SOURCEPROPERTIES:
+ if (!oldControl)
+ {
+ folder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), (folder->m_nFolderId == FOLDER_VECTOR) ? OPTIONS_VECTOR : OPTIONS_SOURCE , folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ }
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ case ID_FOLDER_VECTORPROPERTIES:
+ if (!oldControl)
+ {
+ folder = GetFolderByID( FOLDER_VECTOR );
+ InitPropertyPage(hInst, hwnd, GetSelectedFolderIcon(), OPTIONS_VECTOR, folder->m_nFolderId, Picker_GetSelectedItem(hwndList));
+ }
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ case ID_FOLDER_AUDIT:
+ FolderCheck();
+ /* Just in case the toggle MMX on/off */
+ UpdateStatusBar();
+ break;
+
+ case ID_VIEW_PICTURE_AREA :
+ ToggleScreenShot();
+ break;
+
+ case ID_UPDATE_GAMELIST:
+ UpdateGameList(TRUE, TRUE);
+ break;
+
+ case ID_OPTIONS_FONT:
+ PickFont();
+ return TRUE;
+
+ case ID_OPTIONS_CLONE_COLOR:
+ PickCloneColor();
+ return TRUE;
+
+ case ID_OPTIONS_DEFAULTS:
+ /* Check the return value to see if changes were applied */
+ if (!oldControl)
+ {
+ InitDefaultPropertyPage(hInst, hwnd);
+ }
+ SetFocus(hwndList);
+ return TRUE;
+
+ case ID_OPTIONS_DIR:
+ {
+ int nResult = DialogBox(GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_DIRECTORIES),
+ hMain,
+ DirectoriesDialogProc);
+
+ SaveDefaultOptions();
+ SaveOptions();
+
+ BOOL bUpdateRoms = ((nResult & DIRDLG_ROMS) == DIRDLG_ROMS) ? TRUE : FALSE;
+ BOOL bUpdateSamples = ((nResult & DIRDLG_SAMPLES) == DIRDLG_SAMPLES) ? TRUE : FALSE;
+
+ if (s_pWatcher)
+ {
+ if (bUpdateRoms)
+ DirWatcher_Watch(s_pWatcher, 0, GetRomDirs(), TRUE);
+ if (bUpdateSamples)
+ DirWatcher_Watch(s_pWatcher, 1, GetSampleDirs(), TRUE);
+ }
+
+ /* update game list */
+ if (bUpdateRoms == TRUE || bUpdateSamples == TRUE)
+ UpdateGameList(bUpdateRoms, bUpdateSamples);
+
+ SetFocus(hwndList);
+ }
+ return TRUE;
+
+ case ID_OPTIONS_RESET_DEFAULTS:
+ if (DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_RESET), hMain, ResetDialogProc) == TRUE)
+ {
+ // these may have been changed
+ SaveDefaultOptions();
+ SaveOptions();
+ DestroyWindow(hwnd);
+ PostQuitMessage(0);
+ }
+ else
+ {
+ ResetListView();
+ SetFocus(hwndList);
+ }
+ return TRUE;
+
+ case ID_OPTIONS_INTERFACE:
+ DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_INTERFACE_OPTIONS), hMain, InterfaceDialogProc);
+ SaveOptions();
+
+ KillTimer(hMain, SCREENSHOT_TIMER);
+ if( GetCycleScreenshot() > 0)
+ {
+ SetTimer(hMain, SCREENSHOT_TIMER, GetCycleScreenshot()*1000, NULL ); // Scale to seconds
+ }
+
+ return TRUE;
+
+ case ID_OPTIONS_BG:
+ {
+ // More c++ stupidity with strings
+ // Get the path from the existing filename; if no filename go to root
+ TCHAR* t_bgdir = TEXT(".");
+ const char *s = GetBgDir();
+ std::string as;
+ util::zippath_parent(as, s);
+ size_t t1 = as.length()-1;
+ if (as[t1] == '\\') as[t1]='\0';
+ t1 = as.find(':');
+ if (t1 > 0)
+ t_bgdir = ui_wstring_from_utf8(as.c_str());
+
+ OPENFILENAME OFN;
+ static TCHAR szFile[MAX_PATH] = TEXT("\0");
+ if( !t_bgdir )
+ return FALSE;
+
+ OFN.lStructSize = sizeof(OPENFILENAME);
+ OFN.hwndOwner = hMain;
+ OFN.hInstance = 0;
+ OFN.lpstrFilter = TEXT("Image Files (*.png)\0*.PNG\0");
+ OFN.lpstrCustomFilter = NULL;
+ OFN.nMaxCustFilter = 0;
+ OFN.nFilterIndex = 1;
+ OFN.lpstrFile = szFile;
+ OFN.nMaxFile = sizeof(szFile);
+ OFN.lpstrFileTitle = NULL;
+ OFN.nMaxFileTitle = 0;
+ OFN.lpstrInitialDir = t_bgdir;
+ OFN.lpstrTitle = TEXT("Select a Background Image");
+ OFN.nFileOffset = 0;
+ OFN.nFileExtension = 0;
+ OFN.lpstrDefExt = NULL;
+ OFN.lCustData = 0;
+ OFN.lpfnHook = NULL;
+ OFN.lpTemplateName = NULL;
+ OFN.Flags = OFN_NOCHANGEDIR | OFN_SHOWHELP | OFN_EXPLORER;
+
+ if (GetOpenFileName(&OFN))
+ {
+ free(t_bgdir);
+ utf8_szFile = ui_utf8_from_wstring(szFile);
+ if( !utf8_szFile )
+ return FALSE;
+
+ // Make this file as the new default
+ SetBgDir(utf8_szFile);
+
+ // Display new background
+ LoadBackgroundBitmap();
+ InvalidateRect(hMain, NULL, TRUE);
+ free(utf8_szFile);
+ return TRUE;
+ }
+ free(t_bgdir);
+ }
+ break;
+#if 0
+ case ID_OPTIONS_HISTORY:
+ {
+ char filename[MAX_PATH];
+ strcpy(filename, GetHistoryFileName());
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_HISTORY_FILE))
+ {
+ SetHistoryFileName(filename);
+ }
+ return TRUE;
+ }
+ case ID_OPTIONS_MAMEINFO:
+ {
+ char filename[MAX_PATH];
+ strcpy(filename, GetMAMEInfoFileName());
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_MAMEINFO_FILE))
+ {
+ SetMAMEInfoFileName(filename);
+ }
+ return TRUE;
+ }
+#endif
+ case ID_HELP_ABOUT:
+ DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_ABOUT), hMain, AboutDialogProc);
+ SetFocus(hwndList);
+ return TRUE;
+
+ case IDOK :
+ /* cmk -- might need to check more codes here, not sure */
+ if (codeNotify != EN_CHANGE && codeNotify != EN_UPDATE)
+ {
+ /* enter key */
+ if (g_in_treeview_edit)
+ {
+ res = TreeView_EndEditLabelNow(hTreeView, FALSE);
+ return TRUE;
+ }
+ else
+ if (have_selection)
+ MamePlayGame();
+ }
+ break;
+
+ case IDCANCEL : /* esc key */
+ if (g_in_treeview_edit)
+ res = TreeView_EndEditLabelNow(hTreeView, TRUE);
+ break;
+
+ case IDC_PLAY_GAME :
+ if (have_selection)
+ MamePlayGame();
+ break;
+
+ case ID_UI_START:
+ SetFocus(hwndList);
+ MamePlayGame();
+ break;
+
+ case ID_UI_UP:
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() - 1);
+ break;
+
+ case ID_UI_DOWN:
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() + 1);
+ break;
+
+ case ID_UI_PGUP:
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() - ListView_GetCountPerPage(hwndList));
+ break;
+
+ case ID_UI_PGDOWN:
+ if ( (GetSelectedPick() + ListView_GetCountPerPage(hwndList)) < ListView_GetItemCount(hwndList) )
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() + ListView_GetCountPerPage(hwndList) );
+ else
+ Picker_SetSelectedPick(hwndList, ListView_GetItemCount(hwndList)-1 );
+ break;
+
+ case ID_UI_HOME:
+ Picker_SetSelectedPick(hwndList, 0);
+ break;
+
+ case ID_UI_END:
+ Picker_SetSelectedPick(hwndList, ListView_GetItemCount(hwndList)-1 );
+ break;
+ case ID_UI_LEFT:
+ /* hmmmmm..... */
+ SendMessage(hwndList,WM_HSCROLL, SB_LINELEFT, 0);
+ break;
+
+ case ID_UI_RIGHT:
+ /* hmmmmm..... */
+ SendMessage(hwndList,WM_HSCROLL, SB_LINERIGHT, 0);
+ break;
+ case ID_UI_HISTORY_UP:
+ /* hmmmmm..... */
+ {
+ HWND hHistory = GetDlgItem(hMain, IDC_HISTORY);
+ SendMessage(hHistory, EM_SCROLL, SB_PAGEUP, 0);
+ }
+ break;
+
+ case ID_UI_HISTORY_DOWN:
+ /* hmmmmm..... */
+ {
+ HWND hHistory = GetDlgItem(hMain, IDC_HISTORY);
+ SendMessage(hHistory, EM_SCROLL, SB_PAGEDOWN, 0);
+ }
+ break;
+
+ case IDC_SSFRAME:
+ TabView_CalculateNextTab(hTabCtrl);
+ UpdateScreenShot();
+ TabView_UpdateSelection(hTabCtrl);
+ break;
+
+ case ID_CONTEXT_SELECT_RANDOM:
+ SetRandomPickItem();
+ break;
+
+ case ID_CONTEXT_RESET_PLAYSTATS:
+ ResetPlayTime( Picker_GetSelectedItem(hwndList) );
+ ResetPlayCount( Picker_GetSelectedItem(hwndList) );
+ res = ListView_RedrawItems(hwndList, GetSelectedPick(), GetSelectedPick());
+ break;
+
+ case ID_CONTEXT_RENAME_CUSTOM :
+ TreeView_EditLabel(hTreeView,TreeView_GetSelection(hTreeView));
+ break;
+
+ default:
+ if (id >= ID_CONTEXT_SHOW_FOLDER_START && id < ID_CONTEXT_SHOW_FOLDER_END)
+ {
+ ToggleShowFolder(id - ID_CONTEXT_SHOW_FOLDER_START);
+ break;
+ }
+ for (i = 0; g_helpInfo[i].nMenuItem > 0; i++)
+ {
+ if (g_helpInfo[i].nMenuItem == id)
+ {
+ printf("%X: %ls\n",g_helpInfo[i].bIsHtmlHelp, g_helpInfo[i].lpFile);
+ if (i == 1) // get current whatsnew.txt from mamedev.org
+ {
+ std::string version = std::string(GetVersionString()); // turn version string into std
+ version.erase(1,1); // take out the decimal point
+ version.erase(4, std::string::npos); // take out the date
+ std::string url = "http://mamedev.org/releases/whatsnew_" + version + ".txt"; // construct url
+ std::wstring stemp = s2ws(url); // convert to wide string (yeah, typical c++ mess)
+ LPCWSTR result = stemp.c_str(); // then convert to const wchar_t*
+ ShellExecute(hMain, TEXT("open"), result, TEXT(""), NULL, SW_SHOWNORMAL); // show web page
+ }
+ else
+ if (g_helpInfo[i].bIsHtmlHelp)
+// HelpFunction(hMain, g_helpInfo[i].lpFile, HH_DISPLAY_TOPIC, 0);
+ ShellExecute(hMain, TEXT("open"), g_helpInfo[i].lpFile, TEXT(""), NULL, SW_SHOWNORMAL);
+// else
+// DisplayTextFile(hMain, g_helpInfo[i].lpFile);
+ return FALSE;
+ }
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+static void LoadBackgroundBitmap()
+{
+ HGLOBAL hDIBbg;
+
+ if (hBackground)
+ {
+ DeleteBitmap(hBackground);
+ hBackground = 0;
+ }
+
+ if (hPALbg)
+ {
+ DeletePalette(hPALbg);
+ hPALbg = 0;
+ }
+
+ if (LoadDIBBG(&hDIBbg, &hPALbg))
+ {
+ HDC hDC = GetDC(hwndList);
+ hBackground = DIBToDDB(hDC, hDIBbg, &bmDesc);
+ GlobalFree(hDIBbg);
+ ReleaseDC(hwndList, hDC);
+ }
+}
+
+static void ResetColumnDisplay(BOOL first_time)
+{
+ int driver_index;
+
+ if (!first_time)
+ Picker_ResetColumnDisplay(hwndList);
+
+ ResetListView();
+
+ driver_index = GetGameNameIndex(GetDefaultGame());
+ Picker_SetSelectedItem(hwndList, driver_index);
+}
+
+static int GamePicker_GetItemImage(HWND hwndPicker, int nItem)
+{
+ return GetIconForDriver(nItem);
+}
+
+static const TCHAR *GamePicker_GetItemString(HWND hwndPicker, int nItem, int nColumn, TCHAR *pszBuffer, UINT nBufferLength)
+{
+ const TCHAR *s = NULL;
+ const char* utf8_s = NULL;
+ char playtime_buf[256];
+
+ switch(nColumn)
+ {
+ case COLUMN_GAMES:
+ /* Driver description */
+ utf8_s = ModifyThe(driver_list::driver(nItem).description);
+ break;
+
+ case COLUMN_ORIENTATION:
+ utf8_s = DriverIsVertical(nItem) ? "Vertical" : "Horizontal";
+ break;
+
+#ifdef SHOW_COLUMN_ROMS
+ case COLUMN_ROMS:
+ utf8_s = GetAuditString(GetRomAuditResults(nItem));
+ break;
+#endif
+#ifdef SHOW_COLUMN_SAMPLES
+ case COLUMN_SAMPLES:
+ /* Samples */
+ if (DriverUsesSamples(nItem))
+ utf8_s = GetAuditString(GetSampleAuditResults(nItem));
+ else
+ s = TEXT("-");
+ break;
+#endif
+ case COLUMN_DIRECTORY:
+ /* Driver name (directory) */
+ utf8_s = driver_list::driver(nItem).name;
+ break;
+
+ case COLUMN_SRCDRIVERS:
+ /* Source drivers */
+ utf8_s = GetDriverFilename(nItem);
+ break;
+
+ case COLUMN_PLAYTIME:
+ /* Source drivers */
+ GetTextPlayTime(nItem, playtime_buf);
+ utf8_s = playtime_buf;
+ break;
+
+ case COLUMN_TYPE:
+ /* Vector/Raster */
+ {
+ if (DriverIsVector(nItem))
+ s = TEXT("Vector");
+ else
+ s = TEXT("Raster");
+ break;
+ }
+
+ case COLUMN_TRACKBALL:
+ /* Trackball */
+ if (DriverUsesTrackball(nItem))
+ s = TEXT("Yes");
+ else
+ s = TEXT("No");
+ break;
+
+ case COLUMN_PLAYED:
+ /* times played */
+ _sntprintf(pszBuffer, nBufferLength, TEXT("%i"), GetPlayCount(nItem));
+ s = pszBuffer;
+ break;
+
+ case COLUMN_MANUFACTURER:
+ /* Manufacturer */
+ utf8_s = driver_list::driver(nItem).manufacturer;
+ break;
+
+ case COLUMN_YEAR:
+ /* Year */
+ utf8_s = driver_list::driver(nItem).year;
+ break;
+
+ case COLUMN_CLONE:
+ utf8_s = GetCloneParentName(nItem);
+ break;
+ }
+
+ if( utf8_s )
+ {
+ TCHAR* t_s = ui_wstring_from_utf8(utf8_s);
+ if( !t_s )
+ return s;
+
+ _sntprintf(pszBuffer, nBufferLength, TEXT("%s"), t_s);
+ free(t_s);
+
+ s = pszBuffer;
+ }
+
+ return s;
+}
+
+static void GamePicker_LeavingItem(HWND hwndPicker, int nItem)
+{
+ // leaving item
+ // printf("leaving %s\n",driver_list::driver(nItem).name);
+}
+
+static void GamePicker_EnteringItem(HWND hwndPicker, int nItem)
+{
+ EnableSelection(nItem);
+
+ // decide if it is valid to load a savestate
+ if (DriverSupportsSaveState(nItem))
+ EnableMenuItem(GetMenu(hMain), ID_FILE_LOADSTATE, MFS_ENABLED);
+ else
+ EnableMenuItem(GetMenu(hMain), ID_FILE_LOADSTATE, MFS_GRAYED);
+}
+
+static int GamePicker_FindItemParent(HWND hwndPicker, int nItem)
+{
+ return GetParentRomSetIndex(&driver_list::driver(nItem));
+}
+
+/* Initialize the Picker and List controls */
+static void InitListView()
+{
+ LVBKIMAGE bki;
+ //TCHAR path[MAX_PATH];
+ TCHAR* t_bgdir;
+ BOOL res;
+
+ static const struct PickerCallbacks s_gameListCallbacks =
+ {
+ SetSortColumn, /* pfnSetSortColumn */
+ GetSortColumn, /* pfnGetSortColumn */
+ SetSortReverse, /* pfnSetSortReverse */
+ GetSortReverse, /* pfnGetSortReverse */
+ SetViewMode, /* pfnSetViewMode */
+ GetViewMode, /* pfnGetViewMode */
+ SetColumnWidths, /* pfnSetColumnWidths */
+ GetColumnWidths, /* pfnGetColumnWidths */
+ SetColumnOrder, /* pfnSetColumnOrder */
+ GetColumnOrder, /* pfnGetColumnOrder */
+ SetColumnShown, /* pfnSetColumnShown */
+ GetColumnShown, /* pfnGetColumnShown */
+ GetOffsetClones, /* pfnGetOffsetChildren */
+
+ GamePicker_Compare, /* pfnCompare */
+ MamePlayGame, /* pfnDoubleClick */
+ GamePicker_GetItemString, /* pfnGetItemString */
+ GamePicker_GetItemImage, /* pfnGetItemImage */
+ GamePicker_LeavingItem, /* pfnLeavingItem */
+ GamePicker_EnteringItem, /* pfnEnteringItem */
+ BeginListViewDrag, /* pfnBeginListViewDrag */
+ GamePicker_FindItemParent, /* pfnFindItemParent */
+ OnIdle, /* pfnIdle */
+ GamePicker_OnHeaderContextMenu, /* pfnOnHeaderContextMenu */
+ GamePicker_OnBodyContextMenu /* pfnOnBodyContextMenu */
+ };
+
+ struct PickerOptions opts;
+
+ // subclass the list view
+ memset(&opts, 0, sizeof(opts));
+ opts.pCallbacks = &s_gameListCallbacks;
+ opts.nColumnCount = COLUMN_MAX;
+ opts.ppszColumnNames = column_names;
+ SetupPicker(hwndList, &opts);
+
+ res = ListView_SetTextBkColor(hwndList, CLR_NONE);
+ res = ListView_SetBkColor(hwndList, CLR_NONE);
+ t_bgdir = ui_wstring_from_utf8(GetBgDir());
+ if( !t_bgdir )
+ return;
+
+ bki.ulFlags = LVBKIF_SOURCE_URL | LVBKIF_STYLE_TILE;
+ bki.pszImage = t_bgdir;
+ if( hBackground )
+ res = ListView_SetBkImage(hwndList, &bki);
+
+ CreateIcons();
+
+ ResetColumnDisplay(TRUE);
+
+ // Allow selection to change the default saved game
+ bListReady = TRUE;
+ free(t_bgdir);
+}
+
+static void AddDriverIcon(int nItem,int default_icon_index)
+{
+ HICON hIcon = 0;
+ int nParentIndex = -1;
+
+ /* if already set to rom or clone icon, we've been here before */
+ if (icon_index[nItem] == 1 || icon_index[nItem] == 3)
+ return;
+
+ hIcon = LoadIconFromFile((char *)driver_list::driver(nItem).name);
+ if (hIcon == NULL)
+ {
+ nParentIndex = GetParentIndex(&driver_list::driver(nItem));
+ if( nParentIndex >= 0)
+ {
+ hIcon = LoadIconFromFile((char *)driver_list::driver(nParentIndex).name);
+ nParentIndex = GetParentIndex(&driver_list::driver(nParentIndex));
+ if (hIcon == NULL && nParentIndex >= 0)
+ hIcon = LoadIconFromFile((char *)driver_list::driver(nParentIndex).name);
+ }
+ }
+
+ if (hIcon)
+ {
+ int nIconPos = ImageList_AddIcon(hSmall, hIcon);
+ ImageList_AddIcon(hLarge, hIcon);
+ if (nIconPos != -1)
+ icon_index[nItem] = nIconPos;
+ DestroyIcon(hIcon);
+ }
+ if (icon_index[nItem] == 0)
+ icon_index[nItem] = default_icon_index;
+}
+
+static void DestroyIcons(void)
+{
+ if (hSmall)
+ {
+ ImageList_Destroy(hSmall);
+ hSmall = NULL;
+ }
+
+ if (icon_index)
+ {
+ int i;
+ for (i=0;i<driver_list::total();i++)
+ icon_index[i] = 0; // these are indices into hSmall
+ }
+
+ if (hLarge)
+ {
+ ImageList_Destroy(hLarge);
+ hLarge = NULL;
+ }
+
+ if (hHeaderImages)
+ {
+ ImageList_Destroy(hHeaderImages);
+ hHeaderImages = NULL;
+ }
+
+}
+
+static void ReloadIcons(void)
+{
+ HICON hIcon;
+ INT i;
+
+ // clear out all the images
+ ImageList_RemoveAll(hSmall);
+ ImageList_RemoveAll(hLarge);
+
+ if (icon_index)
+ {
+ for (i=0;i<driver_list::total();i++)
+ icon_index[i] = 0; // these are indices into hSmall
+ }
+
+ for (i = 0; g_iconData[i].icon_name; i++)
+ {
+ hIcon = LoadIconFromFile((char *) g_iconData[i].icon_name);
+ if (hIcon == NULL)
+ hIcon = LoadIcon(hInst, MAKEINTRESOURCE(g_iconData[i].resource));
+
+ ImageList_AddIcon(hSmall, hIcon);
+ ImageList_AddIcon(hLarge, hIcon);
+ DestroyIcon(hIcon);
+ }
+}
+
+static DWORD GetShellLargeIconSize(void)
+{
+ DWORD dwSize = 32, dwLength = 512, dwType = REG_SZ;
+ TCHAR szBuffer[512];
+ HKEY hKey;
+ LONG lRes;
+ LPTSTR tErrorMessage = NULL;
+
+ /* Get the Key */
+ lRes = RegOpenKey(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics"), &hKey);
+ if( lRes != ERROR_SUCCESS )
+ {
+ GetSystemErrorMessage(lRes, &tErrorMessage);
+ MessageBox(GetMainWindow(), tErrorMessage, TEXT("Large shell icon size registry access"), MB_OK | MB_ICONERROR);
+ LocalFree(tErrorMessage);
+ return dwSize;
+ }
+
+ /* Save the last size */
+ lRes = RegQueryValueEx(hKey, TEXT("Shell Icon Size"), NULL, &dwType, (LPBYTE)szBuffer, &dwLength);
+ if( lRes != ERROR_SUCCESS )
+ {
+ GetSystemErrorMessage(lRes, &tErrorMessage);
+ MessageBox(GetMainWindow(), tErrorMessage, TEXT("Large shell icon size registry query"), MB_OK | MB_ICONERROR);
+ LocalFree(tErrorMessage);
+ RegCloseKey(hKey);
+ return dwSize;
+ }
+
+ dwSize = _ttol(szBuffer);
+ if (dwSize < 32)
+ dwSize = 32;
+
+ if (dwSize > 48)
+ dwSize = 48;
+
+ /* Clean up */
+ RegCloseKey(hKey);
+ return dwSize;
+}
+
+static DWORD GetShellSmallIconSize(void)
+{
+ DWORD dwSize = ICONMAP_WIDTH;
+
+ if (dwSize < 48)
+ {
+ if (dwSize < 32)
+ dwSize = 16;
+ else
+ dwSize = 32;
+ }
+ else
+ {
+ dwSize = 48;
+ }
+ return dwSize;
+}
+
+// create iconlist for Listview control
+static void CreateIcons(void)
+{
+ DWORD dwSmallIconSize = GetShellSmallIconSize();
+ DWORD dwLargeIconSize = GetShellLargeIconSize();
+ HICON hIcon;
+ int icon_count;
+ DWORD dwStyle;
+ int i;
+ int grow = 5000;
+
+ icon_count = 0;
+ while(g_iconData[icon_count].icon_name)
+ icon_count++;
+
+ // the current window style affects the sizing of the rows when changing
+ // between list views, so put it in small icon mode temporarily while we associate
+ // our image list
+ //
+ // using large icon mode instead kills the horizontal scrollbar when doing
+ // full refresh, which seems odd (it should recreate the scrollbar when
+ // set back to report mode, for example, but it doesn't).
+
+ dwStyle = GetWindowLong(hwndList,GWL_STYLE);
+ SetWindowLong(hwndList,GWL_STYLE,(dwStyle & ~LVS_TYPEMASK) | LVS_ICON);
+
+ hSmall = ImageList_Create(dwSmallIconSize, dwSmallIconSize,
+ ILC_COLORDDB | ILC_MASK, icon_count, icon_count + grow);
+
+ if (NULL == hSmall)
+ {
+ win_message_box_utf8(hwndList, "Cannot allocate small icon image list", "Allocation error - Exiting", IDOK);
+ PostQuitMessage(0);
+ }
+
+ hLarge = ImageList_Create(dwLargeIconSize, dwLargeIconSize,
+ ILC_COLORDDB | ILC_MASK, icon_count, icon_count + grow);
+
+ if (NULL == hLarge) {
+ win_message_box_utf8(hwndList, "Cannot allocate large icon image list", "Allocation error - Exiting", IDOK);
+ PostQuitMessage(0);
+ }
+
+ ReloadIcons();
+
+ // Associate the image lists with the list view control.
+ (void)ListView_SetImageList(hwndList, hSmall, LVSIL_SMALL);
+ (void)ListView_SetImageList(hwndList, hLarge, LVSIL_NORMAL);
+
+ // restore our view
+ SetWindowLong(hwndList,GWL_STYLE,dwStyle);
+
+ // Now set up header specific stuff
+ hHeaderImages = ImageList_Create(16,16,ILC_COLORDDB | ILC_MASK,2,2);
+ hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_HEADER_UP));
+ ImageList_AddIcon(hHeaderImages,hIcon);
+ hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_HEADER_DOWN));
+ ImageList_AddIcon(hHeaderImages,hIcon);
+
+ for (i = 0; i < sizeof(s_nPickers) / sizeof(s_nPickers[0]); i++)
+ Picker_SetHeaderImageList(GetDlgItem(hMain, s_nPickers[i]), hHeaderImages);
+}
+
+
+
+static int GamePicker_Compare(HWND hwndPicker, int index1, int index2, int sort_subitem)
+{
+ int value = 0; /* Default to 0, for unknown case */
+ const char *name1 = NULL;
+ const char *name2 = NULL;
+ char file1[20];
+ char file2[20];
+ int nTemp1, nTemp2;
+
+ switch (sort_subitem)
+ {
+ case COLUMN_GAMES:
+ return core_stricmp(ModifyThe(driver_list::driver(index1).description),
+ ModifyThe(driver_list::driver(index2).description));
+
+ case COLUMN_ORIENTATION:
+ nTemp1 = DriverIsVertical(index1) ? 1 : 0;
+ nTemp2 = DriverIsVertical(index2) ? 1 : 0;
+ value = nTemp1 - nTemp2;
+ break;
+#ifdef SHOW_COLUMN_SAMPLES
+ case COLUMN_SAMPLES:
+ nTemp1 = -1;
+ if (DriverUsesSamples(index1))
+ {
+ int audit_result = GetSampleAuditResults(index1);
+ if (IsAuditResultKnown(audit_result))
+ {
+ if (IsAuditResultYes(audit_result))
+ nTemp1 = 1;
+ else
+ nTemp1 = 0;
+ }
+ else
+ nTemp1 = 2;
+ }
+
+ nTemp2 = -1;
+ if (DriverUsesSamples(index2))
+ {
+ int audit_result = GetSampleAuditResults(index1);
+ if (IsAuditResultKnown(audit_result))
+ {
+ if (IsAuditResultYes(audit_result))
+ nTemp2 = 1;
+ else
+ nTemp2 = 0;
+ }
+ else
+ nTemp2 = 2;
+ }
+ value = nTemp2 - nTemp1;
+ break;
+#endif
+ case COLUMN_DIRECTORY:
+ value = core_stricmp(driver_list::driver(index1).name, driver_list::driver(index2).name);
+ break;
+
+ case COLUMN_SRCDRIVERS:
+ strcpy(file1, GetDriverFilename(index1));
+ strcpy(file2, GetDriverFilename(index2));
+ value = core_stricmp(file1, file2);
+ break;
+
+ case COLUMN_PLAYTIME:
+ value = GetPlayTime(index1) - GetPlayTime(index2);
+ break;
+
+ case COLUMN_TYPE:
+ {
+ value = DriverIsVector(index1) - DriverIsVector(index2);
+ break;
+ }
+
+ case COLUMN_TRACKBALL:
+ value = DriverUsesTrackball(index1) - DriverUsesTrackball(index2);
+ break;
+
+ case COLUMN_PLAYED:
+ value = GetPlayCount(index1) - GetPlayCount(index2);
+ break;
+
+ case COLUMN_MANUFACTURER:
+ value = core_stricmp(driver_list::driver(index1).manufacturer, driver_list::driver(index2).manufacturer);
+ break;
+
+ case COLUMN_YEAR:
+ value = core_stricmp(driver_list::driver(index1).year, driver_list::driver(index2).year);
+ break;
+
+ case COLUMN_CLONE:
+ name1 = GetCloneParentName(index1);
+ name2 = GetCloneParentName(index2);
+
+ if (*name1 == '\0')
+ name1 = NULL;
+ if (*name2 == '\0')
+ name2 = NULL;
+
+ if (NULL == name1 && NULL == name2)
+ value = 0;
+ else if (name2 == NULL)
+ value = -1;
+ else if (name1 == NULL)
+ value = 1;
+ else
+ value = core_stricmp(name1, name2);
+ break;
+ }
+
+ // Handle same comparisons here
+ if (0 == value && COLUMN_GAMES != sort_subitem)
+ {
+ value = GamePicker_Compare(hwndPicker, index1, index2, COLUMN_GAMES);
+ }
+
+ return value;
+}
+
+int GetSelectedPick()
+{
+ /* returns index of listview selected item */
+ /* This will return -1 if not found */
+ return ListView_GetNextItem(hwndList, -1, LVIS_SELECTED | LVIS_FOCUSED);
+}
+
+static HICON GetSelectedPickItemIcon()
+{
+ LV_ITEM lvi;
+ BOOL res;
+
+ lvi.iItem = GetSelectedPick();
+ lvi.iSubItem = 0;
+ lvi.mask = LVIF_IMAGE;
+ res = ListView_GetItem(hwndList, &lvi);
+
+ return ImageList_GetIcon(hLarge, lvi.iImage, ILD_TRANSPARENT);
+}
+
+static void SetRandomPickItem()
+{
+ int nListCount;
+
+ nListCount = ListView_GetItemCount(hwndList);
+
+ if (nListCount > 0)
+ {
+ Picker_SetSelectedPick(hwndList, rand() % nListCount);
+ }
+}
+
+BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype)
+{
+ BOOL success;
+ UINT16 i;
+ OPENFILENAME ofn;
+ std::string dirname;
+ TCHAR* t_filename;
+ TCHAR t_filename_buffer[MAX_PATH] = {0, };
+ char *utf8_filename;
+
+ // convert the filename to UTF-8 and copy into buffer
+ t_filename = ui_wstring_from_utf8(filename);
+ if (t_filename)
+ {
+ _sntprintf(t_filename_buffer, ARRAY_LENGTH(t_filename_buffer), TEXT("%s"), t_filename);
+ free(t_filename);
+ }
+
+ ofn.lStructSize = sizeof(ofn);
+ ofn.hwndOwner = hMain;
+ ofn.hInstance = NULL;
+ switch (filetype)
+ {
+ case FILETYPE_INPUT_FILES :
+ ofn.lpstrFilter = TEXT("input files (*.inp,*.zip,*.7z)\0*.inp;*.zip;*.7z\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("inp");
+ dirname = GetInpDir();
+ break;
+ case FILETYPE_SAVESTATE_FILES :
+ ofn.lpstrFilter = TEXT("savestate files (*.sta)\0*.sta;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("sta");
+ dirname = GetStateDir();
+ break;
+ case FILETYPE_WAVE_FILES :
+ ofn.lpstrFilter = TEXT("sounds (*.wav)\0*.wav;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("wav");
+ dirname = GetImgDir();
+ break;
+ case FILETYPE_MNG_FILES :
+ ofn.lpstrFilter = TEXT("videos (*.mng)\0*.mng;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("mng");
+ dirname = GetImgDir();
+ break;
+ case FILETYPE_AVI_FILES :
+ ofn.lpstrFilter = TEXT("videos (*.avi)\0*.avi;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("avi");
+ dirname = GetImgDir();
+ break;
+ case FILETYPE_EFFECT_FILES :
+ ofn.lpstrFilter = TEXT("effects (*.png)\0*.png;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("png");
+ dirname = GetArtDir();
+ break;
+ case FILETYPE_JOYMAP_FILES :
+ ofn.lpstrFilter = TEXT("maps (*.map,*.txt)\0*.map;*.txt;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("map");
+ dirname = GetCtrlrDir();
+ break;
+ case FILETYPE_DEBUGSCRIPT_FILES :
+ ofn.lpstrFilter = TEXT("scripts (*.txt,*.dat)\0*.txt;*.dat;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("txt");
+ dirname = GetInpDir();
+ break;
+ case FILETYPE_CHEAT_FILE :
+ ofn.lpstrFilter = TEXT("cheats (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("dat");
+ dirname = ".";
+ break;
+ case FILETYPE_HISTORY_FILE :
+ ofn.lpstrFilter = TEXT("history (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("dat");
+ dirname = ".";
+ break;
+ case FILETYPE_MAMEINFO_FILE :
+ ofn.lpstrFilter = TEXT("mameinfo (*.dat)\0*.dat;\0All files (*.*)\0*.*\0");
+ ofn.lpstrDefExt = TEXT("dat");
+ dirname = ".";
+ break;
+ }
+ ofn.lpstrCustomFilter = NULL;
+ ofn.nMaxCustFilter = 0;
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile = t_filename_buffer;
+ ofn.nMaxFile = ARRAY_LENGTH(t_filename_buffer);
+ ofn.lpstrFileTitle = NULL;
+ ofn.nMaxFileTitle = 0;
+
+ // Only want first directory
+ i = dirname.find(";");
+ if (i > 0)
+ dirname.resize(i);
+ if (dirname.empty())
+ dirname = ".";
+ ofn.lpstrInitialDir = ui_wstring_from_utf8(dirname.c_str());
+
+ ofn.lpstrTitle = NULL;
+ ofn.Flags = OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
+ ofn.nFileOffset = 0;
+ ofn.nFileExtension = 0;
+ ofn.lCustData = 0;
+ ofn.lpfnHook = NULL;
+ ofn.lpTemplateName = NULL;
+
+ success = cfd(&ofn);
+ if (success)
+ {
+ //dprintf("got filename %s nFileExtension %u\n",filename,ofn.nFileExtension);
+ /*GetDirectory(filename,last_directory,sizeof(last_directory));*/
+ }
+
+ utf8_filename = ui_utf8_from_wstring(t_filename_buffer);
+ if (utf8_filename)
+ {
+ snprintf(filename, MAX_PATH, "%s", utf8_filename);
+ free(utf8_filename);
+ }
+
+ return success;
+}
+
+void SetStatusBarText(int part_index, const char *message)
+{
+ TCHAR* t_message = ui_wstring_from_utf8(message);
+ if( !t_message )
+ return;
+ SendMessage(hStatusBar, SB_SETTEXT, (WPARAM) part_index, (LPARAM)(LPCTSTR) win_tstring_strdup(t_message));
+ free(t_message);
+}
+
+void SetStatusBarTextF(int part_index, const char *fmt, ...)
+{
+ char buf[256];
+ va_list va;
+
+ va_start(va, fmt);
+ vsprintf(buf, fmt, va);
+ va_end(va);
+
+ SetStatusBarText(part_index, buf);
+}
+
+static void CLIB_DECL ATTR_PRINTF(1,2) MameMessageBox(const char *fmt, ...)
+{
+ char buf[2048];
+ va_list va;
+
+ va_start(va, fmt);
+ vsprintf(buf, fmt, va);
+ win_message_box_utf8(GetMainWindow(), buf, MAMEUINAME, MB_OK | MB_ICONERROR);
+ va_end(va);
+}
+
+static void MamePlayBackGame()
+{
+ char filename[MAX_PATH];
+ *filename = 0;
+
+ int nGame = Picker_GetSelectedItem(hwndList);
+ if (nGame != -1)
+ strcpy(filename, driver_list::driver(nGame).name);
+
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_INPUT_FILES))
+ {
+ osd_file::error fileerr;
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ char bare_fname[_MAX_FNAME];
+ char ext[_MAX_EXT];
+ char path[MAX_PATH];
+ char fname[MAX_PATH];
+ play_options playopts;
+
+ _splitpath(filename, drive, dir, bare_fname, ext);
+
+ sprintf(path,"%s%s",drive,dir);
+ sprintf(fname,"%s%s",bare_fname,ext);
+ if (path[strlen(path)-1] == '\\')
+ path[strlen(path)-1] = 0; // take off trailing back slash
+
+ emu_file pPlayBack(MameUIGlobal().input_directory(), OPEN_FLAG_READ);
+ fileerr = pPlayBack.open(fname);
+ if (fileerr != osd_file::error::NONE)
+ {
+ MameMessageBox("Could not open '%s' as a valid input file.", filename);
+ return;
+ }
+
+ // check for game name embedded in .inp header
+ inp_header header;
+
+ /* read the header and verify that it is a modern version; if not, print an error */
+ if (!header.read(pPlayBack))
+ {
+ MameMessageBox("Input file is corrupt or invalid (missing header)");
+ return;
+ }
+ if ((!header.check_magic()) || (header.get_majversion() != inp_header::MAJVERSION))
+ {
+ MameMessageBox("Input file invalid or in an older, unsupported format");
+ return;
+ }
+
+ std::string const sysname = header.get_sysname();
+ nGame = -1;
+ for (int i = 0; i < driver_list::total(); i++) // find game and play it
+ {
+ if (driver_list::driver(i).name == sysname)
+ {
+ nGame = i;
+ break;
+ }
+ }
+ if (nGame == -1)
+ {
+ MameMessageBox("Game \"%s\" cannot be found", sysname.c_str());
+ return;
+ }
+
+ memset(&playopts, 0, sizeof(playopts));
+ playopts.playback = fname;
+ playopts_apply = 0x57;
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+static void MameLoadState()
+{
+ int nGame;
+ char filename[MAX_PATH];
+ char selected_filename[MAX_PATH];
+ play_options playopts;
+
+ *filename = 0;
+
+ nGame = Picker_GetSelectedItem(hwndList);
+ if (nGame != -1)
+ {
+ strcpy(filename, driver_list::driver(nGame).name);
+ strcpy(selected_filename, driver_list::driver(nGame).name);
+ }
+ if (CommonFileDialog(GetOpenFileName, filename, FILETYPE_SAVESTATE_FILES))
+ {
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ char ext[_MAX_EXT];
+
+ char path[MAX_PATH];
+ char fname[MAX_PATH];
+ char bare_fname[_MAX_FNAME];
+ char *state_fname;
+ //int rc;
+
+ _splitpath(filename, drive, dir, bare_fname, ext);
+
+ // parse path
+ sprintf(path,"%s%s",drive,dir);
+ sprintf(fname,"%s%s",bare_fname,ext);
+ if (path[strlen(path)-1] == '\\')
+ path[strlen(path)-1] = 0; // take off trailing back slash
+
+#ifdef MESS
+ {
+ state_fname = filename;
+ }
+#else // !MESS
+ {
+ char *cPos=0;
+ int iPos=0;
+ char romname[MAX_PATH];
+
+ cPos = strchr(bare_fname, '-' );
+ iPos = cPos ? cPos - bare_fname : strlen(bare_fname);
+ strncpy(romname, bare_fname, iPos );
+ romname[iPos] = '\0';
+ if( strcmp(selected_filename,romname) != 0 )
+ {
+ MameMessageBox("'%s' is not a valid savestate file for game '%s'.", filename, selected_filename);
+ return;
+ }
+ state_fname = fname;
+ }
+#endif // MESS
+ emu_file pSaveState(MameUIGlobal().state_directory(), OPEN_FLAG_READ);
+ osd_file::error fileerr = pSaveState.open(state_fname);
+ if (fileerr != osd_file::error::NONE)
+ {
+ MameMessageBox("Could not open '%s' as a valid savestate file.", filename);
+ return;
+ }
+
+ // call the MAME core function to check the save state file
+ //rc = state_manager::check_file(NULL, pSaveState, selected_filename, MameMessageBox);
+ //if (rc)
+// return;
+
+ memset(&playopts, 0, sizeof(playopts));
+#ifdef MESS
+ playopts.state = state_fname;
+ playopts_apply = 0x57;
+#else
+ {
+ char *cPos;
+ cPos = strrchr(bare_fname, '-' );
+ cPos = cPos+1;
+ if (*cPos != 0)
+ {
+ playopts.state = cPos;
+ }
+ }
+#endif
+
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+static void MamePlayRecordGame()
+{
+ int nGame;
+ char filename[MAX_PATH];
+ *filename = 0;
+
+ nGame = Picker_GetSelectedItem(hwndList);
+ strcpy(filename, driver_list::driver(nGame).name);
+
+ if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_INPUT_FILES))
+ {
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ char fname[_MAX_FNAME];
+ char ext[_MAX_EXT];
+ char path[MAX_PATH];
+ play_options playopts;
+
+ _splitpath(filename, drive, dir, fname, ext);
+
+ sprintf(path,"%s%s",drive,dir);
+ if (path[strlen(path)-1] == '\\')
+ path[strlen(path)-1] = 0; // take off trailing back slash
+
+ memset(&playopts, 0, sizeof(playopts));
+ strcat(fname, ".inp");
+ playopts.record = fname;
+ playopts_apply = 0x57;
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+void MamePlayGame(void)
+{
+ int nGame;
+ play_options playopts;
+
+ nGame = Picker_GetSelectedItem(hwndList);
+
+ memset(&playopts, 0, sizeof(playopts));
+ MamePlayGameWithOptions(nGame, &playopts);
+}
+
+static void MamePlayRecordWave()
+{
+ int nGame;
+ char filename[MAX_PATH];
+ play_options playopts;
+
+ nGame = Picker_GetSelectedItem(hwndList);
+ strcpy(filename, driver_list::driver(nGame).name);
+
+ if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_WAVE_FILES))
+ {
+ memset(&playopts, 0, sizeof(playopts));
+ playopts.wavwrite = filename;
+ playopts_apply = 0x57;
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+static void MamePlayRecordMNG()
+{
+ int nGame;
+ char filename[MAX_PATH] = { 0, };
+
+ nGame = Picker_GetSelectedItem(hwndList);
+ strcpy(filename, driver_list::driver(nGame).name);
+
+ if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_MNG_FILES))
+ {
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ char fname[_MAX_FNAME];
+ char ext[_MAX_EXT];
+ char path[MAX_PATH];
+ play_options playopts;
+
+ _splitpath(filename, drive, dir, fname, ext);
+
+ sprintf(path,"%s%s",drive,dir);
+ if (path[strlen(path)-1] == '\\')
+ path[strlen(path)-1] = 0; // take off trailing back slash
+
+ memset(&playopts, 0, sizeof(playopts));
+ strcat(fname, ".mng");
+ playopts.mngwrite = fname;
+ playopts_apply = 0x57;
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+static void MamePlayRecordAVI()
+{
+ int nGame;
+ char filename[MAX_PATH] = { 0, };
+
+ nGame = Picker_GetSelectedItem(hwndList);
+ strcpy(filename, driver_list::driver(nGame).name);
+
+ if (CommonFileDialog(GetSaveFileName, filename, FILETYPE_AVI_FILES))
+ {
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ char fname[_MAX_FNAME];
+ char ext[_MAX_EXT];
+ char path[MAX_PATH];
+ play_options playopts;
+
+ _splitpath(filename, drive, dir, fname, ext);
+
+ sprintf(path,"%s%s",drive,dir);
+ if (path[strlen(path)-1] == '\\')
+ path[strlen(path)-1] = 0; // take off trailing back slash
+
+ memset(&playopts, 0, sizeof(playopts));
+ strcat(fname, ".avi");
+ playopts.aviwrite = fname;
+ playopts_apply = 0x57;
+ MamePlayGameWithOptions(nGame, &playopts);
+ }
+}
+
+
+static void MamePlayGameWithOptions(int nGame, const play_options *playopts)
+{
+ DWORD dwExitCode;
+ BOOL res;
+
+ if (g_pJoyGUI)
+ KillTimer(hMain, JOYGUI_TIMER);
+ if (GetCycleScreenshot() > 0)
+ KillTimer(hMain, SCREENSHOT_TIMER);
+
+ in_emulation = TRUE;
+
+ dwExitCode = RunMAME(nGame, playopts);
+ if (dwExitCode == 0)
+ {
+ IncrementPlayCount(nGame);
+ res = ListView_RedrawItems(hwndList, GetSelectedPick(), GetSelectedPick());
+ }
+ else
+ {
+ ShowWindow(hMain, SW_SHOW);
+ }
+
+ in_emulation = FALSE;
+
+ // re-sort if sorting on # of times played
+ if (GetSortColumn() == COLUMN_PLAYED)
+ Picker_Sort(hwndList);
+
+ UpdateStatusBar();
+
+ ShowWindow(hMain, SW_SHOW);
+ SetFocus(hwndList);
+
+ if (g_pJoyGUI)
+ SetTimer(hMain, JOYGUI_TIMER, JOYGUI_MS, NULL);
+ if (GetCycleScreenshot() > 0)
+ SetTimer(hMain, SCREENSHOT_TIMER, GetCycleScreenshot()*1000, NULL); //scale to seconds
+}
+
+/* Toggle ScreenShot ON/OFF */
+static void ToggleScreenShot(void)
+{
+ BOOL showScreenShot = GetShowScreenShot();
+
+ SetShowScreenShot((showScreenShot) ? FALSE : TRUE);
+ UpdateScreenShot();
+
+ /* Redraw list view */
+ if (hBackground && showScreenShot)
+ InvalidateRect(hwndList, NULL, FALSE);
+}
+
+static void AdjustMetrics(void)
+{
+ HDC hDC;
+ TEXTMETRIC tm;
+ int xtraX, xtraY;
+ AREA area;
+ int offX, offY;
+ int maxX, maxY;
+ COLORREF textColor;
+ TCHAR szClass[128];
+ HWND hWnd;
+ HRESULT res;
+ BOOL b_res;
+
+ /* WM_SETTINGCHANGE also */
+ xtraX = GetSystemMetrics(SM_CXFIXEDFRAME); /* Dialog frame width */
+ xtraY = GetSystemMetrics(SM_CYFIXEDFRAME); /* Dialog frame height */
+ xtraY += GetSystemMetrics(SM_CYMENUSIZE); /* Menu height */
+ xtraY += GetSystemMetrics(SM_CYCAPTION); /* Caption Height */
+ maxX = GetSystemMetrics(SM_CXSCREEN); /* Screen Width */
+ maxY = GetSystemMetrics(SM_CYSCREEN); /* Screen Height */
+
+ hDC = GetDC(hMain);
+ GetTextMetrics (hDC, &tm);
+
+ /* Convert MIN Width/Height from Dialog Box Units to pixels. */
+ MIN_WIDTH = (int)((tm.tmAveCharWidth / 4.0) * DBU_MIN_WIDTH) + xtraX;
+ MIN_HEIGHT = (int)((tm.tmHeight / 8.0) * DBU_MIN_HEIGHT) + xtraY;
+ ReleaseDC(hMain, hDC);
+
+ if ((textColor = GetListFontColor()) == RGB(255, 255, 255))
+ textColor = RGB(240, 240, 240);
+
+ hWnd = GetWindow(hMain, GW_CHILD);
+ while(hWnd)
+ {
+ if (GetClassName(hWnd, szClass, sizeof(szClass) / sizeof(szClass[0])))
+ {
+ if (!_tcscmp(szClass, TEXT("SysListView32")))
+ {
+ b_res = ListView_SetBkColor(hWnd, GetSysColor(COLOR_WINDOW));
+ b_res = ListView_SetTextColor(hWnd, textColor);
+ }
+ else if (!_tcscmp(szClass, TEXT("SysTreeView32")))
+ {
+ res = TreeView_SetBkColor(hTreeView, GetSysColor(COLOR_WINDOW));
+ res = TreeView_SetTextColor(hTreeView, textColor);
+ }
+ }
+ hWnd = GetWindow(hWnd, GW_HWNDNEXT);
+ }
+
+ GetWindowArea(&area);
+
+ offX = area.x + area.width;
+ offY = area.y + area.height;
+
+ if (offX > maxX)
+ {
+ offX = maxX;
+ area.x = (offX - area.width > 0) ? (offX - area.width) : 0;
+ }
+ if (offY > maxY)
+ {
+ offY = maxY;
+ area.y = (offY - area.height > 0) ? (offY - area.height) : 0;
+ }
+
+ SetWindowArea(&area);
+ SetWindowPos(hMain, 0, area.x, area.y, area.width, area.height, SWP_NOZORDER | SWP_SHOWWINDOW | SWP_NOACTIVATE);
+}
+
+int FindIconIndex(int nIconResource)
+{
+ int i;
+ for(i = 0; g_iconData[i].icon_name; i++)
+ {
+ if (g_iconData[i].resource == nIconResource)
+ return i;
+ }
+ return -1;
+}
+
+int FindIconIndexByName(const char *icon_name)
+{
+ int i;
+ for (i = 0; g_iconData[i].icon_name; i++)
+ {
+ if (!strcmp(g_iconData[i].icon_name, icon_name))
+ return i;
+ }
+ return -1;
+}
+
+static int GetIconForDriver(int nItem)
+{
+ int iconRoms = 1;
+
+ if (DriverUsesRoms(nItem))
+ {
+ int audit_result = GetRomAuditResults(nItem);
+ if (IsAuditResultKnown(audit_result) == FALSE)
+ return 2;
+#ifdef SHOW_MISSING_ROMS_ICON
+ if (IsAuditResultYes(audit_result))
+ iconRoms = 1;
+ else
+ iconRoms = 0;
+#endif
+ }
+
+ // iconRoms is now either 0 (no roms), 1 (roms), or 2 (unknown)
+ // these are indices into icon_names, which maps into our image list, also must match IDI_WIN_NOROMS + iconRoms
+ // Show Red-X if the ROMs are present and flagged as NOT WORKING
+ if (iconRoms == 1 && DriverIsBroken(nItem))
+ iconRoms = FindIconIndex(IDI_WIN_REDX);
+
+ // show clone icon if we have roms and game is working
+ if (iconRoms == 1 && DriverIsClone(nItem))
+ iconRoms = FindIconIndex(IDI_WIN_CLONE);
+
+ // if we have the roms, then look for a custom per-game icon to override
+ if (iconRoms == 1 || iconRoms == 3)
+ {
+ if (icon_index[nItem] == 0)
+ AddDriverIcon(nItem,iconRoms);
+ iconRoms = icon_index[nItem];
+ }
+
+ return iconRoms;
+}
+
+static BOOL HandleTreeContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
+{
+ HMENU hTreeMenu;
+ HMENU hMenu;
+ TVHITTESTINFO hti;
+ POINT pt;
+ BOOL res;
+
+ if ((HWND)wParam != GetDlgItem(hWnd, IDC_TREE))
+ return FALSE;
+
+ pt.x = GET_X_LPARAM(lParam);
+ pt.y = GET_Y_LPARAM(lParam);
+ if (pt.x < 0 && pt.y < 0)
+ GetCursorPos(&pt);
+
+ /* select the item that was right clicked or shift-F10'ed */
+ hti.pt = pt;
+ ScreenToClient(hTreeView,&hti.pt);
+ (void)TreeView_HitTest(hTreeView,&hti);
+ if ((hti.flags & TVHT_ONITEM) != 0)
+ res = TreeView_SelectItem(hTreeView,hti.hItem);
+
+ hTreeMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_CONTEXT_TREE));
+
+ InitTreeContextMenu(hTreeMenu);
+
+ hMenu = GetSubMenu(hTreeMenu, 0);
+
+ UpdateMenu(hMenu);
+
+ TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,0,hWnd,NULL);
+
+ DestroyMenu(hTreeMenu);
+
+ return TRUE;
+}
+
+
+
+static void GamePicker_OnBodyContextMenu(POINT pt)
+{
+ HMENU hMenuLoad;
+ HMENU hMenu;
+
+ hMenuLoad = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXT_MENU));
+ hMenu = GetSubMenu(hMenuLoad, 0);
+ InitBodyContextMenu(hMenu);
+
+ UpdateMenu(hMenu);
+
+ TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,0,hMain,NULL);
+
+ DestroyMenu(hMenuLoad);
+}
+
+
+
+static BOOL HandleScreenShotContextMenu(HWND hWnd, WPARAM wParam, LPARAM lParam)
+{
+ HMENU hMenuLoad;
+ HMENU hMenu;
+ POINT pt;
+
+ if ((HWND)wParam != GetDlgItem(hWnd, IDC_SSPICTURE) && (HWND)wParam != GetDlgItem(hWnd, IDC_SSFRAME))
+ return FALSE;
+
+ pt.x = GET_X_LPARAM(lParam);
+ pt.y = GET_Y_LPARAM(lParam);
+ if (pt.x < 0 && pt.y < 0)
+ GetCursorPos(&pt);
+
+ hMenuLoad = LoadMenu(hInst, MAKEINTRESOURCE(IDR_CONTEXT_SCREENSHOT));
+ hMenu = GetSubMenu(hMenuLoad, 0);
+
+ UpdateMenu(hMenu);
+
+ TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,0,hWnd,NULL);
+
+ DestroyMenu(hMenuLoad);
+
+ return TRUE;
+}
+
+static void UpdateMenu(HMENU hMenu)
+{
+ TCHAR buf[200];
+ MENUITEMINFO mItem;
+ int nGame = Picker_GetSelectedItem(hwndList);
+ LPTREEFOLDER lpFolder = GetCurrentFolder();
+ int i;
+ //const char *pParent;
+ TCHAR* t_description;
+
+ if (have_selection)
+ {
+ t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description)));
+ if( !t_description )
+ return;
+
+ _sntprintf(buf, ARRAY_LENGTH(buf), g_szPlayGameString, t_description);
+
+ mItem.cbSize = sizeof(mItem);
+ mItem.fMask = MIIM_TYPE;
+ mItem.fType = MFT_STRING;
+ mItem.dwTypeData = buf;
+ mItem.cch = _tcslen(mItem.dwTypeData);
+
+ SetMenuItemInfo(hMenu, ID_FILE_PLAY, FALSE, &mItem);
+
+ EnableMenuItem(hMenu, ID_CONTEXT_SELECT_RANDOM, MF_ENABLED);
+
+ free(t_description);
+ }
+ else
+ {
+ EnableMenuItem(hMenu, ID_FILE_PLAY, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_FILE_PLAY_RECORD, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_CONTEXT_SELECT_RANDOM, MF_GRAYED);
+ }
+
+ if (oldControl)
+ {
+ EnableMenuItem(hMenu, ID_CUSTOMIZE_FIELDS, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_GAME_PROPERTIES, MF_GRAYED);
+ EnableMenuItem(hMenu, ID_OPTIONS_DEFAULTS, MF_GRAYED);
+ }
+
+ if (lpFolder->m_dwFlags & F_CUSTOM)
+ {
+ EnableMenuItem(hMenu,ID_CONTEXT_REMOVE_CUSTOM,MF_ENABLED);
+ EnableMenuItem(hMenu,ID_CONTEXT_RENAME_CUSTOM,MF_ENABLED);
+ }
+ else
+ {
+ EnableMenuItem(hMenu,ID_CONTEXT_REMOVE_CUSTOM,MF_GRAYED);
+ EnableMenuItem(hMenu,ID_CONTEXT_RENAME_CUSTOM,MF_GRAYED);
+ }
+ //pParent = GetFolderNameByID(lpFolder->m_nParent+1);
+
+ if (lpFolder->m_dwFlags & F_INIEDIT)
+ EnableMenuItem(hMenu,ID_FOLDER_PROPERTIES,MF_ENABLED);
+ else
+ EnableMenuItem(hMenu,ID_FOLDER_PROPERTIES,MF_GRAYED);
+
+ CheckMenuRadioItem(hMenu, ID_VIEW_TAB_SCREENSHOT, ID_VIEW_TAB_HISTORY,
+ ID_VIEW_TAB_SCREENSHOT + TabView_GetCurrentTab(hTabCtrl), MF_BYCOMMAND);
+
+ // set whether we're showing the tab control or not
+ if (bShowTabCtrl)
+ CheckMenuItem(hMenu,ID_VIEW_PAGETAB,MF_BYCOMMAND | MF_CHECKED);
+ else
+ CheckMenuItem(hMenu,ID_VIEW_PAGETAB,MF_BYCOMMAND | MF_UNCHECKED);
+
+
+ for (i=0;i<MAX_TAB_TYPES;i++)
+ {
+ // disable menu items for tabs we're not currently showing
+ if (GetShowTab(i))
+ EnableMenuItem(hMenu,ID_VIEW_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_ENABLED);
+ else
+ EnableMenuItem(hMenu,ID_VIEW_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_GRAYED);
+
+ // check toggle menu items
+ if (GetShowTab(i))
+ CheckMenuItem(hMenu, ID_TOGGLE_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_CHECKED);
+ else
+ CheckMenuItem(hMenu, ID_TOGGLE_TAB_SCREENSHOT + i,MF_BYCOMMAND | MF_UNCHECKED);
+ }
+
+ for (i=0;i<MAX_FOLDERS;i++)
+ {
+ if (GetShowFolder(i))
+ CheckMenuItem(hMenu,ID_CONTEXT_SHOW_FOLDER_START + i,MF_BYCOMMAND | MF_CHECKED);
+ else
+ CheckMenuItem(hMenu,ID_CONTEXT_SHOW_FOLDER_START + i,MF_BYCOMMAND | MF_UNCHECKED);
+ }
+
+}
+
+void InitTreeContextMenu(HMENU hTreeMenu)
+{
+ MENUITEMINFO mii;
+ HMENU hMenu;
+ int i;
+ extern const FOLDERDATA g_folderData[];
+
+ ZeroMemory(&mii,sizeof(mii));
+ mii.cbSize = sizeof(mii);
+
+ mii.wID = -1;
+ mii.fMask = MIIM_SUBMENU | MIIM_ID;
+
+ hMenu = GetSubMenu(hTreeMenu, 0);
+
+ if (GetMenuItemInfo(hMenu,3,TRUE,&mii) == FALSE)
+ {
+ dprintf("can't find show folders context menu\n");
+ return;
+ }
+
+ if (mii.hSubMenu == NULL)
+ {
+ dprintf("can't find submenu for show folders context menu\n");
+ return;
+ }
+
+ hMenu = mii.hSubMenu;
+
+ for (i=0;g_folderData[i].m_lpTitle;i++)
+ {
+ TCHAR* t_title = ui_wstring_from_utf8(g_folderData[i].m_lpTitle);
+ if( !t_title )
+ return;
+
+ mii.fMask = MIIM_TYPE | MIIM_ID;
+ mii.fType = MFT_STRING;
+ mii.dwTypeData = t_title;
+ mii.cch = _tcslen(mii.dwTypeData);
+ mii.wID = ID_CONTEXT_SHOW_FOLDER_START + g_folderData[i].m_nFolderId;
+
+
+ // menu in resources has one empty item (needed for the submenu to setup properly)
+ // so overwrite this one, append after
+ if (i == 0)
+ SetMenuItemInfo(hMenu,ID_CONTEXT_SHOW_FOLDER_START,FALSE,&mii);
+ else
+ InsertMenuItem(hMenu,i,FALSE,&mii);
+
+ free(t_title);
+ }
+
+}
+
+void InitBodyContextMenu(HMENU hBodyContextMenu)
+{
+ LPTREEFOLDER lpFolder;
+ TCHAR tmp[30];
+ MENUITEMINFO mii;
+ ZeroMemory(&mii,sizeof(mii));
+ mii.cbSize = sizeof(mii);
+
+ if (GetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,FALSE,&mii) == FALSE)
+ {
+ dprintf("can't find show folders context menu\n");
+ return;
+ }
+ lpFolder = GetFolderByName(FOLDER_SOURCE, GetDriverFilename(Picker_GetSelectedItem(hwndList)) );
+ _sntprintf(tmp,ARRAY_LENGTH(tmp),TEXT("Properties for %s"),lpFolder->m_lptTitle );
+ mii.fMask = MIIM_TYPE | MIIM_ID;
+ mii.fType = MFT_STRING;
+ mii.dwTypeData = tmp;
+ mii.cch = _tcslen(mii.dwTypeData);
+ mii.wID = ID_FOLDER_SOURCEPROPERTIES;
+
+
+ // menu in resources has one default item
+ // so overwrite this one
+ SetMenuItemInfo(hBodyContextMenu,ID_FOLDER_SOURCEPROPERTIES,FALSE,&mii);
+ if( ! DriverIsVector(Picker_GetSelectedItem(hwndList) ) )
+ EnableMenuItem(hBodyContextMenu, ID_FOLDER_VECTORPROPERTIES, MF_GRAYED);
+}
+
+
+void ToggleShowFolder(int folder)
+{
+ int current_id = GetCurrentFolderID();
+
+ SetWindowRedraw(hwndList,FALSE);
+
+ SetShowFolder(folder,!GetShowFolder(folder));
+
+ ResetTreeViewFolders();
+ SelectTreeViewFolder(current_id);
+
+ SetWindowRedraw(hwndList,TRUE);
+}
+
+static LRESULT CALLBACK HistoryWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ if (hBackground)
+ {
+ switch (uMsg)
+ {
+ case WM_MOUSEMOVE:
+ {
+ if (MouseHasBeenMoved())
+ ShowCursor(TRUE);
+ break;
+ }
+
+ case WM_ERASEBKGND:
+ return TRUE;
+ case WM_PAINT:
+ {
+ POINT p = { 0, 0 };
+
+ /* get base point of background bitmap */
+ MapWindowPoints(hWnd,hTreeView,&p,1);
+ PaintBackgroundImage(hWnd, NULL, p.x, p.y);
+ /* to ensure our parent procedure repaints the whole client area */
+ InvalidateRect(hWnd, NULL, FALSE);
+ break;
+ }
+ }
+ }
+ return CallWindowProc(g_lpHistoryWndProc, hWnd, uMsg, wParam, lParam);
+}
+
+static LRESULT CALLBACK PictureFrameWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (uMsg)
+ {
+ case WM_MOUSEMOVE:
+ {
+ if (MouseHasBeenMoved())
+ ShowCursor(TRUE);
+ break;
+ }
+
+ case WM_NCHITTEST :
+ {
+ POINT pt;
+ RECT rect;
+ HWND hHistory = GetDlgItem(hMain, IDC_HISTORY);
+
+ pt.x = LOWORD(lParam);
+ pt.y = HIWORD(lParam);
+ GetWindowRect(hHistory, &rect);
+ // check if they clicked on the picture area (leave 6 pixel no man's land
+ // by the history window to reduce mistaken clicks)
+ // no more no man's land, the Cursor changes when Edit control is left, should be enough feedback
+ if (have_history &&
+ ( ( (TabView_GetCurrentTab(hTabCtrl) == TAB_HISTORY) ||
+ (TabView_GetCurrentTab(hTabCtrl) == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ||
+ (TAB_ALL == GetHistoryTab() && GetShowTab(TAB_HISTORY) == FALSE) ) &&
+// (rect.top - 6) < pt.y && pt.y < (rect.bottom + 6) ) )
+ PtInRect( &rect, pt ) ) )
+
+ {
+ return HTTRANSPARENT;
+ }
+ else
+ {
+ return HTCLIENT;
+ }
+ }
+ break;
+ case WM_CONTEXTMENU:
+ if ( HandleScreenShotContextMenu(hWnd, wParam, lParam))
+ return FALSE;
+ break;
+ }
+
+ if (hBackground)
+ {
+ switch (uMsg)
+ {
+ case WM_ERASEBKGND :
+ return TRUE;
+ case WM_PAINT :
+ {
+ RECT rect,nodraw_rect;
+ HRGN region,nodraw_region;
+ POINT p = { 0, 0 };
+
+ /* get base point of background bitmap */
+ MapWindowPoints(hWnd,hTreeView,&p,1);
+
+ /* get big region */
+ GetClientRect(hWnd,&rect);
+ region = CreateRectRgnIndirect(&rect);
+
+ if (IsWindowVisible(GetDlgItem(hMain,IDC_HISTORY)))
+ {
+ /* don't draw over this window */
+ GetWindowRect(GetDlgItem(hMain,IDC_HISTORY),&nodraw_rect);
+ MapWindowPoints(HWND_DESKTOP,hWnd,(LPPOINT)&nodraw_rect,2);
+ nodraw_region = CreateRectRgnIndirect(&nodraw_rect);
+ CombineRgn(region,region,nodraw_region,RGN_DIFF);
+ DeleteObject(nodraw_region);
+ }
+ if (IsWindowVisible(GetDlgItem(hMain,IDC_SSPICTURE)))
+ {
+ /* don't draw over this window */
+ GetWindowRect(GetDlgItem(hMain,IDC_SSPICTURE),&nodraw_rect);
+ MapWindowPoints(HWND_DESKTOP,hWnd,(LPPOINT)&nodraw_rect,2);
+ nodraw_region = CreateRectRgnIndirect(&nodraw_rect);
+ CombineRgn(region,region,nodraw_region,RGN_DIFF);
+ DeleteObject(nodraw_region);
+ }
+
+ PaintBackgroundImage(hWnd,region,p.x,p.y);
+
+ DeleteObject(region);
+
+ /* to ensure our parent procedure repaints the whole client area */
+ InvalidateRect(hWnd, NULL, FALSE);
+
+ break;
+ }
+ }
+ }
+ return CallWindowProc(g_lpPictureFrameWndProc, hWnd, uMsg, wParam, lParam);
+}
+
+static LRESULT CALLBACK PictureWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (uMsg)
+ {
+ case WM_ERASEBKGND :
+ return TRUE;
+ case WM_PAINT :
+ {
+ PAINTSTRUCT ps;
+ HDC hdc,hdc_temp;
+ RECT rect;
+ HBITMAP old_bitmap;
+
+ int width,height;
+
+ RECT rect2;
+ HBRUSH hBrush;
+ HBRUSH holdBrush;
+ HRGN region1, region2;
+ int nBordersize;
+ nBordersize = GetScreenshotBorderSize();
+ hBrush = CreateSolidBrush(GetScreenshotBorderColor());
+
+ hdc = BeginPaint(hWnd,&ps);
+
+ hdc_temp = CreateCompatibleDC(hdc);
+ if (ScreenShotLoaded())
+ {
+ width = GetScreenShotWidth();
+ height = GetScreenShotHeight();
+
+ old_bitmap = (HBITMAP)SelectObject(hdc_temp,GetScreenShotHandle());
+ }
+ else
+ {
+ BITMAP bmp;
+
+ GetObject(hMissing_bitmap,sizeof(BITMAP),&bmp);
+ width = bmp.bmWidth;
+ height = bmp.bmHeight;
+
+ old_bitmap = (HBITMAP)SelectObject(hdc_temp,hMissing_bitmap);
+ }
+
+ GetClientRect(hWnd,&rect);
+
+ rect2 = rect;
+ //Configurable Borders around images
+ rect.bottom -= nBordersize;
+ if( rect.bottom < 0)
+ rect.bottom = rect2.bottom;
+ rect.right -= nBordersize;
+ if( rect.right < 0)
+ rect.right = rect2.right;
+ rect.top += nBordersize;
+ if( rect.top > rect.bottom )
+ rect.top = rect2.top;
+ rect.left += nBordersize;
+ if( rect.left > rect.right )
+ rect.left = rect2.left;
+ region1 = CreateRectRgnIndirect(&rect);
+ region2 = CreateRectRgnIndirect(&rect2);
+ CombineRgn(region2,region2,region1,RGN_DIFF);
+ holdBrush = (HBRUSH)SelectObject(hdc, hBrush);
+
+ FillRgn(hdc,region2, hBrush );
+ SelectObject(hdc, holdBrush);
+ DeleteBrush(hBrush);
+
+ SetStretchBltMode(hdc,STRETCH_HALFTONE);
+ StretchBlt(hdc,nBordersize,nBordersize,rect.right-rect.left,rect.bottom-rect.top,
+ hdc_temp,0,0,width,height,SRCCOPY);
+ SelectObject(hdc_temp,old_bitmap);
+ DeleteDC(hdc_temp);
+ DeleteObject(region1);
+ DeleteObject(region2);
+
+ EndPaint(hWnd,&ps);
+
+ return TRUE;
+ }
+ }
+
+ return CallWindowProc(g_lpPictureWndProc, hWnd, uMsg, wParam, lParam);
+}
+
+static void RemoveCurrentGameCustomFolder(void)
+{
+ RemoveGameCustomFolder(Picker_GetSelectedItem(hwndList));
+}
+
+static void RemoveGameCustomFolder(int driver_index)
+{
+ int i;
+ TREEFOLDER **folders;
+ int num_folders;
+
+ GetFolders(&folders,&num_folders);
+
+ for (i=0; i<num_folders; i++)
+ {
+ if (folders[i]->m_dwFlags & F_CUSTOM && folders[i]->m_nFolderId == GetCurrentFolderID())
+ {
+ int current_pick_index;
+
+ RemoveFromCustomFolder(folders[i],driver_index);
+
+ if (driver_index == Picker_GetSelectedItem(hwndList))
+ {
+ /* if we just removed the current game,
+ move the current selection so that when we rebuild the listview it
+ leaves the cursor on next or previous one */
+
+ current_pick_index = GetSelectedPick();
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() + 1);
+ if (current_pick_index == GetSelectedPick()) /* we must have deleted the last item */
+ Picker_SetSelectedPick(hwndList, GetSelectedPick() - 1);
+ }
+
+ ResetListView();
+ return;
+ }
+ }
+ MessageBox(GetMainWindow(), TEXT("Error searching for custom folder"), (LPCTSTR)MAMEUINAME, MB_OK | MB_ICONERROR);
+}
+
+
+static void BeginListViewDrag(NM_LISTVIEW *pnmv)
+{
+ LV_ITEM lvi;
+ POINT pt;
+ BOOL res;
+
+ lvi.iItem = pnmv->iItem;
+ lvi.mask = LVIF_PARAM;
+ res = ListView_GetItem(hwndList, &lvi);
+
+ game_dragged = lvi.lParam;
+
+ pt.x = 0;
+ pt.y = 0;
+
+ /* Tell the list view control to create an image to use
+ for dragging. */
+ himl_drag = ListView_CreateDragImage(hwndList,pnmv->iItem,&pt);
+
+ /* Start the drag operation. */
+ ImageList_BeginDrag(himl_drag, 0, 0, 0);
+
+ pt = pnmv->ptAction;
+ ClientToScreen(hwndList,&pt);
+ ImageList_DragEnter(GetDesktopWindow(),pt.x,pt.y);
+
+ /* Hide the mouse cursor, and direct mouse input to the
+ parent window. */
+ SetCapture(hMain);
+
+ prev_drag_drop_target = NULL;
+
+ g_listview_dragging = TRUE;
+
+}
+
+static void MouseMoveListViewDrag(POINTS p)
+{
+ HTREEITEM htiTarget;
+ TV_HITTESTINFO tvht;
+ BOOL res;
+
+ POINT pt;
+ pt.x = p.x;
+ pt.y = p.y;
+
+ ClientToScreen(hMain,&pt);
+
+ ImageList_DragMove(pt.x,pt.y);
+
+ MapWindowPoints(GetDesktopWindow(),hTreeView,&pt,1);
+
+ tvht.pt = pt;
+ htiTarget = TreeView_HitTest(hTreeView,&tvht);
+
+ if (htiTarget != prev_drag_drop_target)
+ {
+ ImageList_DragShowNolock(FALSE);
+ if (htiTarget)
+ res = TreeView_SelectDropTarget(hTreeView,htiTarget);
+ else
+ res = TreeView_SelectDropTarget(hTreeView,NULL);
+ ImageList_DragShowNolock(TRUE);
+
+ prev_drag_drop_target = htiTarget;
+ }
+}
+
+static void ButtonUpListViewDrag(POINTS p)
+{
+ POINT pt;
+ HTREEITEM htiTarget;
+ TV_HITTESTINFO tvht;
+ TVITEM tvi;
+ BOOL res;
+
+ ReleaseCapture();
+
+ ImageList_DragLeave(hwndList);
+ ImageList_EndDrag();
+ ImageList_Destroy(himl_drag);
+
+ res = TreeView_SelectDropTarget(hTreeView,NULL);
+
+ g_listview_dragging = FALSE;
+
+ /* see where the game was dragged */
+
+ pt.x = p.x;
+ pt.y = p.y;
+
+ MapWindowPoints(hMain,hTreeView,&pt,1);
+
+ tvht.pt = pt;
+ htiTarget = TreeView_HitTest(hTreeView,&tvht);
+ if (htiTarget == NULL)
+ {
+ LVHITTESTINFO lvhtti;
+ LPTREEFOLDER folder;
+ RECT rcList;
+
+ /* the user dragged a game onto something other than the treeview */
+ /* try to remove if we're in a custom folder */
+
+ /* see if it was dragged within the list view; if so, ignore */
+
+ MapWindowPoints(hTreeView,hwndList,&pt,1);
+ lvhtti.pt = pt;
+ GetWindowRect(hwndList, &rcList);
+ ClientToScreen(hwndList, &pt);
+ if( PtInRect(&rcList, pt) != 0 )
+ return;
+
+ folder = GetCurrentFolder();
+ if (folder->m_dwFlags & F_CUSTOM)
+ {
+ /* dragged out of a custom folder, so let's remove it */
+ RemoveCurrentGameCustomFolder();
+ }
+ return;
+ }
+
+
+ tvi.lParam = 0;
+ tvi.mask = TVIF_PARAM | TVIF_HANDLE;
+ tvi.hItem = htiTarget;
+
+ if (TreeView_GetItem(hTreeView, &tvi))
+ {
+ LPTREEFOLDER folder = (LPTREEFOLDER)tvi.lParam;
+ AddToCustomFolder(folder,game_dragged);
+ }
+
+}
+
+static LPTREEFOLDER GetSelectedFolder(void)
+{
+ HTREEITEM htree;
+ TVITEM tvi;
+ BOOL res;
+
+ htree = TreeView_GetSelection(hTreeView);
+ if(htree)
+ {
+ tvi.hItem = htree;
+ tvi.mask = TVIF_PARAM;
+ res = TreeView_GetItem(hTreeView,&tvi);
+ return (LPTREEFOLDER)tvi.lParam;
+ }
+ return NULL;
+}
+
+static HICON GetSelectedFolderIcon(void)
+{
+ HTREEITEM htree;
+ TVITEM tvi;
+ HIMAGELIST hSmall_icon;
+ LPTREEFOLDER folder;
+ BOOL res;
+
+ htree = TreeView_GetSelection(hTreeView);
+ if (htree)
+ {
+ tvi.hItem = htree;
+ tvi.mask = TVIF_PARAM;
+ res = TreeView_GetItem(hTreeView,&tvi);
+
+ folder = (LPTREEFOLDER)tvi.lParam;
+ //hSmall_icon = TreeView_GetImageList(hTreeView,(int)tvi.iImage);
+ hSmall_icon = NULL;
+ return ImageList_GetIcon(hSmall_icon, tvi.iImage, ILD_TRANSPARENT);
+ }
+ return NULL;
+}
+
+/* Updates all currently displayed Items in the List with the latest Data*/
+void UpdateListView(void)
+{
+ BOOL res;
+
+ if( (GetViewMode() == VIEW_GROUPED) || (GetViewMode() == VIEW_DETAILS ) )
+ res = ListView_RedrawItems(hwndList,ListView_GetTopIndex(hwndList),
+ ListView_GetTopIndex(hwndList)+ ListView_GetCountPerPage(hwndList) );
+}
+
+static void CalculateBestScreenShotRect(HWND hWnd, RECT *pRect, BOOL restrict_height)
+{
+ int destX, destY;
+ int destW, destH;
+ int nBorder;
+ RECT rect;
+ /* for scaling */
+ int x, y;
+ int rWidth, rHeight;
+ double scale;
+ BOOL bReduce = FALSE;
+
+ GetClientRect(hWnd, &rect);
+
+ // Scale the bitmap to the frame specified by the passed in hwnd
+ if (ScreenShotLoaded())
+ {
+ x = GetScreenShotWidth();
+ y = GetScreenShotHeight();
+ }
+ else
+ {
+ BITMAP bmp;
+ GetObject(hMissing_bitmap,sizeof(BITMAP),&bmp);
+
+ x = bmp.bmWidth;
+ y = bmp.bmHeight;
+ }
+ rWidth = (rect.right - rect.left);
+ rHeight = (rect.bottom - rect.top);
+
+ /* Limit the screen shot to max height of 264 */
+ if (restrict_height == TRUE && rHeight > 264)
+ {
+ rect.bottom = rect.top + 264;
+ rHeight = 264;
+ }
+
+ /* If the bitmap does NOT fit in the screenshot area */
+ if (x > rWidth - 10 || y > rHeight - 10)
+ {
+ rect.right -= 10;
+ rect.bottom -= 10;
+ rWidth -= 10;
+ rHeight -= 10;
+ bReduce = TRUE;
+ /* Try to scale it properly */
+ /* assumes square pixels, doesn't consider aspect ratio */
+ if (x > y)
+ scale = (double)rWidth / x;
+ else
+ scale = (double)rHeight / y;
+
+ destW = (int)(x * scale);
+ destH = (int)(y * scale);
+
+ /* If it's still too big, scale again */
+ if (destW > rWidth || destH > rHeight)
+ {
+ if (destW > rWidth)
+ scale = (double)rWidth / destW;
+ else
+ scale = (double)rHeight / destH;
+
+ destW = (int)(destW * scale);
+ destH = (int)(destH * scale);
+ }
+ }
+ else
+ {
+ if (GetStretchScreenShotLarger())
+ {
+ rect.right -= 10;
+ rect.bottom -= 10;
+ rWidth -= 10;
+ rHeight -= 10;
+ bReduce = TRUE;
+ // Try to scale it properly
+ // assumes square pixels, doesn't consider aspect ratio
+ if (x < y)
+ scale = (double)rWidth / x;
+ else
+ scale = (double)rHeight / y;
+
+ destW = (int)(x * scale);
+ destH = (int)(y * scale);
+
+ // If it's too big, scale again
+ if (destW > rWidth || destH > rHeight)
+ {
+ if (destW > rWidth)
+ scale = (double)rWidth / destW;
+ else
+ scale = (double)rHeight / destH;
+
+ destW = (int)(destW * scale);
+ destH = (int)(destH * scale);
+ }
+ }
+ else
+ {
+ // Use the bitmaps size if it fits
+ destW = x;
+ destH = y;
+ }
+
+ }
+
+
+ destX = (rWidth - destW) / 2;
+ destY = (rHeight - destH) / 2;
+
+ if (bReduce)
+ {
+ destX += 5;
+ destY += 5;
+ }
+ nBorder = GetScreenshotBorderSize();
+ if( destX > nBorder+1)
+ pRect->left = destX - nBorder;
+ else
+ pRect->left = 2;
+ if( destY > nBorder+1)
+ pRect->top = destY - nBorder;
+ else
+ pRect->top = 2;
+ if( rWidth >= destX + destW + nBorder)
+ pRect->right = destX + destW + nBorder;
+ else
+ pRect->right = rWidth - pRect->left;
+ if( rHeight >= destY + destH + nBorder)
+ pRect->bottom = destY + destH + nBorder;
+ else
+ pRect->bottom = rHeight - pRect->top;
+}
+
+/*
+ Switches to either fullscreen or normal mode, based on the
+ current mode.
+
+ POSSIBLE BUGS:
+ Removing the menu might cause problems later if some
+ function tries to poll info stored in the menu. Don't
+ know if you've done that, but this was the only way I
+ knew to remove the menu dynamically.
+*/
+
+static void SwitchFullScreenMode(void)
+{
+ LONG lMainStyle;
+
+ if (GetRunFullScreen())
+ {
+ // Return to normal
+
+ // Restore the menu
+ SetMenu(hMain, LoadMenu(hInst,MAKEINTRESOURCE(IDR_UI_MENU)));
+
+ // Refresh the checkmarks
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_FOLDERS, GetShowFolderList() ? MF_CHECKED : MF_UNCHECKED);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_TOOLBARS, GetShowToolBar() ? MF_CHECKED : MF_UNCHECKED);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_STATUS, GetShowStatusBar() ? MF_CHECKED : MF_UNCHECKED);
+ CheckMenuItem(GetMenu(hMain), ID_VIEW_PAGETAB, GetShowTabCtrl() ? MF_CHECKED : MF_UNCHECKED);
+
+ // Add frame to dialog again
+ lMainStyle = GetWindowLong(hMain, GWL_STYLE);
+ lMainStyle = lMainStyle | WS_BORDER;
+ SetWindowLong(hMain, GWL_STYLE, lMainStyle);
+
+ // Show the window maximized
+ if( GetWindowState() == SW_MAXIMIZE )
+ {
+ ShowWindow(hMain, SW_NORMAL);
+ ShowWindow(hMain, SW_MAXIMIZE);
+ }
+ else
+ ShowWindow(hMain, SW_RESTORE);
+
+ SetRunFullScreen(FALSE);
+ }
+ else
+ {
+ // Set to fullscreen
+
+ // Remove menu
+ SetMenu(hMain,NULL);
+
+ // Frameless dialog (fake fullscreen)
+ lMainStyle = GetWindowLong(hMain, GWL_STYLE);
+ lMainStyle = lMainStyle & (WS_BORDER ^ 0xffffffff);
+ SetWindowLong(hMain, GWL_STYLE, lMainStyle);
+ if( IsMaximized(hMain) )
+ {
+ ShowWindow(hMain, SW_NORMAL);
+ SetWindowState( SW_MAXIMIZE );
+ }
+ else
+ {
+ SetWindowState( SW_NORMAL );
+ }
+
+ ShowWindow(hMain, SW_MAXIMIZE);
+
+ SetRunFullScreen(TRUE);
+ }
+}
+
+/*
+ Checks to see if the mouse has been moved since this func
+ was first called (which is at startup). The reason for
+ storing the startup coordinates of the mouse is that when
+ a window is created it generates WM_MOUSEOVER events, even
+ though the user didn't actually move the mouse. So we need
+ to know when the WM_MOUSEOVER event is user-triggered.
+
+ POSSIBLE BUGS:
+ Gets polled at every WM_MOUSEMOVE so it might cause lag,
+ but there's probably another way to code this that's
+ way better?
+
+*/
+
+BOOL MouseHasBeenMoved(void)
+{
+ static int mouse_x = -1;
+ static int mouse_y = -1;
+ POINT p;
+
+ GetCursorPos(&p);
+
+ if (mouse_x == -1) // First time
+ {
+ mouse_x = p.x;
+ mouse_y = p.y;
+ }
+
+ return (p.x != mouse_x || p.y != mouse_y);
+}
+
+/* End of source file */
diff --git a/docs/release/src/osd/winui/winui.h b/docs/release/src/osd/winui/winui.h
new file mode 100644
index 00000000000..5579d9c3943
--- /dev/null
+++ b/docs/release/src/osd/winui/winui.h
@@ -0,0 +1,110 @@
+// For licensing and usage information, read docs/winui_license.txt
+//****************************************************************************
+
+#ifndef WINUI_H
+#define WINUI_H
+
+#include <commctrl.h>
+#include <commdlg.h>
+#include "emu.h"
+#include "pool.h"
+#include "screenshot.h"
+#include "drivenum.h"
+
+#define MAMENAME "HBMAME"
+#define UI_INI_FILENAME MAMENAME "UI.ini"
+
+#ifdef PTR64
+#define MAMEUINAME MAMENAME "UI64"
+#else
+#define MAMEUINAME MAMENAME "UI32"
+#endif
+
+#define SEARCH_PROMPT ""
+#define SHOW_COLUMN_ROMS
+#define SHOW_COLUMN_SAMPLES
+
+enum
+{
+ UNKNOWN = -1,
+ TAB_PICKER = 0,
+ TAB_DISPLAY,
+ TAB_MISC,
+ NUM_TABS
+};
+
+enum
+{
+ FILETYPE_INPUT_FILES = 1,
+ FILETYPE_SAVESTATE_FILES,
+ FILETYPE_WAVE_FILES,
+ FILETYPE_AVI_FILES,
+ FILETYPE_MNG_FILES,
+ FILETYPE_EFFECT_FILES,
+ FILETYPE_JOYMAP_FILES,
+ FILETYPE_DEBUGSCRIPT_FILES,
+ FILETYPE_CHEAT_FILE,
+ FILETYPE_HISTORY_FILE,
+ FILETYPE_MAMEINFO_FILE
+};
+
+
+typedef struct
+{
+ INT resource;
+ const char *icon_name;
+} ICONDATA;
+
+extern TCHAR last_directory[MAX_PATH];
+
+typedef BOOL (WINAPI *common_file_dialog_proc)(LPOPENFILENAME lpofn);
+BOOL CommonFileDialog(common_file_dialog_proc cfd,char *filename, int filetype);
+
+HWND GetMainWindow(void);
+HWND GetTreeView(void);
+void SetNumOptionFolders(int count);
+void GetRealColumnOrder(int order[]);
+HICON LoadIconFromFile(const char *iconname);
+void UpdateScreenShot(void);
+void ResizePickerControls(HWND hWnd);
+void MamePlayGame(void);
+int FindIconIndex(int nIconResource);
+int FindIconIndexByName(const char *icon_name);
+int GetSelectedPick(void);
+object_pool *GetMameUIMemoryPool(void);
+
+void UpdateListView(void);
+
+// Move The in "The Title (notes)" to "Title, The (notes)"
+char * ModifyThe(const char *str);
+
+// Convert Ampersand so it can display in a static control
+char * ConvertAmpersandString(const char *s);
+
+// globalized for painting tree control
+HBITMAP GetBackgroundBitmap(void);
+HPALETTE GetBackgroundPalette(void);
+MYBITMAPINFO* GetBackgroundInfo(void);
+BOOL GetUseOldControl(void);
+BOOL GetUseXPControl(void);
+
+int GetMinimumScreenShotWindowWidth(void);
+
+// we maintain an array of drivers sorted by name, useful all around
+int GetParentIndex(const game_driver *driver);
+int GetParentRomSetIndex(const game_driver *driver);
+int GetGameNameIndex(const char *name);
+
+// sets text in part of the status bar on the main window
+void SetStatusBarText(int part_index, const char *message);
+void SetStatusBarTextF(int part_index, const char *fmt, ...) ATTR_PRINTF(2,3);
+
+int MameUIMain(HINSTANCE hInstance,
+ LPWSTR lpCmdLine,
+ int nCmdShow);
+
+BOOL MouseHasBeenMoved(void);
+
+const char * GetSearchText(void);
+
+#endif
diff --git a/docs/release/src/version.cpp b/docs/release/src/version.cpp
new file mode 100644
index 00000000000..e114ed4fdda
--- /dev/null
+++ b/docs/release/src/version.cpp
@@ -0,0 +1,22 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles
+/***************************************************************************
+
+ version.c
+
+ Version string source file for MAME.
+
+***************************************************************************/
+
+#define BARE_BUILD_VERSION "0.185"
+
+extern const char bare_build_version[];
+extern const char build_version[];
+const char bare_build_version[] = BARE_BUILD_VERSION;
+#if defined(GIT_VERSION)
+#define VERSION_TO_STRING(s) XVERSION_TO_STRING(s)
+#define XVERSION_TO_STRING(ver) #ver
+const char build_version[] = BARE_BUILD_VERSION " (" VERSION_TO_STRING(GIT_VERSION) ")";
+#else
+const char build_version[] = BARE_BUILD_VERSION " (" __DATE__")";
+#endif